jitar 0.1.1 → 0.1.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.
Files changed (180) hide show
  1. package/dist/core/Implementation.js +7 -0
  2. package/dist/core/errors/UnknownParameter.d.ts +3 -0
  3. package/dist/core/errors/UnknownParameter.js +6 -0
  4. package/dist/runtime/LocalRepository.d.ts +1 -1
  5. package/dist/runtime/LocalRepository.js +13 -4
  6. package/dist/server/configuration/RepositoryConfiguration.d.ts +1 -0
  7. package/dist/server/configuration/RepositoryConfiguration.js +7 -1
  8. package/dist/server/configuration/StandaloneConfiguration.d.ts +1 -0
  9. package/dist/server/configuration/StandaloneConfiguration.js +6 -0
  10. package/dist/server/utils/LocalFileManager.d.ts +1 -0
  11. package/dist/server/utils/LocalFileManager.js +19 -11
  12. package/dist/server/utils/RuntimeConfigurator.js +9 -4
  13. package/package.json +4 -1
  14. package/.eslintignore +0 -3
  15. package/.eslintrc +0 -16
  16. package/jest.config.js +0 -20
  17. package/src/client.ts +0 -18
  18. package/src/core/ErrorManager.ts +0 -18
  19. package/src/core/Implementation.ts +0 -53
  20. package/src/core/Procedure.ts +0 -98
  21. package/src/core/Segment.ts +0 -62
  22. package/src/core/SegmentBuilder.ts +0 -55
  23. package/src/core/Version.ts +0 -68
  24. package/src/core/definitions/AccessLevel.ts +0 -3
  25. package/src/core/errors/ImplementationNotFound.ts +0 -12
  26. package/src/core/errors/InvalidVersionNumber.ts +0 -12
  27. package/src/core/errors/MissingParameterValue.ts +0 -12
  28. package/src/core/errors/NotImplemented.ts +0 -12
  29. package/src/core/errors/ProcedureNotFound.ts +0 -12
  30. package/src/core/interfaces/Runner.ts +0 -7
  31. package/src/core/reflection/ParameterParser.ts +0 -74
  32. package/src/core/reflection/ReflectionHelper.ts +0 -118
  33. package/src/core/reflection/models/ReflectionField.ts +0 -22
  34. package/src/core/reflection/models/ReflectionParameter.ts +0 -18
  35. package/src/core/types/Component.ts +0 -8
  36. package/src/core/types/FlexObject.ts +0 -4
  37. package/src/core/types/Module.ts +0 -6
  38. package/src/core/types/SegmentImplementation.ts +0 -9
  39. package/src/core/types/SegmentModule.ts +0 -9
  40. package/src/core/types/SegmentProcedure.ts +0 -11
  41. package/src/core/utils/FqnBuilder.ts +0 -11
  42. package/src/hooks.ts +0 -2
  43. package/src/lib.ts +0 -7
  44. package/src/runtime/ClientId.ts +0 -18
  45. package/src/runtime/Gateway.ts +0 -18
  46. package/src/runtime/LocalGateway.ts +0 -93
  47. package/src/runtime/LocalNode.ts +0 -130
  48. package/src/runtime/LocalRepository.ts +0 -154
  49. package/src/runtime/Node.ts +0 -15
  50. package/src/runtime/NodeBalancer.ts +0 -61
  51. package/src/runtime/NodeMonitor.ts +0 -63
  52. package/src/runtime/Proxy.ts +0 -60
  53. package/src/runtime/Remote.ts +0 -157
  54. package/src/runtime/RemoteGateway.ts +0 -40
  55. package/src/runtime/RemoteNode.ts +0 -49
  56. package/src/runtime/RemoteRepository.ts +0 -60
  57. package/src/runtime/Repository.ts +0 -20
  58. package/src/runtime/Runtime.ts +0 -47
  59. package/src/runtime/caching/CacheBuilder.ts +0 -424
  60. package/src/runtime/caching/ImportRewriter.ts +0 -76
  61. package/src/runtime/caching/RemoteBuilder.ts +0 -51
  62. package/src/runtime/caching/SourceAppender.ts +0 -57
  63. package/src/runtime/caching/definitions/Keywords.ts +0 -3
  64. package/src/runtime/caching/errors/InvalidSegmentFilename.ts +0 -8
  65. package/src/runtime/caching/errors/MissingModuleExport.ts +0 -8
  66. package/src/runtime/caching/errors/SegmentFileNotLoaded.ts +0 -8
  67. package/src/runtime/caching/errors/SegmentModuleNotLoaded.ts +0 -8
  68. package/src/runtime/caching/models/ApplicationModule.ts +0 -30
  69. package/src/runtime/caching/models/Implementation.ts +0 -41
  70. package/src/runtime/caching/models/Procedure.ts +0 -26
  71. package/src/runtime/caching/models/Segment.ts +0 -28
  72. package/src/runtime/caching/models/SegmentModule.ts +0 -26
  73. package/src/runtime/caching/types/SegmentFile.ts +0 -6
  74. package/src/runtime/caching/types/SegmentImportProperties.ts +0 -9
  75. package/src/runtime/caching/types/SegmentImports.ts +0 -6
  76. package/src/runtime/errors/ClientNotFound.ts +0 -12
  77. package/src/runtime/errors/FileNotFound.ts +0 -12
  78. package/src/runtime/errors/InvalidClientId.ts +0 -12
  79. package/src/runtime/errors/InvalidJitarHooks.ts +0 -12
  80. package/src/runtime/errors/InvalidSegmentFile.ts +0 -12
  81. package/src/runtime/errors/ModuleNotLoaded.ts +0 -12
  82. package/src/runtime/errors/NoNodeAvailable.ts +0 -12
  83. package/src/runtime/errors/RepositoryNotAvaiable.ts +0 -12
  84. package/src/runtime/errors/RuntimeNotAvailable.ts +0 -12
  85. package/src/runtime/errors/SegmentNotFound.ts +0 -12
  86. package/src/runtime/hooks/dependencies.ts +0 -19
  87. package/src/runtime/hooks/runtime.ts +0 -25
  88. package/src/runtime/interfaces/FileManager.ts +0 -19
  89. package/src/runtime/interfaces/HealthCheck.ts +0 -5
  90. package/src/runtime/interfaces/ProcedureContainer.ts +0 -9
  91. package/src/runtime/models/File.ts +0 -22
  92. package/src/runtime/serialization/ArraySerializer.ts +0 -27
  93. package/src/runtime/serialization/ClassSerializer.ts +0 -133
  94. package/src/runtime/serialization/MapSerializer.ts +0 -60
  95. package/src/runtime/serialization/ObjectSerializer.ts +0 -42
  96. package/src/runtime/serialization/SetSerializer.ts +0 -42
  97. package/src/runtime/serialization/ValueSerializer.ts +0 -81
  98. package/src/runtime/serialization/errors/ClassNotFound.ts +0 -12
  99. package/src/runtime/serialization/errors/InvalidClass.ts +0 -12
  100. package/src/runtime/serialization/errors/InvalidPropertyType.ts +0 -12
  101. package/src/runtime/serialization/interfaces/Serializer.ts +0 -10
  102. package/src/runtime/serialization/types/SerializableObject.ts +0 -6
  103. package/src/runtime/serialization/types/Serialized.ts +0 -8
  104. package/src/runtime/serialization/types/SerializedClass.ts +0 -13
  105. package/src/runtime/serialization/types/SerializedMap.ts +0 -13
  106. package/src/runtime/serialization/types/SerializedObject.ts +0 -4
  107. package/src/runtime/serialization/types/SerializedSet.ts +0 -9
  108. package/src/runtime/types/JitarHooks.ts +0 -10
  109. package/src/runtime/types/ModuleImporter.ts +0 -6
  110. package/src/runtime/utils/ModuleAnalyser.ts +0 -60
  111. package/src/runtime/utils/ModuleLoader.ts +0 -51
  112. package/src/runtime/utils/UrlRewriter.ts +0 -59
  113. package/src/server/JitarServer.ts +0 -161
  114. package/src/server/configuration/GatewayConfiguration.ts +0 -9
  115. package/src/server/configuration/NodeConfiguration.ts +0 -15
  116. package/src/server/configuration/ProxyConfiguration.ts +0 -16
  117. package/src/server/configuration/RepositoryConfiguration.ts +0 -17
  118. package/src/server/configuration/RuntimeConfiguration.ts +0 -30
  119. package/src/server/configuration/ServerOptions.ts +0 -14
  120. package/src/server/configuration/StandaloneConfiguration.ts +0 -21
  121. package/src/server/controllers/AssetsController.ts +0 -59
  122. package/src/server/controllers/HealthController.ts +0 -41
  123. package/src/server/controllers/JitarController.ts +0 -18
  124. package/src/server/controllers/ModulesController.ts +0 -77
  125. package/src/server/controllers/NodesController.ts +0 -58
  126. package/src/server/controllers/ProceduresController.ts +0 -31
  127. package/src/server/controllers/ProxyController.ts +0 -38
  128. package/src/server/controllers/RPCController.ts +0 -173
  129. package/src/server/definitions/RuntimeDefaults.ts +0 -10
  130. package/src/server/errors/MissingConfigurationValue.ts +0 -8
  131. package/src/server/errors/RuntimeNotAvaiable.ts +0 -8
  132. package/src/server/errors/UnknownRuntimeMode.ts +0 -8
  133. package/src/server/models/HealthDto.ts +0 -11
  134. package/src/server/models/NodeDto.ts +0 -11
  135. package/src/server/utils/DataConverter.ts +0 -15
  136. package/src/server/utils/LocalFileManager.ts +0 -122
  137. package/src/server/utils/RuntimeConfigurationLoader.ts +0 -19
  138. package/src/server/utils/RuntimeConfigurator.ts +0 -207
  139. package/src/server/utils/ServerOptionsReader.ts +0 -17
  140. package/src/server.ts +0 -16
  141. package/test/_fixtures/core/Implementation.fixture.ts +0 -33
  142. package/test/_fixtures/core/Procedure.fixture.ts +0 -33
  143. package/test/_fixtures/core/Segment.fixture.ts +0 -36
  144. package/test/_fixtures/core/SegmentBuilder.fixture.ts +0 -45
  145. package/test/_fixtures/core/Version.fixture.ts +0 -18
  146. package/test/_fixtures/core/reflection/ReflectionHelper.fixture.ts +0 -56
  147. package/test/_fixtures/runtime/LocalGateway.fixture.ts +0 -24
  148. package/test/_fixtures/runtime/LocalNode.fixture.ts +0 -16
  149. package/test/_fixtures/runtime/LocalRepository.fixture.ts +0 -73
  150. package/test/_fixtures/runtime/NodeBalancer.fixture.ts +0 -19
  151. package/test/_fixtures/runtime/NodeMonitor.fixture.ts +0 -34
  152. package/test/_fixtures/runtime/RemoteNode.fixture.ts +0 -8
  153. package/test/_fixtures/runtime/caching/ImportRewriter.fixture.ts +0 -81
  154. package/test/_fixtures/runtime/caching/RemoteBuilder.fixture.ts +0 -50
  155. package/test/_fixtures/runtime/caching/SourceAppender.fixture.ts +0 -35
  156. package/test/_fixtures/runtime/segments.ts +0 -78
  157. package/test/_fixtures/runtime/serialization/ValueSerializer.fixture.ts +0 -134
  158. package/test/_fixtures/runtime/utils/ModuleAnaliser.fixture.ts +0 -26
  159. package/test/core/Implementation.spec.ts +0 -89
  160. package/test/core/Procedure.spec.ts +0 -108
  161. package/test/core/Segment.spec.ts +0 -74
  162. package/test/core/SegmentBuilder.spec.ts +0 -39
  163. package/test/core/Version.spec.ts +0 -103
  164. package/test/core/errors/ErrorManager.spec.ts +0 -32
  165. package/test/core/reflection/ReflectionHelper.spec.ts +0 -128
  166. package/test/core/utils/FqnBuilder.spec.ts +0 -22
  167. package/test/runtime/ClientId.spec.ts +0 -43
  168. package/test/runtime/LocalGateway.spec.ts +0 -40
  169. package/test/runtime/LocalNode.spec.ts +0 -87
  170. package/test/runtime/LocalRepository.spec.ts +0 -50
  171. package/test/runtime/NodeBalancer.spec.ts +0 -39
  172. package/test/runtime/NodeMonitor.spec.ts +0 -31
  173. package/test/runtime/RemoteNode.spec.ts +0 -43
  174. package/test/runtime/caching/ImportRewriter.spec.ts +0 -68
  175. package/test/runtime/caching/RemoteBuilder.spec.ts +0 -21
  176. package/test/runtime/caching/SourceAppender.spec.ts +0 -31
  177. package/test/runtime/serialization/ValueSerializer.spec.ts +0 -203
  178. package/test/runtime/utils/ModuleAnalyser.spec.ts +0 -54
  179. package/test/runtime/utils/UrlRewriter.spec.ts +0 -57
  180. package/tsconfig.json +0 -23
@@ -1,73 +0,0 @@
1
-
2
- import FileLoader from '../../../src/runtime/interfaces/FileManager';
3
- import LocalRepository from '../../../src/runtime/LocalRepository';
4
- import File from '../../../src/runtime/models/File';
5
-
6
- class TestFileManager implements FileLoader
7
- {
8
- getRootLocation(): string
9
- {
10
- return '';
11
- }
12
-
13
- getAbsoluteLocation(filename: string): string
14
- {
15
- return filename;
16
- }
17
-
18
- getRelativeLocation(filename: string): string
19
- {
20
- return filename;
21
- }
22
-
23
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
24
- async getType(filename: string): Promise<string>
25
- {
26
- return 'application/javascript';
27
- }
28
-
29
- async getContent(filename: string): Promise<Buffer | string>
30
- {
31
- switch (filename)
32
- {
33
- case 'fourthPrivateTask.js':
34
- return Buffer.from('fourthPrivateTask()');
35
-
36
- case 'firstPublicTask.local.js':
37
- return Buffer.from('firstPublicTask()');
38
-
39
- case 'secondPublicTask.remote.js':
40
- return Buffer.from('runProcedure()');
41
- }
42
-
43
- return Buffer.from('');
44
- }
45
-
46
- async load(filename: string): Promise<File>
47
- {
48
- const type = await this.getType(filename);
49
- const content = await this.getContent(filename);
50
-
51
- return new File(filename, type, content);
52
- }
53
-
54
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
55
- async store(filename: string, content: string): Promise<void>
56
- {
57
- // Do nothing
58
- }
59
- }
60
-
61
- const fileManager = new TestFileManager();
62
- const repository = new LocalRepository(fileManager);
63
- const client = { id: '' };
64
-
65
- repository.registerSegment('first', ['firstPrivateTask.js', 'firstPublicTask.js', 'thirdPublicTask.js']);
66
- repository.registerSegment('second', ['secondPrivateTask.js', 'secondPublicTask.js', 'fourthPublicTask.js']);
67
- repository.registerClient(['first']).then(clientId => client.id = clientId);
68
-
69
- const UNSEGMENTED_FILE = 'fourthPrivateTask.js';
70
- const LOCAL_FILE = 'firstPublicTask.js';
71
- const REMOTE_FILE = 'secondPublicTask.js';
72
-
73
- export { repository, client, UNSEGMENTED_FILE, LOCAL_FILE, REMOTE_FILE }
@@ -1,19 +0,0 @@
1
-
2
- import LocalNode from '../../../src/runtime/LocalNode';
3
- import NodeBalancer from '../../../src/runtime/NodeBalancer';
4
-
5
- const firstNode = new LocalNode();
6
- const secondNode = new LocalNode();
7
-
8
- const balancer = new NodeBalancer();
9
- balancer.addNode(firstNode);
10
- balancer.addNode(secondNode);
11
-
12
- const emptyBalancer = new NodeBalancer();
13
-
14
- export {
15
- balancer,
16
- emptyBalancer,
17
- firstNode,
18
- secondNode
19
- }
@@ -1,34 +0,0 @@
1
-
2
- import LocalNode from '../../../src/runtime/LocalNode';
3
- import LocalGateway from '../../../src/runtime/LocalGateway';
4
- import NodeMonitor from '../../../src/runtime/NodeMonitor';
5
- import HealthCheck from '../../../src/runtime/interfaces/HealthCheck';
6
-
7
- class HealthyCheck implements HealthCheck
8
- {
9
- async isHealthy(): Promise<boolean> { return true; }
10
- }
11
-
12
- class UnhealthyCheck implements HealthCheck
13
- {
14
- async isHealthy(): Promise<boolean> { return false; }
15
- }
16
-
17
- const goodNode = new LocalNode();
18
- goodNode.addHealthCheck('good', new HealthyCheck());
19
-
20
- const badNode = new LocalNode();
21
- badNode.addHealthCheck('bad', new UnhealthyCheck());
22
-
23
- const gateway = new LocalGateway('http://localhost:80');
24
- gateway.addNode(goodNode);
25
- gateway.addNode(badNode);
26
-
27
- const monitor = new NodeMonitor(gateway, 100);
28
-
29
- export {
30
- goodNode,
31
- badNode,
32
- gateway,
33
- monitor
34
- }
@@ -1,8 +0,0 @@
1
-
2
- import RemoteNode from '../../../src/runtime/RemoteNode';
3
-
4
- const API_URL = 'http://localhost:80';
5
-
6
- const node = new RemoteNode(API_URL, ['FirstProcedure', 'SecondProcedure']);
7
-
8
- export { API_URL, node }
@@ -1,81 +0,0 @@
1
-
2
- const noSystemImports =
3
- `import './path/to/file.js';
4
- import component from '/path/to/component.js;';
5
- import { component1, component2 } from '../path/to/components.js';
6
- `;
7
-
8
- const noSystemImportsResult = noSystemImports;
9
-
10
- const hasSystemImports =
11
- `import fs from 'fs';
12
- import component from 'http';
13
- import { component1, component2 } from 'https';
14
- `;
15
-
16
- const hasSystemImportsResult =
17
- `import { getDependency } from "/jitar/hooks.js";
18
- const fs = await getDependency('fs');
19
- const component = await getDependency('http');
20
- const { component1, component2 } = await getDependency('https');
21
- `;
22
-
23
- const hasJitarImports = `import { runProcedure } from 'jitar';`;
24
-
25
- const hasJitarImportsResult =
26
- `import { getDependency } from "/jitar/hooks.js";
27
- import { runProcedure } from "/jitar/hooks.js";`;
28
-
29
- const hasImportsNoSemicolon = `import { runProcedure } from 'jitar'`;
30
-
31
- const hasImportsResultNoSemicolon =
32
- `import { getDependency } from "/jitar/hooks.js";
33
- import { runProcedure } from "/jitar/hooks.js";`;
34
-
35
- const hasMixedImports =
36
- `import component from './path/to/component.js';
37
- import os from 'os';
38
- import { runProcedure } from 'jitar';
39
- `;
40
-
41
- const hasMixedImportsResult =
42
- `import { getDependency } from "/jitar/hooks.js";
43
- import component from './path/to/component.js';
44
- const os = await getDependency('os');
45
- import { runProcedure } from "/jitar/hooks.js";
46
- `;
47
-
48
- const hasDynamicImports =
49
- `import component from './path/to/component.js';
50
- const os = await import('os');
51
- `;
52
-
53
- const hasDynamicImportsResult = hasDynamicImports;
54
-
55
- const hasImportsAndContent =
56
- `import os from 'os';
57
-
58
- export default function test() {}
59
-
60
- import { runProcedure } from 'jitar';
61
- `;
62
-
63
- const hasImportsAndContentResult =
64
- `import { getDependency } from "/jitar/hooks.js";
65
- const os = await getDependency('os');
66
-
67
- export default function test() {}
68
-
69
- import { runProcedure } from "/jitar/hooks.js";
70
- `;
71
-
72
- export
73
- {
74
- noSystemImports, noSystemImportsResult,
75
- hasSystemImports, hasSystemImportsResult,
76
- hasJitarImports, hasJitarImportsResult,
77
- hasImportsNoSemicolon, hasImportsResultNoSemicolon,
78
- hasMixedImports, hasMixedImportsResult,
79
- hasDynamicImports, hasDynamicImportsResult,
80
- hasImportsAndContent, hasImportsAndContentResult
81
- }
@@ -1,50 +0,0 @@
1
-
2
- import FlexObject from '../../../../src/core/types/FlexObject';
3
- import Implementation from '../../../../src/runtime/caching/models/Implementation';
4
- import SegmentModule from '../../../../src/runtime/caching/models/SegmentModule';
5
-
6
- function defaultFunction(): string
7
- {
8
- return 'default';
9
- }
10
-
11
- function anotherFunction(a: string, b: string): string
12
- {
13
- return a + b;
14
- }
15
-
16
- function privateFunction(): string
17
- {
18
- return 'private';
19
- }
20
-
21
- const functions: FlexObject =
22
- {
23
- default: defaultFunction,
24
- anotherFunction
25
- }
26
-
27
- const implementations: Map<string, Implementation> = new Map();
28
- implementations.set('default', new Implementation('', 'defaultFunction', 'public', '0.0.0', defaultFunction));
29
- implementations.set('anotherFunction', new Implementation('', 'anotherFunction', 'public', '1.0.0', anotherFunction));
30
- implementations.set('privateFunction', new Implementation('', 'privateFunction', 'private', '1.0.0', privateFunction));
31
-
32
- const segmentModule = new SegmentModule('app/module.js', functions, implementations);
33
-
34
- const codeResult =
35
- `import { runProcedure } from "/jitar/hooks.js";
36
-
37
- export default async function defaultFunction() {
38
- \treturn runProcedure('defaultFunction', '0.0.0', { })
39
- }
40
-
41
- export async function anotherFunction(a, b) {
42
- \treturn runProcedure('anotherFunction', '1.0.0', { 'a': a, 'b': b })
43
- }
44
- `;
45
-
46
- export
47
- {
48
- segmentModule,
49
- codeResult
50
- }
@@ -1,35 +0,0 @@
1
-
2
- import ApplicationModule from '../../../../src/runtime/caching/models/ApplicationModule';
3
-
4
- class AClass {}
5
- class BClass {}
6
- class CClass {}
7
- class DClass {}
8
-
9
- const classes: Map<string, Function> = new Map();
10
- classes.set('AClass', AClass);
11
- classes.set('BClass', BClass);
12
- classes.set('AliasClass', CClass); // Aliasses should be ignored
13
- classes.set('AnonymousClass', class {}) // Anonymous classes should be ignored
14
- classes.set('default', DClass); // Defaults should be accepted
15
-
16
- const applicationModule = new ApplicationModule('app/module.js', classes, new Map());
17
- const filecode = '/* code */';
18
- const filename = 'app/core/classes.js';
19
-
20
- const codeResult =
21
- `/* code */
22
- AClass.source = 'app/core/classes.js';
23
- BClass.source = 'app/core/classes.js';
24
- DClass.source = 'app/core/classes.js';`;
25
-
26
- const emptyModule = new ApplicationModule('app/module.js', new Map(), new Map());
27
-
28
- export
29
- {
30
- applicationModule,
31
- emptyModule,
32
- filecode,
33
- filename,
34
- codeResult
35
- }
@@ -1,78 +0,0 @@
1
-
2
- import Procedure from '../../../src/core/Procedure';
3
- import * as AccessLevel from '../../../src/core/definitions/AccessLevel';
4
- import Implementation from '../../../src/core/Implementation';
5
- import Version from '../../../src/core/Version';
6
- import Segment from '../../../src/core/Segment';
7
-
8
- import { runProcedure } from '../../../src/hooks';
9
-
10
- function firstPrivateTask()
11
- {
12
- return 'first';
13
- }
14
-
15
- // Runs a private task on the same segment
16
- function firstPublicTask()
17
- {
18
- return runProcedure('my/module/firstPrivateTask', '0.0.0', new Map());
19
- }
20
-
21
- // Runs a public task on another segment
22
- function thirdPublicTask()
23
- {
24
- return runProcedure('my/module/fourthPublicTask', '0.0.0', new Map());
25
- }
26
-
27
- function fourthPublicTask()
28
- {
29
- return 'fourth';
30
- }
31
-
32
- function secondPrivateTask()
33
- {
34
- return 'second';
35
- }
36
-
37
- // Runs a private task on another segment
38
- function secondPublicTask()
39
- {
40
- return runProcedure('my/module/firstPrivateTask', '0.0.0', new Map());
41
- }
42
-
43
- const firstImplementation = new Implementation(Version.DEFAULT, AccessLevel.PRIVATE, [], firstPrivateTask);
44
- const secondImplementation = new Implementation(Version.DEFAULT, AccessLevel.PUBLIC, [], firstPublicTask);
45
- const thirdImplementation = new Implementation(Version.DEFAULT, AccessLevel.PUBLIC, [], thirdPublicTask);
46
- const fourthImplementation = new Implementation(Version.DEFAULT, AccessLevel.PUBLIC, [], fourthPublicTask);
47
- const fifthImplementation = new Implementation(Version.DEFAULT, AccessLevel.PRIVATE, [], secondPrivateTask);
48
- const sixthImplementation = new Implementation(Version.DEFAULT, AccessLevel.PUBLIC, [], secondPublicTask);
49
-
50
- const firstProcedure = new Procedure('my/module', 'firstPrivateTask');
51
- firstProcedure.addImplementation(firstImplementation);
52
-
53
- const secondProcedure = new Procedure('my/module', 'firstPublicTask');
54
- secondProcedure.addImplementation(secondImplementation);
55
-
56
- const thirdProcedure = new Procedure('my/module', 'thirdPublicTask');
57
- thirdProcedure.addImplementation(thirdImplementation);
58
-
59
- const fourthProcedure = new Procedure('my/module', 'fourthPublicTask');
60
- fourthProcedure.addImplementation(fourthImplementation);
61
-
62
- const fifthProcedure = new Procedure('my/module', 'secondPrivateTask');
63
- fifthProcedure.addImplementation(fifthImplementation);
64
-
65
- const sixthProcedure = new Procedure('my/module', 'secondPublicTask');
66
- sixthProcedure.addImplementation(sixthImplementation);
67
-
68
- const firstSegment = new Segment('first');
69
- firstSegment.addProcedure(firstProcedure);
70
- firstSegment.addProcedure(secondProcedure);
71
- firstSegment.addProcedure(thirdProcedure);
72
-
73
- const secondSegment = new Segment('second');
74
- secondSegment.addProcedure(fourthProcedure);
75
- secondSegment.addProcedure(fifthProcedure);
76
- secondSegment.addProcedure(sixthProcedure);
77
-
78
- export { firstSegment, secondSegment }
@@ -1,134 +0,0 @@
1
-
2
- import Component from "../../../../src/core/types/Component";
3
-
4
- const IMPORT_URL = '../../../test/_fixtures/runtime/serialization/ValueSerializer.fixture';
5
-
6
- export class Data
7
- {
8
- a?: number;
9
- b?: boolean;
10
- }
11
-
12
- (Data as Component).source = IMPORT_URL;
13
-
14
- export class Constructed
15
- {
16
- #a: number;
17
- #b: boolean;
18
- #c?: string;
19
-
20
- constructor(a: number, b: boolean)
21
- {
22
- this.#a = a;
23
- this.#b = b;
24
- }
25
-
26
- get a() { return this.#a; }
27
-
28
- get b() { return this.#b; }
29
-
30
- get c() { return this.#c; }
31
-
32
- set c(c) { this.#c = c; }
33
- }
34
-
35
- (Constructed as Component).source = IMPORT_URL;
36
-
37
- export class Nested
38
- {
39
- name: string;
40
- #constructed: Constructed;
41
-
42
- constructor(name: string, constructed: Constructed)
43
- {
44
- this.name = name;
45
- this.#constructed = constructed;
46
- }
47
-
48
- get constructed() { return this.#constructed; }
49
- }
50
-
51
- (Nested as Component).source = IMPORT_URL;
52
-
53
- export class PrivateFieldClass
54
- {
55
- #a: number;
56
- #b: boolean;
57
- c?: string;
58
-
59
- constructor(a: number, b: boolean)
60
- {
61
- this.#a = a;
62
- this.#b = b;
63
- }
64
-
65
- get d() { return this.#a; }
66
- }
67
-
68
- (PrivateFieldClass as Component).source = IMPORT_URL;
69
-
70
- const errorClass = new Error('hello');
71
- errorClass.stack = 'stacktrace';
72
-
73
- const numberValue = 1;
74
- const boolValue = true;
75
- const stringValue = 'hello';
76
- const nullValue = null;
77
- const undefinedValue = undefined;
78
-
79
- const emptyArray: unknown[] = [];
80
- const mixedArray: unknown[] = ['a', 1, true];
81
- const nestedArray: unknown[] = ['b', 2, ['c', false], true];
82
-
83
- const emptyObject: unknown = {};
84
- const mixedObject: unknown = { a: 1, b: true, c: 'hello' };
85
- const nestedObject: unknown = { a: 1, b: true, c: { d: false, e: true } };
86
-
87
- const emptyMap: Map<unknown, unknown> = new Map();
88
- const mixedMap: Map<unknown, unknown> = new Map().set('a', 1).set('b', true);
89
- const nestedMap: Map<unknown, unknown> = new Map().set('b', 'hello').set('c', new Map().set('d', false));
90
-
91
- const serializedEmptyMap = { serialized: true, name: 'Map', entries: { keys: [], values: [] } };
92
- const serializedMixedMap = { serialized: true, name: 'Map', entries: { keys: ['a', 'b'], values: [1, true] } }
93
- const serializedNestedMap = { serialized: true, name: 'Map', entries: { keys: ['b', 'c'], values: ['hello', { serialized: true, name: 'Map', entries: { keys: ['d'], values: [false] } }] } }
94
-
95
- const emptySet: Set<unknown> = new Set();
96
- const mixedSet: Set<unknown> = new Set().add(1).add(true);
97
- const nestedSet: Set<unknown> = new Set().add('hello').add(new Set().add(false));
98
-
99
- const serializedEmptySet = { serialized: true, name: 'Set', values: [] };
100
- const serializedMixedSet = { serialized: true, name: 'Set', values: [1, true] };
101
- const serializedNestedSet = { serialized: true, name: 'Set', values: ['hello', { serialized: true, name: 'Set', values: [false] }] };
102
-
103
- const serializedError = { serialized: true, name: 'Error', source: null, args: [], fields: { stack: 'stacktrace', message: 'hello' } };
104
-
105
- const dataClass = new Data();
106
- dataClass.a = 1;
107
- dataClass.b = true;
108
-
109
- const constructedClass = new Constructed(1, true);
110
- constructedClass.c = 'hello';
111
-
112
- const nestedClass = new Nested('hello', constructedClass);
113
- const privateClass = new PrivateFieldClass(1, true);
114
-
115
- const serializedDataClass = { serialized: true, name: 'Data', source: IMPORT_URL, args: [], fields: { a: 1, b: true } };
116
- const serializedConstructedClass = { serialized: true, name: 'Constructed', source: IMPORT_URL, args: [1, true], fields: { c: 'hello' } };
117
- const serializedNestedClass = { serialized: true, name: 'Nested', source: IMPORT_URL, args: ['hello', { serialized: true, name: 'Constructed', source: IMPORT_URL, args: [1, true], fields: { c: 'hello' } }], fields: {} };
118
- const serializedPrivateClass = { serialized: true, name: 'PrivateFieldClass', source: IMPORT_URL, args: [], fields: { c: undefined } };
119
-
120
- const serializedInvalidClass = { serialized: true, name: 'Invalid', source: null, args: [], fields: {} };
121
- const serializedUnserializableClass = { serialized: true, name: 'Infinity', source: null, args: [], fields: {} };
122
-
123
- export
124
- {
125
- numberValue, boolValue, stringValue, nullValue, undefinedValue,
126
- emptyArray, mixedArray, nestedArray,
127
- emptyObject, mixedObject, nestedObject,
128
- emptyMap, mixedMap, nestedMap, serializedEmptyMap, serializedMixedMap, serializedNestedMap,
129
- emptySet, mixedSet, nestedSet, serializedEmptySet, serializedMixedSet, serializedNestedSet,
130
- dataClass, constructedClass, nestedClass, serializedDataClass, serializedConstructedClass, serializedNestedClass,
131
- serializedInvalidClass, serializedUnserializableClass,
132
- privateClass, serializedPrivateClass,
133
- errorClass, serializedError
134
- }
@@ -1,26 +0,0 @@
1
-
2
- import Module from '../../../../src/core/types/Module';
3
-
4
- const string = 'Hello World';
5
-
6
- const pojo = { a: 10, b: 20 }
7
-
8
- function realFunction(a: number, b: number): number
9
- {
10
- return a + b;
11
- }
12
-
13
- class realClass {}
14
-
15
- const theModule: Module = {};
16
- theModule.string = string;
17
- theModule.pojo = pojo;
18
- theModule.realFunction = realFunction;
19
- theModule.realClass = realClass;
20
-
21
- export {
22
- theModule,
23
- pojo,
24
- realFunction,
25
- realClass
26
- }
@@ -1,89 +0,0 @@
1
-
2
- import MissingParameterValue from '../../src/core/errors/MissingParameterValue';
3
-
4
- import
5
- {
6
- privateImplementation,
7
- publicImplementation,
8
- parameterImplementation
9
- } from '../_fixtures/core/Implementation.fixture';
10
-
11
- describe('core/Implementation', () =>
12
- {
13
- describe('.version', () =>
14
- {
15
- it('should have a version', () =>
16
- {
17
- expect(privateImplementation.version.toString()).toBe('0.0.0');
18
- });
19
- });
20
-
21
- describe('.public', () =>
22
- {
23
- it('should be private', () =>
24
- {
25
- expect(privateImplementation.public).toBe(false);
26
- });
27
-
28
- it('should be public', () =>
29
- {
30
- expect(publicImplementation.public).toBe(true);
31
- });
32
- });
33
-
34
- describe('.parameters', () =>
35
- {
36
- it('should have no parameters', () =>
37
- {
38
- const parameters = publicImplementation.parameters;
39
-
40
- expect(parameters.length).toBe(0);
41
- });
42
-
43
- it('should have parameters', () =>
44
- {
45
- const parameters = parameterImplementation.parameters;
46
-
47
- expect(parameters.length).toBe(2);
48
-
49
- expect(parameters[0].name).toBe('mandatory');
50
- expect(parameters[0].isOptional).toBe(false);
51
-
52
- expect(parameters[1].name).toBe('optional');
53
- expect(parameters[1].isOptional).toBe(true);
54
- });
55
- });
56
-
57
- describe('.run(name, version, args)', () =>
58
- {
59
- it('should run a procedure without parameters', async () =>
60
- {
61
- const result = await publicImplementation.run(new Map());
62
-
63
- expect(result).toBe('public');
64
- });
65
-
66
- it('should run a procedure with parameter values', async () =>
67
- {
68
- const args = new Map().set('mandatory', 'mandatory').set('optional', 'optional');
69
- const result = await parameterImplementation.run(args);
70
-
71
- expect(result).toBe('mandatory optional');
72
- });
73
-
74
- it('should run a procedure without an optional parameter value', async () =>
75
- {
76
- const args = new Map().set('mandatory', 'mandatory');
77
- const result = await parameterImplementation.run(args);
78
-
79
- expect(result).toBe('mandatory default');
80
- });
81
-
82
- it('should not run a procedure without a mandatory parameter value', async () =>
83
- {
84
- const run = async () => await parameterImplementation.run(new Map());
85
-
86
- expect(run).rejects.toEqual(new MissingParameterValue('mandatory'));
87
- });
88
- });
89
- });