jitar 0.1.0

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 (577) hide show
  1. package/.eslintignore +3 -0
  2. package/.eslintrc +16 -0
  3. package/README.md +15 -0
  4. package/coverage/clover.xml +2483 -0
  5. package/coverage/coverage-final.json +56 -0
  6. package/coverage/lcov-report/base.css +224 -0
  7. package/coverage/lcov-report/block-navigation.js +87 -0
  8. package/coverage/lcov-report/favicon.png +0 -0
  9. package/coverage/lcov-report/index.html +356 -0
  10. package/coverage/lcov-report/prettify.css +1 -0
  11. package/coverage/lcov-report/prettify.js +2 -0
  12. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  13. package/coverage/lcov-report/sorter.js +196 -0
  14. package/coverage/lcov-report/src/core/ErrorManager.ts.html +139 -0
  15. package/coverage/lcov-report/src/core/Implementation.ts.html +244 -0
  16. package/coverage/lcov-report/src/core/ImplementationBuilder.ts.html +148 -0
  17. package/coverage/lcov-report/src/core/Procedure.ts.html +379 -0
  18. package/coverage/lcov-report/src/core/Segment.ts.html +271 -0
  19. package/coverage/lcov-report/src/core/SegmentBuilder.ts.html +250 -0
  20. package/coverage/lcov-report/src/core/Version.ts.html +289 -0
  21. package/coverage/lcov-report/src/core/definitions/AccessLevel.ts.html +94 -0
  22. package/coverage/lcov-report/src/core/definitions/index.html +116 -0
  23. package/coverage/lcov-report/src/core/errors/ErrorManager.ts.html +139 -0
  24. package/coverage/lcov-report/src/core/errors/ImplementationNotFound.ts.html +121 -0
  25. package/coverage/lcov-report/src/core/errors/InvalidVersionNumber.ts.html +121 -0
  26. package/coverage/lcov-report/src/core/errors/MissingParameterValue.ts.html +121 -0
  27. package/coverage/lcov-report/src/core/errors/ProcedureNotFound.ts.html +121 -0
  28. package/coverage/lcov-report/src/core/errors/index.html +161 -0
  29. package/coverage/lcov-report/src/core/index.html +191 -0
  30. package/coverage/lcov-report/src/core/reflection/ParameterParser.ts.html +307 -0
  31. package/coverage/lcov-report/src/core/reflection/ReflectionHelper.ts.html +439 -0
  32. package/coverage/lcov-report/src/core/reflection/index.html +131 -0
  33. package/coverage/lcov-report/src/core/reflection/models/ReflectionField.ts.html +151 -0
  34. package/coverage/lcov-report/src/core/reflection/models/ReflectionParameter.ts.html +139 -0
  35. package/coverage/lcov-report/src/core/reflection/models/index.html +131 -0
  36. package/coverage/lcov-report/src/core/utils/FqnBuilder.ts.html +115 -0
  37. package/coverage/lcov-report/src/core/utils/index.html +116 -0
  38. package/coverage/lcov-report/src/hooks.ts.html +88 -0
  39. package/coverage/lcov-report/src/index.html +116 -0
  40. package/coverage/lcov-report/src/runtime/Gateway.ts.html +139 -0
  41. package/coverage/lcov-report/src/runtime/LocalGateway.ts.html +364 -0
  42. package/coverage/lcov-report/src/runtime/LocalNode.ts.html +475 -0
  43. package/coverage/lcov-report/src/runtime/LocalRepository.ts.html +556 -0
  44. package/coverage/lcov-report/src/runtime/Node.ts.html +130 -0
  45. package/coverage/lcov-report/src/runtime/NodeBalancer.ts.html +268 -0
  46. package/coverage/lcov-report/src/runtime/NodeMonitor.ts.html +274 -0
  47. package/coverage/lcov-report/src/runtime/Remote.ts.html +562 -0
  48. package/coverage/lcov-report/src/runtime/RemoteNode.ts.html +232 -0
  49. package/coverage/lcov-report/src/runtime/Repository.ts.html +145 -0
  50. package/coverage/lcov-report/src/runtime/Runtime.ts.html +226 -0
  51. package/coverage/lcov-report/src/runtime/caching/ImportRewriter.ts.html +313 -0
  52. package/coverage/lcov-report/src/runtime/caching/ModuleAppender.ts.html +208 -0
  53. package/coverage/lcov-report/src/runtime/caching/RemoteBuilder.ts.html +238 -0
  54. package/coverage/lcov-report/src/runtime/caching/SourceAppender.ts.html +256 -0
  55. package/coverage/lcov-report/src/runtime/caching/definitions/Keywords.ts.html +94 -0
  56. package/coverage/lcov-report/src/runtime/caching/definitions/index.html +116 -0
  57. package/coverage/lcov-report/src/runtime/caching/index.html +146 -0
  58. package/coverage/lcov-report/src/runtime/caching/models/ApplicationModule.ts.html +175 -0
  59. package/coverage/lcov-report/src/runtime/caching/models/Implementation.ts.html +208 -0
  60. package/coverage/lcov-report/src/runtime/caching/models/SegmentModule.ts.html +163 -0
  61. package/coverage/lcov-report/src/runtime/caching/models/index.html +146 -0
  62. package/coverage/lcov-report/src/runtime/errors/ClientNotFound.ts.html +121 -0
  63. package/coverage/lcov-report/src/runtime/errors/InvalidClientId.ts.html +121 -0
  64. package/coverage/lcov-report/src/runtime/errors/InvalidSegmentFile.ts.html +121 -0
  65. package/coverage/lcov-report/src/runtime/errors/ModuleNotLoaded.ts.html +121 -0
  66. package/coverage/lcov-report/src/runtime/errors/NoNodeAvailable.ts.html +121 -0
  67. package/coverage/lcov-report/src/runtime/errors/RepositoryNotAvaiable.ts.html +121 -0
  68. package/coverage/lcov-report/src/runtime/errors/RuntimeNotAvailable.ts.html +121 -0
  69. package/coverage/lcov-report/src/runtime/errors/index.html +206 -0
  70. package/coverage/lcov-report/src/runtime/hooks/dependencies.ts.html +142 -0
  71. package/coverage/lcov-report/src/runtime/hooks/index.html +131 -0
  72. package/coverage/lcov-report/src/runtime/hooks/runtime.ts.html +160 -0
  73. package/coverage/lcov-report/src/runtime/index.html +251 -0
  74. package/coverage/lcov-report/src/runtime/models/File.ts.html +151 -0
  75. package/coverage/lcov-report/src/runtime/models/index.html +116 -0
  76. package/coverage/lcov-report/src/runtime/serialization/ArraySerializer.ts.html +166 -0
  77. package/coverage/lcov-report/src/runtime/serialization/ClassSerializer.ts.html +400 -0
  78. package/coverage/lcov-report/src/runtime/serialization/MapSerializer.ts.html +217 -0
  79. package/coverage/lcov-report/src/runtime/serialization/ObjectSerializer.ts.html +211 -0
  80. package/coverage/lcov-report/src/runtime/serialization/SetSerializer.ts.html +178 -0
  81. package/coverage/lcov-report/src/runtime/serialization/ValueSerializer.ts.html +328 -0
  82. package/coverage/lcov-report/src/runtime/serialization/errors/ClassNotFound.ts.html +121 -0
  83. package/coverage/lcov-report/src/runtime/serialization/errors/InvalidClass.ts.html +121 -0
  84. package/coverage/lcov-report/src/runtime/serialization/errors/index.html +131 -0
  85. package/coverage/lcov-report/src/runtime/serialization/index.html +191 -0
  86. package/coverage/lcov-report/src/runtime/utils/ModuleAnalyser.ts.html +265 -0
  87. package/coverage/lcov-report/src/runtime/utils/ModuleLoader.ts.html +238 -0
  88. package/coverage/lcov-report/src/runtime/utils/UrlRewriter.ts.html +262 -0
  89. package/coverage/lcov-report/src/runtime/utils/index.html +146 -0
  90. package/coverage/lcov-report/test/_fixtures/core/Implementation.fixture.ts.html +184 -0
  91. package/coverage/lcov-report/test/_fixtures/core/Procedure.fixture.ts.html +172 -0
  92. package/coverage/lcov-report/test/_fixtures/core/Segment.fixture.ts.html +193 -0
  93. package/coverage/lcov-report/test/_fixtures/core/SegmentBuilder.fixture.ts.html +220 -0
  94. package/coverage/lcov-report/test/_fixtures/core/Version.fixture.ts.html +139 -0
  95. package/coverage/lcov-report/test/_fixtures/core/index.html +176 -0
  96. package/coverage/lcov-report/test/_fixtures/core/procedures/allDefault.ts.html +100 -0
  97. package/coverage/lcov-report/test/_fixtures/core/procedures/hasParameters.ts.html +100 -0
  98. package/coverage/lcov-report/test/_fixtures/core/procedures/hasVersion_v1_0_0.ts.html +115 -0
  99. package/coverage/lcov-report/test/_fixtures/core/procedures/hasVersion_v1_0_5.ts.html +115 -0
  100. package/coverage/lcov-report/test/_fixtures/core/procedures/hasVersion_v1_1_0.ts.html +115 -0
  101. package/coverage/lcov-report/test/_fixtures/core/procedures/hasVersion_v1_2_3.ts.html +115 -0
  102. package/coverage/lcov-report/test/_fixtures/core/procedures/inModule.ts.html +115 -0
  103. package/coverage/lcov-report/test/_fixtures/core/procedures/index.html +251 -0
  104. package/coverage/lcov-report/test/_fixtures/core/procedures/isBroken.ts.html +112 -0
  105. package/coverage/lcov-report/test/_fixtures/core/procedures/isPrivate.ts.html +112 -0
  106. package/coverage/lcov-report/test/_fixtures/core/procedures/isPublic.ts.html +112 -0
  107. package/coverage/lcov-report/test/_fixtures/core/reflection/ReflectionHelper.fixture.ts.html +241 -0
  108. package/coverage/lcov-report/test/_fixtures/core/reflection/index.html +116 -0
  109. package/coverage/lcov-report/test/_fixtures/core/segments/default.segment.ts.html +94 -0
  110. package/coverage/lcov-report/test/_fixtures/core/segments/index.html +116 -0
  111. package/coverage/lcov-report/test/_fixtures/runtime/LocalGateway.fixture.ts.html +157 -0
  112. package/coverage/lcov-report/test/_fixtures/runtime/LocalNode.fixture.ts.html +133 -0
  113. package/coverage/lcov-report/test/_fixtures/runtime/LocalRepository.fixture.ts.html +304 -0
  114. package/coverage/lcov-report/test/_fixtures/runtime/NodeBalancer.fixture.ts.html +142 -0
  115. package/coverage/lcov-report/test/_fixtures/runtime/NodeMonitor.fixture.ts.html +187 -0
  116. package/coverage/lcov-report/test/_fixtures/runtime/RemoteNode.fixture.ts.html +109 -0
  117. package/coverage/lcov-report/test/_fixtures/runtime/caching/ImportRewriter.fixture.ts.html +304 -0
  118. package/coverage/lcov-report/test/_fixtures/runtime/caching/ModuleAppender.fixture.ts.html +181 -0
  119. package/coverage/lcov-report/test/_fixtures/runtime/caching/RemoteBuilder.fixture.ts.html +217 -0
  120. package/coverage/lcov-report/test/_fixtures/runtime/caching/SourceAppender.fixture.ts.html +178 -0
  121. package/coverage/lcov-report/test/_fixtures/runtime/caching/index.html +146 -0
  122. package/coverage/lcov-report/test/_fixtures/runtime/index.html +206 -0
  123. package/coverage/lcov-report/test/_fixtures/runtime/procedures/firstPrivateTask.ts.html +109 -0
  124. package/coverage/lcov-report/test/_fixtures/runtime/procedures/firstPublicTask.ts.html +118 -0
  125. package/coverage/lcov-report/test/_fixtures/runtime/procedures/fourthPublicTask.ts.html +109 -0
  126. package/coverage/lcov-report/test/_fixtures/runtime/procedures/index.html +191 -0
  127. package/coverage/lcov-report/test/_fixtures/runtime/procedures/secondPrivateTask.ts.html +109 -0
  128. package/coverage/lcov-report/test/_fixtures/runtime/procedures/secondPublicTask.ts.html +118 -0
  129. package/coverage/lcov-report/test/_fixtures/runtime/procedures/thirdPublicTask.ts.html +118 -0
  130. package/coverage/lcov-report/test/_fixtures/runtime/segments/first.segment.files.ts.html +85 -0
  131. package/coverage/lcov-report/test/_fixtures/runtime/segments/first.segment.ts.html +91 -0
  132. package/coverage/lcov-report/test/_fixtures/runtime/segments/index.html +161 -0
  133. package/coverage/lcov-report/test/_fixtures/runtime/segments/second.segment.files.ts.html +85 -0
  134. package/coverage/lcov-report/test/_fixtures/runtime/segments/second.segment.ts.html +91 -0
  135. package/coverage/lcov-report/test/_fixtures/runtime/segments.ts.html +319 -0
  136. package/coverage/lcov-report/test/_fixtures/runtime/serialization/ValueSerializer.fixture.ts.html +394 -0
  137. package/coverage/lcov-report/test/_fixtures/runtime/serialization/index.html +116 -0
  138. package/coverage/lcov-report/test/_fixtures/runtime/utils/ModuleAnaliser.fixture.ts.html +163 -0
  139. package/coverage/lcov-report/test/_fixtures/runtime/utils/index.html +116 -0
  140. package/coverage/lcov.info +3565 -0
  141. package/dist/client.d.ts +2 -0
  142. package/dist/client.js +12 -0
  143. package/dist/core/AccessLevel.d.ts +5 -0
  144. package/dist/core/AccessLevel.js +6 -0
  145. package/dist/core/ErrorManager.d.ts +3 -0
  146. package/dist/core/ErrorManager.js +11 -0
  147. package/dist/core/Implementation.d.ts +10 -0
  148. package/dist/core/Implementation.js +32 -0
  149. package/dist/core/ImplementationBuilder.d.ts +4 -0
  150. package/dist/core/ImplementationBuilder.js +14 -0
  151. package/dist/core/Procedure.d.ts +13 -0
  152. package/dist/core/Procedure.js +58 -0
  153. package/dist/core/Segment.d.ts +13 -0
  154. package/dist/core/Segment.js +36 -0
  155. package/dist/core/SegmentBuilder.d.ts +6 -0
  156. package/dist/core/SegmentBuilder.js +33 -0
  157. package/dist/core/Version.d.ts +13 -0
  158. package/dist/core/Version.js +50 -0
  159. package/dist/core/definitions/AccessLevel.d.ts +2 -0
  160. package/dist/core/definitions/AccessLevel.js +2 -0
  161. package/dist/core/errors/ErrorManager.d.ts +3 -0
  162. package/dist/core/errors/ErrorManager.js +11 -0
  163. package/dist/core/errors/ImplementationNotFound.d.ts +3 -0
  164. package/dist/core/errors/ImplementationNotFound.js +6 -0
  165. package/dist/core/errors/InvalidVersionNumber.d.ts +3 -0
  166. package/dist/core/errors/InvalidVersionNumber.js +6 -0
  167. package/dist/core/errors/MissingParameterValue.d.ts +3 -0
  168. package/dist/core/errors/MissingParameterValue.js +6 -0
  169. package/dist/core/errors/NotImplemented.d.ts +3 -0
  170. package/dist/core/errors/NotImplemented.js +6 -0
  171. package/dist/core/errors/ProcedureNotFound.d.ts +3 -0
  172. package/dist/core/errors/ProcedureNotFound.js +6 -0
  173. package/dist/core/interfaces/Runner.d.ts +4 -0
  174. package/dist/core/interfaces/Runner.js +1 -0
  175. package/dist/core/reflection/ParameterParser.d.ts +5 -0
  176. package/dist/core/reflection/ParameterParser.js +51 -0
  177. package/dist/core/reflection/ReflectionHelper.d.ts +13 -0
  178. package/dist/core/reflection/ReflectionHelper.js +69 -0
  179. package/dist/core/reflection/models/ReflectionField.d.ts +8 -0
  180. package/dist/core/reflection/models/ReflectionField.js +14 -0
  181. package/dist/core/reflection/models/ReflectionParameter.d.ts +7 -0
  182. package/dist/core/reflection/models/ReflectionParameter.js +11 -0
  183. package/dist/core/types/Component.d.ts +5 -0
  184. package/dist/core/types/Component.js +1 -0
  185. package/dist/core/types/FlexObject.d.ts +4 -0
  186. package/dist/core/types/FlexObject.js +1 -0
  187. package/dist/core/types/Module.d.ts +3 -0
  188. package/dist/core/types/Module.js +1 -0
  189. package/dist/core/types/SegmentImplementation.d.ts +6 -0
  190. package/dist/core/types/SegmentImplementation.js +1 -0
  191. package/dist/core/types/SegmentModule.d.ts +5 -0
  192. package/dist/core/types/SegmentModule.js +1 -0
  193. package/dist/core/types/SegmentProcedure.d.ts +7 -0
  194. package/dist/core/types/SegmentProcedure.js +1 -0
  195. package/dist/core/utils/FqnBuilder.d.ts +3 -0
  196. package/dist/core/utils/FqnBuilder.js +5 -0
  197. package/dist/hooks.d.ts +2 -0
  198. package/dist/hooks.js +2 -0
  199. package/dist/lib.d.ts +4 -0
  200. package/dist/lib.js +3 -0
  201. package/dist/runtime/Gateway.d.ts +10 -0
  202. package/dist/runtime/Gateway.js +3 -0
  203. package/dist/runtime/LocalGateway.d.ts +12 -0
  204. package/dist/runtime/LocalGateway.js +54 -0
  205. package/dist/runtime/LocalNode.d.ts +18 -0
  206. package/dist/runtime/LocalNode.js +75 -0
  207. package/dist/runtime/LocalRepository.d.ts +17 -0
  208. package/dist/runtime/LocalRepository.js +86 -0
  209. package/dist/runtime/Node.d.ts +8 -0
  210. package/dist/runtime/Node.js +3 -0
  211. package/dist/runtime/NodeBalancer.d.ts +10 -0
  212. package/dist/runtime/NodeBalancer.js +34 -0
  213. package/dist/runtime/NodeMonitor.d.ts +7 -0
  214. package/dist/runtime/NodeMonitor.js +38 -0
  215. package/dist/runtime/Proxy.d.ts +19 -0
  216. package/dist/runtime/Proxy.js +31 -0
  217. package/dist/runtime/Remote.d.ts +15 -0
  218. package/dist/runtime/Remote.js +100 -0
  219. package/dist/runtime/RemoteGateway.d.ts +11 -0
  220. package/dist/runtime/RemoteGateway.js +22 -0
  221. package/dist/runtime/RemoteNode.d.ts +12 -0
  222. package/dist/runtime/RemoteNode.js +29 -0
  223. package/dist/runtime/RemoteNodeBuilder.d.ts +4 -0
  224. package/dist/runtime/RemoteNodeBuilder.js +10 -0
  225. package/dist/runtime/RemoteRepository.d.ts +14 -0
  226. package/dist/runtime/RemoteRepository.js +34 -0
  227. package/dist/runtime/Repository.d.ts +11 -0
  228. package/dist/runtime/Repository.js +3 -0
  229. package/dist/runtime/Runtime.d.ts +9 -0
  230. package/dist/runtime/Runtime.js +27 -0
  231. package/dist/runtime/caching/CachBuilder.d.ts +6 -0
  232. package/dist/runtime/caching/CachBuilder.js +150 -0
  233. package/dist/runtime/caching/CacheBuilder.d.ts +6 -0
  234. package/dist/runtime/caching/CacheBuilder.js +249 -0
  235. package/dist/runtime/caching/ImportRewriter.d.ts +4 -0
  236. package/dist/runtime/caching/ImportRewriter.js +49 -0
  237. package/dist/runtime/caching/ModuleAppender.d.ts +5 -0
  238. package/dist/runtime/caching/ModuleAppender.js +22 -0
  239. package/dist/runtime/caching/RemoteBuilder.d.ts +5 -0
  240. package/dist/runtime/caching/RemoteBuilder.js +31 -0
  241. package/dist/runtime/caching/SourceAppender.d.ts +5 -0
  242. package/dist/runtime/caching/SourceAppender.js +30 -0
  243. package/dist/runtime/caching/definitions/Keywords.d.ts +2 -0
  244. package/dist/runtime/caching/definitions/Keywords.js +2 -0
  245. package/dist/runtime/caching/errors/FunctionFilenameNotFound.d.ts +3 -0
  246. package/dist/runtime/caching/errors/FunctionFilenameNotFound.js +5 -0
  247. package/dist/runtime/caching/errors/InvalidSegmentFilename.d.ts +3 -0
  248. package/dist/runtime/caching/errors/InvalidSegmentFilename.js +5 -0
  249. package/dist/runtime/caching/errors/MissingModuleExport.d.ts +3 -0
  250. package/dist/runtime/caching/errors/MissingModuleExport.js +5 -0
  251. package/dist/runtime/caching/errors/SegmentFileNotLoaded.d.ts +3 -0
  252. package/dist/runtime/caching/errors/SegmentFileNotLoaded.js +5 -0
  253. package/dist/runtime/caching/errors/SegmentModuleNotLoaded.d.ts +3 -0
  254. package/dist/runtime/caching/errors/SegmentModuleNotLoaded.js +5 -0
  255. package/dist/runtime/caching/models/ApplicationModule.d.ts +9 -0
  256. package/dist/runtime/caching/models/ApplicationModule.js +19 -0
  257. package/dist/runtime/caching/models/Implementation.d.ts +12 -0
  258. package/dist/runtime/caching/models/Implementation.js +27 -0
  259. package/dist/runtime/caching/models/Procedure.d.ts +9 -0
  260. package/dist/runtime/caching/models/Procedure.js +15 -0
  261. package/dist/runtime/caching/models/Segment.d.ts +10 -0
  262. package/dist/runtime/caching/models/Segment.js +16 -0
  263. package/dist/runtime/caching/models/SegmentModule.d.ts +10 -0
  264. package/dist/runtime/caching/models/SegmentModule.js +14 -0
  265. package/dist/runtime/caching/types/SegmentFile.d.ts +5 -0
  266. package/dist/runtime/caching/types/SegmentFile.js +1 -0
  267. package/dist/runtime/caching/types/SegmentImportProperties.d.ts +6 -0
  268. package/dist/runtime/caching/types/SegmentImportProperties.js +1 -0
  269. package/dist/runtime/caching/types/SegmentImports.d.ts +5 -0
  270. package/dist/runtime/caching/types/SegmentImports.js +1 -0
  271. package/dist/runtime/caching/types/models/ApplicationModule.d.ts +9 -0
  272. package/dist/runtime/caching/types/models/ApplicationModule.js +19 -0
  273. package/dist/runtime/caching/types/models/Implementation.d.ts +12 -0
  274. package/dist/runtime/caching/types/models/Implementation.js +27 -0
  275. package/dist/runtime/caching/types/models/Procedure.d.ts +9 -0
  276. package/dist/runtime/caching/types/models/Procedure.js +15 -0
  277. package/dist/runtime/caching/types/models/Segment.d.ts +10 -0
  278. package/dist/runtime/caching/types/models/Segment.js +16 -0
  279. package/dist/runtime/caching/types/models/SegmentModule.d.ts +10 -0
  280. package/dist/runtime/caching/types/models/SegmentModule.js +14 -0
  281. package/dist/runtime/errors/ClientNotFound.d.ts +3 -0
  282. package/dist/runtime/errors/ClientNotFound.js +6 -0
  283. package/dist/runtime/errors/FileNotFound.d.ts +3 -0
  284. package/dist/runtime/errors/FileNotFound.js +6 -0
  285. package/dist/runtime/errors/InvalidClientId.d.ts +3 -0
  286. package/dist/runtime/errors/InvalidClientId.js +6 -0
  287. package/dist/runtime/errors/InvalidJitarHooks.d.ts +3 -0
  288. package/dist/runtime/errors/InvalidJitarHooks.js +6 -0
  289. package/dist/runtime/errors/InvalidSegmentFile.d.ts +3 -0
  290. package/dist/runtime/errors/InvalidSegmentFile.js +6 -0
  291. package/dist/runtime/errors/ModuleNotLoaded.d.ts +3 -0
  292. package/dist/runtime/errors/ModuleNotLoaded.js +6 -0
  293. package/dist/runtime/errors/NoNodeAvailable.d.ts +3 -0
  294. package/dist/runtime/errors/NoNodeAvailable.js +6 -0
  295. package/dist/runtime/errors/RepositoryNotAvaiable.d.ts +3 -0
  296. package/dist/runtime/errors/RepositoryNotAvaiable.js +6 -0
  297. package/dist/runtime/errors/RuntimeNotAvailable.d.ts +3 -0
  298. package/dist/runtime/errors/RuntimeNotAvailable.js +6 -0
  299. package/dist/runtime/errors/SegmentNotFound.d.ts +3 -0
  300. package/dist/runtime/errors/SegmentNotFound.js +6 -0
  301. package/dist/runtime/hooks/dependencies.d.ts +2 -0
  302. package/dist/runtime/hooks/dependencies.js +9 -0
  303. package/dist/runtime/hooks/runtime.d.ts +3 -0
  304. package/dist/runtime/hooks/runtime.js +14 -0
  305. package/dist/runtime/interfaces/FileManager.d.ts +11 -0
  306. package/dist/runtime/interfaces/FileManager.js +1 -0
  307. package/dist/runtime/interfaces/HealthCheck.d.ts +3 -0
  308. package/dist/runtime/interfaces/HealthCheck.js +1 -0
  309. package/dist/runtime/interfaces/ProcedureContainer.d.ts +5 -0
  310. package/dist/runtime/interfaces/ProcedureContainer.js +1 -0
  311. package/dist/runtime/models/File.d.ts +9 -0
  312. package/dist/runtime/models/File.js +14 -0
  313. package/dist/runtime/serialization/ArraySerializer.d.ts +7 -0
  314. package/dist/runtime/serialization/ArraySerializer.js +15 -0
  315. package/dist/runtime/serialization/ClassSerializer.d.ts +10 -0
  316. package/dist/runtime/serialization/ClassSerializer.js +58 -0
  317. package/dist/runtime/serialization/MapSerializer.d.ts +8 -0
  318. package/dist/runtime/serialization/MapSerializer.js +25 -0
  319. package/dist/runtime/serialization/ObjectSerializer.d.ts +9 -0
  320. package/dist/runtime/serialization/ObjectSerializer.js +21 -0
  321. package/dist/runtime/serialization/SetSerializer.d.ts +8 -0
  322. package/dist/runtime/serialization/SetSerializer.js +16 -0
  323. package/dist/runtime/serialization/ValueSerializer.d.ts +7 -0
  324. package/dist/runtime/serialization/ValueSerializer.js +46 -0
  325. package/dist/runtime/serialization/errors/ClassNotFound.d.ts +3 -0
  326. package/dist/runtime/serialization/errors/ClassNotFound.js +6 -0
  327. package/dist/runtime/serialization/errors/InvalidClass.d.ts +3 -0
  328. package/dist/runtime/serialization/errors/InvalidClass.js +6 -0
  329. package/dist/runtime/serialization/interfaces/Serializer.d.ts +4 -0
  330. package/dist/runtime/serialization/interfaces/Serializer.js +1 -0
  331. package/dist/runtime/serialization/types/SerializableObject.d.ts +3 -0
  332. package/dist/runtime/serialization/types/SerializableObject.js +1 -0
  333. package/dist/runtime/serialization/types/Serialized.d.ts +5 -0
  334. package/dist/runtime/serialization/types/Serialized.js +1 -0
  335. package/dist/runtime/serialization/types/SerializedClass.d.ts +8 -0
  336. package/dist/runtime/serialization/types/SerializedClass.js +1 -0
  337. package/dist/runtime/serialization/types/SerializedMap.d.ts +8 -0
  338. package/dist/runtime/serialization/types/SerializedMap.js +1 -0
  339. package/dist/runtime/serialization/types/SerializedObject.d.ts +4 -0
  340. package/dist/runtime/serialization/types/SerializedObject.js +1 -0
  341. package/dist/runtime/serialization/types/SerializedSet.d.ts +5 -0
  342. package/dist/runtime/serialization/types/SerializedSet.js +1 -0
  343. package/dist/runtime/types/JitarHooks.d.ts +6 -0
  344. package/dist/runtime/types/JitarHooks.js +1 -0
  345. package/dist/runtime/types/ModuleImporter.d.ts +3 -0
  346. package/dist/runtime/types/ModuleImporter.js +1 -0
  347. package/dist/runtime/utils/ModuleAnalyser.d.ts +7 -0
  348. package/dist/runtime/utils/ModuleAnalyser.js +34 -0
  349. package/dist/runtime/utils/ModuleLoader.d.ts +8 -0
  350. package/dist/runtime/utils/ModuleLoader.js +30 -0
  351. package/dist/runtime/utils/UrlRewriter.d.ts +4 -0
  352. package/dist/runtime/utils/UrlRewriter.js +36 -0
  353. package/dist/server/JitarServer.d.ts +8 -0
  354. package/dist/server/JitarServer.js +109 -0
  355. package/dist/server/configuration/GatewayConfiguration.d.ts +3 -0
  356. package/dist/server/configuration/GatewayConfiguration.js +18 -0
  357. package/dist/server/configuration/NodeConfiguration.d.ts +5 -0
  358. package/dist/server/configuration/NodeConfiguration.js +28 -0
  359. package/dist/server/configuration/ProxyConfiguration.d.ts +5 -0
  360. package/dist/server/configuration/ProxyConfiguration.js +29 -0
  361. package/dist/server/configuration/RepositoryConfiguration.d.ts +5 -0
  362. package/dist/server/configuration/RepositoryConfiguration.js +30 -0
  363. package/dist/server/configuration/RuntimeConfiguration.d.ts +13 -0
  364. package/dist/server/configuration/RuntimeConfiguration.js +48 -0
  365. package/dist/server/configuration/ServerOptions.d.ts +4 -0
  366. package/dist/server/configuration/ServerOptions.js +25 -0
  367. package/dist/server/configuration/StandaloneConfiguration.d.ts +6 -0
  368. package/dist/server/configuration/StandaloneConfiguration.js +36 -0
  369. package/dist/server/controllers/AssetsController.d.ts +8 -0
  370. package/dist/server/controllers/AssetsController.js +50 -0
  371. package/dist/server/controllers/HealthController.d.ts +10 -0
  372. package/dist/server/controllers/HealthController.js +47 -0
  373. package/dist/server/controllers/JitarController.d.ts +4 -0
  374. package/dist/server/controllers/JitarController.js +26 -0
  375. package/dist/server/controllers/ModulesController.d.ts +10 -0
  376. package/dist/server/controllers/ModulesController.js +62 -0
  377. package/dist/server/controllers/NodesController.d.ts +9 -0
  378. package/dist/server/controllers/NodesController.js +60 -0
  379. package/dist/server/controllers/ProceduresController.d.ts +10 -0
  380. package/dist/server/controllers/ProceduresController.js +35 -0
  381. package/dist/server/controllers/ProxyController.d.ts +7 -0
  382. package/dist/server/controllers/ProxyController.js +37 -0
  383. package/dist/server/controllers/RPCController.d.ts +9 -0
  384. package/dist/server/controllers/RPCController.js +129 -0
  385. package/dist/server/definitions/RuntimeDefaults.d.ts +7 -0
  386. package/dist/server/definitions/RuntimeDefaults.js +8 -0
  387. package/dist/server/definitions/RuntimeMode.d.ts +8 -0
  388. package/dist/server/definitions/RuntimeMode.js +9 -0
  389. package/dist/server/errors/MissingConfigurationValue.d.ts +3 -0
  390. package/dist/server/errors/MissingConfigurationValue.js +5 -0
  391. package/dist/server/errors/RuntimeNotAvaiable.d.ts +3 -0
  392. package/dist/server/errors/RuntimeNotAvaiable.js +5 -0
  393. package/dist/server/errors/UnknownRuntimeMode.d.ts +3 -0
  394. package/dist/server/errors/UnknownRuntimeMode.js +5 -0
  395. package/dist/server/models/HealthDto.d.ts +4 -0
  396. package/dist/server/models/HealthDto.js +22 -0
  397. package/dist/server/models/NodeDto.d.ts +4 -0
  398. package/dist/server/models/NodeDto.js +22 -0
  399. package/dist/server/models/RuntimeConfiguration.d.ts +12 -0
  400. package/dist/server/models/RuntimeConfiguration.js +68 -0
  401. package/dist/server/models/ServerOptions.d.ts +4 -0
  402. package/dist/server/models/ServerOptions.js +25 -0
  403. package/dist/server/utils/DataConverter.d.ts +4 -0
  404. package/dist/server/utils/DataConverter.js +9 -0
  405. package/dist/server/utils/LocalFileManager.d.ts +20 -0
  406. package/dist/server/utils/LocalFileManager.js +73 -0
  407. package/dist/server/utils/RuntimeConfigurationLoader.d.ts +4 -0
  408. package/dist/server/utils/RuntimeConfigurationLoader.js +11 -0
  409. package/dist/server/utils/RuntimeConfigurator.d.ts +6 -0
  410. package/dist/server/utils/RuntimeConfigurator.js +130 -0
  411. package/dist/server/utils/ServerOptionsReader.d.ts +4 -0
  412. package/dist/server/utils/ServerOptionsReader.js +10 -0
  413. package/dist/server.d.ts +3 -0
  414. package/dist/server.js +8 -0
  415. package/jest.config.js +20 -0
  416. package/package.json +48 -0
  417. package/src/client.ts +18 -0
  418. package/src/core/ErrorManager.ts +18 -0
  419. package/src/core/Implementation.ts +53 -0
  420. package/src/core/Procedure.ts +98 -0
  421. package/src/core/Segment.ts +62 -0
  422. package/src/core/SegmentBuilder.ts +55 -0
  423. package/src/core/Version.ts +68 -0
  424. package/src/core/definitions/AccessLevel.ts +3 -0
  425. package/src/core/errors/ImplementationNotFound.ts +12 -0
  426. package/src/core/errors/InvalidVersionNumber.ts +12 -0
  427. package/src/core/errors/MissingParameterValue.ts +12 -0
  428. package/src/core/errors/NotImplemented.ts +12 -0
  429. package/src/core/errors/ProcedureNotFound.ts +12 -0
  430. package/src/core/interfaces/Runner.ts +7 -0
  431. package/src/core/reflection/ParameterParser.ts +74 -0
  432. package/src/core/reflection/ReflectionHelper.ts +118 -0
  433. package/src/core/reflection/models/ReflectionField.ts +22 -0
  434. package/src/core/reflection/models/ReflectionParameter.ts +18 -0
  435. package/src/core/types/Component.ts +8 -0
  436. package/src/core/types/FlexObject.ts +4 -0
  437. package/src/core/types/Module.ts +6 -0
  438. package/src/core/types/SegmentImplementation.ts +9 -0
  439. package/src/core/types/SegmentModule.ts +9 -0
  440. package/src/core/types/SegmentProcedure.ts +11 -0
  441. package/src/core/utils/FqnBuilder.ts +11 -0
  442. package/src/hooks.ts +2 -0
  443. package/src/lib.ts +7 -0
  444. package/src/runtime/Gateway.ts +18 -0
  445. package/src/runtime/LocalGateway.ts +93 -0
  446. package/src/runtime/LocalNode.ts +130 -0
  447. package/src/runtime/LocalRepository.ts +157 -0
  448. package/src/runtime/Node.ts +15 -0
  449. package/src/runtime/NodeBalancer.ts +61 -0
  450. package/src/runtime/NodeMonitor.ts +63 -0
  451. package/src/runtime/Proxy.ts +60 -0
  452. package/src/runtime/Remote.ts +157 -0
  453. package/src/runtime/RemoteGateway.ts +40 -0
  454. package/src/runtime/RemoteNode.ts +49 -0
  455. package/src/runtime/RemoteRepository.ts +60 -0
  456. package/src/runtime/Repository.ts +20 -0
  457. package/src/runtime/Runtime.ts +47 -0
  458. package/src/runtime/caching/CacheBuilder.ts +424 -0
  459. package/src/runtime/caching/ImportRewriter.ts +76 -0
  460. package/src/runtime/caching/RemoteBuilder.ts +51 -0
  461. package/src/runtime/caching/SourceAppender.ts +57 -0
  462. package/src/runtime/caching/definitions/Keywords.ts +3 -0
  463. package/src/runtime/caching/errors/InvalidSegmentFilename.ts +8 -0
  464. package/src/runtime/caching/errors/MissingModuleExport.ts +8 -0
  465. package/src/runtime/caching/errors/SegmentFileNotLoaded.ts +8 -0
  466. package/src/runtime/caching/errors/SegmentModuleNotLoaded.ts +8 -0
  467. package/src/runtime/caching/models/ApplicationModule.ts +30 -0
  468. package/src/runtime/caching/models/Implementation.ts +41 -0
  469. package/src/runtime/caching/models/Procedure.ts +26 -0
  470. package/src/runtime/caching/models/Segment.ts +28 -0
  471. package/src/runtime/caching/models/SegmentModule.ts +26 -0
  472. package/src/runtime/caching/types/SegmentFile.ts +6 -0
  473. package/src/runtime/caching/types/SegmentImportProperties.ts +9 -0
  474. package/src/runtime/caching/types/SegmentImports.ts +6 -0
  475. package/src/runtime/errors/ClientNotFound.ts +12 -0
  476. package/src/runtime/errors/FileNotFound.ts +12 -0
  477. package/src/runtime/errors/InvalidClientId.ts +12 -0
  478. package/src/runtime/errors/InvalidJitarHooks.ts +12 -0
  479. package/src/runtime/errors/InvalidSegmentFile.ts +12 -0
  480. package/src/runtime/errors/ModuleNotLoaded.ts +12 -0
  481. package/src/runtime/errors/NoNodeAvailable.ts +12 -0
  482. package/src/runtime/errors/RepositoryNotAvaiable.ts +12 -0
  483. package/src/runtime/errors/RuntimeNotAvailable.ts +12 -0
  484. package/src/runtime/errors/SegmentNotFound.ts +12 -0
  485. package/src/runtime/hooks/dependencies.ts +19 -0
  486. package/src/runtime/hooks/runtime.ts +25 -0
  487. package/src/runtime/interfaces/FileManager.ts +19 -0
  488. package/src/runtime/interfaces/HealthCheck.ts +5 -0
  489. package/src/runtime/interfaces/ProcedureContainer.ts +9 -0
  490. package/src/runtime/models/File.ts +22 -0
  491. package/src/runtime/serialization/ArraySerializer.ts +27 -0
  492. package/src/runtime/serialization/ClassSerializer.ts +105 -0
  493. package/src/runtime/serialization/MapSerializer.ts +44 -0
  494. package/src/runtime/serialization/ObjectSerializer.ts +42 -0
  495. package/src/runtime/serialization/SetSerializer.ts +31 -0
  496. package/src/runtime/serialization/ValueSerializer.ts +81 -0
  497. package/src/runtime/serialization/errors/ClassNotFound.ts +12 -0
  498. package/src/runtime/serialization/errors/InvalidClass.ts +12 -0
  499. package/src/runtime/serialization/interfaces/Serializer.ts +10 -0
  500. package/src/runtime/serialization/types/SerializableObject.ts +6 -0
  501. package/src/runtime/serialization/types/Serialized.ts +8 -0
  502. package/src/runtime/serialization/types/SerializedClass.ts +13 -0
  503. package/src/runtime/serialization/types/SerializedMap.ts +13 -0
  504. package/src/runtime/serialization/types/SerializedObject.ts +4 -0
  505. package/src/runtime/serialization/types/SerializedSet.ts +9 -0
  506. package/src/runtime/types/JitarHooks.ts +10 -0
  507. package/src/runtime/types/ModuleImporter.ts +6 -0
  508. package/src/runtime/utils/ModuleAnalyser.ts +60 -0
  509. package/src/runtime/utils/ModuleLoader.ts +51 -0
  510. package/src/runtime/utils/UrlRewriter.ts +59 -0
  511. package/src/server/JitarServer.ts +161 -0
  512. package/src/server/configuration/GatewayConfiguration.ts +9 -0
  513. package/src/server/configuration/NodeConfiguration.ts +15 -0
  514. package/src/server/configuration/ProxyConfiguration.ts +16 -0
  515. package/src/server/configuration/RepositoryConfiguration.ts +17 -0
  516. package/src/server/configuration/RuntimeConfiguration.ts +30 -0
  517. package/src/server/configuration/ServerOptions.ts +14 -0
  518. package/src/server/configuration/StandaloneConfiguration.ts +21 -0
  519. package/src/server/controllers/AssetsController.ts +59 -0
  520. package/src/server/controllers/HealthController.ts +41 -0
  521. package/src/server/controllers/JitarController.ts +18 -0
  522. package/src/server/controllers/ModulesController.ts +66 -0
  523. package/src/server/controllers/NodesController.ts +58 -0
  524. package/src/server/controllers/ProceduresController.ts +31 -0
  525. package/src/server/controllers/ProxyController.ts +38 -0
  526. package/src/server/controllers/RPCController.ts +173 -0
  527. package/src/server/definitions/RuntimeDefaults.ts +10 -0
  528. package/src/server/errors/MissingConfigurationValue.ts +8 -0
  529. package/src/server/errors/RuntimeNotAvaiable.ts +8 -0
  530. package/src/server/errors/UnknownRuntimeMode.ts +8 -0
  531. package/src/server/models/HealthDto.ts +11 -0
  532. package/src/server/models/NodeDto.ts +11 -0
  533. package/src/server/utils/DataConverter.ts +15 -0
  534. package/src/server/utils/LocalFileManager.ts +122 -0
  535. package/src/server/utils/RuntimeConfigurationLoader.ts +19 -0
  536. package/src/server/utils/RuntimeConfigurator.ts +207 -0
  537. package/src/server/utils/ServerOptionsReader.ts +17 -0
  538. package/src/server.ts +16 -0
  539. package/test/_fixtures/core/Implementation.fixture.ts +33 -0
  540. package/test/_fixtures/core/Procedure.fixture.ts +33 -0
  541. package/test/_fixtures/core/Segment.fixture.ts +36 -0
  542. package/test/_fixtures/core/SegmentBuilder.fixture.ts +45 -0
  543. package/test/_fixtures/core/Version.fixture.ts +18 -0
  544. package/test/_fixtures/core/reflection/ReflectionHelper.fixture.ts +56 -0
  545. package/test/_fixtures/runtime/LocalGateway.fixture.ts +24 -0
  546. package/test/_fixtures/runtime/LocalNode.fixture.ts +16 -0
  547. package/test/_fixtures/runtime/LocalRepository.fixture.ts +73 -0
  548. package/test/_fixtures/runtime/NodeBalancer.fixture.ts +19 -0
  549. package/test/_fixtures/runtime/NodeMonitor.fixture.ts +34 -0
  550. package/test/_fixtures/runtime/RemoteNode.fixture.ts +8 -0
  551. package/test/_fixtures/runtime/caching/ImportRewriter.fixture.ts +81 -0
  552. package/test/_fixtures/runtime/caching/RemoteBuilder.fixture.ts +50 -0
  553. package/test/_fixtures/runtime/caching/SourceAppender.fixture.ts +35 -0
  554. package/test/_fixtures/runtime/segments.ts +78 -0
  555. package/test/_fixtures/runtime/serialization/ValueSerializer.fixture.ts +134 -0
  556. package/test/_fixtures/runtime/utils/ModuleAnaliser.fixture.ts +26 -0
  557. package/test/core/Implementation.spec.ts +89 -0
  558. package/test/core/Procedure.spec.ts +108 -0
  559. package/test/core/Segment.spec.ts +74 -0
  560. package/test/core/SegmentBuilder.spec.ts +39 -0
  561. package/test/core/Version.spec.ts +103 -0
  562. package/test/core/errors/ErrorManager.spec.ts +32 -0
  563. package/test/core/reflection/ReflectionHelper.spec.ts +128 -0
  564. package/test/core/utils/FqnBuilder.spec.ts +22 -0
  565. package/test/runtime/LocalGateway.spec.ts +40 -0
  566. package/test/runtime/LocalNode.spec.ts +87 -0
  567. package/test/runtime/LocalRepository.spec.ts +50 -0
  568. package/test/runtime/NodeBalancer.spec.ts +39 -0
  569. package/test/runtime/NodeMonitor.spec.ts +31 -0
  570. package/test/runtime/RemoteNode.spec.ts +43 -0
  571. package/test/runtime/caching/ImportRewriter.spec.ts +68 -0
  572. package/test/runtime/caching/RemoteBuilder.spec.ts +21 -0
  573. package/test/runtime/caching/SourceAppender.spec.ts +31 -0
  574. package/test/runtime/serialization/ValueSerializer.spec.ts +203 -0
  575. package/test/runtime/utils/ModuleAnalyser.spec.ts +54 -0
  576. package/test/runtime/utils/UrlRewriter.spec.ts +57 -0
  577. package/tsconfig.json +23 -0
@@ -0,0 +1,4 @@
1
+ import RuntimeConfiguration from '../configuration/RuntimeConfiguration.js';
2
+ export default class RuntimeConfigurationLoader {
3
+ static load(filename: string): Promise<RuntimeConfiguration>;
4
+ }
@@ -0,0 +1,11 @@
1
+ import { readFileSync } from 'fs';
2
+ import RuntimeConfiguration from '../configuration/RuntimeConfiguration.js';
3
+ import DataConverter from './DataConverter.js';
4
+ export default class RuntimeConfigurationLoader {
5
+ static async load(filename) {
6
+ const plainContents = readFileSync(filename, 'utf-8');
7
+ const parsedContents = JSON.parse(plainContents);
8
+ const configuration = await DataConverter.convert(RuntimeConfiguration, parsedContents);
9
+ return configuration;
10
+ }
11
+ }
@@ -0,0 +1,6 @@
1
+ import Runtime from '../../runtime/Runtime.js';
2
+ import RuntimeConfiguration from '../configuration/RuntimeConfiguration.js';
3
+ export default class RuntimeConfigurator {
4
+ #private;
5
+ static configure(configuration: RuntimeConfiguration): Promise<Runtime>;
6
+ }
@@ -0,0 +1,130 @@
1
+ import CacheBuilder from '../../runtime/caching/CacheBuilder.js';
2
+ import LocalGateway from '../../runtime/LocalGateway.js';
3
+ import LocalNode from '../../runtime/LocalNode.js';
4
+ import LocalRepository from '../../runtime/LocalRepository.js';
5
+ import NodeMonitor from '../../runtime/NodeMonitor.js';
6
+ import Proxy from '../../runtime/Proxy.js';
7
+ import RemoteGateway from '../../runtime/RemoteGateway.js';
8
+ import RemoteNode from '../../runtime/RemoteNode.js';
9
+ import RemoteRepository from '../../runtime/RemoteRepository.js';
10
+ import LocalFileManager from './LocalFileManager.js';
11
+ import RuntimeDefaults from '../definitions/RuntimeDefaults.js';
12
+ import MissingConfigurationValue from '../errors/MissingConfigurationValue.js';
13
+ import UnknownRuntimeMode from '../errors/UnknownRuntimeMode.js';
14
+ export default class RuntimeConfigurator {
15
+ static async configure(configuration) {
16
+ const url = configuration.url ?? RuntimeDefaults.URL;
17
+ if (configuration.standalone !== undefined)
18
+ return this.#configureStandAlone(url, configuration.standalone);
19
+ if (configuration.repository !== undefined)
20
+ return this.#configureRepository(url, configuration.repository);
21
+ if (configuration.gateway !== undefined)
22
+ return this.#configureGateway(url, configuration.gateway);
23
+ if (configuration.node !== undefined)
24
+ return this.#configureNode(url, configuration.node);
25
+ if (configuration.proxy !== undefined)
26
+ return this.#configureProxy(url, configuration.proxy);
27
+ throw new UnknownRuntimeMode();
28
+ }
29
+ static async #configureStandAlone(url, configuration) {
30
+ const sourceLocation = configuration.source ?? RuntimeDefaults.SOURCE;
31
+ const cacheLocation = configuration.cache ?? RuntimeDefaults.CACHE;
32
+ await this.#buildCache(sourceLocation, cacheLocation);
33
+ const segmentNames = configuration.segments === undefined
34
+ ? await this.#getSegmentNames(cacheLocation)
35
+ : configuration.segments;
36
+ const repository = await this.#buildRepository(url, cacheLocation);
37
+ const node = await this.#buildNode(url, segmentNames, repository);
38
+ return this.#buildProxy(url, repository, node);
39
+ }
40
+ static async #configureRepository(url, configuration) {
41
+ const sourceLocation = configuration.source ?? RuntimeDefaults.SOURCE;
42
+ const cacheLocation = configuration.cache ?? RuntimeDefaults.CACHE;
43
+ await this.#buildCache(sourceLocation, cacheLocation);
44
+ return this.#buildRepository(url, cacheLocation);
45
+ }
46
+ static async #configureGateway(url, configuration) {
47
+ return this.#buildGateway(url, configuration.monitor);
48
+ }
49
+ static async #configureNode(url, configuration) {
50
+ const segmentNames = configuration.segments ?? [];
51
+ const repository = configuration.repository !== undefined
52
+ ? new RemoteRepository(configuration.repository)
53
+ : undefined;
54
+ const gateway = configuration.gateway !== undefined
55
+ ? new RemoteGateway(configuration.gateway)
56
+ : undefined;
57
+ return this.#buildNode(url, segmentNames, repository, gateway);
58
+ }
59
+ static async #configureProxy(url, configuration) {
60
+ if (configuration.repository === undefined) {
61
+ throw new MissingConfigurationValue('proxy.repository');
62
+ }
63
+ const repository = new RemoteRepository(configuration.repository);
64
+ const gateway = configuration.gateway !== undefined
65
+ ? new RemoteGateway(configuration.gateway)
66
+ : undefined;
67
+ const node = configuration.node !== undefined
68
+ ? new RemoteNode(configuration.node, [])
69
+ : undefined;
70
+ const runner = gateway ?? node;
71
+ if (runner === undefined) {
72
+ throw new MissingConfigurationValue('proxy.gateway or proxy.node');
73
+ }
74
+ return this.#buildProxy(url, repository, runner);
75
+ }
76
+ static async #buildCache(sourceLocation, cacheLocation) {
77
+ const rootManager = new LocalFileManager('./');
78
+ await rootManager.remove(cacheLocation);
79
+ await rootManager.copy(sourceLocation, cacheLocation);
80
+ const sourceManager = new LocalFileManager(sourceLocation);
81
+ const cacheManager = new LocalFileManager(cacheLocation);
82
+ const segmentFiles = await rootManager.getSegmentFiles();
83
+ const moduleFiles = await sourceManager.getModuleFileNames();
84
+ const cacheBuilder = new CacheBuilder(sourceManager, cacheManager);
85
+ await cacheBuilder.build(segmentFiles, moduleFiles);
86
+ return cacheManager;
87
+ }
88
+ static async #getSegmentNames(cacheLocation) {
89
+ const fileManager = new LocalFileManager(cacheLocation);
90
+ const segmentFilenames = await fileManager.getNodeSegmentFiles();
91
+ return segmentFilenames.map(filename => this.#extractSegmentName(filename));
92
+ }
93
+ static #extractSegmentName(filename) {
94
+ const name = filename.split('/').pop() ?? '';
95
+ const endIndex = name.indexOf('.segment');
96
+ return name.substring(0, endIndex);
97
+ }
98
+ static async #buildRepository(url, cacheLocation) {
99
+ const fileManager = new LocalFileManager(cacheLocation);
100
+ const repository = new LocalRepository(fileManager, url);
101
+ const segmentFilenames = await fileManager.getRepositorySegmentFiles();
102
+ const segmentNames = segmentFilenames.map(filename => this.#extractSegmentName(filename));
103
+ for (const name of segmentNames) {
104
+ await repository.loadSegment(name);
105
+ }
106
+ return repository;
107
+ }
108
+ static async #buildGateway(url, monitorInterval) {
109
+ const gateway = new LocalGateway(url);
110
+ const monitor = new NodeMonitor(gateway, monitorInterval);
111
+ monitor.start();
112
+ return gateway;
113
+ }
114
+ static async #buildNode(url, segmentNames, repository, gateway) {
115
+ const node = new LocalNode(url);
116
+ if (repository !== undefined) {
117
+ await node.setRepository(repository, segmentNames);
118
+ }
119
+ for (const segmentName of segmentNames) {
120
+ await node.loadSegment(segmentName);
121
+ }
122
+ if (gateway !== undefined) {
123
+ node.setGateway(gateway);
124
+ }
125
+ return node;
126
+ }
127
+ static async #buildProxy(url, repository, runner) {
128
+ return new Proxy(repository, runner, url);
129
+ }
130
+ }
@@ -0,0 +1,4 @@
1
+ import ServerOptions from '../configuration/ServerOptions.js';
2
+ export default class ServerOptionsReader {
3
+ static read(): Promise<ServerOptions>;
4
+ }
@@ -0,0 +1,10 @@
1
+ import yargs from 'yargs';
2
+ import ServerOptions from '../configuration/ServerOptions.js';
3
+ import DataConverter from './DataConverter.js';
4
+ export default class ServerOptionsReader {
5
+ static async read() {
6
+ const args = yargs(process.argv).argv;
7
+ const options = await DataConverter.convert(ServerOptions, args);
8
+ return options;
9
+ }
10
+ }
@@ -0,0 +1,3 @@
1
+ import ModuleImporter from './runtime/types/ModuleImporter.js';
2
+ import JitarServer from './server/JitarServer.js';
3
+ export declare function startServer(moduleImporter: ModuleImporter): Promise<JitarServer>;
package/dist/server.js ADDED
@@ -0,0 +1,8 @@
1
+ import ModuleLoader from './runtime/utils/ModuleLoader.js';
2
+ import JitarServer from './server/JitarServer.js';
3
+ export async function startServer(moduleImporter) {
4
+ ModuleLoader.setImporter(moduleImporter);
5
+ const server = new JitarServer();
6
+ await server.start();
7
+ return server;
8
+ }
package/jest.config.js ADDED
@@ -0,0 +1,20 @@
1
+ /** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */
2
+ export default {
3
+ preset: 'ts-jest',
4
+ testEnvironment: 'node',
5
+ coverageProvider: 'v8',
6
+ extensionsToTreatAsEsm: ['.ts'],
7
+ globals: {
8
+ 'ts-jest': {
9
+ useESM: true
10
+ }
11
+ },
12
+ moduleNameMapper: {
13
+ '^(\\.{1,2}/.*)\\.js$': '$1',
14
+ },
15
+ coveragePathIgnorePatterns: [
16
+ '<rootDir>/node_modules/',
17
+ '<rootDir>/test/_fixtures/',
18
+ '<rootDir>/src/runtime/Remote.ts',
19
+ ]
20
+ };
package/package.json ADDED
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "jitar",
3
+ "version": "0.1.0",
4
+ "author": "Masking Technology <info@masking.tech> (https://jitar.dev)",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "types": "dist/lib.d.ts",
8
+ "sideEffects": true,
9
+ "exports": {
10
+ ".": "./dist/lib.js",
11
+ "./client.js": "./dist/client.js",
12
+ "./server.js": "./dist/server.js",
13
+ "./hooks.js": "./dist/hooks.js"
14
+ },
15
+ "scripts": {
16
+ "test": "jest",
17
+ "test-coverage": "jest --coverage",
18
+ "lint": "eslint . --ext .ts",
19
+ "build": "tsc -p tsconfig.json",
20
+ "clean": "rm -rf dist build"
21
+ },
22
+ "dependencies": {
23
+ "@overnightjs/core": "^1.7.6",
24
+ "class-transformer": "^0.5.1",
25
+ "class-validator": "^0.13.2",
26
+ "express": "^4.18.1",
27
+ "express-http-proxy": "^1.6.3",
28
+ "fs-extra": "^10.1.0",
29
+ "glob": "^8.0.3",
30
+ "glob-promise": "^5.0.0",
31
+ "mime-types": "^2.1.35",
32
+ "tslog": "^3.3.3",
33
+ "yargs": "^17.5.1"
34
+ },
35
+ "devDependencies": {
36
+ "@types/express": "^4.17.13",
37
+ "@types/express-http-proxy": "^1.6.3",
38
+ "@types/fs-extra": "^9.0.13",
39
+ "@types/jest": "^28.1.3",
40
+ "@types/mime-types": "^2.1.1",
41
+ "@types/yargs": "^17.0.10",
42
+ "@typescript-eslint/eslint-plugin": "^5.29.0",
43
+ "@typescript-eslint/parser": "^5.29.0",
44
+ "eslint": "^8.18.0",
45
+ "jest": "^28.1.3",
46
+ "ts-jest": "^28.0.8"
47
+ }
48
+ }
package/src/client.ts ADDED
@@ -0,0 +1,18 @@
1
+
2
+ import LocalNode from './runtime/LocalNode.js';
3
+ import RemoteGateway from './runtime/RemoteGateway.js';
4
+ import RemoteRepository from './runtime/RemoteRepository.js';
5
+
6
+ export async function startClient(...segmentFiles: string[]): Promise<LocalNode>
7
+ {
8
+ const remoteUrl = document.location.origin;
9
+
10
+ const node = new LocalNode();
11
+ const gateway = new RemoteGateway(remoteUrl);
12
+ const repository = new RemoteRepository(remoteUrl);
13
+
14
+ await node.setGateway(gateway);
15
+ await node.setRepository(repository, segmentFiles);
16
+
17
+ return node;
18
+ }
@@ -0,0 +1,18 @@
1
+
2
+ export default class ErrorManager
3
+ {
4
+ static handle(error: unknown, name: string, version: string): Error
5
+ {
6
+ const parentMessage = error instanceof Error ? error.message : String(error);
7
+ const newMessage = `${parentMessage}\n[${name} | v${version}]`;
8
+
9
+ if (error instanceof Error)
10
+ {
11
+ error.message = newMessage;
12
+
13
+ return error;
14
+ }
15
+
16
+ return new Error(newMessage);
17
+ }
18
+ }
@@ -0,0 +1,53 @@
1
+
2
+ import MissingParameterValue from './errors/MissingParameterValue.js';
3
+ import ReflectionParameter from './reflection/models/ReflectionParameter.js';
4
+ import * as AccessLevel from './definitions/AccessLevel.js';
5
+ import Version from './Version.js';
6
+
7
+ export default class Implementation
8
+ {
9
+ #version: Version;
10
+ #access: string;
11
+ #parameters: ReflectionParameter[];
12
+ #executable: Function;
13
+
14
+ constructor(version: Version, access: string, parameters: ReflectionParameter[], executable: Function)
15
+ {
16
+ this.#version = version;
17
+ this.#access = access;
18
+ this.#parameters = parameters;
19
+ this.#executable = executable;
20
+ }
21
+
22
+ get version() { return this.#version; }
23
+
24
+ get public() { return this.#access === AccessLevel.PUBLIC; }
25
+
26
+ get parameters() { return this.#parameters; }
27
+
28
+ async run(args: Map<string, unknown>): Promise<unknown>
29
+ {
30
+ const values = this.#extractParameterValues(args);
31
+
32
+ return await this.#executable.call(this.#executable, ...values);
33
+ }
34
+
35
+ #extractParameterValues(parameters: Map<string, unknown>): unknown[]
36
+ {
37
+ const values: unknown[] = [];
38
+
39
+ for (const parameter of this.#parameters)
40
+ {
41
+ const value = parameters.get(parameter.name);
42
+
43
+ if (value === undefined && parameter.isOptional === false)
44
+ {
45
+ throw new MissingParameterValue(parameter.name);
46
+ }
47
+
48
+ values.push(value);
49
+ }
50
+
51
+ return values;
52
+ }
53
+ }
@@ -0,0 +1,98 @@
1
+
2
+ import ImplementationNotFound from './errors/ImplementationNotFound.js';
3
+ import Implementation from './Implementation.js';
4
+ import FqnBuilder from './utils/FqnBuilder.js';
5
+ import Version from './Version.js';
6
+
7
+ export default class Procedure
8
+ {
9
+ #module: string;
10
+ #name: string;
11
+ #fqn: string;
12
+ #implementations: Map<Version, Implementation> = new Map();
13
+ #latestImplementation?: Implementation;
14
+
15
+ constructor(module: string, name: string)
16
+ {
17
+ this.#module = module;
18
+ this.#name = name;
19
+
20
+ this.#fqn = FqnBuilder.build(module, name);
21
+ }
22
+
23
+ get module() { return this.#module; }
24
+
25
+ get name() { return this.#name; }
26
+
27
+ get fqn() { return this.#fqn; }
28
+
29
+ get public()
30
+ {
31
+ // If at least one implementation is public, the procedure is public
32
+ // Public procedures can be called from outside the segment
33
+
34
+ const implementations = [...this.#implementations.values()];
35
+
36
+ return implementations.some(implementation => implementation.public);
37
+ }
38
+
39
+ addImplementation(implementation: Implementation): void
40
+ {
41
+ this.#implementations.set(implementation.version, implementation);
42
+
43
+ if (this.#isNewLatestImplementation(implementation))
44
+ {
45
+ this.#latestImplementation = implementation;
46
+ }
47
+ }
48
+
49
+ #isNewLatestImplementation(implementation: Implementation): boolean
50
+ {
51
+ return this.#latestImplementation === undefined
52
+ || implementation.version.greater(this.#latestImplementation.version);
53
+ }
54
+
55
+ getImplementation(version: Version): Implementation | undefined
56
+ {
57
+ const selectedVersion = this.#selectAvailableVersion(version);
58
+
59
+ return this.#implementations.get(selectedVersion);
60
+ }
61
+
62
+ #selectAvailableVersion(version: Version): Version
63
+ {
64
+ let selectedVersion = Version.DEFAULT;
65
+
66
+ for (const implementationVersion of this.#implementations.keys())
67
+ {
68
+ if (implementationVersion.equals(version))
69
+ {
70
+ return implementationVersion;
71
+ }
72
+
73
+ if (implementationVersion.greater(version))
74
+ {
75
+ continue;
76
+ }
77
+
78
+ if (selectedVersion.less(implementationVersion))
79
+ {
80
+ selectedVersion = implementationVersion;
81
+ }
82
+ }
83
+
84
+ return selectedVersion;
85
+ }
86
+
87
+ async run(version: Version, args: Map<string, unknown>): Promise<unknown>
88
+ {
89
+ const implementation = this.getImplementation(version);
90
+
91
+ if (implementation === undefined)
92
+ {
93
+ throw new ImplementationNotFound(this.fqn, version.toString());
94
+ }
95
+
96
+ return implementation.run(args);
97
+ }
98
+ }
@@ -0,0 +1,62 @@
1
+
2
+ import ErrorManager from './ErrorManager.js';
3
+ import ProcedureNotFound from './errors/ProcedureNotFound.js';
4
+ import Runner from './interfaces/Runner.js';
5
+ import Procedure from './Procedure.js';
6
+ import Version from './Version.js';
7
+
8
+ export default class Segment implements Runner
9
+ {
10
+ #id: string;
11
+ #procedures: Map<string, Procedure> = new Map();
12
+
13
+ constructor(id: string)
14
+ {
15
+ this.#id = id;
16
+ }
17
+
18
+ get id() { return this.#id; }
19
+
20
+ addProcedure(procedure: Procedure): void
21
+ {
22
+ this.#procedures.set(procedure.fqn, procedure);
23
+ }
24
+
25
+ hasProcedure(fqn: string): boolean
26
+ {
27
+ const procedure = this.getProcedure(fqn);
28
+
29
+ return procedure !== undefined;
30
+ }
31
+
32
+ getProcedure(fqn: string): Procedure | undefined
33
+ {
34
+ return this.#procedures.get(fqn);
35
+ }
36
+
37
+ getPublicProcedures()
38
+ {
39
+ const procedures = [...this.#procedures.values()];
40
+
41
+ return procedures.filter(procedure => procedure.public);
42
+ }
43
+
44
+ async run(fqn: string, version: Version, args: Map<string, unknown>): Promise<unknown>
45
+ {
46
+ const procedure = this.getProcedure(fqn);
47
+
48
+ if (procedure === undefined)
49
+ {
50
+ throw new ProcedureNotFound(fqn);
51
+ }
52
+
53
+ try
54
+ {
55
+ return await procedure.run(version, args);
56
+ }
57
+ catch (error: unknown)
58
+ {
59
+ throw ErrorManager.handle(error, fqn, version.toString());
60
+ }
61
+ }
62
+ }
@@ -0,0 +1,55 @@
1
+
2
+ import SegmentModule from './types/SegmentModule.js';
3
+ import SegmentProcedure from './types/SegmentProcedure.js';
4
+ import SegmentImplementation from './types/SegmentImplementation.js';
5
+
6
+ import ReflectionHelper from './reflection/ReflectionHelper.js';
7
+
8
+ import Implementation from './Implementation.js';
9
+ import Procedure from './Procedure.js';
10
+ import Segment from './Segment.js';
11
+ import Version from './Version.js';
12
+
13
+ export default class SegmentBuilder
14
+ {
15
+ static build(id: string, module: SegmentModule): Segment
16
+ {
17
+ const segment = new Segment(id);
18
+
19
+ for (const definition of module.procedures)
20
+ {
21
+ const procedure = this.#buildProcedure(definition);
22
+
23
+ segment.addProcedure(procedure);
24
+ };
25
+
26
+ return segment;
27
+ }
28
+
29
+ static #buildProcedure(definition: SegmentProcedure): Procedure
30
+ {
31
+ const module = definition.module;
32
+ const name = definition.name;
33
+
34
+ const procedure = new Procedure(module, name);
35
+
36
+ for (const implementationDefinition of definition.implementations)
37
+ {
38
+ const implementation = this.#buildImplementation(implementationDefinition);
39
+
40
+ procedure.addImplementation(implementation);
41
+ }
42
+
43
+ return procedure;
44
+ }
45
+
46
+ static #buildImplementation(definition: SegmentImplementation): Implementation
47
+ {
48
+ const version = Version.parse(definition.version);
49
+ const access = definition.access;
50
+ const executable = definition.executable;
51
+ const parameters = ReflectionHelper.getFunctionParameters(executable);
52
+
53
+ return new Implementation(version, access, parameters, executable);
54
+ }
55
+ }
@@ -0,0 +1,68 @@
1
+
2
+ import InvalidVersionNumber from './errors/InvalidVersionNumber.js';
3
+
4
+ export default class Version
5
+ {
6
+ static get DEFAULT(): Version { return new Version(0, 0, 0); }
7
+
8
+ #major: number;
9
+ #minor: number;
10
+ #patch: number;
11
+
12
+ constructor(major = 0, minor = 0, patch = 0)
13
+ {
14
+ this.#major = major;
15
+ this.#minor = minor;
16
+ this.#patch = patch;
17
+ }
18
+
19
+ get major() { return this.#major; }
20
+
21
+ get minor() { return this.#minor; }
22
+
23
+ get patch() { return this.#patch; }
24
+
25
+ equals(version: Version): boolean
26
+ {
27
+ return this.#major === version.major
28
+ && this.#minor === version.minor
29
+ && this.#patch === version.patch;
30
+ }
31
+
32
+ greater(version: Version): boolean
33
+ {
34
+ if (this.#major !== version.major) return this.#major > version.major;
35
+ if (this.#minor !== version.minor) return this.#minor > version.minor;
36
+ if (this.#patch !== version.patch) return this.#patch > version.patch;
37
+
38
+ return false;
39
+ }
40
+
41
+ less(version: Version): boolean
42
+ {
43
+ if (this.#major !== version.major) return this.#major < version.major;
44
+ if (this.#minor !== version.minor) return this.#minor < version.minor;
45
+ if (this.#patch !== version.patch) return this.#patch < version.patch;
46
+
47
+ return false;
48
+ }
49
+
50
+ toString(): string
51
+ {
52
+ return `${this.#major}.${this.#minor}.${this.#patch}`;
53
+ }
54
+
55
+ static parse(number: string): Version
56
+ {
57
+ const parts = number.split('.');
58
+
59
+ switch (parts.length)
60
+ {
61
+ case 1: return new Version(Number.parseInt(parts[0]));
62
+ case 2: return new Version(Number.parseInt(parts[0]), Number.parseInt(parts[1]));
63
+ case 3: return new Version(Number.parseInt(parts[0]), Number.parseInt(parts[1]), Number.parseInt(parts[2]));
64
+
65
+ default: throw new InvalidVersionNumber(number);
66
+ }
67
+ }
68
+ }
@@ -0,0 +1,3 @@
1
+
2
+ export const PRIVATE = 'private';
3
+ export const PUBLIC = 'public';
@@ -0,0 +1,12 @@
1
+
2
+ import Component from '../types/Component.js';
3
+
4
+ export default class ImplementationNotFound extends Error
5
+ {
6
+ constructor(fqn: string, version: string)
7
+ {
8
+ super(`No implementation found for procedure '${fqn}' with version '${version}'`);
9
+ }
10
+ }
11
+
12
+ (ImplementationNotFound as Component).source = '/jitar/core/errors/ImplementationNotFound.js';
@@ -0,0 +1,12 @@
1
+
2
+ import Component from '../types/Component.js';
3
+
4
+ export default class InvalidVersionNumber extends Error
5
+ {
6
+ constructor(number: string)
7
+ {
8
+ super(`Invalid version number '${number}'`);
9
+ }
10
+ }
11
+
12
+ (InvalidVersionNumber as Component).source = '/jitar/core/errors/InvalidVersionNumber.js';