@fairspec/agent 0.9.0 → 0.9.2
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/examples/client.js +16 -0
- package/build/main.js +6 -0
- package/build/package.json +1 -1
- package/build/server.js +2 -1
- package/build/tools/data/validate.d.ts +180 -178
- package/build/tools/data/validate.js +6 -3
- package/build/tools/data/validate.spec.js +22 -22
- package/build/tools/dataSchema/infer.d.ts +10 -8
- package/build/tools/dataSchema/infer.js +6 -3
- package/build/tools/dataSchema/infer.spec.js +12 -10
- package/build/tools/dataSchema/validate.d.ts +173 -171
- package/build/tools/dataSchema/validate.js +6 -3
- package/build/tools/dataSchema/validate.spec.js +15 -15
- package/build/tools/dataset/infer.d.ts +804 -802
- package/build/tools/dataset/infer.js +6 -3
- package/build/tools/dataset/infer.spec.js +18 -18
- package/build/tools/dataset/validate.d.ts +180 -178
- package/build/tools/dataset/validate.js +6 -3
- package/build/tools/dataset/validate.spec.js +16 -16
- package/build/tools/dialect/infer.d.ts +98 -96
- package/build/tools/dialect/infer.js +6 -3
- package/build/tools/dialect/infer.spec.js +16 -14
- package/build/tools/table/query.d.ts +10 -8
- package/build/tools/table/query.js +6 -3
- package/build/tools/table/query.spec.js +31 -31
- package/build/tools/table/validate.d.ts +180 -178
- package/build/tools/table/validate.js +6 -3
- package/build/tools/table/validate.spec.js +11 -11
- package/build/tools/tableSchema/infer.d.ts +501 -499
- package/build/tools/tableSchema/infer.js +7 -3
- package/build/tools/tableSchema/infer.spec.js +35 -33
- package/build/tools/tableSchema/validate.d.ts +173 -171
- package/build/tools/tableSchema/validate.js +6 -3
- package/build/tools/tableSchema/validate.spec.js +13 -13
- package/package.json +2 -2
- package/build/actions/tableSchema/asHtml.d.ts +0 -4
- package/build/actions/tableSchema/asHtml.js +0 -82
- package/build/actions/tableSchema/asHtml.spec.js +0 -356
- package/build/actions/tableSchema/asMarkdown.d.ts +0 -4
- package/build/actions/tableSchema/asMarkdown.js +0 -65
- package/build/actions/tableSchema/asMarkdown.spec.js +0 -133
- package/build/document/Document.d.ts +0 -2
- package/build/document/Document.js +0 -2
- package/build/document/index.d.ts +0 -3
- package/build/document/index.js +0 -3
- package/build/document/types/Base.d.ts +0 -3
- package/build/document/types/Base.js +0 -2
- package/build/document/types/Json.d.ts +0 -5
- package/build/document/types/Json.js +0 -2
- package/build/document/validate.d.ts +0 -5
- package/build/document/validate.js +0 -23
- package/build/document/validate.spec.d.ts +0 -1
- package/build/document/validate.spec.js +0 -71
- package/build/plugin.d.ts +0 -6
- package/build/plugin.js +0 -15
- package/build/schema/convert/toHtml.d.ts +0 -4
- package/build/schema/convert/toHtml.js +0 -107
- package/build/schema/convert/toHtml.spec.d.ts +0 -1
- package/build/schema/convert/toHtml.spec.js +0 -432
- package/build/schema/convert/toMarkdown.d.ts +0 -4
- package/build/schema/convert/toMarkdown.js +0 -75
- package/build/schema/convert/toMarkdown.spec.d.ts +0 -1
- package/build/schema/convert/toMarkdown.spec.js +0 -137
- package/build/schema/index.d.ts +0 -2
- package/build/schema/index.js +0 -3
- package/build/tableSchema/convert/toHtml.d.ts +0 -4
- package/build/tableSchema/convert/toHtml.js +0 -80
- package/build/tableSchema/convert/toHtml.spec.d.ts +0 -1
- package/build/tableSchema/convert/toHtml.spec.js +0 -375
- package/build/tableSchema/convert/toMarkdown.d.ts +0 -4
- package/build/tableSchema/convert/toMarkdown.js +0 -57
- package/build/tableSchema/convert/toMarkdown.spec.d.ts +0 -1
- package/build/tableSchema/convert/toMarkdown.spec.js +0 -141
- package/build/tableSchema/index.d.ts +0 -2
- package/build/tableSchema/index.js +0 -3
- /package/build/{actions/tableSchema/asHtml.spec.d.ts → examples/client.d.ts} +0 -0
- /package/build/{actions/tableSchema/asMarkdown.spec.d.ts → main.d.ts} +0 -0
|
@@ -8,9 +8,13 @@ export const inferTableSchemaTool = createTool({
|
|
|
8
8
|
resource: Resource.describe("The table resource to infer schema from"),
|
|
9
9
|
options: InferTableSchemaOptions.optional().describe("Schema inference options"),
|
|
10
10
|
}),
|
|
11
|
-
outputSchema:
|
|
11
|
+
outputSchema: z.object({
|
|
12
|
+
schema: TableSchema.optional(),
|
|
13
|
+
}),
|
|
12
14
|
execute: async (input) => {
|
|
13
|
-
|
|
15
|
+
const schema = await inferTableSchema(input.resource, input.options);
|
|
16
|
+
console.log(schema);
|
|
17
|
+
return { schema };
|
|
14
18
|
},
|
|
15
19
|
});
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90b29scy90YWJsZVNjaGVtYS9pbmZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGdCQUFnQixFQUNoQixRQUFRLEVBQ1IsV0FBVyxHQUNaLE1BQU0sbUJBQW1CLENBQUE7QUFDMUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQy9DLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUE7QUFFdkIsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsVUFBVSxDQUFDO0lBQzdDLEVBQUUsRUFBRSxvQkFBb0I7SUFDeEIsV0FBVyxFQUNULDZHQUE2RztJQUMvRyxXQUFXLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUNwQixRQUFRLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyx5Q0FBeUMsQ0FBQztRQUN0RSxPQUFPLEVBQUUsdUJBQXVCLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUNsRCwwQkFBMEIsQ0FDM0I7S0FDRixDQUFDO0lBQ0YsWUFBWSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDckIsTUFBTSxFQUFFLFdBQVcsQ0FBQyxRQUFRLEVBQUU7S0FDL0IsQ0FBQztJQUNGLE9BQU8sRUFBRSxLQUFLLEVBQUMsS0FBSyxFQUFDLEVBQUU7UUFDckIsTUFBTSxNQUFNLEdBQUcsTUFBTSxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUNwRSxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ25CLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQTtJQUNuQixDQUFDO0NBQ0YsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSW5mZXJUYWJsZVNjaGVtYU9wdGlvbnMsXG4gIGluZmVyVGFibGVTY2hlbWEsXG4gIFJlc291cmNlLFxuICBUYWJsZVNjaGVtYSxcbn0gZnJvbSBcIkBmYWlyc3BlYy9saWJyYXJ5XCJcbmltcG9ydCB7IGNyZWF0ZVRvb2wgfSBmcm9tIFwiQG1hc3RyYS9jb3JlL3Rvb2xzXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGNvbnN0IGluZmVyVGFibGVTY2hlbWFUb29sID0gY3JlYXRlVG9vbCh7XG4gIGlkOiBcImluZmVyLXRhYmxlLXNjaGVtYVwiLFxuICBkZXNjcmlwdGlvbjpcbiAgICBcIkluZmVyIGEgdGFibGUgc2NoZW1hIGZyb20gdGFibGUgcmVzb3VyY2UgZGF0YS4gQW5hbHl6ZXMgdGhlIGRhdGEgdG8gZGV0ZXJtaW5lIGNvbHVtbiB0eXBlcyBhbmQgY29uc3RyYWludHMuXCIsXG4gIGlucHV0U2NoZW1hOiB6Lm9iamVjdCh7XG4gICAgcmVzb3VyY2U6IFJlc291cmNlLmRlc2NyaWJlKFwiVGhlIHRhYmxlIHJlc291cmNlIHRvIGluZmVyIHNjaGVtYSBmcm9tXCIpLFxuICAgIG9wdGlvbnM6IEluZmVyVGFibGVTY2hlbWFPcHRpb25zLm9wdGlvbmFsKCkuZGVzY3JpYmUoXG4gICAgICBcIlNjaGVtYSBpbmZlcmVuY2Ugb3B0aW9uc1wiLFxuICAgICksXG4gIH0pLFxuICBvdXRwdXRTY2hlbWE6IHoub2JqZWN0KHtcbiAgICBzY2hlbWE6IFRhYmxlU2NoZW1hLm9wdGlvbmFsKCksXG4gIH0pLFxuICBleGVjdXRlOiBhc3luYyBpbnB1dCA9PiB7XG4gICAgY29uc3Qgc2NoZW1hID0gYXdhaXQgaW5mZXJUYWJsZVNjaGVtYShpbnB1dC5yZXNvdXJjZSwgaW5wdXQub3B0aW9ucylcbiAgICBjb25zb2xlLmxvZyhzY2hlbWEpXG4gICAgcmV0dXJuIHsgc2NoZW1hIH1cbiAgfSxcbn0pXG4iXX0=
|
|
@@ -17,10 +17,10 @@ describe("inferTableSchemaTool", () => {
|
|
|
17
17
|
}, {});
|
|
18
18
|
expect.assert(result);
|
|
19
19
|
expect.assert(!("error" in result));
|
|
20
|
-
expect(result.properties).toBeDefined();
|
|
21
|
-
expect(result.properties?.id?.type).toBe("integer");
|
|
22
|
-
expect(result.properties?.name?.type).toBe("string");
|
|
23
|
-
expect(result.properties?.age?.type).toBe("integer");
|
|
20
|
+
expect(result.schema?.properties).toBeDefined();
|
|
21
|
+
expect(result.schema?.properties?.id?.type).toBe("integer");
|
|
22
|
+
expect(result.schema?.properties?.name?.type).toBe("string");
|
|
23
|
+
expect(result.schema?.properties?.age?.type).toBe("integer");
|
|
24
24
|
});
|
|
25
25
|
it("infers schema from inline object data", async () => {
|
|
26
26
|
const resource = {
|
|
@@ -34,10 +34,10 @@ describe("inferTableSchemaTool", () => {
|
|
|
34
34
|
}, {});
|
|
35
35
|
expect.assert(result);
|
|
36
36
|
expect.assert(!("error" in result));
|
|
37
|
-
expect(result.properties).toBeDefined();
|
|
38
|
-
expect(result.properties?.id?.type).toBe("integer");
|
|
39
|
-
expect(result.properties?.name?.type).toBe("string");
|
|
40
|
-
expect(result.properties?.age?.type).toBe("integer");
|
|
37
|
+
expect(result.schema?.properties).toBeDefined();
|
|
38
|
+
expect(result.schema?.properties?.id?.type).toBe("integer");
|
|
39
|
+
expect(result.schema?.properties?.name?.type).toBe("string");
|
|
40
|
+
expect(result.schema?.properties?.age?.type).toBe("integer");
|
|
41
41
|
});
|
|
42
42
|
it("infers different field types correctly", async () => {
|
|
43
43
|
const resource = {
|
|
@@ -51,11 +51,11 @@ describe("inferTableSchemaTool", () => {
|
|
|
51
51
|
}, {});
|
|
52
52
|
expect.assert(result);
|
|
53
53
|
expect.assert(!("error" in result));
|
|
54
|
-
expect(result.properties).toBeDefined();
|
|
55
|
-
expect(result.properties?.id?.type).toBe("integer");
|
|
56
|
-
expect(result.properties?.name?.type).toBe("string");
|
|
57
|
-
expect(result.properties?.score?.type).toBe("number");
|
|
58
|
-
expect(result.properties?.active?.type).toBe("boolean");
|
|
54
|
+
expect(result.schema?.properties).toBeDefined();
|
|
55
|
+
expect(result.schema?.properties?.id?.type).toBe("integer");
|
|
56
|
+
expect(result.schema?.properties?.name?.type).toBe("string");
|
|
57
|
+
expect(result.schema?.properties?.score?.type).toBe("number");
|
|
58
|
+
expect(result.schema?.properties?.active?.type).toBe("boolean");
|
|
59
59
|
});
|
|
60
60
|
it("infers date fields from strings", async () => {
|
|
61
61
|
const resource = {
|
|
@@ -69,11 +69,11 @@ describe("inferTableSchemaTool", () => {
|
|
|
69
69
|
}, {});
|
|
70
70
|
expect.assert(result);
|
|
71
71
|
expect.assert(!("error" in result));
|
|
72
|
-
expect(result.properties).toBeDefined();
|
|
73
|
-
expect(result.properties?.id?.type).toBe("integer");
|
|
74
|
-
expect(result.properties?.name?.type).toBe("string");
|
|
75
|
-
expect(result.properties?.created?.type).toBe("string");
|
|
76
|
-
expect(result.properties?.created?.format).toBe("date");
|
|
72
|
+
expect(result.schema?.properties).toBeDefined();
|
|
73
|
+
expect(result.schema?.properties?.id?.type).toBe("integer");
|
|
74
|
+
expect(result.schema?.properties?.name?.type).toBe("string");
|
|
75
|
+
expect(result.schema?.properties?.created?.type).toBe("string");
|
|
76
|
+
expect(result.schema?.properties?.created?.format).toBe("date");
|
|
77
77
|
});
|
|
78
78
|
it("respects sampleRows option", async () => {
|
|
79
79
|
const resource = {
|
|
@@ -88,9 +88,9 @@ describe("inferTableSchemaTool", () => {
|
|
|
88
88
|
}, {});
|
|
89
89
|
expect.assert(result);
|
|
90
90
|
expect.assert(!("error" in result));
|
|
91
|
-
expect(result.properties).toBeDefined();
|
|
92
|
-
expect(result.properties?.id?.type).toBe("integer");
|
|
93
|
-
expect(result.properties?.name?.type).toBe("string");
|
|
91
|
+
expect(result.schema?.properties).toBeDefined();
|
|
92
|
+
expect(result.schema?.properties?.id?.type).toBe("integer");
|
|
93
|
+
expect(result.schema?.properties?.name?.type).toBe("string");
|
|
94
94
|
});
|
|
95
95
|
it("handles empty data", async () => {
|
|
96
96
|
const resource = {
|
|
@@ -99,7 +99,9 @@ describe("inferTableSchemaTool", () => {
|
|
|
99
99
|
const result = await inferTableSchemaTool.execute?.({
|
|
100
100
|
resource,
|
|
101
101
|
}, {});
|
|
102
|
-
expect(result)
|
|
102
|
+
expect.assert(result);
|
|
103
|
+
expect.assert(!("error" in result));
|
|
104
|
+
expect(result.schema).toBeUndefined();
|
|
103
105
|
});
|
|
104
106
|
it("handles single row data", async () => {
|
|
105
107
|
const resource = {
|
|
@@ -110,9 +112,9 @@ describe("inferTableSchemaTool", () => {
|
|
|
110
112
|
}, {});
|
|
111
113
|
expect.assert(result);
|
|
112
114
|
expect.assert(!("error" in result));
|
|
113
|
-
expect(result.properties).toBeDefined();
|
|
114
|
-
expect(result.properties?.id?.type).toBe("integer");
|
|
115
|
-
expect(result.properties?.name?.type).toBe("string");
|
|
115
|
+
expect(result.schema?.properties).toBeDefined();
|
|
116
|
+
expect(result.schema?.properties?.id?.type).toBe("integer");
|
|
117
|
+
expect(result.schema?.properties?.name?.type).toBe("string");
|
|
116
118
|
});
|
|
117
119
|
it("respects columnTypes option", async () => {
|
|
118
120
|
const resource = {
|
|
@@ -127,9 +129,9 @@ describe("inferTableSchemaTool", () => {
|
|
|
127
129
|
}, {});
|
|
128
130
|
expect.assert(result);
|
|
129
131
|
expect.assert(!("error" in result));
|
|
130
|
-
expect(result.properties).toBeDefined();
|
|
131
|
-
expect(result.properties?.id?.type).toBe("integer");
|
|
132
|
-
expect(result.properties?.value?.type).toBe("integer");
|
|
132
|
+
expect(result.schema?.properties).toBeDefined();
|
|
133
|
+
expect(result.schema?.properties?.id?.type).toBe("integer");
|
|
134
|
+
expect(result.schema?.properties?.value?.type).toBe("integer");
|
|
133
135
|
});
|
|
134
136
|
it("handles time fields", async () => {
|
|
135
137
|
const resource = {
|
|
@@ -143,10 +145,10 @@ describe("inferTableSchemaTool", () => {
|
|
|
143
145
|
}, {});
|
|
144
146
|
expect.assert(result);
|
|
145
147
|
expect.assert(!("error" in result));
|
|
146
|
-
expect(result.properties).toBeDefined();
|
|
147
|
-
expect(result.properties?.id?.type).toBe("integer");
|
|
148
|
-
expect(result.properties?.time?.type).toBe("string");
|
|
149
|
-
expect(result.properties?.time?.format).toBe("time");
|
|
148
|
+
expect(result.schema?.properties).toBeDefined();
|
|
149
|
+
expect(result.schema?.properties?.id?.type).toBe("integer");
|
|
150
|
+
expect(result.schema?.properties?.time?.type).toBe("string");
|
|
151
|
+
expect(result.schema?.properties?.time?.format).toBe("time");
|
|
150
152
|
});
|
|
151
153
|
});
|
|
152
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mZXIuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rvb2xzL3RhYmxlU2NoZW1hL2luZmVyLnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ2pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUM3QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFakQsUUFBUSxDQUFDLHNCQUFzQixFQUFFLEdBQUcsRUFBRTtJQUNwQyxFQUFFLENBQUMsMEJBQTBCLEVBQUUsR0FBRyxFQUFFO1FBQ2xDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtRQUMxRCxNQUFNLENBQUMsb0JBQW9CLENBQUMsV0FBVyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUE7UUFDckQsTUFBTSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFBO1FBQ3JELE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQTtRQUN0RCxNQUFNLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBQzdELENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLDZCQUE2QixFQUFFLEtBQUssSUFBSSxFQUFFO1FBQzNDLE1BQU0sSUFBSSxHQUFHLE1BQU0sYUFBYSxDQUFDLG1DQUFtQyxDQUFDLENBQUE7UUFDckUsTUFBTSxRQUFRLEdBQWEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFBO1FBRXJFLE1BQU0sTUFBTSxHQUFHLE1BQU0sb0JB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QUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUMzQixFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTthQUM1QjtTQUNGLENBQUE7UUFFRCxNQUFNLE1BQU0sR0FBRyxNQUFNLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxDQUNqRDtZQUNFLFFBQVE7U0FDVCxFQUNELEVBQUUsQ0FDSCxDQUFBO1FBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNyQixNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQTtRQUVuQyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFBO1FBQ3ZDLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDbkQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUNwRCxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ3RELENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJlc291cmNlIH0gZnJvbSBcIkBmYWlyc3BlYy9saWJyYXJ5XCJcbmltcG9ydCB7IHdyaXRlVGVtcEZpbGUgfSBmcm9tIFwiQGZhaXJzcGVjL2xpYnJhcnlcIlxuaW1wb3J0IHsgZGVzY3JpYmUsIGV4cGVjdCwgaXQgfSBmcm9tIFwidml0ZXN0XCJcbmltcG9ydCB7IGluZmVyVGFibGVTY2hlbWFUb29sIH0gZnJvbSBcIi4vaW5mZXIudHNcIlxuXG5kZXNjcmliZShcImluZmVyVGFibGVTY2hlbWFUb29sXCIsICgpID0+IHtcbiAgaXQoXCJ2YWxpZGF0ZXMgdG9vbCBzdHJ1Y3R1cmVcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChpbmZlclRhYmxlU2NoZW1hVG9vbC5pZCkudG9CZShcImluZmVyLXRhYmxlLXNjaGVtYVwiKVxuICAgIGV4cGVjdChpbmZlclRhYmxlU2NoZW1hVG9vbC5kZXNjcmlwdGlvbikudG9CZVRydXRoeSgpXG4gICAgZXhwZWN0KGluZmVyVGFibGVTY2hlbWFUb29sLmlucHV0U2NoZW1hKS50b0JlVHJ1dGh5KClcbiAgICBleHBlY3QoaW5mZXJUYWJsZVNjaGVtYVRvb2wub3V0cHV0U2NoZW1hKS50b0JlVHJ1dGh5KClcbiAgICBleHBlY3QoaW5mZXJUYWJsZVNjaGVtYVRvb2wuZXhlY3V0ZSkudG9CZVR5cGVPZihcImZ1bmN0aW9uXCIpXG4gIH0pXG5cbiAgaXQoXCJpbmZlcnMgc2NoZW1hIGZyb20gQ1NWIGZpbGVcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHBhdGggPSBhd2FpdCB3cml0ZVRlbXBGaWxlKFwiaWQsbmFtZSxhZ2VcXG4xLGFsaWNlLDMwXFxuMixib2IsMjVcIilcbiAgICBjb25zdCByZXNvdXJjZTogUmVzb3VyY2UgPSB7IGRhdGE6IHBhdGgsIGRpYWxlY3Q6IHsgZm9ybWF0OiBcImNzdlwiIH0gfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgaW5mZXJUYWJsZVNjaGVtYVRvb2wuZXhlY3V0ZT8uKFxuICAgICAge1xuICAgICAgICByZXNvdXJjZSxcbiAgICAgIH0sXG4gICAgICB7fSxcbiAgICApXG5cbiAgICBleHBlY3QuYXNzZXJ0KHJlc3VsdClcbiAgICBleHBlY3QuYXNzZXJ0KCEoXCJlcnJvclwiIGluIHJlc3VsdCkpXG5cbiAgICBleHBlY3QocmVzdWx0LnByb3BlcnRpZXMpLnRvQmVEZWZpbmVkKClcbiAgICBleHBlY3QocmVzdWx0LnByb3BlcnRpZXM/LmlkPy50eXBlKS50b0JlKFwiaW50ZWdlclwiKVxuICAgIGV4cGVjdChyZXN1bHQucHJvcGVydGllcz8ubmFtZT8udHlwZSkudG9CZShcInN0cmluZ1wiKVxuICAgIGV4cGVjdChyZXN1bHQucHJvcGVydGllcz8uYWdlPy50eXBlKS50b0JlKFwiaW50ZWdlclwiKVxuICB9KVxuXG4gIGl0KFwiaW5mZXJzIHNjaGVtYSBmcm9tIGlubGluZSBvYmplY3QgZGF0YVwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVzb3VyY2U6IFJlc291cmNlID0ge1xuICAgICAgZGF0YTogW1xuICAgICAgICB7IGlkOiAxLCBuYW1lOiBcImFsaWNlXCIsIGFnZTogMzAgfSxcbiAgICAgICAgeyBpZDogMiwgbmFtZTogXCJib2JcIiwgYWdlOiAyNSB9LFxuICAgICAgXSxcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBpbmZlclRhYmxlU2NoZW1hVG9vbC5leGVjdXRlPy4oXG4gICAgICB7XG4gICAgICAgIHJlc291cmNlLFxuICAgICAgfSxcbiAgICAgIHt9LFxuICAgIClcblxuICAgIGV4cGVjdC5hc3NlcnQocmVzdWx0KVxuICAgIGV4cGVjdC5hc3NlcnQoIShcImVycm9yXCIgaW4gcmVzdWx0KSlcblxuICAgIGV4cGVjdChyZXN1bHQucHJvcGVydGllcykudG9CZURlZmluZWQoKVxuICAgIGV4cGVjdChyZXN1bHQucHJvcGVydGllcz8uaWQ/LnR5cGUpLnRvQmUoXCJpbnRlZ2VyXCIpXG4gICAgZXhwZWN0KHJlc3VsdC5wcm9wZXJ0aWVzPy5uYW1lPy50eXBlKS50b0JlKFwic3RyaW5nXCIpXG4gICAgZXhwZWN0KHJlc3VsdC5wcm9wZXJ0aWVzPy5hZ2U/LnR5cGUpLnRvQmUoXCJpbnRlZ2VyXCIpXG4gIH0pXG5cbiAgaXQoXCJpbmZlcnMgZGlmZmVyZW50IGZpZWxkIHR5cGVzIGNvcnJlY3RseVwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVzb3VyY2U6IFJlc291cmNlID0ge1xuICAgICAgZGF0YTogW1xuICAgICAgICB7IGlkOiAxLCBuYW1lOiBcImFsaWNlXCIsIHNjb3JlOiA5NS41LCBhY3RpdmU6IHRydWUgfSxcbiAgICAgICAgeyBpZDogMiwgbmFtZTogXCJib2JcIiwgc2NvcmU6IDg3LjMsIGFjdGl2ZTogZmFsc2UgfSxcbiAgICAgIF0sXG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgaW5mZXJUYWJsZVNjaGVtYVRvb2wuZXhlY3V0ZT8uKFxuICAgICAge1xuICAgICAgICByZXNvdXJjZSxcbiAgICAgIH0sXG4gICAgICB7fSxcbiAgICApXG5cbiAgICBleHBlY3QuYXNzZXJ0KHJlc3VsdClcbiAgICBleHBlY3QuYXNzZXJ0KCEoXCJlcnJvclwiIGluIHJlc3VsdCkpXG5cbiAgICBleHBlY3QocmVzdWx0LnByb3BlcnRpZXMpLnRvQmVEZWZpbmVkKClcbiAgICBleHBlY3QocmVzdWx0LnByb3BlcnRpZXM/LmlkPy50eXBlKS50b0JlKFwiaW50ZWdlclwiKVxuICAgIGV4cGVjdChyZXN1bHQucHJvcGVydGllcz8ubmFtZT8udHlwZSkudG9CZShcInN0cmluZ1wiKVxuICAgIGV4cGVjdChyZXN1bHQucHJvcGVydGllcz8uc2NvcmU/LnR5cGUpLnRvQmUoXCJudW1iZXJcIilcbiAgICBleHBlY3QocmVzdWx0LnByb3BlcnRpZXM/LmFjdGl2ZT8udHlwZSkudG9CZShcImJvb2xlYW5cIilcbiAgfSlcblxuICBpdChcImluZmVycyBkYXRlIGZpZWxkcyBmcm9tIHN0cmluZ3NcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHJlc291cmNlOiBSZXNvdXJjZSA9IHtcbiAgICAgIGRhdGE6IFtcbiAgICAgICAgeyBpZDogMSwgbmFtZTogXCJhbGljZVwiLCBjcmVhdGVkOiBcIjIwMjQtMDEtMDFcIiB9LFxuICAgICAgICB7IGlkOiAyLCBuYW1lOiBcImJvYlwiLCBjcmVhdGVkOiBcIjIwMjQtMDEtMDJcIiB9LFxuICAgICAgXSxcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBpbmZlclRhYmxlU2NoZW1hVG9vbC5leGVjdXRlPy4oXG4gICAgICB7XG4gICAgICAgIHJlc291cmNlLFxuICAgICAgfSxcbiAgICAgIHt9LFxuICAgIClcblxuICAgIGV4cGVjdC5hc3NlcnQocmVzdWx0KVxuICAgIGV4cGVjdC5hc3NlcnQoIShcImVycm9yXCIgaW4gcmVzdWx0KSlcblxuICAgIGV4cGVjdChyZXN1bHQucHJvcGVydGllcykudG9CZURlZmluZWQoKVxuICAgIGV4cGVjdChyZXN1bHQucHJvcGVydGllcz8uaWQ/LnR5cGUpLnRvQmUoXCJpbnRlZ2VyXCIpXG4gICAgZXhwZWN0KHJlc3VsdC5wcm9wZXJ0aWVzPy5uYW1lPy50eXBlKS50b0JlKFwic3RyaW5nXCIpXG4gICAgZXhwZWN0KHJlc3VsdC5wcm9wZXJ0aWVzPy5jcmVhdGVkPy50eXBlKS50b0JlKFwic3RyaW5nXCIpXG4gICAgZXhwZWN0KHJlc3VsdC5wcm9wZXJ0aWVzPy5jcmVhdGVkPy5mb3JtYXQpLnRvQmUoXCJkYXRlXCIpXG4gIH0pXG5cbiAgaXQoXCJyZXNwZWN0cyBzYW1wbGVSb3dzIG9wdGlvblwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVzb3VyY2U6IFJlc291cmNlID0ge1xuICAgICAgZGF0YTogQXJyYXkuZnJvbSh7IGxlbmd0aDogMTAwMCB9LCAoXywgaSkgPT4gKHtcbiAgICAgICAgaWQ6IGksXG4gICAgICAgIG5hbWU6IGB1c2VyJHtpfWAsXG4gICAgICB9KSksXG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgaW5mZXJUYWJsZVNjaGVtYVRvb2wuZXhlY3V0ZT8uKFxuICAgICAge1xuICAgICAgICByZXNvdXJjZSxcbiAgICAgICAgb3B0aW9uczogeyBzYW1wbGVSb3dzOiAxMCB9LFxuICAgICAgfSxcbiAgICAgIHt9LFxuICAgIClcblxuICAgIGV4cGVjdC5hc3NlcnQocmVzdWx0KVxuICAgIGV4cGVjdC5hc3NlcnQoIShcImVycm9yXCIgaW4gcmVzdWx0KSlcblxuICAgIGV4cGVjdChyZXN1bHQucHJvcGVydGllcykudG9CZURlZmluZWQoKVxuICAgIGV4cGVjdChyZXN1bHQucHJvcGVydGllcz8uaWQ/LnR5cGUpLnRvQmUoXCJpbnRlZ2VyXCIpXG4gICAgZXhwZWN0KHJlc3VsdC5wcm9wZXJ0aWVzPy5uYW1lPy50eXBlKS50b0JlKFwic3RyaW5nXCIpXG4gIH0pXG5cbiAgaXQoXCJoYW5kbGVzIGVtcHR5IGRhdGFcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHJlc291cmNlOiBSZXNvdXJjZSA9IHtcbiAgICAgIGRhdGE6IFtdLFxuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGluZmVyVGFibGVTY2hlbWFUb29sLmV4ZWN1dGU/LihcbiAgICAgIHtcbiAgICAgICAgcmVzb3VyY2UsXG4gICAgICB9LFxuICAgICAge30sXG4gICAgKVxuXG4gICAgZXhwZWN0KHJlc3VsdCkudG9CZVVuZGVmaW5lZCgpXG4gIH0pXG5cbiAgaXQoXCJoYW5kbGVzIHNpbmdsZSByb3cgZGF0YVwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVzb3VyY2U6IFJlc291cmNlID0ge1xuICAgICAgZGF0YTogW3sgaWQ6IDEsIG5hbWU6IFwiYWxpY2VcIiB9XSxcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBpbmZlclRhYmxlU2NoZW1hVG9vbC5leGVjdXRlPy4oXG4gICAgICB7XG4gICAgICAgIHJlc291cmNlLFxuICAgICAgfSxcbiAgICAgIHt9LFxuICAgIClcblxuICAgIGV4cGVjdC5hc3NlcnQocmVzdWx0KVxuICAgIGV4cGVjdC5hc3NlcnQoIShcImVycm9yXCIgaW4gcmVzdWx0KSlcblxuICAgIGV4cGVjdChyZXN1bHQucHJvcGVydGllcykudG9CZURlZmluZWQoKVxuICAgIGV4cGVjdChyZXN1bHQucHJvcGVydGllcz8uaWQ/LnR5cGUpLnRvQmUoXCJpbnRlZ2VyXCIpXG4gICAgZXhwZWN0KHJlc3VsdC5wcm9wZXJ0aWVzPy5uYW1lPy50eXBlKS50b0JlKFwic3RyaW5nXCIpXG4gIH0pXG5cbiAgaXQoXCJyZXNwZWN0cyBjb2x1bW5UeXBlcyBvcHRpb25cIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHJlc291cmNlOiBSZXNvdXJjZSA9IHtcbiAgICAgIGRhdGE6IFtcbiAgICAgICAgeyBpZDogXCIxMjNcIiwgdmFsdWU6IFwiNDU2XCIgfSxcbiAgICAgICAgeyBpZDogXCI3ODlcIiwgdmFsdWU6IFwiMDEyXCIgfSxcbiAgICAgIF0sXG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgaW5mZXJUYWJsZVNjaGVtYVRvb2wuZXhlY3V0ZT8uKFxuICAgICAge1xuICAgICAgICByZXNvdXJjZSxcbiAgICAgICAgb3B0aW9uczogeyBjb2x1bW5UeXBlczogeyBpZDogXCJpbnRlZ2VyXCIsIHZhbHVlOiBcImludGVnZXJcIiB9IH0sXG4gICAgICB9LFxuICAgICAge30sXG4gICAgKVxuXG4gICAgZXhwZWN0LmFzc2VydChyZXN1bHQpXG4gICAgZXhwZWN0LmFzc2VydCghKFwiZXJyb3JcIiBpbiByZXN1bHQpKVxuXG4gICAgZXhwZWN0KHJlc3VsdC5wcm9wZXJ0aWVzKS50b0JlRGVmaW5lZCgpXG4gICAgZXhwZWN0KHJlc3VsdC5wcm9wZXJ0aWVzPy5pZD8udHlwZSkudG9CZShcImludGVnZXJcIilcbiAgICBleHBlY3QocmVzdWx0LnByb3BlcnRpZXM/LnZhbHVlPy50eXBlKS50b0JlKFwiaW50ZWdlclwiKVxuICB9KVxuXG4gIGl0KFwiaGFuZGxlcyB0aW1lIGZpZWxkc1wiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVzb3VyY2U6IFJlc291cmNlID0ge1xuICAgICAgZGF0YTogW1xuICAgICAgICB7IGlkOiAxLCB0aW1lOiBcIjE0OjMwOjAwXCIgfSxcbiAgICAgICAgeyBpZDogMiwgdGltZTogXCIwOToxNTozMFwiIH0sXG4gICAgICBdLFxuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGluZmVyVGFibGVTY2hlbWFUb29sLmV4ZWN1dGU/LihcbiAgICAgIHtcbiAgICAgICAgcmVzb3VyY2UsXG4gICAgICB9LFxuICAgICAge30sXG4gICAgKVxuXG4gICAgZXhwZWN0LmFzc2VydChyZXN1bHQpXG4gICAgZXhwZWN0LmFzc2VydCghKFwiZXJyb3JcIiBpbiByZXN1bHQpKVxuXG4gICAgZXhwZWN0KHJlc3VsdC5wcm9wZXJ0aWVzKS50b0JlRGVmaW5lZCgpXG4gICAgZXhwZWN0KHJlc3VsdC5wcm9wZXJ0aWVzPy5pZD8udHlwZSkudG9CZShcImludGVnZXJcIilcbiAgICBleHBlY3QocmVzdWx0LnByb3BlcnRpZXM/LnRpbWU/LnR5cGUpLnRvQmUoXCJzdHJpbmdcIilcbiAgICBleHBlY3QocmVzdWx0LnByb3BlcnRpZXM/LnRpbWU/LmZvcm1hdCkudG9CZShcInRpbWVcIilcbiAgfSlcbn0pXG4iXX0=
|
|
154
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mZXIuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rvb2xzL3RhYmxlU2NoZW1hL2luZmVyLnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ2pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUM3QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFakQsUUFBUSxDQUFDLHNCQUFzQixFQUFFLEdBQUcsRUFBRTtJQUNwQyxFQUFFLENBQUMsMEJBQTBCLEVBQUUsR0FBRyxFQUFFO1FBQ2xDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtRQUMxRCxNQUFNLENBQUMsb0JBQW9CLENBQUMsV0FBVyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUE7UUFDckQsTUFBTSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFBO1FBQ3JELE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQTtRQUN0RCxNQUFNLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBQzdELENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLDZCQUE2QixFQUFFLEtBQUssSUFBSSxFQUFFO1FBQzNDLE1BQU0sSUFBSSxHQUFHLE1BQU0sYUFBYSxDQUFDLG1DQUFtQyxDQUFDLENBQUE7UUFDckUsTUFBTSxRQUFRLEdBQWEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFBO1FBRXJFLE1BQU0sTUFBTSxHQUFHLE1BQU0sb0JB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LElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUM1RCxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUM5RCxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSZXNvdXJjZSB9IGZyb20gXCJAZmFpcnNwZWMvbGlicmFyeVwiXG5pbXBvcnQgeyB3cml0ZVRlbXBGaWxlIH0gZnJvbSBcIkBmYWlyc3BlYy9saWJyYXJ5XCJcbmltcG9ydCB7IGRlc2NyaWJlLCBleHBlY3QsIGl0IH0gZnJvbSBcInZpdGVzdFwiXG5pbXBvcnQgeyBpbmZlclRhYmxlU2NoZW1hVG9vbCB9IGZyb20gXCIuL2luZmVyLnRzXCJcblxuZGVzY3JpYmUoXCJpbmZlclRhYmxlU2NoZW1hVG9vbFwiLCAoKSA9PiB7XG4gIGl0KFwidmFsaWRhdGVzIHRvb2wgc3RydWN0dXJlXCIsICgpID0+IHtcbiAgICBleHBlY3QoaW5mZXJUYWJsZVNjaGVtYVRvb2wuaWQpLnRvQmUoXCJpbmZlci10YWJsZS1zY2hlbWFcIilcbiAgICBleHBlY3QoaW5mZXJUYWJsZVNjaGVtYVRvb2wuZGVzY3JpcHRpb24pLnRvQmVUcnV0aHkoKVxuICAgIGV4cGVjdChpbmZlclRhYmxlU2NoZW1hVG9vbC5pbnB1dFNjaGVtYSkudG9CZVRydXRoeSgpXG4gICAgZXhwZWN0KGluZmVyVGFibGVTY2hlbWFUb29sLm91dHB1dFNjaGVtYSkudG9CZVRydXRoeSgpXG4gICAgZXhwZWN0KGluZmVyVGFibGVTY2hlbWFUb29sLmV4ZWN1dGUpLnRvQmVUeXBlT2YoXCJmdW5jdGlvblwiKVxuICB9KVxuXG4gIGl0KFwiaW5mZXJzIHNjaGVtYSBmcm9tIENTViBmaWxlXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBwYXRoID0gYXdhaXQgd3JpdGVUZW1wRmlsZShcImlkLG5hbWUsYWdlXFxuMSxhbGljZSwzMFxcbjIsYm9iLDI1XCIpXG4gICAgY29uc3QgcmVzb3VyY2U6IFJlc291cmNlID0geyBkYXRhOiBwYXRoLCBkaWFsZWN0OiB7IGZvcm1hdDogXCJjc3ZcIiB9IH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGluZmVyVGFibGVTY2hlbWFUb29sLmV4ZWN1dGU/LihcbiAgICAgIHtcbiAgICAgICAgcmVzb3VyY2UsXG4gICAgICB9LFxuICAgICAge30sXG4gICAgKVxuXG4gICAgZXhwZWN0LmFzc2VydChyZXN1bHQpXG4gICAgZXhwZWN0LmFzc2VydCghKFwiZXJyb3JcIiBpbiByZXN1bHQpKVxuXG4gICAgZXhwZWN0KHJlc3VsdC5zY2hlbWE/LnByb3BlcnRpZXMpLnRvQmVEZWZpbmVkKClcbiAgICBleHBlY3QocmVzdWx0LnNjaGVtYT8ucHJvcGVydGllcz8uaWQ/LnR5cGUpLnRvQmUoXCJpbnRlZ2VyXCIpXG4gICAgZXhwZWN0KHJlc3VsdC5zY2hlbWE/LnByb3BlcnRpZXM/Lm5hbWU/LnR5cGUpLnRvQmUoXCJzdHJpbmdcIilcbiAgICBleHBlY3QocmVzdWx0LnNjaGVtYT8ucHJvcGVydGllcz8uYWdlPy50eXBlKS50b0JlKFwiaW50ZWdlclwiKVxuICB9KVxuXG4gIGl0KFwiaW5mZXJzIHNjaGVtYSBmcm9tIGlubGluZSBvYmplY3QgZGF0YVwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVzb3VyY2U6IFJlc291cmNlID0ge1xuICAgICAgZGF0YTogW1xuICAgICAgICB7IGlkOiAxLCBuYW1lOiBcImFsaWNlXCIsIGFnZTogMzAgfSxcbiAgICAgICAgeyBpZDogMiwgbmFtZTogXCJib2JcIiwgYWdlOiAyNSB9LFxuICAgICAgXSxcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBpbmZlclRhYmxlU2NoZW1hVG9vbC5leGVjdXRlPy4oXG4gICAgICB7XG4gICAgICAgIHJlc291cmNlLFxuICAgICAgfSxcbiAgICAgIHt9LFxuICAgIClcblxuICAgIGV4cGVjdC5hc3NlcnQocmVzdWx0KVxuICAgIGV4cGVjdC5hc3NlcnQoIShcImVycm9yXCIgaW4gcmVzdWx0KSlcblxuICAgIGV4cGVjdChyZXN1bHQuc2NoZW1hPy5wcm9wZXJ0aWVzKS50b0JlRGVmaW5lZCgpXG4gICAgZXhwZWN0KHJlc3VsdC5zY2hlbWE/LnByb3BlcnRpZXM/LmlkPy50eXBlKS50b0JlKFwiaW50ZWdlclwiKVxuICAgIGV4cGVjdChyZXN1bHQuc2NoZW1hPy5wcm9wZXJ0aWVzPy5uYW1lPy50eXBlKS50b0JlKFwic3RyaW5nXCIpXG4gICAgZXhwZWN0KHJlc3VsdC5zY2hlbWE/LnByb3BlcnRpZXM/LmFnZT8udHlwZSkudG9CZShcImludGVnZXJcIilcbiAgfSlcblxuICBpdChcImluZmVycyBkaWZmZXJlbnQgZmllbGQgdHlwZXMgY29ycmVjdGx5XCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCByZXNvdXJjZTogUmVzb3VyY2UgPSB7XG4gICAgICBkYXRhOiBbXG4gICAgICAgIHsgaWQ6IDEsIG5hbWU6IFwiYWxpY2VcIiwgc2NvcmU6IDk1LjUsIGFjdGl2ZTogdHJ1ZSB9LFxuICAgICAgICB7IGlkOiAyLCBuYW1lOiBcImJvYlwiLCBzY29yZTogODcuMywgYWN0aXZlOiBmYWxzZSB9LFxuICAgICAgXSxcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBpbmZlclRhYmxlU2NoZW1hVG9vbC5leGVjdXRlPy4oXG4gICAgICB7XG4gICAgICAgIHJlc291cmNlLFxuICAgICAgfSxcbiAgICAgIHt9LFxuICAgIClcblxuICAgIGV4cGVjdC5hc3NlcnQocmVzdWx0KVxuICAgIGV4cGVjdC5hc3NlcnQoIShcImVycm9yXCIgaW4gcmVzdWx0KSlcblxuICAgIGV4cGVjdChyZXN1bHQuc2NoZW1hPy5wcm9wZXJ0aWVzKS50b0JlRGVmaW5lZCgpXG4gICAgZXhwZWN0KHJlc3VsdC5zY2hlbWE/LnByb3BlcnRpZXM/LmlkPy50eXBlKS50b0JlKFwiaW50ZWdlclwiKVxuICAgIGV4cGVjdChyZXN1bHQuc2NoZW1hPy5wcm9wZXJ0aWVzPy5uYW1lPy50eXBlKS50b0JlKFwic3RyaW5nXCIpXG4gICAgZXhwZWN0KHJlc3VsdC5zY2hlbWE/LnByb3BlcnRpZXM/LnNjb3JlPy50eXBlKS50b0JlKFwibnVtYmVyXCIpXG4gICAgZXhwZWN0KHJlc3VsdC5zY2hlbWE/LnByb3BlcnRpZXM/LmFjdGl2ZT8udHlwZSkudG9CZShcImJvb2xlYW5cIilcbiAgfSlcblxuICBpdChcImluZmVycyBkYXRlIGZpZWxkcyBmcm9tIHN0cmluZ3NcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHJlc291cmNlOiBSZXNvdXJjZSA9IHtcbiAgICAgIGRhdGE6IFtcbiAgICAgICAgeyBpZDogMSwgbmFtZTogXCJhbGljZVwiLCBjcmVhdGVkOiBcIjIwMjQtMDEtMDFcIiB9LFxuICAgICAgICB7IGlkOiAyLCBuYW1lOiBcImJvYlwiLCBjcmVhdGVkOiBcIjIwMjQtMDEtMDJcIiB9LFxuICAgICAgXSxcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBpbmZlclRhYmxlU2NoZW1hVG9vbC5leGVjdXRlPy4oXG4gICAgICB7XG4gICAgICAgIHJlc291cmNlLFxuICAgICAgfSxcbiAgICAgIHt9LFxuICAgIClcblxuICAgIGV4cGVjdC5hc3NlcnQocmVzdWx0KVxuICAgIGV4cGVjdC5hc3NlcnQoIShcImVycm9yXCIgaW4gcmVzdWx0KSlcblxuICAgIGV4cGVjdChyZXN1bHQuc2NoZW1hPy5wcm9wZXJ0aWVzKS50b0JlRGVmaW5lZCgpXG4gICAgZXhwZWN0KHJlc3VsdC5zY2hlbWE/LnByb3BlcnRpZXM/LmlkPy50eXBlKS50b0JlKFwiaW50ZWdlclwiKVxuICAgIGV4cGVjdChyZXN1bHQuc2NoZW1hPy5wcm9wZXJ0aWVzPy5uYW1lPy50eXBlKS50b0JlKFwic3RyaW5nXCIpXG4gICAgZXhwZWN0KHJlc3VsdC5zY2hlbWE/LnByb3BlcnRpZXM/LmNyZWF0ZWQ/LnR5cGUpLnRvQmUoXCJzdHJpbmdcIilcbiAgICBleHBlY3QocmVzdWx0LnNjaGVtYT8ucHJvcGVydGllcz8uY3JlYXRlZD8uZm9ybWF0KS50b0JlKFwiZGF0ZVwiKVxuICB9KVxuXG4gIGl0KFwicmVzcGVjdHMgc2FtcGxlUm93cyBvcHRpb25cIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHJlc291cmNlOiBSZXNvdXJjZSA9IHtcbiAgICAgIGRhdGE6IEFycmF5LmZyb20oeyBsZW5ndGg6IDEwMDAgfSwgKF8sIGkpID0+ICh7XG4gICAgICAgIGlkOiBpLFxuICAgICAgICBuYW1lOiBgdXNlciR7aX1gLFxuICAgICAgfSkpLFxuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGluZmVyVGFibGVTY2hlbWFUb29sLmV4ZWN1dGU/LihcbiAgICAgIHtcbiAgICAgICAgcmVzb3VyY2UsXG4gICAgICAgIG9wdGlvbnM6IHsgc2FtcGxlUm93czogMTAgfSxcbiAgICAgIH0sXG4gICAgICB7fSxcbiAgICApXG5cbiAgICBleHBlY3QuYXNzZXJ0KHJlc3VsdClcbiAgICBleHBlY3QuYXNzZXJ0KCEoXCJlcnJvclwiIGluIHJlc3VsdCkpXG5cbiAgICBleHBlY3QocmVzdWx0LnNjaGVtYT8ucHJvcGVydGllcykudG9CZURlZmluZWQoKVxuICAgIGV4cGVjdChyZXN1bHQuc2NoZW1hPy5wcm9wZXJ0aWVzPy5pZD8udHlwZSkudG9CZShcImludGVnZXJcIilcbiAgICBleHBlY3QocmVzdWx0LnNjaGVtYT8ucHJvcGVydGllcz8ubmFtZT8udHlwZSkudG9CZShcInN0cmluZ1wiKVxuICB9KVxuXG4gIGl0KFwiaGFuZGxlcyBlbXB0eSBkYXRhXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCByZXNvdXJjZTogUmVzb3VyY2UgPSB7XG4gICAgICBkYXRhOiBbXSxcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBpbmZlclRhYmxlU2NoZW1hVG9vbC5leGVjdXRlPy4oXG4gICAgICB7XG4gICAgICAgIHJlc291cmNlLFxuICAgICAgfSxcbiAgICAgIHt9LFxuICAgIClcblxuICAgIGV4cGVjdC5hc3NlcnQocmVzdWx0KVxuICAgIGV4cGVjdC5hc3NlcnQoIShcImVycm9yXCIgaW4gcmVzdWx0KSlcbiAgICBleHBlY3QocmVzdWx0LnNjaGVtYSkudG9CZVVuZGVmaW5lZCgpXG4gIH0pXG5cbiAgaXQoXCJoYW5kbGVzIHNpbmdsZSByb3cgZGF0YVwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVzb3VyY2U6IFJlc291cmNlID0ge1xuICAgICAgZGF0YTogW3sgaWQ6IDEsIG5hbWU6IFwiYWxpY2VcIiB9XSxcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBpbmZlclRhYmxlU2NoZW1hVG9vbC5leGVjdXRlPy4oXG4gICAgICB7XG4gICAgICAgIHJlc291cmNlLFxuICAgICAgfSxcbiAgICAgIHt9LFxuICAgIClcblxuICAgIGV4cGVjdC5hc3NlcnQocmVzdWx0KVxuICAgIGV4cGVjdC5hc3NlcnQoIShcImVycm9yXCIgaW4gcmVzdWx0KSlcblxuICAgIGV4cGVjdChyZXN1bHQuc2NoZW1hPy5wcm9wZXJ0aWVzKS50b0JlRGVmaW5lZCgpXG4gICAgZXhwZWN0KHJlc3VsdC5zY2hlbWE/LnByb3BlcnRpZXM/LmlkPy50eXBlKS50b0JlKFwiaW50ZWdlclwiKVxuICAgIGV4cGVjdChyZXN1bHQuc2NoZW1hPy5wcm9wZXJ0aWVzPy5uYW1lPy50eXBlKS50b0JlKFwic3RyaW5nXCIpXG4gIH0pXG5cbiAgaXQoXCJyZXNwZWN0cyBjb2x1bW5UeXBlcyBvcHRpb25cIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHJlc291cmNlOiBSZXNvdXJjZSA9IHtcbiAgICAgIGRhdGE6IFtcbiAgICAgICAgeyBpZDogXCIxMjNcIiwgdmFsdWU6IFwiNDU2XCIgfSxcbiAgICAgICAgeyBpZDogXCI3ODlcIiwgdmFsdWU6IFwiMDEyXCIgfSxcbiAgICAgIF0sXG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgaW5mZXJUYWJsZVNjaGVtYVRvb2wuZXhlY3V0ZT8uKFxuICAgICAge1xuICAgICAgICByZXNvdXJjZSxcbiAgICAgICAgb3B0aW9uczogeyBjb2x1bW5UeXBlczogeyBpZDogXCJpbnRlZ2VyXCIsIHZhbHVlOiBcImludGVnZXJcIiB9IH0sXG4gICAgICB9LFxuICAgICAge30sXG4gICAgKVxuXG4gICAgZXhwZWN0LmFzc2VydChyZXN1bHQpXG4gICAgZXhwZWN0LmFzc2VydCghKFwiZXJyb3JcIiBpbiByZXN1bHQpKVxuXG4gICAgZXhwZWN0KHJlc3VsdC5zY2hlbWE/LnByb3BlcnRpZXMpLnRvQmVEZWZpbmVkKClcbiAgICBleHBlY3QocmVzdWx0LnNjaGVtYT8ucHJvcGVydGllcz8uaWQ/LnR5cGUpLnRvQmUoXCJpbnRlZ2VyXCIpXG4gICAgZXhwZWN0KHJlc3VsdC5zY2hlbWE/LnByb3BlcnRpZXM/LnZhbHVlPy50eXBlKS50b0JlKFwiaW50ZWdlclwiKVxuICB9KVxuXG4gIGl0KFwiaGFuZGxlcyB0aW1lIGZpZWxkc1wiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVzb3VyY2U6IFJlc291cmNlID0ge1xuICAgICAgZGF0YTogW1xuICAgICAgICB7IGlkOiAxLCB0aW1lOiBcIjE0OjMwOjAwXCIgfSxcbiAgICAgICAgeyBpZDogMiwgdGltZTogXCIwOToxNTozMFwiIH0sXG4gICAgICBdLFxuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGluZmVyVGFibGVTY2hlbWFUb29sLmV4ZWN1dGU/LihcbiAgICAgIHtcbiAgICAgICAgcmVzb3VyY2UsXG4gICAgICB9LFxuICAgICAge30sXG4gICAgKVxuXG4gICAgZXhwZWN0LmFzc2VydChyZXN1bHQpXG4gICAgZXhwZWN0LmFzc2VydCghKFwiZXJyb3JcIiBpbiByZXN1bHQpKVxuXG4gICAgZXhwZWN0KHJlc3VsdC5zY2hlbWE/LnByb3BlcnRpZXMpLnRvQmVEZWZpbmVkKClcbiAgICBleHBlY3QocmVzdWx0LnNjaGVtYT8ucHJvcGVydGllcz8uaWQ/LnR5cGUpLnRvQmUoXCJpbnRlZ2VyXCIpXG4gICAgZXhwZWN0KHJlc3VsdC5zY2hlbWE/LnByb3BlcnRpZXM/LnRpbWU/LnR5cGUpLnRvQmUoXCJzdHJpbmdcIilcbiAgICBleHBlY3QocmVzdWx0LnNjaGVtYT8ucHJvcGVydGllcz8udGltZT8uZm9ybWF0KS50b0JlKFwidGltZVwiKVxuICB9KVxufSlcbiJdfQ==
|
|
@@ -1,177 +1,179 @@
|
|
|
1
1
|
export declare const validateTableSchemaTool: import("@mastra/core/tools").Tool<{
|
|
2
2
|
source: string | Record<string, unknown>;
|
|
3
3
|
}, {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
reference: {
|
|
4
|
+
report: {
|
|
5
|
+
valid: boolean;
|
|
6
|
+
errors: ({
|
|
7
|
+
type: "metadata";
|
|
8
|
+
message: string;
|
|
9
|
+
jsonPointer: string;
|
|
10
|
+
resourceName?: string | undefined;
|
|
11
|
+
} | {
|
|
12
|
+
type: "resource/missing";
|
|
13
|
+
referencingResourceName: string;
|
|
14
|
+
resourceName?: string | undefined;
|
|
15
|
+
} | {
|
|
16
|
+
type: "resource/type";
|
|
17
|
+
expectedResourceType: "data" | "table";
|
|
18
|
+
resourceName?: string | undefined;
|
|
19
|
+
referencingResourceName?: string | undefined;
|
|
20
|
+
} | {
|
|
21
|
+
type: "column/missing";
|
|
22
|
+
columnName: string;
|
|
23
|
+
resourceName?: string | undefined;
|
|
24
|
+
} | {
|
|
25
|
+
type: "column/type";
|
|
26
|
+
columnName: string;
|
|
27
|
+
expectedColumnType: "string" | "number" | "boolean" | "object" | "unknown" | "date" | "array" | "base64" | "integer" | "categorical" | "date-time" | "decimal" | "duration" | "email" | "geojson" | "hex" | "list" | "time" | "topojson" | "url" | "wkb" | "wkt";
|
|
28
|
+
actualColumnType: "string" | "number" | "boolean" | "object" | "unknown" | "date" | "array" | "base64" | "integer" | "categorical" | "date-time" | "decimal" | "duration" | "email" | "geojson" | "hex" | "list" | "time" | "topojson" | "url" | "wkb" | "wkt";
|
|
29
|
+
resourceName?: string | undefined;
|
|
30
|
+
} | {
|
|
31
|
+
type: "row/primaryKey";
|
|
32
|
+
rowNumber: number;
|
|
33
|
+
columnNames: string[];
|
|
34
|
+
resourceName?: string | undefined;
|
|
35
|
+
} | {
|
|
36
|
+
type: "row/uniqueKey";
|
|
37
|
+
rowNumber: number;
|
|
38
|
+
columnNames: string[];
|
|
39
|
+
resourceName?: string | undefined;
|
|
40
|
+
} | {
|
|
41
|
+
columnName: string;
|
|
42
|
+
rowNumber: number;
|
|
43
|
+
cell: string;
|
|
44
|
+
type: "cell/type";
|
|
45
|
+
columnType: "string" | "number" | "boolean" | "object" | "unknown" | "date" | "array" | "base64" | "integer" | "categorical" | "date-time" | "decimal" | "duration" | "email" | "geojson" | "hex" | "list" | "time" | "topojson" | "url" | "wkb" | "wkt";
|
|
46
|
+
resourceName?: string | undefined;
|
|
47
|
+
} | {
|
|
48
|
+
columnName: string;
|
|
49
|
+
rowNumber: number;
|
|
50
|
+
cell: string;
|
|
51
|
+
type: "cell/required";
|
|
52
|
+
resourceName?: string | undefined;
|
|
53
|
+
} | {
|
|
54
|
+
columnName: string;
|
|
55
|
+
rowNumber: number;
|
|
56
|
+
cell: string;
|
|
57
|
+
type: "cell/minimum";
|
|
58
|
+
minimum: string;
|
|
59
|
+
resourceName?: string | undefined;
|
|
60
|
+
} | {
|
|
61
|
+
columnName: string;
|
|
62
|
+
rowNumber: number;
|
|
63
|
+
cell: string;
|
|
64
|
+
type: "cell/maximum";
|
|
65
|
+
maximum: string;
|
|
66
|
+
resourceName?: string | undefined;
|
|
67
|
+
} | {
|
|
68
|
+
columnName: string;
|
|
69
|
+
rowNumber: number;
|
|
70
|
+
cell: string;
|
|
71
|
+
type: "cell/exclusiveMinimum";
|
|
72
|
+
minimum: string;
|
|
73
|
+
resourceName?: string | undefined;
|
|
74
|
+
} | {
|
|
75
|
+
columnName: string;
|
|
76
|
+
rowNumber: number;
|
|
77
|
+
cell: string;
|
|
78
|
+
type: "cell/exclusiveMaximum";
|
|
79
|
+
maximum: string;
|
|
80
|
+
resourceName?: string | undefined;
|
|
81
|
+
} | {
|
|
82
|
+
columnName: string;
|
|
83
|
+
rowNumber: number;
|
|
84
|
+
cell: string;
|
|
85
|
+
type: "cell/multipleOf";
|
|
86
|
+
multipleOf: number;
|
|
87
|
+
resourceName?: string | undefined;
|
|
88
|
+
} | {
|
|
89
|
+
columnName: string;
|
|
90
|
+
rowNumber: number;
|
|
91
|
+
cell: string;
|
|
92
|
+
type: "cell/minLength";
|
|
93
|
+
minLength: number;
|
|
94
|
+
resourceName?: string | undefined;
|
|
95
|
+
} | {
|
|
96
|
+
columnName: string;
|
|
97
|
+
rowNumber: number;
|
|
98
|
+
cell: string;
|
|
99
|
+
type: "cell/maxLength";
|
|
100
|
+
maxLength: number;
|
|
101
|
+
resourceName?: string | undefined;
|
|
102
|
+
} | {
|
|
103
|
+
columnName: string;
|
|
104
|
+
rowNumber: number;
|
|
105
|
+
cell: string;
|
|
106
|
+
type: "cell/minItems";
|
|
107
|
+
minItems: number;
|
|
108
|
+
resourceName?: string | undefined;
|
|
109
|
+
} | {
|
|
110
|
+
columnName: string;
|
|
111
|
+
rowNumber: number;
|
|
112
|
+
cell: string;
|
|
113
|
+
type: "cell/maxItems";
|
|
114
|
+
maxItems: number;
|
|
115
|
+
resourceName?: string | undefined;
|
|
116
|
+
} | {
|
|
117
|
+
columnName: string;
|
|
118
|
+
rowNumber: number;
|
|
119
|
+
cell: string;
|
|
120
|
+
type: "cell/pattern";
|
|
121
|
+
pattern: string;
|
|
122
|
+
resourceName?: string | undefined;
|
|
123
|
+
} | {
|
|
124
|
+
columnName: string;
|
|
125
|
+
rowNumber: number;
|
|
126
|
+
cell: string;
|
|
127
|
+
type: "cell/unique";
|
|
128
|
+
resourceName?: string | undefined;
|
|
129
|
+
} | {
|
|
130
|
+
columnName: string;
|
|
131
|
+
rowNumber: number;
|
|
132
|
+
cell: string;
|
|
133
|
+
type: "cell/const";
|
|
134
|
+
const: string;
|
|
135
|
+
resourceName?: string | undefined;
|
|
136
|
+
} | {
|
|
137
|
+
columnName: string;
|
|
138
|
+
rowNumber: number;
|
|
139
|
+
cell: string;
|
|
140
|
+
type: "cell/enum";
|
|
141
|
+
enum: string[];
|
|
142
|
+
resourceName?: string | undefined;
|
|
143
|
+
} | {
|
|
144
|
+
columnName: string;
|
|
145
|
+
rowNumber: number;
|
|
146
|
+
cell: string;
|
|
147
|
+
type: "cell/json";
|
|
148
|
+
message: string;
|
|
149
|
+
jsonPointer: string;
|
|
150
|
+
resourceName?: string | undefined;
|
|
151
|
+
} | {
|
|
152
|
+
type: "foreignKey";
|
|
153
|
+
foreignKey: {
|
|
155
154
|
columns: string[];
|
|
156
|
-
|
|
155
|
+
reference: {
|
|
156
|
+
columns: string[];
|
|
157
|
+
resource?: string | undefined;
|
|
158
|
+
};
|
|
157
159
|
};
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
}
|
|
160
|
+
cells: string[];
|
|
161
|
+
resourceName?: string | undefined;
|
|
162
|
+
} | {
|
|
163
|
+
type: "data";
|
|
164
|
+
message: string;
|
|
165
|
+
jsonPointer: string;
|
|
166
|
+
resourceName?: string | undefined;
|
|
167
|
+
} | {
|
|
168
|
+
type: "file/textual";
|
|
169
|
+
resourceName?: string | undefined;
|
|
170
|
+
actualEncoding?: string | undefined;
|
|
171
|
+
} | {
|
|
172
|
+
type: "file/integrity";
|
|
173
|
+
hashType: string;
|
|
174
|
+
expectedHash: string;
|
|
175
|
+
actualHash: string;
|
|
176
|
+
resourceName?: string | undefined;
|
|
177
|
+
})[];
|
|
178
|
+
};
|
|
177
179
|
}, unknown, unknown, import("@mastra/core/tools").ToolExecutionContext<unknown, unknown, unknown>, "validate-table-schema", unknown>;
|
|
@@ -9,9 +9,12 @@ export const validateTableSchemaTool = createTool({
|
|
|
9
9
|
.union([Descriptor, z.string()])
|
|
10
10
|
.describe("The table schema to validate (descriptor object or file path)"),
|
|
11
11
|
}),
|
|
12
|
-
outputSchema:
|
|
12
|
+
outputSchema: z.object({
|
|
13
|
+
report: Report,
|
|
14
|
+
}),
|
|
13
15
|
execute: async (input) => {
|
|
14
|
-
|
|
16
|
+
const report = await validateTableSchema(input.source);
|
|
17
|
+
return { report };
|
|
15
18
|
},
|
|
16
19
|
});
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90b29scy90YWJsZVNjaGVtYS92YWxpZGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQzNFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFBO0FBRXZCLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLFVBQVUsQ0FBQztJQUNoRCxFQUFFLEVBQUUsdUJBQXVCO0lBQzNCLFdBQVcsRUFDVCx3SEFBd0g7SUFDMUgsV0FBVyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDcEIsTUFBTSxFQUFFLENBQUM7YUFDTixLQUFLLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7YUFDL0IsUUFBUSxDQUNQLCtEQUErRCxDQUNoRTtLQUNKLENBQUM7SUFDRixZQUFZLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUNyQixNQUFNLEVBQUUsTUFBTTtLQUNmLENBQUM7SUFDRixPQUFPLEVBQUUsS0FBSyxFQUFDLEtBQUssRUFBQyxFQUFFO1FBQ3JCLE1BQU0sTUFBTSxHQUFHLE1BQU0sbUJBQW1CLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ3RELE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQTtJQUNuQixDQUFDO0NBQ0YsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVzY3JpcHRvciwgUmVwb3J0LCB2YWxpZGF0ZVRhYmxlU2NoZW1hIH0gZnJvbSBcIkBmYWlyc3BlYy9saWJyYXJ5XCJcbmltcG9ydCB7IGNyZWF0ZVRvb2wgfSBmcm9tIFwiQG1hc3RyYS9jb3JlL3Rvb2xzXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGNvbnN0IHZhbGlkYXRlVGFibGVTY2hlbWFUb29sID0gY3JlYXRlVG9vbCh7XG4gIGlkOiBcInZhbGlkYXRlLXRhYmxlLXNjaGVtYVwiLFxuICBkZXNjcmlwdGlvbjpcbiAgICBcIlZhbGlkYXRlIGEgdGFibGUgc2NoZW1hIGFnYWluc3QgdGhlIEZhaXJzcGVjIFRhYmxlIFNjaGVtYSBzcGVjaWZpY2F0aW9uLiBSZXR1cm5zIHZhbGlkYXRpb24gcmVwb3J0IHdpdGggZXJyb3JzIGlmIGFueS5cIixcbiAgaW5wdXRTY2hlbWE6IHoub2JqZWN0KHtcbiAgICBzb3VyY2U6IHpcbiAgICAgIC51bmlvbihbRGVzY3JpcHRvciwgei5zdHJpbmcoKV0pXG4gICAgICAuZGVzY3JpYmUoXG4gICAgICAgIFwiVGhlIHRhYmxlIHNjaGVtYSB0byB2YWxpZGF0ZSAoZGVzY3JpcHRvciBvYmplY3Qgb3IgZmlsZSBwYXRoKVwiLFxuICAgICAgKSxcbiAgfSksXG4gIG91dHB1dFNjaGVtYTogei5vYmplY3Qoe1xuICAgIHJlcG9ydDogUmVwb3J0LFxuICB9KSxcbiAgZXhlY3V0ZTogYXN5bmMgaW5wdXQgPT4ge1xuICAgIGNvbnN0IHJlcG9ydCA9IGF3YWl0IHZhbGlkYXRlVGFibGVTY2hlbWEoaW5wdXQuc291cmNlKVxuICAgIHJldHVybiB7IHJlcG9ydCB9XG4gIH0sXG59KVxuIl19
|