@fairspec/agent 0.9.3 → 0.11.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.
- package/build/package.json +1 -1
- package/build/server.js +3 -3
- package/build/tools/data/validate.d.ts +29 -28
- package/build/tools/dataSchema/infer.d.ts +29 -28
- package/build/tools/dataSchema/infer.js +4 -4
- package/build/tools/dataSchema/infer.spec.js +10 -10
- package/build/tools/dataSchema/validate.d.ts +4 -4
- package/build/tools/dataset/infer.d.ts +56 -54
- package/build/tools/dataset/infer.spec.js +7 -7
- package/build/tools/dataset/validate.d.ts +29 -28
- package/build/tools/{dialect → fileDialect}/infer.d.ts +31 -30
- package/build/tools/fileDialect/infer.js +19 -0
- package/build/tools/fileDialect/infer.spec.js +140 -0
- package/build/tools/table/query.d.ts +28 -27
- package/build/tools/table/query.spec.js +7 -7
- package/build/tools/table/validate.d.ts +29 -28
- package/build/tools/tableSchema/infer.d.ts +52 -50
- package/build/tools/tableSchema/infer.js +5 -5
- package/build/tools/tableSchema/infer.spec.js +34 -34
- package/build/tools/tableSchema/validate.d.ts +4 -4
- package/package.json +2 -2
- package/build/tools/dialect/infer.js +0 -19
- package/build/tools/dialect/infer.spec.js +0 -140
- /package/build/tools/{dialect → fileDialect}/infer.spec.d.ts +0 -0
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { writeTempFile } from "@fairspec/library";
|
|
2
|
+
import { describe, expect, it } from "vitest";
|
|
3
|
+
import { inferFileDialectTool } from "./infer.js";
|
|
4
|
+
describe("inferFileDialectTool", () => {
|
|
5
|
+
it("validates tool structure", () => {
|
|
6
|
+
expect(inferFileDialectTool.id).toBe("infer-file-dialect");
|
|
7
|
+
expect(inferFileDialectTool.description).toBeTruthy();
|
|
8
|
+
expect(inferFileDialectTool.inputSchema).toBeTruthy();
|
|
9
|
+
expect(inferFileDialectTool.outputSchema).toBeTruthy();
|
|
10
|
+
expect(inferFileDialectTool.execute).toBeTypeOf("function");
|
|
11
|
+
});
|
|
12
|
+
it("infers CSV format", async () => {
|
|
13
|
+
const path = await writeTempFile("id,name,age\n1,alice,25\n2,bob,30");
|
|
14
|
+
const resource = { data: path, fileDialect: { format: "csv" } };
|
|
15
|
+
const result = await inferFileDialectTool.execute?.({
|
|
16
|
+
resource,
|
|
17
|
+
}, {});
|
|
18
|
+
expect.assert(result);
|
|
19
|
+
expect.assert(!("error" in result));
|
|
20
|
+
expect(result.fileDialect).toEqual({
|
|
21
|
+
format: "csv",
|
|
22
|
+
delimiter: ",",
|
|
23
|
+
headerRows: [1],
|
|
24
|
+
lineTerminator: "\n",
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
it("infers TSV format", async () => {
|
|
28
|
+
const path = await writeTempFile("id\tname\tage\n1\talice\t25\n2\tbob\t30");
|
|
29
|
+
const resource = { data: path, fileDialect: { format: "csv" } };
|
|
30
|
+
const result = await inferFileDialectTool.execute?.({
|
|
31
|
+
resource,
|
|
32
|
+
}, {});
|
|
33
|
+
expect.assert(result);
|
|
34
|
+
expect.assert(!("error" in result));
|
|
35
|
+
expect(result.fileDialect).toEqual({
|
|
36
|
+
format: "tsv",
|
|
37
|
+
headerRows: [1],
|
|
38
|
+
lineTerminator: "\n",
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
it("infers JSON format with array of objects", async () => {
|
|
42
|
+
const path = await writeTempFile(JSON.stringify([{ id: 1, name: "alice" }]));
|
|
43
|
+
const resource = { data: path, fileDialect: { format: "json" } };
|
|
44
|
+
const result = await inferFileDialectTool.execute?.({
|
|
45
|
+
resource,
|
|
46
|
+
}, {});
|
|
47
|
+
expect.assert(result);
|
|
48
|
+
expect.assert(!("error" in result));
|
|
49
|
+
expect(result.fileDialect).toEqual({
|
|
50
|
+
format: "json",
|
|
51
|
+
rowType: "object",
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
it("infers JSON format with array of arrays", async () => {
|
|
55
|
+
const path = await writeTempFile(JSON.stringify([
|
|
56
|
+
[1, "alice"],
|
|
57
|
+
[2, "bob"],
|
|
58
|
+
]));
|
|
59
|
+
const resource = { data: path, fileDialect: { format: "json" } };
|
|
60
|
+
const result = await inferFileDialectTool.execute?.({
|
|
61
|
+
resource,
|
|
62
|
+
}, {});
|
|
63
|
+
expect.assert(result);
|
|
64
|
+
expect.assert(!("error" in result));
|
|
65
|
+
expect(result.fileDialect?.format).toBe("json");
|
|
66
|
+
expect(result.fileDialect).toHaveProperty("rowType");
|
|
67
|
+
});
|
|
68
|
+
it("infers JSONL format", async () => {
|
|
69
|
+
const path = await writeTempFile('{"id":1,"name":"alice"}\n{"id":2,"name":"bob"}');
|
|
70
|
+
const resource = { data: path, fileDialect: { format: "jsonl" } };
|
|
71
|
+
const result = await inferFileDialectTool.execute?.({
|
|
72
|
+
resource,
|
|
73
|
+
}, {});
|
|
74
|
+
expect.assert(result);
|
|
75
|
+
expect.assert(!("error" in result));
|
|
76
|
+
expect(result.fileDialect?.format).toBe("jsonl");
|
|
77
|
+
});
|
|
78
|
+
it("infers CSV with different delimiter", async () => {
|
|
79
|
+
const path = await writeTempFile("id;name;age\n1;alice;25\n2;bob;30");
|
|
80
|
+
const resource = { data: path, fileDialect: { format: "csv" } };
|
|
81
|
+
const result = await inferFileDialectTool.execute?.({
|
|
82
|
+
resource,
|
|
83
|
+
}, {});
|
|
84
|
+
expect.assert(result);
|
|
85
|
+
expect.assert(!("error" in result));
|
|
86
|
+
expect(result.fileDialect).toMatchObject({
|
|
87
|
+
format: "csv",
|
|
88
|
+
delimiter: ";",
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
it("infers CSV without headers", async () => {
|
|
92
|
+
const path = await writeTempFile("1,alice,25\n2,bob,30");
|
|
93
|
+
const resource = { data: path, fileDialect: { format: "csv" } };
|
|
94
|
+
const result = await inferFileDialectTool.execute?.({
|
|
95
|
+
resource,
|
|
96
|
+
}, {});
|
|
97
|
+
expect.assert(result);
|
|
98
|
+
expect.assert(!("error" in result));
|
|
99
|
+
expect(result.fileDialect?.format).toBe("csv");
|
|
100
|
+
expect(result.fileDialect).toHaveProperty("delimiter");
|
|
101
|
+
});
|
|
102
|
+
it("returns undefined for inline data", async () => {
|
|
103
|
+
const resource = {
|
|
104
|
+
data: [{ id: 1 }],
|
|
105
|
+
};
|
|
106
|
+
const result = await inferFileDialectTool.execute?.({
|
|
107
|
+
resource,
|
|
108
|
+
}, {});
|
|
109
|
+
expect.assert(result);
|
|
110
|
+
expect.assert(!("error" in result));
|
|
111
|
+
expect(result.fileDialect).toBeUndefined();
|
|
112
|
+
});
|
|
113
|
+
it("respects sampleBytes option", async () => {
|
|
114
|
+
const largeData = Array.from({ length: 1000 }, (_, i) => `${i},row${i}`).join("\n");
|
|
115
|
+
const path = await writeTempFile(`id,name\n${largeData}`);
|
|
116
|
+
const resource = { data: path, fileDialect: { format: "csv" } };
|
|
117
|
+
const result = await inferFileDialectTool.execute?.({
|
|
118
|
+
resource,
|
|
119
|
+
options: { sampleBytes: 1000 },
|
|
120
|
+
}, {});
|
|
121
|
+
expect.assert(result);
|
|
122
|
+
expect.assert(!("error" in result));
|
|
123
|
+
expect(result.fileDialect?.format).toBe("csv");
|
|
124
|
+
});
|
|
125
|
+
it("infers dialect with provided format hint", async () => {
|
|
126
|
+
const path = await writeTempFile("id,name\n1,alice\n2,bob");
|
|
127
|
+
const resource = {
|
|
128
|
+
data: path,
|
|
129
|
+
fileDialect: { format: "csv" },
|
|
130
|
+
};
|
|
131
|
+
const result = await inferFileDialectTool.execute?.({
|
|
132
|
+
resource,
|
|
133
|
+
}, {});
|
|
134
|
+
expect.assert(result);
|
|
135
|
+
expect.assert(!("error" in result));
|
|
136
|
+
expect(result.fileDialect?.format).toBe("csv");
|
|
137
|
+
expect(result.fileDialect).toHaveProperty("delimiter");
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mZXIuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rvb2xzL2ZpbGVEaWFsZWN0L2luZmVyLnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ2pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUM3QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFakQsUUFBUSxDQUFDLHNCQUFzQixFQUFFLEdBQUcsRUFBRTtJQUNwQyxFQUFFLENBQUMsMEJBQTBCLEVBQUUsR0FBRyxFQUFFO1FBQ2xDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtRQUMxRCxNQUFNLENBQUMsb0JBQW9CLENBQUMsV0FBVyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUE7UUFDckQsTUFBTSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFBO1FBQ3JELE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQTtRQUN0RCxNQUFNLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBQzdELENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLG1CQUFtQixFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ2pDLE1BQU0sSUFBSSxHQUFHLE1BQU0sYUFBYSxDQUFDLG1DQUFtQyxDQUFDLENBQUE7UUFDckUsTUFBTSxRQUFRLEdBQWEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFBO1FBRXpFLE1BQU0sTUFBTSxHQUFHLE1BQU0sb0JB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RSxDQUNILENBQUE7UUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ3JCLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFBO1FBRW5DLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNoRCxDQUFDLENBQUMsQ0FBQTtJQUVGLEVBQUUsQ0FBQywwQ0FBMEMsRUFBRSxLQUFLLElBQUksRUFBRTtRQUN4RCxNQUFNLElBQUksR0FBRyxNQUFNLGFBQWEsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFBO1FBQzNELE1BQU0sUUFBUSxHQUFhO1lBQ3pCLElBQUksRUFBRSxJQUFJO1lBQ1YsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtTQUMvQixDQUFBO1FBRUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsQ0FDakQ7WUFDRSxRQUFRO1NBQ1QsRUFDRCxFQUFFLENBQ0gsQ0FBQTtRQUVELE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDckIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUE7UUFFbkMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQzlDLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQ3hELENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENzdkZpbGVEaWFsZWN0LCBSZXNvdXJjZSB9IGZyb20gXCJAZmFpcnNwZWMvbGlicmFyeVwiXG5pbXBvcnQgeyB3cml0ZVRlbXBGaWxlIH0gZnJvbSBcIkBmYWlyc3BlYy9saWJyYXJ5XCJcbmltcG9ydCB7IGRlc2NyaWJlLCBleHBlY3QsIGl0IH0gZnJvbSBcInZpdGVzdFwiXG5pbXBvcnQgeyBpbmZlckZpbGVEaWFsZWN0VG9vbCB9IGZyb20gXCIuL2luZmVyLnRzXCJcblxuZGVzY3JpYmUoXCJpbmZlckZpbGVEaWFsZWN0VG9vbFwiLCAoKSA9PiB7XG4gIGl0KFwidmFsaWRhdGVzIHRvb2wgc3RydWN0dXJlXCIsICgpID0+IHtcbiAgICBleHBlY3QoaW5mZXJGaWxlRGlhbGVjdFRvb2wuaWQpLnRvQmUoXCJpbmZlci1maWxlLWRpYWxlY3RcIilcbiAgICBleHBlY3QoaW5mZXJGaWxlRGlhbGVjdFRvb2wuZGVzY3JpcHRpb24pLnRvQmVUcnV0aHkoKVxuICAgIGV4cGVjdChpbmZlckZpbGVEaWFsZWN0VG9vbC5pbnB1dFNjaGVtYSkudG9CZVRydXRoeSgpXG4gICAgZXhwZWN0KGluZmVyRmlsZURpYWxlY3RUb29sLm91dHB1dFNjaGVtYSkudG9CZVRydXRoeSgpXG4gICAgZXhwZWN0KGluZmVyRmlsZURpYWxlY3RUb29sLmV4ZWN1dGUpLnRvQmVUeXBlT2YoXCJmdW5jdGlvblwiKVxuICB9KVxuXG4gIGl0KFwiaW5mZXJzIENTViBmb3JtYXRcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHBhdGggPSBhd2FpdCB3cml0ZVRlbXBGaWxlKFwiaWQsbmFtZSxhZ2VcXG4xLGFsaWNlLDI1XFxuMixib2IsMzBcIilcbiAgICBjb25zdCByZXNvdXJjZTogUmVzb3VyY2UgPSB7IGRhdGE6IHBhdGgsIGZpbGVEaWFsZWN0OiB7IGZvcm1hdDogXCJjc3ZcIiB9IH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGluZmVyRmlsZURpYWxlY3RUb29sLmV4ZWN1dGU/LihcbiAgICAgIHtcbiAgICAgICAgcmVzb3VyY2UsXG4gICAgICB9LFxuICAgICAge30sXG4gICAgKVxuXG4gICAgZXhwZWN0LmFzc2VydChyZXN1bHQpXG4gICAgZXhwZWN0LmFzc2VydCghKFwiZXJyb3JcIiBpbiByZXN1bHQpKVxuXG4gICAgZXhwZWN0KHJlc3VsdC5maWxlRGlhbGVjdCkudG9FcXVhbDxDc3ZGaWxlRGlhbGVjdD4oe1xuICAgICAgZm9ybWF0OiBcImNzdlwiLFxuICAgICAgZGVsaW1pdGVyOiBcIixcIixcbiAgICAgIGhlYWRlclJvd3M6IFsxXSxcbiAgICAgIGxpbmVUZXJtaW5hdG9yOiBcIlxcblwiLFxuICAgIH0pXG4gIH0pXG5cbiAgaXQoXCJpbmZlcnMgVFNWIGZvcm1hdFwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcGF0aCA9IGF3YWl0IHdyaXRlVGVtcEZpbGUoXCJpZFxcdG5hbWVcXHRhZ2VcXG4xXFx0YWxpY2VcXHQyNVxcbjJcXHRib2JcXHQzMFwiKVxuICAgIGNvbnN0IHJlc291cmNlOiBSZXNvdXJjZSA9IHsgZGF0YTogcGF0aCwgZmlsZURpYWxlY3Q6IHsgZm9ybWF0OiBcImNzdlwiIH0gfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgaW5mZXJGaWxlRGlhbGVjdFRvb2wuZXhlY3V0ZT8uKFxuICAgICAge1xuICAgICAgICByZXNvdXJjZSxcbiAgICAgIH0sXG4gICAgICB7fSxcbiAgICApXG5cbiAgICBleHBlY3QuYXNzZXJ0KHJlc3VsdClcbiAgICBleHBlY3QuYXNzZXJ0KCEoXCJlcnJvclwiIGluIHJlc3VsdCkpXG5cbiAgICBleHBlY3QocmVzdWx0LmZpbGVEaWFsZWN0KS50b0VxdWFsKHtcbiAgICAgIGZvcm1hdDogXCJ0c3ZcIixcbiAgICAgIGhlYWRlclJvd3M6IFsxXSxcbiAgICAgIGxpbmVUZXJtaW5hdG9yOiBcIlxcblwiLFxuICAgIH0pXG4gIH0pXG5cbiAgaXQoXCJpbmZlcnMgSlNPTiBmb3JtYXQgd2l0aCBhcnJheSBvZiBvYmplY3RzXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBwYXRoID0gYXdhaXQgd3JpdGVUZW1wRmlsZShKU09OLnN0cmluZ2lmeShbeyBpZDogMSwgbmFtZTogXCJhbGljZVwiIH1dKSlcbiAgICBjb25zdCByZXNvdXJjZTogUmVzb3VyY2UgPSB7IGRhdGE6IHBhdGgsIGZpbGVEaWFsZWN0OiB7IGZvcm1hdDogXCJqc29uXCIgfSB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBpbmZlckZpbGVEaWFsZWN0VG9vbC5leGVjdXRlPy4oXG4gICAgICB7XG4gICAgICAgIHJlc291cmNlLFxuICAgICAgfSxcbiAgICAgIHt9LFxuICAgIClcblxuICAgIGV4cGVjdC5hc3NlcnQocmVzdWx0KVxuICAgIGV4cGVjdC5hc3NlcnQoIShcImVycm9yXCIgaW4gcmVzdWx0KSlcblxuICAgIGV4cGVjdChyZXN1bHQuZmlsZURpYWxlY3QpLnRvRXF1YWwoe1xuICAgICAgZm9ybWF0OiBcImpzb25cIixcbiAgICAgIHJvd1R5cGU6IFwib2JqZWN0XCIsXG4gICAgfSlcbiAgfSlcblxuICBpdChcImluZmVycyBKU09OIGZvcm1hdCB3aXRoIGFycmF5IG9mIGFycmF5c1wiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcGF0aCA9IGF3YWl0IHdyaXRlVGVtcEZpbGUoXG4gICAgICBKU09OLnN0cmluZ2lmeShbXG4gICAgICAgIFsxLCBcImFsaWNlXCJdLFxuICAgICAgICBbMiwgXCJib2JcIl0sXG4gICAgICBdKSxcbiAgICApXG4gICAgY29uc3QgcmVzb3VyY2U6IFJlc291cmNlID0geyBkYXRhOiBwYXRoLCBmaWxlRGlhbGVjdDogeyBmb3JtYXQ6IFwianNvblwiIH0gfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgaW5mZXJGaWxlRGlhbGVjdFRvb2wuZXhlY3V0ZT8uKFxuICAgICAge1xuICAgICAgICByZXNvdXJjZSxcbiAgICAgIH0sXG4gICAgICB7fSxcbiAgICApXG5cbiAgICBleHBlY3QuYXNzZXJ0KHJlc3VsdClcbiAgICBleHBlY3QuYXNzZXJ0KCEoXCJlcnJvclwiIGluIHJlc3VsdCkpXG5cbiAgICBleHBlY3QocmVzdWx0LmZpbGVEaWFsZWN0Py5mb3JtYXQpLnRvQmUoXCJqc29uXCIpXG4gICAgZXhwZWN0KHJlc3VsdC5maWxlRGlhbGVjdCkudG9IYXZlUHJvcGVydHkoXCJyb3dUeXBlXCIpXG4gIH0pXG5cbiAgaXQoXCJpbmZlcnMgSlNPTkwgZm9ybWF0XCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBwYXRoID0gYXdhaXQgd3JpdGVUZW1wRmlsZShcbiAgICAgICd7XCJpZFwiOjEsXCJuYW1lXCI6XCJhbGljZVwifVxcbntcImlkXCI6MixcIm5hbWVcIjpcImJvYlwifScsXG4gICAgKVxuICAgIGNvbnN0IHJlc291cmNlOiBSZXNvdXJjZSA9IHsgZGF0YTogcGF0aCwgZmlsZURpYWxlY3Q6IHsgZm9ybWF0OiBcImpzb25sXCIgfSB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBpbmZlckZpbGVEaWFsZWN0VG9vbC5leGVjdXRlPy4oXG4gICAgICB7XG4gICAgICAgIHJlc291cmNlLFxuICAgICAgfSxcbiAgICAgIHt9LFxuICAgIClcblxuICAgIGV4cGVjdC5hc3NlcnQocmVzdWx0KVxuICAgIGV4cGVjdC5hc3NlcnQoIShcImVycm9yXCIgaW4gcmVzdWx0KSlcblxuICAgIGV4cGVjdChyZXN1bHQuZmlsZURpYWxlY3Q/LmZvcm1hdCkudG9CZShcImpzb25sXCIpXG4gIH0pXG5cbiAgaXQoXCJpbmZlcnMgQ1NWIHdpdGggZGlmZmVyZW50IGRlbGltaXRlclwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcGF0aCA9IGF3YWl0IHdyaXRlVGVtcEZpbGUoXCJpZDtuYW1lO2FnZVxcbjE7YWxpY2U7MjVcXG4yO2JvYjszMFwiKVxuICAgIGNvbnN0IHJlc291cmNlOiBSZXNvdXJjZSA9IHsgZGF0YTogcGF0aCwgZmlsZURpYWxlY3Q6IHsgZm9ybWF0OiBcImNzdlwiIH0gfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgaW5mZXJGaWxlRGlhbGVjdFRvb2wuZXhlY3V0ZT8uKFxuICAgICAge1xuICAgICAgICByZXNvdXJjZSxcbiAgICAgIH0sXG4gICAgICB7fSxcbiAgICApXG5cbiAgICBleHBlY3QuYXNzZXJ0KHJlc3VsdClcbiAgICBleHBlY3QuYXNzZXJ0KCEoXCJlcnJvclwiIGluIHJlc3VsdCkpXG5cbiAgICBleHBlY3QocmVzdWx0LmZpbGVEaWFsZWN0KS50b01hdGNoT2JqZWN0KHtcbiAgICAgIGZvcm1hdDogXCJjc3ZcIixcbiAgICAgIGRlbGltaXRlcjogXCI7XCIsXG4gICAgfSlcbiAgfSlcblxuICBpdChcImluZmVycyBDU1Ygd2l0aG91dCBoZWFkZXJzXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBwYXRoID0gYXdhaXQgd3JpdGVUZW1wRmlsZShcIjEsYWxpY2UsMjVcXG4yLGJvYiwzMFwiKVxuICAgIGNvbnN0IHJlc291cmNlOiBSZXNvdXJjZSA9IHsgZGF0YTogcGF0aCwgZmlsZURpYWxlY3Q6IHsgZm9ybWF0OiBcImNzdlwiIH0gfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgaW5mZXJGaWxlRGlhbGVjdFRvb2wuZXhlY3V0ZT8uKFxuICAgICAge1xuICAgICAgICByZXNvdXJjZSxcbiAgICAgIH0sXG4gICAgICB7fSxcbiAgICApXG5cbiAgICBleHBlY3QuYXNzZXJ0KHJlc3VsdClcbiAgICBleHBlY3QuYXNzZXJ0KCEoXCJlcnJvclwiIGluIHJlc3VsdCkpXG5cbiAgICBleHBlY3QocmVzdWx0LmZpbGVEaWFsZWN0Py5mb3JtYXQpLnRvQmUoXCJjc3ZcIilcbiAgICBleHBlY3QocmVzdWx0LmZpbGVEaWFsZWN0KS50b0hhdmVQcm9wZXJ0eShcImRlbGltaXRlclwiKVxuICB9KVxuXG4gIGl0KFwicmV0dXJucyB1bmRlZmluZWQgZm9yIGlubGluZSBkYXRhXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCByZXNvdXJjZTogUmVzb3VyY2UgPSB7XG4gICAgICBkYXRhOiBbeyBpZDogMSB9XSxcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBpbmZlckZpbGVEaWFsZWN0VG9vbC5leGVjdXRlPy4oXG4gICAgICB7XG4gICAgICAgIHJlc291cmNlLFxuICAgICAgfSxcbiAgICAgIHt9LFxuICAgIClcblxuICAgIGV4cGVjdC5hc3NlcnQocmVzdWx0KVxuICAgIGV4cGVjdC5hc3NlcnQoIShcImVycm9yXCIgaW4gcmVzdWx0KSlcblxuICAgIGV4cGVjdChyZXN1bHQuZmlsZURpYWxlY3QpLnRvQmVVbmRlZmluZWQoKVxuICB9KVxuXG4gIGl0KFwicmVzcGVjdHMgc2FtcGxlQnl0ZXMgb3B0aW9uXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBsYXJnZURhdGEgPSBBcnJheS5mcm9tKFxuICAgICAgeyBsZW5ndGg6IDEwMDAgfSxcbiAgICAgIChfLCBpKSA9PiBgJHtpfSxyb3cke2l9YCxcbiAgICApLmpvaW4oXCJcXG5cIilcbiAgICBjb25zdCBwYXRoID0gYXdhaXQgd3JpdGVUZW1wRmlsZShgaWQsbmFtZVxcbiR7bGFyZ2VEYXRhfWApXG4gICAgY29uc3QgcmVzb3VyY2U6IFJlc291cmNlID0geyBkYXRhOiBwYXRoLCBmaWxlRGlhbGVjdDogeyBmb3JtYXQ6IFwiY3N2XCIgfSB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBpbmZlckZpbGVEaWFsZWN0VG9vbC5leGVjdXRlPy4oXG4gICAgICB7XG4gICAgICAgIHJlc291cmNlLFxuICAgICAgICBvcHRpb25zOiB7IHNhbXBsZUJ5dGVzOiAxMDAwIH0sXG4gICAgICB9LFxuICAgICAge30sXG4gICAgKVxuXG4gICAgZXhwZWN0LmFzc2VydChyZXN1bHQpXG4gICAgZXhwZWN0LmFzc2VydCghKFwiZXJyb3JcIiBpbiByZXN1bHQpKVxuXG4gICAgZXhwZWN0KHJlc3VsdC5maWxlRGlhbGVjdD8uZm9ybWF0KS50b0JlKFwiY3N2XCIpXG4gIH0pXG5cbiAgaXQoXCJpbmZlcnMgZGlhbGVjdCB3aXRoIHByb3ZpZGVkIGZvcm1hdCBoaW50XCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBwYXRoID0gYXdhaXQgd3JpdGVUZW1wRmlsZShcImlkLG5hbWVcXG4xLGFsaWNlXFxuMixib2JcIilcbiAgICBjb25zdCByZXNvdXJjZTogUmVzb3VyY2UgPSB7XG4gICAgICBkYXRhOiBwYXRoLFxuICAgICAgZmlsZURpYWxlY3Q6IHsgZm9ybWF0OiBcImNzdlwiIH0sXG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgaW5mZXJGaWxlRGlhbGVjdFRvb2wuZXhlY3V0ZT8uKFxuICAgICAge1xuICAgICAgICByZXNvdXJjZSxcbiAgICAgIH0sXG4gICAgICB7fSxcbiAgICApXG5cbiAgICBleHBlY3QuYXNzZXJ0KHJlc3VsdClcbiAgICBleHBlY3QuYXNzZXJ0KCEoXCJlcnJvclwiIGluIHJlc3VsdCkpXG5cbiAgICBleHBlY3QocmVzdWx0LmZpbGVEaWFsZWN0Py5mb3JtYXQpLnRvQmUoXCJjc3ZcIilcbiAgICBleHBlY3QocmVzdWx0LmZpbGVEaWFsZWN0KS50b0hhdmVQcm9wZXJ0eShcImRlbGltaXRlclwiKVxuICB9KVxufSlcbiJdfQ==
|
|
@@ -197,7 +197,11 @@ export declare const queryTableTool: import("@mastra/core/tools").Tool<{
|
|
|
197
197
|
data?: unknown;
|
|
198
198
|
name?: string | undefined;
|
|
199
199
|
textual?: boolean | undefined;
|
|
200
|
-
|
|
200
|
+
integrity?: {
|
|
201
|
+
type: "md5" | "sha1" | "sha256" | "sha512";
|
|
202
|
+
hash: string;
|
|
203
|
+
} | undefined;
|
|
204
|
+
fileDialect?: string | {
|
|
201
205
|
format: "csv";
|
|
202
206
|
$schema?: string | undefined;
|
|
203
207
|
title?: string | undefined;
|
|
@@ -287,18 +291,15 @@ export declare const queryTableTool: import("@mastra/core/tools").Tool<{
|
|
|
287
291
|
title?: string | undefined;
|
|
288
292
|
description?: string | undefined;
|
|
289
293
|
} | undefined;
|
|
290
|
-
integrity?: {
|
|
291
|
-
type: "md5" | "sha1" | "sha256" | "sha512";
|
|
292
|
-
hash: string;
|
|
293
|
-
} | undefined;
|
|
294
294
|
dataSchema?: string | Record<string, unknown> | undefined;
|
|
295
295
|
tableSchema?: string | {
|
|
296
296
|
$schema?: string | undefined;
|
|
297
297
|
title?: string | undefined;
|
|
298
298
|
description?: string | undefined;
|
|
299
299
|
required?: string[] | undefined;
|
|
300
|
+
allRequired?: boolean | undefined;
|
|
300
301
|
properties?: Record<string, {
|
|
301
|
-
type: "boolean";
|
|
302
|
+
type: "boolean" | ["boolean", "null"] | ["null", "boolean"];
|
|
302
303
|
title?: string | undefined;
|
|
303
304
|
description?: string | undefined;
|
|
304
305
|
rdfType?: string | undefined;
|
|
@@ -314,7 +315,7 @@ export declare const queryTableTool: import("@mastra/core/tools").Tool<{
|
|
|
314
315
|
trueValues?: string[] | undefined;
|
|
315
316
|
falseValues?: string[] | undefined;
|
|
316
317
|
} | {
|
|
317
|
-
type: "integer";
|
|
318
|
+
type: "integer" | ["integer", "null"] | ["null", "integer"];
|
|
318
319
|
title?: string | undefined;
|
|
319
320
|
description?: string | undefined;
|
|
320
321
|
rdfType?: string | undefined;
|
|
@@ -335,7 +336,7 @@ export declare const queryTableTool: import("@mastra/core/tools").Tool<{
|
|
|
335
336
|
withText?: boolean | undefined;
|
|
336
337
|
format?: "" | undefined;
|
|
337
338
|
} | {
|
|
338
|
-
type: "integer";
|
|
339
|
+
type: "integer" | ["integer", "null"] | ["null", "integer"];
|
|
339
340
|
format: "categorical";
|
|
340
341
|
title?: string | undefined;
|
|
341
342
|
description?: string | undefined;
|
|
@@ -361,7 +362,7 @@ export declare const queryTableTool: import("@mastra/core/tools").Tool<{
|
|
|
361
362
|
})[] | undefined;
|
|
362
363
|
withOrder?: boolean | undefined;
|
|
363
364
|
} | {
|
|
364
|
-
type: "number";
|
|
365
|
+
type: "number" | ["number", "null"] | ["null", "number"];
|
|
365
366
|
title?: string | undefined;
|
|
366
367
|
description?: string | undefined;
|
|
367
368
|
rdfType?: string | undefined;
|
|
@@ -383,7 +384,7 @@ export declare const queryTableTool: import("@mastra/core/tools").Tool<{
|
|
|
383
384
|
withText?: boolean | undefined;
|
|
384
385
|
format?: "" | undefined;
|
|
385
386
|
} | {
|
|
386
|
-
type: "string";
|
|
387
|
+
type: "string" | ["string", "null"] | ["null", "string"];
|
|
387
388
|
format: "list";
|
|
388
389
|
title?: string | undefined;
|
|
389
390
|
description?: string | undefined;
|
|
@@ -404,7 +405,7 @@ export declare const queryTableTool: import("@mastra/core/tools").Tool<{
|
|
|
404
405
|
minItems?: number | undefined;
|
|
405
406
|
maxItems?: number | undefined;
|
|
406
407
|
} | {
|
|
407
|
-
type: "string";
|
|
408
|
+
type: "string" | ["string", "null"] | ["null", "string"];
|
|
408
409
|
format: "base64";
|
|
409
410
|
title?: string | undefined;
|
|
410
411
|
description?: string | undefined;
|
|
@@ -421,7 +422,7 @@ export declare const queryTableTool: import("@mastra/core/tools").Tool<{
|
|
|
421
422
|
maxLength?: number | undefined;
|
|
422
423
|
pattern?: string | undefined;
|
|
423
424
|
} | {
|
|
424
|
-
type: "string";
|
|
425
|
+
type: "string" | ["string", "null"] | ["null", "string"];
|
|
425
426
|
format: "hex";
|
|
426
427
|
title?: string | undefined;
|
|
427
428
|
description?: string | undefined;
|
|
@@ -438,7 +439,7 @@ export declare const queryTableTool: import("@mastra/core/tools").Tool<{
|
|
|
438
439
|
maxLength?: number | undefined;
|
|
439
440
|
pattern?: string | undefined;
|
|
440
441
|
} | {
|
|
441
|
-
type: "string";
|
|
442
|
+
type: "string" | ["string", "null"] | ["null", "string"];
|
|
442
443
|
format: "email";
|
|
443
444
|
title?: string | undefined;
|
|
444
445
|
description?: string | undefined;
|
|
@@ -455,7 +456,7 @@ export declare const queryTableTool: import("@mastra/core/tools").Tool<{
|
|
|
455
456
|
maxLength?: number | undefined;
|
|
456
457
|
pattern?: string | undefined;
|
|
457
458
|
} | {
|
|
458
|
-
type: "string";
|
|
459
|
+
type: "string" | ["string", "null"] | ["null", "string"];
|
|
459
460
|
format: "url";
|
|
460
461
|
title?: string | undefined;
|
|
461
462
|
description?: string | undefined;
|
|
@@ -472,7 +473,7 @@ export declare const queryTableTool: import("@mastra/core/tools").Tool<{
|
|
|
472
473
|
maxLength?: number | undefined;
|
|
473
474
|
pattern?: string | undefined;
|
|
474
475
|
} | {
|
|
475
|
-
type: "string";
|
|
476
|
+
type: "string" | ["string", "null"] | ["null", "string"];
|
|
476
477
|
format: "date-time";
|
|
477
478
|
title?: string | undefined;
|
|
478
479
|
description?: string | undefined;
|
|
@@ -490,7 +491,7 @@ export declare const queryTableTool: import("@mastra/core/tools").Tool<{
|
|
|
490
491
|
pattern?: string | undefined;
|
|
491
492
|
temporalFormat?: string | undefined;
|
|
492
493
|
} | {
|
|
493
|
-
type: "string";
|
|
494
|
+
type: "string" | ["string", "null"] | ["null", "string"];
|
|
494
495
|
format: "date";
|
|
495
496
|
title?: string | undefined;
|
|
496
497
|
description?: string | undefined;
|
|
@@ -508,7 +509,7 @@ export declare const queryTableTool: import("@mastra/core/tools").Tool<{
|
|
|
508
509
|
pattern?: string | undefined;
|
|
509
510
|
temporalFormat?: string | undefined;
|
|
510
511
|
} | {
|
|
511
|
-
type: "string";
|
|
512
|
+
type: "string" | ["string", "null"] | ["null", "string"];
|
|
512
513
|
format: "time";
|
|
513
514
|
title?: string | undefined;
|
|
514
515
|
description?: string | undefined;
|
|
@@ -526,7 +527,7 @@ export declare const queryTableTool: import("@mastra/core/tools").Tool<{
|
|
|
526
527
|
pattern?: string | undefined;
|
|
527
528
|
temporalFormat?: string | undefined;
|
|
528
529
|
} | {
|
|
529
|
-
type: "string";
|
|
530
|
+
type: "string" | ["string", "null"] | ["null", "string"];
|
|
530
531
|
format: "duration";
|
|
531
532
|
title?: string | undefined;
|
|
532
533
|
description?: string | undefined;
|
|
@@ -543,7 +544,7 @@ export declare const queryTableTool: import("@mastra/core/tools").Tool<{
|
|
|
543
544
|
maxLength?: number | undefined;
|
|
544
545
|
pattern?: string | undefined;
|
|
545
546
|
} | {
|
|
546
|
-
type: "string";
|
|
547
|
+
type: "string" | ["string", "null"] | ["null", "string"];
|
|
547
548
|
format: "wkt";
|
|
548
549
|
title?: string | undefined;
|
|
549
550
|
description?: string | undefined;
|
|
@@ -560,7 +561,7 @@ export declare const queryTableTool: import("@mastra/core/tools").Tool<{
|
|
|
560
561
|
maxLength?: number | undefined;
|
|
561
562
|
pattern?: string | undefined;
|
|
562
563
|
} | {
|
|
563
|
-
type: "string";
|
|
564
|
+
type: "string" | ["string", "null"] | ["null", "string"];
|
|
564
565
|
format: "wkb";
|
|
565
566
|
title?: string | undefined;
|
|
566
567
|
description?: string | undefined;
|
|
@@ -577,7 +578,7 @@ export declare const queryTableTool: import("@mastra/core/tools").Tool<{
|
|
|
577
578
|
maxLength?: number | undefined;
|
|
578
579
|
pattern?: string | undefined;
|
|
579
580
|
} | {
|
|
580
|
-
type: "string";
|
|
581
|
+
type: "string" | ["string", "null"] | ["null", "string"];
|
|
581
582
|
title?: string | undefined;
|
|
582
583
|
description?: string | undefined;
|
|
583
584
|
rdfType?: string | undefined;
|
|
@@ -594,7 +595,7 @@ export declare const queryTableTool: import("@mastra/core/tools").Tool<{
|
|
|
594
595
|
pattern?: string | undefined;
|
|
595
596
|
format?: "" | undefined;
|
|
596
597
|
} | {
|
|
597
|
-
type: "string";
|
|
598
|
+
type: "string" | ["string", "null"] | ["null", "string"];
|
|
598
599
|
format: "categorical";
|
|
599
600
|
title?: string | undefined;
|
|
600
601
|
description?: string | undefined;
|
|
@@ -616,7 +617,7 @@ export declare const queryTableTool: import("@mastra/core/tools").Tool<{
|
|
|
616
617
|
})[] | undefined;
|
|
617
618
|
withOrder?: boolean | undefined;
|
|
618
619
|
} | {
|
|
619
|
-
type: "string";
|
|
620
|
+
type: "string" | ["string", "null"] | ["null", "string"];
|
|
620
621
|
format: "decimal";
|
|
621
622
|
title?: string | undefined;
|
|
622
623
|
description?: string | undefined;
|
|
@@ -641,7 +642,7 @@ export declare const queryTableTool: import("@mastra/core/tools").Tool<{
|
|
|
641
642
|
groupChar?: string | undefined;
|
|
642
643
|
withText?: boolean | undefined;
|
|
643
644
|
} | {
|
|
644
|
-
type: "array";
|
|
645
|
+
type: "array" | ["array", "null"] | ["null", "array"];
|
|
645
646
|
title?: string | undefined;
|
|
646
647
|
description?: string | undefined;
|
|
647
648
|
rdfType?: string | undefined;
|
|
@@ -671,7 +672,7 @@ export declare const queryTableTool: import("@mastra/core/tools").Tool<{
|
|
|
671
672
|
minItems?: number | undefined;
|
|
672
673
|
uniqueItems?: boolean | undefined;
|
|
673
674
|
} | {
|
|
674
|
-
type: "object";
|
|
675
|
+
type: "object" | ["object", "null"] | ["null", "object"];
|
|
675
676
|
format: "geojson";
|
|
676
677
|
title?: string | undefined;
|
|
677
678
|
description?: string | undefined;
|
|
@@ -702,7 +703,7 @@ export declare const queryTableTool: import("@mastra/core/tools").Tool<{
|
|
|
702
703
|
dependentSchemas?: unknown;
|
|
703
704
|
required?: unknown;
|
|
704
705
|
} | {
|
|
705
|
-
type: "object";
|
|
706
|
+
type: "object" | ["object", "null"] | ["null", "object"];
|
|
706
707
|
format: "topojson";
|
|
707
708
|
title?: string | undefined;
|
|
708
709
|
description?: string | undefined;
|
|
@@ -733,7 +734,7 @@ export declare const queryTableTool: import("@mastra/core/tools").Tool<{
|
|
|
733
734
|
dependentSchemas?: unknown;
|
|
734
735
|
required?: unknown;
|
|
735
736
|
} | {
|
|
736
|
-
type: "object";
|
|
737
|
+
type: "object" | ["object", "null"] | ["null", "object"];
|
|
737
738
|
title?: string | undefined;
|
|
738
739
|
description?: string | undefined;
|
|
739
740
|
rdfType?: string | undefined;
|
|
@@ -12,7 +12,7 @@ describe("queryTableTool", () => {
|
|
|
12
12
|
it("queries table with SELECT statement", async () => {
|
|
13
13
|
const csvContent = "id,name,age\n1,alice,25\n2,bob,30\n3,carol,28";
|
|
14
14
|
const csvPath = await writeTempFile(csvContent, { format: "csv" });
|
|
15
|
-
const resource = { data: csvPath,
|
|
15
|
+
const resource = { data: csvPath, fileDialect: { format: "csv" } };
|
|
16
16
|
const result = await queryTableTool.execute?.({
|
|
17
17
|
resource,
|
|
18
18
|
query: "SELECT * FROM self WHERE age > 25",
|
|
@@ -27,7 +27,7 @@ describe("queryTableTool", () => {
|
|
|
27
27
|
it("queries table with column selection", async () => {
|
|
28
28
|
const csvContent = "id,name,age,city\n1,alice,25,NYC\n2,bob,30,LA\n3,carol,28,SF";
|
|
29
29
|
const csvPath = await writeTempFile(csvContent, { format: "csv" });
|
|
30
|
-
const resource = { data: csvPath,
|
|
30
|
+
const resource = { data: csvPath, fileDialect: { format: "csv" } };
|
|
31
31
|
const result = await queryTableTool.execute?.({
|
|
32
32
|
resource,
|
|
33
33
|
query: "SELECT name, city FROM self",
|
|
@@ -44,7 +44,7 @@ describe("queryTableTool", () => {
|
|
|
44
44
|
it("queries table with ORDER BY clause", async () => {
|
|
45
45
|
const csvContent = "id,name,score\n1,alice,85\n2,bob,90\n3,carol,88";
|
|
46
46
|
const csvPath = await writeTempFile(csvContent, { format: "csv" });
|
|
47
|
-
const resource = { data: csvPath,
|
|
47
|
+
const resource = { data: csvPath, fileDialect: { format: "csv" } };
|
|
48
48
|
const result = await queryTableTool.execute?.({
|
|
49
49
|
resource,
|
|
50
50
|
query: "SELECT * FROM self ORDER BY score DESC",
|
|
@@ -60,7 +60,7 @@ describe("queryTableTool", () => {
|
|
|
60
60
|
it("queries table with aggregation", async () => {
|
|
61
61
|
const csvContent = "id,name,score\n1,alice,85\n2,bob,90\n3,carol,88";
|
|
62
62
|
const csvPath = await writeTempFile(csvContent, { format: "csv" });
|
|
63
|
-
const resource = { data: csvPath,
|
|
63
|
+
const resource = { data: csvPath, fileDialect: { format: "csv" } };
|
|
64
64
|
const result = await queryTableTool.execute?.({
|
|
65
65
|
resource,
|
|
66
66
|
query: "SELECT COUNT(*) as count, AVG(score) as avg_score FROM self",
|
|
@@ -75,7 +75,7 @@ describe("queryTableTool", () => {
|
|
|
75
75
|
it("queries table with WHERE and LIMIT", async () => {
|
|
76
76
|
const csvContent = "id,name,age\n1,alice,25\n2,bob,30\n3,carol,28\n4,dave,35\n5,eve,22";
|
|
77
77
|
const csvPath = await writeTempFile(csvContent, { format: "csv" });
|
|
78
|
-
const resource = { data: csvPath,
|
|
78
|
+
const resource = { data: csvPath, fileDialect: { format: "csv" } };
|
|
79
79
|
const result = await queryTableTool.execute?.({
|
|
80
80
|
resource,
|
|
81
81
|
query: "SELECT * FROM self WHERE age >= 25 ORDER BY age LIMIT 2",
|
|
@@ -124,7 +124,7 @@ describe("queryTableTool", () => {
|
|
|
124
124
|
it("returns all records when querying without filters", async () => {
|
|
125
125
|
const csvContent = "id,name\n1,alice\n2,bob\n3,carol";
|
|
126
126
|
const csvPath = await writeTempFile(csvContent, { format: "csv" });
|
|
127
|
-
const resource = { data: csvPath,
|
|
127
|
+
const resource = { data: csvPath, fileDialect: { format: "csv" } };
|
|
128
128
|
const result = await queryTableTool.execute?.({
|
|
129
129
|
resource,
|
|
130
130
|
query: "SELECT * FROM self",
|
|
@@ -135,4 +135,4 @@ describe("queryTableTool", () => {
|
|
|
135
135
|
expect(result.records.length).toBe(3);
|
|
136
136
|
});
|
|
137
137
|
});
|
|
138
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rvb2xzL3RhYmxlL3F1ZXJ5LnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ2pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRTNDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUU7SUFDOUIsRUFBRSxDQUFDLDBCQUEwQixFQUFFLEdBQUcsRUFBRTtRQUNsQyxNQUFNLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQTtRQUM3QyxNQUFNLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFBO1FBQy9DLE1BQU0sQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUE7UUFDL0MsTUFBTSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQTtRQUNoRCxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUN2RCxDQUFDLENBQUMsQ0FBQTtJQUVGLEVBQUUsQ0FBQyxxQ0FBcUMsRUFBRSxLQUFLLElBQUksRUFBRTtRQUNuRCxNQUFNLFVBQVUsR0FBRywrQ0FBK0MsQ0FBQTtRQUNsRSxNQUFNLE9BQU8sR0FBRyxNQUFNLGFBQWEsQ0FBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQTtRQUNsRSxNQUFNLFFBQVEsR0FBYSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFB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TSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ2hELE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN2QyxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSZXNvdXJjZSB9IGZyb20gXCJAZmFpcnNwZWMvbGlicmFyeVwiXG5pbXBvcnQgeyB3cml0ZVRlbXBGaWxlIH0gZnJvbSBcIkBmYWlyc3BlYy9saWJyYXJ5XCJcbmltcG9ydCB7IGRlc2NyaWJlLCBleHBlY3QsIGl0IH0gZnJvbSBcInZpdGVzdFwiXG5pbXBvcnQgeyBxdWVyeVRhYmxlVG9vbCB9IGZyb20gXCIuL3F1ZXJ5LnRzXCJcblxuZGVzY3JpYmUoXCJxdWVyeVRhYmxlVG9vbFwiLCAoKSA9PiB7XG4gIGl0KFwidmFsaWRhdGVzIHRvb2wgc3RydWN0dXJlXCIsICgpID0+IHtcbiAgICBleHBlY3QocXVlcnlUYWJsZVRvb2wuaWQpLnRvQmUoXCJxdWVyeS10YWJsZVwiKVxuICAgIGV4cGVjdChxdWVyeVRhYmxlVG9vbC5kZXNjcmlwdGlvbikudG9CZVRydXRoeSgpXG4gICAgZXhwZWN0KHF1ZXJ5VGFibGVUb29sLmlucHV0U2NoZW1hKS50b0JlVHJ1dGh5KClcbiAgICBleHBlY3QocXVlcnlUYWJsZVRvb2wub3V0cHV0U2NoZW1hKS50b0JlVHJ1dGh5KClcbiAgICBleHBlY3QocXVlcnlUYWJsZVRvb2wuZXhlY3V0ZSkudG9CZVR5cGVPZihcImZ1bmN0aW9uXCIpXG4gIH0pXG5cbiAgaXQoXCJxdWVyaWVzIHRhYmxlIHdpdGggU0VMRUNUIHN0YXRlbWVudFwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgY3N2Q29udGVudCA9IFwiaWQsbmFtZSxhZ2VcXG4xLGFsaWNlLDI1XFxuMixib2IsMzBcXG4zLGNhcm9sLDI4XCJcbiAgICBjb25zdCBjc3ZQYXRoID0gYXdhaXQgd3JpdGVUZW1wRmlsZShjc3ZDb250ZW50LCB7IGZvcm1hdDogXCJjc3ZcIiB9KVxuICAgIGNvbnN0IHJlc291cmNlOiBSZXNvdXJjZSA9IHsgZGF0YTogY3N2UGF0aCwgZGlhbGVjdDogeyBmb3JtYXQ6IFwiY3N2XCIgfSB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBxdWVyeVRhYmxlVG9vbC5leGVjdXRlPy4oXG4gICAgICB7XG4gICAgICAgIHJlc291cmNlLFxuICAgICAgICBxdWVyeTogXCJTRUxFQ1QgKiBGUk9NIHNlbGYgV0hFUkUgYWdlID4gMjVcIixcbiAgICAgIH0sXG4gICAgICB7fSxcbiAgICApXG5cbiAgICBleHBlY3QuYXNzZXJ0KHJlc3VsdClcbiAgICBleHBlY3QuYXNzZXJ0KCEoXCJlcnJvclwiIGluIHJlc3VsdCkpXG5cbiAgICBleHBlY3QoQXJyYXkuaXNBcnJheShyZXN1bHQucmVjb3JkcykpLnRvQmUodHJ1ZSlcbiAgICBleHBlY3QocmVzdWx0LnJlY29yZHMubGVuZ3RoKS50b0JlKDIpXG4gICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzKS50b0NvbnRhaW5FcXVhbCh7IGlkOiAyLCBuYW1lOiBcImJvYlwiLCBhZ2U6IDMwIH0pXG4gICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzKS50b0NvbnRhaW5FcXVhbCh7IGlkOiAzLCBuYW1lOiBcImNhcm9sXCIsIGFnZTogMjggfSlcbiAgfSlcblxuICBpdChcInF1ZXJpZXMgdGFibGUgd2l0aCBjb2x1bW4gc2VsZWN0aW9uXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBjc3ZDb250ZW50ID1cbiAgICAgIFwiaWQsbmFtZSxhZ2UsY2l0eVxcbjEsYWxpY2UsMjUsTllDXFxuMixib2IsMzAsTEFcXG4zLGNhcm9sLDI4LFNGXCJcbiAgICBjb25zdCBjc3ZQYXRoID0gYXdhaXQgd3JpdGVUZW1wRmlsZShjc3ZDb250ZW50LCB7IGZvcm1hdDogXCJjc3ZcIiB9KVxuICAgIGNvbnN0IHJlc291cmNlOiBSZXNvdXJjZSA9IHsgZGF0YTogY3N2UGF0aCwgZGlhbGVjdDogeyBmb3JtYXQ6IFwiY3N2XCIgfSB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBxdWVyeVRhYmxlVG9vbC5leGVjdXRlPy4oXG4gICAgICB7XG4gICAgICAgIHJlc291cmNlLFxuICAgICAgICBxdWVyeTogXCJTRUxFQ1QgbmFtZSwgY2l0eSBGUk9NIHNlbGZcIixcbiAgICAgIH0sXG4gICAgICB7fSxcbiAgICApXG5cbiAgICBleHBlY3QuYXNzZXJ0KHJlc3VsdClcbiAgICBleHBlY3QuYXNzZXJ0KCEoXCJlcnJvclwiIGluIHJlc3VsdCkpXG5cbiAgICBleHBlY3QoQXJyYXkuaXNBcnJheShyZXN1bHQucmVjb3JkcykpLnRvQmUodHJ1ZSlcbiAgICBleHBlY3QocmVzdWx0LnJlY29yZHMubGVuZ3RoKS50b0JlKDMpXG4gICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzWzBdKS50b0hhdmVQcm9wZXJ0eShcIm5hbWVcIilcbiAgICBleHBlY3QocmVzdWx0LnJlY29yZHNbMF0pLnRvSGF2ZVByb3BlcnR5KFwiY2l0eVwiKVxuICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkc1swXSkubm90LnRvSGF2ZVByb3BlcnR5KFwiaWRcIilcbiAgICBleHBlY3QocmVzdWx0LnJlY29yZHNbMF0pLm5vdC50b0hhdmVQcm9wZXJ0eShcImFnZVwiKVxuICB9KVxuXG4gIGl0KFwicXVlcmllcyB0YWJsZSB3aXRoIE9SREVSIEJZIGNsYXVzZVwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgY3N2Q29udGVudCA9IFwiaWQsbmFtZSxzY29yZVxcbjEsYWxpY2UsODVcXG4yLGJvYiw5MFxcbjMsY2Fyb2wsODhcIlxuICAgIGNvbnN0IGNzdlBhdGggPSBhd2FpdCB3cml0ZVRlbXBGaWxlKGNzdkNvbnRlbnQsIHsgZm9ybWF0OiBcImNzdlwiIH0pXG4gICAgY29uc3QgcmVzb3VyY2U6IFJlc291cmNlID0geyBkYXRhOiBjc3ZQYXRoLCBkaWFsZWN0OiB7IGZvcm1hdDogXCJjc3ZcIiB9IH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHF1ZXJ5VGFibGVUb29sLmV4ZWN1dGU/LihcbiAgICAgIHtcbiAgICAgICAgcmVzb3VyY2UsXG4gICAgICAgIHF1ZXJ5OiBcIlNFTEVDVCAqIEZST00gc2VsZiBPUkRFUiBCWSBzY29yZSBERVNDXCIsXG4gICAgICB9LFxuICAgICAge30sXG4gICAgKVxuXG4gICAgZXhwZWN0LmFzc2VydChyZXN1bHQpXG4gICAgZXhwZWN0LmFzc2VydCghKFwiZXJyb3JcIiBpbiByZXN1bHQpKVxuXG4gICAgZXhwZWN0KEFycmF5LmlzQXJyYXkocmVzdWx0LnJlY29yZHMpKS50b0JlKHRydWUpXG4gICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzLmxlbmd0aCkudG9CZSgzKVxuICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkc1swXSkudG9NYXRjaE9iamVjdCh7IG5hbWU6IFwiYm9iXCIsIHNjb3JlOiA5MCB9KVxuICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkc1sxXSkudG9NYXRjaE9iamVjdCh7IG5hbWU6IFwiY2Fyb2xcIiwgc2NvcmU6IDg4IH0pXG4gICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzWzJdKS50b01hdGNoT2JqZWN0KHsgbmFtZTogXCJhbGljZVwiLCBzY29yZTogODUgfSlcbiAgfSlcblxuICBpdChcInF1ZXJpZXMgdGFibGUgd2l0aCBhZ2dyZWdhdGlvblwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgY3N2Q29udGVudCA9IFwiaWQsbmFtZSxzY29yZVxcbjEsYWxpY2UsODVcXG4yLGJvYiw5MFxcbjMsY2Fyb2wsODhcIlxuICAgIGNvbnN0IGNzdlBhdGggPSBhd2FpdCB3cml0ZVRlbXBGaWxlKGNzdkNvbnRlbnQsIHsgZm9ybWF0OiBcImNzdlwiIH0pXG4gICAgY29uc3QgcmVzb3VyY2U6IFJlc291cmNlID0geyBkYXRhOiBjc3ZQYXRoLCBkaWFsZWN0OiB7IGZvcm1hdDogXCJjc3ZcIiB9IH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHF1ZXJ5VGFibGVUb29sLmV4ZWN1dGU/LihcbiAgICAgIHtcbiAgICAgICAgcmVzb3VyY2UsXG4gICAgICAgIHF1ZXJ5OiBcIlNFTEVDVCBDT1VOVCgqKSBhcyBjb3VudCwgQVZHKHNjb3JlKSBhcyBhdmdfc2NvcmUgRlJPTSBzZWxmXCIsXG4gICAgICB9LFxuICAgICAge30sXG4gICAgKVxuXG4gICAgZXhwZWN0LmFzc2VydChyZXN1bHQpXG4gICAgZXhwZWN0LmFzc2VydCghKFwiZXJyb3JcIiBpbiByZXN1bHQpKVxuXG4gICAgZXhwZWN0KEFycmF5LmlzQXJyYXkocmVzdWx0LnJlY29yZHMpKS50b0JlKHRydWUpXG4gICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzLmxlbmd0aCkudG9CZSgxKVxuICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkc1swXSkudG9IYXZlUHJvcGVydHkoXCJjb3VudFwiKVxuICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkc1swXSkudG9IYXZlUHJvcGVydHkoXCJhdmdfc2NvcmVcIilcbiAgfSlcblxuICBpdChcInF1ZXJpZXMgdGFibGUgd2l0aCBXSEVSRSBhbmQgTElNSVRcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGNzdkNvbnRlbnQgPVxuICAgICAgXCJpZCxuYW1lLGFnZVxcbjEsYWxpY2UsMjVcXG4yLGJvYiwzMFxcbjMsY2Fyb2wsMjhcXG40LGRhdmUsMzVcXG41LGV2ZSwyMlwiXG4gICAgY29uc3QgY3N2UGF0aCA9IGF3YWl0IHdyaXRlVGVtcEZpbGUoY3N2Q29udGVudCwgeyBmb3JtYXQ6IFwiY3N2XCIgfSlcbiAgICBjb25zdCByZXNvdXJjZTogUmVzb3VyY2UgPSB7IGRhdGE6IGNzdlBhdGgsIGRpYWxlY3Q6IHsgZm9ybWF0OiBcImNzdlwiIH0gfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcXVlcnlUYWJsZVRvb2wuZXhlY3V0ZT8uKFxuICAgICAge1xuICAgICAgICByZXNvdXJjZSxcbiAgICAgICAgcXVlcnk6IFwiU0VMRUNUICogRlJPTSBzZWxmIFdIRVJFIGFnZSA+PSAyNSBPUkRFUiBCWSBhZ2UgTElNSVQgMlwiLFxuICAgICAgfSxcbiAgICAgIHt9LFxuICAgIClcblxuICAgIGV4cGVjdC5hc3NlcnQocmVzdWx0KVxuICAgIGV4cGVjdC5hc3NlcnQoIShcImVycm9yXCIgaW4gcmVzdWx0KSlcblxuICAgIGV4cGVjdChBcnJheS5pc0FycmF5KHJlc3VsdC5yZWNvcmRzKSkudG9CZSh0cnVlKVxuICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkcy5sZW5ndGgpLnRvQmUoMilcbiAgfSlcblxuICBpdChcInF1ZXJpZXMgaW5saW5lIGRhdGFcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHJlc291cmNlOiBSZXNvdXJjZSA9IHtcbiAgICAgIGRhdGE6IFtcbiAgICAgICAgeyBpZDogMSwgbmFtZTogXCJhbGljZVwiLCBzY29yZTogODUgfSxcbiAgICAgICAgeyBpZDogMiwgbmFtZTogXCJib2JcIiwgc2NvcmU6IDkwIH0sXG4gICAgICAgIHsgaWQ6IDMsIG5hbWU6IFwiY2Fyb2xcIiwgc2NvcmU6IDg4IH0sXG4gICAgICBdLFxuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHF1ZXJ5VGFibGVUb29sLmV4ZWN1dGU/LihcbiAgICAgIHtcbiAgICAgICAgcmVzb3VyY2UsXG4gICAgICAgIHF1ZXJ5OiBcIlNFTEVDVCBuYW1lLCBzY29yZSBGUk9NIHNlbGYgV0hFUkUgc2NvcmUgPiA4NVwiLFxuICAgICAgfSxcbiAgICAgIHt9LFxuICAgIClcblxuICAgIGV4cGVjdC5hc3NlcnQocmVzdWx0KVxuICAgIGV4cGVjdC5hc3NlcnQoIShcImVycm9yXCIgaW4gcmVzdWx0KSlcblxuICAgIGV4cGVjdChBcnJheS5pc0FycmF5KHJlc3VsdC5yZWNvcmRzKSkudG9CZSh0cnVlKVxuICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkcy5sZW5ndGgpLnRvQmUoMilcbiAgICBleHBlY3QocmVzdWx0LnJlY29yZHMpLnRvQ29udGFpbkVxdWFsKHsgbmFtZTogXCJib2JcIiwgc2NvcmU6IDkwIH0pXG4gICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzKS50b0NvbnRhaW5FcXVhbCh7IG5hbWU6IFwiY2Fyb2xcIiwgc2NvcmU6IDg4IH0pXG4gIH0pXG5cbiAgaXQoXCJxdWVyaWVzIHdpdGggSk9JTiBvcGVyYXRpb25zXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCByZXNvdXJjZTogUmVzb3VyY2UgPSB7XG4gICAgICBkYXRhOiBbXG4gICAgICAgIHsgaWQ6IDEsIG5hbWU6IFwiYWxpY2VcIiwgZGVwdF9pZDogMTAgfSxcbiAgICAgICAgeyBpZDogMiwgbmFtZTogXCJib2JcIiwgZGVwdF9pZDogMjAgfSxcbiAgICAgIF0sXG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcXVlcnlUYWJsZVRvb2wuZXhlY3V0ZT8uKFxuICAgICAge1xuICAgICAgICByZXNvdXJjZSxcbiAgICAgICAgcXVlcnk6IFwiU0VMRUNUICogRlJPTSBzZWxmIFdIRVJFIGRlcHRfaWQgPSAxMFwiLFxuICAgICAgfSxcbiAgICAgIHt9LFxuICAgIClcblxuICAgIGV4cGVjdC5hc3NlcnQocmVzdWx0KVxuICAgIGV4cGVjdC5hc3NlcnQoIShcImVycm9yXCIgaW4gcmVzdWx0KSlcblxuICAgIGV4cGVjdChBcnJheS5pc0FycmF5KHJlc3VsdC5yZWNvcmRzKSkudG9CZSh0cnVlKVxuICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkcy5sZW5ndGgpLnRvQmUoMSlcbiAgICBleHBlY3QocmVzdWx0LnJlY29yZHNbMF0pLnRvTWF0Y2hPYmplY3QoeyBuYW1lOiBcImFsaWNlXCIsIGRlcHRfaWQ6IDEwIH0pXG4gIH0pXG5cbiAgaXQoXCJyZXR1cm5zIGFsbCByZWNvcmRzIHdoZW4gcXVlcnlpbmcgd2l0aG91dCBmaWx0ZXJzXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBjc3ZDb250ZW50ID0gXCJpZCxuYW1lXFxuMSxhbGljZVxcbjIsYm9iXFxuMyxjYXJvbFwiXG4gICAgY29uc3QgY3N2UGF0aCA9IGF3YWl0IHdyaXRlVGVtcEZpbGUoY3N2Q29udGVudCwgeyBmb3JtYXQ6IFwiY3N2XCIgfSlcbiAgICBjb25zdCByZXNvdXJjZTogUmVzb3VyY2UgPSB7IGRhdGE6IGNzdlBhdGgsIGRpYWxlY3Q6IHsgZm9ybWF0OiBcImNzdlwiIH0gfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcXVlcnlUYWJsZVRvb2wuZXhlY3V0ZT8uKFxuICAgICAge1xuICAgICAgICByZXNvdXJjZSxcbiAgICAgICAgcXVlcnk6IFwiU0VMRUNUICogRlJPTSBzZWxmXCIsXG4gICAgICB9LFxuICAgICAge30sXG4gICAgKVxuXG4gICAgZXhwZWN0LmFzc2VydChyZXN1bHQpXG4gICAgZXhwZWN0LmFzc2VydCghKFwiZXJyb3JcIiBpbiByZXN1bHQpKVxuXG4gICAgZXhwZWN0KEFycmF5LmlzQXJyYXkocmVzdWx0LnJlY29yZHMpKS50b0JlKHRydWUpXG4gICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzLmxlbmd0aCkudG9CZSgzKVxuICB9KVxufSlcbiJdfQ==
|
|
138
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rvb2xzL3RhYmxlL3F1ZXJ5LnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ2pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRTNDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUU7SUFDOUIsRUFBRSxDQUFDLDBCQUEwQixFQUFFLEdBQUcsRUFBRTtRQUNsQyxNQUFNLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQTtRQUM3QyxNQUFNLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFBO1FBQy9DLE1BQU0sQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUE7UUFDL0MsTUFBTSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQTtRQUNoRCxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUN2RCxDQUFDLENBQUMsQ0FBQTtJQUVGLEVBQUUsQ0FBQyxxQ0FBcUMsRUFBRSxLQUFLLElBQUksRUFBRTtRQUNuRCxNQUFNLFVBQVUsR0FBRywrQ0FBK0MsQ0FBQTtRQUNsRSxNQUFNLE9BQU8sR0FBRyxNQUFNLGFBQWEsQ0FBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQTtRQUNsRSxNQUFNLFFBQVEsR0FBYSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFB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TSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ2hELE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN2QyxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSZXNvdXJjZSB9IGZyb20gXCJAZmFpcnNwZWMvbGlicmFyeVwiXG5pbXBvcnQgeyB3cml0ZVRlbXBGaWxlIH0gZnJvbSBcIkBmYWlyc3BlYy9saWJyYXJ5XCJcbmltcG9ydCB7IGRlc2NyaWJlLCBleHBlY3QsIGl0IH0gZnJvbSBcInZpdGVzdFwiXG5pbXBvcnQgeyBxdWVyeVRhYmxlVG9vbCB9IGZyb20gXCIuL3F1ZXJ5LnRzXCJcblxuZGVzY3JpYmUoXCJxdWVyeVRhYmxlVG9vbFwiLCAoKSA9PiB7XG4gIGl0KFwidmFsaWRhdGVzIHRvb2wgc3RydWN0dXJlXCIsICgpID0+IHtcbiAgICBleHBlY3QocXVlcnlUYWJsZVRvb2wuaWQpLnRvQmUoXCJxdWVyeS10YWJsZVwiKVxuICAgIGV4cGVjdChxdWVyeVRhYmxlVG9vbC5kZXNjcmlwdGlvbikudG9CZVRydXRoeSgpXG4gICAgZXhwZWN0KHF1ZXJ5VGFibGVUb29sLmlucHV0U2NoZW1hKS50b0JlVHJ1dGh5KClcbiAgICBleHBlY3QocXVlcnlUYWJsZVRvb2wub3V0cHV0U2NoZW1hKS50b0JlVHJ1dGh5KClcbiAgICBleHBlY3QocXVlcnlUYWJsZVRvb2wuZXhlY3V0ZSkudG9CZVR5cGVPZihcImZ1bmN0aW9uXCIpXG4gIH0pXG5cbiAgaXQoXCJxdWVyaWVzIHRhYmxlIHdpdGggU0VMRUNUIHN0YXRlbWVudFwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgY3N2Q29udGVudCA9IFwiaWQsbmFtZSxhZ2VcXG4xLGFsaWNlLDI1XFxuMixib2IsMzBcXG4zLGNhcm9sLDI4XCJcbiAgICBjb25zdCBjc3ZQYXRoID0gYXdhaXQgd3JpdGVUZW1wRmlsZShjc3ZDb250ZW50LCB7IGZvcm1hdDogXCJjc3ZcIiB9KVxuICAgIGNvbnN0IHJlc291cmNlOiBSZXNvdXJjZSA9IHsgZGF0YTogY3N2UGF0aCwgZmlsZURpYWxlY3Q6IHsgZm9ybWF0OiBcImNzdlwiIH0gfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcXVlcnlUYWJsZVRvb2wuZXhlY3V0ZT8uKFxuICAgICAge1xuICAgICAgICByZXNvdXJjZSxcbiAgICAgICAgcXVlcnk6IFwiU0VMRUNUICogRlJPTSBzZWxmIFdIRVJFIGFnZSA+IDI1XCIsXG4gICAgICB9LFxuICAgICAge30sXG4gICAgKVxuXG4gICAgZXhwZWN0LmFzc2VydChyZXN1bHQpXG4gICAgZXhwZWN0LmFzc2VydCghKFwiZXJyb3JcIiBpbiByZXN1bHQpKVxuXG4gICAgZXhwZWN0KEFycmF5LmlzQXJyYXkocmVzdWx0LnJlY29yZHMpKS50b0JlKHRydWUpXG4gICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzLmxlbmd0aCkudG9CZSgyKVxuICAgIGV4cGVjdChyZXN1bHQucmVjb3JkcykudG9Db250YWluRXF1YWwoeyBpZDogMiwgbmFtZTogXCJib2JcIiwgYWdlOiAzMCB9KVxuICAgIGV4cGVjdChyZXN1bHQucmVjb3JkcykudG9Db250YWluRXF1YWwoeyBpZDogMywgbmFtZTogXCJjYXJvbFwiLCBhZ2U6IDI4IH0pXG4gIH0pXG5cbiAgaXQoXCJxdWVyaWVzIHRhYmxlIHdpdGggY29sdW1uIHNlbGVjdGlvblwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgY3N2Q29udGVudCA9XG4gICAgICBcImlkLG5hbWUsYWdlLGNpdHlcXG4xLGFsaWNlLDI1LE5ZQ1xcbjIsYm9iLDMwLExBXFxuMyxjYXJvbCwyOCxTRlwiXG4gICAgY29uc3QgY3N2UGF0aCA9IGF3YWl0IHdyaXRlVGVtcEZpbGUoY3N2Q29udGVudCwgeyBmb3JtYXQ6IFwiY3N2XCIgfSlcbiAgICBjb25zdCByZXNvdXJjZTogUmVzb3VyY2UgPSB7IGRhdGE6IGNzdlBhdGgsIGZpbGVEaWFsZWN0OiB7IGZvcm1hdDogXCJjc3ZcIiB9IH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHF1ZXJ5VGFibGVUb29sLmV4ZWN1dGU/LihcbiAgICAgIHtcbiAgICAgICAgcmVzb3VyY2UsXG4gICAgICAgIHF1ZXJ5OiBcIlNFTEVDVCBuYW1lLCBjaXR5IEZST00gc2VsZlwiLFxuICAgICAgfSxcbiAgICAgIHt9LFxuICAgIClcblxuICAgIGV4cGVjdC5hc3NlcnQocmVzdWx0KVxuICAgIGV4cGVjdC5hc3NlcnQoIShcImVycm9yXCIgaW4gcmVzdWx0KSlcblxuICAgIGV4cGVjdChBcnJheS5pc0FycmF5KHJlc3VsdC5yZWNvcmRzKSkudG9CZSh0cnVlKVxuICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkcy5sZW5ndGgpLnRvQmUoMylcbiAgICBleHBlY3QocmVzdWx0LnJlY29yZHNbMF0pLnRvSGF2ZVByb3BlcnR5KFwibmFtZVwiKVxuICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkc1swXSkudG9IYXZlUHJvcGVydHkoXCJjaXR5XCIpXG4gICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzWzBdKS5ub3QudG9IYXZlUHJvcGVydHkoXCJpZFwiKVxuICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkc1swXSkubm90LnRvSGF2ZVByb3BlcnR5KFwiYWdlXCIpXG4gIH0pXG5cbiAgaXQoXCJxdWVyaWVzIHRhYmxlIHdpdGggT1JERVIgQlkgY2xhdXNlXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBjc3ZDb250ZW50ID0gXCJpZCxuYW1lLHNjb3JlXFxuMSxhbGljZSw4NVxcbjIsYm9iLDkwXFxuMyxjYXJvbCw4OFwiXG4gICAgY29uc3QgY3N2UGF0aCA9IGF3YWl0IHdyaXRlVGVtcEZpbGUoY3N2Q29udGVudCwgeyBmb3JtYXQ6IFwiY3N2XCIgfSlcbiAgICBjb25zdCByZXNvdXJjZTogUmVzb3VyY2UgPSB7IGRhdGE6IGNzdlBhdGgsIGZpbGVEaWFsZWN0OiB7IGZvcm1hdDogXCJjc3ZcIiB9IH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHF1ZXJ5VGFibGVUb29sLmV4ZWN1dGU/LihcbiAgICAgIHtcbiAgICAgICAgcmVzb3VyY2UsXG4gICAgICAgIHF1ZXJ5OiBcIlNFTEVDVCAqIEZST00gc2VsZiBPUkRFUiBCWSBzY29yZSBERVNDXCIsXG4gICAgICB9LFxuICAgICAge30sXG4gICAgKVxuXG4gICAgZXhwZWN0LmFzc2VydChyZXN1bHQpXG4gICAgZXhwZWN0LmFzc2VydCghKFwiZXJyb3JcIiBpbiByZXN1bHQpKVxuXG4gICAgZXhwZWN0KEFycmF5LmlzQXJyYXkocmVzdWx0LnJlY29yZHMpKS50b0JlKHRydWUpXG4gICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzLmxlbmd0aCkudG9CZSgzKVxuICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkc1swXSkudG9NYXRjaE9iamVjdCh7IG5hbWU6IFwiYm9iXCIsIHNjb3JlOiA5MCB9KVxuICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkc1sxXSkudG9NYXRjaE9iamVjdCh7IG5hbWU6IFwiY2Fyb2xcIiwgc2NvcmU6IDg4IH0pXG4gICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzWzJdKS50b01hdGNoT2JqZWN0KHsgbmFtZTogXCJhbGljZVwiLCBzY29yZTogODUgfSlcbiAgfSlcblxuICBpdChcInF1ZXJpZXMgdGFibGUgd2l0aCBhZ2dyZWdhdGlvblwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgY3N2Q29udGVudCA9IFwiaWQsbmFtZSxzY29yZVxcbjEsYWxpY2UsODVcXG4yLGJvYiw5MFxcbjMsY2Fyb2wsODhcIlxuICAgIGNvbnN0IGNzdlBhdGggPSBhd2FpdCB3cml0ZVRlbXBGaWxlKGNzdkNvbnRlbnQsIHsgZm9ybWF0OiBcImNzdlwiIH0pXG4gICAgY29uc3QgcmVzb3VyY2U6IFJlc291cmNlID0geyBkYXRhOiBjc3ZQYXRoLCBmaWxlRGlhbGVjdDogeyBmb3JtYXQ6IFwiY3N2XCIgfSB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBxdWVyeVRhYmxlVG9vbC5leGVjdXRlPy4oXG4gICAgICB7XG4gICAgICAgIHJlc291cmNlLFxuICAgICAgICBxdWVyeTogXCJTRUxFQ1QgQ09VTlQoKikgYXMgY291bnQsIEFWRyhzY29yZSkgYXMgYXZnX3Njb3JlIEZST00gc2VsZlwiLFxuICAgICAgfSxcbiAgICAgIHt9LFxuICAgIClcblxuICAgIGV4cGVjdC5hc3NlcnQocmVzdWx0KVxuICAgIGV4cGVjdC5hc3NlcnQoIShcImVycm9yXCIgaW4gcmVzdWx0KSlcblxuICAgIGV4cGVjdChBcnJheS5pc0FycmF5KHJlc3VsdC5yZWNvcmRzKSkudG9CZSh0cnVlKVxuICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkcy5sZW5ndGgpLnRvQmUoMSlcbiAgICBleHBlY3QocmVzdWx0LnJlY29yZHNbMF0pLnRvSGF2ZVByb3BlcnR5KFwiY291bnRcIilcbiAgICBleHBlY3QocmVzdWx0LnJlY29yZHNbMF0pLnRvSGF2ZVByb3BlcnR5KFwiYXZnX3Njb3JlXCIpXG4gIH0pXG5cbiAgaXQoXCJxdWVyaWVzIHRhYmxlIHdpdGggV0hFUkUgYW5kIExJTUlUXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBjc3ZDb250ZW50ID1cbiAgICAgIFwiaWQsbmFtZSxhZ2VcXG4xLGFsaWNlLDI1XFxuMixib2IsMzBcXG4zLGNhcm9sLDI4XFxuNCxkYXZlLDM1XFxuNSxldmUsMjJcIlxuICAgIGNvbnN0IGNzdlBhdGggPSBhd2FpdCB3cml0ZVRlbXBGaWxlKGNzdkNvbnRlbnQsIHsgZm9ybWF0OiBcImNzdlwiIH0pXG4gICAgY29uc3QgcmVzb3VyY2U6IFJlc291cmNlID0geyBkYXRhOiBjc3ZQYXRoLCBmaWxlRGlhbGVjdDogeyBmb3JtYXQ6IFwiY3N2XCIgfSB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBxdWVyeVRhYmxlVG9vbC5leGVjdXRlPy4oXG4gICAgICB7XG4gICAgICAgIHJlc291cmNlLFxuICAgICAgICBxdWVyeTogXCJTRUxFQ1QgKiBGUk9NIHNlbGYgV0hFUkUgYWdlID49IDI1IE9SREVSIEJZIGFnZSBMSU1JVCAyXCIsXG4gICAgICB9LFxuICAgICAge30sXG4gICAgKVxuXG4gICAgZXhwZWN0LmFzc2VydChyZXN1bHQpXG4gICAgZXhwZWN0LmFzc2VydCghKFwiZXJyb3JcIiBpbiByZXN1bHQpKVxuXG4gICAgZXhwZWN0KEFycmF5LmlzQXJyYXkocmVzdWx0LnJlY29yZHMpKS50b0JlKHRydWUpXG4gICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzLmxlbmd0aCkudG9CZSgyKVxuICB9KVxuXG4gIGl0KFwicXVlcmllcyBpbmxpbmUgZGF0YVwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVzb3VyY2U6IFJlc291cmNlID0ge1xuICAgICAgZGF0YTogW1xuICAgICAgICB7IGlkOiAxLCBuYW1lOiBcImFsaWNlXCIsIHNjb3JlOiA4NSB9LFxuICAgICAgICB7IGlkOiAyLCBuYW1lOiBcImJvYlwiLCBzY29yZTogOTAgfSxcbiAgICAgICAgeyBpZDogMywgbmFtZTogXCJjYXJvbFwiLCBzY29yZTogODggfSxcbiAgICAgIF0sXG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcXVlcnlUYWJsZVRvb2wuZXhlY3V0ZT8uKFxuICAgICAge1xuICAgICAgICByZXNvdXJjZSxcbiAgICAgICAgcXVlcnk6IFwiU0VMRUNUIG5hbWUsIHNjb3JlIEZST00gc2VsZiBXSEVSRSBzY29yZSA+IDg1XCIsXG4gICAgICB9LFxuICAgICAge30sXG4gICAgKVxuXG4gICAgZXhwZWN0LmFzc2VydChyZXN1bHQpXG4gICAgZXhwZWN0LmFzc2VydCghKFwiZXJyb3JcIiBpbiByZXN1bHQpKVxuXG4gICAgZXhwZWN0KEFycmF5LmlzQXJyYXkocmVzdWx0LnJlY29yZHMpKS50b0JlKHRydWUpXG4gICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzLmxlbmd0aCkudG9CZSgyKVxuICAgIGV4cGVjdChyZXN1bHQucmVjb3JkcykudG9Db250YWluRXF1YWwoeyBuYW1lOiBcImJvYlwiLCBzY29yZTogOTAgfSlcbiAgICBleHBlY3QocmVzdWx0LnJlY29yZHMpLnRvQ29udGFpbkVxdWFsKHsgbmFtZTogXCJjYXJvbFwiLCBzY29yZTogODggfSlcbiAgfSlcblxuICBpdChcInF1ZXJpZXMgd2l0aCBKT0lOIG9wZXJhdGlvbnNcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHJlc291cmNlOiBSZXNvdXJjZSA9IHtcbiAgICAgIGRhdGE6IFtcbiAgICAgICAgeyBpZDogMSwgbmFtZTogXCJhbGljZVwiLCBkZXB0X2lkOiAxMCB9LFxuICAgICAgICB7IGlkOiAyLCBuYW1lOiBcImJvYlwiLCBkZXB0X2lkOiAyMCB9LFxuICAgICAgXSxcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBxdWVyeVRhYmxlVG9vbC5leGVjdXRlPy4oXG4gICAgICB7XG4gICAgICAgIHJlc291cmNlLFxuICAgICAgICBxdWVyeTogXCJTRUxFQ1QgKiBGUk9NIHNlbGYgV0hFUkUgZGVwdF9pZCA9IDEwXCIsXG4gICAgICB9LFxuICAgICAge30sXG4gICAgKVxuXG4gICAgZXhwZWN0LmFzc2VydChyZXN1bHQpXG4gICAgZXhwZWN0LmFzc2VydCghKFwiZXJyb3JcIiBpbiByZXN1bHQpKVxuXG4gICAgZXhwZWN0KEFycmF5LmlzQXJyYXkocmVzdWx0LnJlY29yZHMpKS50b0JlKHRydWUpXG4gICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzLmxlbmd0aCkudG9CZSgxKVxuICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkc1swXSkudG9NYXRjaE9iamVjdCh7IG5hbWU6IFwiYWxpY2VcIiwgZGVwdF9pZDogMTAgfSlcbiAgfSlcblxuICBpdChcInJldHVybnMgYWxsIHJlY29yZHMgd2hlbiBxdWVyeWluZyB3aXRob3V0IGZpbHRlcnNcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGNzdkNvbnRlbnQgPSBcImlkLG5hbWVcXG4xLGFsaWNlXFxuMixib2JcXG4zLGNhcm9sXCJcbiAgICBjb25zdCBjc3ZQYXRoID0gYXdhaXQgd3JpdGVUZW1wRmlsZShjc3ZDb250ZW50LCB7IGZvcm1hdDogXCJjc3ZcIiB9KVxuICAgIGNvbnN0IHJlc291cmNlOiBSZXNvdXJjZSA9IHsgZGF0YTogY3N2UGF0aCwgZmlsZURpYWxlY3Q6IHsgZm9ybWF0OiBcImNzdlwiIH0gfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcXVlcnlUYWJsZVRvb2wuZXhlY3V0ZT8uKFxuICAgICAge1xuICAgICAgICByZXNvdXJjZSxcbiAgICAgICAgcXVlcnk6IFwiU0VMRUNUICogRlJPTSBzZWxmXCIsXG4gICAgICB9LFxuICAgICAge30sXG4gICAgKVxuXG4gICAgZXhwZWN0LmFzc2VydChyZXN1bHQpXG4gICAgZXhwZWN0LmFzc2VydCghKFwiZXJyb3JcIiBpbiByZXN1bHQpKVxuXG4gICAgZXhwZWN0KEFycmF5LmlzQXJyYXkocmVzdWx0LnJlY29yZHMpKS50b0JlKHRydWUpXG4gICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzLmxlbmd0aCkudG9CZSgzKVxuICB9KVxufSlcbiJdfQ==
|