jest-fuzzy 0.1.0

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.
Files changed (83) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +249 -0
  3. package/dist/cjs/config.d.ts +5 -0
  4. package/dist/cjs/config.d.ts.map +1 -0
  5. package/dist/cjs/config.js +38 -0
  6. package/dist/cjs/config.js.map +1 -0
  7. package/dist/cjs/index.d.ts +5 -0
  8. package/dist/cjs/index.d.ts.map +1 -0
  9. package/dist/cjs/index.js +17 -0
  10. package/dist/cjs/index.js.map +1 -0
  11. package/dist/cjs/matchers/index.d.ts +3 -0
  12. package/dist/cjs/matchers/index.d.ts.map +1 -0
  13. package/dist/cjs/matchers/index.js +8 -0
  14. package/dist/cjs/matchers/index.js.map +1 -0
  15. package/dist/cjs/matchers/toSatisfy.d.ts +3 -0
  16. package/dist/cjs/matchers/toSatisfy.d.ts.map +1 -0
  17. package/dist/cjs/matchers/toSatisfy.js +43 -0
  18. package/dist/cjs/matchers/toSatisfy.js.map +1 -0
  19. package/dist/cjs/matchers/toSemanticallyMatch.d.ts +3 -0
  20. package/dist/cjs/matchers/toSemanticallyMatch.d.ts.map +1 -0
  21. package/dist/cjs/matchers/toSemanticallyMatch.js +46 -0
  22. package/dist/cjs/matchers/toSemanticallyMatch.js.map +1 -0
  23. package/dist/cjs/providers/anthropic.d.ts +8 -0
  24. package/dist/cjs/providers/anthropic.d.ts.map +1 -0
  25. package/dist/cjs/providers/anthropic.js +94 -0
  26. package/dist/cjs/providers/anthropic.js.map +1 -0
  27. package/dist/cjs/providers/google.d.ts +8 -0
  28. package/dist/cjs/providers/google.d.ts.map +1 -0
  29. package/dist/cjs/providers/google.js +90 -0
  30. package/dist/cjs/providers/google.js.map +1 -0
  31. package/dist/cjs/providers/index.d.ts +8 -0
  32. package/dist/cjs/providers/index.d.ts.map +1 -0
  33. package/dist/cjs/providers/index.js +23 -0
  34. package/dist/cjs/providers/index.js.map +1 -0
  35. package/dist/cjs/providers/openai.d.ts +8 -0
  36. package/dist/cjs/providers/openai.d.ts.map +1 -0
  37. package/dist/cjs/providers/openai.js +97 -0
  38. package/dist/cjs/providers/openai.js.map +1 -0
  39. package/dist/cjs/types.d.ts +28 -0
  40. package/dist/cjs/types.d.ts.map +1 -0
  41. package/dist/cjs/types.js +3 -0
  42. package/dist/cjs/types.js.map +1 -0
  43. package/dist/esm/config.d.ts +5 -0
  44. package/dist/esm/config.d.ts.map +1 -0
  45. package/dist/esm/config.js +33 -0
  46. package/dist/esm/config.js.map +1 -0
  47. package/dist/esm/index.d.ts +5 -0
  48. package/dist/esm/index.d.ts.map +1 -0
  49. package/dist/esm/index.js +12 -0
  50. package/dist/esm/index.js.map +1 -0
  51. package/dist/esm/matchers/index.d.ts +3 -0
  52. package/dist/esm/matchers/index.d.ts.map +1 -0
  53. package/dist/esm/matchers/index.js +3 -0
  54. package/dist/esm/matchers/index.js.map +1 -0
  55. package/dist/esm/matchers/toSatisfy.d.ts +3 -0
  56. package/dist/esm/matchers/toSatisfy.d.ts.map +1 -0
  57. package/dist/esm/matchers/toSatisfy.js +40 -0
  58. package/dist/esm/matchers/toSatisfy.js.map +1 -0
  59. package/dist/esm/matchers/toSemanticallyMatch.d.ts +3 -0
  60. package/dist/esm/matchers/toSemanticallyMatch.d.ts.map +1 -0
  61. package/dist/esm/matchers/toSemanticallyMatch.js +43 -0
  62. package/dist/esm/matchers/toSemanticallyMatch.js.map +1 -0
  63. package/dist/esm/providers/anthropic.d.ts +8 -0
  64. package/dist/esm/providers/anthropic.d.ts.map +1 -0
  65. package/dist/esm/providers/anthropic.js +57 -0
  66. package/dist/esm/providers/anthropic.js.map +1 -0
  67. package/dist/esm/providers/google.d.ts +8 -0
  68. package/dist/esm/providers/google.d.ts.map +1 -0
  69. package/dist/esm/providers/google.js +53 -0
  70. package/dist/esm/providers/google.js.map +1 -0
  71. package/dist/esm/providers/index.d.ts +8 -0
  72. package/dist/esm/providers/index.d.ts.map +1 -0
  73. package/dist/esm/providers/index.js +17 -0
  74. package/dist/esm/providers/index.js.map +1 -0
  75. package/dist/esm/providers/openai.d.ts +8 -0
  76. package/dist/esm/providers/openai.d.ts.map +1 -0
  77. package/dist/esm/providers/openai.js +60 -0
  78. package/dist/esm/providers/openai.js.map +1 -0
  79. package/dist/esm/types.d.ts +28 -0
  80. package/dist/esm/types.d.ts.map +1 -0
  81. package/dist/esm/types.js +2 -0
  82. package/dist/esm/types.js.map +1 -0
  83. package/package.json +66 -0
@@ -0,0 +1,53 @@
1
+ export class GoogleProvider {
2
+ model;
3
+ constructor(model) {
4
+ this.model = model;
5
+ }
6
+ static async create() {
7
+ const apiKey = process.env.GOOGLE_API_KEY;
8
+ if (!apiKey) {
9
+ throw new Error("jest-fuzzy: Missing GOOGLE_API_KEY environment variable for gemini-3-flash-preview model");
10
+ }
11
+ try {
12
+ const module = await import("@google/generative-ai");
13
+ const { GoogleGenerativeAI, SchemaType } = module;
14
+ const genAI = new GoogleGenerativeAI(apiKey);
15
+ const model = genAI.getGenerativeModel({
16
+ model: "gemini-2.0-flash",
17
+ generationConfig: {
18
+ responseMimeType: "application/json",
19
+ responseSchema: {
20
+ type: SchemaType.OBJECT,
21
+ properties: {
22
+ verdict: {
23
+ type: SchemaType.BOOLEAN,
24
+ description: "true if the condition is satisfied, false otherwise",
25
+ },
26
+ explanation: {
27
+ type: SchemaType.STRING,
28
+ description: "Brief explanation of the reasoning",
29
+ },
30
+ },
31
+ required: ["verdict", "explanation"],
32
+ },
33
+ },
34
+ });
35
+ return new GoogleProvider(model);
36
+ }
37
+ catch (e) {
38
+ throw new Error("jest-fuzzy: To use gemini-3-flash-preview, install @google/generative-ai");
39
+ }
40
+ }
41
+ async judge(prompt) {
42
+ try {
43
+ const result = await this.model.generateContent(prompt);
44
+ const text = result.response.text();
45
+ const parsed = JSON.parse(text);
46
+ return { verdict: parsed.verdict, explanation: parsed.explanation };
47
+ }
48
+ catch (error) {
49
+ throw new Error(`jest-fuzzy: LLM API call failed: ${error instanceof Error ? error.message : String(error)}`);
50
+ }
51
+ }
52
+ }
53
+ //# sourceMappingURL=google.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google.js","sourceRoot":"","sources":["../../../src/providers/google.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,cAAc;IACjB,KAAK,CAAM;IAEnB,YAAoB,KAAU;QAC5B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM;QACjB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QAC1C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CACb,0FAA0F,CAC3F,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;YACrD,MAAM,EAAE,kBAAkB,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;YAClD,MAAM,KAAK,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;YAC7C,MAAM,KAAK,GAAG,KAAK,CAAC,kBAAkB,CAAC;gBACrC,KAAK,EAAE,kBAAkB;gBACzB,gBAAgB,EAAE;oBAChB,gBAAgB,EAAE,kBAAkB;oBACpC,cAAc,EAAE;wBACd,IAAI,EAAE,UAAU,CAAC,MAAM;wBACvB,UAAU,EAAE;4BACV,OAAO,EAAE;gCACP,IAAI,EAAE,UAAU,CAAC,OAAO;gCACxB,WAAW,EACT,qDAAqD;6BACxD;4BACD,WAAW,EAAE;gCACX,IAAI,EAAE,UAAU,CAAC,MAAM;gCACvB,WAAW,EAAE,oCAAoC;6BAClD;yBACF;wBACD,QAAQ,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC;qBACrC;iBACF;aACF,CAAC,CAAC;YACH,OAAO,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CACb,0EAA0E,CAC3E,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAAc;QACxB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YACxD,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA8C,CAAC;YAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;QACtE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,oCACE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CACvD,EAAE,CACH,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,8 @@
1
+ import type { ModelName, LLMProvider } from "../types.js";
2
+ import { AnthropicProvider } from "./anthropic.js";
3
+ import { GoogleProvider } from "./google.js";
4
+ import { OpenAIProvider } from "./openai.js";
5
+ export declare function createProvider(model: ModelName): Promise<LLMProvider>;
6
+ export { AnthropicProvider, GoogleProvider, OpenAIProvider };
7
+ export type { LLMProvider };
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,wBAAsB,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CAW3E;AAED,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC;AAC7D,YAAY,EAAE,WAAW,EAAE,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { AnthropicProvider } from "./anthropic.js";
2
+ import { GoogleProvider } from "./google.js";
3
+ import { OpenAIProvider } from "./openai.js";
4
+ export async function createProvider(model) {
5
+ switch (model) {
6
+ case "claude-haiku-4-5":
7
+ return AnthropicProvider.create();
8
+ case "gemini-3-flash-preview":
9
+ return GoogleProvider.create();
10
+ case "gpt-5-nano":
11
+ return OpenAIProvider.create();
12
+ default:
13
+ throw new Error(`jest-fuzzy: Unknown model: ${model}`);
14
+ }
15
+ }
16
+ export { AnthropicProvider, GoogleProvider, OpenAIProvider };
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAgB;IACnD,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,kBAAkB;YACrB,OAAO,iBAAiB,CAAC,MAAM,EAAE,CAAC;QACpC,KAAK,wBAAwB;YAC3B,OAAO,cAAc,CAAC,MAAM,EAAE,CAAC;QACjC,KAAK,YAAY;YACf,OAAO,cAAc,CAAC,MAAM,EAAE,CAAC;QACjC;YACE,MAAM,IAAI,KAAK,CAAC,8BAA8B,KAAK,EAAE,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC;AAED,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { LLMProvider, JudgmentResult } from "../types.js";
2
+ export declare class OpenAIProvider implements LLMProvider {
3
+ private client;
4
+ private constructor();
5
+ static create(): Promise<OpenAIProvider>;
6
+ judge(prompt: string): Promise<JudgmentResult>;
7
+ }
8
+ //# sourceMappingURL=openai.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../../src/providers/openai.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAkB/D,qBAAa,cAAe,YAAW,WAAW;IAChD,OAAO,CAAC,MAAM,CAAM;IAEpB,OAAO;WAIM,MAAM,IAAI,OAAO,CAAC,cAAc,CAAC;IAkBxC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;CA8BrD"}
@@ -0,0 +1,60 @@
1
+ const JUDGMENT_SCHEMA = {
2
+ type: "object",
3
+ properties: {
4
+ verdict: {
5
+ type: "boolean",
6
+ description: "true if the condition is satisfied, false otherwise",
7
+ },
8
+ explanation: {
9
+ type: "string",
10
+ description: "Brief explanation of the reasoning",
11
+ },
12
+ },
13
+ required: ["verdict", "explanation"],
14
+ additionalProperties: false,
15
+ };
16
+ export class OpenAIProvider {
17
+ client;
18
+ constructor(client) {
19
+ this.client = client;
20
+ }
21
+ static async create() {
22
+ const apiKey = process.env.OPENAI_API_KEY;
23
+ if (!apiKey) {
24
+ throw new Error("jest-fuzzy: Missing OPENAI_API_KEY environment variable for gpt-5-nano model");
25
+ }
26
+ try {
27
+ const module = await import("openai");
28
+ const OpenAI = module.default;
29
+ const client = new OpenAI({ apiKey });
30
+ return new OpenAIProvider(client);
31
+ }
32
+ catch (e) {
33
+ throw new Error("jest-fuzzy: To use gpt-5-nano, install openai");
34
+ }
35
+ }
36
+ async judge(prompt) {
37
+ try {
38
+ const response = await this.client.chat.completions.create({
39
+ model: "gpt-4o-mini",
40
+ messages: [{ role: "user", content: prompt }],
41
+ max_tokens: 1024,
42
+ response_format: {
43
+ type: "json_schema",
44
+ json_schema: {
45
+ name: "judgment",
46
+ strict: true,
47
+ schema: JUDGMENT_SCHEMA,
48
+ },
49
+ },
50
+ });
51
+ const content = response.choices[0].message.content ?? "{}";
52
+ const parsed = JSON.parse(content);
53
+ return { verdict: parsed.verdict, explanation: parsed.explanation };
54
+ }
55
+ catch (error) {
56
+ throw new Error(`jest-fuzzy: LLM API call failed: ${error instanceof Error ? error.message : String(error)}`);
57
+ }
58
+ }
59
+ }
60
+ //# sourceMappingURL=openai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../src/providers/openai.ts"],"names":[],"mappings":"AAEA,MAAM,eAAe,GAAG;IACtB,IAAI,EAAE,QAAiB;IACvB,UAAU,EAAE;QACV,OAAO,EAAE;YACP,IAAI,EAAE,SAAkB;YACxB,WAAW,EAAE,qDAAqD;SACnE;QACD,WAAW,EAAE;YACX,IAAI,EAAE,QAAiB;YACvB,WAAW,EAAE,oCAAoC;SAClD;KACF;IACD,QAAQ,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC;IACpC,oBAAoB,EAAE,KAAK;CAC5B,CAAC;AAEF,MAAM,OAAO,cAAc;IACjB,MAAM,CAAM;IAEpB,YAAoB,MAAW;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM;QACjB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QAC1C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CACb,8EAA8E,CAC/E,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;YACtC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;YAC9B,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;YACtC,OAAO,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAAc;QACxB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;gBACzD,KAAK,EAAE,aAAa;gBACpB,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;gBAC7C,UAAU,EAAE,IAAI;gBAChB,eAAe,EAAE;oBACf,IAAI,EAAE,aAAa;oBACnB,WAAW,EAAE;wBACX,IAAI,EAAE,UAAU;wBAChB,MAAM,EAAE,IAAI;wBACZ,MAAM,EAAE,eAAe;qBACxB;iBACF;aACF,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC;YAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAGhC,CAAC;YACF,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;QACtE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,oCACE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CACvD,EAAE,CACH,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,28 @@
1
+ export type ModelName = "claude-haiku-4-5" | "gemini-3-flash-preview" | "gpt-5-nano";
2
+ export interface JestFuzzyConfig {
3
+ model?: ModelName;
4
+ }
5
+ export interface SemanticMatchOptions {
6
+ threshold?: "strict" | "loose";
7
+ context?: string;
8
+ }
9
+ export interface JudgmentResult {
10
+ verdict: boolean;
11
+ explanation: string;
12
+ }
13
+ export interface LLMProvider {
14
+ judge(prompt: string): Promise<JudgmentResult>;
15
+ }
16
+ export interface MatcherResult {
17
+ pass: boolean;
18
+ message: () => string;
19
+ }
20
+ declare global {
21
+ namespace jest {
22
+ interface Matchers<R> {
23
+ toSemanticallyMatch(expected: string, options?: SemanticMatchOptions): Promise<R>;
24
+ toSatisfy(criteria: string): Promise<R>;
25
+ }
26
+ }
27
+ }
28
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GACjB,kBAAkB,GAClB,wBAAwB,GACxB,YAAY,CAAC;AAEjB,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CAChD;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,MAAM,CAAC;CACvB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,IAAI,CAAC;QACb,UAAU,QAAQ,CAAC,CAAC;YAClB,mBAAmB,CACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,CAAC,CAAC,CAAC;YACd,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;SACzC;KACF;CACF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,66 @@
1
+ {
2
+ "name": "jest-fuzzy",
3
+ "version": "0.1.0",
4
+ "description": "LLM-powered fuzzy matchers for Jest",
5
+ "main": "dist/cjs/index.js",
6
+ "module": "dist/esm/index.js",
7
+ "types": "dist/esm/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": {
11
+ "types": "./dist/esm/index.d.ts",
12
+ "default": "./dist/esm/index.js"
13
+ },
14
+ "require": {
15
+ "types": "./dist/cjs/index.d.ts",
16
+ "default": "./dist/cjs/index.js"
17
+ }
18
+ }
19
+ },
20
+ "files": [
21
+ "dist"
22
+ ],
23
+ "scripts": {
24
+ "build": "npm run build:esm && npm run build:cjs",
25
+ "build:esm": "tsc -p tsconfig.esm.json",
26
+ "build:cjs": "tsc -p tsconfig.cjs.json",
27
+ "test": "jest",
28
+ "prepublishOnly": "npm run build"
29
+ },
30
+ "keywords": [
31
+ "jest",
32
+ "testing",
33
+ "llm",
34
+ "semantic",
35
+ "matcher",
36
+ "ai"
37
+ ],
38
+ "license": "MIT",
39
+ "devDependencies": {
40
+ "@anthropic-ai/sdk": "^0.39.0",
41
+ "@google/generative-ai": "^0.21.0",
42
+ "@types/jest": "^29.5.14",
43
+ "@types/node": "^22.10.5",
44
+ "dotenv": "^16.4.7",
45
+ "jest": "^29.7.0",
46
+ "openai": "^4.77.3",
47
+ "ts-jest": "^29.2.5",
48
+ "typescript": "^5.7.2"
49
+ },
50
+ "peerDependencies": {
51
+ "@anthropic-ai/sdk": ">=0.24.0",
52
+ "@google/generative-ai": ">=0.10.0",
53
+ "openai": ">=4.0.0"
54
+ },
55
+ "peerDependenciesMeta": {
56
+ "@anthropic-ai/sdk": {
57
+ "optional": true
58
+ },
59
+ "@google/generative-ai": {
60
+ "optional": true
61
+ },
62
+ "openai": {
63
+ "optional": true
64
+ }
65
+ }
66
+ }