@into-cps-association/libms 0.4.3 → 0.4.4

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 (59) hide show
  1. package/.env +6 -0
  2. package/DEVELOPER.md +34 -9
  3. package/README.md +294 -10
  4. package/config/.env.default +1 -1
  5. package/dist/src/app.module.d.ts +2 -0
  6. package/dist/src/app.module.js +36 -0
  7. package/dist/src/app.module.js.map +1 -0
  8. package/dist/src/bootstrap.d.ts +7 -0
  9. package/dist/src/bootstrap.js +31 -0
  10. package/dist/src/bootstrap.js.map +1 -0
  11. package/dist/src/cloudcmd/cloudcmd.d.ts +3 -0
  12. package/dist/src/cloudcmd/cloudcmd.js +22 -0
  13. package/dist/src/cloudcmd/cloudcmd.js.map +1 -0
  14. package/dist/src/files/files.module.d.ts +2 -0
  15. package/dist/src/files/files.module.js +21 -0
  16. package/dist/src/files/files.module.js.map +1 -0
  17. package/dist/src/files/interfaces/files.service.interface.d.ts +5 -0
  18. package/dist/src/files/interfaces/files.service.interface.js +3 -0
  19. package/dist/src/files/interfaces/files.service.interface.js.map +1 -0
  20. package/dist/src/files/resolvers/files.resolver.d.ts +8 -0
  21. package/dist/src/files/resolvers/files.resolver.js +49 -0
  22. package/dist/src/files/resolvers/files.resolver.js.map +1 -0
  23. package/dist/src/files/services/files-service.factory.d.ts +9 -0
  24. package/dist/src/files/services/files-service.factory.js +40 -0
  25. package/dist/src/files/services/files-service.factory.js.map +1 -0
  26. package/dist/src/files/services/local-files.service.d.ts +11 -0
  27. package/dist/src/files/services/local-files.service.js +77 -0
  28. package/dist/src/files/services/local-files.service.js.map +1 -0
  29. package/dist/src/main.d.ts +2 -0
  30. package/dist/src/main.js +20 -0
  31. package/dist/src/main.js.map +1 -0
  32. package/dist/src/types.d.ts +43 -0
  33. package/dist/src/types.js +181 -0
  34. package/dist/src/types.js.map +1 -0
  35. package/dist/test/cloudcmd/cloudcmd.spec.d.ts +1 -0
  36. package/dist/test/cloudcmd/cloudcmd.spec.js +35 -0
  37. package/dist/test/cloudcmd/cloudcmd.spec.js.map +1 -0
  38. package/dist/test/e2e/app.e2e.spec.d.ts +1 -0
  39. package/dist/test/e2e/app.e2e.spec.js +53 -0
  40. package/dist/test/e2e/app.e2e.spec.js.map +1 -0
  41. package/dist/test/integration/files.service.integration.spec.d.ts +1 -0
  42. package/dist/test/integration/files.service.integration.spec.js +51 -0
  43. package/dist/test/integration/files.service.integration.spec.js.map +1 -0
  44. package/dist/test/testUtil.d.ts +88 -0
  45. package/dist/test/testUtil.js +173 -0
  46. package/dist/test/testUtil.js.map +1 -0
  47. package/dist/test/unit/files-service.factory.unit.spec.d.ts +1 -0
  48. package/dist/test/unit/files-service.factory.unit.spec.js +32 -0
  49. package/dist/test/unit/files-service.factory.unit.spec.js.map +1 -0
  50. package/dist/test/unit/files.resolver.unit.spec.d.ts +1 -0
  51. package/dist/test/unit/files.resolver.unit.spec.js +56 -0
  52. package/dist/test/unit/files.resolver.unit.spec.js.map +1 -0
  53. package/dist/test/unit/local-files.service.unit.spec.d.ts +1 -0
  54. package/dist/test/unit/local-files.service.unit.spec.js +84 -0
  55. package/dist/test/unit/local-files.service.unit.spec.js.map +1 -0
  56. package/dist/tsconfig.tsbuildinfo +1 -0
  57. package/inside.png +0 -0
  58. package/package.json +1 -1
  59. package/top-level.png +0 -0
@@ -0,0 +1,173 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.e2eReadFile = exports.e2elistDirectory = exports.expectedFileContentResponse = exports.expectedListDirectoryResponse = exports.mockReadFileResponseData = exports.MockConfigService = exports.sleep = exports.testFileContent = exports.testFileArray = exports.pathToTestFileContent = exports.fstestFileContent = exports.testFileName = exports.testDirectory = exports.pathToTestDirectory = exports.readFileActualContent = void 0;
4
+ const dotenv = require("dotenv");
5
+ const promises_1 = require("timers/promises");
6
+ dotenv.config({ path: '.env' });
7
+ exports.readFileActualContent = ['content123'];
8
+ exports.pathToTestDirectory = 'user2';
9
+ exports.testDirectory = {
10
+ repository: {
11
+ tree: {
12
+ blobs: { edges: [] },
13
+ trees: {
14
+ edges: [
15
+ { node: { name: 'data', type: 'tree' } },
16
+ { node: { name: 'digital_twins', type: 'tree' } },
17
+ { node: { name: 'functions', type: 'tree' } },
18
+ { node: { name: 'models', type: 'tree' } },
19
+ { node: { name: 'tools', type: 'tree' } },
20
+ ],
21
+ },
22
+ },
23
+ },
24
+ };
25
+ exports.testFileName = 'README.md';
26
+ exports.fstestFileContent = 'content123';
27
+ exports.pathToTestFileContent = 'user2/tools/README.md';
28
+ exports.testFileArray = [
29
+ 'data',
30
+ 'digital_twins',
31
+ 'functions',
32
+ 'models',
33
+ 'tools',
34
+ ];
35
+ exports.testFileContent = {
36
+ repository: {
37
+ blobs: {
38
+ nodes: [
39
+ {
40
+ name: 'README.md',
41
+ rawBlob: 'content123',
42
+ rawTextBlob: 'content123',
43
+ },
44
+ ],
45
+ },
46
+ },
47
+ };
48
+ function sleep(ms) {
49
+ const timer = (0, promises_1.setTimeout)(ms);
50
+ Promise.resolve(timer);
51
+ }
52
+ exports.sleep = sleep;
53
+ class MockConfigService {
54
+ get(key) {
55
+ switch (key) {
56
+ case 'LOCAL_PATH':
57
+ return process.env.LOCAL_PATH;
58
+ case 'MODE':
59
+ if (process.env.MODE === 'local') {
60
+ return 'local';
61
+ }
62
+ return 'unknown';
63
+ default:
64
+ return undefined;
65
+ }
66
+ }
67
+ }
68
+ exports.MockConfigService = MockConfigService;
69
+ exports.mockReadFileResponseData = {
70
+ project: {
71
+ __typename: 'Project',
72
+ repository: {
73
+ __typename: 'Repository',
74
+ blobs: {
75
+ nodes: [
76
+ {
77
+ __typename: 'Blob',
78
+ name: 'README.md',
79
+ rawBlob: 'content123',
80
+ rawTextBlob: 'content123',
81
+ },
82
+ ],
83
+ },
84
+ },
85
+ },
86
+ };
87
+ exports.expectedListDirectoryResponse = {
88
+ data: {
89
+ listDirectory: {
90
+ repository: {
91
+ tree: {
92
+ trees: {
93
+ edges: [
94
+ {
95
+ node: {
96
+ name: 'data',
97
+ },
98
+ },
99
+ {
100
+ node: {
101
+ name: 'digital_twins',
102
+ },
103
+ },
104
+ {
105
+ node: {
106
+ name: 'functions',
107
+ },
108
+ },
109
+ {
110
+ node: {
111
+ name: 'models',
112
+ },
113
+ },
114
+ {
115
+ node: {
116
+ name: 'tools',
117
+ },
118
+ },
119
+ ],
120
+ },
121
+ },
122
+ },
123
+ },
124
+ },
125
+ };
126
+ exports.expectedFileContentResponse = {
127
+ data: {
128
+ readFile: {
129
+ repository: {
130
+ blobs: {
131
+ nodes: [
132
+ {
133
+ name: 'README.md',
134
+ rawBlob: 'content123',
135
+ rawTextBlob: 'content123',
136
+ },
137
+ ],
138
+ },
139
+ },
140
+ },
141
+ },
142
+ };
143
+ exports.e2elistDirectory = `query {
144
+ listDirectory(path:"user2")
145
+ {
146
+ repository{
147
+ tree{
148
+ trees{
149
+ edges{
150
+ node{
151
+ name
152
+
153
+ }
154
+ }
155
+ }
156
+ }
157
+ }
158
+ }
159
+ }`;
160
+ exports.e2eReadFile = `query {
161
+ readFile(path:"user2/tools/README.md") {
162
+ repository {
163
+ blobs {
164
+ nodes {
165
+ name
166
+ rawBlob
167
+ rawTextBlob
168
+ }
169
+ }
170
+ }
171
+ }
172
+ }`;
173
+ //# sourceMappingURL=testUtil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testUtil.js","sourceRoot":"","sources":["../../test/testUtil.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const testing_1 = require("@nestjs/testing");
4
+ const config_1 = require("@nestjs/config");
5
+ const files_service_factory_1 = require("../../src/files/services/files-service.factory");
6
+ const local_files_service_1 = require("../../src/files/services/local-files.service");
7
+ describe('FilesServiceFactory', () => {
8
+ let serviceFactory;
9
+ let configService;
10
+ let localFilesService;
11
+ beforeEach(async () => {
12
+ localFilesService = new local_files_service_1.default(configService);
13
+ const module = await testing_1.Test.createTestingModule({
14
+ providers: [
15
+ files_service_factory_1.default,
16
+ { provide: config_1.ConfigService, useValue: { get: jest.fn() } },
17
+ { provide: local_files_service_1.default, useValue: localFilesService },
18
+ ],
19
+ }).compile();
20
+ serviceFactory = module.get(files_service_factory_1.default);
21
+ configService = module.get(config_1.ConfigService);
22
+ });
23
+ it('should create a local files service when MODE is local', () => {
24
+ jest.spyOn(configService, 'get').mockReturnValue('local');
25
+ expect(serviceFactory.create()).toBe(localFilesService);
26
+ });
27
+ it('should throw an error when MODE is invalid', () => {
28
+ jest.spyOn(configService, 'get').mockReturnValue('invalid');
29
+ expect(() => serviceFactory.create()).toThrowError(`Invalid MODE: invalid`);
30
+ });
31
+ });
32
+ //# sourceMappingURL=files-service.factory.unit.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files-service.factory.unit.spec.js","sourceRoot":"","sources":["../../../test/unit/files-service.factory.unit.spec.ts"],"names":[],"mappings":";;AACA,6CAAsD;AACtD,2CAA+C;AAC/C,0FAAiF;AACjF,sFAA6E;AAG7E,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,IAAI,cAAmC,CAAC;IACxC,IAAI,aAA4B,CAAC;IACjC,IAAI,iBAAgC,CAAC;IAErC,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,iBAAiB,GAAG,IAAI,6BAAiB,CAAC,aAA8B,CAAC,CAAC;QAE1E,MAAM,MAAM,GAAkB,MAAM,cAAI,CAAC,mBAAmB,CAAC;YAC3D,SAAS,EAAE;gBACT,+BAAmB;gBACnB,EAAE,OAAO,EAAE,sBAAa,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE;gBACxD,EAAE,OAAO,EAAE,6BAAiB,EAAE,QAAQ,EAAE,iBAAiB,EAAE;aAC5D;SACF,CAAC,CAAC,OAAO,EAAE,CAAC;QAEb,cAAc,GAAG,MAAM,CAAC,GAAG,CAAsB,+BAAmB,CAAC,CAAC;QACtE,aAAa,GAAG,MAAM,CAAC,GAAG,CAAgB,sBAAa,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAC1D,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAC5D,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,YAAY,CAAC,uBAAuB,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const testing_1 = require("@nestjs/testing");
4
+ const files_resolver_1 = require("../../src/files/resolvers/files.resolver");
5
+ const testUtil_1 = require("../testUtil");
6
+ const files_service_factory_1 = require("../../src/files/services/files-service.factory");
7
+ describe('Unit tests for FilesResolver', () => {
8
+ let filesResolver;
9
+ let filesService;
10
+ beforeEach(async () => {
11
+ const mockFilesService = {
12
+ listDirectory: jest.fn().mockImplementation(() => testUtil_1.testDirectory),
13
+ readFile: jest.fn().mockImplementation(() => testUtil_1.testFileContent),
14
+ };
15
+ const module = await testing_1.Test.createTestingModule({
16
+ providers: [
17
+ files_resolver_1.default,
18
+ files_service_factory_1.default,
19
+ {
20
+ provide: files_service_factory_1.default,
21
+ useValue: {
22
+ create: () => mockFilesService,
23
+ },
24
+ },
25
+ ],
26
+ }).compile();
27
+ filesResolver = module.get(files_resolver_1.default);
28
+ filesService = module
29
+ .get(files_service_factory_1.default)
30
+ .create();
31
+ });
32
+ it('should be defined', () => {
33
+ expect(filesResolver).toBeDefined();
34
+ });
35
+ describe('listDirectory', () => {
36
+ it('should be defined', () => {
37
+ expect(filesResolver.listDirectory).toBeDefined();
38
+ });
39
+ it('should list files in directory', async () => {
40
+ const result = await filesResolver.listDirectory(testUtil_1.pathToTestDirectory);
41
+ expect(result).toEqual(testUtil_1.testDirectory);
42
+ expect(filesService.listDirectory).toHaveBeenCalledWith(testUtil_1.pathToTestDirectory);
43
+ });
44
+ });
45
+ describe('readFile', () => {
46
+ it('should be defined', () => {
47
+ expect(filesResolver.readFile).toBeDefined();
48
+ });
49
+ it('should read file', async () => {
50
+ const result = await filesResolver.readFile(testUtil_1.pathToTestFileContent);
51
+ expect(result).toEqual(testUtil_1.testFileContent);
52
+ expect(filesService.readFile).toHaveBeenCalledWith(testUtil_1.pathToTestFileContent);
53
+ });
54
+ });
55
+ });
56
+ //# sourceMappingURL=files.resolver.unit.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files.resolver.unit.spec.js","sourceRoot":"","sources":["../../../test/unit/files.resolver.unit.spec.ts"],"names":[],"mappings":";;AAAA,6CAAsD;AACtD,6EAAqE;AACrE,0CAKqB;AAErB,0FAAiF;AAEjF,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,IAAI,aAA4B,CAAC;IACjC,IAAI,YAA2B,CAAC;IAEhC,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,MAAM,gBAAgB,GAAkB;YACtC,aAAa,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,wBAAa,CAAC;YAChE,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,0BAAe,CAAC;SAC9D,CAAC;QAEF,MAAM,MAAM,GAAkB,MAAM,cAAI,CAAC,mBAAmB,CAAC;YAC3D,SAAS,EAAE;gBACT,wBAAa;gBACb,+BAAmB;gBACnB;oBACE,OAAO,EAAE,+BAAmB;oBAC5B,QAAQ,EAAE;wBACR,MAAM,EAAE,GAAG,EAAE,CAAC,gBAAgB;qBAC/B;iBACF;aACF;SACF,CAAC,CAAC,OAAO,EAAE,CAAC;QAEb,aAAa,GAAG,MAAM,CAAC,GAAG,CAAgB,wBAAa,CAAC,CAAC;QACzD,YAAY,GAAG,MAAM;aAClB,GAAG,CAAsB,+BAAmB,CAAC;aAC7C,MAAM,EAAE,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC3B,MAAM,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;YAC3B,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;YAC9C,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,aAAa,CAAC,8BAAmB,CAAC,CAAC;YACtE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,wBAAa,CAAC,CAAC;YACtC,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,oBAAoB,CACrD,8BAAmB,CACpB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACxB,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;YAC3B,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;YAChC,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,gCAAqB,CAAC,CAAC;YACnE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,0BAAe,CAAC,CAAC;YACxC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,oBAAoB,CAAC,gCAAqB,CAAC,CAAC;QAC5E,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const testing_1 = require("@nestjs/testing");
4
+ const config_1 = require("@nestjs/config");
5
+ const fs = require("fs");
6
+ const path_1 = require("path");
7
+ const local_files_service_1 = require("../../src/files/services/local-files.service");
8
+ const testUtil_1 = require("../testUtil");
9
+ jest.mock('fs', () => ({
10
+ promises: {
11
+ readdir: jest.fn(),
12
+ lstat: jest.fn(),
13
+ readFile: jest.fn(),
14
+ },
15
+ }));
16
+ describe('LocalFilesService', () => {
17
+ let service;
18
+ const mockConfigService = new testUtil_1.MockConfigService();
19
+ beforeEach(async () => {
20
+ const module = await testing_1.Test.createTestingModule({
21
+ providers: [
22
+ local_files_service_1.default,
23
+ { provide: config_1.ConfigService, useValue: mockConfigService },
24
+ ],
25
+ }).compile();
26
+ service = module.get(local_files_service_1.default);
27
+ });
28
+ afterEach(() => {
29
+ jest.resetAllMocks();
30
+ });
31
+ it('should be defined', () => {
32
+ expect(service).toBeDefined();
33
+ });
34
+ it('should list directory', async () => {
35
+ const fullPath = (0, path_1.join)(mockConfigService.get('LOCAL_PATH'), testUtil_1.pathToTestDirectory);
36
+ const statsMock = {
37
+ isDirectory: () => true,
38
+ };
39
+ jest
40
+ .spyOn(fs.promises, 'readdir')
41
+ .mockResolvedValue(testUtil_1.testFileArray);
42
+ jest.spyOn(fs.promises, 'lstat').mockImplementation((pathToDirectory) => {
43
+ if (typeof pathToDirectory === 'string') {
44
+ return Promise.resolve(statsMock);
45
+ }
46
+ throw new Error(`Invalid argument: ${pathToDirectory}`);
47
+ });
48
+ const result = await service.listDirectory(testUtil_1.pathToTestDirectory);
49
+ expect(result).toEqual({
50
+ repository: {
51
+ tree: {
52
+ trees: {
53
+ edges: testUtil_1.testFileArray.map((file) => ({
54
+ node: { name: file, type: 'tree' },
55
+ })),
56
+ },
57
+ blobs: { edges: [] },
58
+ },
59
+ },
60
+ });
61
+ expect(fs.promises.readdir).toHaveBeenCalledWith(fullPath);
62
+ expect(fs.promises.lstat).toHaveBeenCalledTimes(testUtil_1.testFileArray.length);
63
+ });
64
+ it('should read file', async () => {
65
+ const fullPath = (0, path_1.join)(mockConfigService.get('LOCAL_PATH'), testUtil_1.pathToTestFileContent);
66
+ jest.spyOn(fs.promises, 'readFile').mockResolvedValue(testUtil_1.fstestFileContent);
67
+ const result = await service.readFile(testUtil_1.pathToTestFileContent);
68
+ expect(result).toEqual({
69
+ repository: {
70
+ blobs: {
71
+ nodes: [
72
+ {
73
+ name: testUtil_1.testFileName,
74
+ rawBlob: testUtil_1.fstestFileContent,
75
+ rawTextBlob: testUtil_1.fstestFileContent,
76
+ },
77
+ ],
78
+ },
79
+ },
80
+ });
81
+ expect(fs.promises.readFile).toHaveBeenCalledWith(fullPath, 'utf8');
82
+ });
83
+ });
84
+ //# sourceMappingURL=local-files.service.unit.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-files.service.unit.spec.js","sourceRoot":"","sources":["../../../test/unit/local-files.service.unit.spec.ts"],"names":[],"mappings":"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"}