@flutchai/flutch-sdk 0.1.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/README.md +287 -0
- package/dist/api/callback-token.guard.d.ts +17 -0
- package/dist/api/callback-token.guard.js +80 -0
- package/dist/api/callback-token.guard.js.map +1 -0
- package/dist/api/callback.controller.d.ts +7 -0
- package/dist/api/callback.controller.js +44 -0
- package/dist/api/callback.controller.js.map +1 -0
- package/dist/api/graph.controller.d.ts +32 -0
- package/dist/api/graph.controller.js +187 -0
- package/dist/api/graph.controller.js.map +1 -0
- package/dist/api/ui-dispatch.controller.d.ts +34 -0
- package/dist/api/ui-dispatch.controller.js +178 -0
- package/dist/api/ui-dispatch.controller.js.map +1 -0
- package/dist/bootstrap.d.ts +4 -0
- package/dist/bootstrap.js +177 -0
- package/dist/bootstrap.js.map +1 -0
- package/dist/callbacks/callback-acl.service.d.ts +24 -0
- package/dist/callbacks/callback-acl.service.js +144 -0
- package/dist/callbacks/callback-acl.service.js.map +1 -0
- package/dist/callbacks/callback-auditor.service.d.ts +47 -0
- package/dist/callbacks/callback-auditor.service.js +286 -0
- package/dist/callbacks/callback-auditor.service.js.map +1 -0
- package/dist/callbacks/callback-metrics.service.d.ts +34 -0
- package/dist/callbacks/callback-metrics.service.js +216 -0
- package/dist/callbacks/callback-metrics.service.js.map +1 -0
- package/dist/callbacks/callback-patch.service.d.ts +13 -0
- package/dist/callbacks/callback-patch.service.js +51 -0
- package/dist/callbacks/callback-patch.service.js.map +1 -0
- package/dist/callbacks/callback-rate-limiter.d.ts +27 -0
- package/dist/callbacks/callback-rate-limiter.js +129 -0
- package/dist/callbacks/callback-rate-limiter.js.map +1 -0
- package/dist/callbacks/callback-registry.d.ts +7 -0
- package/dist/callbacks/callback-registry.js +29 -0
- package/dist/callbacks/callback-registry.js.map +1 -0
- package/dist/callbacks/callback-store.d.ts +19 -0
- package/dist/callbacks/callback-store.js +145 -0
- package/dist/callbacks/callback-store.js.map +1 -0
- package/dist/callbacks/example.callback.d.ts +2 -0
- package/dist/callbacks/example.callback.js +10 -0
- package/dist/callbacks/example.callback.js.map +1 -0
- package/dist/callbacks/idempotency-manager.d.ts +54 -0
- package/dist/callbacks/idempotency-manager.js +230 -0
- package/dist/callbacks/idempotency-manager.js.map +1 -0
- package/dist/callbacks/index.d.ts +13 -0
- package/dist/callbacks/index.js +30 -0
- package/dist/callbacks/index.js.map +1 -0
- package/dist/callbacks/smart-callback.router.d.ts +52 -0
- package/dist/callbacks/smart-callback.router.js +213 -0
- package/dist/callbacks/smart-callback.router.js.map +1 -0
- package/dist/callbacks/telegram-patch.handler.d.ts +6 -0
- package/dist/callbacks/telegram-patch.handler.js +24 -0
- package/dist/callbacks/telegram-patch.handler.js.map +1 -0
- package/dist/callbacks/universal-callback.service.d.ts +14 -0
- package/dist/callbacks/universal-callback.service.js +20 -0
- package/dist/callbacks/universal-callback.service.js.map +1 -0
- package/dist/callbacks/web-patch.handler.d.ts +6 -0
- package/dist/callbacks/web-patch.handler.js +24 -0
- package/dist/callbacks/web-patch.handler.js.map +1 -0
- package/dist/core/abstract-graph.builder.d.ts +128 -0
- package/dist/core/abstract-graph.builder.js +488 -0
- package/dist/core/abstract-graph.builder.js.map +1 -0
- package/dist/core/builder-registry.service.d.ts +6 -0
- package/dist/core/builder-registry.service.js +29 -0
- package/dist/core/builder-registry.service.js.map +1 -0
- package/dist/core/universal-graph.module.d.ts +10 -0
- package/dist/core/universal-graph.module.js +294 -0
- package/dist/core/universal-graph.module.js.map +1 -0
- package/dist/decorators/callback.decorators.d.ts +21 -0
- package/dist/decorators/callback.decorators.js +73 -0
- package/dist/decorators/callback.decorators.js.map +1 -0
- package/dist/endpoint-registry/endpoint.decorators.d.ts +35 -0
- package/dist/endpoint-registry/endpoint.decorators.js +115 -0
- package/dist/endpoint-registry/endpoint.decorators.js.map +1 -0
- package/dist/endpoint-registry/endpoint.registry.d.ts +44 -0
- package/dist/endpoint-registry/endpoint.registry.js +90 -0
- package/dist/endpoint-registry/endpoint.registry.js.map +1 -0
- package/dist/endpoint-registry/index.d.ts +3 -0
- package/dist/endpoint-registry/index.js +20 -0
- package/dist/endpoint-registry/index.js.map +1 -0
- package/dist/endpoint-registry/ui-endpoints.discovery.d.ts +11 -0
- package/dist/endpoint-registry/ui-endpoints.discovery.js +72 -0
- package/dist/endpoint-registry/ui-endpoints.discovery.js.map +1 -0
- package/dist/engine/api-call-tracer.utils.d.ts +8 -0
- package/dist/engine/api-call-tracer.utils.js +184 -0
- package/dist/engine/api-call-tracer.utils.js.map +1 -0
- package/dist/engine/event-processor.utils.d.ts +49 -0
- package/dist/engine/event-processor.utils.js +314 -0
- package/dist/engine/event-processor.utils.js.map +1 -0
- package/dist/engine/graph-engine.factory.d.ts +12 -0
- package/dist/engine/graph-engine.factory.js +43 -0
- package/dist/engine/graph-engine.factory.js.map +1 -0
- package/dist/engine/langgraph-engine.d.ts +14 -0
- package/dist/engine/langgraph-engine.js +261 -0
- package/dist/engine/langgraph-engine.js.map +1 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.js +48 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces/callback.interface.d.ts +46 -0
- package/dist/interfaces/callback.interface.js +3 -0
- package/dist/interfaces/callback.interface.js.map +1 -0
- package/dist/interfaces/graph-registry.interface.d.ts +8 -0
- package/dist/interfaces/graph-registry.interface.js +3 -0
- package/dist/interfaces/graph-registry.interface.js.map +1 -0
- package/dist/interfaces/graph-service.interface.d.ts +43 -0
- package/dist/interfaces/graph-service.interface.js +9 -0
- package/dist/interfaces/graph-service.interface.js.map +1 -0
- package/dist/interfaces/index.d.ts +3 -0
- package/dist/interfaces/index.js +20 -0
- package/dist/interfaces/index.js.map +1 -0
- package/dist/llm/index.d.ts +6 -0
- package/dist/llm/index.js +23 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/llm/llm.initializer.d.ts +14 -0
- package/dist/llm/llm.initializer.js +167 -0
- package/dist/llm/llm.initializer.js.map +1 -0
- package/dist/llm/llm.interface.d.ts +6 -0
- package/dist/llm/llm.interface.js +3 -0
- package/dist/llm/llm.interface.js.map +1 -0
- package/dist/llm/llm.types.d.ts +32 -0
- package/dist/llm/llm.types.js +3 -0
- package/dist/llm/llm.types.js.map +1 -0
- package/dist/llm/model.initializer.d.ts +45 -0
- package/dist/llm/model.initializer.js +630 -0
- package/dist/llm/model.initializer.js.map +1 -0
- package/dist/llm/model.interface.d.ts +38 -0
- package/dist/llm/model.interface.js +4 -0
- package/dist/llm/model.interface.js.map +1 -0
- package/dist/llm/rerankers/voyageai-rerank.d.ts +17 -0
- package/dist/llm/rerankers/voyageai-rerank.js +56 -0
- package/dist/llm/rerankers/voyageai-rerank.js.map +1 -0
- package/dist/retriever/database-factory.d.ts +15 -0
- package/dist/retriever/database-factory.js +83 -0
- package/dist/retriever/database-factory.js.map +1 -0
- package/dist/retriever/index.d.ts +2 -0
- package/dist/retriever/index.js +19 -0
- package/dist/retriever/index.js.map +1 -0
- package/dist/retriever/retriever.client.d.ts +28 -0
- package/dist/retriever/retriever.client.js +97 -0
- package/dist/retriever/retriever.client.js.map +1 -0
- package/dist/retriever/retriever.service.d.ts +25 -0
- package/dist/retriever/retriever.service.js +265 -0
- package/dist/retriever/retriever.service.js.map +1 -0
- package/dist/retriever/types.d.ts +22 -0
- package/dist/retriever/types.js +3 -0
- package/dist/retriever/types.js.map +1 -0
- package/dist/schemas/graph-manifest.schema.d.ts +134 -0
- package/dist/schemas/graph-manifest.schema.js +180 -0
- package/dist/schemas/graph-manifest.schema.js.map +1 -0
- package/dist/schemas/index.d.ts +1 -0
- package/dist/schemas/index.js +18 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/shared-types/index.d.ts +199 -0
- package/dist/shared-types/index.js +58 -0
- package/dist/shared-types/index.js.map +1 -0
- package/dist/tools/index.d.ts +3 -0
- package/dist/tools/index.js +20 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/mcp-converter.d.ts +15 -0
- package/dist/tools/mcp-converter.js +133 -0
- package/dist/tools/mcp-converter.js.map +1 -0
- package/dist/tools/mcp-tool-filter.d.ts +11 -0
- package/dist/tools/mcp-tool-filter.js +123 -0
- package/dist/tools/mcp-tool-filter.js.map +1 -0
- package/dist/tools/mcp.interfaces.d.ts +19 -0
- package/dist/tools/mcp.interfaces.js +3 -0
- package/dist/tools/mcp.interfaces.js.map +1 -0
- package/dist/types/graph-types.d.ts +82 -0
- package/dist/types/graph-types.js +6 -0
- package/dist/types/graph-types.js.map +1 -0
- package/dist/utils/error.utils.d.ts +18 -0
- package/dist/utils/error.utils.js +78 -0
- package/dist/utils/error.utils.js.map +1 -0
- package/dist/utils/graph-type.utils.d.ts +14 -0
- package/dist/utils/graph-type.utils.js +71 -0
- package/dist/utils/graph-type.utils.js.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +18 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/usage-recorder.d.ts +23 -0
- package/dist/utils/usage-recorder.js +29 -0
- package/dist/utils/usage-recorder.js.map +1 -0
- package/dist/versioning/index.d.ts +2 -0
- package/dist/versioning/index.js +19 -0
- package/dist/versioning/index.js.map +1 -0
- package/dist/versioning/versioned-graph.service.d.ts +16 -0
- package/dist/versioning/versioned-graph.service.js +132 -0
- package/dist/versioning/versioned-graph.service.js.map +1 -0
- package/dist/versioning/versioning.types.d.ts +21 -0
- package/dist/versioning/versioning.types.js +3 -0
- package/dist/versioning/versioning.types.js.map +1 -0
- package/package.json +70 -0
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
export interface IGraphTracer {
|
|
2
|
+
log(data: any): void;
|
|
3
|
+
error(data: any): void;
|
|
4
|
+
}
|
|
5
|
+
export interface IUsageRecorder {
|
|
6
|
+
recordModelExecution(record: any): void;
|
|
7
|
+
}
|
|
8
|
+
import { BaseChannel, CompiledStateGraph, LangGraphRunnableConfig } from "@langchain/langgraph";
|
|
9
|
+
export type MappedChannels<T> = {
|
|
10
|
+
[K in keyof T]: BaseChannel<T[K], T[K]>;
|
|
11
|
+
};
|
|
12
|
+
declare global {
|
|
13
|
+
namespace GraphTypes {
|
|
14
|
+
interface Registry {
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export type IGraphTypeRegistry = GraphTypes.Registry;
|
|
19
|
+
export interface IGenericGraphType {
|
|
20
|
+
Params: any;
|
|
21
|
+
State: any;
|
|
22
|
+
Config: any;
|
|
23
|
+
Input: any;
|
|
24
|
+
Definition: any;
|
|
25
|
+
ConfigDefinition: any;
|
|
26
|
+
InputDefinition: any;
|
|
27
|
+
StateValues: any;
|
|
28
|
+
ConfigValues: any;
|
|
29
|
+
InputValues: any;
|
|
30
|
+
OutputValues: any;
|
|
31
|
+
}
|
|
32
|
+
export type CompiledGraphFor<T extends string> = T extends keyof IGraphTypeRegistry ? CompiledStateGraph<IGraphTypeRegistry[T]["State"], IGraphTypeRegistry[T]["State"], string, IGraphTypeRegistry[T]["Input"], IGraphTypeRegistry[T]["State"], IGraphTypeRegistry[T]["Config"]> : CompiledStateGraph<any, any, string, any, any, any>;
|
|
33
|
+
export interface IGraphBuilder<T extends string> {
|
|
34
|
+
buildGraph(config?: any): Promise<CompiledGraphFor<T>>;
|
|
35
|
+
}
|
|
36
|
+
export interface IGraphCompiler {
|
|
37
|
+
getConfiguredGraph<T extends string>(type: T, thread?: any): Promise<CompiledGraphFor<T>>;
|
|
38
|
+
}
|
|
39
|
+
export type BaseGraphState = {};
|
|
40
|
+
export interface IGraphMetadata {
|
|
41
|
+
userId: string;
|
|
42
|
+
applicationId: string;
|
|
43
|
+
workflowType: string;
|
|
44
|
+
version: string;
|
|
45
|
+
}
|
|
46
|
+
export interface IGraphConfigurable<TGraphSettings = any> {
|
|
47
|
+
thread_id?: string;
|
|
48
|
+
metadata?: IGraphMetadata;
|
|
49
|
+
graphSettings: TGraphSettings;
|
|
50
|
+
}
|
|
51
|
+
export type IGraphRunnableConfig<TGraphSettings = any> = LangGraphRunnableConfig<IGraphConfigurable<TGraphSettings>> & {
|
|
52
|
+
configurable: IGraphConfigurable<TGraphSettings>;
|
|
53
|
+
};
|
|
54
|
+
export type StrictGraphRunnableConfig<TGraphSettings = any> = LangGraphRunnableConfig<TGraphSettings> & {
|
|
55
|
+
configurable: IGraphConfigurable<TGraphSettings>;
|
|
56
|
+
};
|
|
57
|
+
export interface LLMConfig {
|
|
58
|
+
modelId: string;
|
|
59
|
+
temperature?: number;
|
|
60
|
+
maxTokens?: number;
|
|
61
|
+
prompt?: string;
|
|
62
|
+
}
|
|
63
|
+
export interface IGraphTypeMetadata {
|
|
64
|
+
type: string;
|
|
65
|
+
metadata: {
|
|
66
|
+
title: string;
|
|
67
|
+
description: string;
|
|
68
|
+
detailedDescription: string;
|
|
69
|
+
icon?: string;
|
|
70
|
+
recommendations?: string[];
|
|
71
|
+
tags?: string[];
|
|
72
|
+
category?: string;
|
|
73
|
+
};
|
|
74
|
+
schema: {
|
|
75
|
+
properties: Record<string, any>;
|
|
76
|
+
required: string[];
|
|
77
|
+
};
|
|
78
|
+
defaultSettings: any;
|
|
79
|
+
formFields?: any[];
|
|
80
|
+
}
|
|
81
|
+
export type IGraphMetadataRegistry = Record<string, IGraphTypeMetadata>;
|
|
82
|
+
export { StreamChannel } from "../shared-types";
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StreamChannel = void 0;
|
|
4
|
+
var shared_types_1 = require("../shared-types");
|
|
5
|
+
Object.defineProperty(exports, "StreamChannel", { enumerable: true, get: function () { return shared_types_1.StreamChannel; } });
|
|
6
|
+
//# sourceMappingURL=graph-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph-types.js","sourceRoot":"","sources":["../../src/types/graph-types.ts"],"names":[],"mappings":";;;AA6IA,gDAAgD;AAAvC,6GAAA,aAAa,OAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare function isError(error: unknown): error is Error;
|
|
2
|
+
export declare function getErrorMessage(error: unknown): string;
|
|
3
|
+
export declare function getErrorStack(error: unknown): string | undefined;
|
|
4
|
+
export declare function formatError(error: unknown): {
|
|
5
|
+
message: string;
|
|
6
|
+
stack?: string;
|
|
7
|
+
code?: string;
|
|
8
|
+
statusCode?: number;
|
|
9
|
+
details?: any;
|
|
10
|
+
};
|
|
11
|
+
export declare function formatErrorForProduction(error: unknown): {
|
|
12
|
+
message: string;
|
|
13
|
+
code?: string;
|
|
14
|
+
statusCode?: number;
|
|
15
|
+
};
|
|
16
|
+
export declare function logError(logger: {
|
|
17
|
+
error: (message: string, ...args: any[]) => void;
|
|
18
|
+
}, error: unknown, context: string, additionalData?: Record<string, any>): void;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isError = isError;
|
|
4
|
+
exports.getErrorMessage = getErrorMessage;
|
|
5
|
+
exports.getErrorStack = getErrorStack;
|
|
6
|
+
exports.formatError = formatError;
|
|
7
|
+
exports.formatErrorForProduction = formatErrorForProduction;
|
|
8
|
+
exports.logError = logError;
|
|
9
|
+
function isError(error) {
|
|
10
|
+
return error instanceof Error;
|
|
11
|
+
}
|
|
12
|
+
function getErrorMessage(error) {
|
|
13
|
+
if (error instanceof Error)
|
|
14
|
+
return error.message;
|
|
15
|
+
if (typeof error === "string")
|
|
16
|
+
return error;
|
|
17
|
+
if (typeof error === "object" && error !== null) {
|
|
18
|
+
if ("message" in error && typeof error.message === "string") {
|
|
19
|
+
return error.message;
|
|
20
|
+
}
|
|
21
|
+
return JSON.stringify(error);
|
|
22
|
+
}
|
|
23
|
+
return String(error);
|
|
24
|
+
}
|
|
25
|
+
function getErrorStack(error) {
|
|
26
|
+
if (error instanceof Error)
|
|
27
|
+
return error.stack;
|
|
28
|
+
if (typeof error === "object" && error !== null && "stack" in error) {
|
|
29
|
+
return String(error.stack);
|
|
30
|
+
}
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
33
|
+
function formatError(error) {
|
|
34
|
+
if (error instanceof Error) {
|
|
35
|
+
const formatted = {
|
|
36
|
+
message: error.message,
|
|
37
|
+
stack: error.stack,
|
|
38
|
+
};
|
|
39
|
+
if ("code" in error)
|
|
40
|
+
formatted.code = error.code;
|
|
41
|
+
if ("statusCode" in error)
|
|
42
|
+
formatted.statusCode = error.statusCode;
|
|
43
|
+
if ("response" in error)
|
|
44
|
+
formatted.details = error.response;
|
|
45
|
+
return formatted;
|
|
46
|
+
}
|
|
47
|
+
if (typeof error === "string") {
|
|
48
|
+
return { message: error };
|
|
49
|
+
}
|
|
50
|
+
if (typeof error === "object" && error !== null) {
|
|
51
|
+
const formatted = {
|
|
52
|
+
message: "message" in error && typeof error.message === "string"
|
|
53
|
+
? error.message
|
|
54
|
+
: JSON.stringify(error),
|
|
55
|
+
};
|
|
56
|
+
if ("stack" in error)
|
|
57
|
+
formatted.stack = String(error.stack);
|
|
58
|
+
if ("code" in error)
|
|
59
|
+
formatted.code = String(error.code);
|
|
60
|
+
if ("statusCode" in error && typeof error.statusCode === "number") {
|
|
61
|
+
formatted.statusCode = error.statusCode;
|
|
62
|
+
}
|
|
63
|
+
return formatted;
|
|
64
|
+
}
|
|
65
|
+
return { message: String(error) };
|
|
66
|
+
}
|
|
67
|
+
function formatErrorForProduction(error) {
|
|
68
|
+
const formatted = formatError(error);
|
|
69
|
+
delete formatted.stack;
|
|
70
|
+
delete formatted.details;
|
|
71
|
+
return formatted;
|
|
72
|
+
}
|
|
73
|
+
function logError(logger, error, context, additionalData) {
|
|
74
|
+
const errorInfo = formatError(error);
|
|
75
|
+
logger.error(context, process.env.ENV === "prod"
|
|
76
|
+
? Object.assign(Object.assign({}, formatErrorForProduction(error)), additionalData) : Object.assign(Object.assign({}, errorInfo), additionalData));
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=error.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.utils.js","sourceRoot":"","sources":["../../src/utils/error.utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare class GraphTypeUtils {
|
|
2
|
+
static parse(fullType: string): {
|
|
3
|
+
companyId: string;
|
|
4
|
+
name: string;
|
|
5
|
+
version?: string;
|
|
6
|
+
};
|
|
7
|
+
static build(companyId: string, name: string, version?: string): string;
|
|
8
|
+
static normalize(graphType: string): string;
|
|
9
|
+
static getBaseType(graphType: string): string;
|
|
10
|
+
static getVersion(graphType: string): string | undefined;
|
|
11
|
+
static isValidVersion(version: string): boolean;
|
|
12
|
+
static isSystemGraph(graphType: string): boolean;
|
|
13
|
+
static compareVersions(a: string, b: string): number;
|
|
14
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GraphTypeUtils = void 0;
|
|
4
|
+
class GraphTypeUtils {
|
|
5
|
+
static parse(fullType) {
|
|
6
|
+
if (fullType.includes("::")) {
|
|
7
|
+
const [baseType, version] = fullType.split("::");
|
|
8
|
+
const [companyId, name] = baseType.split(".");
|
|
9
|
+
return { companyId, name, version };
|
|
10
|
+
}
|
|
11
|
+
const parts = fullType.split(".");
|
|
12
|
+
if (parts.length === 1) {
|
|
13
|
+
return { companyId: "global", name: parts[0] };
|
|
14
|
+
}
|
|
15
|
+
return { companyId: parts[0], name: parts[1] };
|
|
16
|
+
}
|
|
17
|
+
static build(companyId, name, version) {
|
|
18
|
+
const base = `${companyId}.${name}`;
|
|
19
|
+
return version ? `${base}::${version}` : base;
|
|
20
|
+
}
|
|
21
|
+
static normalize(graphType) {
|
|
22
|
+
const { companyId, name, version } = this.parse(graphType);
|
|
23
|
+
return this.build(companyId, name, version);
|
|
24
|
+
}
|
|
25
|
+
static getBaseType(graphType) {
|
|
26
|
+
if (graphType.includes("::")) {
|
|
27
|
+
return graphType.split("::")[0];
|
|
28
|
+
}
|
|
29
|
+
const { companyId, name } = this.parse(graphType);
|
|
30
|
+
return `${companyId}.${name}`;
|
|
31
|
+
}
|
|
32
|
+
static getVersion(graphType) {
|
|
33
|
+
return graphType.includes("::") ? graphType.split("::")[1] : undefined;
|
|
34
|
+
}
|
|
35
|
+
static isValidVersion(version) {
|
|
36
|
+
const semverRegex = /^\d+\.\d+\.\d+(-[a-zA-Z0-9.-]+)?$/;
|
|
37
|
+
return semverRegex.test(version);
|
|
38
|
+
}
|
|
39
|
+
static isSystemGraph(graphType) {
|
|
40
|
+
const { companyId } = this.parse(graphType);
|
|
41
|
+
return companyId === "global";
|
|
42
|
+
}
|
|
43
|
+
static compareVersions(a, b) {
|
|
44
|
+
const parseVersion = (v) => {
|
|
45
|
+
const [main, prerelease] = v.split("-");
|
|
46
|
+
const [major, minor, patch] = main.split(".").map(Number);
|
|
47
|
+
return { major, minor, patch, prerelease };
|
|
48
|
+
};
|
|
49
|
+
const versionA = parseVersion(a);
|
|
50
|
+
const versionB = parseVersion(b);
|
|
51
|
+
if (versionA.major !== versionB.major) {
|
|
52
|
+
return versionA.major - versionB.major;
|
|
53
|
+
}
|
|
54
|
+
if (versionA.minor !== versionB.minor) {
|
|
55
|
+
return versionA.minor - versionB.minor;
|
|
56
|
+
}
|
|
57
|
+
if (versionA.patch !== versionB.patch) {
|
|
58
|
+
return versionA.patch - versionB.patch;
|
|
59
|
+
}
|
|
60
|
+
if (versionA.prerelease && !versionB.prerelease)
|
|
61
|
+
return -1;
|
|
62
|
+
if (!versionA.prerelease && versionB.prerelease)
|
|
63
|
+
return 1;
|
|
64
|
+
if (versionA.prerelease && versionB.prerelease) {
|
|
65
|
+
return versionA.prerelease.localeCompare(versionB.prerelease);
|
|
66
|
+
}
|
|
67
|
+
return 0;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
exports.GraphTypeUtils = GraphTypeUtils;
|
|
71
|
+
//# sourceMappingURL=graph-type.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph-type.utils.js","sourceRoot":"","sources":["../../src/utils/graph-type.utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./graph-type.utils";
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./graph-type.utils"), exports);
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,qDAAmC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export declare class UsageRecorder {
|
|
2
|
+
private modelCalls;
|
|
3
|
+
recordModelExecution(record: {
|
|
4
|
+
modelId: string;
|
|
5
|
+
promptTokens: number;
|
|
6
|
+
completionTokens: number;
|
|
7
|
+
totalTokens?: number;
|
|
8
|
+
[key: string]: any;
|
|
9
|
+
}): void;
|
|
10
|
+
getRecords(): {
|
|
11
|
+
modelCalls: Array<{
|
|
12
|
+
modelId: string;
|
|
13
|
+
promptTokens: number;
|
|
14
|
+
completionTokens: number;
|
|
15
|
+
totalTokens: number;
|
|
16
|
+
timestamp: string;
|
|
17
|
+
[key: string]: any;
|
|
18
|
+
}>;
|
|
19
|
+
};
|
|
20
|
+
clear(): void;
|
|
21
|
+
getTotalTokens(): number;
|
|
22
|
+
getTotalCalls(): number;
|
|
23
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UsageRecorder = void 0;
|
|
4
|
+
class UsageRecorder {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.modelCalls = [];
|
|
7
|
+
}
|
|
8
|
+
recordModelExecution(record) {
|
|
9
|
+
var _a;
|
|
10
|
+
const totalTokens = (_a = record.totalTokens) !== null && _a !== void 0 ? _a : record.promptTokens + record.completionTokens;
|
|
11
|
+
this.modelCalls.push(Object.assign(Object.assign({}, record), { totalTokens, timestamp: new Date().toISOString() }));
|
|
12
|
+
}
|
|
13
|
+
getRecords() {
|
|
14
|
+
return {
|
|
15
|
+
modelCalls: [...this.modelCalls],
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
clear() {
|
|
19
|
+
this.modelCalls = [];
|
|
20
|
+
}
|
|
21
|
+
getTotalTokens() {
|
|
22
|
+
return this.modelCalls.reduce((sum, call) => sum + call.totalTokens, 0);
|
|
23
|
+
}
|
|
24
|
+
getTotalCalls() {
|
|
25
|
+
return this.modelCalls.length;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.UsageRecorder = UsageRecorder;
|
|
29
|
+
//# sourceMappingURL=usage-recorder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usage-recorder.js","sourceRoot":"","sources":["../../src/utils/usage-recorder.ts"],"names":[],"mappings":";;;AAGA,MAAa,aAAa;IAA1B;QACU,eAAU,GAOb,EAAE,CAAC;IA4CV,CAAC;IA1CC,oBAAoB,CAAC,MAMpB;;QACC,MAAM,WAAW,GACf,MAAA,MAAM,CAAC,WAAW,mCAAI,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,gBAAgB,CAAC;QACtE,IAAI,CAAC,UAAU,CAAC,IAAI,iCACf,MAAM,KACT,WAAW,EACX,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,IACnC,CAAC;IACL,CAAC;IAED,UAAU;QAUR,OAAO;YACL,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;SACjC,CAAC;IACJ,CAAC;IAED,KAAK;QACH,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;IACvB,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;IAChC,CAAC;CACF;AApDD,sCAoDC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./versioned-graph.service"), exports);
|
|
18
|
+
__exportStar(require("./versioning.types"), exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/versioning/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,4DAA0C;AAC1C,qDAAmC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ModuleRef } from "@nestjs/core";
|
|
2
|
+
import { AbstractGraphBuilder } from "../core/abstract-graph.builder";
|
|
3
|
+
import { VersioningConfig, VersionResolution, VersionResolutionOptions } from "./versioning.types";
|
|
4
|
+
export declare class VersionedGraphService {
|
|
5
|
+
private readonly logger;
|
|
6
|
+
private readonly versionConfigs;
|
|
7
|
+
constructor();
|
|
8
|
+
registerVersioning(config: VersioningConfig): void;
|
|
9
|
+
resolveVersion(graphType: string, options?: VersionResolutionOptions): Promise<VersionResolution>;
|
|
10
|
+
createVersionedBuilder(graphType: string, moduleRef?: ModuleRef, options?: VersionResolutionOptions): Promise<AbstractGraphBuilder<any>>;
|
|
11
|
+
getAvailableVersions(baseGraphType: string): string[];
|
|
12
|
+
isVersionSupported(graphType: string, options?: VersionResolutionOptions): boolean;
|
|
13
|
+
private findBestVersionRoute;
|
|
14
|
+
private isVersionCompatible;
|
|
15
|
+
getVersioningInfo(baseGraphType: string): VersioningConfig | null;
|
|
16
|
+
}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var VersionedGraphService_1;
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.VersionedGraphService = void 0;
|
|
14
|
+
const common_1 = require("@nestjs/common");
|
|
15
|
+
const graph_type_utils_1 = require("../utils/graph-type.utils");
|
|
16
|
+
let VersionedGraphService = VersionedGraphService_1 = class VersionedGraphService {
|
|
17
|
+
constructor() {
|
|
18
|
+
this.logger = new common_1.Logger(VersionedGraphService_1.name);
|
|
19
|
+
this.versionConfigs = new Map();
|
|
20
|
+
}
|
|
21
|
+
registerVersioning(config) {
|
|
22
|
+
this.versionConfigs.set(config.baseGraphType, config);
|
|
23
|
+
this.logger.log(`Registered versioning for ${config.baseGraphType} with ${config.versions.length} versions`);
|
|
24
|
+
}
|
|
25
|
+
async resolveVersion(graphType, options = {}) {
|
|
26
|
+
const parsed = graph_type_utils_1.GraphTypeUtils.parse(graphType);
|
|
27
|
+
const baseType = graph_type_utils_1.GraphTypeUtils.getBaseType(graphType);
|
|
28
|
+
const requestedVersion = graph_type_utils_1.GraphTypeUtils.getVersion(graphType) || options.requestedVersion;
|
|
29
|
+
const config = this.versionConfigs.get(baseType);
|
|
30
|
+
if (!config) {
|
|
31
|
+
throw new Error(`No versioning configuration found for ${baseType}`);
|
|
32
|
+
}
|
|
33
|
+
const route = this.findBestVersionRoute(config, requestedVersion, options);
|
|
34
|
+
if (!route) {
|
|
35
|
+
throw new Error(`No compatible version found for ${graphType} with options: ${JSON.stringify(options)}`);
|
|
36
|
+
}
|
|
37
|
+
const fullGraphType = graph_type_utils_1.GraphTypeUtils.build(parsed.companyId, parsed.name, route.version);
|
|
38
|
+
return {
|
|
39
|
+
version: route.version,
|
|
40
|
+
builderClass: route.builderClass,
|
|
41
|
+
fullGraphType,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
async createVersionedBuilder(graphType, moduleRef, options = {}) {
|
|
45
|
+
const resolution = await this.resolveVersion(graphType, options);
|
|
46
|
+
try {
|
|
47
|
+
if (!moduleRef) {
|
|
48
|
+
throw new Error("ModuleRef is not available - falling back to direct instantiation");
|
|
49
|
+
}
|
|
50
|
+
const builder = await moduleRef.create(resolution.builderClass);
|
|
51
|
+
this.logger.debug(`Created versioned builder for ${resolution.fullGraphType}`);
|
|
52
|
+
return builder;
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
this.logger.error(`Failed to create builder for ${resolution.fullGraphType}: ${error.message}`);
|
|
56
|
+
throw new Error(`Failed to create versioned builder: ${error.message}`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
getAvailableVersions(baseGraphType) {
|
|
60
|
+
const config = this.versionConfigs.get(baseGraphType);
|
|
61
|
+
if (!config) {
|
|
62
|
+
return [];
|
|
63
|
+
}
|
|
64
|
+
return config.versions
|
|
65
|
+
.map(route => route.version)
|
|
66
|
+
.sort((a, b) => graph_type_utils_1.GraphTypeUtils.compareVersions(b, a));
|
|
67
|
+
}
|
|
68
|
+
isVersionSupported(graphType, options = {}) {
|
|
69
|
+
try {
|
|
70
|
+
const baseType = graph_type_utils_1.GraphTypeUtils.getBaseType(graphType);
|
|
71
|
+
const requestedVersion = graph_type_utils_1.GraphTypeUtils.getVersion(graphType);
|
|
72
|
+
const config = this.versionConfigs.get(baseType);
|
|
73
|
+
if (!config) {
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
const route = this.findBestVersionRoute(config, requestedVersion, options);
|
|
77
|
+
return route !== null;
|
|
78
|
+
}
|
|
79
|
+
catch (_a) {
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
findBestVersionRoute(config, requestedVersion, options = {}) {
|
|
84
|
+
const { strict = false } = options;
|
|
85
|
+
let candidates = [...config.versions];
|
|
86
|
+
if (requestedVersion) {
|
|
87
|
+
const exactMatch = candidates.find(route => route.version === requestedVersion);
|
|
88
|
+
if (exactMatch) {
|
|
89
|
+
return exactMatch;
|
|
90
|
+
}
|
|
91
|
+
if (strict) {
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
const compatibleVersions = candidates.filter(route => this.isVersionCompatible(requestedVersion, route.version));
|
|
95
|
+
if (compatibleVersions.length > 0) {
|
|
96
|
+
return compatibleVersions.sort((a, b) => graph_type_utils_1.GraphTypeUtils.compareVersions(b.version, a.version))[0];
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
const defaultRoute = candidates.find(route => route.isDefault);
|
|
100
|
+
if (defaultRoute) {
|
|
101
|
+
return defaultRoute;
|
|
102
|
+
}
|
|
103
|
+
if (config.defaultVersionStrategy === "latest" ||
|
|
104
|
+
!config.defaultVersionStrategy) {
|
|
105
|
+
const sortedVersions = candidates.sort((a, b) => graph_type_utils_1.GraphTypeUtils.compareVersions(b.version, a.version));
|
|
106
|
+
return sortedVersions[0] || null;
|
|
107
|
+
}
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
isVersionCompatible(requested, available) {
|
|
111
|
+
try {
|
|
112
|
+
const requestedParts = requested.split(".").map(Number);
|
|
113
|
+
const availableParts = available.split(".").map(Number);
|
|
114
|
+
if (requestedParts[0] !== availableParts[0]) {
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
return graph_type_utils_1.GraphTypeUtils.compareVersions(available, requested) >= 0;
|
|
118
|
+
}
|
|
119
|
+
catch (_a) {
|
|
120
|
+
return false;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
getVersioningInfo(baseGraphType) {
|
|
124
|
+
return this.versionConfigs.get(baseGraphType) || null;
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
exports.VersionedGraphService = VersionedGraphService;
|
|
128
|
+
exports.VersionedGraphService = VersionedGraphService = VersionedGraphService_1 = __decorate([
|
|
129
|
+
(0, common_1.Injectable)(),
|
|
130
|
+
__metadata("design:paramtypes", [])
|
|
131
|
+
], VersionedGraphService);
|
|
132
|
+
//# sourceMappingURL=versioned-graph.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"versioned-graph.service.js","sourceRoot":"","sources":["../../src/versioning/versioned-graph.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AACA,2CAAoD;AAEpD,gEAA2D;AAcpD,IAAM,qBAAqB,6BAA3B,MAAM,qBAAqB;IAIhC;QAHiB,WAAM,GAAG,IAAI,eAAM,CAAC,uBAAqB,CAAC,IAAI,CAAC,CAAC;QAChD,mBAAc,GAAG,IAAI,GAAG,EAA4B,CAAC;IAKtE,CAAC;IAKD,kBAAkB,CAAC,MAAwB;QACzC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,6BAA6B,MAAM,CAAC,aAAa,SAAS,MAAM,CAAC,QAAQ,CAAC,MAAM,WAAW,CAC5F,CAAC;IACJ,CAAC;IAKD,KAAK,CAAC,cAAc,CAClB,SAAiB,EACjB,UAAoC,EAAE;QAEtC,MAAM,MAAM,GAAG,iCAAc,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,iCAAc,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QACvD,MAAM,gBAAgB,GACpB,iCAAc,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,gBAAgB,CAAC;QAEnE,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,yCAAyC,QAAQ,EAAE,CAAC,CAAC;QACvE,CAAC;QAGD,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC;QAC3E,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CACb,mCAAmC,SAAS,kBAAkB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CACxF,CAAC;QACJ,CAAC;QAED,MAAM,aAAa,GAAG,iCAAc,CAAC,KAAK,CACxC,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,IAAI,EACX,KAAK,CAAC,OAAO,CACd,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,aAAa;SACd,CAAC;IACJ,CAAC;IAKD,KAAK,CAAC,sBAAsB,CAC1B,SAAiB,EACjB,SAAqB,EACrB,UAAoC,EAAE;QAEtC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAEjE,IAAI,CAAC;YACH,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CACb,mEAAmE,CACpE,CAAC;YACJ,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;YAChE,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,iCAAiC,UAAU,CAAC,aAAa,EAAE,CAC5D,CAAC;YACF,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,gCAAgC,UAAU,CAAC,aAAa,KAAK,KAAK,CAAC,OAAO,EAAE,CAC7E,CAAC;YACF,MAAM,IAAI,KAAK,CAAC,uCAAuC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAKD,oBAAoB,CAAC,aAAqB;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,MAAM,CAAC,QAAQ;aACnB,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;aAC3B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,iCAAc,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1D,CAAC;IAKD,kBAAkB,CAChB,SAAiB,EACjB,UAAoC,EAAE;QAEtC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,iCAAc,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YACvD,MAAM,gBAAgB,GAAG,iCAAc,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YAC9D,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAEjD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,KAAK,CAAC;YACf,CAAC;YAED,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,CACrC,MAAM,EACN,gBAAgB,EAChB,OAAO,CACR,CAAC;YACF,OAAO,KAAK,KAAK,IAAI,CAAC;QACxB,CAAC;QAAC,WAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAKO,oBAAoB,CAC1B,MAAwB,EACxB,gBAAyB,EACzB,UAAoC,EAAE;QAEtC,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;QACnC,IAAI,UAAU,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QAGtC,IAAI,gBAAgB,EAAE,CAAC;YAErB,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAChC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,KAAK,gBAAgB,CAC5C,CAAC;YACF,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,UAAU,CAAC;YACpB,CAAC;YAGD,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,IAAI,CAAC;YACd,CAAC;YAGD,MAAM,kBAAkB,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACnD,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,KAAK,CAAC,OAAO,CAAC,CAC1D,CAAC;YAEF,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAElC,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACtC,iCAAc,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CACrD,CAAC,CAAC,CAAC,CAAC;YACP,CAAC;QACH,CAAC;QAGD,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC/D,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,YAAY,CAAC;QACtB,CAAC;QAGD,IACE,MAAM,CAAC,sBAAsB,KAAK,QAAQ;YAC1C,CAAC,MAAM,CAAC,sBAAsB,EAC9B,CAAC;YACD,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC9C,iCAAc,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CACrD,CAAC;YACF,OAAO,cAAc,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QACnC,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAKO,mBAAmB,CAAC,SAAiB,EAAE,SAAiB;QAC9D,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACxD,MAAM,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAGxD,IAAI,cAAc,CAAC,CAAC,CAAC,KAAK,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5C,OAAO,KAAK,CAAC;YACf,CAAC;YAGD,OAAO,iCAAc,CAAC,eAAe,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QACnE,CAAC;QAAC,WAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAKD,iBAAiB,CAAC,aAAqB;QACrC,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC;IACxD,CAAC;CACF,CAAA;AApNY,sDAAqB;gCAArB,qBAAqB;IADjC,IAAA,mBAAU,GAAE;;GACA,qBAAqB,CAoNjC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Type } from "@nestjs/common";
|
|
2
|
+
import { AbstractGraphBuilder } from "../core/abstract-graph.builder";
|
|
3
|
+
export interface VersionRoute {
|
|
4
|
+
version: string;
|
|
5
|
+
builderClass: Type<AbstractGraphBuilder<any>>;
|
|
6
|
+
isDefault?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export interface VersioningConfig {
|
|
9
|
+
baseGraphType: string;
|
|
10
|
+
versions: VersionRoute[];
|
|
11
|
+
defaultVersionStrategy?: "latest" | "explicit";
|
|
12
|
+
}
|
|
13
|
+
export interface VersionResolution {
|
|
14
|
+
version: string;
|
|
15
|
+
builderClass: Type<AbstractGraphBuilder<any>>;
|
|
16
|
+
fullGraphType: string;
|
|
17
|
+
}
|
|
18
|
+
export interface VersionResolutionOptions {
|
|
19
|
+
requestedVersion?: string;
|
|
20
|
+
strict?: boolean;
|
|
21
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"versioning.types.js","sourceRoot":"","sources":["../../src/versioning/versioning.types.ts"],"names":[],"mappings":""}
|