jitar 0.1.0 → 0.1.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.
Files changed (195) hide show
  1. package/dist/core/SegmentBuilder.js +0 -1
  2. package/dist/runtime/ClientId.d.ts +4 -0
  3. package/dist/runtime/ClientId.js +11 -0
  4. package/dist/runtime/LocalRepository.d.ts +2 -2
  5. package/dist/runtime/LocalRepository.js +4 -5
  6. package/dist/runtime/caching/CacheBuilder.js +3 -3
  7. package/dist/runtime/serialization/ClassSerializer.js +16 -0
  8. package/dist/runtime/serialization/MapSerializer.d.ts +1 -0
  9. package/dist/runtime/serialization/MapSerializer.js +10 -0
  10. package/dist/runtime/serialization/SetSerializer.d.ts +1 -0
  11. package/dist/runtime/serialization/SetSerializer.js +7 -0
  12. package/dist/runtime/serialization/errors/InvalidPropertyType.d.ts +3 -0
  13. package/dist/runtime/serialization/errors/InvalidPropertyType.js +6 -0
  14. package/dist/server/controllers/ModulesController.js +6 -0
  15. package/package.json +23 -4
  16. package/src/core/SegmentBuilder.ts +1 -1
  17. package/src/runtime/ClientId.ts +18 -0
  18. package/src/runtime/LocalRepository.ts +5 -8
  19. package/src/runtime/caching/CacheBuilder.ts +3 -3
  20. package/src/runtime/serialization/ClassSerializer.ts +28 -0
  21. package/src/runtime/serialization/MapSerializer.ts +17 -1
  22. package/src/runtime/serialization/SetSerializer.ts +11 -0
  23. package/src/runtime/serialization/ValueSerializer.ts +1 -1
  24. package/src/runtime/serialization/errors/InvalidPropertyType.ts +12 -0
  25. package/src/server/controllers/ModulesController.ts +11 -0
  26. package/test/runtime/ClientId.spec.ts +43 -0
  27. package/test/runtime/LocalRepository.spec.ts +2 -2
  28. package/test/runtime/serialization/ValueSerializer.spec.ts +1 -1
  29. package/coverage/clover.xml +0 -2483
  30. package/coverage/coverage-final.json +0 -56
  31. package/coverage/lcov-report/base.css +0 -224
  32. package/coverage/lcov-report/block-navigation.js +0 -87
  33. package/coverage/lcov-report/favicon.png +0 -0
  34. package/coverage/lcov-report/index.html +0 -356
  35. package/coverage/lcov-report/prettify.css +0 -1
  36. package/coverage/lcov-report/prettify.js +0 -2
  37. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  38. package/coverage/lcov-report/sorter.js +0 -196
  39. package/coverage/lcov-report/src/core/ErrorManager.ts.html +0 -139
  40. package/coverage/lcov-report/src/core/Implementation.ts.html +0 -244
  41. package/coverage/lcov-report/src/core/ImplementationBuilder.ts.html +0 -148
  42. package/coverage/lcov-report/src/core/Procedure.ts.html +0 -379
  43. package/coverage/lcov-report/src/core/Segment.ts.html +0 -271
  44. package/coverage/lcov-report/src/core/SegmentBuilder.ts.html +0 -250
  45. package/coverage/lcov-report/src/core/Version.ts.html +0 -289
  46. package/coverage/lcov-report/src/core/definitions/AccessLevel.ts.html +0 -94
  47. package/coverage/lcov-report/src/core/definitions/index.html +0 -116
  48. package/coverage/lcov-report/src/core/errors/ErrorManager.ts.html +0 -139
  49. package/coverage/lcov-report/src/core/errors/ImplementationNotFound.ts.html +0 -121
  50. package/coverage/lcov-report/src/core/errors/InvalidVersionNumber.ts.html +0 -121
  51. package/coverage/lcov-report/src/core/errors/MissingParameterValue.ts.html +0 -121
  52. package/coverage/lcov-report/src/core/errors/ProcedureNotFound.ts.html +0 -121
  53. package/coverage/lcov-report/src/core/errors/index.html +0 -161
  54. package/coverage/lcov-report/src/core/index.html +0 -191
  55. package/coverage/lcov-report/src/core/reflection/ParameterParser.ts.html +0 -307
  56. package/coverage/lcov-report/src/core/reflection/ReflectionHelper.ts.html +0 -439
  57. package/coverage/lcov-report/src/core/reflection/index.html +0 -131
  58. package/coverage/lcov-report/src/core/reflection/models/ReflectionField.ts.html +0 -151
  59. package/coverage/lcov-report/src/core/reflection/models/ReflectionParameter.ts.html +0 -139
  60. package/coverage/lcov-report/src/core/reflection/models/index.html +0 -131
  61. package/coverage/lcov-report/src/core/utils/FqnBuilder.ts.html +0 -115
  62. package/coverage/lcov-report/src/core/utils/index.html +0 -116
  63. package/coverage/lcov-report/src/hooks.ts.html +0 -88
  64. package/coverage/lcov-report/src/index.html +0 -116
  65. package/coverage/lcov-report/src/runtime/Gateway.ts.html +0 -139
  66. package/coverage/lcov-report/src/runtime/LocalGateway.ts.html +0 -364
  67. package/coverage/lcov-report/src/runtime/LocalNode.ts.html +0 -475
  68. package/coverage/lcov-report/src/runtime/LocalRepository.ts.html +0 -556
  69. package/coverage/lcov-report/src/runtime/Node.ts.html +0 -130
  70. package/coverage/lcov-report/src/runtime/NodeBalancer.ts.html +0 -268
  71. package/coverage/lcov-report/src/runtime/NodeMonitor.ts.html +0 -274
  72. package/coverage/lcov-report/src/runtime/Remote.ts.html +0 -562
  73. package/coverage/lcov-report/src/runtime/RemoteNode.ts.html +0 -232
  74. package/coverage/lcov-report/src/runtime/Repository.ts.html +0 -145
  75. package/coverage/lcov-report/src/runtime/Runtime.ts.html +0 -226
  76. package/coverage/lcov-report/src/runtime/caching/ImportRewriter.ts.html +0 -313
  77. package/coverage/lcov-report/src/runtime/caching/ModuleAppender.ts.html +0 -208
  78. package/coverage/lcov-report/src/runtime/caching/RemoteBuilder.ts.html +0 -238
  79. package/coverage/lcov-report/src/runtime/caching/SourceAppender.ts.html +0 -256
  80. package/coverage/lcov-report/src/runtime/caching/definitions/Keywords.ts.html +0 -94
  81. package/coverage/lcov-report/src/runtime/caching/definitions/index.html +0 -116
  82. package/coverage/lcov-report/src/runtime/caching/index.html +0 -146
  83. package/coverage/lcov-report/src/runtime/caching/models/ApplicationModule.ts.html +0 -175
  84. package/coverage/lcov-report/src/runtime/caching/models/Implementation.ts.html +0 -208
  85. package/coverage/lcov-report/src/runtime/caching/models/SegmentModule.ts.html +0 -163
  86. package/coverage/lcov-report/src/runtime/caching/models/index.html +0 -146
  87. package/coverage/lcov-report/src/runtime/errors/ClientNotFound.ts.html +0 -121
  88. package/coverage/lcov-report/src/runtime/errors/InvalidClientId.ts.html +0 -121
  89. package/coverage/lcov-report/src/runtime/errors/InvalidSegmentFile.ts.html +0 -121
  90. package/coverage/lcov-report/src/runtime/errors/ModuleNotLoaded.ts.html +0 -121
  91. package/coverage/lcov-report/src/runtime/errors/NoNodeAvailable.ts.html +0 -121
  92. package/coverage/lcov-report/src/runtime/errors/RepositoryNotAvaiable.ts.html +0 -121
  93. package/coverage/lcov-report/src/runtime/errors/RuntimeNotAvailable.ts.html +0 -121
  94. package/coverage/lcov-report/src/runtime/errors/index.html +0 -206
  95. package/coverage/lcov-report/src/runtime/hooks/dependencies.ts.html +0 -142
  96. package/coverage/lcov-report/src/runtime/hooks/index.html +0 -131
  97. package/coverage/lcov-report/src/runtime/hooks/runtime.ts.html +0 -160
  98. package/coverage/lcov-report/src/runtime/index.html +0 -251
  99. package/coverage/lcov-report/src/runtime/models/File.ts.html +0 -151
  100. package/coverage/lcov-report/src/runtime/models/index.html +0 -116
  101. package/coverage/lcov-report/src/runtime/serialization/ArraySerializer.ts.html +0 -166
  102. package/coverage/lcov-report/src/runtime/serialization/ClassSerializer.ts.html +0 -400
  103. package/coverage/lcov-report/src/runtime/serialization/MapSerializer.ts.html +0 -217
  104. package/coverage/lcov-report/src/runtime/serialization/ObjectSerializer.ts.html +0 -211
  105. package/coverage/lcov-report/src/runtime/serialization/SetSerializer.ts.html +0 -178
  106. package/coverage/lcov-report/src/runtime/serialization/ValueSerializer.ts.html +0 -328
  107. package/coverage/lcov-report/src/runtime/serialization/errors/ClassNotFound.ts.html +0 -121
  108. package/coverage/lcov-report/src/runtime/serialization/errors/InvalidClass.ts.html +0 -121
  109. package/coverage/lcov-report/src/runtime/serialization/errors/index.html +0 -131
  110. package/coverage/lcov-report/src/runtime/serialization/index.html +0 -191
  111. package/coverage/lcov-report/src/runtime/utils/ModuleAnalyser.ts.html +0 -265
  112. package/coverage/lcov-report/src/runtime/utils/ModuleLoader.ts.html +0 -238
  113. package/coverage/lcov-report/src/runtime/utils/UrlRewriter.ts.html +0 -262
  114. package/coverage/lcov-report/src/runtime/utils/index.html +0 -146
  115. package/coverage/lcov-report/test/_fixtures/core/Implementation.fixture.ts.html +0 -184
  116. package/coverage/lcov-report/test/_fixtures/core/Procedure.fixture.ts.html +0 -172
  117. package/coverage/lcov-report/test/_fixtures/core/Segment.fixture.ts.html +0 -193
  118. package/coverage/lcov-report/test/_fixtures/core/SegmentBuilder.fixture.ts.html +0 -220
  119. package/coverage/lcov-report/test/_fixtures/core/Version.fixture.ts.html +0 -139
  120. package/coverage/lcov-report/test/_fixtures/core/index.html +0 -176
  121. package/coverage/lcov-report/test/_fixtures/core/procedures/allDefault.ts.html +0 -100
  122. package/coverage/lcov-report/test/_fixtures/core/procedures/hasParameters.ts.html +0 -100
  123. package/coverage/lcov-report/test/_fixtures/core/procedures/hasVersion_v1_0_0.ts.html +0 -115
  124. package/coverage/lcov-report/test/_fixtures/core/procedures/hasVersion_v1_0_5.ts.html +0 -115
  125. package/coverage/lcov-report/test/_fixtures/core/procedures/hasVersion_v1_1_0.ts.html +0 -115
  126. package/coverage/lcov-report/test/_fixtures/core/procedures/hasVersion_v1_2_3.ts.html +0 -115
  127. package/coverage/lcov-report/test/_fixtures/core/procedures/inModule.ts.html +0 -115
  128. package/coverage/lcov-report/test/_fixtures/core/procedures/index.html +0 -251
  129. package/coverage/lcov-report/test/_fixtures/core/procedures/isBroken.ts.html +0 -112
  130. package/coverage/lcov-report/test/_fixtures/core/procedures/isPrivate.ts.html +0 -112
  131. package/coverage/lcov-report/test/_fixtures/core/procedures/isPublic.ts.html +0 -112
  132. package/coverage/lcov-report/test/_fixtures/core/reflection/ReflectionHelper.fixture.ts.html +0 -241
  133. package/coverage/lcov-report/test/_fixtures/core/reflection/index.html +0 -116
  134. package/coverage/lcov-report/test/_fixtures/core/segments/default.segment.ts.html +0 -94
  135. package/coverage/lcov-report/test/_fixtures/core/segments/index.html +0 -116
  136. package/coverage/lcov-report/test/_fixtures/runtime/LocalGateway.fixture.ts.html +0 -157
  137. package/coverage/lcov-report/test/_fixtures/runtime/LocalNode.fixture.ts.html +0 -133
  138. package/coverage/lcov-report/test/_fixtures/runtime/LocalRepository.fixture.ts.html +0 -304
  139. package/coverage/lcov-report/test/_fixtures/runtime/NodeBalancer.fixture.ts.html +0 -142
  140. package/coverage/lcov-report/test/_fixtures/runtime/NodeMonitor.fixture.ts.html +0 -187
  141. package/coverage/lcov-report/test/_fixtures/runtime/RemoteNode.fixture.ts.html +0 -109
  142. package/coverage/lcov-report/test/_fixtures/runtime/caching/ImportRewriter.fixture.ts.html +0 -304
  143. package/coverage/lcov-report/test/_fixtures/runtime/caching/ModuleAppender.fixture.ts.html +0 -181
  144. package/coverage/lcov-report/test/_fixtures/runtime/caching/RemoteBuilder.fixture.ts.html +0 -217
  145. package/coverage/lcov-report/test/_fixtures/runtime/caching/SourceAppender.fixture.ts.html +0 -178
  146. package/coverage/lcov-report/test/_fixtures/runtime/caching/index.html +0 -146
  147. package/coverage/lcov-report/test/_fixtures/runtime/index.html +0 -206
  148. package/coverage/lcov-report/test/_fixtures/runtime/procedures/firstPrivateTask.ts.html +0 -109
  149. package/coverage/lcov-report/test/_fixtures/runtime/procedures/firstPublicTask.ts.html +0 -118
  150. package/coverage/lcov-report/test/_fixtures/runtime/procedures/fourthPublicTask.ts.html +0 -109
  151. package/coverage/lcov-report/test/_fixtures/runtime/procedures/index.html +0 -191
  152. package/coverage/lcov-report/test/_fixtures/runtime/procedures/secondPrivateTask.ts.html +0 -109
  153. package/coverage/lcov-report/test/_fixtures/runtime/procedures/secondPublicTask.ts.html +0 -118
  154. package/coverage/lcov-report/test/_fixtures/runtime/procedures/thirdPublicTask.ts.html +0 -118
  155. package/coverage/lcov-report/test/_fixtures/runtime/segments/first.segment.files.ts.html +0 -85
  156. package/coverage/lcov-report/test/_fixtures/runtime/segments/first.segment.ts.html +0 -91
  157. package/coverage/lcov-report/test/_fixtures/runtime/segments/index.html +0 -161
  158. package/coverage/lcov-report/test/_fixtures/runtime/segments/second.segment.files.ts.html +0 -85
  159. package/coverage/lcov-report/test/_fixtures/runtime/segments/second.segment.ts.html +0 -91
  160. package/coverage/lcov-report/test/_fixtures/runtime/segments.ts.html +0 -319
  161. package/coverage/lcov-report/test/_fixtures/runtime/serialization/ValueSerializer.fixture.ts.html +0 -394
  162. package/coverage/lcov-report/test/_fixtures/runtime/serialization/index.html +0 -116
  163. package/coverage/lcov-report/test/_fixtures/runtime/utils/ModuleAnaliser.fixture.ts.html +0 -163
  164. package/coverage/lcov-report/test/_fixtures/runtime/utils/index.html +0 -116
  165. package/coverage/lcov.info +0 -3565
  166. package/dist/core/AccessLevel.d.ts +0 -5
  167. package/dist/core/AccessLevel.js +0 -6
  168. package/dist/core/ImplementationBuilder.d.ts +0 -4
  169. package/dist/core/ImplementationBuilder.js +0 -14
  170. package/dist/core/errors/ErrorManager.d.ts +0 -3
  171. package/dist/core/errors/ErrorManager.js +0 -11
  172. package/dist/runtime/RemoteNodeBuilder.d.ts +0 -4
  173. package/dist/runtime/RemoteNodeBuilder.js +0 -10
  174. package/dist/runtime/caching/CachBuilder.d.ts +0 -6
  175. package/dist/runtime/caching/CachBuilder.js +0 -150
  176. package/dist/runtime/caching/ModuleAppender.d.ts +0 -5
  177. package/dist/runtime/caching/ModuleAppender.js +0 -22
  178. package/dist/runtime/caching/errors/FunctionFilenameNotFound.d.ts +0 -3
  179. package/dist/runtime/caching/errors/FunctionFilenameNotFound.js +0 -5
  180. package/dist/runtime/caching/types/models/ApplicationModule.d.ts +0 -9
  181. package/dist/runtime/caching/types/models/ApplicationModule.js +0 -19
  182. package/dist/runtime/caching/types/models/Implementation.d.ts +0 -12
  183. package/dist/runtime/caching/types/models/Implementation.js +0 -27
  184. package/dist/runtime/caching/types/models/Procedure.d.ts +0 -9
  185. package/dist/runtime/caching/types/models/Procedure.js +0 -15
  186. package/dist/runtime/caching/types/models/Segment.d.ts +0 -10
  187. package/dist/runtime/caching/types/models/Segment.js +0 -16
  188. package/dist/runtime/caching/types/models/SegmentModule.d.ts +0 -10
  189. package/dist/runtime/caching/types/models/SegmentModule.js +0 -14
  190. package/dist/server/definitions/RuntimeMode.d.ts +0 -8
  191. package/dist/server/definitions/RuntimeMode.js +0 -9
  192. package/dist/server/models/RuntimeConfiguration.d.ts +0 -12
  193. package/dist/server/models/RuntimeConfiguration.js +0 -68
  194. package/dist/server/models/ServerOptions.d.ts +0 -4
  195. package/dist/server/models/ServerOptions.js +0 -25
@@ -1,5 +0,0 @@
1
- declare enum AccessLevel {
2
- PRIVATE = "private",
3
- PUBLIC = "public"
4
- }
5
- export default AccessLevel;
@@ -1,6 +0,0 @@
1
- var AccessLevel;
2
- (function (AccessLevel) {
3
- AccessLevel["PRIVATE"] = "private";
4
- AccessLevel["PUBLIC"] = "public";
5
- })(AccessLevel || (AccessLevel = {}));
6
- export default AccessLevel;
@@ -1,4 +0,0 @@
1
- import Implementation from './Implementation.js';
2
- export default class ImplementationBuilder {
3
- static build(executable: Function): Implementation;
4
- }
@@ -1,14 +0,0 @@
1
- import Implementation from './Implementation.js';
2
- import ReflectionHelper from './reflection/ReflectionHelper.js';
3
- import Version from './Version.js';
4
- export default class ImplementationBuilder {
5
- static build(executable) {
6
- const component = executable;
7
- const name = component.name;
8
- const module = component.module ?? '';
9
- const version = component.version ? Version.parse(component.version) : Version.DEFAULT;
10
- const isPublic = component.public !== false;
11
- const parameters = ReflectionHelper.getFunctionParameters(executable);
12
- return new Implementation(name, module, version, isPublic, parameters, executable);
13
- }
14
- }
@@ -1,3 +0,0 @@
1
- export default class ErrorManager extends Error {
2
- static handle(error: unknown, name: string, version: string): Error;
3
- }
@@ -1,11 +0,0 @@
1
- export default class ErrorManager extends Error {
2
- static handle(error, name, version) {
3
- const parentMessage = error instanceof Error ? error.message : String(error);
4
- const newMessage = `${parentMessage}\n[${name} | v${version}]`;
5
- if (error instanceof Error) {
6
- error.message = newMessage;
7
- return error;
8
- }
9
- return new Error(newMessage);
10
- }
11
- }
@@ -1,4 +0,0 @@
1
- import RemoteNode from './RemoteNode.js';
2
- export default class RemoteNodeBuilder {
3
- static build(url: string, procedureNames: string[]): RemoteNode;
4
- }
@@ -1,10 +0,0 @@
1
- import RemoteNode from './RemoteNode.js';
2
- export default class RemoteNodeBuilder {
3
- static build(url, procedureNames) {
4
- const node = new RemoteNode(url);
5
- for (const name of procedureNames) {
6
- node.registerProcedure(name);
7
- }
8
- return node;
9
- }
10
- }
@@ -1,6 +0,0 @@
1
- import FileManager from '../interfaces/FileManager.js';
2
- export default class CacheBuilder {
3
- #private;
4
- constructor(sourceManager: FileManager, cacheManager: FileManager);
5
- build(...filenames: string[]): Promise<void>;
6
- }
@@ -1,150 +0,0 @@
1
- import ModuleLoader from '../utils/ModuleLoader.js';
2
- import ModuleAnalyser from '../utils/ModuleAnalyser.js';
3
- import ApplicationModule from './models/ApplicationModule.js';
4
- import SourceAppender from './SourceAppender.js';
5
- import ImportRewriter from './ImportRewriter.js';
6
- import RemoteBuilder from './RemoteBuilder.js';
7
- import SegmentModule from './models/SegmentModule.js';
8
- import FunctionFilenameNotFound from './errors/FunctionFilenameNotFound.js';
9
- import ModuleAppender from './ModuleAppender.js';
10
- const IGNORED_SOURCE_FILES = ['.min.js', '.segment.js'];
11
- export default class CacheBuilder {
12
- #sourceManager;
13
- #cacheManager;
14
- constructor(sourceManager, cacheManager) {
15
- this.#sourceManager = sourceManager;
16
- this.#cacheManager = cacheManager;
17
- }
18
- async build(...filenames) {
19
- const segmentFiles = this.#filterSegmentFiles(filenames);
20
- const applicationFiles = this.#filterApplicationFiles(filenames);
21
- const segmentModules = await this.#createSegmentModules(segmentFiles);
22
- const segmentedFunctions = this.#extractSegmentedFunctions(segmentModules);
23
- const applicationModules = await this.#createApplicationModules(applicationFiles);
24
- const cachableApplicationModules = this.#filterCachableApplicationModules(applicationModules, segmentedFunctions);
25
- await this.#buildSegmentCache(segmentModules, cachableApplicationModules);
26
- await this.#buildApplicationCache(cachableApplicationModules);
27
- }
28
- #filterSegmentFiles(fileNames) {
29
- return fileNames.filter(filename => filename.endsWith('.segment.js'));
30
- }
31
- #filterApplicationFiles(fileNames) {
32
- return fileNames.filter(filename => !this.#mustIgnoreFile(filename));
33
- }
34
- #mustIgnoreFile(filename) {
35
- return IGNORED_SOURCE_FILES.some((ignored) => filename.endsWith(ignored));
36
- }
37
- async #createSegmentModules(filenames) {
38
- const promises = filenames.map(async (filename) => this.#createSegmentModule(filename));
39
- return Promise.all(promises).then(results => results);
40
- }
41
- async #createSegmentModule(filename) {
42
- const relativeLocation = this.#sourceManager.getRelativeLocation(filename);
43
- const module = await this.#loadModule(filename);
44
- if (module === undefined) {
45
- return new SegmentModule(relativeLocation, new Map());
46
- }
47
- const functions = ModuleAnalyser.filterFunctions(module);
48
- return new SegmentModule(relativeLocation, functions);
49
- }
50
- #extractSegmentedFunctions(segmentModules) {
51
- const functions = new Set();
52
- for (const segmentModule of segmentModules) {
53
- const moduleFunctions = [...segmentModule.functions.values()];
54
- moduleFunctions.forEach(moduleFunction => functions.add(moduleFunction));
55
- }
56
- return functions;
57
- }
58
- async #createApplicationModules(filenames) {
59
- const promises = filenames.map(async (filename) => this.#createApplicationModule(filename));
60
- return Promise.all(promises).then(results => results);
61
- }
62
- async #createApplicationModule(filename) {
63
- const module = await this.#loadModule(filename);
64
- const relativeLocation = this.#sourceManager.getRelativeLocation(filename);
65
- if (module === undefined) {
66
- return new ApplicationModule(relativeLocation, new Map(), new Map());
67
- }
68
- const classes = ModuleAnalyser.filterClasses(module);
69
- const functions = ModuleAnalyser.filterFunctions(module);
70
- return new ApplicationModule(relativeLocation, classes, functions);
71
- }
72
- #filterCachableApplicationModules(applicationModules, segmentFunctions) {
73
- return applicationModules.filter(module => module.hasClasses || this.#hasSegmentedFunctions(module, segmentFunctions));
74
- }
75
- #hasSegmentedFunctions(applicationModule, segmentFunctions) {
76
- const applicationFunctions = [...applicationModule.functions.values()];
77
- return applicationFunctions.some(applicationFunction => segmentFunctions.has(applicationFunction));
78
- }
79
- async #loadModule(filename) {
80
- try {
81
- return await ModuleLoader.load(filename);
82
- }
83
- catch (error) {
84
- return undefined;
85
- }
86
- }
87
- async #buildSegmentCache(segmentModules, applicationModules) {
88
- const promises = segmentModules.map(async (module) => this.#buildSegmentModuleCache(module, applicationModules));
89
- return Promise.all(promises);
90
- }
91
- async #buildSegmentModuleCache(module, applicationModules) {
92
- const filenames = this.#extractSegmentFilenames(module, applicationModules);
93
- const segmentCode = `export const files = ${JSON.stringify(filenames)};`;
94
- const segmentLocation = module.filename.replace('.js', '.files.js');
95
- return this.#cacheManager.store(segmentLocation, segmentCode);
96
- }
97
- #extractSegmentFilenames(module, applicationModules) {
98
- const filenames = [];
99
- for (const segmentFunction of module.functions.values()) {
100
- const filename = this.#findFunctionFilename(segmentFunction, applicationModules);
101
- if (filename === undefined) {
102
- throw new FunctionFilenameNotFound(segmentFunction.name, module.filename);
103
- }
104
- filenames.push(filename);
105
- }
106
- return filenames;
107
- }
108
- #findFunctionFilename(segmentFunction, applicationModules) {
109
- const applicationModule = applicationModules.find(applicationModule => applicationModule.containsFunction(segmentFunction));
110
- return applicationModule !== undefined
111
- ? applicationModule.filename
112
- : undefined;
113
- }
114
- async #buildApplicationCache(applicationModules) {
115
- const promises = applicationModules.map(async (module) => this.#buildApplicationModuleCache(module));
116
- return Promise.all(promises);
117
- }
118
- async #buildApplicationModuleCache(module) {
119
- const filename = module.filename;
120
- const sourceLocation = this.#sourceManager.getAbsoluteLocation(filename);
121
- const relativeLocation = filename;
122
- const file = await this.#sourceManager.load(sourceLocation);
123
- const content = file.content.toString();
124
- const code = await this.#buildForRepository(module, content, relativeLocation);
125
- if (module.hasFunctions) {
126
- await this.#buildForNode(code, relativeLocation);
127
- await this.#buildForRemote(module, relativeLocation);
128
- }
129
- }
130
- async #buildForRepository(module, code, location) {
131
- if (module.hasFunctions) {
132
- code = ModuleAppender.append(module, code, location);
133
- }
134
- if (module.hasClasses) {
135
- code = SourceAppender.append(module, code, location);
136
- }
137
- await this.#cacheManager.store(location, code);
138
- return code;
139
- }
140
- async #buildForNode(code, location) {
141
- code = ImportRewriter.rewrite(code);
142
- const nodeLocation = location.replace('.js', '.node.js');
143
- return this.#cacheManager.store(nodeLocation, code);
144
- }
145
- async #buildForRemote(module, location) {
146
- const remoteCode = RemoteBuilder.build(module);
147
- const remoteLocation = location.replace('.js', '.remote.js');
148
- return this.#cacheManager.store(remoteLocation, remoteCode);
149
- }
150
- }
@@ -1,5 +0,0 @@
1
- import ApplicationModule from './models/ApplicationModule.js';
2
- export default class ModuleAppender {
3
- #private;
4
- static append(module: ApplicationModule, code: string, filename: string): string;
5
- }
@@ -1,22 +0,0 @@
1
- export default class ModuleAppender {
2
- static append(module, code, filename) {
3
- const moduleName = this.#extractModuleName(filename);
4
- const functions = [...module.functions.values()];
5
- const moduleCode = this.#createModuleCode(functions, moduleName);
6
- return `${code}\n${moduleCode}`;
7
- }
8
- static #extractModuleName(filename) {
9
- const moduleParts = filename.split('/');
10
- moduleParts.pop();
11
- return moduleParts.join('/');
12
- }
13
- static #createModuleCode(functions, moduleName) {
14
- const codes = [];
15
- for (const applicationFunction of functions) {
16
- const functionName = applicationFunction.name;
17
- applicationFunction.module = moduleName;
18
- codes.push(`${functionName}.module = '${moduleName}';`);
19
- }
20
- return codes.join('\n');
21
- }
22
- }
@@ -1,3 +0,0 @@
1
- export default class FunctionFilenameNotFound extends Error {
2
- constructor(functionName: string, segmentFilename: string);
3
- }
@@ -1,5 +0,0 @@
1
- export default class FunctionFilenameNotFound extends Error {
2
- constructor(functionName, segmentFilename) {
3
- super(`No filename found for function '${functionName}' in '${segmentFilename}'`);
4
- }
5
- }
@@ -1,9 +0,0 @@
1
- export default class ApplicationModule {
2
- #private;
3
- constructor(filename: string, classes: Map<string, Function>, functions: Map<string, Function>);
4
- get filename(): string;
5
- get classes(): Map<string, Function>;
6
- get functions(): Map<string, Function>;
7
- hasClasses(): boolean;
8
- hasFunctions(): boolean;
9
- }
@@ -1,19 +0,0 @@
1
- export default class ApplicationModule {
2
- #filename;
3
- #classes;
4
- #functions;
5
- constructor(filename, classes, functions) {
6
- this.#filename = filename;
7
- this.#classes = classes;
8
- this.#functions = functions;
9
- }
10
- get filename() { return this.#filename; }
11
- get classes() { return this.#classes; }
12
- get functions() { return this.#functions; }
13
- hasClasses() {
14
- return this.#classes.size > 0;
15
- }
16
- hasFunctions() {
17
- return this.#functions.size > 0;
18
- }
19
- }
@@ -1,12 +0,0 @@
1
- import Component from '../../../core/types/Component.js';
2
- export default class Implementation {
3
- #private;
4
- constructor(module: string, name: string, access: string, version: string, executable: Component);
5
- get id(): number;
6
- get module(): string;
7
- get name(): string;
8
- get fqn(): string;
9
- get access(): string;
10
- get version(): string;
11
- get executable(): Component;
12
- }
@@ -1,27 +0,0 @@
1
- import FqnBuilder from '../../../core/utils/FqnBuilder.js';
2
- let lastId = 0;
3
- export default class Implementation {
4
- #id;
5
- #module;
6
- #name;
7
- #fqn;
8
- #access;
9
- #version;
10
- #executable;
11
- constructor(module, name, access, version, executable) {
12
- this.#id = ++lastId;
13
- this.#module = module;
14
- this.#name = name;
15
- this.#fqn = FqnBuilder.build(module, name);
16
- this.#access = access;
17
- this.#version = version;
18
- this.#executable = executable;
19
- }
20
- get id() { return this.#id; }
21
- get module() { return this.#module; }
22
- get name() { return this.#name; }
23
- get fqn() { return this.#fqn; }
24
- get access() { return this.#access; }
25
- get version() { return this.#version; }
26
- get executable() { return this.#executable; }
27
- }
@@ -1,9 +0,0 @@
1
- import Implementation from './Implementation.js';
2
- export default class Procedure {
3
- #private;
4
- constructor(module: string, name: string);
5
- get module(): string;
6
- get name(): string;
7
- get implementations(): Implementation[];
8
- addImplementation(implementation: Implementation): void;
9
- }
@@ -1,15 +0,0 @@
1
- export default class Procedure {
2
- #module;
3
- #name;
4
- #implementations = [];
5
- constructor(module, name) {
6
- this.#module = module;
7
- this.#name = name;
8
- }
9
- get module() { return this.#module; }
10
- get name() { return this.#name; }
11
- get implementations() { return this.#implementations; }
12
- addImplementation(implementation) {
13
- this.#implementations.push(implementation);
14
- }
15
- }
@@ -1,10 +0,0 @@
1
- import Procedure from './Procedure.js';
2
- import SegmentModule from './SegmentModule.js';
3
- export default class Segment {
4
- #private;
5
- constructor(filename: string, modules: SegmentModule[], procedures: Map<string, Procedure>);
6
- get filename(): string;
7
- get modules(): SegmentModule[];
8
- get procedures(): Map<string, Procedure>;
9
- getFilenames(): string[];
10
- }
@@ -1,16 +0,0 @@
1
- export default class Segment {
2
- #filename;
3
- #modules;
4
- #procedures;
5
- constructor(filename, modules, procedures) {
6
- this.#filename = filename;
7
- this.#modules = modules;
8
- this.#procedures = procedures;
9
- }
10
- get filename() { return this.#filename; }
11
- get modules() { return this.#modules; }
12
- get procedures() { return this.#procedures; }
13
- getFilenames() {
14
- return this.#modules.map((module) => module.filename);
15
- }
16
- }
@@ -1,10 +0,0 @@
1
- import Module from '../../../core/types/Module.js';
2
- import Implementation from './Implementation.js';
3
- export default class SegmentModule {
4
- #private;
5
- constructor(filename: string, exports: Module, implementations: Map<string, Implementation>);
6
- get filename(): string;
7
- get exports(): Module;
8
- get implementations(): Map<string, Implementation>;
9
- getImportKeys(): string[];
10
- }
@@ -1,14 +0,0 @@
1
- export default class SegmentModule {
2
- #filename;
3
- #exports;
4
- #implementations;
5
- constructor(filename, exports, implementations) {
6
- this.#filename = filename;
7
- this.#exports = exports;
8
- this.#implementations = implementations;
9
- }
10
- get filename() { return this.#filename; }
11
- get exports() { return this.#exports; }
12
- get implementations() { return this.#implementations; }
13
- getImportKeys() { return [...this.#implementations.keys()]; }
14
- }
@@ -1,8 +0,0 @@
1
- declare enum RuntimeMode {
2
- STAND_ALONE = "standalone",
3
- REPOSITORY = "repository",
4
- GATEWAY = "gateway",
5
- NODE = "node",
6
- PROXY = "proxy"
7
- }
8
- export default RuntimeMode;
@@ -1,9 +0,0 @@
1
- var RuntimeMode;
2
- (function (RuntimeMode) {
3
- RuntimeMode["STAND_ALONE"] = "standalone";
4
- RuntimeMode["REPOSITORY"] = "repository";
5
- RuntimeMode["GATEWAY"] = "gateway";
6
- RuntimeMode["NODE"] = "node";
7
- RuntimeMode["PROXY"] = "proxy";
8
- })(RuntimeMode || (RuntimeMode = {}));
9
- export default RuntimeMode;
@@ -1,12 +0,0 @@
1
- import RuntimeMode from '../definitions/RuntimeMode.js';
2
- export default class RuntimeConfiguration {
3
- mode: RuntimeMode;
4
- url: string;
5
- source: string;
6
- cache: string;
7
- node: string | undefined;
8
- gateway: string | undefined;
9
- repository: string | undefined;
10
- segments: string[];
11
- index: string;
12
- }
@@ -1,68 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- var __metadata = (this && this.__metadata) || function (k, v) {
8
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
- };
10
- import { IsArray, IsIn, IsOptional, IsString, IsUrl } from 'class-validator';
11
- import RuntimeMode from '../definitions/RuntimeMode.js';
12
- export default class RuntimeConfiguration {
13
- mode = RuntimeMode.STAND_ALONE;
14
- url = 'http://localhost:3000';
15
- source = './src';
16
- cache = './dist';
17
- node;
18
- gateway;
19
- repository;
20
- segments = [];
21
- index = 'index.html';
22
- }
23
- __decorate([
24
- IsString(),
25
- IsIn([
26
- RuntimeMode.STAND_ALONE,
27
- RuntimeMode.REPOSITORY,
28
- RuntimeMode.GATEWAY,
29
- RuntimeMode.NODE,
30
- RuntimeMode.PROXY
31
- ]),
32
- __metadata("design:type", Object)
33
- ], RuntimeConfiguration.prototype, "mode", void 0);
34
- __decorate([
35
- IsUrl(),
36
- __metadata("design:type", Object)
37
- ], RuntimeConfiguration.prototype, "url", void 0);
38
- __decorate([
39
- IsString(),
40
- __metadata("design:type", Object)
41
- ], RuntimeConfiguration.prototype, "source", void 0);
42
- __decorate([
43
- IsString(),
44
- __metadata("design:type", Object)
45
- ], RuntimeConfiguration.prototype, "cache", void 0);
46
- __decorate([
47
- IsUrl(),
48
- IsOptional(),
49
- __metadata("design:type", Object)
50
- ], RuntimeConfiguration.prototype, "node", void 0);
51
- __decorate([
52
- IsUrl(),
53
- IsOptional(),
54
- __metadata("design:type", Object)
55
- ], RuntimeConfiguration.prototype, "gateway", void 0);
56
- __decorate([
57
- IsUrl(),
58
- IsOptional(),
59
- __metadata("design:type", Object)
60
- ], RuntimeConfiguration.prototype, "repository", void 0);
61
- __decorate([
62
- IsArray(),
63
- __metadata("design:type", Array)
64
- ], RuntimeConfiguration.prototype, "segments", void 0);
65
- __decorate([
66
- IsString(),
67
- __metadata("design:type", Object)
68
- ], RuntimeConfiguration.prototype, "index", void 0);
@@ -1,4 +0,0 @@
1
- export default class ServerOptions {
2
- loglevel: string;
3
- config: string;
4
- }
@@ -1,25 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- var __metadata = (this && this.__metadata) || function (k, v) {
8
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
- };
10
- import { Contains, IsOptional, IsString } from 'class-validator';
11
- export default class ServerOptions {
12
- loglevel = 'info';
13
- config = 'config.json';
14
- }
15
- __decorate([
16
- IsString(),
17
- IsOptional(),
18
- __metadata("design:type", Object)
19
- ], ServerOptions.prototype, "loglevel", void 0);
20
- __decorate([
21
- IsString(),
22
- Contains('.json'),
23
- IsOptional(),
24
- __metadata("design:type", Object)
25
- ], ServerOptions.prototype, "config", void 0);