modelfusion 0.46.0 → 0.47.1
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 +23 -2
- package/index.cjs +0 -1
- package/index.d.ts +0 -1
- package/index.js +0 -1
- package/model-function/ModelFunctionPromise.cjs +37 -0
- package/model-function/ModelFunctionPromise.d.ts +18 -0
- package/model-function/ModelFunctionPromise.js +33 -0
- package/{prompt → model-function}/PromptFormat.d.ts +0 -5
- package/model-function/describe-image/describeImage.cjs +3 -2
- package/model-function/describe-image/describeImage.d.ts +1 -1
- package/model-function/describe-image/describeImage.js +3 -2
- package/model-function/embed/embed.cjs +5 -4
- package/model-function/embed/embed.d.ts +1 -1
- package/model-function/embed/embed.js +5 -4
- package/model-function/executeCall.cjs +3 -46
- package/model-function/executeCall.d.ts +5 -18
- package/model-function/executeCall.js +1 -43
- package/model-function/generate-image/ImageGenerationModel.d.ts +2 -0
- package/model-function/generate-image/ImageGenerationPromise.cjs +50 -0
- package/model-function/generate-image/ImageGenerationPromise.d.ts +22 -0
- package/model-function/generate-image/ImageGenerationPromise.js +46 -0
- package/model-function/generate-image/PromptFormatImageGenerationModel.cjs +44 -0
- package/model-function/generate-image/PromptFormatImageGenerationModel.d.ts +20 -0
- package/model-function/generate-image/PromptFormatImageGenerationModel.js +40 -0
- package/model-function/generate-image/generateImage.cjs +3 -2
- package/model-function/generate-image/generateImage.d.ts +2 -2
- package/model-function/generate-image/generateImage.js +3 -2
- package/model-function/generate-structure/fixJson.test.cjs +183 -181
- package/model-function/generate-structure/fixJson.test.js +181 -182
- package/model-function/generate-structure/generateStructure.cjs +3 -2
- package/model-function/generate-structure/generateStructure.d.ts +1 -1
- package/model-function/generate-structure/generateStructure.js +3 -2
- package/model-function/generate-structure/generateStructureOrText.cjs +3 -2
- package/model-function/generate-structure/generateStructureOrText.d.ts +1 -1
- package/model-function/generate-structure/generateStructureOrText.js +3 -2
- package/model-function/generate-structure/streamStructure.cjs +2 -7
- package/model-function/generate-structure/streamStructure.js +2 -4
- package/{prompt → model-function/generate-text}/AlpacaPromptFormat.d.ts +2 -2
- package/{prompt → model-function/generate-text}/Llama2PromptFormat.cjs +1 -1
- package/model-function/generate-text/Llama2PromptFormat.d.ts +13 -0
- package/{prompt → model-function/generate-text}/Llama2PromptFormat.js +1 -1
- package/{prompt → model-function/generate-text}/PromptFormatTextGenerationModel.d.ts +7 -7
- package/{prompt → model-function/generate-text}/PromptFormatTextStreamingModel.d.ts +6 -6
- package/model-function/generate-text/TextGenerationModel.d.ts +3 -3
- package/model-function/generate-text/TextGenerationPromptFormat.cjs +2 -0
- package/model-function/generate-text/TextGenerationPromptFormat.d.ts +11 -0
- package/model-function/generate-text/TextGenerationPromptFormat.js +1 -0
- package/{prompt → model-function/generate-text}/TextPromptFormat.cjs +1 -1
- package/{prompt → model-function/generate-text}/TextPromptFormat.d.ts +4 -4
- package/{prompt → model-function/generate-text}/TextPromptFormat.js +1 -1
- package/{prompt → model-function/generate-text}/VicunaPromptFormat.cjs +1 -1
- package/{prompt → model-function/generate-text}/VicunaPromptFormat.d.ts +3 -3
- package/{prompt → model-function/generate-text}/VicunaPromptFormat.js +1 -1
- package/model-function/generate-text/generateText.cjs +6 -3
- package/model-function/generate-text/generateText.d.ts +1 -1
- package/model-function/generate-text/generateText.js +6 -3
- package/{prompt → model-function/generate-text}/index.cjs +9 -4
- package/model-function/generate-text/index.d.ts +16 -0
- package/model-function/generate-text/index.js +16 -0
- package/{prompt/chat → model-function/generate-text}/trimChatPrompt.d.ts +1 -1
- package/model-function/index.cjs +3 -5
- package/model-function/index.d.ts +3 -5
- package/model-function/index.js +3 -5
- package/model-function/synthesize-speech/synthesizeSpeech.cjs +3 -2
- package/model-function/synthesize-speech/synthesizeSpeech.d.ts +1 -1
- package/model-function/synthesize-speech/synthesizeSpeech.js +3 -2
- package/model-function/transcribe-speech/transcribe.cjs +3 -2
- package/model-function/transcribe-speech/transcribe.d.ts +1 -1
- package/model-function/transcribe-speech/transcribe.js +3 -2
- package/model-provider/anthropic/AnthropicPromptFormat.cjs +1 -1
- package/model-provider/anthropic/AnthropicPromptFormat.d.ts +5 -5
- package/model-provider/anthropic/AnthropicPromptFormat.js +1 -1
- package/model-provider/anthropic/AnthropicTextGenerationModel.cjs +1 -1
- package/model-provider/anthropic/AnthropicTextGenerationModel.d.ts +3 -3
- package/model-provider/anthropic/AnthropicTextGenerationModel.js +1 -1
- package/model-provider/automatic1111/Automatic1111ImageGenerationModel.cjs +11 -0
- package/model-provider/automatic1111/Automatic1111ImageGenerationModel.d.ts +12 -12
- package/model-provider/automatic1111/Automatic1111ImageGenerationModel.js +11 -0
- package/model-provider/automatic1111/Automatic1111ImageGenerationPrompt.cjs +12 -0
- package/model-provider/automatic1111/Automatic1111ImageGenerationPrompt.d.ts +10 -0
- package/model-provider/automatic1111/Automatic1111ImageGenerationPrompt.js +8 -0
- package/model-provider/automatic1111/index.cjs +1 -0
- package/model-provider/automatic1111/index.d.ts +1 -0
- package/model-provider/automatic1111/index.js +1 -0
- package/model-provider/cohere/CohereTextGenerationModel.cjs +2 -2
- package/model-provider/cohere/CohereTextGenerationModel.d.ts +3 -3
- package/model-provider/cohere/CohereTextGenerationModel.js +2 -2
- package/model-provider/huggingface/HuggingFaceTextGenerationModel.cjs +2 -2
- package/model-provider/huggingface/HuggingFaceTextGenerationModel.d.ts +5 -5
- package/model-provider/huggingface/HuggingFaceTextGenerationModel.js +2 -2
- package/model-provider/llamacpp/LlamaCppTextGenerationModel.cjs +1 -1
- package/model-provider/llamacpp/LlamaCppTextGenerationModel.d.ts +3 -3
- package/model-provider/llamacpp/LlamaCppTextGenerationModel.js +1 -1
- package/model-provider/openai/OpenAIImageGenerationModel.cjs +8 -1
- package/model-provider/openai/OpenAIImageGenerationModel.d.ts +6 -3
- package/model-provider/openai/OpenAIImageGenerationModel.js +8 -1
- package/model-provider/openai/OpenAITextGenerationModel.cjs +2 -2
- package/model-provider/openai/OpenAITextGenerationModel.d.ts +3 -3
- package/model-provider/openai/OpenAITextGenerationModel.js +2 -2
- package/model-provider/openai/chat/OpenAIChatModel.cjs +1 -1
- package/model-provider/openai/chat/OpenAIChatModel.d.ts +3 -3
- package/model-provider/openai/chat/OpenAIChatModel.js +1 -1
- package/model-provider/openai/chat/OpenAIChatPromptFormat.cjs +1 -1
- package/model-provider/openai/chat/OpenAIChatPromptFormat.d.ts +5 -5
- package/model-provider/openai/chat/OpenAIChatPromptFormat.js +1 -1
- package/model-provider/stability/StabilityImageGenerationModel.cjs +11 -0
- package/model-provider/stability/StabilityImageGenerationModel.d.ts +15 -14
- package/model-provider/stability/StabilityImageGenerationModel.js +11 -0
- package/model-provider/stability/StabilityImageGenerationPrompt.cjs +12 -0
- package/model-provider/stability/StabilityImageGenerationPrompt.d.ts +9 -0
- package/model-provider/stability/StabilityImageGenerationPrompt.js +8 -0
- package/model-provider/stability/index.cjs +1 -0
- package/model-provider/stability/index.d.ts +1 -0
- package/model-provider/stability/index.js +1 -0
- package/package.json +4 -4
- package/util/isDeepEqualData.cjs +53 -0
- package/util/isDeepEqualData.d.ts +8 -0
- package/util/isDeepEqualData.js +49 -0
- package/util/isDeepEqualData.test.cjs +108 -0
- package/util/isDeepEqualData.test.d.ts +1 -0
- package/util/isDeepEqualData.test.js +103 -0
- package/prompt/Llama2PromptFormat.d.ts +0 -13
- package/prompt/index.d.ts +0 -11
- package/prompt/index.js +0 -11
- /package/{prompt → model-function}/PromptFormat.cjs +0 -0
- /package/{prompt → model-function}/PromptFormat.js +0 -0
- /package/{prompt → model-function/generate-text}/AlpacaPromptFormat.cjs +0 -0
- /package/{prompt → model-function/generate-text}/AlpacaPromptFormat.js +0 -0
- /package/{prompt/chat → model-function/generate-text}/ChatPrompt.cjs +0 -0
- /package/{prompt/chat → model-function/generate-text}/ChatPrompt.d.ts +0 -0
- /package/{prompt/chat → model-function/generate-text}/ChatPrompt.js +0 -0
- /package/{prompt → model-function/generate-text}/InstructionPrompt.cjs +0 -0
- /package/{prompt → model-function/generate-text}/InstructionPrompt.d.ts +0 -0
- /package/{prompt → model-function/generate-text}/InstructionPrompt.js +0 -0
- /package/{prompt → model-function/generate-text}/PromptFormatTextGenerationModel.cjs +0 -0
- /package/{prompt → model-function/generate-text}/PromptFormatTextGenerationModel.js +0 -0
- /package/{prompt → model-function/generate-text}/PromptFormatTextStreamingModel.cjs +0 -0
- /package/{prompt → model-function/generate-text}/PromptFormatTextStreamingModel.js +0 -0
- /package/{prompt/chat → model-function/generate-text}/trimChatPrompt.cjs +0 -0
- /package/{prompt/chat → model-function/generate-text}/trimChatPrompt.js +0 -0
- /package/{prompt/chat → model-function/generate-text}/validateChatPrompt.cjs +0 -0
- /package/{prompt/chat → model-function/generate-text}/validateChatPrompt.d.ts +0 -0
- /package/{prompt/chat → model-function/generate-text}/validateChatPrompt.js +0 -0
@@ -0,0 +1,20 @@
|
|
1
|
+
import { FunctionOptions } from "../../core/FunctionOptions.js";
|
2
|
+
import { PromptFormat } from "../PromptFormat.js";
|
3
|
+
import { ImageGenerationModel, ImageGenerationModelSettings } from "./ImageGenerationModel.js";
|
4
|
+
export declare class PromptFormatImageGenerationModel<PROMPT, MODEL_PROMPT, SETTINGS extends ImageGenerationModelSettings, MODEL extends ImageGenerationModel<MODEL_PROMPT, SETTINGS>> implements ImageGenerationModel<PROMPT, SETTINGS> {
|
5
|
+
readonly model: MODEL;
|
6
|
+
readonly promptFormat: PromptFormat<PROMPT, MODEL_PROMPT>;
|
7
|
+
constructor({ model, promptFormat, }: {
|
8
|
+
model: MODEL;
|
9
|
+
promptFormat: PromptFormat<PROMPT, MODEL_PROMPT>;
|
10
|
+
});
|
11
|
+
get modelInformation(): import("../ModelInformation.js").ModelInformation;
|
12
|
+
get settings(): SETTINGS;
|
13
|
+
doGenerateImage(prompt: PROMPT, options?: FunctionOptions): PromiseLike<{
|
14
|
+
response: unknown;
|
15
|
+
base64Image: string;
|
16
|
+
}>;
|
17
|
+
get settingsForEvent(): Partial<SETTINGS>;
|
18
|
+
withPromptFormat<INPUT_PROMPT>(promptFormat: PromptFormat<INPUT_PROMPT, PROMPT>): PromptFormatImageGenerationModel<INPUT_PROMPT, PROMPT, SETTINGS, this>;
|
19
|
+
withSettings(additionalSettings: Partial<SETTINGS>): this;
|
20
|
+
}
|
@@ -0,0 +1,40 @@
|
|
1
|
+
export class PromptFormatImageGenerationModel {
|
2
|
+
constructor({ model, promptFormat, }) {
|
3
|
+
Object.defineProperty(this, "model", {
|
4
|
+
enumerable: true,
|
5
|
+
configurable: true,
|
6
|
+
writable: true,
|
7
|
+
value: void 0
|
8
|
+
});
|
9
|
+
Object.defineProperty(this, "promptFormat", {
|
10
|
+
enumerable: true,
|
11
|
+
configurable: true,
|
12
|
+
writable: true,
|
13
|
+
value: void 0
|
14
|
+
});
|
15
|
+
this.model = model;
|
16
|
+
this.promptFormat = promptFormat;
|
17
|
+
}
|
18
|
+
get modelInformation() {
|
19
|
+
return this.model.modelInformation;
|
20
|
+
}
|
21
|
+
get settings() {
|
22
|
+
return this.model.settings;
|
23
|
+
}
|
24
|
+
doGenerateImage(prompt, options) {
|
25
|
+
const mappedPrompt = this.promptFormat.format(prompt);
|
26
|
+
return this.model.doGenerateImage(mappedPrompt, options);
|
27
|
+
}
|
28
|
+
get settingsForEvent() {
|
29
|
+
return this.model.settingsForEvent;
|
30
|
+
}
|
31
|
+
withPromptFormat(promptFormat) {
|
32
|
+
return new PromptFormatImageGenerationModel({ model: this, promptFormat });
|
33
|
+
}
|
34
|
+
withSettings(additionalSettings) {
|
35
|
+
return new PromptFormatImageGenerationModel({
|
36
|
+
model: this.model.withSettings(additionalSettings),
|
37
|
+
promptFormat: this.promptFormat,
|
38
|
+
});
|
39
|
+
}
|
40
|
+
}
|
@@ -2,6 +2,7 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.generateImage = void 0;
|
4
4
|
const executeCall_js_1 = require("../executeCall.cjs");
|
5
|
+
const ImageGenerationPromise_js_1 = require("./ImageGenerationPromise.cjs");
|
5
6
|
/**
|
6
7
|
* Generates a base64-encoded image using a prompt.
|
7
8
|
* The prompt format depends on the model.
|
@@ -18,7 +19,7 @@ const executeCall_js_1 = require("../executeCall.cjs");
|
|
18
19
|
* );
|
19
20
|
*/
|
20
21
|
function generateImage(model, prompt, options) {
|
21
|
-
return (0, executeCall_js_1.executeCall)({
|
22
|
+
return new ImageGenerationPromise_js_1.ImageGenerationPromise((0, executeCall_js_1.executeCall)({
|
22
23
|
functionType: "image-generation",
|
23
24
|
input: prompt,
|
24
25
|
model,
|
@@ -30,6 +31,6 @@ function generateImage(model, prompt, options) {
|
|
30
31
|
extractedValue: result.base64Image,
|
31
32
|
};
|
32
33
|
},
|
33
|
-
});
|
34
|
+
}));
|
34
35
|
}
|
35
36
|
exports.generateImage = generateImage;
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { FunctionOptions } from "../../core/FunctionOptions.js";
|
2
|
-
import { ModelFunctionPromise } from "../executeCall.js";
|
3
2
|
import { ImageGenerationModel, ImageGenerationModelSettings } from "./ImageGenerationModel.js";
|
3
|
+
import { ImageGenerationPromise } from "./ImageGenerationPromise.js";
|
4
4
|
/**
|
5
5
|
* Generates a base64-encoded image using a prompt.
|
6
6
|
* The prompt format depends on the model.
|
@@ -16,4 +16,4 @@ import { ImageGenerationModel, ImageGenerationModelSettings } from "./ImageGener
|
|
16
16
|
* ]
|
17
17
|
* );
|
18
18
|
*/
|
19
|
-
export declare function generateImage<PROMPT>(model: ImageGenerationModel<PROMPT, ImageGenerationModelSettings>, prompt: PROMPT, options?: FunctionOptions):
|
19
|
+
export declare function generateImage<PROMPT>(model: ImageGenerationModel<PROMPT, ImageGenerationModelSettings>, prompt: PROMPT, options?: FunctionOptions): ImageGenerationPromise;
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import { executeCall } from "../executeCall.js";
|
2
|
+
import { ImageGenerationPromise } from "./ImageGenerationPromise.js";
|
2
3
|
/**
|
3
4
|
* Generates a base64-encoded image using a prompt.
|
4
5
|
* The prompt format depends on the model.
|
@@ -15,7 +16,7 @@ import { executeCall } from "../executeCall.js";
|
|
15
16
|
* );
|
16
17
|
*/
|
17
18
|
export function generateImage(model, prompt, options) {
|
18
|
-
return executeCall({
|
19
|
+
return new ImageGenerationPromise(executeCall({
|
19
20
|
functionType: "image-generation",
|
20
21
|
input: prompt,
|
21
22
|
model,
|
@@ -27,5 +28,5 @@ export function generateImage(model, prompt, options) {
|
|
27
28
|
extractedValue: result.base64Image,
|
28
29
|
};
|
29
30
|
},
|
30
|
-
});
|
31
|
+
}));
|
31
32
|
}
|
@@ -1,186 +1,188 @@
|
|
1
1
|
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
const node_assert_1 = __importDefault(require("node:assert"));
|
3
7
|
const vitest_1 = require("vitest");
|
4
|
-
const
|
5
|
-
(0, vitest_1.
|
6
|
-
(0,
|
7
|
-
|
8
|
-
|
9
|
-
(0, vitest_1.
|
10
|
-
(0,
|
11
|
-
|
12
|
-
|
13
|
-
(0,
|
14
|
-
|
15
|
-
|
16
|
-
(0,
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
(0, vitest_1.
|
21
|
-
(0,
|
22
|
-
|
23
|
-
|
24
|
-
(0,
|
25
|
-
|
26
|
-
|
27
|
-
(0,
|
28
|
-
|
29
|
-
|
30
|
-
(0,
|
31
|
-
|
32
|
-
|
33
|
-
(0,
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
(0,
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
(0,
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
(0, vitest_1.
|
52
|
-
(0,
|
53
|
-
|
54
|
-
|
55
|
-
(0,
|
56
|
-
|
57
|
-
|
58
|
-
(0,
|
59
|
-
|
60
|
-
|
61
|
-
(0,
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
(0, vitest_1.
|
66
|
-
(0,
|
67
|
-
|
68
|
-
|
69
|
-
(0,
|
70
|
-
|
71
|
-
|
72
|
-
(0,
|
73
|
-
|
74
|
-
|
75
|
-
(0,
|
76
|
-
|
77
|
-
|
78
|
-
(0,
|
79
|
-
|
80
|
-
|
81
|
-
(0,
|
82
|
-
|
83
|
-
|
84
|
-
(0,
|
85
|
-
|
86
|
-
|
87
|
-
(0,
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
(0, vitest_1.
|
92
|
-
(0,
|
93
|
-
|
94
|
-
|
95
|
-
(0,
|
96
|
-
|
97
|
-
|
98
|
-
(0,
|
99
|
-
|
100
|
-
|
101
|
-
(0,
|
102
|
-
|
103
|
-
|
104
|
-
(0,
|
105
|
-
|
106
|
-
|
107
|
-
(0,
|
108
|
-
|
109
|
-
|
110
|
-
(0,
|
111
|
-
|
112
|
-
|
113
|
-
(0,
|
114
|
-
|
115
|
-
|
116
|
-
(0,
|
117
|
-
|
118
|
-
|
119
|
-
(0,
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
(0, vitest_1.
|
124
|
-
(0,
|
125
|
-
|
126
|
-
|
127
|
-
(0,
|
128
|
-
|
129
|
-
|
130
|
-
(0,
|
131
|
-
|
132
|
-
|
133
|
-
(0,
|
134
|
-
|
135
|
-
|
136
|
-
(0,
|
137
|
-
|
138
|
-
|
139
|
-
(0,
|
140
|
-
|
141
|
-
|
142
|
-
(0,
|
143
|
-
|
144
|
-
|
145
|
-
(0,
|
146
|
-
|
147
|
-
|
148
|
-
(0,
|
149
|
-
|
150
|
-
|
151
|
-
(0,
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
(0, vitest_1.
|
158
|
-
(0,
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
].join("\n"));
|
184
|
-
});
|
8
|
+
const fixJson_js_1 = require("./fixJson.cjs");
|
9
|
+
(0, vitest_1.test)("should handle empty input", () => {
|
10
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)(""), "");
|
11
|
+
});
|
12
|
+
(0, vitest_1.describe)("literals", () => {
|
13
|
+
(0, vitest_1.test)("should handle incomplete null", () => {
|
14
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)("nul"), "null");
|
15
|
+
});
|
16
|
+
(0, vitest_1.test)("should handle incomplete true", () => {
|
17
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)("t"), "true");
|
18
|
+
});
|
19
|
+
(0, vitest_1.test)("should handle incomplete false", () => {
|
20
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)("fals"), "false");
|
21
|
+
});
|
22
|
+
});
|
23
|
+
(0, vitest_1.describe)("number", () => {
|
24
|
+
(0, vitest_1.test)("should handle incomplete numbers", () => {
|
25
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)("12."), "12");
|
26
|
+
});
|
27
|
+
(0, vitest_1.test)("should handle numbers with dot", () => {
|
28
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)("12.2"), "12.2");
|
29
|
+
});
|
30
|
+
(0, vitest_1.test)("should handle negative numbers", () => {
|
31
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)("-12"), "-12");
|
32
|
+
});
|
33
|
+
(0, vitest_1.test)("should handle incomplete negative numbers", () => {
|
34
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)("-"), "");
|
35
|
+
});
|
36
|
+
(0, vitest_1.test)("should handle e-notation numbers", () => {
|
37
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)("2.5e"), "2.5");
|
38
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)("2.5e-"), "2.5");
|
39
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)("2.5e3"), "2.5e3");
|
40
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)("-2.5e3"), "-2.5e3");
|
41
|
+
});
|
42
|
+
(0, vitest_1.test)("should handle uppercase e-notation numbers", () => {
|
43
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)("2.5E"), "2.5");
|
44
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)("2.5E-"), "2.5");
|
45
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)("2.5E3"), "2.5E3");
|
46
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)("-2.5E3"), "-2.5E3");
|
47
|
+
});
|
48
|
+
(0, vitest_1.test)("should handle incomplete numbers", () => {
|
49
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)("12.e"), "12");
|
50
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)("12.34e"), "12.34");
|
51
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)("5e"), "5");
|
52
|
+
});
|
53
|
+
});
|
54
|
+
(0, vitest_1.describe)("string", () => {
|
55
|
+
(0, vitest_1.test)("should handle incomplete strings", () => {
|
56
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)('"abc'), '"abc"');
|
57
|
+
});
|
58
|
+
(0, vitest_1.test)("should handle escape sequences", () => {
|
59
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)('"value with \\"quoted\\" text and \\\\ escape'), '"value with \\"quoted\\" text and \\\\ escape"');
|
60
|
+
});
|
61
|
+
(0, vitest_1.test)("should handle incomplete escape sequences", () => {
|
62
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)('"value with \\'), '"value with "');
|
63
|
+
});
|
64
|
+
(0, vitest_1.test)("should handle unicode characters", () => {
|
65
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)('"value with unicode \u003C"'), '"value with unicode \u003C"');
|
66
|
+
});
|
67
|
+
});
|
68
|
+
(0, vitest_1.describe)("array", () => {
|
69
|
+
(0, vitest_1.test)("should handle incomplete array", () => {
|
70
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)("["), "[]");
|
71
|
+
});
|
72
|
+
(0, vitest_1.test)("should handle closing bracket after number in array", () => {
|
73
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)("[[1], [2"), "[[1], [2]]");
|
74
|
+
});
|
75
|
+
(0, vitest_1.test)("should handle closing bracket after string in array", () => {
|
76
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)(`[["1"], ["2`), `[["1"], ["2"]]`);
|
77
|
+
});
|
78
|
+
(0, vitest_1.test)("should handle closing bracket after literal in array", () => {
|
79
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)("[[false], [nu"), "[[false], [null]]");
|
80
|
+
});
|
81
|
+
(0, vitest_1.test)("should handle closing bracket after array in array", () => {
|
82
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)("[[[]], [[]"), "[[[]], [[]]]");
|
83
|
+
});
|
84
|
+
(0, vitest_1.test)("should handle closing bracket after object in array", () => {
|
85
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)("[[{}], [{"), "[[{}], [{}]]");
|
86
|
+
});
|
87
|
+
(0, vitest_1.test)("should handle trailing comma", () => {
|
88
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)("[1, "), "[1]");
|
89
|
+
});
|
90
|
+
(0, vitest_1.test)("should handle closing array", () => {
|
91
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)("[[], 123"), "[[], 123]");
|
92
|
+
});
|
93
|
+
});
|
94
|
+
(0, vitest_1.describe)("object", () => {
|
95
|
+
(0, vitest_1.test)("should handle keys without values", () => {
|
96
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)('{"key":'), "{}");
|
97
|
+
});
|
98
|
+
(0, vitest_1.test)("should handle closing brace after number in object", () => {
|
99
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)('{"a": {"b": 1}, "c": {"d": 2'), '{"a": {"b": 1}, "c": {"d": 2}}');
|
100
|
+
});
|
101
|
+
(0, vitest_1.test)("should handle closing brace after string in object", () => {
|
102
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)('{"a": {"b": "1"}, "c": {"d": 2'), '{"a": {"b": "1"}, "c": {"d": 2}}');
|
103
|
+
});
|
104
|
+
(0, vitest_1.test)("should handle closing brace after literal in object", () => {
|
105
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)('{"a": {"b": false}, "c": {"d": 2'), '{"a": {"b": false}, "c": {"d": 2}}');
|
106
|
+
});
|
107
|
+
(0, vitest_1.test)("should handle closing brace after array in object", () => {
|
108
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)('{"a": {"b": []}, "c": {"d": 2'), '{"a": {"b": []}, "c": {"d": 2}}');
|
109
|
+
});
|
110
|
+
(0, vitest_1.test)("should handle closing brace after object in object", () => {
|
111
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)('{"a": {"b": {}}, "c": {"d": 2'), '{"a": {"b": {}}, "c": {"d": 2}}');
|
112
|
+
});
|
113
|
+
(0, vitest_1.test)("should handle partial keys (first key)", () => {
|
114
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)('{"ke'), "{}");
|
115
|
+
});
|
116
|
+
(0, vitest_1.test)("should handle partial keys (second key)", () => {
|
117
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)('{"k1": 1, "k2'), '{"k1": 1}');
|
118
|
+
});
|
119
|
+
(0, vitest_1.test)("should handle partial keys with colon (second key)", () => {
|
120
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)('{"k1": 1, "k2":'), '{"k1": 1}');
|
121
|
+
});
|
122
|
+
(0, vitest_1.test)("should handle trailing whitespaces", () => {
|
123
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)('{"key": "value" '), '{"key": "value"}');
|
124
|
+
});
|
125
|
+
});
|
126
|
+
(0, vitest_1.describe)("nesting", () => {
|
127
|
+
(0, vitest_1.test)("should handle nested arrays with numbers", () => {
|
128
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)("[1, [2, 3, ["), "[1, [2, 3, []]]");
|
129
|
+
});
|
130
|
+
(0, vitest_1.test)("should handle nested arrays with literals", () => {
|
131
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)("[false, [true, ["), "[false, [true, []]]");
|
132
|
+
});
|
133
|
+
(0, vitest_1.test)("should handle nested objects", () => {
|
134
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)('{"key": {"subKey":'), '{"key": {}}');
|
135
|
+
});
|
136
|
+
(0, vitest_1.test)("should handle nested objects with numbers", () => {
|
137
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)('{"key": 123, "key2": {"subKey":'), '{"key": 123, "key2": {}}');
|
138
|
+
});
|
139
|
+
(0, vitest_1.test)("should handle nested objects with literals", () => {
|
140
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)('{"key": null, "key2": {"subKey":'), '{"key": null, "key2": {}}');
|
141
|
+
});
|
142
|
+
(0, vitest_1.test)("should handle arrays within objects", () => {
|
143
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)('{"key": [1, 2, {'), '{"key": [1, 2, {}]}');
|
144
|
+
});
|
145
|
+
(0, vitest_1.test)("should handle objects within arrays", () => {
|
146
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)('[1, 2, {"key": "value",'), '[1, 2, {"key": "value"}]');
|
147
|
+
});
|
148
|
+
(0, vitest_1.test)("should handle nested arrays and objects", () => {
|
149
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)('{"a": {"b": ["c", {"d": "e",'), '{"a": {"b": ["c", {"d": "e"}]}}');
|
150
|
+
});
|
151
|
+
(0, vitest_1.test)("should handle deeply nested structures", () => {
|
152
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)('{"a": {"b": {"c": {"d":'), '{"a": {"b": {"c": {}}}}');
|
153
|
+
});
|
154
|
+
(0, vitest_1.test)("should handle potential nested arrays or objects", () => {
|
155
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)('{"a": 1, "b": ['), '{"a": 1, "b": []}');
|
156
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)('{"a": 1, "b": {'), '{"a": 1, "b": {}}');
|
157
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)('{"a": 1, "b": "'), '{"a": 1, "b": ""}');
|
158
|
+
});
|
159
|
+
});
|
160
|
+
(0, vitest_1.describe)("regression", () => {
|
161
|
+
(0, vitest_1.test)("should handle complex nesting 1", () => {
|
162
|
+
node_assert_1.default.strictEqual((0, fixJson_js_1.fixJson)([
|
163
|
+
"{",
|
164
|
+
' "a": [',
|
165
|
+
" {",
|
166
|
+
' "a1": "v1",',
|
167
|
+
' "a2": "v2",',
|
168
|
+
` "a3": "v3"`,
|
169
|
+
" }",
|
170
|
+
" ],",
|
171
|
+
' "b": [',
|
172
|
+
" {",
|
173
|
+
' "b1": "n',
|
174
|
+
].join("\n")), [
|
175
|
+
"{",
|
176
|
+
' "a": [',
|
177
|
+
" {",
|
178
|
+
' "a1": "v1",',
|
179
|
+
' "a2": "v2",',
|
180
|
+
` "a3": "v3"`,
|
181
|
+
" }",
|
182
|
+
" ],",
|
183
|
+
' "b": [',
|
184
|
+
" {",
|
185
|
+
' "b1": "n"}]}',
|
186
|
+
].join("\n"));
|
185
187
|
});
|
186
188
|
});
|