@copilotkit/shared
Version:
<div align="center"> <a href="https://copilotkit.ai" target="_blank"> <img src="https://github.com/copilotkit/copilotkit/raw/main/assets/banner.png" alt="CopilotKit Logo"> </a>
1 lines • 18.9 kB
Source Map (JSON)
{"version":3,"sources":["../../src/utils/json-schema.test.ts"],"sourcesContent":["import { z } from \"zod\";\nimport {\n convertJsonSchemaToZodSchema,\n actionParametersToJsonSchema,\n jsonSchemaToActionParameters,\n JSONSchema,\n} from \"../utils/json-schema\";\nimport { zodToJsonSchema } from \"zod-to-json-schema\";\nimport { Parameter } from \"../types\";\n\ndescribe(\"convertJsonSchemaToZodSchema\", () => {\n it(\"should convert a simple JSON schema to a Zod schema\", () => {\n const jsonSchema = {\n type: \"object\",\n properties: {\n name: { type: \"string\" },\n age: { type: \"number\" },\n },\n required: [\"name\", \"age\"],\n };\n\n const expectedSchema = z.object({\n name: z.string(),\n age: z.number(),\n });\n\n const result = convertJsonSchemaToZodSchema(jsonSchema, true);\n const resultSchemaJson = zodToJsonSchema(result);\n const expectedSchemaJson = zodToJsonSchema(expectedSchema);\n\n expect(resultSchemaJson).toStrictEqual(expectedSchemaJson);\n });\n\n it(\"should convert a JSON schema with nested objects to a Zod schema\", () => {\n const jsonSchema = {\n type: \"object\",\n properties: {\n name: { type: \"string\" },\n address: {\n type: \"object\",\n properties: {\n street: { type: \"string\" },\n city: { type: \"string\" },\n },\n required: [\"street\", \"city\"],\n },\n },\n required: [\"name\", \"address\"],\n };\n\n const expectedSchema = z.object({\n name: z.string(),\n address: z.object({\n street: z.string(),\n city: z.string(),\n }),\n });\n\n const result = convertJsonSchemaToZodSchema(jsonSchema, true);\n const resultSchemaJson = zodToJsonSchema(result);\n const expectedSchemaJson = zodToJsonSchema(expectedSchema);\n\n expect(resultSchemaJson).toStrictEqual(expectedSchemaJson);\n });\n\n it(\"should convert a JSON schema with arrays to a Zod schema\", () => {\n const jsonSchema = {\n type: \"object\",\n properties: {\n names: {\n type: \"array\",\n items: { type: \"string\" },\n },\n },\n required: [\"names\"],\n };\n\n const expectedSchema = z.object({\n names: z.array(z.string()),\n });\n\n const result = convertJsonSchemaToZodSchema(jsonSchema, true);\n const resultSchemaJson = zodToJsonSchema(result);\n const expectedSchemaJson = zodToJsonSchema(expectedSchema);\n\n expect(resultSchemaJson).toStrictEqual(expectedSchemaJson);\n });\n\n it(\"should convert a JSON schema with optional properties to a Zod schema\", () => {\n const jsonSchema = {\n type: \"object\",\n properties: {\n name: { type: \"string\" },\n age: { type: \"number\", required: false },\n },\n };\n\n const expectedSchema = z\n .object({\n name: z.string().optional(),\n age: z.number().optional(),\n })\n .optional();\n\n const result = convertJsonSchemaToZodSchema(jsonSchema, false);\n\n console.log(convertJsonSchemaToZodSchema(jsonSchema, false));\n\n const resultSchemaJson = zodToJsonSchema(result);\n const expectedSchemaJson = zodToJsonSchema(expectedSchema);\n\n expect(resultSchemaJson).toStrictEqual(expectedSchemaJson);\n });\n\n it(\"should convert a JSON schema with different types to a Zod schema\", () => {\n const jsonSchema = {\n type: \"object\",\n properties: {\n name: { type: \"string\" },\n age: { type: \"number\" },\n isAdmin: { type: \"boolean\" },\n },\n required: [\"name\", \"age\", \"isAdmin\"],\n };\n\n const expectedSchema = z.object({\n name: z.string(),\n age: z.number(),\n isAdmin: z.boolean(),\n });\n\n const result = convertJsonSchemaToZodSchema(jsonSchema, true);\n const resultSchemaJson = zodToJsonSchema(result);\n const expectedSchemaJson = zodToJsonSchema(expectedSchema);\n\n expect(resultSchemaJson).toStrictEqual(expectedSchemaJson);\n });\n\n it(\"should handle edge case where JSON schema has no properties\", () => {\n const jsonSchema = {\n type: \"object\",\n };\n\n const expectedSchema = z.object({});\n\n const result = convertJsonSchemaToZodSchema(jsonSchema, true);\n const resultSchemaJson = zodToJsonSchema(result);\n const expectedSchemaJson = zodToJsonSchema(expectedSchema);\n\n expect(resultSchemaJson).toStrictEqual(expectedSchemaJson);\n });\n\n it(\"should handle edge case where JSON schema has no required properties\", () => {\n const jsonSchema = {\n type: \"object\",\n properties: {\n name: { type: \"string\" },\n age: { type: \"number\" },\n },\n };\n\n const expectedSchema = z\n .object({\n name: z.string().optional(),\n age: z.number().optional(),\n })\n .optional();\n\n const result = convertJsonSchemaToZodSchema(jsonSchema, false);\n const resultSchemaJson = zodToJsonSchema(result);\n const expectedSchemaJson = zodToJsonSchema(expectedSchema);\n\n expect(resultSchemaJson).toStrictEqual(expectedSchemaJson);\n });\n});\n\ndescribe(\"jsonSchemaToActionParameters\", () => {\n it(\"should convert a simple JSONSchema to Parameter array\", () => {\n const jsonSchema: JSONSchema = {\n type: \"object\",\n properties: {\n name: { type: \"string\", description: \"User name\" },\n age: { type: \"number\", description: \"User age\" },\n },\n required: [\"name\"],\n };\n\n const expectedParameters: Parameter[] = [\n { name: \"name\", type: \"string\", description: \"User name\" },\n { name: \"age\", type: \"number\", description: \"User age\", required: false },\n ];\n\n const result = jsonSchemaToActionParameters(jsonSchema);\n expect(result).toEqual(expectedParameters);\n });\n\n it(\"should convert JSONSchema with enum to Parameter array\", () => {\n const jsonSchema: JSONSchema = {\n type: \"object\",\n properties: {\n role: { type: \"string\", enum: [\"admin\", \"user\", \"guest\"], description: \"User role\" },\n },\n required: [\"role\"],\n };\n\n const expectedParameters: Parameter[] = [\n { name: \"role\", type: \"string\", enum: [\"admin\", \"user\", \"guest\"], description: \"User role\" },\n ];\n\n const result = jsonSchemaToActionParameters(jsonSchema);\n expect(result).toEqual(expectedParameters);\n });\n\n it(\"should convert nested object JSONSchema to Parameter array\", () => {\n const jsonSchema: JSONSchema = {\n type: \"object\",\n properties: {\n user: {\n type: \"object\",\n properties: {\n name: { type: \"string\", description: \"User name\" },\n age: { type: \"number\", description: \"User age\" },\n },\n required: [\"name\"],\n description: \"User information\",\n },\n },\n required: [\"user\"],\n };\n\n const expectedParameters: Parameter[] = [\n {\n name: \"user\",\n type: \"object\",\n description: \"User information\",\n attributes: [\n { name: \"name\", type: \"string\", description: \"User name\" },\n { name: \"age\", type: \"number\", description: \"User age\", required: false },\n ],\n },\n ];\n\n const result = jsonSchemaToActionParameters(jsonSchema);\n expect(result).toEqual(expectedParameters);\n });\n\n it(\"should convert array JSONSchema to Parameter array\", () => {\n const jsonSchema: JSONSchema = {\n type: \"object\",\n properties: {\n tags: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"User tags\",\n },\n },\n required: [\"tags\"],\n };\n\n const expectedParameters: Parameter[] = [\n { name: \"tags\", type: \"string[]\", description: \"User tags\" },\n ];\n\n const result = jsonSchemaToActionParameters(jsonSchema);\n expect(result).toEqual(expectedParameters);\n });\n\n it(\"should convert object array JSONSchema to Parameter array\", () => {\n const jsonSchema: JSONSchema = {\n type: \"object\",\n properties: {\n addresses: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n street: { type: \"string\", description: \"Street name\" },\n city: { type: \"string\", description: \"City name\" },\n },\n required: [\"street\"],\n },\n description: \"User addresses\",\n },\n },\n required: [\"addresses\"],\n };\n\n const expectedParameters: Parameter[] = [\n {\n name: \"addresses\",\n type: \"object[]\",\n description: \"User addresses\",\n attributes: [\n { name: \"street\", type: \"string\", description: \"Street name\" },\n { name: \"city\", type: \"string\", description: \"City name\", required: false },\n ],\n },\n ];\n\n const result = jsonSchemaToActionParameters(jsonSchema);\n expect(result).toEqual(expectedParameters);\n });\n\n it(\"should handle boolean types\", () => {\n const jsonSchema: JSONSchema = {\n type: \"object\",\n properties: {\n isAdmin: { type: \"boolean\", description: \"Is user an admin\" },\n },\n required: [\"isAdmin\"],\n };\n\n const expectedParameters: Parameter[] = [\n { name: \"isAdmin\", type: \"boolean\", description: \"Is user an admin\" },\n ];\n\n const result = jsonSchemaToActionParameters(jsonSchema);\n expect(result).toEqual(expectedParameters);\n });\n\n it(\"should handle empty object schema\", () => {\n const jsonSchema: JSONSchema = {\n type: \"object\",\n };\n\n const expectedParameters: Parameter[] = [];\n\n const result = jsonSchemaToActionParameters(jsonSchema);\n expect(result).toEqual(expectedParameters);\n });\n\n it(\"should throw error for nested arrays\", () => {\n const jsonSchema: JSONSchema = {\n type: \"object\",\n properties: {\n nestedArray: {\n type: \"array\",\n items: {\n type: \"array\",\n items: { type: \"string\" },\n },\n description: \"Matrix of strings\",\n },\n },\n required: [\"nestedArray\"],\n };\n\n expect(() => jsonSchemaToActionParameters(jsonSchema)).toThrow(\n \"Nested arrays are not supported\",\n );\n });\n\n it(\"should ensure round-trip conversion works\", () => {\n const originalParameters: Parameter[] = [\n { name: \"name\", type: \"string\", description: \"User name\" },\n { name: \"age\", type: \"number\", description: \"User age\", required: false },\n { name: \"role\", type: \"string\", enum: [\"admin\", \"user\"], description: \"User role\" },\n {\n name: \"address\",\n type: \"object\",\n description: \"User address\",\n attributes: [\n { name: \"street\", type: \"string\", description: \"Street name\" },\n { name: \"city\", type: \"string\", description: \"City name\" },\n ],\n },\n {\n name: \"contacts\",\n type: \"object[]\",\n description: \"User contacts\",\n attributes: [\n { name: \"type\", type: \"string\", description: \"Contact type\" },\n { name: \"value\", type: \"string\", description: \"Contact value\" },\n ],\n },\n ];\n\n const jsonSchema = actionParametersToJsonSchema(originalParameters);\n const roundTripParameters = jsonSchemaToActionParameters(jsonSchema);\n\n expect(roundTripParameters).toEqual(originalParameters);\n });\n});\n"],"mappings":"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","names":[]}