UNPKG

typescript-runtime-schemas

Version:

A TypeScript schema generation tool that extracts Zod schemas from TypeScript source files with runtime validation support. Generate validation schemas directly from your existing TypeScript types with support for computed types and constraint-based valid

60 lines 3.72 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const utils_1 = require("./utils"); describe("Utils", () => { describe("isSourceCode", () => { it("should identify TypeScript source code", () => { expect((0, utils_1.isSourceCode)("type User = { name: string }")).toBe(true); expect((0, utils_1.isSourceCode)("interface User { name: string }")).toBe(true); expect((0, utils_1.isSourceCode)("export type User = { name: string }")).toBe(true); expect((0, utils_1.isSourceCode)('import { User } from "./types"')).toBe(true); expect((0, utils_1.isSourceCode)('declare module "test"')).toBe(true); expect((0, utils_1.isSourceCode)('const user = { name: "test" }')).toBe(true); expect((0, utils_1.isSourceCode)("let x = 5")).toBe(true); expect((0, utils_1.isSourceCode)("var y = 10")).toBe(true); expect((0, utils_1.isSourceCode)("function test() {}")).toBe(true); expect((0, utils_1.isSourceCode)("class User {}")).toBe(true); }); it("should identify file paths", () => { expect((0, utils_1.isSourceCode)("./src/types.ts")).toBe(false); expect((0, utils_1.isSourceCode)("../types.ts")).toBe(false); expect((0, utils_1.isSourceCode)("/home/user/types.ts")).toBe(false); expect((0, utils_1.isSourceCode)("src\\types.ts")).toBe(false); expect((0, utils_1.isSourceCode)("types.ts")).toBe(false); expect((0, utils_1.isSourceCode)("types.tsx")).toBe(false); }); it("should handle ambiguous cases", () => { // Short strings without keywords should be treated as paths if they look like paths expect((0, utils_1.isSourceCode)("src")).toBe(false); expect((0, utils_1.isSourceCode)("test")).toBe(false); // Strings with keywords should be treated as source code expect((0, utils_1.isSourceCode)("some text with type keyword")).toBe(true); }); }); describe("looksLikePath", () => { it("should identify file paths", () => { expect((0, utils_1.looksLikePath)("./src/types.ts")).toBe(true); expect((0, utils_1.looksLikePath)("../types.ts")).toBe(true); expect((0, utils_1.looksLikePath)("/home/user/types.ts")).toBe(true); expect((0, utils_1.looksLikePath)("src\\types.ts")).toBe(true); expect((0, utils_1.looksLikePath)("types.ts")).toBe(true); expect((0, utils_1.looksLikePath)("types.tsx")).toBe(true); expect((0, utils_1.looksLikePath)("src/utils")).toBe(true); expect((0, utils_1.looksLikePath)("utils\\test")).toBe(true); }); it("should identify non-paths", () => { expect((0, utils_1.looksLikePath)("type User = {\n name: string;\n age: number;\n}")).toBe(false); expect((0, utils_1.looksLikePath)("interface User {\n name: string;\n age: number;\n}")).toBe(false); expect((0, utils_1.looksLikePath)("export type User = {\n name: string;\n age: number;\n}")).toBe(false); }); it("should handle short strings without newlines", () => { expect((0, utils_1.looksLikePath)("src")).toBe(true); expect((0, utils_1.looksLikePath)("test")).toBe(true); expect((0, utils_1.looksLikePath)("utils")).toBe(true); }); it("should handle long strings with newlines", () => { expect((0, utils_1.looksLikePath)("this is a long string\nwith multiple lines\nand should not be considered a path")).toBe(false); }); }); }); //# sourceMappingURL=utils.test.js.map