@decaf-ts/integrations 0.3.10 → 0.3.12

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 (937) hide show
  1. package/dist/integrations.cjs +1649 -2
  2. package/dist/integrations.js +1885 -2
  3. package/lib/cjs/blob/azure/AzureBlobStoreService.cjs +2 -2
  4. package/lib/cjs/blob/azure/index.cjs +2 -2
  5. package/lib/cjs/blob/core/BlobErrors.cjs +2 -2
  6. package/lib/cjs/blob/core/BlobKey.cjs +2 -2
  7. package/lib/cjs/blob/core/BlobStoreFactory.cjs +2 -2
  8. package/lib/cjs/blob/core/BlobStoreService.cjs +2 -2
  9. package/lib/cjs/blob/core/BlobTypes.cjs +2 -2
  10. package/lib/cjs/blob/core/BlobValue.cjs +2 -2
  11. package/lib/cjs/blob/core/index.cjs +2 -2
  12. package/lib/cjs/blob/gcp/GcsBlobStoreService.cjs +2 -2
  13. package/lib/cjs/blob/gcp/index.cjs +2 -2
  14. package/lib/cjs/blob/index.cjs +2 -2
  15. package/lib/cjs/blob/ipfs/IpfsBlobStoreService.cjs +2 -2
  16. package/lib/cjs/blob/ipfs/IpfsKeyIndex.cjs +2 -2
  17. package/lib/cjs/blob/ipfs/LocalJsonIpfsKeyIndex.cjs +2 -2
  18. package/lib/cjs/blob/ipfs/MemoryIpfsKeyIndex.cjs +2 -2
  19. package/lib/cjs/blob/ipfs/PostgresIpfsKeyIndex.cjs +2 -2
  20. package/lib/cjs/blob/ipfs/index.cjs +2 -2
  21. package/lib/cjs/blob/local/LocalBlobStoreService.cjs +2 -2
  22. package/lib/cjs/blob/local/index.cjs +2 -2
  23. package/lib/cjs/blob/memory/MemoryBlobStoreService.cjs +2 -2
  24. package/lib/cjs/blob/memory/index.cjs +2 -2
  25. package/lib/cjs/blob/s3/MinioBlobStoreService.cjs +2 -2
  26. package/lib/cjs/blob/s3/R2BlobStoreService.cjs +2 -2
  27. package/lib/cjs/blob/s3/S3BlobStoreService.cjs +2 -2
  28. package/lib/cjs/blob/s3/index.cjs +2 -2
  29. package/lib/cjs/docker/DockerComposeService.cjs +2 -2
  30. package/lib/cjs/docker/index.cjs +2 -2
  31. package/lib/cjs/graph/engine/constants.cjs +2 -2
  32. package/lib/cjs/graph/engine/decorators.cjs +2 -2
  33. package/lib/cjs/graph/engine/errors/GraphCycleError.cjs +2 -2
  34. package/lib/cjs/graph/engine/errors/GraphExecutionError.cjs +2 -2
  35. package/lib/cjs/graph/engine/errors/GraphInputError.cjs +2 -2
  36. package/lib/cjs/graph/engine/errors/GraphLoopLimitError.cjs +2 -2
  37. package/lib/cjs/graph/engine/errors/GraphPinningError.cjs +2 -2
  38. package/lib/cjs/graph/engine/errors/GraphPortError.cjs +2 -2
  39. package/lib/cjs/graph/engine/errors/GraphStoreError.cjs +2 -2
  40. package/lib/cjs/graph/engine/errors/GraphTopologyError.cjs +2 -2
  41. package/lib/cjs/graph/engine/errors/index.cjs +2 -2
  42. package/lib/cjs/graph/engine/events/GraphExecutionEvent.cjs +2 -2
  43. package/lib/cjs/graph/engine/events/GraphExecutionEventEmitter.cjs +2 -2
  44. package/lib/cjs/graph/engine/events/GraphExecutionEventFactory.cjs +2 -2
  45. package/lib/cjs/graph/engine/events/GraphExecutionObserver.cjs +2 -2
  46. package/lib/cjs/graph/engine/events/index.cjs +2 -2
  47. package/lib/cjs/graph/engine/execution/CodeGraphNodeExecutor.cjs +99 -0
  48. package/lib/cjs/graph/engine/execution/CodeSandboxEvaluator.cjs +2 -2
  49. package/lib/cjs/graph/engine/execution/GraphExecutionContext.cjs +2 -2
  50. package/lib/cjs/graph/engine/execution/GraphExecutionEngine.cjs +22 -3
  51. package/lib/cjs/graph/engine/execution/GraphExecutionFrame.cjs +2 -2
  52. package/lib/cjs/graph/engine/execution/GraphExecutionResult.cjs +2 -2
  53. package/lib/cjs/graph/engine/execution/GraphNodeExecutor.cjs +2 -2
  54. package/lib/cjs/graph/engine/execution/IsolatedVmCodeSandboxEvaluator.cjs +481 -0
  55. package/lib/cjs/graph/engine/execution/LogGraphNodeExecutor.cjs +19 -0
  56. package/lib/cjs/graph/engine/execution/SwitchGraphNodeExecutor.cjs +23 -6
  57. package/lib/cjs/graph/engine/execution/index.cjs +5 -2
  58. package/lib/cjs/graph/engine/index.cjs +5 -2
  59. package/lib/cjs/graph/engine/loops/ConditionExpressionEvaluator.cjs +2 -2
  60. package/lib/cjs/graph/engine/loops/ForeachGraphNodeExecutor.cjs +3 -2
  61. package/lib/cjs/graph/engine/loops/GraphConditionEvaluator.cjs +2 -2
  62. package/lib/cjs/graph/engine/loops/GraphLoopExecutionContext.cjs +2 -2
  63. package/lib/cjs/graph/engine/loops/UntilGraphNodeExecutor.cjs +2 -2
  64. package/lib/cjs/graph/engine/loops/WhileGraphNodeExecutor.cjs +2 -2
  65. package/lib/cjs/graph/engine/loops/index.cjs +2 -2
  66. package/lib/cjs/graph/engine/pinning/GraphPinningDependencyResolver.cjs +2 -2
  67. package/lib/cjs/graph/engine/pinning/GraphPinningMetadata.cjs +2 -2
  68. package/lib/cjs/graph/engine/pinning/GraphPinningPolicy.cjs +2 -2
  69. package/lib/cjs/graph/engine/pinning/GraphPinningService.cjs +2 -2
  70. package/lib/cjs/graph/engine/pinning/index.cjs +2 -2
  71. package/lib/cjs/graph/engine/planning/GraphExecutionPlan.cjs +2 -2
  72. package/lib/cjs/graph/engine/planning/GraphExecutionPlanEdge.cjs +2 -2
  73. package/lib/cjs/graph/engine/planning/GraphExecutionPlanLayer.cjs +2 -2
  74. package/lib/cjs/graph/engine/planning/GraphExecutionPlanNode.cjs +2 -2
  75. package/lib/cjs/graph/engine/planning/GraphExecutionPlanner.cjs +2 -2
  76. package/lib/cjs/graph/engine/planning/GraphRelationResolver.cjs +2 -2
  77. package/lib/cjs/graph/engine/planning/GraphTopology.cjs +2 -2
  78. package/lib/cjs/graph/engine/planning/index.cjs +2 -2
  79. package/lib/cjs/graph/engine/registry/GraphNodeExecutorRegistry.cjs +2 -2
  80. package/lib/cjs/graph/engine/registry/GraphNodeExecutorResolver.cjs +2 -2
  81. package/lib/cjs/graph/engine/registry/index.cjs +2 -2
  82. package/lib/cjs/graph/engine/snapshots/GraphExecutionSnapshotMapper.cjs +2 -2
  83. package/lib/cjs/graph/engine/snapshots/index.cjs +2 -2
  84. package/lib/cjs/graph/engine/store/GraphCachedValue.cjs +2 -2
  85. package/lib/cjs/graph/engine/store/GraphValueKey.cjs +2 -2
  86. package/lib/cjs/graph/engine/store/GraphValueStore.cjs +2 -2
  87. package/lib/cjs/graph/engine/store/GraphValueStoreAdapter.cjs +2 -2
  88. package/lib/cjs/graph/engine/store/InMemoryGraphValueStoreAdapter.cjs +2 -2
  89. package/lib/cjs/graph/engine/store/index.cjs +2 -2
  90. package/lib/cjs/graph/engine/types.cjs +2 -2
  91. package/lib/cjs/graph/engine/validation/GraphDefinitionValidator.cjs +2 -2
  92. package/lib/cjs/graph/engine/validation/GraphPortSchemaResolver.cjs +2 -2
  93. package/lib/cjs/graph/engine/validation/GraphValueValidator.cjs +2 -2
  94. package/lib/cjs/graph/engine/validation/index.cjs +2 -2
  95. package/lib/cjs/graph/index.cjs +2 -2
  96. package/lib/cjs/graph/shared/constants.cjs +2 -2
  97. package/lib/cjs/graph/shared/index.cjs +2 -2
  98. package/lib/cjs/graph/shared/nodes/agent.cjs +2 -2
  99. package/lib/cjs/graph/shared/nodes/base.cjs +2 -2
  100. package/lib/cjs/graph/shared/nodes/category-styles.cjs +2 -2
  101. package/lib/cjs/graph/shared/nodes/flow-control.cjs +100 -17
  102. package/lib/cjs/graph/shared/nodes/index.cjs +2 -2
  103. package/lib/cjs/graph/shared/nodes/triggers.cjs +2 -2
  104. package/lib/cjs/graph/shared/types.cjs +2 -2
  105. package/lib/cjs/index.cjs +5 -5
  106. package/lib/cjs/keycloak/index.cjs +2 -2
  107. package/lib/cjs/keycloak/services/KeycloakAuthService.cjs +2 -2
  108. package/lib/cjs/keycloak/services/KeycloakClientService.cjs +2 -2
  109. package/lib/cjs/keycloak/services/KeycloakIdentityProviderService.cjs +2 -2
  110. package/lib/cjs/keycloak/services/KeycloakRealmService.cjs +2 -2
  111. package/lib/cjs/keycloak/services/KeycloakRoleService.cjs +2 -2
  112. package/lib/cjs/keycloak/services/KeycloakService.cjs +2 -2
  113. package/lib/cjs/keycloak/services/KeycloakUserService.cjs +2 -2
  114. package/lib/cjs/keycloak/services/index.cjs +2 -2
  115. package/lib/cjs/keycloak/services/runtime.cjs +2 -2
  116. package/lib/cjs/keycloak/types.cjs +2 -2
  117. package/lib/cjs/kibana/helpers.cjs +2 -2
  118. package/lib/cjs/kibana/index.cjs +2 -2
  119. package/lib/cjs/kibana/services/KibanaAuthService.cjs +2 -2
  120. package/lib/cjs/kibana/services/KibanaDashboardService.cjs +2 -2
  121. package/lib/cjs/kibana/services/KibanaDataViewService.cjs +2 -2
  122. package/lib/cjs/kibana/services/KibanaRoleService.cjs +2 -2
  123. package/lib/cjs/kibana/services/KibanaService.cjs +2 -2
  124. package/lib/cjs/kibana/services/KibanaSpaceService.cjs +2 -2
  125. package/lib/cjs/kibana/services/KibanaUserService.cjs +2 -2
  126. package/lib/cjs/kibana/services/index.cjs +2 -2
  127. package/lib/cjs/kibana/services/runtime.cjs +2 -2
  128. package/lib/cjs/kibana/types.cjs +2 -2
  129. package/lib/cjs/namespaces/index.cjs +2 -2
  130. package/lib/cjs/namespaces/models/authorization-model.cjs +2 -2
  131. package/lib/cjs/namespaces/models/effective-permission.model.cjs +6 -6
  132. package/lib/cjs/namespaces/models/group-membership.model.cjs +8 -8
  133. package/lib/cjs/namespaces/models/group.model.cjs +8 -8
  134. package/lib/cjs/namespaces/models/index.cjs +22 -22
  135. package/lib/cjs/namespaces/models/inheritance-block.model.cjs +7 -7
  136. package/lib/cjs/namespaces/models/org-unit-closure.model.cjs +7 -7
  137. package/lib/cjs/namespaces/models/org-unit-membership.model.cjs +8 -8
  138. package/lib/cjs/namespaces/models/org-unit-profile.model.cjs +4 -4
  139. package/lib/cjs/namespaces/models/org-unit.model.cjs +13 -13
  140. package/lib/cjs/namespaces/models/permission.model.cjs +4 -4
  141. package/lib/cjs/namespaces/models/principal.model.cjs +8 -8
  142. package/lib/cjs/namespaces/models/protected-resource.model.cjs +10 -10
  143. package/lib/cjs/namespaces/models/resource-grant.model.cjs +9 -9
  144. package/lib/cjs/namespaces/models/role-assignment.model.cjs +8 -8
  145. package/lib/cjs/namespaces/models/role-permission.model.cjs +6 -6
  146. package/lib/cjs/namespaces/models/role.model.cjs +8 -8
  147. package/lib/cjs/namespaces/models/storage-binding.model.cjs +4 -4
  148. package/lib/cjs/namespaces/models/tenant-membership.model.cjs +6 -6
  149. package/lib/cjs/namespaces/models/tenant-profile.model.cjs +4 -4
  150. package/lib/cjs/namespaces/models/tenant.model.cjs +10 -10
  151. package/lib/cjs/namespaces/models/user.model.cjs +6 -6
  152. package/lib/cjs/namespaces/org-based-authorization-system.cjs +2 -2
  153. package/lib/cjs/namespaces/org-based-authorization-system.models.cjs +2 -2
  154. package/lib/cjs/namespaces/org-based-authorization-system.services.cjs +23 -23
  155. package/lib/cjs/namespaces/services/authz.service.cjs +2 -2
  156. package/lib/cjs/namespaces/services/bootstrap.service.cjs +26 -26
  157. package/lib/cjs/namespaces/services/effective-permission.service.cjs +19 -19
  158. package/lib/cjs/namespaces/services/group-membership.service.cjs +6 -6
  159. package/lib/cjs/namespaces/services/group.service.cjs +4 -4
  160. package/lib/cjs/namespaces/services/index.cjs +26 -26
  161. package/lib/cjs/namespaces/services/inheritance-block.service.cjs +4 -4
  162. package/lib/cjs/namespaces/services/org-unit-closure.service.cjs +4 -4
  163. package/lib/cjs/namespaces/services/org-unit-membership.service.cjs +4 -4
  164. package/lib/cjs/namespaces/services/org-unit-profile.service.cjs +4 -4
  165. package/lib/cjs/namespaces/services/org-unit.service.cjs +13 -13
  166. package/lib/cjs/namespaces/services/permission.service.cjs +4 -4
  167. package/lib/cjs/namespaces/services/principal.service.cjs +4 -4
  168. package/lib/cjs/namespaces/services/protected-resource.service.cjs +4 -4
  169. package/lib/cjs/namespaces/services/resource-grant.service.cjs +4 -4
  170. package/lib/cjs/namespaces/services/resource-lifecycle.service.cjs +7 -7
  171. package/lib/cjs/namespaces/services/role-assignment.service.cjs +4 -4
  172. package/lib/cjs/namespaces/services/role-permission.service.cjs +8 -8
  173. package/lib/cjs/namespaces/services/role.service.cjs +4 -4
  174. package/lib/cjs/namespaces/services/storage-binding.service.cjs +4 -4
  175. package/lib/cjs/namespaces/services/system-management.service.cjs +14 -14
  176. package/lib/cjs/namespaces/services/tenant-membership.service.cjs +4 -4
  177. package/lib/cjs/namespaces/services/tenant-profile.service.cjs +4 -4
  178. package/lib/cjs/namespaces/services/tenant.service.cjs +4 -4
  179. package/lib/cjs/namespaces/services/user.service.cjs +4 -4
  180. package/lib/cjs/namespaces/types.cjs +2 -2
  181. package/lib/cjs/namespaces/utils.cjs +2 -2
  182. package/lib/cjs/nest/authService.cjs +2 -2
  183. package/lib/cjs/nest/graph/GraphExecutionController.cjs +41 -52
  184. package/lib/cjs/nest/graph/GraphExecutionModule.cjs +47 -42
  185. package/lib/cjs/nest/graph/GraphExecutionResultModel.cjs +2 -20
  186. package/lib/cjs/nest/graph/GraphExecutorRegistryFactory.cjs +21 -48
  187. package/lib/cjs/nest/graph/GraphResultService.cjs +54 -0
  188. package/lib/cjs/nest/graph/GraphWorkflowModel.cjs +44 -0
  189. package/lib/cjs/nest/graph/GraphWorkflowService.cjs +62 -0
  190. package/lib/cjs/nest/graph/index.cjs +5 -8
  191. package/lib/cjs/nest/graph/main.cjs +3 -3
  192. package/lib/cjs/nest/index.cjs +2 -2
  193. package/lib/cjs/nest/keycloakAuthHandler.cjs +2 -2
  194. package/lib/cjs/nest/keycloakModule.cjs +2 -2
  195. package/lib/cjs/nest/logging.cjs +2 -2
  196. package/lib/cjs/nest/types.cjs +2 -2
  197. package/lib/cjs/nest/utils.cjs +2 -2
  198. package/lib/cjs/secrets/aws/AwsSecretService.cjs +2 -2
  199. package/lib/cjs/secrets/aws/AwsSecretServiceConfig.cjs +2 -2
  200. package/lib/cjs/secrets/aws/index.cjs +2 -2
  201. package/lib/cjs/secrets/azure/AzureKeyVaultSecretService.cjs +2 -2
  202. package/lib/cjs/secrets/azure/AzureKeyVaultSecretServiceConfig.cjs +2 -2
  203. package/lib/cjs/secrets/azure/index.cjs +2 -2
  204. package/lib/cjs/secrets/core/SecretErrors.cjs +2 -2
  205. package/lib/cjs/secrets/core/SecretName.cjs +2 -2
  206. package/lib/cjs/secrets/core/SecretReference.cjs +2 -2
  207. package/lib/cjs/secrets/core/SecretSerialization.cjs +2 -2
  208. package/lib/cjs/secrets/core/SecretService.cjs +2 -2
  209. package/lib/cjs/secrets/core/SecretTypes.cjs +2 -2
  210. package/lib/cjs/secrets/core/index.cjs +2 -2
  211. package/lib/cjs/secrets/gcp/GcpSecretManagerService.cjs +2 -2
  212. package/lib/cjs/secrets/gcp/GcpSecretManagerServiceConfig.cjs +2 -2
  213. package/lib/cjs/secrets/gcp/index.cjs +2 -2
  214. package/lib/cjs/secrets/index.cjs +2 -2
  215. package/lib/cjs/secrets/model/ModelSecretCrypto.cjs +2 -2
  216. package/lib/cjs/secrets/model/ModelSecretService.cjs +2 -2
  217. package/lib/cjs/secrets/model/ModelSecretServiceConfig.cjs +2 -2
  218. package/lib/cjs/secrets/model/Secret.cjs +2 -2
  219. package/lib/cjs/secrets/model/index.cjs +2 -2
  220. package/lib/cjs/secrets/onepassword/OnePasswordSecretService.cjs +2 -2
  221. package/lib/cjs/secrets/onepassword/OnePasswordSecretServiceConfig.cjs +2 -2
  222. package/lib/cjs/secrets/onepassword/index.cjs +2 -2
  223. package/lib/cjs/secrets/vault/VaultSecretService.cjs +2 -2
  224. package/lib/cjs/secrets/vault/VaultSecretServiceConfig.cjs +2 -2
  225. package/lib/cjs/secrets/vault/index.cjs +2 -2
  226. package/lib/cjs/shared/runtime.cjs +2 -2
  227. package/lib/cjs/utils.cjs +2 -2
  228. package/lib/esm/blob/azure/AzureBlobStoreService.js +1 -1
  229. package/lib/esm/blob/azure/index.js +1 -1
  230. package/lib/esm/blob/core/BlobErrors.js +1 -1
  231. package/lib/esm/blob/core/BlobKey.js +1 -1
  232. package/lib/esm/blob/core/BlobStoreFactory.js +1 -1
  233. package/lib/esm/blob/core/BlobStoreService.js +1 -1
  234. package/lib/esm/blob/core/BlobTypes.js +1 -1
  235. package/lib/esm/blob/core/BlobValue.js +1 -1
  236. package/lib/esm/blob/core/index.js +1 -1
  237. package/lib/esm/blob/gcp/GcsBlobStoreService.js +1 -1
  238. package/lib/esm/blob/gcp/index.js +1 -1
  239. package/lib/esm/blob/index.js +1 -1
  240. package/lib/esm/blob/ipfs/IpfsBlobStoreService.js +1 -1
  241. package/lib/esm/blob/ipfs/IpfsKeyIndex.js +1 -1
  242. package/lib/esm/blob/ipfs/LocalJsonIpfsKeyIndex.js +1 -1
  243. package/lib/esm/blob/ipfs/MemoryIpfsKeyIndex.js +1 -1
  244. package/lib/esm/blob/ipfs/PostgresIpfsKeyIndex.js +1 -1
  245. package/lib/esm/blob/ipfs/index.js +1 -1
  246. package/lib/esm/blob/local/LocalBlobStoreService.js +1 -1
  247. package/lib/esm/blob/local/index.js +1 -1
  248. package/lib/esm/blob/memory/MemoryBlobStoreService.js +1 -1
  249. package/lib/esm/blob/memory/index.js +1 -1
  250. package/lib/esm/blob/s3/MinioBlobStoreService.js +1 -1
  251. package/lib/esm/blob/s3/R2BlobStoreService.js +1 -1
  252. package/lib/esm/blob/s3/S3BlobStoreService.js +1 -1
  253. package/lib/esm/blob/s3/index.js +1 -1
  254. package/lib/esm/docker/DockerComposeService.js +1 -1
  255. package/lib/esm/docker/index.js +1 -1
  256. package/lib/esm/graph/engine/constants.js +1 -1
  257. package/lib/esm/graph/engine/decorators.js +1 -1
  258. package/lib/esm/graph/engine/errors/GraphCycleError.js +1 -1
  259. package/lib/esm/graph/engine/errors/GraphExecutionError.js +1 -1
  260. package/lib/esm/graph/engine/errors/GraphInputError.js +1 -1
  261. package/lib/esm/graph/engine/errors/GraphLoopLimitError.js +1 -1
  262. package/lib/esm/graph/engine/errors/GraphPinningError.js +1 -1
  263. package/lib/esm/graph/engine/errors/GraphPortError.js +1 -1
  264. package/lib/esm/graph/engine/errors/GraphStoreError.js +1 -1
  265. package/lib/esm/graph/engine/errors/GraphTopologyError.js +1 -1
  266. package/lib/esm/graph/engine/errors/index.js +1 -1
  267. package/lib/esm/graph/engine/events/GraphExecutionEvent.js +1 -1
  268. package/lib/esm/graph/engine/events/GraphExecutionEventEmitter.js +1 -1
  269. package/lib/esm/graph/engine/events/GraphExecutionEventFactory.js +1 -1
  270. package/lib/esm/graph/engine/events/GraphExecutionObserver.js +1 -1
  271. package/lib/esm/graph/engine/events/index.js +1 -1
  272. package/lib/esm/graph/engine/execution/CodeGraphNodeExecutor.js +94 -0
  273. package/lib/esm/graph/engine/execution/CodeSandboxEvaluator.js +1 -1
  274. package/lib/esm/graph/engine/execution/GraphExecutionContext.js +1 -1
  275. package/lib/esm/graph/engine/execution/GraphExecutionEngine.js +21 -2
  276. package/lib/esm/graph/engine/execution/GraphExecutionFrame.js +1 -1
  277. package/lib/esm/graph/engine/execution/GraphExecutionResult.js +1 -1
  278. package/lib/esm/graph/engine/execution/GraphNodeExecutor.js +1 -1
  279. package/lib/esm/graph/engine/execution/IsolatedVmCodeSandboxEvaluator.js +440 -0
  280. package/lib/esm/graph/engine/execution/LogGraphNodeExecutor.js +14 -0
  281. package/lib/esm/graph/engine/execution/SwitchGraphNodeExecutor.js +22 -5
  282. package/lib/esm/graph/engine/execution/index.js +4 -1
  283. package/lib/esm/graph/engine/index.js +4 -1
  284. package/lib/esm/graph/engine/loops/ConditionExpressionEvaluator.js +1 -1
  285. package/lib/esm/graph/engine/loops/ForeachGraphNodeExecutor.js +2 -1
  286. package/lib/esm/graph/engine/loops/GraphConditionEvaluator.js +1 -1
  287. package/lib/esm/graph/engine/loops/GraphLoopExecutionContext.js +1 -1
  288. package/lib/esm/graph/engine/loops/UntilGraphNodeExecutor.js +1 -1
  289. package/lib/esm/graph/engine/loops/WhileGraphNodeExecutor.js +1 -1
  290. package/lib/esm/graph/engine/loops/index.js +1 -1
  291. package/lib/esm/graph/engine/pinning/GraphPinningDependencyResolver.js +1 -1
  292. package/lib/esm/graph/engine/pinning/GraphPinningMetadata.js +1 -1
  293. package/lib/esm/graph/engine/pinning/GraphPinningPolicy.js +1 -1
  294. package/lib/esm/graph/engine/pinning/GraphPinningService.js +1 -1
  295. package/lib/esm/graph/engine/pinning/index.js +1 -1
  296. package/lib/esm/graph/engine/planning/GraphExecutionPlan.js +1 -1
  297. package/lib/esm/graph/engine/planning/GraphExecutionPlanEdge.js +1 -1
  298. package/lib/esm/graph/engine/planning/GraphExecutionPlanLayer.js +1 -1
  299. package/lib/esm/graph/engine/planning/GraphExecutionPlanNode.js +1 -1
  300. package/lib/esm/graph/engine/planning/GraphExecutionPlanner.js +1 -1
  301. package/lib/esm/graph/engine/planning/GraphRelationResolver.js +1 -1
  302. package/lib/esm/graph/engine/planning/GraphTopology.js +1 -1
  303. package/lib/esm/graph/engine/planning/index.js +1 -1
  304. package/lib/esm/graph/engine/registry/GraphNodeExecutorRegistry.js +1 -1
  305. package/lib/esm/graph/engine/registry/GraphNodeExecutorResolver.js +1 -1
  306. package/lib/esm/graph/engine/registry/index.js +1 -1
  307. package/lib/esm/graph/engine/snapshots/GraphExecutionSnapshotMapper.js +1 -1
  308. package/lib/esm/graph/engine/snapshots/index.js +1 -1
  309. package/lib/esm/graph/engine/store/GraphCachedValue.js +1 -1
  310. package/lib/esm/graph/engine/store/GraphValueKey.js +1 -1
  311. package/lib/esm/graph/engine/store/GraphValueStore.js +1 -1
  312. package/lib/esm/graph/engine/store/GraphValueStoreAdapter.js +1 -1
  313. package/lib/esm/graph/engine/store/InMemoryGraphValueStoreAdapter.js +1 -1
  314. package/lib/esm/graph/engine/store/index.js +1 -1
  315. package/lib/esm/graph/engine/types.js +1 -1
  316. package/lib/esm/graph/engine/validation/GraphDefinitionValidator.js +1 -1
  317. package/lib/esm/graph/engine/validation/GraphPortSchemaResolver.js +1 -1
  318. package/lib/esm/graph/engine/validation/GraphValueValidator.js +1 -1
  319. package/lib/esm/graph/engine/validation/index.js +1 -1
  320. package/lib/esm/graph/index.js +1 -1
  321. package/lib/esm/graph/shared/constants.js +1 -1
  322. package/lib/esm/graph/shared/index.js +1 -1
  323. package/lib/esm/graph/shared/nodes/agent.js +1 -1
  324. package/lib/esm/graph/shared/nodes/base.js +1 -1
  325. package/lib/esm/graph/shared/nodes/category-styles.js +1 -1
  326. package/lib/esm/graph/shared/nodes/flow-control.js +99 -16
  327. package/lib/esm/graph/shared/nodes/index.js +1 -1
  328. package/lib/esm/graph/shared/nodes/triggers.js +1 -1
  329. package/lib/esm/graph/shared/types.js +1 -1
  330. package/lib/esm/index.js +4 -4
  331. package/lib/esm/keycloak/index.js +1 -1
  332. package/lib/esm/keycloak/services/KeycloakAuthService.js +1 -1
  333. package/lib/esm/keycloak/services/KeycloakClientService.js +1 -1
  334. package/lib/esm/keycloak/services/KeycloakIdentityProviderService.js +1 -1
  335. package/lib/esm/keycloak/services/KeycloakRealmService.js +1 -1
  336. package/lib/esm/keycloak/services/KeycloakRoleService.js +1 -1
  337. package/lib/esm/keycloak/services/KeycloakService.js +1 -1
  338. package/lib/esm/keycloak/services/KeycloakUserService.js +1 -1
  339. package/lib/esm/keycloak/services/index.js +1 -1
  340. package/lib/esm/keycloak/services/runtime.js +1 -1
  341. package/lib/esm/keycloak/types.js +1 -1
  342. package/lib/esm/kibana/helpers.js +1 -1
  343. package/lib/esm/kibana/index.js +1 -1
  344. package/lib/esm/kibana/services/KibanaAuthService.js +1 -1
  345. package/lib/esm/kibana/services/KibanaDashboardService.js +1 -1
  346. package/lib/esm/kibana/services/KibanaDataViewService.js +1 -1
  347. package/lib/esm/kibana/services/KibanaRoleService.js +1 -1
  348. package/lib/esm/kibana/services/KibanaService.js +1 -1
  349. package/lib/esm/kibana/services/KibanaSpaceService.js +1 -1
  350. package/lib/esm/kibana/services/KibanaUserService.js +1 -1
  351. package/lib/esm/kibana/services/index.js +1 -1
  352. package/lib/esm/kibana/services/runtime.js +1 -1
  353. package/lib/esm/kibana/types.js +1 -1
  354. package/lib/esm/namespaces/index.js +1 -1
  355. package/lib/esm/namespaces/models/authorization-model.js +1 -1
  356. package/lib/esm/namespaces/models/effective-permission.model.js +3 -3
  357. package/lib/esm/namespaces/models/group-membership.model.js +4 -4
  358. package/lib/esm/namespaces/models/group.model.js +4 -4
  359. package/lib/esm/namespaces/models/index.js +21 -21
  360. package/lib/esm/namespaces/models/inheritance-block.model.js +3 -3
  361. package/lib/esm/namespaces/models/org-unit-closure.model.js +3 -3
  362. package/lib/esm/namespaces/models/org-unit-membership.model.js +4 -4
  363. package/lib/esm/namespaces/models/org-unit-profile.model.js +2 -2
  364. package/lib/esm/namespaces/models/org-unit.model.js +6 -6
  365. package/lib/esm/namespaces/models/permission.model.js +2 -2
  366. package/lib/esm/namespaces/models/principal.model.js +4 -4
  367. package/lib/esm/namespaces/models/protected-resource.model.js +5 -5
  368. package/lib/esm/namespaces/models/resource-grant.model.js +4 -4
  369. package/lib/esm/namespaces/models/role-assignment.model.js +4 -4
  370. package/lib/esm/namespaces/models/role-permission.model.js +3 -3
  371. package/lib/esm/namespaces/models/role.model.js +4 -4
  372. package/lib/esm/namespaces/models/storage-binding.model.js +2 -2
  373. package/lib/esm/namespaces/models/tenant-membership.model.js +3 -3
  374. package/lib/esm/namespaces/models/tenant-profile.model.js +2 -2
  375. package/lib/esm/namespaces/models/tenant.model.js +5 -5
  376. package/lib/esm/namespaces/models/user.model.js +3 -3
  377. package/lib/esm/namespaces/org-based-authorization-system.js +1 -1
  378. package/lib/esm/namespaces/org-based-authorization-system.models.js +1 -1
  379. package/lib/esm/namespaces/org-based-authorization-system.services.js +2 -2
  380. package/lib/esm/namespaces/services/authz.service.js +1 -1
  381. package/lib/esm/namespaces/services/bootstrap.service.js +13 -13
  382. package/lib/esm/namespaces/services/effective-permission.service.js +9 -9
  383. package/lib/esm/namespaces/services/group-membership.service.js +3 -3
  384. package/lib/esm/namespaces/services/group.service.js +2 -2
  385. package/lib/esm/namespaces/services/index.js +25 -25
  386. package/lib/esm/namespaces/services/inheritance-block.service.js +2 -2
  387. package/lib/esm/namespaces/services/org-unit-closure.service.js +2 -2
  388. package/lib/esm/namespaces/services/org-unit-membership.service.js +2 -2
  389. package/lib/esm/namespaces/services/org-unit-profile.service.js +2 -2
  390. package/lib/esm/namespaces/services/org-unit.service.js +4 -4
  391. package/lib/esm/namespaces/services/permission.service.js +2 -2
  392. package/lib/esm/namespaces/services/principal.service.js +2 -2
  393. package/lib/esm/namespaces/services/protected-resource.service.js +2 -2
  394. package/lib/esm/namespaces/services/resource-grant.service.js +2 -2
  395. package/lib/esm/namespaces/services/resource-lifecycle.service.js +3 -3
  396. package/lib/esm/namespaces/services/role-assignment.service.js +2 -2
  397. package/lib/esm/namespaces/services/role-permission.service.js +4 -4
  398. package/lib/esm/namespaces/services/role.service.js +2 -2
  399. package/lib/esm/namespaces/services/storage-binding.service.js +2 -2
  400. package/lib/esm/namespaces/services/system-management.service.js +7 -7
  401. package/lib/esm/namespaces/services/tenant-membership.service.js +2 -2
  402. package/lib/esm/namespaces/services/tenant-profile.service.js +2 -2
  403. package/lib/esm/namespaces/services/tenant.service.js +2 -2
  404. package/lib/esm/namespaces/services/user.service.js +2 -2
  405. package/lib/esm/namespaces/types.js +1 -1
  406. package/lib/esm/namespaces/utils.js +1 -1
  407. package/lib/esm/nest/authService.js +1 -1
  408. package/lib/esm/nest/graph/GraphExecutionController.js +40 -51
  409. package/lib/esm/nest/graph/GraphExecutionModule.js +12 -40
  410. package/lib/esm/nest/graph/GraphExecutionResultModel.js +1 -19
  411. package/lib/esm/nest/graph/GraphExecutorRegistryFactory.js +21 -48
  412. package/lib/esm/nest/graph/GraphResultService.js +45 -0
  413. package/lib/esm/nest/graph/GraphWorkflowModel.js +35 -0
  414. package/lib/esm/nest/graph/GraphWorkflowService.js +53 -0
  415. package/lib/esm/nest/graph/index.js +4 -7
  416. package/lib/esm/nest/graph/main.js +2 -2
  417. package/lib/esm/nest/index.js +1 -1
  418. package/lib/esm/nest/keycloakAuthHandler.js +1 -1
  419. package/lib/esm/nest/keycloakModule.js +1 -1
  420. package/lib/esm/nest/logging.js +1 -1
  421. package/lib/esm/nest/types.js +1 -1
  422. package/lib/esm/nest/utils.js +1 -1
  423. package/lib/esm/secrets/aws/AwsSecretService.js +1 -1
  424. package/lib/esm/secrets/aws/AwsSecretServiceConfig.js +1 -1
  425. package/lib/esm/secrets/aws/index.js +1 -1
  426. package/lib/esm/secrets/azure/AzureKeyVaultSecretService.js +1 -1
  427. package/lib/esm/secrets/azure/AzureKeyVaultSecretServiceConfig.js +1 -1
  428. package/lib/esm/secrets/azure/index.js +1 -1
  429. package/lib/esm/secrets/core/SecretErrors.js +1 -1
  430. package/lib/esm/secrets/core/SecretName.js +1 -1
  431. package/lib/esm/secrets/core/SecretReference.js +1 -1
  432. package/lib/esm/secrets/core/SecretSerialization.js +1 -1
  433. package/lib/esm/secrets/core/SecretService.js +1 -1
  434. package/lib/esm/secrets/core/SecretTypes.js +1 -1
  435. package/lib/esm/secrets/core/index.js +1 -1
  436. package/lib/esm/secrets/gcp/GcpSecretManagerService.js +1 -1
  437. package/lib/esm/secrets/gcp/GcpSecretManagerServiceConfig.js +1 -1
  438. package/lib/esm/secrets/gcp/index.js +1 -1
  439. package/lib/esm/secrets/index.js +1 -1
  440. package/lib/esm/secrets/model/ModelSecretCrypto.js +1 -1
  441. package/lib/esm/secrets/model/ModelSecretService.js +1 -1
  442. package/lib/esm/secrets/model/ModelSecretServiceConfig.js +1 -1
  443. package/lib/esm/secrets/model/Secret.js +1 -1
  444. package/lib/esm/secrets/model/index.js +1 -1
  445. package/lib/esm/secrets/onepassword/OnePasswordSecretService.js +1 -1
  446. package/lib/esm/secrets/onepassword/OnePasswordSecretServiceConfig.js +1 -1
  447. package/lib/esm/secrets/onepassword/index.js +1 -1
  448. package/lib/esm/secrets/vault/VaultSecretService.js +1 -1
  449. package/lib/esm/secrets/vault/VaultSecretServiceConfig.js +1 -1
  450. package/lib/esm/secrets/vault/index.js +1 -1
  451. package/lib/esm/shared/runtime.js +1 -1
  452. package/lib/esm/utils.js +1 -1
  453. package/lib/types/graph/engine/execution/CodeGraphNodeExecutor.d.cts +65 -0
  454. package/lib/types/graph/engine/execution/CodeGraphNodeExecutor.d.mts +65 -0
  455. package/lib/types/graph/engine/execution/CodeSandboxEvaluator.d.cts +23 -0
  456. package/lib/types/graph/engine/execution/CodeSandboxEvaluator.d.mts +23 -0
  457. package/lib/types/graph/engine/execution/GraphExecutionEngine.d.cts +6 -0
  458. package/lib/types/graph/engine/execution/GraphExecutionEngine.d.mts +6 -0
  459. package/lib/types/graph/engine/execution/IsolatedVmCodeSandboxEvaluator.d.cts +63 -0
  460. package/lib/types/graph/engine/execution/IsolatedVmCodeSandboxEvaluator.d.mts +63 -0
  461. package/lib/types/graph/engine/execution/LogGraphNodeExecutor.d.cts +19 -0
  462. package/lib/types/graph/engine/execution/LogGraphNodeExecutor.d.mts +19 -0
  463. package/lib/types/graph/engine/execution/SwitchGraphNodeExecutor.d.cts +3 -2
  464. package/lib/types/graph/engine/execution/SwitchGraphNodeExecutor.d.mts +3 -2
  465. package/lib/types/graph/engine/execution/index.d.cts +3 -0
  466. package/lib/types/graph/engine/execution/index.d.mts +3 -0
  467. package/lib/types/graph/engine/index.d.cts +3 -0
  468. package/lib/types/graph/engine/index.d.mts +3 -0
  469. package/lib/types/graph/shared/nodes/flow-control.d.cts +36 -9
  470. package/lib/types/graph/shared/nodes/flow-control.d.mts +36 -9
  471. package/lib/types/graph/shared/types.d.cts +6 -0
  472. package/lib/types/graph/shared/types.d.mts +6 -0
  473. package/lib/types/index.d.cts +2 -2
  474. package/lib/types/index.d.mts +2 -2
  475. package/lib/types/nest/graph/GraphExecutionController.d.cts +11 -42
  476. package/lib/types/nest/graph/GraphExecutionController.d.mts +11 -42
  477. package/lib/types/nest/graph/GraphExecutionModule.d.cts +9 -29
  478. package/lib/types/nest/graph/GraphExecutionModule.d.mts +9 -29
  479. package/lib/types/nest/graph/GraphExecutionResultModel.d.cts +0 -34
  480. package/lib/types/nest/graph/GraphExecutionResultModel.d.mts +0 -34
  481. package/lib/types/nest/graph/GraphExecutorRegistryFactory.d.cts +16 -9
  482. package/lib/types/nest/graph/GraphExecutorRegistryFactory.d.mts +16 -9
  483. package/lib/types/nest/graph/GraphResultService.d.cts +8 -0
  484. package/lib/types/nest/graph/GraphResultService.d.mts +8 -0
  485. package/lib/types/nest/graph/GraphWorkflowModel.d.cts +7 -0
  486. package/lib/types/nest/graph/GraphWorkflowModel.d.mts +7 -0
  487. package/lib/types/nest/graph/GraphWorkflowService.d.cts +7 -0
  488. package/lib/types/nest/graph/GraphWorkflowService.d.mts +7 -0
  489. package/lib/types/nest/graph/index.d.cts +3 -6
  490. package/lib/types/nest/graph/index.d.mts +3 -6
  491. package/package.json +5 -1
  492. package/dist/integrations.cjs.map +0 -1
  493. package/dist/integrations.js.map +0 -1
  494. package/lib/cjs/blob/azure/AzureBlobStoreService.cjs.map +0 -1
  495. package/lib/cjs/blob/azure/index.cjs.map +0 -1
  496. package/lib/cjs/blob/core/BlobErrors.cjs.map +0 -1
  497. package/lib/cjs/blob/core/BlobKey.cjs.map +0 -1
  498. package/lib/cjs/blob/core/BlobStoreFactory.cjs.map +0 -1
  499. package/lib/cjs/blob/core/BlobStoreService.cjs.map +0 -1
  500. package/lib/cjs/blob/core/BlobTypes.cjs.map +0 -1
  501. package/lib/cjs/blob/core/BlobValue.cjs.map +0 -1
  502. package/lib/cjs/blob/core/index.cjs.map +0 -1
  503. package/lib/cjs/blob/gcp/GcsBlobStoreService.cjs.map +0 -1
  504. package/lib/cjs/blob/gcp/index.cjs.map +0 -1
  505. package/lib/cjs/blob/index.cjs.map +0 -1
  506. package/lib/cjs/blob/ipfs/IpfsBlobStoreService.cjs.map +0 -1
  507. package/lib/cjs/blob/ipfs/IpfsKeyIndex.cjs.map +0 -1
  508. package/lib/cjs/blob/ipfs/LocalJsonIpfsKeyIndex.cjs.map +0 -1
  509. package/lib/cjs/blob/ipfs/MemoryIpfsKeyIndex.cjs.map +0 -1
  510. package/lib/cjs/blob/ipfs/PostgresIpfsKeyIndex.cjs.map +0 -1
  511. package/lib/cjs/blob/ipfs/index.cjs.map +0 -1
  512. package/lib/cjs/blob/local/LocalBlobStoreService.cjs.map +0 -1
  513. package/lib/cjs/blob/local/index.cjs.map +0 -1
  514. package/lib/cjs/blob/memory/MemoryBlobStoreService.cjs.map +0 -1
  515. package/lib/cjs/blob/memory/index.cjs.map +0 -1
  516. package/lib/cjs/blob/s3/MinioBlobStoreService.cjs.map +0 -1
  517. package/lib/cjs/blob/s3/R2BlobStoreService.cjs.map +0 -1
  518. package/lib/cjs/blob/s3/S3BlobStoreService.cjs.map +0 -1
  519. package/lib/cjs/blob/s3/index.cjs.map +0 -1
  520. package/lib/cjs/docker/DockerComposeService.cjs.map +0 -1
  521. package/lib/cjs/docker/index.cjs.map +0 -1
  522. package/lib/cjs/graph/engine/constants.cjs.map +0 -1
  523. package/lib/cjs/graph/engine/decorators.cjs.map +0 -1
  524. package/lib/cjs/graph/engine/errors/GraphCycleError.cjs.map +0 -1
  525. package/lib/cjs/graph/engine/errors/GraphExecutionError.cjs.map +0 -1
  526. package/lib/cjs/graph/engine/errors/GraphInputError.cjs.map +0 -1
  527. package/lib/cjs/graph/engine/errors/GraphLoopLimitError.cjs.map +0 -1
  528. package/lib/cjs/graph/engine/errors/GraphPinningError.cjs.map +0 -1
  529. package/lib/cjs/graph/engine/errors/GraphPortError.cjs.map +0 -1
  530. package/lib/cjs/graph/engine/errors/GraphStoreError.cjs.map +0 -1
  531. package/lib/cjs/graph/engine/errors/GraphTopologyError.cjs.map +0 -1
  532. package/lib/cjs/graph/engine/errors/index.cjs.map +0 -1
  533. package/lib/cjs/graph/engine/events/GraphExecutionEvent.cjs.map +0 -1
  534. package/lib/cjs/graph/engine/events/GraphExecutionEventEmitter.cjs.map +0 -1
  535. package/lib/cjs/graph/engine/events/GraphExecutionEventFactory.cjs.map +0 -1
  536. package/lib/cjs/graph/engine/events/GraphExecutionObserver.cjs.map +0 -1
  537. package/lib/cjs/graph/engine/events/index.cjs.map +0 -1
  538. package/lib/cjs/graph/engine/execution/CodeSandboxEvaluator.cjs.map +0 -1
  539. package/lib/cjs/graph/engine/execution/GraphExecutionContext.cjs.map +0 -1
  540. package/lib/cjs/graph/engine/execution/GraphExecutionEngine.cjs.map +0 -1
  541. package/lib/cjs/graph/engine/execution/GraphExecutionFrame.cjs.map +0 -1
  542. package/lib/cjs/graph/engine/execution/GraphExecutionResult.cjs.map +0 -1
  543. package/lib/cjs/graph/engine/execution/GraphNodeExecutor.cjs.map +0 -1
  544. package/lib/cjs/graph/engine/execution/SwitchGraphNodeExecutor.cjs.map +0 -1
  545. package/lib/cjs/graph/engine/execution/index.cjs.map +0 -1
  546. package/lib/cjs/graph/engine/index.cjs.map +0 -1
  547. package/lib/cjs/graph/engine/loops/ConditionExpressionEvaluator.cjs.map +0 -1
  548. package/lib/cjs/graph/engine/loops/ForeachGraphNodeExecutor.cjs.map +0 -1
  549. package/lib/cjs/graph/engine/loops/GraphConditionEvaluator.cjs.map +0 -1
  550. package/lib/cjs/graph/engine/loops/GraphLoopExecutionContext.cjs.map +0 -1
  551. package/lib/cjs/graph/engine/loops/UntilGraphNodeExecutor.cjs.map +0 -1
  552. package/lib/cjs/graph/engine/loops/WhileGraphNodeExecutor.cjs.map +0 -1
  553. package/lib/cjs/graph/engine/loops/index.cjs.map +0 -1
  554. package/lib/cjs/graph/engine/pinning/GraphPinningDependencyResolver.cjs.map +0 -1
  555. package/lib/cjs/graph/engine/pinning/GraphPinningMetadata.cjs.map +0 -1
  556. package/lib/cjs/graph/engine/pinning/GraphPinningPolicy.cjs.map +0 -1
  557. package/lib/cjs/graph/engine/pinning/GraphPinningService.cjs.map +0 -1
  558. package/lib/cjs/graph/engine/pinning/index.cjs.map +0 -1
  559. package/lib/cjs/graph/engine/planning/GraphExecutionPlan.cjs.map +0 -1
  560. package/lib/cjs/graph/engine/planning/GraphExecutionPlanEdge.cjs.map +0 -1
  561. package/lib/cjs/graph/engine/planning/GraphExecutionPlanLayer.cjs.map +0 -1
  562. package/lib/cjs/graph/engine/planning/GraphExecutionPlanNode.cjs.map +0 -1
  563. package/lib/cjs/graph/engine/planning/GraphExecutionPlanner.cjs.map +0 -1
  564. package/lib/cjs/graph/engine/planning/GraphRelationResolver.cjs.map +0 -1
  565. package/lib/cjs/graph/engine/planning/GraphTopology.cjs.map +0 -1
  566. package/lib/cjs/graph/engine/planning/index.cjs.map +0 -1
  567. package/lib/cjs/graph/engine/registry/GraphNodeExecutorRegistry.cjs.map +0 -1
  568. package/lib/cjs/graph/engine/registry/GraphNodeExecutorResolver.cjs.map +0 -1
  569. package/lib/cjs/graph/engine/registry/index.cjs.map +0 -1
  570. package/lib/cjs/graph/engine/snapshots/GraphExecutionSnapshotMapper.cjs.map +0 -1
  571. package/lib/cjs/graph/engine/snapshots/index.cjs.map +0 -1
  572. package/lib/cjs/graph/engine/store/GraphCachedValue.cjs.map +0 -1
  573. package/lib/cjs/graph/engine/store/GraphValueKey.cjs.map +0 -1
  574. package/lib/cjs/graph/engine/store/GraphValueStore.cjs.map +0 -1
  575. package/lib/cjs/graph/engine/store/GraphValueStoreAdapter.cjs.map +0 -1
  576. package/lib/cjs/graph/engine/store/InMemoryGraphValueStoreAdapter.cjs.map +0 -1
  577. package/lib/cjs/graph/engine/store/index.cjs.map +0 -1
  578. package/lib/cjs/graph/engine/types.cjs.map +0 -1
  579. package/lib/cjs/graph/engine/validation/GraphDefinitionValidator.cjs.map +0 -1
  580. package/lib/cjs/graph/engine/validation/GraphPortSchemaResolver.cjs.map +0 -1
  581. package/lib/cjs/graph/engine/validation/GraphValueValidator.cjs.map +0 -1
  582. package/lib/cjs/graph/engine/validation/index.cjs.map +0 -1
  583. package/lib/cjs/graph/index.cjs.map +0 -1
  584. package/lib/cjs/graph/shared/constants.cjs.map +0 -1
  585. package/lib/cjs/graph/shared/index.cjs.map +0 -1
  586. package/lib/cjs/graph/shared/nodes/agent.cjs.map +0 -1
  587. package/lib/cjs/graph/shared/nodes/base.cjs.map +0 -1
  588. package/lib/cjs/graph/shared/nodes/category-styles.cjs.map +0 -1
  589. package/lib/cjs/graph/shared/nodes/flow-control.cjs.map +0 -1
  590. package/lib/cjs/graph/shared/nodes/index.cjs.map +0 -1
  591. package/lib/cjs/graph/shared/nodes/triggers.cjs.map +0 -1
  592. package/lib/cjs/graph/shared/types.cjs.map +0 -1
  593. package/lib/cjs/index.cjs.map +0 -1
  594. package/lib/cjs/keycloak/index.cjs.map +0 -1
  595. package/lib/cjs/keycloak/services/KeycloakAuthService.cjs.map +0 -1
  596. package/lib/cjs/keycloak/services/KeycloakClientService.cjs.map +0 -1
  597. package/lib/cjs/keycloak/services/KeycloakIdentityProviderService.cjs.map +0 -1
  598. package/lib/cjs/keycloak/services/KeycloakRealmService.cjs.map +0 -1
  599. package/lib/cjs/keycloak/services/KeycloakRoleService.cjs.map +0 -1
  600. package/lib/cjs/keycloak/services/KeycloakService.cjs.map +0 -1
  601. package/lib/cjs/keycloak/services/KeycloakUserService.cjs.map +0 -1
  602. package/lib/cjs/keycloak/services/index.cjs.map +0 -1
  603. package/lib/cjs/keycloak/services/runtime.cjs.map +0 -1
  604. package/lib/cjs/keycloak/types.cjs.map +0 -1
  605. package/lib/cjs/kibana/helpers.cjs.map +0 -1
  606. package/lib/cjs/kibana/index.cjs.map +0 -1
  607. package/lib/cjs/kibana/services/KibanaAuthService.cjs.map +0 -1
  608. package/lib/cjs/kibana/services/KibanaDashboardService.cjs.map +0 -1
  609. package/lib/cjs/kibana/services/KibanaDataViewService.cjs.map +0 -1
  610. package/lib/cjs/kibana/services/KibanaRoleService.cjs.map +0 -1
  611. package/lib/cjs/kibana/services/KibanaService.cjs.map +0 -1
  612. package/lib/cjs/kibana/services/KibanaSpaceService.cjs.map +0 -1
  613. package/lib/cjs/kibana/services/KibanaUserService.cjs.map +0 -1
  614. package/lib/cjs/kibana/services/index.cjs.map +0 -1
  615. package/lib/cjs/kibana/services/runtime.cjs.map +0 -1
  616. package/lib/cjs/kibana/types.cjs.map +0 -1
  617. package/lib/cjs/namespaces/index.cjs.map +0 -1
  618. package/lib/cjs/namespaces/models/authorization-model.cjs.map +0 -1
  619. package/lib/cjs/namespaces/models/effective-permission.model.cjs.map +0 -1
  620. package/lib/cjs/namespaces/models/group-membership.model.cjs.map +0 -1
  621. package/lib/cjs/namespaces/models/group.model.cjs.map +0 -1
  622. package/lib/cjs/namespaces/models/index.cjs.map +0 -1
  623. package/lib/cjs/namespaces/models/inheritance-block.model.cjs.map +0 -1
  624. package/lib/cjs/namespaces/models/org-unit-closure.model.cjs.map +0 -1
  625. package/lib/cjs/namespaces/models/org-unit-membership.model.cjs.map +0 -1
  626. package/lib/cjs/namespaces/models/org-unit-profile.model.cjs.map +0 -1
  627. package/lib/cjs/namespaces/models/org-unit.model.cjs.map +0 -1
  628. package/lib/cjs/namespaces/models/permission.model.cjs.map +0 -1
  629. package/lib/cjs/namespaces/models/principal.model.cjs.map +0 -1
  630. package/lib/cjs/namespaces/models/protected-resource.model.cjs.map +0 -1
  631. package/lib/cjs/namespaces/models/resource-grant.model.cjs.map +0 -1
  632. package/lib/cjs/namespaces/models/role-assignment.model.cjs.map +0 -1
  633. package/lib/cjs/namespaces/models/role-permission.model.cjs.map +0 -1
  634. package/lib/cjs/namespaces/models/role.model.cjs.map +0 -1
  635. package/lib/cjs/namespaces/models/storage-binding.model.cjs.map +0 -1
  636. package/lib/cjs/namespaces/models/tenant-membership.model.cjs.map +0 -1
  637. package/lib/cjs/namespaces/models/tenant-profile.model.cjs.map +0 -1
  638. package/lib/cjs/namespaces/models/tenant.model.cjs.map +0 -1
  639. package/lib/cjs/namespaces/models/user.model.cjs.map +0 -1
  640. package/lib/cjs/namespaces/org-based-authorization-system.cjs.map +0 -1
  641. package/lib/cjs/namespaces/org-based-authorization-system.models.cjs.map +0 -1
  642. package/lib/cjs/namespaces/org-based-authorization-system.services.cjs.map +0 -1
  643. package/lib/cjs/namespaces/services/authz.service.cjs.map +0 -1
  644. package/lib/cjs/namespaces/services/bootstrap.service.cjs.map +0 -1
  645. package/lib/cjs/namespaces/services/effective-permission.service.cjs.map +0 -1
  646. package/lib/cjs/namespaces/services/group-membership.service.cjs.map +0 -1
  647. package/lib/cjs/namespaces/services/group.service.cjs.map +0 -1
  648. package/lib/cjs/namespaces/services/index.cjs.map +0 -1
  649. package/lib/cjs/namespaces/services/inheritance-block.service.cjs.map +0 -1
  650. package/lib/cjs/namespaces/services/org-unit-closure.service.cjs.map +0 -1
  651. package/lib/cjs/namespaces/services/org-unit-membership.service.cjs.map +0 -1
  652. package/lib/cjs/namespaces/services/org-unit-profile.service.cjs.map +0 -1
  653. package/lib/cjs/namespaces/services/org-unit.service.cjs.map +0 -1
  654. package/lib/cjs/namespaces/services/permission.service.cjs.map +0 -1
  655. package/lib/cjs/namespaces/services/principal.service.cjs.map +0 -1
  656. package/lib/cjs/namespaces/services/protected-resource.service.cjs.map +0 -1
  657. package/lib/cjs/namespaces/services/resource-grant.service.cjs.map +0 -1
  658. package/lib/cjs/namespaces/services/resource-lifecycle.service.cjs.map +0 -1
  659. package/lib/cjs/namespaces/services/role-assignment.service.cjs.map +0 -1
  660. package/lib/cjs/namespaces/services/role-permission.service.cjs.map +0 -1
  661. package/lib/cjs/namespaces/services/role.service.cjs.map +0 -1
  662. package/lib/cjs/namespaces/services/storage-binding.service.cjs.map +0 -1
  663. package/lib/cjs/namespaces/services/system-management.service.cjs.map +0 -1
  664. package/lib/cjs/namespaces/services/tenant-membership.service.cjs.map +0 -1
  665. package/lib/cjs/namespaces/services/tenant-profile.service.cjs.map +0 -1
  666. package/lib/cjs/namespaces/services/tenant.service.cjs.map +0 -1
  667. package/lib/cjs/namespaces/services/user.service.cjs.map +0 -1
  668. package/lib/cjs/namespaces/types.cjs.map +0 -1
  669. package/lib/cjs/namespaces/utils.cjs.map +0 -1
  670. package/lib/cjs/nest/authService.cjs.map +0 -1
  671. package/lib/cjs/nest/graph/GraphExecutionController.cjs.map +0 -1
  672. package/lib/cjs/nest/graph/GraphExecutionModule.cjs.map +0 -1
  673. package/lib/cjs/nest/graph/GraphExecutionResultModel.cjs.map +0 -1
  674. package/lib/cjs/nest/graph/GraphExecutionResultRepository.cjs +0 -66
  675. package/lib/cjs/nest/graph/GraphExecutionResultRepository.cjs.map +0 -1
  676. package/lib/cjs/nest/graph/GraphExecutorRegistryFactory.cjs.map +0 -1
  677. package/lib/cjs/nest/graph/index.cjs.map +0 -1
  678. package/lib/cjs/nest/graph/main.cjs.map +0 -1
  679. package/lib/cjs/nest/index.cjs.map +0 -1
  680. package/lib/cjs/nest/keycloakAuthHandler.cjs.map +0 -1
  681. package/lib/cjs/nest/keycloakModule.cjs.map +0 -1
  682. package/lib/cjs/nest/logging.cjs.map +0 -1
  683. package/lib/cjs/nest/types.cjs.map +0 -1
  684. package/lib/cjs/nest/utils.cjs.map +0 -1
  685. package/lib/cjs/secrets/aws/AwsSecretService.cjs.map +0 -1
  686. package/lib/cjs/secrets/aws/AwsSecretServiceConfig.cjs.map +0 -1
  687. package/lib/cjs/secrets/aws/index.cjs.map +0 -1
  688. package/lib/cjs/secrets/azure/AzureKeyVaultSecretService.cjs.map +0 -1
  689. package/lib/cjs/secrets/azure/AzureKeyVaultSecretServiceConfig.cjs.map +0 -1
  690. package/lib/cjs/secrets/azure/index.cjs.map +0 -1
  691. package/lib/cjs/secrets/core/SecretErrors.cjs.map +0 -1
  692. package/lib/cjs/secrets/core/SecretName.cjs.map +0 -1
  693. package/lib/cjs/secrets/core/SecretReference.cjs.map +0 -1
  694. package/lib/cjs/secrets/core/SecretSerialization.cjs.map +0 -1
  695. package/lib/cjs/secrets/core/SecretService.cjs.map +0 -1
  696. package/lib/cjs/secrets/core/SecretTypes.cjs.map +0 -1
  697. package/lib/cjs/secrets/core/index.cjs.map +0 -1
  698. package/lib/cjs/secrets/gcp/GcpSecretManagerService.cjs.map +0 -1
  699. package/lib/cjs/secrets/gcp/GcpSecretManagerServiceConfig.cjs.map +0 -1
  700. package/lib/cjs/secrets/gcp/index.cjs.map +0 -1
  701. package/lib/cjs/secrets/index.cjs.map +0 -1
  702. package/lib/cjs/secrets/model/ModelSecretCrypto.cjs.map +0 -1
  703. package/lib/cjs/secrets/model/ModelSecretService.cjs.map +0 -1
  704. package/lib/cjs/secrets/model/ModelSecretServiceConfig.cjs.map +0 -1
  705. package/lib/cjs/secrets/model/Secret.cjs.map +0 -1
  706. package/lib/cjs/secrets/model/index.cjs.map +0 -1
  707. package/lib/cjs/secrets/onepassword/OnePasswordSecretService.cjs.map +0 -1
  708. package/lib/cjs/secrets/onepassword/OnePasswordSecretServiceConfig.cjs.map +0 -1
  709. package/lib/cjs/secrets/onepassword/index.cjs.map +0 -1
  710. package/lib/cjs/secrets/vault/VaultSecretService.cjs.map +0 -1
  711. package/lib/cjs/secrets/vault/VaultSecretServiceConfig.cjs.map +0 -1
  712. package/lib/cjs/secrets/vault/index.cjs.map +0 -1
  713. package/lib/cjs/shared/runtime.cjs.map +0 -1
  714. package/lib/cjs/utils.cjs.map +0 -1
  715. package/lib/esm/blob/azure/AzureBlobStoreService.js.map +0 -1
  716. package/lib/esm/blob/azure/index.js.map +0 -1
  717. package/lib/esm/blob/core/BlobErrors.js.map +0 -1
  718. package/lib/esm/blob/core/BlobKey.js.map +0 -1
  719. package/lib/esm/blob/core/BlobStoreFactory.js.map +0 -1
  720. package/lib/esm/blob/core/BlobStoreService.js.map +0 -1
  721. package/lib/esm/blob/core/BlobTypes.js.map +0 -1
  722. package/lib/esm/blob/core/BlobValue.js.map +0 -1
  723. package/lib/esm/blob/core/index.js.map +0 -1
  724. package/lib/esm/blob/gcp/GcsBlobStoreService.js.map +0 -1
  725. package/lib/esm/blob/gcp/index.js.map +0 -1
  726. package/lib/esm/blob/index.js.map +0 -1
  727. package/lib/esm/blob/ipfs/IpfsBlobStoreService.js.map +0 -1
  728. package/lib/esm/blob/ipfs/IpfsKeyIndex.js.map +0 -1
  729. package/lib/esm/blob/ipfs/LocalJsonIpfsKeyIndex.js.map +0 -1
  730. package/lib/esm/blob/ipfs/MemoryIpfsKeyIndex.js.map +0 -1
  731. package/lib/esm/blob/ipfs/PostgresIpfsKeyIndex.js.map +0 -1
  732. package/lib/esm/blob/ipfs/index.js.map +0 -1
  733. package/lib/esm/blob/local/LocalBlobStoreService.js.map +0 -1
  734. package/lib/esm/blob/local/index.js.map +0 -1
  735. package/lib/esm/blob/memory/MemoryBlobStoreService.js.map +0 -1
  736. package/lib/esm/blob/memory/index.js.map +0 -1
  737. package/lib/esm/blob/s3/MinioBlobStoreService.js.map +0 -1
  738. package/lib/esm/blob/s3/R2BlobStoreService.js.map +0 -1
  739. package/lib/esm/blob/s3/S3BlobStoreService.js.map +0 -1
  740. package/lib/esm/blob/s3/index.js.map +0 -1
  741. package/lib/esm/docker/DockerComposeService.js.map +0 -1
  742. package/lib/esm/docker/index.js.map +0 -1
  743. package/lib/esm/graph/engine/constants.js.map +0 -1
  744. package/lib/esm/graph/engine/decorators.js.map +0 -1
  745. package/lib/esm/graph/engine/errors/GraphCycleError.js.map +0 -1
  746. package/lib/esm/graph/engine/errors/GraphExecutionError.js.map +0 -1
  747. package/lib/esm/graph/engine/errors/GraphInputError.js.map +0 -1
  748. package/lib/esm/graph/engine/errors/GraphLoopLimitError.js.map +0 -1
  749. package/lib/esm/graph/engine/errors/GraphPinningError.js.map +0 -1
  750. package/lib/esm/graph/engine/errors/GraphPortError.js.map +0 -1
  751. package/lib/esm/graph/engine/errors/GraphStoreError.js.map +0 -1
  752. package/lib/esm/graph/engine/errors/GraphTopologyError.js.map +0 -1
  753. package/lib/esm/graph/engine/errors/index.js.map +0 -1
  754. package/lib/esm/graph/engine/events/GraphExecutionEvent.js.map +0 -1
  755. package/lib/esm/graph/engine/events/GraphExecutionEventEmitter.js.map +0 -1
  756. package/lib/esm/graph/engine/events/GraphExecutionEventFactory.js.map +0 -1
  757. package/lib/esm/graph/engine/events/GraphExecutionObserver.js.map +0 -1
  758. package/lib/esm/graph/engine/events/index.js.map +0 -1
  759. package/lib/esm/graph/engine/execution/CodeSandboxEvaluator.js.map +0 -1
  760. package/lib/esm/graph/engine/execution/GraphExecutionContext.js.map +0 -1
  761. package/lib/esm/graph/engine/execution/GraphExecutionEngine.js.map +0 -1
  762. package/lib/esm/graph/engine/execution/GraphExecutionFrame.js.map +0 -1
  763. package/lib/esm/graph/engine/execution/GraphExecutionResult.js.map +0 -1
  764. package/lib/esm/graph/engine/execution/GraphNodeExecutor.js.map +0 -1
  765. package/lib/esm/graph/engine/execution/SwitchGraphNodeExecutor.js.map +0 -1
  766. package/lib/esm/graph/engine/execution/index.js.map +0 -1
  767. package/lib/esm/graph/engine/index.js.map +0 -1
  768. package/lib/esm/graph/engine/loops/ConditionExpressionEvaluator.js.map +0 -1
  769. package/lib/esm/graph/engine/loops/ForeachGraphNodeExecutor.js.map +0 -1
  770. package/lib/esm/graph/engine/loops/GraphConditionEvaluator.js.map +0 -1
  771. package/lib/esm/graph/engine/loops/GraphLoopExecutionContext.js.map +0 -1
  772. package/lib/esm/graph/engine/loops/UntilGraphNodeExecutor.js.map +0 -1
  773. package/lib/esm/graph/engine/loops/WhileGraphNodeExecutor.js.map +0 -1
  774. package/lib/esm/graph/engine/loops/index.js.map +0 -1
  775. package/lib/esm/graph/engine/pinning/GraphPinningDependencyResolver.js.map +0 -1
  776. package/lib/esm/graph/engine/pinning/GraphPinningMetadata.js.map +0 -1
  777. package/lib/esm/graph/engine/pinning/GraphPinningPolicy.js.map +0 -1
  778. package/lib/esm/graph/engine/pinning/GraphPinningService.js.map +0 -1
  779. package/lib/esm/graph/engine/pinning/index.js.map +0 -1
  780. package/lib/esm/graph/engine/planning/GraphExecutionPlan.js.map +0 -1
  781. package/lib/esm/graph/engine/planning/GraphExecutionPlanEdge.js.map +0 -1
  782. package/lib/esm/graph/engine/planning/GraphExecutionPlanLayer.js.map +0 -1
  783. package/lib/esm/graph/engine/planning/GraphExecutionPlanNode.js.map +0 -1
  784. package/lib/esm/graph/engine/planning/GraphExecutionPlanner.js.map +0 -1
  785. package/lib/esm/graph/engine/planning/GraphRelationResolver.js.map +0 -1
  786. package/lib/esm/graph/engine/planning/GraphTopology.js.map +0 -1
  787. package/lib/esm/graph/engine/planning/index.js.map +0 -1
  788. package/lib/esm/graph/engine/registry/GraphNodeExecutorRegistry.js.map +0 -1
  789. package/lib/esm/graph/engine/registry/GraphNodeExecutorResolver.js.map +0 -1
  790. package/lib/esm/graph/engine/registry/index.js.map +0 -1
  791. package/lib/esm/graph/engine/snapshots/GraphExecutionSnapshotMapper.js.map +0 -1
  792. package/lib/esm/graph/engine/snapshots/index.js.map +0 -1
  793. package/lib/esm/graph/engine/store/GraphCachedValue.js.map +0 -1
  794. package/lib/esm/graph/engine/store/GraphValueKey.js.map +0 -1
  795. package/lib/esm/graph/engine/store/GraphValueStore.js.map +0 -1
  796. package/lib/esm/graph/engine/store/GraphValueStoreAdapter.js.map +0 -1
  797. package/lib/esm/graph/engine/store/InMemoryGraphValueStoreAdapter.js.map +0 -1
  798. package/lib/esm/graph/engine/store/index.js.map +0 -1
  799. package/lib/esm/graph/engine/types.js.map +0 -1
  800. package/lib/esm/graph/engine/validation/GraphDefinitionValidator.js.map +0 -1
  801. package/lib/esm/graph/engine/validation/GraphPortSchemaResolver.js.map +0 -1
  802. package/lib/esm/graph/engine/validation/GraphValueValidator.js.map +0 -1
  803. package/lib/esm/graph/engine/validation/index.js.map +0 -1
  804. package/lib/esm/graph/index.js.map +0 -1
  805. package/lib/esm/graph/shared/constants.js.map +0 -1
  806. package/lib/esm/graph/shared/index.js.map +0 -1
  807. package/lib/esm/graph/shared/nodes/agent.js.map +0 -1
  808. package/lib/esm/graph/shared/nodes/base.js.map +0 -1
  809. package/lib/esm/graph/shared/nodes/category-styles.js.map +0 -1
  810. package/lib/esm/graph/shared/nodes/flow-control.js.map +0 -1
  811. package/lib/esm/graph/shared/nodes/index.js.map +0 -1
  812. package/lib/esm/graph/shared/nodes/triggers.js.map +0 -1
  813. package/lib/esm/graph/shared/types.js.map +0 -1
  814. package/lib/esm/index.js.map +0 -1
  815. package/lib/esm/keycloak/index.js.map +0 -1
  816. package/lib/esm/keycloak/services/KeycloakAuthService.js.map +0 -1
  817. package/lib/esm/keycloak/services/KeycloakClientService.js.map +0 -1
  818. package/lib/esm/keycloak/services/KeycloakIdentityProviderService.js.map +0 -1
  819. package/lib/esm/keycloak/services/KeycloakRealmService.js.map +0 -1
  820. package/lib/esm/keycloak/services/KeycloakRoleService.js.map +0 -1
  821. package/lib/esm/keycloak/services/KeycloakService.js.map +0 -1
  822. package/lib/esm/keycloak/services/KeycloakUserService.js.map +0 -1
  823. package/lib/esm/keycloak/services/index.js.map +0 -1
  824. package/lib/esm/keycloak/services/runtime.js.map +0 -1
  825. package/lib/esm/keycloak/types.js.map +0 -1
  826. package/lib/esm/kibana/helpers.js.map +0 -1
  827. package/lib/esm/kibana/index.js.map +0 -1
  828. package/lib/esm/kibana/services/KibanaAuthService.js.map +0 -1
  829. package/lib/esm/kibana/services/KibanaDashboardService.js.map +0 -1
  830. package/lib/esm/kibana/services/KibanaDataViewService.js.map +0 -1
  831. package/lib/esm/kibana/services/KibanaRoleService.js.map +0 -1
  832. package/lib/esm/kibana/services/KibanaService.js.map +0 -1
  833. package/lib/esm/kibana/services/KibanaSpaceService.js.map +0 -1
  834. package/lib/esm/kibana/services/KibanaUserService.js.map +0 -1
  835. package/lib/esm/kibana/services/index.js.map +0 -1
  836. package/lib/esm/kibana/services/runtime.js.map +0 -1
  837. package/lib/esm/kibana/types.js.map +0 -1
  838. package/lib/esm/namespaces/index.js.map +0 -1
  839. package/lib/esm/namespaces/models/authorization-model.js.map +0 -1
  840. package/lib/esm/namespaces/models/effective-permission.model.js.map +0 -1
  841. package/lib/esm/namespaces/models/group-membership.model.js.map +0 -1
  842. package/lib/esm/namespaces/models/group.model.js.map +0 -1
  843. package/lib/esm/namespaces/models/index.js.map +0 -1
  844. package/lib/esm/namespaces/models/inheritance-block.model.js.map +0 -1
  845. package/lib/esm/namespaces/models/org-unit-closure.model.js.map +0 -1
  846. package/lib/esm/namespaces/models/org-unit-membership.model.js.map +0 -1
  847. package/lib/esm/namespaces/models/org-unit-profile.model.js.map +0 -1
  848. package/lib/esm/namespaces/models/org-unit.model.js.map +0 -1
  849. package/lib/esm/namespaces/models/permission.model.js.map +0 -1
  850. package/lib/esm/namespaces/models/principal.model.js.map +0 -1
  851. package/lib/esm/namespaces/models/protected-resource.model.js.map +0 -1
  852. package/lib/esm/namespaces/models/resource-grant.model.js.map +0 -1
  853. package/lib/esm/namespaces/models/role-assignment.model.js.map +0 -1
  854. package/lib/esm/namespaces/models/role-permission.model.js.map +0 -1
  855. package/lib/esm/namespaces/models/role.model.js.map +0 -1
  856. package/lib/esm/namespaces/models/storage-binding.model.js.map +0 -1
  857. package/lib/esm/namespaces/models/tenant-membership.model.js.map +0 -1
  858. package/lib/esm/namespaces/models/tenant-profile.model.js.map +0 -1
  859. package/lib/esm/namespaces/models/tenant.model.js.map +0 -1
  860. package/lib/esm/namespaces/models/user.model.js.map +0 -1
  861. package/lib/esm/namespaces/org-based-authorization-system.js.map +0 -1
  862. package/lib/esm/namespaces/org-based-authorization-system.models.js.map +0 -1
  863. package/lib/esm/namespaces/org-based-authorization-system.services.js.map +0 -1
  864. package/lib/esm/namespaces/services/authz.service.js.map +0 -1
  865. package/lib/esm/namespaces/services/bootstrap.service.js.map +0 -1
  866. package/lib/esm/namespaces/services/effective-permission.service.js.map +0 -1
  867. package/lib/esm/namespaces/services/group-membership.service.js.map +0 -1
  868. package/lib/esm/namespaces/services/group.service.js.map +0 -1
  869. package/lib/esm/namespaces/services/index.js.map +0 -1
  870. package/lib/esm/namespaces/services/inheritance-block.service.js.map +0 -1
  871. package/lib/esm/namespaces/services/org-unit-closure.service.js.map +0 -1
  872. package/lib/esm/namespaces/services/org-unit-membership.service.js.map +0 -1
  873. package/lib/esm/namespaces/services/org-unit-profile.service.js.map +0 -1
  874. package/lib/esm/namespaces/services/org-unit.service.js.map +0 -1
  875. package/lib/esm/namespaces/services/permission.service.js.map +0 -1
  876. package/lib/esm/namespaces/services/principal.service.js.map +0 -1
  877. package/lib/esm/namespaces/services/protected-resource.service.js.map +0 -1
  878. package/lib/esm/namespaces/services/resource-grant.service.js.map +0 -1
  879. package/lib/esm/namespaces/services/resource-lifecycle.service.js.map +0 -1
  880. package/lib/esm/namespaces/services/role-assignment.service.js.map +0 -1
  881. package/lib/esm/namespaces/services/role-permission.service.js.map +0 -1
  882. package/lib/esm/namespaces/services/role.service.js.map +0 -1
  883. package/lib/esm/namespaces/services/storage-binding.service.js.map +0 -1
  884. package/lib/esm/namespaces/services/system-management.service.js.map +0 -1
  885. package/lib/esm/namespaces/services/tenant-membership.service.js.map +0 -1
  886. package/lib/esm/namespaces/services/tenant-profile.service.js.map +0 -1
  887. package/lib/esm/namespaces/services/tenant.service.js.map +0 -1
  888. package/lib/esm/namespaces/services/user.service.js.map +0 -1
  889. package/lib/esm/namespaces/types.js.map +0 -1
  890. package/lib/esm/namespaces/utils.js.map +0 -1
  891. package/lib/esm/nest/authService.js.map +0 -1
  892. package/lib/esm/nest/graph/GraphExecutionController.js.map +0 -1
  893. package/lib/esm/nest/graph/GraphExecutionModule.js.map +0 -1
  894. package/lib/esm/nest/graph/GraphExecutionResultModel.js.map +0 -1
  895. package/lib/esm/nest/graph/GraphExecutionResultRepository.js +0 -60
  896. package/lib/esm/nest/graph/GraphExecutionResultRepository.js.map +0 -1
  897. package/lib/esm/nest/graph/GraphExecutorRegistryFactory.js.map +0 -1
  898. package/lib/esm/nest/graph/index.js.map +0 -1
  899. package/lib/esm/nest/graph/main.js.map +0 -1
  900. package/lib/esm/nest/index.js.map +0 -1
  901. package/lib/esm/nest/keycloakAuthHandler.js.map +0 -1
  902. package/lib/esm/nest/keycloakModule.js.map +0 -1
  903. package/lib/esm/nest/logging.js.map +0 -1
  904. package/lib/esm/nest/types.js.map +0 -1
  905. package/lib/esm/nest/utils.js.map +0 -1
  906. package/lib/esm/secrets/aws/AwsSecretService.js.map +0 -1
  907. package/lib/esm/secrets/aws/AwsSecretServiceConfig.js.map +0 -1
  908. package/lib/esm/secrets/aws/index.js.map +0 -1
  909. package/lib/esm/secrets/azure/AzureKeyVaultSecretService.js.map +0 -1
  910. package/lib/esm/secrets/azure/AzureKeyVaultSecretServiceConfig.js.map +0 -1
  911. package/lib/esm/secrets/azure/index.js.map +0 -1
  912. package/lib/esm/secrets/core/SecretErrors.js.map +0 -1
  913. package/lib/esm/secrets/core/SecretName.js.map +0 -1
  914. package/lib/esm/secrets/core/SecretReference.js.map +0 -1
  915. package/lib/esm/secrets/core/SecretSerialization.js.map +0 -1
  916. package/lib/esm/secrets/core/SecretService.js.map +0 -1
  917. package/lib/esm/secrets/core/SecretTypes.js.map +0 -1
  918. package/lib/esm/secrets/core/index.js.map +0 -1
  919. package/lib/esm/secrets/gcp/GcpSecretManagerService.js.map +0 -1
  920. package/lib/esm/secrets/gcp/GcpSecretManagerServiceConfig.js.map +0 -1
  921. package/lib/esm/secrets/gcp/index.js.map +0 -1
  922. package/lib/esm/secrets/index.js.map +0 -1
  923. package/lib/esm/secrets/model/ModelSecretCrypto.js.map +0 -1
  924. package/lib/esm/secrets/model/ModelSecretService.js.map +0 -1
  925. package/lib/esm/secrets/model/ModelSecretServiceConfig.js.map +0 -1
  926. package/lib/esm/secrets/model/Secret.js.map +0 -1
  927. package/lib/esm/secrets/model/index.js.map +0 -1
  928. package/lib/esm/secrets/onepassword/OnePasswordSecretService.js.map +0 -1
  929. package/lib/esm/secrets/onepassword/OnePasswordSecretServiceConfig.js.map +0 -1
  930. package/lib/esm/secrets/onepassword/index.js.map +0 -1
  931. package/lib/esm/secrets/vault/VaultSecretService.js.map +0 -1
  932. package/lib/esm/secrets/vault/VaultSecretServiceConfig.js.map +0 -1
  933. package/lib/esm/secrets/vault/index.js.map +0 -1
  934. package/lib/esm/shared/runtime.js.map +0 -1
  935. package/lib/esm/utils.js.map +0 -1
  936. package/lib/types/nest/graph/GraphExecutionResultRepository.d.cts +0 -38
  937. package/lib/types/nest/graph/GraphExecutionResultRepository.d.mts +0 -38
@@ -0,0 +1,440 @@
1
+ /**
2
+ * @module integrations/graph/execution/IsolatedVmCodeSandboxEvaluator
3
+ * @summary {@link CodeSandboxEvaluator} backed by `isolated-vm` (ALFRED-5 §7).
4
+ * @description Provides a fully isolated V8 sandbox for the Code Node
5
+ * (DECAF-32 §22.4) and code-based conditions. Uses `isolated-vm` for true
6
+ * heap isolation (unlike Node's `vm` module which shares the host heap),
7
+ * `acorn` + `acorn-walk` for AST-based static validation, and `typescript`
8
+ * for TS transpilation.
9
+ *
10
+ * Restrictions enforced (ALFRED-5 §7.10–7.12, DECAF-34 §7.5):
11
+ *
12
+ * - **No imports** — `import` declarations are rejected by AST validation.
13
+ * - **No requires** — `require` is in the blocked-identifier set and is not
14
+ * exposed in the sandbox context.
15
+ * - **No exports** — `export` declarations are rejected by AST validation.
16
+ * - **Pure functions only** — no system API access. Blocked identifiers
17
+ * include `process`, `global`, `globalThis`, `Function`, `eval`, `fetch`,
18
+ * `XMLHttpRequest`, `WebSocket`, `Worker`, `Deno`, `Bun`, `module`,
19
+ * `exports`. The sandbox context exposes only the data variables
20
+ * (`$input`, `$vars`, `$item`, `$index`, `$node`, `$output`).
21
+ * - **No `eval()` / `new Function()`** — rejected by AST validation.
22
+ *
23
+ * The user code is transpiled (TS → JS) if needed, statically validated,
24
+ * wrapped in a strict-mode async function that receives the data variables as
25
+ * parameters, compiled in an isolated V8 instance, and executed with a
26
+ * timeout and memory limit. The result is copied back to the host heap.
27
+ *
28
+ * @example
29
+ * ```ts
30
+ * const evaluator = new IsolatedVmCodeSandboxEvaluator();
31
+ * const result = await evaluator.evaluate({
32
+ * code: "return $input.a + $input.b;",
33
+ * input: { a: 2, b: 3 },
34
+ * });
35
+ * // result === 5
36
+ * ```
37
+ */
38
+ import ivm from "isolated-vm";
39
+ import * as acorn from "acorn";
40
+ import * as walk from "acorn-walk";
41
+ import * as ts from "typescript";
42
+ import { GraphExecutionError } from "./../errors/GraphExecutionError.js";
43
+ /**
44
+ * Default sandbox execution timeout in milliseconds.
45
+ */
46
+ const DEFAULT_TIMEOUT_MS = 1000;
47
+ /**
48
+ * Default memory limit for the isolated V8 heap in MB.
49
+ */
50
+ const DEFAULT_MEMORY_MB = 32;
51
+ /**
52
+ * Maximum code length (characters) accepted by the evaluator.
53
+ */
54
+ const MAX_CODE_LENGTH = 100_000;
55
+ /**
56
+ * Identifiers that are forbidden in sandboxed code (ALFRED-5 §7.10).
57
+ *
58
+ * Any AST node of type `Identifier` whose `name` is in this set causes the
59
+ * validator to reject the code. This covers both free-standing references
60
+ * (`process.env`) and call targets (`require(...)`).
61
+ */
62
+ const BLOCKED_IDENTIFIERS = new Set([
63
+ "process",
64
+ "require",
65
+ "module",
66
+ "exports",
67
+ "global",
68
+ "globalThis",
69
+ "Function",
70
+ "eval",
71
+ "fetch",
72
+ "XMLHttpRequest",
73
+ "WebSocket",
74
+ "Worker",
75
+ "Deno",
76
+ "Bun",
77
+ "__dispatch",
78
+ ]);
79
+ /**
80
+ * Transpiles TypeScript code to JavaScript (ALFRED-5 §7.4).
81
+ *
82
+ * When the language is `'javascript'` the code is returned unchanged. For
83
+ * `'typescript'` the code is transpiled using the TypeScript compiler with
84
+ * module kind `None` (no import/export emitted) and target `ES2022`.
85
+ *
86
+ * @param code - The user-authored code.
87
+ * @param language - The code language (`'javascript'` or `'typescript'`).
88
+ * @returns Transpiled JavaScript code.
89
+ */
90
+ function transpileTypeScript(code, language) {
91
+ if (language === "javascript")
92
+ return code;
93
+ const result = ts.transpileModule(code, {
94
+ compilerOptions: {
95
+ target: ts.ScriptTarget.ES2022,
96
+ module: ts.ModuleKind.None,
97
+ strict: true,
98
+ noEmitHelpers: true,
99
+ importHelpers: false,
100
+ },
101
+ });
102
+ // Strip the "use strict"; directive that ts.transpileModule adds — the
103
+ // sandbox wrapper already enforces strict mode, and the directive breaks
104
+ // expression-mode wrapping (return (...)).
105
+ return result.outputText.replace(/^"use strict";\s*/, "");
106
+ }
107
+ /**
108
+ * Statically validates user code using an AST walk (ALFRED-5 §7.11).
109
+ *
110
+ * Rejects:
111
+ * - `ImportDeclaration` — no imports allowed.
112
+ * - `ExportNamedDeclaration` / `ExportDefaultDeclaration` — no exports.
113
+ * - `Identifier` whose name is in {@link BLOCKED_IDENTIFIERS}.
114
+ * - `NewExpression` with callee `Function` — no `new Function()`.
115
+ * - `CallExpression` with callee `eval` — no `eval()`.
116
+ *
117
+ * @param code - JavaScript code to validate (after TS transpilation).
118
+ * @throws {GraphExecutionError} when a forbidden construct is found.
119
+ */
120
+ function validateSafeCode(code) {
121
+ if (code.length > MAX_CODE_LENGTH) {
122
+ throw new GraphExecutionError(`Code exceeds the maximum length of ${MAX_CODE_LENGTH} characters`, "GRAPH_CODE_SANDBOX_CODE_TOO_LONG", { length: code.length });
123
+ }
124
+ let ast;
125
+ try {
126
+ // First, try parsing the code wrapped in a function with sourceType
127
+ // "script". This handles `return` statements (which are valid inside a
128
+ // function) and lets us detect blocked identifiers, eval(), and
129
+ // new Function() via the AST walk.
130
+ ast = acorn.parse(`async function __validate() {\n${code}\n}`, {
131
+ ecmaVersion: "latest",
132
+ sourceType: "script",
133
+ });
134
+ }
135
+ catch {
136
+ // If the function-wrapped parse fails (e.g. because the code has
137
+ // top-level `import` or `export` declarations which are invalid inside
138
+ // a function), try parsing the raw code with sourceType "module" so
139
+ // import/export declarations are recognised as AST nodes.
140
+ try {
141
+ ast = acorn.parse(code, {
142
+ ecmaVersion: "latest",
143
+ sourceType: "module",
144
+ });
145
+ }
146
+ catch (err) {
147
+ throw new GraphExecutionError(`Code failed to parse: ${err.message}`, "GRAPH_CODE_SANDBOX_PARSE_ERROR", { code, error: err.message });
148
+ }
149
+ }
150
+ walk.full(ast, (node) => {
151
+ const n = node;
152
+ if (n["type"] === "ImportDeclaration") {
153
+ throw new GraphExecutionError("Imports are not allowed in Code nodes.", "GRAPH_CODE_SANDBOX_FORBIDDEN_TOKEN", { token: "import" });
154
+ }
155
+ if (n["type"] === "ExportNamedDeclaration" ||
156
+ n["type"] === "ExportDefaultDeclaration") {
157
+ throw new GraphExecutionError("Exports are not allowed in Code nodes.", "GRAPH_CODE_SANDBOX_FORBIDDEN_TOKEN", { token: "export" });
158
+ }
159
+ if (n["type"] === "Identifier" &&
160
+ typeof n["name"] === "string" &&
161
+ BLOCKED_IDENTIFIERS.has(n["name"])) {
162
+ throw new GraphExecutionError(`Identifier "${n["name"]}" is not allowed in Code nodes.`, "GRAPH_CODE_SANDBOX_FORBIDDEN_TOKEN", { token: n["name"] });
163
+ }
164
+ if (n["type"] === "NewExpression" &&
165
+ n["callee"]?.["name"] === "Function") {
166
+ throw new GraphExecutionError("new Function() is not allowed in Code nodes.", "GRAPH_CODE_SANDBOX_FORBIDDEN_TOKEN", { token: "Function" });
167
+ }
168
+ if (n["type"] === "CallExpression" &&
169
+ n["callee"]?.["name"] === "eval") {
170
+ throw new GraphExecutionError("eval() is not allowed in Code nodes.", "GRAPH_CODE_SANDBOX_FORBIDDEN_TOKEN", { token: "eval" });
171
+ }
172
+ });
173
+ }
174
+ /**
175
+ * Determines whether the given code contains a top-level `return` statement.
176
+ *
177
+ * When the code has no `return`, it is treated as a single expression and
178
+ * wrapped in `return (...)` so the user can write `($input.a + $input.b)`
179
+ * instead of `return $input.a + $input.b`.
180
+ */
181
+ function hasReturnStatement(code) {
182
+ return /\breturn\b[\s;]/.test(code);
183
+ }
184
+ /**
185
+ * `isolated-vm`-backed {@link CodeSandboxEvaluator} (ALFRED-5 §7.18).
186
+ *
187
+ * This evaluator provides a truly isolated V8 sandbox — the code runs in a
188
+ * separate isolate with its own heap, separate from the host process. The
189
+ * sandbox context exposes only the data variables (`$input`, `$vars`, `$item`,
190
+ * `$index`, `$node`, `$output`); no host globals are available.
191
+ *
192
+ * Execution pipeline:
193
+ * 1. **Transpile** — TypeScript code is transpiled to JavaScript via
194
+ * `typescript.transpileModule` (ALFRED-5 §7.4).
195
+ * 2. **Validate** — the JavaScript code is parsed with `acorn` and walked with
196
+ * `acorn-walk` to reject imports, exports, blocked identifiers, `eval()`,
197
+ * and `new Function()` (ALFRED-5 §7.11).
198
+ * 3. **Isolate** — a new `isolated-vm` `Isolate` is created with a memory
199
+ * limit. A context is created and the data variables are copied into the
200
+ * isolate's heap via `ExternalCopy`.
201
+ * 4. **Compile & run** — the wrapped code is compiled and executed with a
202
+ * timeout. The result is copied back to the host heap.
203
+ * 5. **Dispose** — the isolate is always disposed in a `finally` block.
204
+ *
205
+ * The user code is wrapped in a strict-mode async function:
206
+ *
207
+ * ```js
208
+ * "use strict";
209
+ * async function __userFunction($input, $vars, $item, $index, $node, $output) {
210
+ * <user code>
211
+ * }
212
+ * __userFunction($input, $vars, $item, $index, $node, $output);
213
+ * ```
214
+ *
215
+ * When the code has no `return` statement it is treated as a single expression
216
+ * and wrapped in `return (...)`.
217
+ */
218
+ export class IsolatedVmCodeSandboxEvaluator {
219
+ /**
220
+ * @param defaultTimeoutMs - Default execution timeout in milliseconds.
221
+ * @param defaultMemoryMb - Default isolate memory limit in MB.
222
+ */
223
+ constructor(defaultTimeoutMs = DEFAULT_TIMEOUT_MS, defaultMemoryMb = DEFAULT_MEMORY_MB) {
224
+ this.defaultTimeoutMs = defaultTimeoutMs;
225
+ this.defaultMemoryMb = defaultMemoryMb;
226
+ }
227
+ async evaluate(ctx) {
228
+ const code = ctx.code;
229
+ if (!code || typeof code !== "string" || code.trim().length === 0) {
230
+ throw new GraphExecutionError("Code sandbox received empty code", "GRAPH_CODE_SANDBOX_EMPTY_CODE");
231
+ }
232
+ const language = ctx.language ?? "javascript";
233
+ const jsCode = transpileTypeScript(code, language);
234
+ validateSafeCode(jsCode);
235
+ const expressionMode = !hasReturnStatement(jsCode);
236
+ const codeForMode = expressionMode
237
+ ? jsCode.replace(/[\s;]+$/, "")
238
+ : jsCode;
239
+ const sandboxVars = {
240
+ $input: ctx.input ?? {},
241
+ $vars: ctx.vars ?? {},
242
+ $item: ctx.item,
243
+ $index: ctx.index,
244
+ $node: ctx.nodes ?? {},
245
+ $output: undefined,
246
+ };
247
+ const paramNames = Object.keys(sandboxVars);
248
+ // const paramValues = Object.values(sandboxVars);
249
+ // Build the wrapped script. The user code runs inside an async function
250
+ // with named parameters. The result is JSON-stringified inside the isolate
251
+ // so it can be transferred back as a plain string (isolated-vm cannot
252
+ // deep-copy arbitrary objects via `script.run()` with `promise: true`).
253
+ // The spec requires JSON-serializable output, so this is safe.
254
+ const userBody = expressionMode ? `return (${codeForMode});` : codeForMode;
255
+ const wrapped = `"use strict";\nasync function __userFunction(${paramNames.join(", ")}) {\n${userBody}\n}\n__userFunction(${paramNames.join(", ")}).then(function(__r) { return JSON.stringify({ v: __r }); });`;
256
+ const isolate = new ivm.Isolate({ memoryLimit: this.defaultMemoryMb });
257
+ const context = await isolate.createContext();
258
+ try {
259
+ const jail = context.global;
260
+ // Inject a `console` object into the isolate whose methods forward to
261
+ // the Context logger (bound to runId). The logger is called via
262
+ // `ivm.Reference` so the isolate can invoke host functions without
263
+ // leaking the host heap.
264
+ if (ctx.logger) {
265
+ await this.injectConsole(jail, ctx.logger, context);
266
+ }
267
+ for (const [name, value] of Object.entries(sandboxVars)) {
268
+ await jail.set(name, new ivm.ExternalCopy(value === undefined ? null : value).copyInto());
269
+ }
270
+ let script;
271
+ try {
272
+ script = await isolate.compileScript(wrapped, {
273
+ filename: "graph-code-node.js",
274
+ });
275
+ }
276
+ catch (err) {
277
+ if (expressionMode) {
278
+ const fallbackBody = codeForMode;
279
+ const fallbackWrapped = `"use strict";\nasync function __userFunction(${paramNames.join(", ")}) {\n${fallbackBody}\n}\n__userFunction(${paramNames.join(", ")}).then(function(__r) { return JSON.stringify({ v: __r }); });`;
280
+ try {
281
+ script = await isolate.compileScript(fallbackWrapped, {
282
+ filename: "graph-code-node.js",
283
+ });
284
+ }
285
+ catch (fallbackErr) {
286
+ throw new GraphExecutionError(`Code failed to compile: ${fallbackErr.message}`, "GRAPH_CODE_SANDBOX_COMPILE_ERROR", { code: jsCode, error: fallbackErr.message });
287
+ }
288
+ }
289
+ else {
290
+ throw new GraphExecutionError(`Code failed to compile: ${err.message}`, "GRAPH_CODE_SANDBOX_COMPILE_ERROR", { code: jsCode, error: err.message });
291
+ }
292
+ }
293
+ let rawResult;
294
+ try {
295
+ rawResult = await script.run(context, {
296
+ timeout: this.defaultTimeoutMs,
297
+ promise: true,
298
+ });
299
+ }
300
+ catch (err) {
301
+ const msg = err.message;
302
+ if (msg.includes("timed out") || msg.includes("timeout")) {
303
+ throw new GraphExecutionError(`Code execution timed out after ${this.defaultTimeoutMs} ms`, "GRAPH_CODE_SANDBOX_TIMEOUT", { timeoutMs: this.defaultTimeoutMs });
304
+ }
305
+ if (msg.includes("memory") || msg.includes("heap")) {
306
+ throw new GraphExecutionError(`Code exceeded the memory limit of ${this.defaultMemoryMb} MB`, "GRAPH_CODE_SANDBOX_MEMORY_LIMIT", { memoryMb: this.defaultMemoryMb });
307
+ }
308
+ throw new GraphExecutionError(`Code execution failed: ${msg}`, "GRAPH_CODE_SANDBOX_RUNTIME_ERROR", { code: jsCode, error: msg });
309
+ }
310
+ // The script returns a JSON string `{"v": <result>}`. Parse it back.
311
+ if (typeof rawResult !== "string") {
312
+ throw new GraphExecutionError("Code sandbox returned an unexpected non-string result", "GRAPH_CODE_SANDBOX_UNEXPECTED_RESULT", { result: rawResult });
313
+ }
314
+ return JSON.parse(rawResult).v;
315
+ }
316
+ finally {
317
+ context.release();
318
+ isolate.dispose();
319
+ }
320
+ }
321
+ /**
322
+ * Injects a `console` object into the isolate whose methods forward to the
323
+ * Context logger (bound to `runId`).
324
+ *
325
+ * Every standard `console.*` method is supported:
326
+ * `log`, `info`, `warn`, `error`, `debug`, `trace`, `dir`, `dirxml`,
327
+ * `table`, `group`, `groupCollapsed`, `groupEnd`, `time`, `timeEnd`,
328
+ * `timeLog`, `assert`, `count`, `countReset`, `clear`.
329
+ *
330
+ * Arguments are serialised inside the isolate (via `JSON.stringify` with a
331
+ * safe fallback) before being passed across the isolate boundary, because
332
+ * `isolated-vm` cannot copy arbitrary host objects.
333
+ *
334
+ * @param jail - The isolate's global object.
335
+ * @param logger - The Context logger that receives the forwarded calls.
336
+ * @param context - The isolate context (for running the init script).
337
+ */
338
+ async injectConsole(jail, logger, context) {
339
+ const dispatch = new ivm.Reference(function (level, argsJson) {
340
+ let parsed;
341
+ try {
342
+ parsed = JSON.parse(argsJson);
343
+ }
344
+ catch {
345
+ parsed = [argsJson];
346
+ }
347
+ const msg = parsed
348
+ .map((a) => (typeof a === "string" ? a : JSON.stringify(a)))
349
+ .join(" ");
350
+ const meta = parsed.length === 1 ? parsed[0] : parsed;
351
+ switch (level) {
352
+ case "log":
353
+ case "info":
354
+ logger.info(msg, meta);
355
+ break;
356
+ case "warn":
357
+ logger.warn(msg, meta);
358
+ break;
359
+ case "error":
360
+ logger.error(msg, meta);
361
+ break;
362
+ case "debug":
363
+ logger.debug(msg, meta);
364
+ break;
365
+ case "trace":
366
+ logger.trace(msg, meta);
367
+ break;
368
+ case "dir":
369
+ case "dirxml":
370
+ case "table":
371
+ logger.debug(msg, meta);
372
+ break;
373
+ case "group":
374
+ case "groupCollapsed":
375
+ logger.debug(`[group] ${msg}`, meta);
376
+ break;
377
+ case "groupEnd":
378
+ logger.debug("[groupEnd]", undefined);
379
+ break;
380
+ case "time":
381
+ case "timeEnd":
382
+ case "timeLog":
383
+ logger.debug(`[${level}] ${msg}`, meta);
384
+ break;
385
+ case "assert":
386
+ if (!parsed[0])
387
+ logger.error(`Assertion failed: ${msg}`, meta);
388
+ break;
389
+ case "count":
390
+ case "countReset":
391
+ logger.debug(`[${level}] ${msg}`, meta);
392
+ break;
393
+ case "clear":
394
+ break;
395
+ default:
396
+ logger.info(msg, meta);
397
+ }
398
+ });
399
+ await jail.set("__dispatch", dispatch);
400
+ context.evalSync(`
401
+ function __ser() {
402
+ var out = [];
403
+ for (var i = 0; i < arguments.length; i++) {
404
+ var a = arguments[i];
405
+ try { out.push(typeof a === 'object' ? JSON.parse(JSON.stringify(a)) : a); }
406
+ catch (e) { out.push(String(a)); }
407
+ }
408
+ return JSON.stringify(out);
409
+ }
410
+ function __call(level) {
411
+ return function() {
412
+ __dispatch.applySync(undefined, [level, __ser.apply(null, arguments)]);
413
+ };
414
+ }
415
+ globalThis.console = {
416
+ log: __call('log'),
417
+ info: __call('info'),
418
+ warn: __call('warn'),
419
+ error: __call('error'),
420
+ debug: __call('debug'),
421
+ trace: __call('trace'),
422
+ dir: __call('dir'),
423
+ dirxml: __call('dirxml'),
424
+ table: __call('table'),
425
+ group: __call('group'),
426
+ groupCollapsed: __call('groupCollapsed'),
427
+ groupEnd: __call('groupEnd'),
428
+ time: __call('time'),
429
+ timeEnd: __call('timeEnd'),
430
+ timeLog: __call('timeLog'),
431
+ assert: __call('assert'),
432
+ count: __call('count'),
433
+ countReset: __call('countReset'),
434
+ clear: __call('clear')
435
+ };
436
+ `);
437
+ dispatch.release();
438
+ }
439
+ }
440
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSXNvbGF0ZWRWbUNvZGVTYW5kYm94RXZhbHVhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2dyYXBoL2VuZ2luZS9leGVjdXRpb24vSXNvbGF0ZWRWbUNvZGVTYW5kYm94RXZhbHVhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQ0c7QUFDSCxPQUFPLEdBQUcsTUFBTSxhQUFhLENBQUM7QUFDOUIsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxLQUFLLElBQUksTUFBTSxZQUFZLENBQUM7QUFDbkMsT0FBTyxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFNakMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLDJDQUFzQztBQUVwRTs7R0FFRztBQUNILE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDO0FBRWhDOztHQUVHO0FBQ0gsTUFBTSxpQkFBaUIsR0FBRyxFQUFFLENBQUM7QUFFN0I7O0dBRUc7QUFDSCxNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUM7QUFFaEM7Ozs7OztHQU1HO0FBQ0gsTUFBTSxtQkFBbUIsR0FBd0IsSUFBSSxHQUFHLENBQUM7SUFDdkQsU0FBUztJQUNULFNBQVM7SUFDVCxRQUFRO0lBQ1IsU0FBUztJQUNULFFBQVE7SUFDUixZQUFZO0lBQ1osVUFBVTtJQUNWLE1BQU07SUFDTixPQUFPO0lBQ1AsZ0JBQWdCO0lBQ2hCLFdBQVc7SUFDWCxRQUFRO0lBQ1IsTUFBTTtJQUNOLEtBQUs7SUFDTCxZQUFZO0NBQ2IsQ0FBQyxDQUFDO0FBRUg7Ozs7Ozs7Ozs7R0FVRztBQUNILFNBQVMsbUJBQW1CLENBQzFCLElBQVksRUFDWixRQUFxQztJQUVyQyxJQUFJLFFBQVEsS0FBSyxZQUFZO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFFM0MsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FB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QUFJLENBQUMsQ0FBQztZQUMzQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBRXZDLE9BQU8sQ0FBQyxRQUFRLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQW9DaEIsQ0FBQyxDQUFDO1FBRUgsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3JCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBpbnRlZ3JhdGlvbnMvZ3JhcGgvZXhlY3V0aW9uL0lzb2xhdGVkVm1Db2RlU2FuZGJveEV2YWx1YXRvclxuICogQHN1bW1hcnkge0BsaW5rIENvZGVTYW5kYm94RXZhbHVhdG9yfSBiYWNrZWQgYnkgYGlzb2xhdGVkLXZtYCAoQUxGUkVELTUgwqc3KS5cbiAqIEBkZXNjcmlwdGlvbiBQcm92aWRlcyBhIGZ1bGx5IGlzb2xhdGVkIFY4IHNhbmRib3ggZm9yIHRoZSBDb2RlIE5vZGVcbiAqIChERUNBRi0zMiDCpzIyLjQpIGFuZCBjb2RlLWJhc2VkIGNvbmRpdGlvbnMuIFVzZXMgYGlzb2xhdGVkLXZtYCBmb3IgdHJ1ZVxuICogaGVhcCBpc29sYXRpb24gKHVubGlrZSBOb2RlJ3MgYHZtYCBtb2R1bGUgd2hpY2ggc2hhcmVzIHRoZSBob3N0IGhlYXApLFxuICogYGFjb3JuYCArIGBhY29ybi13YWxrYCBmb3IgQVNULWJhc2VkIHN0YXRpYyB2YWxpZGF0aW9uLCBhbmQgYHR5cGVzY3JpcHRgXG4gKiBmb3IgVFMgdHJhbnNwaWxhdGlvbi5cbiAqXG4gKiBSZXN0cmljdGlvbnMgZW5mb3JjZWQgKEFMRlJFRC01IMKnNy4xMOKAkzcuMTIsIERFQ0FGLTM0IMKnNy41KTpcbiAqXG4gKiAtICoqTm8gaW1wb3J0cyoqIOKAlCBgaW1wb3J0YCBkZWNsYXJhdGlvbnMgYXJlIHJlamVjdGVkIGJ5IEFTVCB2YWxpZGF0aW9uLlxuICogLSAqKk5vIHJlcXVpcmVzKiog4oCUIGByZXF1aXJlYCBpcyBpbiB0aGUgYmxvY2tlZC1pZGVudGlmaWVyIHNldCBhbmQgaXMgbm90XG4gKiAgIGV4cG9zZWQgaW4gdGhlIHNhbmRib3ggY29udGV4dC5cbiAqIC0gKipObyBleHBvcnRzKiog4oCUIGBleHBvcnRgIGRlY2xhcmF0aW9ucyBhcmUgcmVqZWN0ZWQgYnkgQVNUIHZhbGlkYXRpb24uXG4gKiAtICoqUHVyZSBmdW5jdGlvbnMgb25seSoqIOKAlCBubyBzeXN0ZW0gQVBJIGFjY2Vzcy4gQmxvY2tlZCBpZGVudGlmaWVyc1xuICogICBpbmNsdWRlIGBwcm9jZXNzYCwgYGdsb2JhbGAsIGBnbG9iYWxUaGlzYCwgYEZ1bmN0aW9uYCwgYGV2YWxgLCBgZmV0Y2hgLFxuICogICBgWE1MSHR0cFJlcXVlc3RgLCBgV2ViU29ja2V0YCwgYFdvcmtlcmAsIGBEZW5vYCwgYEJ1bmAsIGBtb2R1bGVgLFxuICogICBgZXhwb3J0c2AuIFRoZSBzYW5kYm94IGNvbnRleHQgZXhwb3NlcyBvbmx5IHRoZSBkYXRhIHZhcmlhYmxlc1xuICogICAoYCRpbnB1dGAsIGAkdmFyc2AsIGAkaXRlbWAsIGAkaW5kZXhgLCBgJG5vZGVgLCBgJG91dHB1dGApLlxuICogLSAqKk5vIGBldmFsKClgIC8gYG5ldyBGdW5jdGlvbigpYCoqIOKAlCByZWplY3RlZCBieSBBU1QgdmFsaWRhdGlvbi5cbiAqXG4gKiBUaGUgdXNlciBjb2RlIGlzIHRyYW5zcGlsZWQgKFRTIOKGkiBKUykgaWYgbmVlZGVkLCBzdGF0aWNhbGx5IHZhbGlkYXRlZCxcbiAqIHdyYXBwZWQgaW4gYSBzdHJpY3QtbW9kZSBhc3luYyBmdW5jdGlvbiB0aGF0IHJlY2VpdmVzIHRoZSBkYXRhIHZhcmlhYmxlcyBhc1xuICogcGFyYW1ldGVycywgY29tcGlsZWQgaW4gYW4gaXNvbGF0ZWQgVjggaW5zdGFuY2UsIGFuZCBleGVjdXRlZCB3aXRoIGFcbiAqIHRpbWVvdXQgYW5kIG1lbW9yeSBsaW1pdC4gVGhlIHJlc3VsdCBpcyBjb3BpZWQgYmFjayB0byB0aGUgaG9zdCBoZWFwLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogY29uc3QgZXZhbHVhdG9yID0gbmV3IElzb2xhdGVkVm1Db2RlU2FuZGJveEV2YWx1YXRvcigpO1xuICogY29uc3QgcmVzdWx0ID0gYXdhaXQgZXZhbHVhdG9yLmV2YWx1YXRlKHtcbiAqICAgY29kZTogXCJyZXR1cm4gJGlucHV0LmEgKyAkaW5wdXQuYjtcIixcbiAqICAgaW5wdXQ6IHsgYTogMiwgYjogMyB9LFxuICogfSk7XG4gKiAvLyByZXN1bHQgPT09IDVcbiAqIGBgYFxuICovXG5pbXBvcnQgaXZtIGZyb20gXCJpc29sYXRlZC12bVwiO1xuaW1wb3J0ICogYXMgYWNvcm4gZnJvbSBcImFjb3JuXCI7XG5pbXBvcnQgKiBhcyB3YWxrIGZyb20gXCJhY29ybi13YWxrXCI7XG5pbXBvcnQgKiBhcyB0cyBmcm9tIFwidHlwZXNjcmlwdFwiO1xuaW1wb3J0IHR5cGUge1xuICBDb2RlU2FuZGJveEV2YWx1YXRvcixcbiAgQ29kZVNhbmRib3hDb250ZXh0LFxuICBTYW5kYm94TG9nZ2VyLFxufSBmcm9tIFwiLi9Db2RlU2FuZGJveEV2YWx1YXRvclwiO1xuaW1wb3J0IHsgR3JhcGhFeGVjdXRpb25FcnJvciB9IGZyb20gXCIuLi9lcnJvcnMvR3JhcGhFeGVjdXRpb25FcnJvclwiO1xuXG4vKipcbiAqIERlZmF1bHQgc2FuZGJveCBleGVjdXRpb24gdGltZW91dCBpbiBtaWxsaXNlY29uZHMuXG4gKi9cbmNvbnN0IERFRkFVTFRfVElNRU9VVF9NUyA9IDEwMDA7XG5cbi8qKlxuICogRGVmYXVsdCBtZW1vcnkgbGltaXQgZm9yIHRoZSBpc29sYXRlZCBWOCBoZWFwIGluIE1CLlxuICovXG5jb25zdCBERUZBVUxUX01FTU9SWV9NQiA9IDMyO1xuXG4vKipcbiAqIE1heGltdW0gY29kZSBsZW5ndGggKGNoYXJhY3RlcnMpIGFjY2VwdGVkIGJ5IHRoZSBldmFsdWF0b3IuXG4gKi9cbmNvbnN0IE1BWF9DT0RFX0xFTkdUSCA9IDEwMF8wMDA7XG5cbi8qKlxuICogSWRlbnRpZmllcnMgdGhhdCBhcmUgZm9yYmlkZGVuIGluIHNhbmRib3hlZCBjb2RlIChBTEZSRUQtNSDCpzcuMTApLlxuICpcbiAqIEFueSBBU1Qgbm9kZSBvZiB0eXBlIGBJZGVudGlmaWVyYCB3aG9zZSBgbmFtZWAgaXMgaW4gdGhpcyBzZXQgY2F1c2VzIHRoZVxuICogdmFsaWRhdG9yIHRvIHJlamVjdCB0aGUgY29kZS4gVGhpcyBjb3ZlcnMgYm90aCBmcmVlLXN0YW5kaW5nIHJlZmVyZW5jZXNcbiAqIChgcHJvY2Vzcy5lbnZgKSBhbmQgY2FsbCB0YXJnZXRzIChgcmVxdWlyZSguLi4pYCkuXG4gKi9cbmNvbnN0IEJMT0NLRURfSURFTlRJRklFUlM6IFJlYWRvbmx5U2V0PHN0cmluZz4gPSBuZXcgU2V0KFtcbiAgXCJwcm9jZXNzXCIsXG4gIFwicmVxdWlyZVwiLFxuICBcIm1vZHVsZVwiLFxuICBcImV4cG9ydHNcIixcbiAgXCJnbG9iYWxcIixcbiAgXCJnbG9iYWxUaGlzXCIsXG4gIFwiRnVuY3Rpb25cIixcbiAgXCJldmFsXCIsXG4gIFwiZmV0Y2hcIixcbiAgXCJYTUxIdHRwUmVxdWVzdFwiLFxuICBcIldlYlNvY2tldFwiLFxuICBcIldvcmtlclwiLFxuICBcIkRlbm9cIixcbiAgXCJCdW5cIixcbiAgXCJfX2Rpc3BhdGNoXCIsXG5dKTtcblxuLyoqXG4gKiBUcmFuc3BpbGVzIFR5cGVTY3JpcHQgY29kZSB0byBKYXZhU2NyaXB0IChBTEZSRUQtNSDCpzcuNCkuXG4gKlxuICogV2hlbiB0aGUgbGFuZ3VhZ2UgaXMgYCdqYXZhc2NyaXB0J2AgdGhlIGNvZGUgaXMgcmV0dXJuZWQgdW5jaGFuZ2VkLiBGb3JcbiAqIGAndHlwZXNjcmlwdCdgIHRoZSBjb2RlIGlzIHRyYW5zcGlsZWQgdXNpbmcgdGhlIFR5cGVTY3JpcHQgY29tcGlsZXIgd2l0aFxuICogbW9kdWxlIGtpbmQgYE5vbmVgIChubyBpbXBvcnQvZXhwb3J0IGVtaXR0ZWQpIGFuZCB0YXJnZXQgYEVTMjAyMmAuXG4gKlxuICogQHBhcmFtIGNvZGUgLSBUaGUgdXNlci1hdXRob3JlZCBjb2RlLlxuICogQHBhcmFtIGxhbmd1YWdlIC0gVGhlIGNvZGUgbGFuZ3VhZ2UgKGAnamF2YXNjcmlwdCdgIG9yIGAndHlwZXNjcmlwdCdgKS5cbiAqIEByZXR1cm5zIFRyYW5zcGlsZWQgSmF2YVNjcmlwdCBjb2RlLlxuICovXG5mdW5jdGlvbiB0cmFuc3BpbGVUeXBlU2NyaXB0KFxuICBjb2RlOiBzdHJpbmcsXG4gIGxhbmd1YWdlOiBcImphdmFzY3JpcHRcIiB8IFwidHlwZXNjcmlwdFwiXG4pOiBzdHJpbmcge1xuICBpZiAobGFuZ3VhZ2UgPT09IFwiamF2YXNjcmlwdFwiKSByZXR1cm4gY29kZTtcblxuICBjb25zdCByZXN1bHQgPSB0cy50cmFuc3BpbGVNb2R1bGUoY29kZSwge1xuICAgIGNvbXBpbGVyT3B0aW9uczoge1xuICAgICAgdGFyZ2V0OiB0cy5TY3JpcHRUYXJnZXQuRVMyMDIyLFxuICAgICAgbW9kdWxlOiB0cy5Nb2R1bGVLaW5kLk5vbmUsXG4gICAgICBzdHJpY3Q6IHRydWUsXG4gICAgICBub0VtaXRIZWxwZXJzOiB0cnVlLFxuICAgICAgaW1wb3J0SGVscGVyczogZmFsc2UsXG4gICAgfSxcbiAgfSk7XG5cbiAgLy8gU3RyaXAgdGhlIFwidXNlIHN0cmljdFwiOyBkaXJlY3RpdmUgdGhhdCB0cy50cmFuc3BpbGVNb2R1bGUgYWRkcyDigJQgdGhlXG4gIC8vIHNhbmRib3ggd3JhcHBlciBhbHJlYWR5IGVuZm9yY2VzIHN0cmljdCBtb2RlLCBhbmQgdGhlIGRpcmVjdGl2ZSBicmVha3NcbiAgLy8gZXhwcmVzc2lvbi1tb2RlIHdyYXBwaW5nIChyZXR1cm4gKC4uLikpLlxuICByZXR1cm4gcmVzdWx0Lm91dHB1dFRleHQucmVwbGFjZSgvXlwidXNlIHN0cmljdFwiO1xccyovLCBcIlwiKTtcbn1cblxuLyoqXG4gKiBTdGF0aWNhbGx5IHZhbGlkYXRlcyB1c2VyIGNvZGUgdXNpbmcgYW4gQVNUIHdhbGsgKEFMRlJFRC01IMKnNy4xMSkuXG4gKlxuICogUmVqZWN0czpcbiAqIC0gYEltcG9ydERlY2xhcmF0aW9uYCDigJQgbm8gaW1wb3J0cyBhbGxvd2VkLlxuICogLSBgRXhwb3J0TmFtZWREZWNsYXJhdGlvbmAgLyBgRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uYCDigJQgbm8gZXhwb3J0cy5cbiAqIC0gYElkZW50aWZpZXJgIHdob3NlIG5hbWUgaXMgaW4ge0BsaW5rIEJMT0NLRURfSURFTlRJRklFUlN9LlxuICogLSBgTmV3RXhwcmVzc2lvbmAgd2l0aCBjYWxsZWUgYEZ1bmN0aW9uYCDigJQgbm8gYG5ldyBGdW5jdGlvbigpYC5cbiAqIC0gYENhbGxFeHByZXNzaW9uYCB3aXRoIGNhbGxlZSBgZXZhbGAg4oCUIG5vIGBldmFsKClgLlxuICpcbiAqIEBwYXJhbSBjb2RlIC0gSmF2YVNjcmlwdCBjb2RlIHRvIHZhbGlkYXRlIChhZnRlciBUUyB0cmFuc3BpbGF0aW9uKS5cbiAqIEB0aHJvd3Mge0dyYXBoRXhlY3V0aW9uRXJyb3J9IHdoZW4gYSBmb3JiaWRkZW4gY29uc3RydWN0IGlzIGZvdW5kLlxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZVNhZmVDb2RlKGNvZGU6IHN0cmluZyk6IHZvaWQge1xuICBpZiAoY29kZS5sZW5ndGggPiBNQVhfQ09ERV9MRU5HVEgpIHtcbiAgICB0aHJvdyBuZXcgR3JhcGhFeGVjdXRpb25FcnJvcihcbiAgICAgIGBDb2RlIGV4Y2VlZHMgdGhlIG1heGltdW0gbGVuZ3RoIG9mICR7TUFYX0NPREVfTEVOR1RIfSBjaGFyYWN0ZXJzYCxcbiAgICAgIFwiR1JBUEhfQ09ERV9TQU5EQk9YX0NPREVfVE9PX0xPTkdcIixcbiAgICAgIHsgbGVuZ3RoOiBjb2RlLmxlbmd0aCB9XG4gICAgKTtcbiAgfVxuXG4gIGxldCBhc3Q6IGFjb3JuLkFueU5vZGU7XG4gIHRyeSB7XG4gICAgLy8gRmlyc3QsIHRyeSBwYXJzaW5nIHRoZSBjb2RlIHdyYXBwZWQgaW4gYSBmdW5jdGlvbiB3aXRoIHNvdXJjZVR5cGVcbiAgICAvLyBcInNjcmlwdFwiLiBUaGlzIGhhbmRsZXMgYHJldHVybmAgc3RhdGVtZW50cyAod2hpY2ggYXJlIHZhbGlkIGluc2lkZSBhXG4gICAgLy8gZnVuY3Rpb24pIGFuZCBsZXRzIHVzIGRldGVjdCBibG9ja2VkIGlkZW50aWZpZXJzLCBldmFsKCksIGFuZFxuICAgIC8vIG5ldyBGdW5jdGlvbigpIHZpYSB0aGUgQVNUIHdhbGsuXG4gICAgYXN0ID0gYWNvcm4ucGFyc2UoYGFzeW5jIGZ1bmN0aW9uIF9fdmFsaWRhdGUoKSB7XFxuJHtjb2RlfVxcbn1gLCB7XG4gICAgICBlY21hVmVyc2lvbjogXCJsYXRlc3RcIixcbiAgICAgIHNvdXJjZVR5cGU6IFwic2NyaXB0XCIsXG4gICAgfSkgYXMgYWNvcm4uQW55Tm9kZTtcbiAgfSBjYXRjaCB7XG4gICAgLy8gSWYgdGhlIGZ1bmN0aW9uLXdyYXBwZWQgcGFyc2UgZmFpbHMgKGUuZy4gYmVjYXVzZSB0aGUgY29kZSBoYXNcbiAgICAvLyB0b3AtbGV2ZWwgYGltcG9ydGAgb3IgYGV4cG9ydGAgZGVjbGFyYXRpb25zIHdoaWNoIGFyZSBpbnZhbGlkIGluc2lkZVxuICAgIC8vIGEgZnVuY3Rpb24pLCB0cnkgcGFyc2luZyB0aGUgcmF3IGNvZGUgd2l0aCBzb3VyY2VUeXBlIFwibW9kdWxlXCIgc29cbiAgICAvLyBpbXBvcnQvZXhwb3J0IGRlY2xhcmF0aW9ucyBhcmUgcmVjb2duaXNlZCBhcyBBU1Qgbm9kZXMuXG4gICAgdHJ5IHtcbiAgICAgIGFzdCA9IGFjb3JuLnBhcnNlKGNvZGUsIHtcbiAgICAgICAgZWNtYVZlcnNpb246IFwibGF0ZXN0XCIsXG4gICAgICAgIHNvdXJjZVR5cGU6IFwibW9kdWxlXCIsXG4gICAgICB9KSBhcyBhY29ybi5BbnlOb2RlO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhyb3cgbmV3IEdyYXBoRXhlY3V0aW9uRXJyb3IoXG4gICAgICAgIGBDb2RlIGZhaWxlZCB0byBwYXJzZTogJHsoZXJyIGFzIEVycm9yKS5tZXNzYWdlfWAsXG4gICAgICAgIFwiR1JBUEhfQ09ERV9TQU5EQk9YX1BBUlNFX0VSUk9SXCIsXG4gICAgICAgIHsgY29kZSwgZXJyb3I6IChlcnIgYXMgRXJyb3IpLm1lc3NhZ2UgfVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICB3YWxrLmZ1bGwoYXN0IGFzIG5ldmVyLCAobm9kZTogYWNvcm4uQW55Tm9kZSkgPT4ge1xuICAgIGNvbnN0IG4gPSBub2RlIGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbiAgICBpZiAobltcInR5cGVcIl0gPT09IFwiSW1wb3J0RGVjbGFyYXRpb25cIikge1xuICAgICAgdGhyb3cgbmV3IEdyYXBoRXhlY3V0aW9uRXJyb3IoXG4gICAgICAgIFwiSW1wb3J0cyBhcmUgbm90IGFsbG93ZWQgaW4gQ29kZSBub2Rlcy5cIixcbiAgICAgICAgXCJHUkFQSF9DT0RFX1NBTkRCT1hfRk9SQklEREVOX1RPS0VOXCIsXG4gICAgICAgIHsgdG9rZW46IFwiaW1wb3J0XCIgfVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBuW1widHlwZVwiXSA9PT0gXCJFeHBvcnROYW1lZERlY2xhcmF0aW9uXCIgfHxcbiAgICAgIG5bXCJ0eXBlXCJdID09PSBcIkV4cG9ydERlZmF1bHREZWNsYXJhdGlvblwiXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgR3JhcGhFeGVjdXRpb25FcnJvcihcbiAgICAgICAgXCJFeHBvcnRzIGFyZSBub3QgYWxsb3dlZCBpbiBDb2RlIG5vZGVzLlwiLFxuICAgICAgICBcIkdSQVBIX0NPREVfU0FOREJPWF9GT1JCSURERU5fVE9LRU5cIixcbiAgICAgICAgeyB0b2tlbjogXCJleHBvcnRcIiB9XG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIG5bXCJ0eXBlXCJdID09PSBcIklkZW50aWZpZXJcIiAmJlxuICAgICAgdHlwZW9mIG5bXCJuYW1lXCJdID09PSBcInN0cmluZ1wiICYmXG4gICAgICBCTE9DS0VEX0lERU5USUZJRVJTLmhhcyhuW1wibmFtZVwiXSlcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBHcmFwaEV4ZWN1dGlvbkVycm9yKFxuICAgICAgICBgSWRlbnRpZmllciBcIiR7bltcIm5hbWVcIl19XCIgaXMgbm90IGFsbG93ZWQgaW4gQ29kZSBub2Rlcy5gLFxuICAgICAgICBcIkdSQVBIX0NPREVfU0FOREJPWF9GT1JCSURERU5fVE9LRU5cIixcbiAgICAgICAgeyB0b2tlbjogbltcIm5hbWVcIl0gfVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBuW1widHlwZVwiXSA9PT0gXCJOZXdFeHByZXNzaW9uXCIgJiZcbiAgICAgIChuW1wiY2FsbGVlXCJdIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KT8uW1wibmFtZVwiXSA9PT0gXCJGdW5jdGlvblwiXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgR3JhcGhFeGVjdXRpb25FcnJvcihcbiAgICAgICAgXCJuZXcgRnVuY3Rpb24oKSBpcyBub3QgYWxsb3dlZCBpbiBDb2RlIG5vZGVzLlwiLFxuICAgICAgICBcIkdSQVBIX0NPREVfU0FOREJPWF9GT1JCSURERU5fVE9LRU5cIixcbiAgICAgICAgeyB0b2tlbjogXCJGdW5jdGlvblwiIH1cbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgbltcInR5cGVcIl0gPT09IFwiQ2FsbEV4cHJlc3Npb25cIiAmJlxuICAgICAgKG5bXCJjYWxsZWVcIl0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pPy5bXCJuYW1lXCJdID09PSBcImV2YWxcIlxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEdyYXBoRXhlY3V0aW9uRXJyb3IoXG4gICAgICAgIFwiZXZhbCgpIGlzIG5vdCBhbGxvd2VkIGluIENvZGUgbm9kZXMuXCIsXG4gICAgICAgIFwiR1JBUEhfQ09ERV9TQU5EQk9YX0ZPUkJJRERFTl9UT0tFTlwiLFxuICAgICAgICB7IHRva2VuOiBcImV2YWxcIiB9XG4gICAgICApO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBnaXZlbiBjb2RlIGNvbnRhaW5zIGEgdG9wLWxldmVsIGByZXR1cm5gIHN0YXRlbWVudC5cbiAqXG4gKiBXaGVuIHRoZSBjb2RlIGhhcyBubyBgcmV0dXJuYCwgaXQgaXMgdHJlYXRlZCBhcyBhIHNpbmdsZSBleHByZXNzaW9uIGFuZFxuICogd3JhcHBlZCBpbiBgcmV0dXJuICguLi4pYCBzbyB0aGUgdXNlciBjYW4gd3JpdGUgYCgkaW5wdXQuYSArICRpbnB1dC5iKWBcbiAqIGluc3RlYWQgb2YgYHJldHVybiAkaW5wdXQuYSArICRpbnB1dC5iYC5cbiAqL1xuZnVuY3Rpb24gaGFzUmV0dXJuU3RhdGVtZW50KGNvZGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gL1xcYnJldHVyblxcYltcXHM7XS8udGVzdChjb2RlKTtcbn1cblxuLyoqXG4gKiBgaXNvbGF0ZWQtdm1gLWJhY2tlZCB7QGxpbmsgQ29kZVNhbmRib3hFdmFsdWF0b3J9IChBTEZSRUQtNSDCpzcuMTgpLlxuICpcbiAqIFRoaXMgZXZhbHVhdG9yIHByb3ZpZGVzIGEgdHJ1bHkgaXNvbGF0ZWQgVjggc2FuZGJveCDigJQgdGhlIGNvZGUgcnVucyBpbiBhXG4gKiBzZXBhcmF0ZSBpc29sYXRlIHdpdGggaXRzIG93biBoZWFwLCBzZXBhcmF0ZSBmcm9tIHRoZSBob3N0IHByb2Nlc3MuIFRoZVxuICogc2FuZGJveCBjb250ZXh0IGV4cG9zZXMgb25seSB0aGUgZGF0YSB2YXJpYWJsZXMgKGAkaW5wdXRgLCBgJHZhcnNgLCBgJGl0ZW1gLFxuICogYCRpbmRleGAsIGAkbm9kZWAsIGAkb3V0cHV0YCk7IG5vIGhvc3QgZ2xvYmFscyBhcmUgYXZhaWxhYmxlLlxuICpcbiAqIEV4ZWN1dGlvbiBwaXBlbGluZTpcbiAqIDEuICoqVHJhbnNwaWxlKiog4oCUIFR5cGVTY3JpcHQgY29kZSBpcyB0cmFuc3BpbGVkIHRvIEphdmFTY3JpcHQgdmlhXG4gKiAgICBgdHlwZXNjcmlwdC50cmFuc3BpbGVNb2R1bGVgIChBTEZSRUQtNSDCpzcuNCkuXG4gKiAyLiAqKlZhbGlkYXRlKiog4oCUIHRoZSBKYXZhU2NyaXB0IGNvZGUgaXMgcGFyc2VkIHdpdGggYGFjb3JuYCBhbmQgd2Fsa2VkIHdpdGhcbiAqICAgIGBhY29ybi13YWxrYCB0byByZWplY3QgaW1wb3J0cywgZXhwb3J0cywgYmxvY2tlZCBpZGVudGlmaWVycywgYGV2YWwoKWAsXG4gKiAgICBhbmQgYG5ldyBGdW5jdGlvbigpYCAoQUxGUkVELTUgwqc3LjExKS5cbiAqIDMuICoqSXNvbGF0ZSoqIOKAlCBhIG5ldyBgaXNvbGF0ZWQtdm1gIGBJc29sYXRlYCBpcyBjcmVhdGVkIHdpdGggYSBtZW1vcnlcbiAqICAgIGxpbWl0LiBBIGNvbnRleHQgaXMgY3JlYXRlZCBhbmQgdGhlIGRhdGEgdmFyaWFibGVzIGFyZSBjb3BpZWQgaW50byB0aGVcbiAqICAgIGlzb2xhdGUncyBoZWFwIHZpYSBgRXh0ZXJuYWxDb3B5YC5cbiAqIDQuICoqQ29tcGlsZSAmIHJ1bioqIOKAlCB0aGUgd3JhcHBlZCBjb2RlIGlzIGNvbXBpbGVkIGFuZCBleGVjdXRlZCB3aXRoIGFcbiAqICAgIHRpbWVvdXQuIFRoZSByZXN1bHQgaXMgY29waWVkIGJhY2sgdG8gdGhlIGhvc3QgaGVhcC5cbiAqIDUuICoqRGlzcG9zZSoqIOKAlCB0aGUgaXNvbGF0ZSBpcyBhbHdheXMgZGlzcG9zZWQgaW4gYSBgZmluYWxseWAgYmxvY2suXG4gKlxuICogVGhlIHVzZXIgY29kZSBpcyB3cmFwcGVkIGluIGEgc3RyaWN0LW1vZGUgYXN5bmMgZnVuY3Rpb246XG4gKlxuICogYGBganNcbiAqIFwidXNlIHN0cmljdFwiO1xuICogYXN5bmMgZnVuY3Rpb24gX191c2VyRnVuY3Rpb24oJGlucHV0LCAkdmFycywgJGl0ZW0sICRpbmRleCwgJG5vZGUsICRvdXRwdXQpIHtcbiAqICAgPHVzZXIgY29kZT5cbiAqIH1cbiAqIF9fdXNlckZ1bmN0aW9uKCRpbnB1dCwgJHZhcnMsICRpdGVtLCAkaW5kZXgsICRub2RlLCAkb3V0cHV0KTtcbiAqIGBgYFxuICpcbiAqIFdoZW4gdGhlIGNvZGUgaGFzIG5vIGByZXR1cm5gIHN0YXRlbWVudCBpdCBpcyB0cmVhdGVkIGFzIGEgc2luZ2xlIGV4cHJlc3Npb25cbiAqIGFuZCB3cmFwcGVkIGluIGByZXR1cm4gKC4uLilgLlxuICovXG5leHBvcnQgY2xhc3MgSXNvbGF0ZWRWbUNvZGVTYW5kYm94RXZhbHVhdG9yIGltcGxlbWVudHMgQ29kZVNhbmRib3hFdmFsdWF0b3Ige1xuICBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRUaW1lb3V0TXM6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0TWVtb3J5TWI6IG51bWJlcjtcblxuICAvKipcbiAgICogQHBhcmFtIGRlZmF1bHRUaW1lb3V0TXMgLSBEZWZhdWx0IGV4ZWN1dGlvbiB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcy5cbiAgICogQHBhcmFtIGRlZmF1bHRNZW1vcnlNYiAtIERlZmF1bHQgaXNvbGF0ZSBtZW1vcnkgbGltaXQgaW4gTUIuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBkZWZhdWx0VGltZW91dE1zOiBudW1iZXIgPSBERUZBVUxUX1RJTUVPVVRfTVMsXG4gICAgZGVmYXVsdE1lbW9yeU1iOiBudW1iZXIgPSBERUZBVUxUX01FTU9SWV9NQlxuICApIHtcbiAgICB0aGlzLmRlZmF1bHRUaW1lb3V0TXMgPSBkZWZhdWx0VGltZW91dE1zO1xuICAgIHRoaXMuZGVmYXVsdE1lbW9yeU1iID0gZGVmYXVsdE1lbW9yeU1iO1xuICB9XG5cbiAgYXN5bmMgZXZhbHVhdGUoY3R4OiBDb2RlU2FuZGJveENvbnRleHQpOiBQcm9taXNlPHVua25vd24+IHtcbiAgICBjb25zdCBjb2RlID0gY3R4LmNvZGU7XG4gICAgaWYgKCFjb2RlIHx8IHR5cGVvZiBjb2RlICE9PSBcInN0cmluZ1wiIHx8IGNvZGUudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEdyYXBoRXhlY3V0aW9uRXJyb3IoXG4gICAgICAgIFwiQ29kZSBzYW5kYm94IHJlY2VpdmVkIGVtcHR5IGNvZGVcIixcbiAgICAgICAgXCJHUkFQSF9DT0RFX1NBTkRCT1hfRU1QVFlfQ09ERVwiXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGxhbmd1YWdlID0gY3R4Lmxhbmd1YWdlID8/IFwiamF2YXNjcmlwdFwiO1xuICAgIGNvbnN0IGpzQ29kZSA9IHRyYW5zcGlsZVR5cGVTY3JpcHQoY29kZSwgbGFuZ3VhZ2UpO1xuXG4gICAgdmFsaWRhdGVTYWZlQ29kZShqc0NvZGUpO1xuXG4gICAgY29uc3QgZXhwcmVzc2lvbk1vZGUgPSAhaGFzUmV0dXJuU3RhdGVtZW50KGpzQ29kZSk7XG4gICAgY29uc3QgY29kZUZvck1vZGUgPSBleHByZXNzaW9uTW9kZVxuICAgICAgPyBqc0NvZGUucmVwbGFjZSgvW1xccztdKyQvLCBcIlwiKVxuICAgICAgOiBqc0NvZGU7XG5cbiAgICBjb25zdCBzYW5kYm94VmFyczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7XG4gICAgICAkaW5wdXQ6IGN0eC5pbnB1dCA/PyB7fSxcbiAgICAgICR2YXJzOiBjdHgudmFycyA/PyB7fSxcbiAgICAgICRpdGVtOiBjdHguaXRlbSxcbiAgICAgICRpbmRleDogY3R4LmluZGV4LFxuICAgICAgJG5vZGU6IGN0eC5ub2RlcyA/PyB7fSxcbiAgICAgICRvdXRwdXQ6IHVuZGVmaW5lZCxcbiAgICB9O1xuXG4gICAgY29uc3QgcGFyYW1OYW1lcyA9IE9iamVjdC5rZXlzKHNhbmRib3hWYXJzKTtcbiAgICAvLyBjb25zdCBwYXJhbVZhbHVlcyA9IE9iamVjdC52YWx1ZXMoc2FuZGJveFZhcnMpO1xuXG4gICAgLy8gQnVpbGQgdGhlIHdyYXBwZWQgc2NyaXB0LiBUaGUgdXNlciBjb2RlIHJ1bnMgaW5zaWRlIGFuIGFzeW5jIGZ1bmN0aW9uXG4gICAgLy8gd2l0aCBuYW1lZCBwYXJhbWV0ZXJzLiBUaGUgcmVzdWx0IGlzIEpTT04tc3RyaW5naWZpZWQgaW5zaWRlIHRoZSBpc29sYXRlXG4gICAgLy8gc28gaXQgY2FuIGJlIHRyYW5zZmVycmVkIGJhY2sgYXMgYSBwbGFpbiBzdHJpbmcgKGlzb2xhdGVkLXZtIGNhbm5vdFxuICAgIC8vIGRlZXAtY29weSBhcmJpdHJhcnkgb2JqZWN0cyB2aWEgYHNjcmlwdC5ydW4oKWAgd2l0aCBgcHJvbWlzZTogdHJ1ZWApLlxuICAgIC8vIFRoZSBzcGVjIHJlcXVpcmVzIEpTT04tc2VyaWFsaXphYmxlIG91dHB1dCwgc28gdGhpcyBpcyBzYWZlLlxuICAgIGNvbnN0IHVzZXJCb2R5ID0gZXhwcmVzc2lvbk1vZGUgPyBgcmV0dXJuICgke2NvZGVGb3JNb2RlfSk7YCA6IGNvZGVGb3JNb2RlO1xuICAgIGNvbnN0IHdyYXBwZWQgPSBgXCJ1c2Ugc3RyaWN0XCI7XFxuYXN5bmMgZnVuY3Rpb24gX191c2VyRnVuY3Rpb24oJHtwYXJhbU5hbWVzLmpvaW4oXCIsIFwiKX0pIHtcXG4ke3VzZXJCb2R5fVxcbn1cXG5fX3VzZXJGdW5jdGlvbigke3BhcmFtTmFtZXMuam9pbihcIiwgXCIpfSkudGhlbihmdW5jdGlvbihfX3IpIHsgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHsgdjogX19yIH0pOyB9KTtgO1xuXG4gICAgY29uc3QgaXNvbGF0ZSA9IG5ldyBpdm0uSXNvbGF0ZSh7IG1lbW9yeUxpbWl0OiB0aGlzLmRlZmF1bHRNZW1vcnlNYiB9KTtcbiAgICBjb25zdCBjb250ZXh0ID0gYXdhaXQgaXNvbGF0ZS5jcmVhdGVDb250ZXh0KCk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgamFpbCA9IGNvbnRleHQuZ2xvYmFsO1xuXG4gICAgICAvLyBJbmplY3QgYSBgY29uc29sZWAgb2JqZWN0IGludG8gdGhlIGlzb2xhdGUgd2hvc2UgbWV0aG9kcyBmb3J3YXJkIHRvXG4gICAgICAvLyB0aGUgQ29udGV4dCBsb2dnZXIgKGJvdW5kIHRvIHJ1bklkKS4gVGhlIGxvZ2dlciBpcyBjYWxsZWQgdmlhXG4gICAgICAvLyBgaXZtLlJlZmVyZW5jZWAgc28gdGhlIGlzb2xhdGUgY2FuIGludm9rZSBob3N0IGZ1bmN0aW9ucyB3aXRob3V0XG4gICAgICAvLyBsZWFraW5nIHRoZSBob3N0IGhlYXAuXG4gICAgICBpZiAoY3R4LmxvZ2dlcikge1xuICAgICAgICBhd2FpdCB0aGlzLmluamVjdENvbnNvbGUoamFpbCwgY3R4LmxvZ2dlciwgY29udGV4dCk7XG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3QgW25hbWUsIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhzYW5kYm94VmFycykpIHtcbiAgICAgICAgYXdhaXQgamFpbC5zZXQoXG4gICAgICAgICAgbmFtZSxcbiAgICAgICAgICBuZXcgaXZtLkV4dGVybmFsQ29weSh2YWx1ZSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IHZhbHVlKS5jb3B5SW50bygpXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGxldCBzY3JpcHQ6IGl2bS5TY3JpcHQ7XG4gICAgICB0cnkge1xuICAgICAgICBzY3JpcHQgPSBhd2FpdCBpc29sYXRlLmNvbXBpbGVTY3JpcHQod3JhcHBlZCwge1xuICAgICAgICAgIGZpbGVuYW1lOiBcImdyYXBoLWNvZGUtbm9kZS5qc1wiLFxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBpZiAoZXhwcmVzc2lvbk1vZGUpIHtcbiAgICAgICAgICBjb25zdCBmYWxsYmFja0JvZHkgPSBjb2RlRm9yTW9kZTtcbiAgICAgICAgICBjb25zdCBmYWxsYmFja1dyYXBwZWQgPSBgXCJ1c2Ugc3RyaWN0XCI7XFxuYXN5bmMgZnVuY3Rpb24gX191c2VyRnVuY3Rpb24oJHtwYXJhbU5hbWVzLmpvaW4oXCIsIFwiKX0pIHtcXG4ke2ZhbGxiYWNrQm9keX1cXG59XFxuX191c2VyRnVuY3Rpb24oJHtwYXJhbU5hbWVzLmpvaW4oXCIsIFwiKX0pLnRoZW4oZnVuY3Rpb24oX19yKSB7IHJldHVybiBKU09OLnN0cmluZ2lmeSh7IHY6IF9fciB9KTsgfSk7YDtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgc2NyaXB0ID0gYXdhaXQgaXNvbGF0ZS5jb21waWxlU2NyaXB0KGZhbGxiYWNrV3JhcHBlZCwge1xuICAgICAgICAgICAgICBmaWxlbmFtZTogXCJncmFwaC1jb2RlLW5vZGUuanNcIixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gY2F0Y2ggKGZhbGxiYWNrRXJyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgR3JhcGhFeGVjdXRpb25FcnJvcihcbiAgICAgICAgICAgICAgYENvZGUgZmFpbGVkIHRvIGNvbXBpbGU6ICR7KGZhbGxiYWNrRXJyIGFzIEVycm9yKS5tZXNzYWdlfWAsXG4gICAgICAgICAgICAgIFwiR1JBUEhfQ09ERV9TQU5EQk9YX0NPTVBJTEVfRVJST1JcIixcbiAgICAgICAgICAgICAgeyBjb2RlOiBqc0NvZGUsIGVycm9yOiAoZmFsbGJhY2tFcnIgYXMgRXJyb3IpLm1lc3NhZ2UgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEdyYXBoRXhlY3V0aW9uRXJyb3IoXG4gICAgICAgICAgICBgQ29kZSBmYWlsZWQgdG8gY29tcGlsZTogJHsoZXJyIGFzIEVycm9yKS5tZXNzYWdlfWAsXG4gICAgICAgICAgICBcIkdSQVBIX0NPREVfU0FOREJPWF9DT01QSUxFX0VSUk9SXCIsXG4gICAgICAgICAgICB7IGNvZGU6IGpzQ29kZSwgZXJyb3I6IChlcnIgYXMgRXJyb3IpLm1lc3NhZ2UgfVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbGV0IHJhd1Jlc3VsdDogdW5rbm93bjtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJhd1Jlc3VsdCA9IGF3YWl0IHNjcmlwdC5ydW4oY29udGV4dCwge1xuICAgICAgICAgIHRpbWVvdXQ6IHRoaXMuZGVmYXVsdFRpbWVvdXRNcyxcbiAgICAgICAgICBwcm9taXNlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBjb25zdCBtc2cgPSAoZXJyIGFzIEVycm9yKS5tZXNzYWdlO1xuICAgICAgICBpZiAobXNnLmluY2x1ZGVzKFwidGltZWQgb3V0XCIpIHx8IG1zZy5pbmNsdWRlcyhcInRpbWVvdXRcIikpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgR3JhcGhFeGVjdXRpb25FcnJvcihcbiAgICAgICAgICAgIGBDb2RlIGV4ZWN1dGlvbiB0aW1lZCBvdXQgYWZ0ZXIgJHt0aGlzLmRlZmF1bHRUaW1lb3V0TXN9IG1zYCxcbiAgICAgICAgICAgIFwiR1JBUEhfQ09ERV9TQU5EQk9YX1RJTUVPVVRcIixcbiAgICAgICAgICAgIHsgdGltZW91dE1zOiB0aGlzLmRlZmF1bHRUaW1lb3V0TXMgfVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1zZy5pbmNsdWRlcyhcIm1lbW9yeVwiKSB8fCBtc2cuaW5jbHVkZXMoXCJoZWFwXCIpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEdyYXBoRXhlY3V0aW9uRXJyb3IoXG4gICAgICAgICAgICBgQ29kZSBleGNlZWRlZCB0aGUgbWVtb3J5IGxpbWl0IG9mICR7dGhpcy5kZWZhdWx0TWVtb3J5TWJ9IE1CYCxcbiAgICAgICAgICAgIFwiR1JBUEhfQ09ERV9TQU5EQk9YX01FTU9SWV9MSU1JVFwiLFxuICAgICAgICAgICAgeyBtZW1vcnlNYjogdGhpcy5kZWZhdWx0TWVtb3J5TWIgfVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IEdyYXBoRXhlY3V0aW9uRXJyb3IoXG4gICAgICAgICAgYENvZGUgZXhlY3V0aW9uIGZhaWxlZDogJHttc2d9YCxcbiAgICAgICAgICBcIkdSQVBIX0NPREVfU0FOREJPWF9SVU5USU1FX0VSUk9SXCIsXG4gICAgICAgICAgeyBjb2RlOiBqc0NvZGUsIGVycm9yOiBtc2cgfVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICAvLyBUaGUgc2NyaXB0IHJldHVybnMgYSBKU09OIHN0cmluZyBge1widlwiOiA8cmVzdWx0Pn1gLiBQYXJzZSBpdCBiYWNrLlxuICAgICAgaWYgKHR5cGVvZiByYXdSZXN1bHQgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEdyYXBoRXhlY3V0aW9uRXJyb3IoXG4gICAgICAgICAgXCJDb2RlIHNhbmRib3ggcmV0dXJuZWQgYW4gdW5leHBlY3RlZCBub24tc3RyaW5nIHJlc3VsdFwiLFxuICAgICAgICAgIFwiR1JBUEhfQ09ERV9TQU5EQk9YX1VORVhQRUNURURfUkVTVUxUXCIsXG4gICAgICAgICAgeyByZXN1bHQ6IHJhd1Jlc3VsdCB9XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShyYXdSZXN1bHQpLnY7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGNvbnRleHQucmVsZWFzZSgpO1xuICAgICAgaXNvbGF0ZS5kaXNwb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEluamVjdHMgYSBgY29uc29sZWAgb2JqZWN0IGludG8gdGhlIGlzb2xhdGUgd2hvc2UgbWV0aG9kcyBmb3J3YXJkIHRvIHRoZVxuICAgKiBDb250ZXh0IGxvZ2dlciAoYm91bmQgdG8gYHJ1bklkYCkuXG4gICAqXG4gICAqIEV2ZXJ5IHN0YW5kYXJkIGBjb25zb2xlLipgIG1ldGhvZCBpcyBzdXBwb3J0ZWQ6XG4gICAqIGBsb2dgLCBgaW5mb2AsIGB3YXJuYCwgYGVycm9yYCwgYGRlYnVnYCwgYHRyYWNlYCwgYGRpcmAsIGBkaXJ4bWxgLFxuICAgKiBgdGFibGVgLCBgZ3JvdXBgLCBgZ3JvdXBDb2xsYXBzZWRgLCBgZ3JvdXBFbmRgLCBgdGltZWAsIGB0aW1lRW5kYCxcbiAgICogYHRpbWVMb2dgLCBgYXNzZXJ0YCwgYGNvdW50YCwgYGNvdW50UmVzZXRgLCBgY2xlYXJgLlxuICAgKlxuICAgKiBBcmd1bWVudHMgYXJlIHNlcmlhbGlzZWQgaW5zaWRlIHRoZSBpc29sYXRlICh2aWEgYEpTT04uc3RyaW5naWZ5YCB3aXRoIGFcbiAgICogc2FmZSBmYWxsYmFjaykgYmVmb3JlIGJlaW5nIHBhc3NlZCBhY3Jvc3MgdGhlIGlzb2xhdGUgYm91bmRhcnksIGJlY2F1c2VcbiAgICogYGlzb2xhdGVkLXZtYCBjYW5ub3QgY29weSBhcmJpdHJhcnkgaG9zdCBvYmplY3RzLlxuICAgKlxuICAgKiBAcGFyYW0gamFpbCAtIFRoZSBpc29sYXRlJ3MgZ2xvYmFsIG9iamVjdC5cbiAgICogQHBhcmFtIGxvZ2dlciAtIFRoZSBDb250ZXh0IGxvZ2dlciB0aGF0IHJlY2VpdmVzIHRoZSBmb3J3YXJkZWQgY2FsbHMuXG4gICAqIEBwYXJhbSBjb250ZXh0IC0gVGhlIGlzb2xhdGUgY29udGV4dCAoZm9yIHJ1bm5pbmcgdGhlIGluaXQgc2NyaXB0KS5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgaW5qZWN0Q29uc29sZShcbiAgICBqYWlsOiBpdm0uQ29udGV4dFtcImdsb2JhbFwiXSxcbiAgICBsb2dnZXI6IFNhbmRib3hMb2dnZXIsXG4gICAgY29udGV4dDogaXZtLkNvbnRleHRcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZGlzcGF0Y2ggPSBuZXcgaXZtLlJlZmVyZW5jZShmdW5jdGlvbiAobGV2ZWw6IHN0cmluZywgYXJnc0pzb246IHN0cmluZykge1xuICAgICAgbGV0IHBhcnNlZDogdW5rbm93bltdO1xuICAgICAgdHJ5IHtcbiAgICAgICAgcGFyc2VkID0gSlNPTi5wYXJzZShhcmdzSnNvbikgYXMgdW5rbm93bltdO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHBhcnNlZCA9IFthcmdzSnNvbl07XG4gICAgICB9XG4gICAgICBjb25zdCBtc2cgPSBwYXJzZWRcbiAgICAgICAgLm1hcCgoYSkgPT4gKHR5cGVvZiBhID09PSBcInN0cmluZ1wiID8gYSA6IEpTT04uc3RyaW5naWZ5KGEpKSlcbiAgICAgICAgLmpvaW4oXCIgXCIpO1xuICAgICAgY29uc3QgbWV0YSA9IHBhcnNlZC5sZW5ndGggPT09IDEgPyBwYXJzZWRbMF0gOiBwYXJzZWQ7XG4gICAgICBzd2l0Y2ggKGxldmVsKSB7XG4gICAgICAgIGNhc2UgXCJsb2dcIjpcbiAgICAgICAgY2FzZSBcImluZm9cIjpcbiAgICAgICAgICBsb2dnZXIuaW5mbyhtc2csIG1ldGEpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwid2FyblwiOlxuICAgICAgICAgIGxvZ2dlci53YXJuKG1zZywgbWV0YSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJlcnJvclwiOlxuICAgICAgICAgIGxvZ2dlci5lcnJvcihtc2csIG1ldGEpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiZGVidWdcIjpcbiAgICAgICAgICBsb2dnZXIuZGVidWcobXNnLCBtZXRhKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInRyYWNlXCI6XG4gICAgICAgICAgbG9nZ2VyLnRyYWNlKG1zZywgbWV0YSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJkaXJcIjpcbiAgICAgICAgY2FzZSBcImRpcnhtbFwiOlxuICAgICAgICBjYXNlIFwidGFibGVcIjpcbiAgICAgICAgICBsb2dnZXIuZGVidWcobXNnLCBtZXRhKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcImdyb3VwXCI6XG4gICAgICAgIGNhc2UgXCJncm91cENvbGxhcHNlZFwiOlxuICAgICAgICAgIGxvZ2dlci5kZWJ1ZyhgW2dyb3VwXSAke21zZ31gLCBtZXRhKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcImdyb3VwRW5kXCI6XG4gICAgICAgICAgbG9nZ2VyLmRlYnVnKFwiW2dyb3VwRW5kXVwiLCB1bmRlZmluZWQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwidGltZVwiOlxuICAgICAgICBjYXNlIFwidGltZUVuZFwiOlxuICAgICAgICBjYXNlIFwidGltZUxvZ1wiOlxuICAgICAgICAgIGxvZ2dlci5kZWJ1ZyhgWyR7bGV2ZWx9XSAke21zZ31gLCBtZXRhKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcImFzc2VydFwiOlxuICAgICAgICAgIGlmICghcGFyc2VkWzBdKSBsb2dnZXIuZXJyb3IoYEFzc2VydGlvbiBmYWlsZWQ6ICR7bXNnfWAsIG1ldGEpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiY291bnRcIjpcbiAgICAgICAgY2FzZSBcImNvdW50UmVzZXRcIjpcbiAgICAgICAgICBsb2dnZXIuZGVidWcoYFske2xldmVsfV0gJHttc2d9YCwgbWV0YSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJjbGVhclwiOlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGxvZ2dlci5pbmZvKG1zZywgbWV0YSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBhd2FpdCBqYWlsLnNldChcIl9fZGlzcGF0Y2hcIiwgZGlzcGF0Y2gpO1xuXG4gICAgY29udGV4dC5ldmFsU3luYyhgXG4gICAgICBmdW5jdGlvbiBfX3NlcigpIHtcbiAgICAgICAgdmFyIG91dCA9IFtdO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHZhciBhID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgIHRyeSB7IG91dC5wdXNoKHR5cGVvZiBhID09PSAnb2JqZWN0JyA/IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoYSkpIDogYSk7IH1cbiAgICAgICAgICBjYXRjaCAoZSkgeyBvdXQucHVzaChTdHJpbmcoYSkpOyB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG91dCk7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBfX2NhbGwobGV2ZWwpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIF9fZGlzcGF0Y2guYXBwbHlTeW5jKHVuZGVmaW5lZCwgW2xldmVsLCBfX3Nlci5hcHBseShudWxsLCBhcmd1bWVudHMpXSk7XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBnbG9iYWxUaGlzLmNvbnNvbGUgPSB7XG4gICAgICAgIGxvZzogX19jYWxsKCdsb2cnKSxcbiAgICAgICAgaW5mbzogX19jYWxsKCdpbmZvJyksXG4gICAgICAgIHdhcm46IF9fY2FsbCgnd2FybicpLFxuICAgICAgICBlcnJvcjogX19jYWxsKCdlcnJvcicpLFxuICAgICAgICBkZWJ1ZzogX19jYWxsKCdkZWJ1ZycpLFxuICAgICAgICB0cmFjZTogX19jYWxsKCd0cmFjZScpLFxuICAgICAgICBkaXI6IF9fY2FsbCgnZGlyJyksXG4gICAgICAgIGRpcnhtbDogX19jYWxsKCdkaXJ4bWwnKSxcbiAgICAgICAgdGFibGU6IF9fY2FsbCgndGFibGUnKSxcbiAgICAgICAgZ3JvdXA6IF9fY2FsbCgnZ3JvdXAnKSxcbiAgICAgICAgZ3JvdXBDb2xsYXBzZWQ6IF9fY2FsbCgnZ3JvdXBDb2xsYXBzZWQnKSxcbiAgICAgICAgZ3JvdXBFbmQ6IF9fY2FsbCgnZ3JvdXBFbmQnKSxcbiAgICAgICAgdGltZTogX19jYWxsKCd0aW1lJyksXG4gICAgICAgIHRpbWVFbmQ6IF9fY2FsbCgndGltZUVuZCcpLFxuICAgICAgICB0aW1lTG9nOiBfX2NhbGwoJ3RpbWVMb2cnKSxcbiAgICAgICAgYXNzZXJ0OiBfX2NhbGwoJ2Fzc2VydCcpLFxuICAgICAgICBjb3VudDogX19jYWxsKCdjb3VudCcpLFxuICAgICAgICBjb3VudFJlc2V0OiBfX2NhbGwoJ2NvdW50UmVzZXQnKSxcbiAgICAgICAgY2xlYXI6IF9fY2FsbCgnY2xlYXInKVxuICAgICAgfTtcbiAgICBgKTtcblxuICAgIGRpc3BhdGNoLnJlbGVhc2UoKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Executor for `core.flow.log` nodes.
3
+ *
4
+ * Reads the `value` input port, logs it through `context.log()`, and returns
5
+ * it unchanged on the `logged` output port.
6
+ */
7
+ export class LogGraphNodeExecutor {
8
+ async execute(input, context) {
9
+ const value = input["value"];
10
+ await context.log("Log node", { value });
11
+ return { logged: value };
12
+ }
13
+ }
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9nR3JhcGhOb2RlRXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZ3JhcGgvZW5naW5lL2V4ZWN1dGlvbi9Mb2dHcmFwaE5vZGVFeGVjdXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFXQTs7Ozs7R0FLRztBQUNILE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsS0FBSyxDQUFDLE9BQU8sQ0FDWCxLQUEyQixFQUMzQixPQUE4QjtRQUU5QixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0IsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDekMsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUMzQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgaW50ZWdyYXRpb25zL2dyYXBoL2V4ZWN1dGlvbi9Mb2dHcmFwaE5vZGVFeGVjdXRvclxuICogQHN1bW1hcnkgRXhlY3V0b3IgZm9yIHRoZSBMb2cgZmxvdy1jb250cm9sIG5vZGUuXG4gKiBAZGVzY3JpcHRpb24gTG9ncyB0aGUgaW5wdXQgdmFsdWUgdmlhIHRoZSBleGVjdXRpb24gY29udGV4dCdzIGxvZ2dlciBhbmRcbiAqIGZvcndhcmRzIGl0IHVuY2hhbmdlZCBvbiB0aGUgYGxvZ2dlZGAgb3V0cHV0IHBvcnQuIFVzZWZ1bCBmb3IgZGVidWdnaW5nLFxuICogYXVkaXQgdHJhaWxzLCBhbmQgZGlzY2FyZC9zaWRlLWVmZmVjdCBicmFuY2hlcyBpbiBhIHdvcmtmbG93LlxuICovXG5pbXBvcnQgdHlwZSB7IEdyYXBoTm9kZUV4ZWN1dG9yIH0gZnJvbSBcIi4vR3JhcGhOb2RlRXhlY3V0b3JcIjtcbmltcG9ydCB0eXBlIHsgR3JhcGhFeGVjdXRpb25Db250ZXh0IH0gZnJvbSBcIi4vR3JhcGhFeGVjdXRpb25Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IEdyYXBoRXhlY3V0aW9uVmFsdWVzIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5cbi8qKlxuICogRXhlY3V0b3IgZm9yIGBjb3JlLmZsb3cubG9nYCBub2Rlcy5cbiAqXG4gKiBSZWFkcyB0aGUgYHZhbHVlYCBpbnB1dCBwb3J0LCBsb2dzIGl0IHRocm91Z2ggYGNvbnRleHQubG9nKClgLCBhbmQgcmV0dXJuc1xuICogaXQgdW5jaGFuZ2VkIG9uIHRoZSBgbG9nZ2VkYCBvdXRwdXQgcG9ydC5cbiAqL1xuZXhwb3J0IGNsYXNzIExvZ0dyYXBoTm9kZUV4ZWN1dG9yIGltcGxlbWVudHMgR3JhcGhOb2RlRXhlY3V0b3Ige1xuICBhc3luYyBleGVjdXRlKFxuICAgIGlucHV0OiBHcmFwaEV4ZWN1dGlvblZhbHVlcyxcbiAgICBjb250ZXh0OiBHcmFwaEV4ZWN1dGlvbkNvbnRleHRcbiAgKTogUHJvbWlzZTxHcmFwaEV4ZWN1dGlvblZhbHVlcz4ge1xuICAgIGNvbnN0IHZhbHVlID0gaW5wdXRbXCJ2YWx1ZVwiXTtcbiAgICBhd2FpdCBjb250ZXh0LmxvZyhcIkxvZyBub2RlXCIsIHsgdmFsdWUgfSk7XG4gICAgcmV0dXJuIHsgbG9nZ2VkOiB2YWx1ZSB9O1xuICB9XG59XG4iXX0=
@@ -2,18 +2,23 @@ import { GraphExecutionError } from "./../errors/GraphExecutionError.js";
2
2
  import { ConditionExpressionEvaluator } from "./../loops/ConditionExpressionEvaluator.js";
3
3
  /**
4
4
  * Reads the Switch metadata from the node definition's graph metadata.
5
+ *
6
+ * The metadata is stored under `graph.metadata.switch` (the location used by
7
+ * statically-declared `@node` workflows). When absent, falls back to an empty
8
+ * default with the `default` port enabled.
5
9
  */
6
10
  function readSwitchMetadata(context) {
7
11
  const meta = context.node.graph?.metadata;
8
12
  if (!meta)
9
- return { cases: [], defaultPort: "default" };
13
+ return { cases: [], defaultPort: "default", hasDefault: true };
10
14
  const switchMeta = meta["switch"];
11
15
  if (!switchMeta || !Array.isArray(switchMeta.cases)) {
12
- return { cases: [], defaultPort: "default" };
16
+ return { cases: [], defaultPort: "default", hasDefault: true };
13
17
  }
14
18
  return {
15
19
  cases: switchMeta.cases,
16
20
  defaultPort: switchMeta.defaultPort ?? "default",
21
+ hasDefault: switchMeta.hasDefault !== false,
17
22
  };
18
23
  }
19
24
  /**
@@ -38,8 +43,9 @@ function isConditionExpression(cond) {
38
43
  * Executor for `core.flow.switch` nodes.
39
44
  *
40
45
  * Evaluates each case's condition in order and routes the input to the
41
- * first matching case's output port. When no case matches, routes to the
42
- * `default` output port.
46
+ * first matching case's output port. When no case matches:
47
+ * - If `hasDefault` is `true` (or omitted), routes to the `default` output port.
48
+ * - If `hasDefault` is `false`, returns an empty output (the input is dropped).
43
49
  *
44
50
  * Condition evaluation:
45
51
  * - `ConditionExpression` — evaluated via {@link ConditionExpressionEvaluator}.
@@ -61,6 +67,10 @@ export class SwitchGraphNodeExecutor {
61
67
  return { [switchCase.outputPort]: inputValue };
62
68
  }
63
69
  }
70
+ // No case matched — route to the default port when it is enabled.
71
+ if (meta.hasDefault === false) {
72
+ return {};
73
+ }
64
74
  const defaultPort = meta.defaultPort ?? "default";
65
75
  return { [defaultPort]: inputValue };
66
76
  }
@@ -87,12 +97,19 @@ export class SwitchGraphNodeExecutor {
87
97
  await context.log(`Evaluating code condition`, {
88
98
  language: condition.language ?? "javascript",
89
99
  });
100
+ const md = context.metadata;
90
101
  const result = await evaluator.evaluate({
91
102
  code: condition.code,
92
103
  language: condition.language,
93
104
  input,
105
+ vars: md?.vars ?? undefined,
106
+ item: md?.item,
107
+ index: md?.index,
108
+ nodes: md?.nodes ??
109
+ undefined,
110
+ logger: context.logger,
94
111
  });
95
112
  return !!result;
96
113
  }
97
114
  }
98
- //# sourceMappingURL=SwitchGraphNodeExecutor.js.map
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3dpdGNoR3JhcGhOb2RlRXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZ3JhcGgvZW5naW5lL2V4ZWN1dGlvbi9Td2l0Y2hHcmFwaE5vZGVFeGVjdXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFrQkEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLDJDQUFzQztBQUNwRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsbURBQThDO0FBR3JGOzs7Ozs7R0FNRztBQUNILFNBQVMsa0JBQWtCLENBQ3pCLE9BQThCO0lBRTlCLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFFBRXBCLENBQUM7SUFDZCxJQUFJLENBQUMsSUFBSTtRQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzFFLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQW1DLENBQUM7SUFDcEUsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDcEQsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDakUsQ0FBQztJQUNELE9BQU87UUFDTCxLQUFLLEVBQUUsVUFBVSxDQUFDLEtBQUs7UUFDdkIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxXQUFXLElBQUksU0FBUztRQUNoRCxVQUFVLEVBQUUsVUFBVSxDQUFDLFVBQVUsS0FBSyxLQUFLO0tBQzVDLENBQUM7QUFDSixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLGVBQWUsQ0FBQyxJQUF5QjtJQUNoRCxPQUFPLENBQ0wsT0FBTyxJQUFJLEtBQUssUUFBUTtRQUN4QixJQUFJLEtBQUssSUFBSTtRQUNiLE1BQU0sSUFBSSxJQUFJO1FBQ2QsSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLENBQ3JCLENBQUM7QUFDSixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLHFCQUFxQixDQUM1QixJQUF5QjtJQUV6QixPQUFPLENBQ0wsT0FBTyxJQUFJLEtBQUssUUFBUTtRQUN4QixJQUFJLEtBQUssSUFBSTtRQUNiLElBQUksSUFBSSxJQUFJO1FBQ1osT0FBTyxJQUFJLENBQUMsRUFBRSxLQUFLLFFBQVEsQ0FDNUIsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0gsTUFBTSxPQUFPLHVCQUF1QjtJQUdsQyxZQUNtQixNQUF3RDtRQUF4RCxXQUFNLEdBQU4sTUFBTSxDQUFrRDtRQUgxRCx3QkFBbUIsR0FBRyxJQUFJLDRCQUE0QixFQUFFLENBQUM7SUFJdkUsQ0FBQztJQUVKLEtBQUssQ0FBQyxPQUFPLENBQ1gsS0FBMkIsRUFDM0IsT0FBOEI7UUFFOUIsTUFBTSxJQUFJLEdBQUcsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekMsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssQ0FBQztRQUUzQyxLQUFLLE1BQU0sVUFBVSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNwQyxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FDMUMsVUFBVSxDQUFDLFNBQVMsRUFDcEIsVUFBVSxFQUNWLEtBQUssRUFDTCxPQUFPLENBQ1IsQ0FBQztZQUNGLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ1osT0FBTyxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDO1lBQ2pELENBQUM7UUFDSCxDQUFDO1FBRUQsa0VBQWtFO1FBQ2xFLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUM5QixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFDRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxJQUFJLFNBQVMsQ0FBQztRQUNsRCxPQUFPLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7O09BRUc7SUFDSyxLQUFLLENBQUMsaUJBQWlCLENBQzdCLFNBQThCLEVBQzlCLFVBQW1CLEVBQ25CLFNBQStCLEVBQy9CLE9BQThCO1FBRTlCLElBQUksZUFBZSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDL0IsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNuRSxDQUFDO1FBRUQsSUFBSSxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ3JDLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDbEUsQ0FBQztRQUVELE1BQU0sSUFBSSxtQkFBbUIsQ0FDM0IsdUdBQXVHLEVBQ3ZHLGdDQUFnQyxFQUNoQyxFQUFFLFNBQVMsRUFBRSxDQUNkLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSyxLQUFLLENBQUMscUJBQXFCLENBQ2pDLFNBQXdCLEVBQ3hCLEtBQTJCLEVBQzNCLE9BQThCO1FBRTlCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsb0JBQW9CLENBQUM7UUFDcEQsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2YsTUFBTSxJQUFJLG1CQUFtQixDQUMzQixvSEFBb0gsRUFDcEgsbUNBQW1DLEVBQ25DLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FDekIsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsMkJBQTJCLEVBQUU7WUFDN0MsUUFBUSxFQUFFLFNBQVMsQ0FBQyxRQUFRLElBQUksWUFBWTtTQUM3QyxDQUFDLENBQUM7UUFFSCxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsUUFBK0MsQ0FBQztRQUVuRSxNQUFNLE1BQU0sR0FBRyxNQUFNLFNBQVMsQ0FBQyxRQUFRLENBQUM7WUFDdEMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJO1lBQ3BCLFFBQVEsRUFBRSxTQUFTLENBQUMsUUFBUTtZQUM1QixLQUFLO1lBQ0wsSUFBSSxFQUFHLEVBQUUsRUFBRSxJQUE0QyxJQUFJLFNBQVM7WUFDcEUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJO1lBQ2QsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUEyQjtZQUN0QyxLQUFLLEVBQ0YsRUFBRSxFQUFFLEtBQTZEO2dCQUNsRSxTQUFTO1lBQ1gsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUVIO1NBQ2QsQ0FBQyxDQUFDO1FBRUgsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ2xCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBpbnRlZ3JhdGlvbnMvZ3JhcGgvZXhlY3V0aW9uL1N3aXRjaEdyYXBoTm9kZUV4ZWN1dG9yXG4gKiBAc3VtbWFyeSBFeGVjdXRvciBmb3IgdGhlIFN3aXRjaCBmbG93LWNvbnRyb2wgbm9kZSAoREVDQUYtMzIgwqcyMi4yLjIpLlxuICogQGRlc2NyaXB0aW9uIEV2YWx1YXRlcyBlYWNoIGNhc2UncyBjb25kaXRpb24gYWdhaW5zdCB0aGUgbm9kZSdzIGlucHV0IGFuZFxuICogcm91dGVzIHRoZSBpbnB1dCB0byB0aGUgZmlyc3QgbWF0Y2hpbmcgY2FzZSdzIG91dHB1dCBwb3J0LiBGYWxscyBiYWNrIHRvXG4gKiB0aGUgYGRlZmF1bHRgIG91dHB1dCB3aGVuIG5vIGNhc2UgbWF0Y2hlcy4gU3VwcG9ydHMgYm90aFxuICoge0BsaW5rIENvbmRpdGlvbkV4cHJlc3Npb259IChncmFwaGljYWwgbW9kZSkgYW5kIHtAbGluayBDb2RlQ29uZGl0aW9ufVxuICogKGNvZGUgbW9kZSB2aWEgdGhlIHBsdWdnYWJsZSB7QGxpbmsgQ29kZVNhbmRib3hFdmFsdWF0b3J9KS5cbiAqL1xuaW1wb3J0IHR5cGUgeyBHcmFwaE5vZGVFeGVjdXRvciB9IGZyb20gXCIuL0dyYXBoTm9kZUV4ZWN1dG9yXCI7XG5pbXBvcnQgdHlwZSB7IEdyYXBoRXhlY3V0aW9uQ29udGV4dCB9IGZyb20gXCIuL0dyYXBoRXhlY3V0aW9uQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBHcmFwaEV4ZWN1dGlvblZhbHVlcyB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHR5cGUge1xuICBTd2l0Y2hDYXNlQ29uZGl0aW9uLFxuICBTd2l0Y2hOb2RlTWV0YWRhdGEsXG4gIENvbmRpdGlvbkV4cHJlc3Npb24sXG4gIENvZGVDb25kaXRpb24sXG59IGZyb20gXCIuLi8uLi9zaGFyZWQvdHlwZXNcIjtcbmltcG9ydCB7IEdyYXBoRXhlY3V0aW9uRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3JzL0dyYXBoRXhlY3V0aW9uRXJyb3JcIjtcbmltcG9ydCB7IENvbmRpdGlvbkV4cHJlc3Npb25FdmFsdWF0b3IgfSBmcm9tIFwiLi4vbG9vcHMvQ29uZGl0aW9uRXhwcmVzc2lvbkV2YWx1YXRvclwiO1xuaW1wb3J0IHR5cGUgeyBDb2RlU2FuZGJveEV2YWx1YXRvciB9IGZyb20gXCIuL0NvZGVTYW5kYm94RXZhbHVhdG9yXCI7XG5cbi8qKlxuICogUmVhZHMgdGhlIFN3aXRjaCBtZXRhZGF0YSBmcm9tIHRoZSBub2RlIGRlZmluaXRpb24ncyBncmFwaCBtZXRhZGF0YS5cbiAqXG4gKiBUaGUgbWV0YWRhdGEgaXMgc3RvcmVkIHVuZGVyIGBncmFwaC5tZXRhZGF0YS5zd2l0Y2hgICh0aGUgbG9jYXRpb24gdXNlZCBieVxuICogc3RhdGljYWxseS1kZWNsYXJlZCBgQG5vZGVgIHdvcmtmbG93cykuIFdoZW4gYWJzZW50LCBmYWxscyBiYWNrIHRvIGFuIGVtcHR5XG4gKiBkZWZhdWx0IHdpdGggdGhlIGBkZWZhdWx0YCBwb3J0IGVuYWJsZWQuXG4gKi9cbmZ1bmN0aW9uIHJlYWRTd2l0Y2hNZXRhZGF0YShcbiAgY29udGV4dDogR3JhcGhFeGVjdXRpb25Db250ZXh0XG4pOiBTd2l0Y2hOb2RlTWV0YWRhdGEge1xuICBjb25zdCBtZXRhID0gY29udGV4dC5ub2RlLmdyYXBoPy5tZXRhZGF0YSBhc1xuICAgIHwgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICB8IHVuZGVmaW5lZDtcbiAgaWYgKCFtZXRhKSByZXR1cm4geyBjYXNlczogW10sIGRlZmF1bHRQb3J0OiBcImRlZmF1bHRcIiwgaGFzRGVmYXVsdDogdHJ1ZSB9O1xuICBjb25zdCBzd2l0Y2hNZXRhID0gbWV0YVtcInN3aXRjaFwiXSBhcyBTd2l0Y2hOb2RlTWV0YWRhdGEgfCB1bmRlZmluZWQ7XG4gIGlmICghc3dpdGNoTWV0YSB8fCAhQXJyYXkuaXNBcnJheShzd2l0Y2hNZXRhLmNhc2VzKSkge1xuICAgIHJldHVybiB7IGNhc2VzOiBbXSwgZGVmYXVsdFBvcnQ6IFwiZGVmYXVsdFwiLCBoYXNEZWZhdWx0OiB0cnVlIH07XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBjYXNlczogc3dpdGNoTWV0YS5jYXNlcyxcbiAgICBkZWZhdWx0UG9ydDogc3dpdGNoTWV0YS5kZWZhdWx0UG9ydCA/PyBcImRlZmF1bHRcIixcbiAgICBoYXNEZWZhdWx0OiBzd2l0Y2hNZXRhLmhhc0RlZmF1bHQgIT09IGZhbHNlLFxuICB9O1xufVxuXG4vKipcbiAqIERldGVjdHMgd2hldGhlciBhIGNvbmRpdGlvbiBpcyBhIGBDb2RlQ29uZGl0aW9uYCAoaGFzIGB0eXBlOiBcImNvZGVcImApLlxuICovXG5mdW5jdGlvbiBpc0NvZGVDb25kaXRpb24oY29uZDogU3dpdGNoQ2FzZUNvbmRpdGlvbik6IGNvbmQgaXMgQ29kZUNvbmRpdGlvbiB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIGNvbmQgPT09IFwib2JqZWN0XCIgJiZcbiAgICBjb25kICE9PSBudWxsICYmXG4gICAgXCJ0eXBlXCIgaW4gY29uZCAmJlxuICAgIGNvbmQudHlwZSA9PT0gXCJjb2RlXCJcbiAgKTtcbn1cblxuLyoqXG4gKiBEZXRlY3RzIHdoZXRoZXIgYSBjb25kaXRpb24gaXMgYSBgQ29uZGl0aW9uRXhwcmVzc2lvbmAgKGhhcyBgb3BgIGZpZWxkKS5cbiAqL1xuZnVuY3Rpb24gaXNDb25kaXRpb25FeHByZXNzaW9uKFxuICBjb25kOiBTd2l0Y2hDYXNlQ29uZGl0aW9uXG4pOiBjb25kIGlzIENvbmRpdGlvbkV4cHJlc3Npb24ge1xuICByZXR1cm4gKFxuICAgIHR5cGVvZiBjb25kID09PSBcIm9iamVjdFwiICYmXG4gICAgY29uZCAhPT0gbnVsbCAmJlxuICAgIFwib3BcIiBpbiBjb25kICYmXG4gICAgdHlwZW9mIGNvbmQub3AgPT09IFwic3RyaW5nXCJcbiAgKTtcbn1cblxuLyoqXG4gKiBFeGVjdXRvciBmb3IgYGNvcmUuZmxvdy5zd2l0Y2hgIG5vZGVzLlxuICpcbiAqIEV2YWx1YXRlcyBlYWNoIGNhc2UncyBjb25kaXRpb24gaW4gb3JkZXIgYW5kIHJvdXRlcyB0aGUgaW5wdXQgdG8gdGhlXG4gKiBmaXJzdCBtYXRjaGluZyBjYXNlJ3Mgb3V0cHV0IHBvcnQuIFdoZW4gbm8gY2FzZSBtYXRjaGVzOlxuICogLSBJZiBgaGFzRGVmYXVsdGAgaXMgYHRydWVgIChvciBvbWl0dGVkKSwgcm91dGVzIHRvIHRoZSBgZGVmYXVsdGAgb3V0cHV0IHBvcnQuXG4gKiAtIElmIGBoYXNEZWZhdWx0YCBpcyBgZmFsc2VgLCByZXR1cm5zIGFuIGVtcHR5IG91dHB1dCAodGhlIGlucHV0IGlzIGRyb3BwZWQpLlxuICpcbiAqIENvbmRpdGlvbiBldmFsdWF0aW9uOlxuICogLSBgQ29uZGl0aW9uRXhwcmVzc2lvbmAg4oCUIGV2YWx1YXRlZCB2aWEge0BsaW5rIENvbmRpdGlvbkV4cHJlc3Npb25FdmFsdWF0b3J9LlxuICogLSBgQ29kZUNvbmRpdGlvbmAg4oCUIGV2YWx1YXRlZCB2aWEgdGhlIHBsdWdnYWJsZSB7QGxpbmsgQ29kZVNhbmRib3hFdmFsdWF0b3J9XG4gKiAgIGZyb20gdGhlIGVuZ2luZSdzIGNvbmZpZy4gVGhyb3dzIGBHUkFQSF9DT0RFX1NBTkRCT1hfTk9UX0NPTkZJR1VSRURgXG4gKiAgIHdoZW4gbm8gZXZhbHVhdG9yIGlzIHJlZ2lzdGVyZWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBTd2l0Y2hHcmFwaE5vZGVFeGVjdXRvciBpbXBsZW1lbnRzIEdyYXBoTm9kZUV4ZWN1dG9yIHtcbiAgcHJpdmF0ZSByZWFkb25seSBleHByZXNzaW9uRXZhbHVhdG9yID0gbmV3IENvbmRpdGlvbkV4cHJlc3Npb25FdmFsdWF0b3IoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVuZ2luZT86IHsgY29kZVNhbmRib3hFdmFsdWF0b3I/OiBDb2RlU2FuZGJveEV2YWx1YXRvciB9XG4gICkge31cblxuICBhc3luYyBleGVjdXRlKFxuICAgIGlucHV0OiBHcmFwaEV4ZWN1dGlvblZhbHVlcyxcbiAgICBjb250ZXh0OiBHcmFwaEV4ZWN1dGlvbkNvbnRleHRcbiAgKTogUHJvbWlzZTxHcmFwaEV4ZWN1dGlvblZhbHVlcz4ge1xuICAgIGNvbnN0IG1ldGEgPSByZWFkU3dpdGNoTWV0YWRhdGEoY29udGV4dCk7XG4gICAgY29uc3QgaW5wdXRWYWx1ZSA9IGlucHV0W1widmFsdWVcIl0gPz8gaW5wdXQ7XG5cbiAgICBmb3IgKGNvbnN0IHN3aXRjaENhc2Ugb2YgbWV0YS5jYXNlcykge1xuICAgICAgY29uc3QgbWF0Y2hlcyA9IGF3YWl0IHRoaXMuZXZhbHVhdGVDb25kaXRpb24oXG4gICAgICAgIHN3aXRjaENhc2UuY29uZGl0aW9uLFxuICAgICAgICBpbnB1dFZhbHVlLFxuICAgICAgICBpbnB1dCxcbiAgICAgICAgY29udGV4dFxuICAgICAgKTtcbiAgICAgIGlmIChtYXRjaGVzKSB7XG4gICAgICAgIHJldHVybiB7IFtzd2l0Y2hDYXNlLm91dHB1dFBvcnRdOiBpbnB1dFZhbHVlIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gTm8gY2FzZSBtYXRjaGVkIOKAlCByb3V0ZSB0byB0aGUgZGVmYXVsdCBwb3J0IHdoZW4gaXQgaXMgZW5hYmxlZC5cbiAgICBpZiAobWV0YS5oYXNEZWZhdWx0ID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICBjb25zdCBkZWZhdWx0UG9ydCA9IG1ldGEuZGVmYXVsdFBvcnQgPz8gXCJkZWZhdWx0XCI7XG4gICAgcmV0dXJuIHsgW2RlZmF1bHRQb3J0XTogaW5wdXRWYWx1ZSB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEV2YWx1YXRlcyBhIHNpbmdsZSBzd2l0Y2ggY2FzZSBjb25kaXRpb24uXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGV2YWx1YXRlQ29uZGl0aW9uKFxuICAgIGNvbmRpdGlvbjogU3dpdGNoQ2FzZUNvbmRpdGlvbixcbiAgICBpbnB1dFZhbHVlOiB1bmtub3duLFxuICAgIGZ1bGxJbnB1dDogR3JhcGhFeGVjdXRpb25WYWx1ZXMsXG4gICAgY29udGV4dDogR3JhcGhFeGVjdXRpb25Db250ZXh0XG4gICk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmIChpc0NvZGVDb25kaXRpb24oY29uZGl0aW9uKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZXZhbHVhdGVDb2RlQ29uZGl0aW9uKGNvbmRpdGlvbiwgZnVsbElucHV0LCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICBpZiAoaXNDb25kaXRpb25FeHByZXNzaW9uKGNvbmRpdGlvbikpIHtcbiAgICAgIHJldHVybiB0aGlzLmV4cHJlc3Npb25FdmFsdWF0b3IuZXZhbHVhdGUoY29uZGl0aW9uLCBpbnB1dFZhbHVlKTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgR3JhcGhFeGVjdXRpb25FcnJvcihcbiAgICAgIFwiVW5rbm93biBzd2l0Y2ggY2FzZSBjb25kaXRpb24gdHlwZSDigJQgbXVzdCBiZSBDb25kaXRpb25FeHByZXNzaW9uIChvcCkgb3IgQ29kZUNvbmRpdGlvbiAodHlwZTogJ2NvZGUnKVwiLFxuICAgICAgXCJHUkFQSF9VTktOT1dOX1NXSVRDSF9DT05ESVRJT05cIixcbiAgICAgIHsgY29uZGl0aW9uIH1cbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEV2YWx1YXRlcyBhIGNvZGUgY29uZGl0aW9uIHZpYSB0aGUgcGx1Z2dhYmxlIHNhbmRib3ggZXZhbHVhdG9yLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBldmFsdWF0ZUNvZGVDb25kaXRpb24oXG4gICAgY29uZGl0aW9uOiBDb2RlQ29uZGl0aW9uLFxuICAgIGlucHV0OiBHcmFwaEV4ZWN1dGlvblZhbHVlcyxcbiAgICBjb250ZXh0OiBHcmFwaEV4ZWN1dGlvbkNvbnRleHRcbiAgKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgZXZhbHVhdG9yID0gdGhpcy5lbmdpbmU/LmNvZGVTYW5kYm94RXZhbHVhdG9yO1xuICAgIGlmICghZXZhbHVhdG9yKSB7XG4gICAgICB0aHJvdyBuZXcgR3JhcGhFeGVjdXRpb25FcnJvcihcbiAgICAgICAgXCJDb2RlIGNvbmRpdGlvbnMgcmVxdWlyZSBhIENvZGVTYW5kYm94RXZhbHVhdG9yIHRvIGJlIHJlZ2lzdGVyZWQgaW4gR3JhcGhFeGVjdXRpb25FbmdpbmVDb25maWcuY29kZVNhbmRib3hFdmFsdWF0b3JcIixcbiAgICAgICAgXCJHUkFQSF9DT0RFX1NBTkRCT1hfTk9UX0NPTkZJR1VSRURcIixcbiAgICAgICAgeyBjb2RlOiBjb25kaXRpb24uY29kZSB9XG4gICAgICApO1xuICAgIH1cblxuICAgIGF3YWl0IGNvbnRleHQubG9nKGBFdmFsdWF0aW5nIGNvZGUgY29uZGl0aW9uYCwge1xuICAgICAgbGFuZ3VhZ2U6IGNvbmRpdGlvbi5sYW5ndWFnZSA/PyBcImphdmFzY3JpcHRcIixcbiAgICB9KTtcblxuICAgIGNvbnN0IG1kID0gY29udGV4dC5tZXRhZGF0YSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGV2YWx1YXRvci5ldmFsdWF0ZSh7XG4gICAgICBjb2RlOiBjb25kaXRpb24uY29kZSxcbiAgICAgIGxhbmd1YWdlOiBjb25kaXRpb24ubGFuZ3VhZ2UsXG4gICAgICBpbnB1dCxcbiAgICAgIHZhcnM6IChtZD8udmFycyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZCkgPz8gdW5kZWZpbmVkLFxuICAgICAgaXRlbTogbWQ/Lml0ZW0sXG4gICAgICBpbmRleDogbWQ/LmluZGV4IGFzIG51bWJlciB8IHVuZGVmaW5lZCxcbiAgICAgIG5vZGVzOlxuICAgICAgICAobWQ/Lm5vZGVzIGFzIFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB8IHVuZGVmaW5lZCkgPz9cbiAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgbG9nZ2VyOiBjb250ZXh0LmxvZ2dlciBhcyB1bmtub3duIGFzXG4gICAgICAgIHwgaW1wb3J0KFwiLi9Db2RlU2FuZGJveEV2YWx1YXRvclwiKS5TYW5kYm94TG9nZ2VyXG4gICAgICAgIHwgdW5kZWZpbmVkLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuICEhcmVzdWx0O1xuICB9XG59XG4iXX0=
@@ -10,4 +10,7 @@ export * from "./GraphExecutionFrame.js";
10
10
  export * from "./GraphExecutionEngine.js";
11
11
  export * from "./CodeSandboxEvaluator.js";
12
12
  export * from "./SwitchGraphNodeExecutor.js";
13
- //# sourceMappingURL=index.js.map
13
+ export * from "./CodeGraphNodeExecutor.js";
14
+ export * from "./LogGraphNodeExecutor.js";
15
+ export * from "./IsolatedVmCodeSandboxEvaluator.js";
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZ3JhcGgvZW5naW5lL2V4ZWN1dGlvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBQ0gsMkNBQXdDO0FBQ3hDLHVDQUFvQztBQUNwQywwQ0FBdUM7QUFDdkMseUNBQXNDO0FBQ3RDLDBDQUF1QztBQUN2QywwQ0FBdUM7QUFDdkMsNkNBQTBDO0FBQzFDLDJDQUF3QztBQUN4QywwQ0FBdUM7QUFDdkMsb0RBQWlEIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGludGVncmF0aW9ucy9ncmFwaC9leGVjdXRpb25cbiAqIEBzdW1tYXJ5IEdyYXBoIGV4ZWN1dGlvbiBjb250ZXh0IGFuZCBleGVjdXRvciBpbnRlcmZhY2UuXG4gKiBAZGVzY3JpcHRpb24gUmUtZXhwb3J0cyB0aGUgZ3JhcGggZXhlY3V0aW9uIGNvbnRleHQgYW5kIG5vZGUgZXhlY3V0b3IgaW50ZXJmYWNlLlxuICovXG5leHBvcnQgKiBmcm9tIFwiLi9HcmFwaEV4ZWN1dGlvbkNvbnRleHRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0dyYXBoTm9kZUV4ZWN1dG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9HcmFwaEV4ZWN1dGlvblJlc3VsdFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vR3JhcGhFeGVjdXRpb25GcmFtZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vR3JhcGhFeGVjdXRpb25FbmdpbmVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0NvZGVTYW5kYm94RXZhbHVhdG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9Td2l0Y2hHcmFwaE5vZGVFeGVjdXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vQ29kZUdyYXBoTm9kZUV4ZWN1dG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9Mb2dHcmFwaE5vZGVFeGVjdXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vSXNvbGF0ZWRWbUNvZGVTYW5kYm94RXZhbHVhdG9yXCI7XG4iXX0=