Provides 8 MCP tools for Confluence Cloud: - confluence_list_spaces, confluence_create_space - confluence_search, confluence_get_page - confluence_create_page, confluence_update_page - confluence_get_comments, confluence_add_comment Uses Confluence REST API v2 with basic auth. Registered in Claude Code and mcp-proxy. Refs: CF-935 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
49 lines
1.5 KiB
TypeScript
49 lines
1.5 KiB
TypeScript
// @ts-ignore TS6133
|
|
import { expect, test } from "vitest";
|
|
|
|
import * as z from "zod/v3";
|
|
import { util } from "../helpers/util.js";
|
|
|
|
test("generics", () => {
|
|
async function stripOuter<TData extends z.ZodTypeAny>(schema: TData, data: unknown) {
|
|
return z
|
|
.object({
|
|
nested: schema, // as z.ZodTypeAny,
|
|
})
|
|
.transform((data) => {
|
|
return data.nested!;
|
|
})
|
|
.parse({ nested: data });
|
|
}
|
|
|
|
const result = stripOuter(z.object({ a: z.string() }), { a: "asdf" });
|
|
util.assertEqual<typeof result, Promise<{ a: string }>>(true);
|
|
});
|
|
|
|
// test("assignability", () => {
|
|
// const createSchemaAndParse = <K extends string, VS extends z.ZodString>(
|
|
// key: K,
|
|
// valueSchema: VS,
|
|
// data: unknown
|
|
// ) => {
|
|
// const schema = z.object({
|
|
// [key]: valueSchema,
|
|
// } as { [k in K]: VS });
|
|
// return { [key]: valueSchema };
|
|
// const parsed = schema.parse(data);
|
|
// return parsed;
|
|
// // const inferred: z.infer<z.ZodObject<{ [k in K]: VS }>> = parsed;
|
|
// // return inferred;
|
|
// };
|
|
// const parsed = createSchemaAndParse("foo", z.string(), { foo: "" });
|
|
// util.assertEqual<typeof parsed, { foo: string }>(true);
|
|
// });
|
|
|
|
test("nested no undefined", () => {
|
|
const inner = z.string().or(z.array(z.string()));
|
|
const outer = z.object({ inner });
|
|
type outerSchema = z.infer<typeof outer>;
|
|
z.util.assertEqual<outerSchema, { inner: string | string[] }>(true);
|
|
expect(outer.safeParse({ inner: undefined }).success).toEqual(false);
|
|
});
|