modelfusion 0.47.1 → 0.47.2
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 +37 -36
- package/core/structure/Schema.d.ts +5 -5
- package/core/structure/UncheckedSchema.cjs +2 -2
- package/core/structure/UncheckedSchema.d.ts +2 -2
- package/core/structure/UncheckedSchema.js +2 -2
- package/core/structure/ZodSchema.cjs +2 -5
- package/core/structure/ZodSchema.d.ts +2 -2
- package/core/structure/ZodSchema.js +2 -5
- package/event-source/readEventSource.cjs +5 -8
- package/event-source/readEventSource.d.ts +1 -1
- package/event-source/readEventSource.js +5 -5
- package/event-source/readEventSourceStream.cjs +3 -6
- package/event-source/readEventSourceStream.js +3 -3
- package/guard/fixStructure.cjs +50 -0
- package/guard/fixStructure.d.ts +50 -0
- package/guard/fixStructure.js +50 -0
- package/guard/guard.d.ts +1 -1
- package/model-function/generate-structure/generateStructure.cjs +1 -1
- package/model-function/generate-structure/generateStructure.js +1 -1
- package/model-function/generate-structure/generateStructureOrText.cjs +1 -1
- package/model-function/generate-structure/generateStructureOrText.js +1 -1
- package/model-function/generate-structure/streamStructure.cjs +1 -1
- package/model-function/generate-structure/streamStructure.js +1 -1
- package/model-provider/anthropic/AnthropicError.cjs +7 -14
- package/model-provider/anthropic/AnthropicError.js +7 -11
- package/model-provider/anthropic/AnthropicTextGenerationModel.cjs +2 -15
- package/model-provider/anthropic/AnthropicTextGenerationModel.js +2 -12
- package/model-provider/automatic1111/Automatic1111Error.cjs +2 -5
- package/model-provider/automatic1111/Automatic1111Error.d.ts +1 -1
- package/model-provider/automatic1111/Automatic1111Error.js +2 -2
- package/model-provider/cohere/CohereError.cjs +2 -5
- package/model-provider/cohere/CohereError.js +2 -2
- package/model-provider/cohere/CohereTextEmbeddingModel.cjs +8 -11
- package/model-provider/cohere/CohereTextEmbeddingModel.d.ts +1 -1
- package/model-provider/cohere/CohereTextEmbeddingModel.js +1 -1
- package/model-provider/cohere/CohereTextGenerationModel.cjs +22 -21
- package/model-provider/cohere/CohereTextGenerationModel.js +22 -18
- package/model-provider/cohere/CohereTokenizer.cjs +12 -15
- package/model-provider/cohere/CohereTokenizer.d.ts +1 -1
- package/model-provider/cohere/CohereTokenizer.js +1 -1
- package/model-provider/huggingface/HuggingFaceError.cjs +7 -31
- package/model-provider/huggingface/HuggingFaceError.js +7 -28
- package/model-provider/huggingface/HuggingFaceImageDescriptionModel.cjs +3 -6
- package/model-provider/huggingface/HuggingFaceImageDescriptionModel.d.ts +1 -1
- package/model-provider/huggingface/HuggingFaceImageDescriptionModel.js +1 -1
- package/model-provider/huggingface/HuggingFaceTextEmbeddingModel.cjs +2 -5
- package/model-provider/huggingface/HuggingFaceTextEmbeddingModel.d.ts +1 -1
- package/model-provider/huggingface/HuggingFaceTextEmbeddingModel.js +1 -1
- package/model-provider/huggingface/HuggingFaceTextGenerationModel.cjs +3 -6
- package/model-provider/huggingface/HuggingFaceTextGenerationModel.d.ts +1 -1
- package/model-provider/huggingface/HuggingFaceTextGenerationModel.js +1 -1
- package/model-provider/llamacpp/LlamaCppError.cjs +7 -30
- package/model-provider/llamacpp/LlamaCppError.js +7 -27
- package/model-provider/llamacpp/LlamaCppTextEmbeddingModel.cjs +3 -6
- package/model-provider/llamacpp/LlamaCppTextEmbeddingModel.d.ts +1 -1
- package/model-provider/llamacpp/LlamaCppTextEmbeddingModel.js +1 -1
- package/model-provider/llamacpp/LlamaCppTextGenerationModel.cjs +53 -66
- package/model-provider/llamacpp/LlamaCppTextGenerationModel.d.ts +1 -1
- package/model-provider/llamacpp/LlamaCppTextGenerationModel.js +3 -13
- package/model-provider/llamacpp/LlamaCppTokenizer.cjs +3 -6
- package/model-provider/llamacpp/LlamaCppTokenizer.d.ts +1 -1
- package/model-provider/llamacpp/LlamaCppTokenizer.js +1 -1
- package/model-provider/openai/OpenAIError.cjs +2 -5
- package/model-provider/openai/OpenAIError.js +2 -2
- package/model-provider/openai/OpenAITextEmbeddingModel.cjs +11 -14
- package/model-provider/openai/OpenAITextEmbeddingModel.d.ts +1 -1
- package/model-provider/openai/OpenAITextEmbeddingModel.js +1 -1
- package/model-provider/openai/OpenAITextGenerationModel.cjs +26 -39
- package/model-provider/openai/OpenAITextGenerationModel.d.ts +1 -1
- package/model-provider/openai/OpenAITextGenerationModel.js +3 -13
- package/model-provider/openai/OpenAITranscriptionModel.cjs +20 -23
- package/model-provider/openai/OpenAITranscriptionModel.d.ts +1 -1
- package/model-provider/openai/OpenAITranscriptionModel.js +1 -1
- package/model-provider/openai/chat/OpenAIChatModel.cjs +21 -21
- package/model-provider/openai/chat/OpenAIChatModel.d.ts +1 -1
- package/model-provider/openai/chat/OpenAIChatModel.js +2 -2
- package/model-provider/openai/chat/OpenAIChatStreamIterable.cjs +2 -6
- package/model-provider/openai/chat/OpenAIChatStreamIterable.js +2 -3
- package/model-provider/stability/StabilityError.cjs +2 -5
- package/model-provider/stability/StabilityError.js +2 -2
- package/package.json +1 -1
- package/util/JSONParseError.cjs +33 -0
- package/util/JSONParseError.d.ts +9 -0
- package/util/JSONParseError.js +29 -0
- package/util/index.cjs +2 -0
- package/util/index.d.ts +2 -0
- package/util/index.js +2 -0
- package/util/parseJSON.cjs +67 -0
- package/util/parseJSON.d.ts +18 -0
- package/util/parseJSON.js +58 -0
- package/vector-index/memory/MemoryVectorIndex.cjs +7 -10
- package/vector-index/memory/MemoryVectorIndex.js +3 -3
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
6
|
exports.OpenAIChatResponseFormat = exports.OpenAIChatModel = exports.calculateOpenAIChatCostInMillicents = exports.isOpenAIChatModel = exports.getOpenAIChatModelInformation = exports.OPENAI_CHAT_MODELS = void 0;
|
7
7
|
const secure_json_parse_1 = __importDefault(require("secure-json-parse"));
|
8
|
-
const zod_1 =
|
8
|
+
const zod_1 = require("zod");
|
9
9
|
const callWithRetryAndThrottle_js_1 = require("../../../core/api/callWithRetryAndThrottle.cjs");
|
10
10
|
const postToApi_js_1 = require("../../../core/api/postToApi.cjs");
|
11
11
|
const AbstractModel_js_1 = require("../../../model-function/AbstractModel.cjs");
|
@@ -270,7 +270,7 @@ class OpenAIChatModel extends AbstractModel_js_1.AbstractModel {
|
|
270
270
|
catch (error) {
|
271
271
|
throw new StructureParseError_js_1.StructureParseError({
|
272
272
|
structureName: structureDefinition.name,
|
273
|
-
valueText
|
273
|
+
valueText,
|
274
274
|
cause: error,
|
275
275
|
});
|
276
276
|
}
|
@@ -370,30 +370,30 @@ class OpenAIChatModel extends AbstractModel_js_1.AbstractModel {
|
|
370
370
|
}
|
371
371
|
}
|
372
372
|
exports.OpenAIChatModel = OpenAIChatModel;
|
373
|
-
const openAIChatResponseSchema = zod_1.
|
374
|
-
id: zod_1.
|
375
|
-
object: zod_1.
|
376
|
-
created: zod_1.
|
377
|
-
model: zod_1.
|
378
|
-
choices: zod_1.
|
379
|
-
message: zod_1.
|
380
|
-
role: zod_1.
|
381
|
-
content: zod_1.
|
382
|
-
function_call: zod_1.
|
373
|
+
const openAIChatResponseSchema = zod_1.z.object({
|
374
|
+
id: zod_1.z.string(),
|
375
|
+
object: zod_1.z.literal("chat.completion"),
|
376
|
+
created: zod_1.z.number(),
|
377
|
+
model: zod_1.z.string(),
|
378
|
+
choices: zod_1.z.array(zod_1.z.object({
|
379
|
+
message: zod_1.z.object({
|
380
|
+
role: zod_1.z.literal("assistant"),
|
381
|
+
content: zod_1.z.string().nullable(),
|
382
|
+
function_call: zod_1.z
|
383
383
|
.object({
|
384
|
-
name: zod_1.
|
385
|
-
arguments: zod_1.
|
384
|
+
name: zod_1.z.string(),
|
385
|
+
arguments: zod_1.z.string(),
|
386
386
|
})
|
387
387
|
.optional(),
|
388
388
|
}),
|
389
|
-
index: zod_1.
|
390
|
-
logprobs: zod_1.
|
391
|
-
finish_reason: zod_1.
|
389
|
+
index: zod_1.z.number(),
|
390
|
+
logprobs: zod_1.z.nullable(zod_1.z.any()),
|
391
|
+
finish_reason: zod_1.z.string(),
|
392
392
|
})),
|
393
|
-
usage: zod_1.
|
394
|
-
prompt_tokens: zod_1.
|
395
|
-
completion_tokens: zod_1.
|
396
|
-
total_tokens: zod_1.
|
393
|
+
usage: zod_1.z.object({
|
394
|
+
prompt_tokens: zod_1.z.number(),
|
395
|
+
completion_tokens: zod_1.z.number(),
|
396
|
+
total_tokens: zod_1.z.number(),
|
397
397
|
}),
|
398
398
|
});
|
399
399
|
async function callOpenAIChatCompletionAPI({ api = new OpenAIApiConfiguration_js_1.OpenAIApiConfiguration(), abortSignal, responseFormat, model, messages, functions, functionCall, temperature, topP, n, stop, maxTokens, presencePenalty, frequencyPenalty, logitBias, user, }) {
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import SecureJSON from "secure-json-parse";
|
2
|
-
import z from "zod";
|
2
|
+
import { z } from "zod";
|
3
3
|
import { callWithRetryAndThrottle } from "../../../core/api/callWithRetryAndThrottle.js";
|
4
4
|
import { createJsonResponseHandler, postJsonToApi, } from "../../../core/api/postToApi.js";
|
5
5
|
import { AbstractModel } from "../../../model-function/AbstractModel.js";
|
@@ -261,7 +261,7 @@ export class OpenAIChatModel extends AbstractModel {
|
|
261
261
|
catch (error) {
|
262
262
|
throw new StructureParseError({
|
263
263
|
structureName: structureDefinition.name,
|
264
|
-
valueText
|
264
|
+
valueText,
|
265
265
|
cause: error,
|
266
266
|
});
|
267
267
|
}
|
@@ -1,13 +1,10 @@
|
|
1
1
|
"use strict";
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
-
};
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
3
|
exports.createOpenAIChatDeltaIterableQueue = void 0;
|
7
|
-
const secure_json_parse_1 = __importDefault(require("secure-json-parse"));
|
8
4
|
const zod_1 = require("zod");
|
9
5
|
const AsyncQueue_js_1 = require("../../../event-source/AsyncQueue.cjs");
|
10
6
|
const parseEventSourceStream_js_1 = require("../../../event-source/parseEventSourceStream.cjs");
|
7
|
+
const parseJSON_js_1 = require("../../../util/parseJSON.cjs");
|
11
8
|
const chatResponseStreamEventSchema = zod_1.z.object({
|
12
9
|
choices: zod_1.z.array(zod_1.z.object({
|
13
10
|
delta: zod_1.z.object({
|
@@ -41,8 +38,7 @@ async function createOpenAIChatDeltaIterableQueue(stream, extractDeltaValue) {
|
|
41
38
|
queue.close();
|
42
39
|
return;
|
43
40
|
}
|
44
|
-
const
|
45
|
-
const parseResult = chatResponseStreamEventSchema.safeParse(json);
|
41
|
+
const parseResult = (0, parseJSON_js_1.safeParseJsonWithZod)(data, chatResponseStreamEventSchema);
|
46
42
|
if (!parseResult.success) {
|
47
43
|
queue.push({
|
48
44
|
type: "error",
|
@@ -1,7 +1,7 @@
|
|
1
|
-
import SecureJSON from "secure-json-parse";
|
2
1
|
import { z } from "zod";
|
3
2
|
import { AsyncQueue } from "../../../event-source/AsyncQueue.js";
|
4
3
|
import { parseEventSourceStream } from "../../../event-source/parseEventSourceStream.js";
|
4
|
+
import { safeParseJsonWithZod } from "../../../util/parseJSON.js";
|
5
5
|
const chatResponseStreamEventSchema = z.object({
|
6
6
|
choices: z.array(z.object({
|
7
7
|
delta: z.object({
|
@@ -35,8 +35,7 @@ export async function createOpenAIChatDeltaIterableQueue(stream, extractDeltaVal
|
|
35
35
|
queue.close();
|
36
36
|
return;
|
37
37
|
}
|
38
|
-
const
|
39
|
-
const parseResult = chatResponseStreamEventSchema.safeParse(json);
|
38
|
+
const parseResult = safeParseJsonWithZod(data, chatResponseStreamEventSchema);
|
40
39
|
if (!parseResult.success) {
|
41
40
|
queue.push({
|
42
41
|
type: "error",
|
@@ -1,12 +1,9 @@
|
|
1
1
|
"use strict";
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
-
};
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
3
|
exports.failedStabilityCallResponseHandler = exports.StabilityError = exports.stabilityErrorDataSchema = void 0;
|
7
|
-
const secure_json_parse_1 = __importDefault(require("secure-json-parse"));
|
8
4
|
const zod_1 = require("zod");
|
9
5
|
const ApiCallError_js_1 = require("../../core/api/ApiCallError.cjs");
|
6
|
+
const parseJSON_js_1 = require("../../util/parseJSON.cjs");
|
10
7
|
exports.stabilityErrorDataSchema = zod_1.z.object({
|
11
8
|
message: zod_1.z.string(),
|
12
9
|
});
|
@@ -25,7 +22,7 @@ class StabilityError extends ApiCallError_js_1.ApiCallError {
|
|
25
22
|
exports.StabilityError = StabilityError;
|
26
23
|
const failedStabilityCallResponseHandler = async ({ response, url, requestBodyValues }) => {
|
27
24
|
const responseBody = await response.text();
|
28
|
-
const parsedError =
|
25
|
+
const parsedError = (0, parseJSON_js_1.parseJsonWithZod)(responseBody, exports.stabilityErrorDataSchema);
|
29
26
|
return new StabilityError({
|
30
27
|
url,
|
31
28
|
requestBodyValues,
|
@@ -1,6 +1,6 @@
|
|
1
|
-
import SecureJSON from "secure-json-parse";
|
2
1
|
import { z } from "zod";
|
3
2
|
import { ApiCallError } from "../../core/api/ApiCallError.js";
|
3
|
+
import { parseJsonWithZod } from "../../util/parseJSON.js";
|
4
4
|
export const stabilityErrorDataSchema = z.object({
|
5
5
|
message: z.string(),
|
6
6
|
});
|
@@ -18,7 +18,7 @@ export class StabilityError extends ApiCallError {
|
|
18
18
|
}
|
19
19
|
export const failedStabilityCallResponseHandler = async ({ response, url, requestBodyValues }) => {
|
20
20
|
const responseBody = await response.text();
|
21
|
-
const parsedError =
|
21
|
+
const parsedError = parseJsonWithZod(responseBody, stabilityErrorDataSchema);
|
22
22
|
return new StabilityError({
|
23
23
|
url,
|
24
24
|
requestBodyValues,
|
package/package.json
CHANGED
@@ -0,0 +1,33 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.JSONParseError = void 0;
|
4
|
+
const getErrorMessage_js_1 = require("./getErrorMessage.cjs");
|
5
|
+
class JSONParseError extends Error {
|
6
|
+
constructor({ valueText, cause }) {
|
7
|
+
super(`JSON parsing failed: ` +
|
8
|
+
`Value: ${valueText}.\n` +
|
9
|
+
`Error message: ${(0, getErrorMessage_js_1.getErrorMessage)(cause)}`);
|
10
|
+
Object.defineProperty(this, "structureName", {
|
11
|
+
enumerable: true,
|
12
|
+
configurable: true,
|
13
|
+
writable: true,
|
14
|
+
value: void 0
|
15
|
+
});
|
16
|
+
Object.defineProperty(this, "cause", {
|
17
|
+
enumerable: true,
|
18
|
+
configurable: true,
|
19
|
+
writable: true,
|
20
|
+
value: void 0
|
21
|
+
});
|
22
|
+
Object.defineProperty(this, "valueText", {
|
23
|
+
enumerable: true,
|
24
|
+
configurable: true,
|
25
|
+
writable: true,
|
26
|
+
value: void 0
|
27
|
+
});
|
28
|
+
this.name = "JSONParseError";
|
29
|
+
this.cause = cause;
|
30
|
+
this.valueText = valueText;
|
31
|
+
}
|
32
|
+
}
|
33
|
+
exports.JSONParseError = JSONParseError;
|
@@ -0,0 +1,29 @@
|
|
1
|
+
import { getErrorMessage } from "./getErrorMessage.js";
|
2
|
+
export class JSONParseError extends Error {
|
3
|
+
constructor({ valueText, cause }) {
|
4
|
+
super(`JSON parsing failed: ` +
|
5
|
+
`Value: ${valueText}.\n` +
|
6
|
+
`Error message: ${getErrorMessage(cause)}`);
|
7
|
+
Object.defineProperty(this, "structureName", {
|
8
|
+
enumerable: true,
|
9
|
+
configurable: true,
|
10
|
+
writable: true,
|
11
|
+
value: void 0
|
12
|
+
});
|
13
|
+
Object.defineProperty(this, "cause", {
|
14
|
+
enumerable: true,
|
15
|
+
configurable: true,
|
16
|
+
writable: true,
|
17
|
+
value: void 0
|
18
|
+
});
|
19
|
+
Object.defineProperty(this, "valueText", {
|
20
|
+
enumerable: true,
|
21
|
+
configurable: true,
|
22
|
+
writable: true,
|
23
|
+
value: void 0
|
24
|
+
});
|
25
|
+
this.name = "JSONParseError";
|
26
|
+
this.cause = cause;
|
27
|
+
this.valueText = valueText;
|
28
|
+
}
|
29
|
+
}
|
package/util/index.cjs
CHANGED
@@ -14,5 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
15
15
|
};
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
17
|
+
__exportStar(require("./JSONParseError.cjs"), exports);
|
17
18
|
__exportStar(require("./cosineSimilarity.cjs"), exports);
|
18
19
|
__exportStar(require("./getAudioFileExtension.cjs"), exports);
|
20
|
+
__exportStar(require("./parseJSON.cjs"), exports);
|
package/util/index.d.ts
CHANGED
package/util/index.js
CHANGED
@@ -0,0 +1,67 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.safeParseJsonWithSchema = exports.safeParseJsonWithZod = exports.parseJsonWithZod = void 0;
|
7
|
+
const secure_json_parse_1 = __importDefault(require("secure-json-parse"));
|
8
|
+
const JSONParseError_js_1 = require("./JSONParseError.cjs");
|
9
|
+
function parseJsonWithZod(json, schema) {
|
10
|
+
try {
|
11
|
+
const parsedJson = secure_json_parse_1.default.parse(json);
|
12
|
+
return schema.parse(parsedJson);
|
13
|
+
}
|
14
|
+
catch (error) {
|
15
|
+
throw new JSONParseError_js_1.JSONParseError({
|
16
|
+
valueText: json,
|
17
|
+
cause: error,
|
18
|
+
});
|
19
|
+
}
|
20
|
+
}
|
21
|
+
exports.parseJsonWithZod = parseJsonWithZod;
|
22
|
+
function safeParseJsonWithZod(json, schema) {
|
23
|
+
try {
|
24
|
+
const parsedJson = secure_json_parse_1.default.parse(json);
|
25
|
+
const validationResult = schema.safeParse(parsedJson);
|
26
|
+
if (validationResult.success) {
|
27
|
+
return validationResult;
|
28
|
+
}
|
29
|
+
return {
|
30
|
+
success: false,
|
31
|
+
error: new JSONParseError_js_1.JSONParseError({
|
32
|
+
valueText: json,
|
33
|
+
cause: validationResult.error,
|
34
|
+
}),
|
35
|
+
};
|
36
|
+
}
|
37
|
+
catch (error) {
|
38
|
+
throw new JSONParseError_js_1.JSONParseError({
|
39
|
+
valueText: json,
|
40
|
+
cause: error,
|
41
|
+
});
|
42
|
+
}
|
43
|
+
}
|
44
|
+
exports.safeParseJsonWithZod = safeParseJsonWithZod;
|
45
|
+
function safeParseJsonWithSchema(json, schema) {
|
46
|
+
try {
|
47
|
+
const parsedJson = secure_json_parse_1.default.parse(json);
|
48
|
+
const validationResult = schema.validate(parsedJson);
|
49
|
+
if (validationResult.success) {
|
50
|
+
return validationResult;
|
51
|
+
}
|
52
|
+
return {
|
53
|
+
success: false,
|
54
|
+
error: new JSONParseError_js_1.JSONParseError({
|
55
|
+
valueText: json,
|
56
|
+
cause: validationResult.error,
|
57
|
+
}),
|
58
|
+
};
|
59
|
+
}
|
60
|
+
catch (error) {
|
61
|
+
throw new JSONParseError_js_1.JSONParseError({
|
62
|
+
valueText: json,
|
63
|
+
cause: error,
|
64
|
+
});
|
65
|
+
}
|
66
|
+
}
|
67
|
+
exports.safeParseJsonWithSchema = safeParseJsonWithSchema;
|
@@ -0,0 +1,18 @@
|
|
1
|
+
import { z } from "zod";
|
2
|
+
import { Schema } from "../core/structure/Schema.js";
|
3
|
+
import { JSONParseError } from "./JSONParseError.js";
|
4
|
+
export declare function parseJsonWithZod<T>(json: string, schema: z.Schema<T>): T;
|
5
|
+
export declare function safeParseJsonWithZod<T>(json: string, schema: z.Schema<T>): {
|
6
|
+
success: true;
|
7
|
+
data: T;
|
8
|
+
} | {
|
9
|
+
success: false;
|
10
|
+
error: JSONParseError;
|
11
|
+
};
|
12
|
+
export declare function safeParseJsonWithSchema<T>(json: string, schema: Schema<T>): {
|
13
|
+
success: true;
|
14
|
+
data: T;
|
15
|
+
} | {
|
16
|
+
success: false;
|
17
|
+
error: JSONParseError;
|
18
|
+
};
|
@@ -0,0 +1,58 @@
|
|
1
|
+
import SecureJSON from "secure-json-parse";
|
2
|
+
import { JSONParseError } from "./JSONParseError.js";
|
3
|
+
export function parseJsonWithZod(json, schema) {
|
4
|
+
try {
|
5
|
+
const parsedJson = SecureJSON.parse(json);
|
6
|
+
return schema.parse(parsedJson);
|
7
|
+
}
|
8
|
+
catch (error) {
|
9
|
+
throw new JSONParseError({
|
10
|
+
valueText: json,
|
11
|
+
cause: error,
|
12
|
+
});
|
13
|
+
}
|
14
|
+
}
|
15
|
+
export function safeParseJsonWithZod(json, schema) {
|
16
|
+
try {
|
17
|
+
const parsedJson = SecureJSON.parse(json);
|
18
|
+
const validationResult = schema.safeParse(parsedJson);
|
19
|
+
if (validationResult.success) {
|
20
|
+
return validationResult;
|
21
|
+
}
|
22
|
+
return {
|
23
|
+
success: false,
|
24
|
+
error: new JSONParseError({
|
25
|
+
valueText: json,
|
26
|
+
cause: validationResult.error,
|
27
|
+
}),
|
28
|
+
};
|
29
|
+
}
|
30
|
+
catch (error) {
|
31
|
+
throw new JSONParseError({
|
32
|
+
valueText: json,
|
33
|
+
cause: error,
|
34
|
+
});
|
35
|
+
}
|
36
|
+
}
|
37
|
+
export function safeParseJsonWithSchema(json, schema) {
|
38
|
+
try {
|
39
|
+
const parsedJson = SecureJSON.parse(json);
|
40
|
+
const validationResult = schema.validate(parsedJson);
|
41
|
+
if (validationResult.success) {
|
42
|
+
return validationResult;
|
43
|
+
}
|
44
|
+
return {
|
45
|
+
success: false,
|
46
|
+
error: new JSONParseError({
|
47
|
+
valueText: json,
|
48
|
+
cause: validationResult.error,
|
49
|
+
}),
|
50
|
+
};
|
51
|
+
}
|
52
|
+
catch (error) {
|
53
|
+
throw new JSONParseError({
|
54
|
+
valueText: json,
|
55
|
+
cause: error,
|
56
|
+
});
|
57
|
+
}
|
58
|
+
}
|
@@ -1,16 +1,13 @@
|
|
1
1
|
"use strict";
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
-
};
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
3
|
exports.MemoryVectorIndex = void 0;
|
7
|
-
const
|
8
|
-
const zod_1 = __importDefault(require("zod"));
|
4
|
+
const zod_1 = require("zod");
|
9
5
|
const cosineSimilarity_js_1 = require("../../util/cosineSimilarity.cjs");
|
10
|
-
const
|
11
|
-
|
12
|
-
|
13
|
-
|
6
|
+
const parseJSON_js_1 = require("../../util/parseJSON.cjs");
|
7
|
+
const jsonDataSchema = zod_1.z.array(zod_1.z.object({
|
8
|
+
id: zod_1.z.string(),
|
9
|
+
vector: zod_1.z.array(zod_1.z.number()),
|
10
|
+
data: zod_1.z.unknown(),
|
14
11
|
}));
|
15
12
|
/**
|
16
13
|
* A very simple vector index that stores all entries in memory. Useful when you only have
|
@@ -28,7 +25,7 @@ class MemoryVectorIndex {
|
|
28
25
|
}
|
29
26
|
static async deserialize({ serializedData, schema, }) {
|
30
27
|
// validate the outer structure:
|
31
|
-
const json =
|
28
|
+
const json = (0, parseJSON_js_1.parseJsonWithZod)(serializedData, jsonDataSchema);
|
32
29
|
if (schema != null) {
|
33
30
|
// when a schema is provided, validate all entries:
|
34
31
|
for (const entry of json) {
|
@@ -1,6 +1,6 @@
|
|
1
|
-
import
|
2
|
-
import z from "zod";
|
1
|
+
import { z } from "zod";
|
3
2
|
import { cosineSimilarity } from "../../util/cosineSimilarity.js";
|
3
|
+
import { parseJsonWithZod } from "../../util/parseJSON.js";
|
4
4
|
const jsonDataSchema = z.array(z.object({
|
5
5
|
id: z.string(),
|
6
6
|
vector: z.array(z.number()),
|
@@ -22,7 +22,7 @@ export class MemoryVectorIndex {
|
|
22
22
|
}
|
23
23
|
static async deserialize({ serializedData, schema, }) {
|
24
24
|
// validate the outer structure:
|
25
|
-
const json =
|
25
|
+
const json = parseJsonWithZod(serializedData, jsonDataSchema);
|
26
26
|
if (schema != null) {
|
27
27
|
// when a schema is provided, validate all entries:
|
28
28
|
for (const entry of json) {
|