@jackchuka/gql-ingest 2.1.0 → 2.2.1
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/README.md +7 -7
- package/dist/cli.js +237 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/dependency-resolver.d.ts.map +1 -1
- package/dist/graphql-client.d.ts.map +1 -1
- package/dist/mapper.d.ts +1 -1
- package/dist/mapper.d.ts.map +1 -1
- package/dist/metrics.d.ts.map +1 -1
- package/dist/readers/data-reader.d.ts.map +1 -1
- package/dist/readers/json.d.ts.map +1 -1
- package/dist/readers/jsonl.d.ts.map +1 -1
- package/dist/readers/yaml.d.ts.map +1 -1
- package/package.json +31 -25
- package/bin/cli.js +0 -231
- package/src/cli.ts +0 -187
- package/src/config.test.ts +0 -272
- package/src/config.ts +0 -125
- package/src/dependency-resolver.test.ts +0 -211
- package/src/dependency-resolver.ts +0 -102
- package/src/graphql-client.test.ts +0 -219
- package/src/graphql-client.ts +0 -151
- package/src/mapper.test.ts +0 -607
- package/src/mapper.ts +0 -489
- package/src/metrics.test.ts +0 -207
- package/src/metrics.ts +0 -161
- package/src/readers/csv.test.ts +0 -82
- package/src/readers/csv.ts +0 -29
- package/src/readers/data-reader.test.ts +0 -104
- package/src/readers/data-reader.ts +0 -61
- package/src/readers/index.ts +0 -18
- package/src/readers/json.test.ts +0 -80
- package/src/readers/json.ts +0 -27
- package/src/readers/jsonl.test.ts +0 -96
- package/src/readers/jsonl.ts +0 -28
- package/src/readers/yaml.test.ts +0 -95
- package/src/readers/yaml.ts +0 -28
package/src/readers/yaml.test.ts
DELETED
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
import fs from "fs/promises";
|
|
2
|
-
import yaml from "js-yaml";
|
|
3
|
-
import { YamlReader } from "./yaml";
|
|
4
|
-
|
|
5
|
-
jest.mock("fs/promises");
|
|
6
|
-
jest.mock("js-yaml");
|
|
7
|
-
|
|
8
|
-
describe("YamlReader", () => {
|
|
9
|
-
let reader: YamlReader;
|
|
10
|
-
const mockFs = fs as jest.Mocked<typeof fs>;
|
|
11
|
-
const mockYaml = yaml as jest.Mocked<typeof yaml>;
|
|
12
|
-
|
|
13
|
-
beforeEach(() => {
|
|
14
|
-
reader = new YamlReader();
|
|
15
|
-
jest.clearAllMocks();
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
describe("getSupportedExtensions", () => {
|
|
19
|
-
it("should return yaml and yml as supported extensions", () => {
|
|
20
|
-
expect(reader.getSupportedExtensions()).toEqual(["yaml", "yml"]);
|
|
21
|
-
});
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
describe("canHandle", () => {
|
|
25
|
-
it("should return true for .yaml and .yml files", () => {
|
|
26
|
-
expect(reader.canHandle("data.yaml")).toBe(true);
|
|
27
|
-
expect(reader.canHandle("data.yml")).toBe(true);
|
|
28
|
-
expect(reader.canHandle("path/to/file.yaml")).toBe(true);
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
it("should return false for non-yaml files", () => {
|
|
32
|
-
expect(reader.canHandle("data.json")).toBe(false);
|
|
33
|
-
expect(reader.canHandle("data.csv")).toBe(false);
|
|
34
|
-
expect(reader.canHandle("data")).toBe(false);
|
|
35
|
-
});
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
describe("readFile", () => {
|
|
39
|
-
it("should read and parse YAML array", async () => {
|
|
40
|
-
const mockData = [
|
|
41
|
-
{ id: 1, name: "Item 1" },
|
|
42
|
-
{ id: 2, name: "Item 2" },
|
|
43
|
-
];
|
|
44
|
-
const yamlContent = "- id: 1\n name: Item 1\n- id: 2\n name: Item 2";
|
|
45
|
-
mockFs.readFile.mockResolvedValue(yamlContent);
|
|
46
|
-
mockYaml.load.mockReturnValue(mockData);
|
|
47
|
-
|
|
48
|
-
const result = await reader.readFile("data.yaml");
|
|
49
|
-
|
|
50
|
-
expect(mockFs.readFile).toHaveBeenCalledWith("data.yaml", "utf8");
|
|
51
|
-
expect(mockYaml.load).toHaveBeenCalledWith(yamlContent);
|
|
52
|
-
expect(result).toEqual(mockData);
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
it("should wrap single object in array", async () => {
|
|
56
|
-
const mockData = { id: 1, name: "Item 1" };
|
|
57
|
-
const yamlContent = "id: 1\nname: Item 1";
|
|
58
|
-
mockFs.readFile.mockResolvedValue(yamlContent);
|
|
59
|
-
mockYaml.load.mockReturnValue(mockData);
|
|
60
|
-
|
|
61
|
-
const result = await reader.readFile("data.yaml");
|
|
62
|
-
|
|
63
|
-
expect(result).toEqual([mockData]);
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
it("should throw error for invalid YAML", async () => {
|
|
67
|
-
mockFs.readFile.mockResolvedValue("invalid: yaml: content:");
|
|
68
|
-
mockYaml.load.mockImplementation(() => {
|
|
69
|
-
throw new Error("Invalid YAML");
|
|
70
|
-
});
|
|
71
|
-
|
|
72
|
-
await expect(reader.readFile("data.yaml")).rejects.toThrow(
|
|
73
|
-
"Invalid YAML"
|
|
74
|
-
);
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
it("should throw error for null data", async () => {
|
|
78
|
-
mockFs.readFile.mockResolvedValue("null");
|
|
79
|
-
mockYaml.load.mockReturnValue(null);
|
|
80
|
-
|
|
81
|
-
await expect(reader.readFile("data.yaml")).rejects.toThrow(
|
|
82
|
-
"Invalid YAML data structure in file: data.yaml. Expected array or object."
|
|
83
|
-
);
|
|
84
|
-
});
|
|
85
|
-
|
|
86
|
-
it("should throw error for primitive values", async () => {
|
|
87
|
-
mockFs.readFile.mockResolvedValue("string value");
|
|
88
|
-
mockYaml.load.mockReturnValue("string value");
|
|
89
|
-
|
|
90
|
-
await expect(reader.readFile("data.yaml")).rejects.toThrow(
|
|
91
|
-
"Invalid YAML data structure in file: data.yaml. Expected array or object."
|
|
92
|
-
);
|
|
93
|
-
});
|
|
94
|
-
});
|
|
95
|
-
});
|
package/src/readers/yaml.ts
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import fs from "fs/promises";
|
|
2
|
-
import yaml from "js-yaml";
|
|
3
|
-
import { DataReader, DataRow } from "./data-reader";
|
|
4
|
-
|
|
5
|
-
export class YamlReader extends DataReader {
|
|
6
|
-
getSupportedExtensions(): string[] {
|
|
7
|
-
return ["yaml", "yml"];
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
async readFile(filePath: string): Promise<DataRow[]> {
|
|
11
|
-
const content = await fs.readFile(filePath, "utf8");
|
|
12
|
-
const data = yaml.load(content);
|
|
13
|
-
|
|
14
|
-
// If the data is already an array, return it
|
|
15
|
-
if (Array.isArray(data)) {
|
|
16
|
-
return data;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
// If it's a single object, wrap it in an array
|
|
20
|
-
if (typeof data === "object" && data !== null) {
|
|
21
|
-
return [data];
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
throw new Error(
|
|
25
|
-
`Invalid YAML data structure in file: ${filePath}. Expected array or object.`
|
|
26
|
-
);
|
|
27
|
-
}
|
|
28
|
-
}
|