@ldsg/cli 0.3.31 → 0.3.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/.rush/temp/package-deps_build.json +27 -27
  2. package/.rush/temp/shrinkwrap-deps.json +58 -3
  3. package/.tsbuildinfo +1 -1
  4. package/CHANGELOG.json +26 -0
  5. package/CHANGELOG.md +16 -2
  6. package/README.md +3 -0
  7. package/dist/__tests__/commands.test.js +104 -104
  8. package/dist/__tests__/formatter.test.js +66 -63
  9. package/dist/__tests__/formatter.test.js.map +1 -1
  10. package/dist/__tests__/json-file-mutator.test.js +48 -45
  11. package/dist/__tests__/json-file-mutator.test.js.map +1 -1
  12. package/dist/__tests__/source-resolver.test.js +39 -39
  13. package/dist/cli.js +89 -89
  14. package/dist/cli.js.map +1 -1
  15. package/dist/commands/resource/convert.d.ts +1 -1
  16. package/dist/commands/resource/convert.js +9 -7
  17. package/dist/commands/resource/convert.js.map +1 -1
  18. package/dist/commands/resource/create.d.ts +2 -2
  19. package/dist/commands/resource/create.js +5 -5
  20. package/dist/commands/resource/delete.d.ts +2 -2
  21. package/dist/commands/resource/delete.js.map +1 -1
  22. package/dist/commands/resource/diff.d.ts +2 -2
  23. package/dist/commands/resource/diff.js +8 -8
  24. package/dist/commands/resource/get.d.ts +1 -1
  25. package/dist/commands/resource/list.d.ts +2 -2
  26. package/dist/commands/resource/list.js +11 -11
  27. package/dist/commands/resource/list.js.map +1 -1
  28. package/dist/commands/resource/tree.d.ts +1 -1
  29. package/dist/commands/resource/update.d.ts +2 -2
  30. package/dist/commands/resource/update.js +1 -1
  31. package/dist/constants.js +2 -2
  32. package/dist/types/get-extend-app-data-params.d.ts +2 -2
  33. package/dist/types/resource-record.d.ts +2 -2
  34. package/dist/utils/formatter.d.ts +1 -1
  35. package/dist/utils/formatter.js +25 -25
  36. package/dist/utils/get-extend-app-data-params-using-npm-ldsg-module.d.ts +1 -1
  37. package/dist/utils/get-extend-app-data-params-using-npm-ldsg-module.js +12 -12
  38. package/dist/utils/get-extend-app-data-params-using-npm-ldsg-module.js.map +1 -1
  39. package/dist/utils/get-extend-app-data-params-using-workspace-ldsg-module/index.d.ts +1 -1
  40. package/dist/utils/get-extend-app-data-params-using-workspace-ldsg-module/index.js +20 -20
  41. package/dist/utils/get-extend-app-data-params-using-workspace-ldsg-module/index.js.map +1 -1
  42. package/dist/utils/json-file-mutator.d.ts +2 -2
  43. package/dist/utils/json-file-mutator.js +4 -4
  44. package/dist/utils/json-file-mutator.js.map +1 -1
  45. package/dist/utils/source-resolver.d.ts +1 -1
  46. package/dist/utils/source-resolver.js +15 -15
  47. package/dist/utils/source-resolver.js.map +1 -1
  48. package/jest.config.js +8 -8
  49. package/package.json +9 -6
  50. package/src/__tests__/commands.test.ts +116 -116
  51. package/src/__tests__/formatter.test.ts +68 -65
  52. package/src/__tests__/json-file-mutator.test.ts +57 -52
  53. package/src/__tests__/source-resolver.test.ts +43 -43
  54. package/src/cli.ts +132 -114
  55. package/src/commands/resource/convert.ts +13 -11
  56. package/src/commands/resource/create.ts +8 -8
  57. package/src/commands/resource/delete.ts +6 -4
  58. package/src/commands/resource/diff.ts +10 -10
  59. package/src/commands/resource/get.ts +2 -2
  60. package/src/commands/resource/list.ts +20 -18
  61. package/src/commands/resource/tree.ts +2 -2
  62. package/src/commands/resource/update.ts +4 -4
  63. package/src/constants.ts +2 -2
  64. package/src/types/get-extend-app-data-params.ts +5 -3
  65. package/src/types/resource-record.ts +2 -2
  66. package/src/utils/formatter.ts +27 -27
  67. package/src/utils/get-extend-app-data-params-using-npm-ldsg-module.ts +20 -16
  68. package/src/utils/get-extend-app-data-params-using-workspace-ldsg-module/index.ts +28 -26
  69. package/src/utils/json-file-mutator.ts +18 -12
  70. package/src/utils/source-resolver.ts +26 -21
@@ -5,96 +5,99 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const fs_extra_1 = __importDefault(require("fs-extra"));
7
7
  const json_file_mutator_1 = require("../utils/json-file-mutator");
8
- jest.mock('fs-extra');
8
+ jest.mock("fs-extra");
9
9
  const mockedFs = fs_extra_1.default;
10
- describe('json-file-mutator', () => {
10
+ describe("json-file-mutator", () => {
11
11
  const arrayRecords = [
12
- { id: '1', kind: 'application', parentId: null, settings: { title: 'App1' } },
13
- { id: '2', kind: 'form', parentId: '1', settings: { title: 'Form1' } },
14
- { id: '3', kind: 'table', parentId: '1', settings: { title: 'Table1' } },
15
- { id: '4', kind: 'field', parentId: '3', settings: { title: 'Field1' } }
12
+ { id: "1", kind: "application", parentId: null, settings: { title: "App1" } },
13
+ { id: "2", kind: "form", parentId: "1", settings: { title: "Form1" } },
14
+ { id: "3", kind: "table", parentId: "1", settings: { title: "Table1" } },
15
+ { id: "4", kind: "field", parentId: "3", settings: { title: "Field1" } },
16
16
  ];
17
17
  const arraySourceData = {
18
18
  resourceRecords: arrayRecords,
19
- format: 'array',
20
- filePath: '/test/data.json'
19
+ format: "array",
20
+ filePath: "/test/data.json",
21
21
  };
22
22
  const objectSourceData = {
23
23
  resourceRecords: arrayRecords,
24
- format: 'object',
25
- filePath: '/test/data.json'
24
+ format: "object",
25
+ filePath: "/test/data.json",
26
26
  };
27
27
  beforeEach(() => {
28
28
  jest.resetAllMocks();
29
29
  mockedFs.readJson.mockResolvedValue([...arrayRecords]);
30
30
  });
31
- describe('generateId', () => {
32
- it('should generate a string id', () => {
31
+ describe("generateId", () => {
32
+ it("should generate a string id", () => {
33
33
  const id = (0, json_file_mutator_1.generateId)();
34
- expect(typeof id).toBe('string');
34
+ expect(typeof id).toBe("string");
35
35
  expect(id.length).toBeGreaterThan(5);
36
36
  });
37
- it('should generate unique ids', () => {
37
+ it("should generate unique ids", () => {
38
38
  const ids = new Set(Array.from({ length: 10 }, () => (0, json_file_mutator_1.generateId)()));
39
39
  expect(ids.size).toBe(10);
40
40
  });
41
41
  });
42
- describe('appendRecord', () => {
43
- it('should append a new record to array format', async () => {
42
+ describe("appendRecord", () => {
43
+ it("should append a new record to array format", async () => {
44
44
  mockedFs.readJson.mockResolvedValue([...arrayRecords]);
45
- const newRecord = { id: '5', kind: 'form', parentId: '1', settings: { title: 'Form2' } };
45
+ const newRecord = { id: "5", kind: "form", parentId: "1", settings: { title: "Form2" } };
46
46
  const result = await (0, json_file_mutator_1.appendRecord)(arraySourceData, newRecord);
47
- expect(result.record.id).toBe('5');
47
+ expect(result.record.id).toBe("5");
48
48
  expect(result.allRecords).toHaveLength(5);
49
- expect(mockedFs.writeJson).toHaveBeenCalledWith('/test/data.json', expect.arrayContaining([expect.objectContaining({ id: '5' })]), { spaces: 2 });
49
+ expect(mockedFs.writeJson).toHaveBeenCalledWith("/test/data.json", expect.arrayContaining([expect.objectContaining({ id: "5" })]), { spaces: 2 });
50
50
  });
51
- it('should append to object format preserving structure', async () => {
51
+ it("should append to object format preserving structure", async () => {
52
52
  mockedFs.readJson.mockResolvedValue({ resourceRecords: [...arrayRecords] });
53
- const newRecord = { id: '5', kind: 'form', parentId: '1', settings: {} };
53
+ const newRecord = { id: "5", kind: "form", parentId: "1", settings: {} };
54
54
  await (0, json_file_mutator_1.appendRecord)(objectSourceData, newRecord);
55
- expect(mockedFs.writeJson).toHaveBeenCalledWith('/test/data.json', expect.objectContaining({
56
- resourceRecords: expect.arrayContaining([expect.objectContaining({ id: '5' })])
55
+ expect(mockedFs.writeJson).toHaveBeenCalledWith("/test/data.json", expect.objectContaining({
56
+ resourceRecords: expect.arrayContaining([expect.objectContaining({ id: "5" })]),
57
57
  }), { spaces: 2 });
58
58
  });
59
- it('should throw on duplicate id', async () => {
60
- const dupRecord = { id: '1', kind: 'application', parentId: null, settings: {} };
61
- await expect((0, json_file_mutator_1.appendRecord)(arraySourceData, dupRecord)).rejects.toThrow('already exists');
59
+ it("should throw on duplicate id", async () => {
60
+ const dupRecord = { id: "1", kind: "application", parentId: null, settings: {} };
61
+ await expect((0, json_file_mutator_1.appendRecord)(arraySourceData, dupRecord)).rejects.toThrow("already exists");
62
62
  });
63
- it('should not write file in dry-run mode', async () => {
64
- const newRecord = { id: '5', kind: 'form', parentId: '1', settings: {} };
63
+ it("should not write file in dry-run mode", async () => {
64
+ const newRecord = { id: "5", kind: "form", parentId: "1", settings: {} };
65
65
  await (0, json_file_mutator_1.appendRecord)(arraySourceData, newRecord, true);
66
66
  expect(mockedFs.writeJson).not.toHaveBeenCalled();
67
67
  });
68
68
  });
69
- describe('updateRecord', () => {
70
- it('should update settings and merge', async () => {
69
+ describe("updateRecord", () => {
70
+ it("should update settings and merge", async () => {
71
71
  mockedFs.readJson.mockResolvedValue([...arrayRecords]);
72
- const result = await (0, json_file_mutator_1.updateRecord)(arraySourceData, '1', { title: 'Updated App', newField: 'value' });
73
- expect(result.record.settings).toEqual({ title: 'Updated App', newField: 'value' });
72
+ const result = await (0, json_file_mutator_1.updateRecord)(arraySourceData, "1", {
73
+ title: "Updated App",
74
+ newField: "value",
75
+ });
76
+ expect(result.record.settings).toEqual({ title: "Updated App", newField: "value" });
74
77
  expect(mockedFs.writeJson).toHaveBeenCalled();
75
78
  });
76
- it('should throw on non-existent id', async () => {
77
- await expect((0, json_file_mutator_1.updateRecord)(arraySourceData, 'nonexistent', { title: 'x' })).rejects.toThrow('not found');
79
+ it("should throw on non-existent id", async () => {
80
+ await expect((0, json_file_mutator_1.updateRecord)(arraySourceData, "nonexistent", { title: "x" })).rejects.toThrow("not found");
78
81
  });
79
- it('should not write file in dry-run mode', async () => {
80
- await (0, json_file_mutator_1.updateRecord)(arraySourceData, '1', { title: 'Dry Run' }, true);
82
+ it("should not write file in dry-run mode", async () => {
83
+ await (0, json_file_mutator_1.updateRecord)(arraySourceData, "1", { title: "Dry Run" }, true);
81
84
  expect(mockedFs.writeJson).not.toHaveBeenCalled();
82
85
  });
83
86
  });
84
- describe('removeRecord', () => {
85
- it('should remove record and its children', async () => {
87
+ describe("removeRecord", () => {
88
+ it("should remove record and its children", async () => {
86
89
  mockedFs.readJson.mockResolvedValue([...arrayRecords]);
87
- const result = await (0, json_file_mutator_1.removeRecord)(arraySourceData, '3');
90
+ const result = await (0, json_file_mutator_1.removeRecord)(arraySourceData, "3");
88
91
  expect(result.removed).toHaveLength(2);
89
- expect(result.removed.map((r) => r.id)).toEqual(['3', '4']);
92
+ expect(result.removed.map((r) => r.id)).toEqual(["3", "4"]);
90
93
  expect(result.allRecords).toHaveLength(2);
91
- expect(result.allRecords.map((r) => r.id)).toEqual(['1', '2']);
94
+ expect(result.allRecords.map((r) => r.id)).toEqual(["1", "2"]);
92
95
  });
93
- it('should throw on non-existent id', async () => {
94
- await expect((0, json_file_mutator_1.removeRecord)(arraySourceData, 'nonexistent')).rejects.toThrow('not found');
96
+ it("should throw on non-existent id", async () => {
97
+ await expect((0, json_file_mutator_1.removeRecord)(arraySourceData, "nonexistent")).rejects.toThrow("not found");
95
98
  });
96
- it('should not write file in dry-run mode', async () => {
97
- const result = await (0, json_file_mutator_1.removeRecord)(arraySourceData, '3', true);
99
+ it("should not write file in dry-run mode", async () => {
100
+ const result = await (0, json_file_mutator_1.removeRecord)(arraySourceData, "3", true);
98
101
  expect(result.removed).toHaveLength(2);
99
102
  expect(mockedFs.writeJson).not.toHaveBeenCalled();
100
103
  });
@@ -1 +1 @@
1
- {"version":3,"file":"json-file-mutator.test.js","sourceRoot":"","sources":["../../src/__tests__/json-file-mutator.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"json-file-mutator.test.js","sourceRoot":"","sources":["../../src/__tests__/json-file-mutator.test.ts"],"names":[],"mappings":"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"}
@@ -7,44 +7,44 @@ const fs_extra_1 = __importDefault(require("fs-extra"));
7
7
  const path_1 = __importDefault(require("path"));
8
8
  const os_1 = __importDefault(require("os"));
9
9
  const source_resolver_1 = require("../utils/source-resolver");
10
- jest.mock('fs-extra');
10
+ jest.mock("fs-extra");
11
11
  const mockedFs = fs_extra_1.default;
12
- describe('source-resolver', () => {
12
+ describe("source-resolver", () => {
13
13
  const tmpDir = os_1.default.tmpdir();
14
- const testFilePath = path_1.default.join(tmpDir, 'test-resources.json');
15
- const testDirPath = path_1.default.join(tmpDir, 'test-resource-dir');
16
- const defaultFilePath = path_1.default.join(process.cwd(), 'resource-records.json');
14
+ const testFilePath = path_1.default.join(tmpDir, "test-resources.json");
15
+ const testDirPath = path_1.default.join(tmpDir, "test-resource-dir");
16
+ const defaultFilePath = path_1.default.join(process.cwd(), "resource-records.json");
17
17
  const arrayData = [
18
- { id: '1', kind: 'application', parentId: null, settings: {} },
19
- { id: '2', kind: 'form', parentId: '1', settings: {} }
18
+ { id: "1", kind: "application", parentId: null, settings: {} },
19
+ { id: "2", kind: "form", parentId: "1", settings: {} },
20
20
  ];
21
21
  const objectData = {
22
- resourceRecords: [{ id: '1', kind: 'application', parentId: null, settings: {} }]
22
+ resourceRecords: [{ id: "1", kind: "application", parentId: null, settings: {} }],
23
23
  };
24
24
  beforeEach(() => {
25
25
  jest.resetAllMocks();
26
26
  });
27
- describe('resolveSource', () => {
28
- it('should read array format JSON file', async () => {
27
+ describe("resolveSource", () => {
28
+ it("should read array format JSON file", async () => {
29
29
  mockedFs.pathExists.mockResolvedValue(true);
30
30
  mockedFs.readJson.mockResolvedValue(arrayData);
31
31
  mockedFs.stat.mockResolvedValue({ isDirectory: () => false });
32
32
  const result = await (0, source_resolver_1.resolveSource)(testFilePath);
33
33
  expect(result.resourceRecords).toHaveLength(2);
34
- expect(result.format).toBe('array');
34
+ expect(result.format).toBe("array");
35
35
  expect(result.filePath).toBe(testFilePath);
36
36
  });
37
- it('should read object format JSON file', async () => {
37
+ it("should read object format JSON file", async () => {
38
38
  mockedFs.pathExists.mockResolvedValue(true);
39
39
  mockedFs.readJson.mockResolvedValue(objectData);
40
40
  mockedFs.stat.mockResolvedValue({ isDirectory: () => false });
41
41
  const result = await (0, source_resolver_1.resolveSource)(testFilePath);
42
42
  expect(result.resourceRecords).toHaveLength(1);
43
- expect(result.format).toBe('object');
43
+ expect(result.format).toBe("object");
44
44
  expect(result.filePath).toBe(testFilePath);
45
45
  });
46
- it('should read directory by appending default filename', async () => {
47
- const dirFile = path_1.default.join(testDirPath, 'resource-records.json');
46
+ it("should read directory by appending default filename", async () => {
47
+ const dirFile = path_1.default.join(testDirPath, "resource-records.json");
48
48
  mockedFs.pathExists.mockResolvedValue(true);
49
49
  mockedFs.readJson.mockResolvedValue(arrayData);
50
50
  mockedFs.stat.mockResolvedValue({ isDirectory: () => true });
@@ -52,49 +52,49 @@ describe('source-resolver', () => {
52
52
  expect(mockedFs.readJson).toHaveBeenCalledWith(dirFile);
53
53
  expect(result.resourceRecords).toHaveLength(2);
54
54
  });
55
- it('should throw on missing default file', async () => {
55
+ it("should throw on missing default file", async () => {
56
56
  mockedFs.pathExists.mockResolvedValue(false);
57
- await expect((0, source_resolver_1.resolveSource)(undefined)).rejects.toThrow('Default source file not found');
57
+ await expect((0, source_resolver_1.resolveSource)(undefined)).rejects.toThrow("Default source file not found");
58
58
  });
59
- it('should throw on non-existent file', async () => {
59
+ it("should throw on non-existent file", async () => {
60
60
  mockedFs.pathExists.mockResolvedValue(false);
61
- mockedFs.stat.mockRejectedValue(new Error('ENOENT'));
62
- mockedFs.readJson.mockRejectedValue(new Error('File not found'));
63
- await expect((0, source_resolver_1.resolveSource)('/nonexistent/file.json')).rejects.toThrow('Source not found');
61
+ mockedFs.stat.mockRejectedValue(new Error("ENOENT"));
62
+ mockedFs.readJson.mockRejectedValue(new Error("File not found"));
63
+ await expect((0, source_resolver_1.resolveSource)("/nonexistent/file.json")).rejects.toThrow("Source not found");
64
64
  });
65
- it('should throw on invalid JSON format', async () => {
65
+ it("should throw on invalid JSON format", async () => {
66
66
  mockedFs.pathExists.mockResolvedValue(true);
67
- mockedFs.readJson.mockResolvedValue('invalid');
67
+ mockedFs.readJson.mockResolvedValue("invalid");
68
68
  mockedFs.stat.mockResolvedValue({ isDirectory: () => false });
69
- await expect((0, source_resolver_1.resolveSource)(testFilePath)).rejects.toThrow('Invalid resource records format');
69
+ await expect((0, source_resolver_1.resolveSource)(testFilePath)).rejects.toThrow("Invalid resource records format");
70
70
  });
71
- it('should throw on valid object without resourceRecords field', async () => {
71
+ it("should throw on valid object without resourceRecords field", async () => {
72
72
  mockedFs.pathExists.mockResolvedValue(true);
73
- mockedFs.readJson.mockResolvedValue({ foo: 'bar' });
73
+ mockedFs.readJson.mockResolvedValue({ foo: "bar" });
74
74
  mockedFs.stat.mockResolvedValue({ isDirectory: () => false });
75
- await expect((0, source_resolver_1.resolveSource)(testFilePath)).rejects.toThrow('Invalid resource records format');
75
+ await expect((0, source_resolver_1.resolveSource)(testFilePath)).rejects.toThrow("Invalid resource records format");
76
76
  });
77
77
  });
78
- describe('isStdinSource', () => {
79
- it('should return true for -', () => {
80
- expect((0, source_resolver_1.isStdinSource)('-')).toBe(true);
78
+ describe("isStdinSource", () => {
79
+ it("should return true for -", () => {
80
+ expect((0, source_resolver_1.isStdinSource)("-")).toBe(true);
81
81
  });
82
- it('should return false for file paths', () => {
83
- expect((0, source_resolver_1.isStdinSource)('./data.json')).toBe(false);
82
+ it("should return false for file paths", () => {
83
+ expect((0, source_resolver_1.isStdinSource)("./data.json")).toBe(false);
84
84
  });
85
- it('should return false for undefined', () => {
85
+ it("should return false for undefined", () => {
86
86
  expect((0, source_resolver_1.isStdinSource)(undefined)).toBe(false);
87
87
  });
88
88
  });
89
- describe('getSourceDescription', () => {
90
- it('should return default path for undefined', () => {
91
- expect((0, source_resolver_1.getSourceDescription)(undefined)).toBe('./resource-records.json');
89
+ describe("getSourceDescription", () => {
90
+ it("should return default path for undefined", () => {
91
+ expect((0, source_resolver_1.getSourceDescription)(undefined)).toBe("./resource-records.json");
92
92
  });
93
93
  it('should return "stdin" for -', () => {
94
- expect((0, source_resolver_1.getSourceDescription)('-')).toBe('stdin');
94
+ expect((0, source_resolver_1.getSourceDescription)("-")).toBe("stdin");
95
95
  });
96
- it('should return the path itself', () => {
97
- expect((0, source_resolver_1.getSourceDescription)('./data.json')).toBe('./data.json');
96
+ it("should return the path itself", () => {
97
+ expect((0, source_resolver_1.getSourceDescription)("./data.json")).toBe("./data.json");
98
98
  });
99
99
  });
100
100
  });