nesoi 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (348) hide show
  1. package/lib/adapters/postgres/src/migrator/database.d.ts +37 -0
  2. package/lib/adapters/postgres/src/migrator/database.js +88 -0
  3. package/lib/adapters/postgres/src/migrator/index.d.ts +1 -0
  4. package/lib/adapters/postgres/src/migrator/index.js +5 -0
  5. package/lib/adapters/postgres/src/migrator/migration.d.ts +73 -0
  6. package/lib/adapters/postgres/src/migrator/migration.js +351 -0
  7. package/lib/adapters/postgres/src/migrator/migrator.d.ts +21 -0
  8. package/lib/adapters/postgres/src/migrator/migrator.js +73 -0
  9. package/lib/adapters/postgres/src/migrator/runner.d.ts +61 -0
  10. package/lib/adapters/postgres/src/migrator/runner.js +202 -0
  11. package/lib/adapters/postgres/src/postgres.bucket_adapter.d.ts +45 -0
  12. package/lib/adapters/postgres/src/postgres.bucket_adapter.js +278 -0
  13. package/lib/adapters/postgres/src/postgres.cli.d.ts +46 -0
  14. package/lib/adapters/postgres/src/postgres.cli.js +124 -0
  15. package/lib/adapters/postgres/src/postgres.nql.d.ts +12 -0
  16. package/lib/adapters/postgres/src/postgres.nql.js +69 -0
  17. package/lib/adapters/postgres/test/postgres.bucket_adapter.test.d.ts +1 -0
  18. package/lib/adapters/postgres/test/postgres.bucket_adapter.test.js +173 -0
  19. package/lib/adapters/postgres/test/postgres.bucket_query.test.d.ts +0 -0
  20. package/lib/adapters/postgres/test/postgres.bucket_query.test.js +136 -0
  21. package/lib/compiler/apps/monolyth/monolyth_compiler.d.ts +21 -0
  22. package/lib/compiler/apps/monolyth/monolyth_compiler.js +95 -0
  23. package/lib/compiler/apps/monolyth/stages/1_mkdir_stage.d.ts +12 -0
  24. package/lib/compiler/apps/monolyth/stages/1_mkdir_stage.js +80 -0
  25. package/lib/compiler/apps/monolyth/stages/2_build_typescript_stage.d.ts +12 -0
  26. package/lib/compiler/apps/monolyth/stages/2_build_typescript_stage.js +128 -0
  27. package/lib/compiler/apps/monolyth/stages/3_copy_types_stage.d.ts +12 -0
  28. package/lib/compiler/apps/monolyth/stages/3_copy_types_stage.js +75 -0
  29. package/lib/compiler/apps/monolyth/stages/4_dump_modules_stage.d.ts +13 -0
  30. package/lib/compiler/apps/monolyth/stages/4_dump_modules_stage.js +130 -0
  31. package/lib/compiler/apps/monolyth/stages/5_dump_cli_stage.d.ts +12 -0
  32. package/lib/compiler/apps/monolyth/stages/5_dump_cli_stage.js +65 -0
  33. package/lib/compiler/apps/monolyth/stages/6_dump_package_json_stage.d.ts +12 -0
  34. package/lib/compiler/apps/monolyth/stages/6_dump_package_json_stage.js +74 -0
  35. package/lib/compiler/compiler.d.ts +19 -0
  36. package/lib/compiler/compiler.js +83 -0
  37. package/lib/compiler/elements/bucket.element.d.ts +23 -0
  38. package/lib/compiler/elements/bucket.element.js +304 -0
  39. package/lib/compiler/elements/constants.element.d.ts +9 -0
  40. package/lib/compiler/elements/constants.element.js +88 -0
  41. package/lib/compiler/elements/controller.element.d.ts +6 -0
  42. package/lib/compiler/elements/controller.element.js +22 -0
  43. package/lib/compiler/elements/element.d.ts +49 -0
  44. package/lib/compiler/elements/element.js +105 -0
  45. package/lib/compiler/elements/externals.element.d.ts +19 -0
  46. package/lib/compiler/elements/externals.element.js +83 -0
  47. package/lib/compiler/elements/job.element.d.ts +7 -0
  48. package/lib/compiler/elements/job.element.js +62 -0
  49. package/lib/compiler/elements/machine.element.d.ts +10 -0
  50. package/lib/compiler/elements/machine.element.js +98 -0
  51. package/lib/compiler/elements/message.element.d.ts +9 -0
  52. package/lib/compiler/elements/message.element.js +175 -0
  53. package/lib/compiler/elements/queue.element.d.ts +6 -0
  54. package/lib/compiler/elements/queue.element.js +24 -0
  55. package/lib/compiler/elements/resource.element.d.ts +7 -0
  56. package/lib/compiler/elements/resource.element.js +64 -0
  57. package/lib/compiler/error.d.ts +21 -0
  58. package/lib/compiler/error.js +57 -0
  59. package/lib/compiler/helpers/dump_helpers.d.ts +11 -0
  60. package/lib/compiler/helpers/dump_helpers.js +157 -0
  61. package/lib/compiler/helpers/name_helpers.d.ts +20 -0
  62. package/lib/compiler/helpers/name_helpers.js +44 -0
  63. package/lib/compiler/index.d.ts +2 -0
  64. package/lib/compiler/index.js +7 -0
  65. package/lib/compiler/module.d.ts +24 -0
  66. package/lib/compiler/module.js +122 -0
  67. package/lib/compiler/stages/1_scan_stage.d.ts +10 -0
  68. package/lib/compiler/stages/1_scan_stage.js +23 -0
  69. package/lib/compiler/stages/2_treeshake_stage.d.ts +11 -0
  70. package/lib/compiler/stages/2_treeshake_stage.js +24 -0
  71. package/lib/compiler/stages/3_extract_ts_stage.d.ts +10 -0
  72. package/lib/compiler/stages/3_extract_ts_stage.js +71 -0
  73. package/lib/compiler/stages/4_build_schemas_stage.d.ts +10 -0
  74. package/lib/compiler/stages/4_build_schemas_stage.js +25 -0
  75. package/lib/compiler/stages/5_inject_ts_stage.d.ts +10 -0
  76. package/lib/compiler/stages/5_inject_ts_stage.js +22 -0
  77. package/lib/compiler/stages/6_build_elements_stage.d.ts +11 -0
  78. package/lib/compiler/stages/6_build_elements_stage.js +22 -0
  79. package/lib/compiler/stages/7_dump_stage.d.ts +14 -0
  80. package/lib/compiler/stages/7_dump_stage.js +208 -0
  81. package/lib/compiler/stages/8_diagnose_stage.d.ts +16 -0
  82. package/lib/compiler/stages/8_diagnose_stage.js +43 -0
  83. package/lib/compiler/treeshake.d.ts +58 -0
  84. package/lib/compiler/treeshake.js +424 -0
  85. package/lib/compiler/typescript/bridge/extract.d.ts +11 -0
  86. package/lib/compiler/typescript/bridge/extract.js +270 -0
  87. package/lib/compiler/typescript/bridge/inject.d.ts +10 -0
  88. package/lib/compiler/typescript/bridge/inject.js +140 -0
  89. package/lib/compiler/typescript/bridge/organize.d.ts +61 -0
  90. package/lib/compiler/typescript/bridge/organize.js +258 -0
  91. package/lib/compiler/typescript/error.d.ts +88 -0
  92. package/lib/compiler/typescript/error.js +265 -0
  93. package/lib/compiler/typescript/parser.d.ts +48 -0
  94. package/lib/compiler/typescript/parser.js +581 -0
  95. package/lib/compiler/typescript/source.d.ts +12 -0
  96. package/lib/compiler/typescript/source.js +87 -0
  97. package/lib/compiler/typescript/transformers/app_inject.transformer.d.ts +2 -0
  98. package/lib/compiler/typescript/transformers/app_inject.transformer.js +89 -0
  99. package/lib/compiler/typescript/transformers/replace_import.transformer.d.ts +4 -0
  100. package/lib/compiler/typescript/transformers/replace_import.transformer.js +102 -0
  101. package/lib/compiler/typescript/typescript_compiler.d.ts +63 -0
  102. package/lib/compiler/typescript/typescript_compiler.js +602 -0
  103. package/lib/elements/blocks/block.builder.d.ts +29 -0
  104. package/lib/elements/blocks/block.builder.js +87 -0
  105. package/lib/elements/blocks/block.d.ts +15 -0
  106. package/lib/elements/blocks/block.js +37 -0
  107. package/lib/elements/blocks/block.schema.d.ts +23 -0
  108. package/lib/elements/blocks/block.schema.js +15 -0
  109. package/lib/elements/blocks/externals/externals.builder.d.ts +30 -0
  110. package/lib/elements/blocks/externals/externals.builder.js +37 -0
  111. package/lib/elements/blocks/externals/externals.schema.d.ts +11 -0
  112. package/lib/elements/blocks/externals/externals.schema.js +19 -0
  113. package/lib/elements/blocks/job/internal/machine_job.builder.d.ts +52 -0
  114. package/lib/elements/blocks/job/internal/machine_job.builder.js +74 -0
  115. package/lib/elements/blocks/job/internal/machine_job.schema.d.ts +5 -0
  116. package/lib/elements/blocks/job/internal/machine_job.schema.js +10 -0
  117. package/lib/elements/blocks/job/internal/resource_job.builder.d.ts +109 -0
  118. package/lib/elements/blocks/job/internal/resource_job.builder.js +146 -0
  119. package/lib/elements/blocks/job/internal/resource_job.d.ts +14 -0
  120. package/lib/elements/blocks/job/internal/resource_job.js +30 -0
  121. package/lib/elements/blocks/job/internal/resource_job.schema.d.ts +11 -0
  122. package/lib/elements/blocks/job/internal/resource_job.schema.js +15 -0
  123. package/lib/elements/blocks/job/job.builder.d.ts +118 -0
  124. package/lib/elements/blocks/job/job.builder.js +137 -0
  125. package/lib/elements/blocks/job/job.d.ts +13 -0
  126. package/lib/elements/blocks/job/job.js +40 -0
  127. package/lib/elements/blocks/job/job.schema.d.ts +26 -0
  128. package/lib/elements/blocks/job/job.schema.js +20 -0
  129. package/lib/elements/blocks/machine/machine.builder.d.ts +58 -0
  130. package/lib/elements/blocks/machine/machine.builder.js +135 -0
  131. package/lib/elements/blocks/machine/machine.d.ts +86 -0
  132. package/lib/elements/blocks/machine/machine.js +228 -0
  133. package/lib/elements/blocks/machine/machine.schema.d.ts +85 -0
  134. package/lib/elements/blocks/machine/machine.schema.js +64 -0
  135. package/lib/elements/blocks/machine/machine_state.builder.d.ts +58 -0
  136. package/lib/elements/blocks/machine/machine_state.builder.js +186 -0
  137. package/lib/elements/blocks/machine/machine_transition.builder.d.ts +48 -0
  138. package/lib/elements/blocks/machine/machine_transition.builder.js +98 -0
  139. package/lib/elements/blocks/queue/adapters/bucket.queue_adapter.d.ts +10 -0
  140. package/lib/elements/blocks/queue/adapters/bucket.queue_adapter.js +17 -0
  141. package/lib/elements/blocks/queue/adapters/queue_adapter.d.ts +6 -0
  142. package/lib/elements/blocks/queue/adapters/queue_adapter.js +6 -0
  143. package/lib/elements/blocks/queue/queue.builder.d.ts +40 -0
  144. package/lib/elements/blocks/queue/queue.builder.js +31 -0
  145. package/lib/elements/blocks/queue/queue.d.ts +9 -0
  146. package/lib/elements/blocks/queue/queue.js +11 -0
  147. package/lib/elements/blocks/queue/queue.schema.d.ts +12 -0
  148. package/lib/elements/blocks/queue/queue.schema.js +17 -0
  149. package/lib/elements/blocks/resource/resource.builder.d.ts +60 -0
  150. package/lib/elements/blocks/resource/resource.builder.js +224 -0
  151. package/lib/elements/blocks/resource/resource.d.ts +48 -0
  152. package/lib/elements/blocks/resource/resource.js +125 -0
  153. package/lib/elements/blocks/resource/resource.schema.d.ts +32 -0
  154. package/lib/elements/blocks/resource/resource.schema.js +30 -0
  155. package/lib/elements/blocks/resource/resource.types.d.ts +38 -0
  156. package/lib/elements/blocks/resource/resource.types.js +3 -0
  157. package/lib/elements/edge/controller/adapters/cli.controller_adapter.d.ts +8 -0
  158. package/lib/elements/edge/controller/adapters/cli.controller_adapter.js +17 -0
  159. package/lib/elements/edge/controller/adapters/controller_adapter.d.ts +14 -0
  160. package/lib/elements/edge/controller/adapters/controller_adapter.js +44 -0
  161. package/lib/elements/edge/controller/controller.builder.d.ts +78 -0
  162. package/lib/elements/edge/controller/controller.builder.js +178 -0
  163. package/lib/elements/edge/controller/controller.config.d.ts +6 -0
  164. package/lib/elements/edge/controller/controller.config.js +2 -0
  165. package/lib/elements/edge/controller/controller.d.ts +22 -0
  166. package/lib/elements/edge/controller/controller.js +41 -0
  167. package/lib/elements/edge/controller/controller.schema.d.ts +44 -0
  168. package/lib/elements/edge/controller/controller.schema.js +51 -0
  169. package/lib/elements/entities/bucket/adapters/bucket_adapter.d.ts +107 -0
  170. package/lib/elements/entities/bucket/adapters/bucket_adapter.js +41 -0
  171. package/lib/elements/entities/bucket/adapters/memory.bucket_adapter.d.ts +37 -0
  172. package/lib/elements/entities/bucket/adapters/memory.bucket_adapter.js +149 -0
  173. package/lib/elements/entities/bucket/adapters/memory.bucket_query copy.d.ts +0 -0
  174. package/lib/elements/entities/bucket/adapters/memory.bucket_query copy.js +218 -0
  175. package/lib/elements/entities/bucket/adapters/memory.nql.d.ts +19 -0
  176. package/lib/elements/entities/bucket/adapters/memory.nql.js +212 -0
  177. package/lib/elements/entities/bucket/adapters/slow_memory.bucket_adapter.d.ts +20 -0
  178. package/lib/elements/entities/bucket/adapters/slow_memory.bucket_adapter.js +31 -0
  179. package/lib/elements/entities/bucket/bucket.builder.d.ts +61 -0
  180. package/lib/elements/entities/bucket/bucket.builder.js +130 -0
  181. package/lib/elements/entities/bucket/bucket.config.d.ts +29 -0
  182. package/lib/elements/entities/bucket/bucket.config.js +2 -0
  183. package/lib/elements/entities/bucket/bucket.d.ts +36 -0
  184. package/lib/elements/entities/bucket/bucket.infer.d.ts +22 -0
  185. package/lib/elements/entities/bucket/bucket.infer.js +85 -0
  186. package/lib/elements/entities/bucket/bucket.js +125 -0
  187. package/lib/elements/entities/bucket/bucket.schema.d.ts +24 -0
  188. package/lib/elements/entities/bucket/bucket.schema.js +16 -0
  189. package/lib/elements/entities/bucket/bucket.types.d.ts +32 -0
  190. package/lib/elements/entities/bucket/bucket.types.js +2 -0
  191. package/lib/elements/entities/bucket/cache/bucket_cache.d.ts +35 -0
  192. package/lib/elements/entities/bucket/cache/bucket_cache.js +182 -0
  193. package/lib/elements/entities/bucket/graph/bucket_graph.builder.d.ts +11 -0
  194. package/lib/elements/entities/bucket/graph/bucket_graph.builder.js +27 -0
  195. package/lib/elements/entities/bucket/graph/bucket_graph.d.ts +16 -0
  196. package/lib/elements/entities/bucket/graph/bucket_graph.infer.d.ts +9 -0
  197. package/lib/elements/entities/bucket/graph/bucket_graph.infer.js +2 -0
  198. package/lib/elements/entities/bucket/graph/bucket_graph.js +136 -0
  199. package/lib/elements/entities/bucket/graph/bucket_graph.schema.d.ts +28 -0
  200. package/lib/elements/entities/bucket/graph/bucket_graph.schema.js +27 -0
  201. package/lib/elements/entities/bucket/graph/bucket_graph_link.builder.d.ts +36 -0
  202. package/lib/elements/entities/bucket/graph/bucket_graph_link.builder.js +56 -0
  203. package/lib/elements/entities/bucket/model/bucket_model.builder.d.ts +13 -0
  204. package/lib/elements/entities/bucket/model/bucket_model.builder.js +24 -0
  205. package/lib/elements/entities/bucket/model/bucket_model.convert.d.ts +5 -0
  206. package/lib/elements/entities/bucket/model/bucket_model.convert.js +51 -0
  207. package/lib/elements/entities/bucket/model/bucket_model.infer.d.ts +13 -0
  208. package/lib/elements/entities/bucket/model/bucket_model.infer.js +2 -0
  209. package/lib/elements/entities/bucket/model/bucket_model.schema.d.ts +35 -0
  210. package/lib/elements/entities/bucket/model/bucket_model.schema.js +47 -0
  211. package/lib/elements/entities/bucket/model/bucket_model_field.builder.d.ts +119 -0
  212. package/lib/elements/entities/bucket/model/bucket_model_field.builder.js +154 -0
  213. package/lib/elements/entities/bucket/query/nql.schema.d.ts +140 -0
  214. package/lib/elements/entities/bucket/query/nql.schema.js +2 -0
  215. package/lib/elements/entities/bucket/query/nql_compiler.d.ts +44 -0
  216. package/lib/elements/entities/bucket/query/nql_compiler.js +620 -0
  217. package/lib/elements/entities/bucket/query/nql_engine.d.ts +16 -0
  218. package/lib/elements/entities/bucket/query/nql_engine.js +42 -0
  219. package/lib/elements/entities/bucket/view/bucket_view.builder.d.ts +14 -0
  220. package/lib/elements/entities/bucket/view/bucket_view.builder.js +24 -0
  221. package/lib/elements/entities/bucket/view/bucket_view.d.ts +10 -0
  222. package/lib/elements/entities/bucket/view/bucket_view.js +102 -0
  223. package/lib/elements/entities/bucket/view/bucket_view.schema.d.ts +55 -0
  224. package/lib/elements/entities/bucket/view/bucket_view.schema.js +42 -0
  225. package/lib/elements/entities/bucket/view/bucket_view_field.builder.d.ts +37 -0
  226. package/lib/elements/entities/bucket/view/bucket_view_field.builder.js +138 -0
  227. package/lib/elements/entities/constants/constants.builder.d.ts +57 -0
  228. package/lib/elements/entities/constants/constants.builder.js +116 -0
  229. package/lib/elements/entities/constants/constants.d.ts +7 -0
  230. package/lib/elements/entities/constants/constants.js +15 -0
  231. package/lib/elements/entities/constants/constants.schema.d.ts +51 -0
  232. package/lib/elements/entities/constants/constants.schema.js +45 -0
  233. package/lib/elements/entities/message/message.builder.d.ts +33 -0
  234. package/lib/elements/entities/message/message.builder.js +41 -0
  235. package/lib/elements/entities/message/message.d.ts +11 -0
  236. package/lib/elements/entities/message/message.infer.d.ts +63 -0
  237. package/lib/elements/entities/message/message.infer.js +2 -0
  238. package/lib/elements/entities/message/message.js +52 -0
  239. package/lib/elements/entities/message/message.schema.d.ts +15 -0
  240. package/lib/elements/entities/message/message.schema.js +13 -0
  241. package/lib/elements/entities/message/message_parser.d.ts +12 -0
  242. package/lib/elements/entities/message/message_parser.js +112 -0
  243. package/lib/elements/entities/message/template/message_template.builder.d.ts +14 -0
  244. package/lib/elements/entities/message/template/message_template.builder.js +20 -0
  245. package/lib/elements/entities/message/template/message_template.schema.d.ts +57 -0
  246. package/lib/elements/entities/message/template/message_template.schema.js +28 -0
  247. package/lib/elements/entities/message/template/message_template_field.builder.d.ts +225 -0
  248. package/lib/elements/entities/message/template/message_template_field.builder.js +172 -0
  249. package/lib/elements/entities/message/template/message_template_parser.d.ts +3 -0
  250. package/lib/elements/entities/message/template/message_template_parser.js +83 -0
  251. package/lib/elements/index.d.ts +11 -0
  252. package/lib/elements/index.js +23 -0
  253. package/lib/engine/apps/app.config.d.ts +49 -0
  254. package/lib/engine/apps/app.config.js +38 -0
  255. package/lib/engine/apps/app.d.ts +70 -0
  256. package/lib/engine/apps/app.js +101 -0
  257. package/lib/engine/apps/inline.app.d.ts +48 -0
  258. package/lib/engine/apps/inline.app.js +144 -0
  259. package/lib/engine/apps/monolyth/monolyth.app.d.ts +20 -0
  260. package/lib/engine/apps/monolyth/monolyth.app.js +94 -0
  261. package/lib/engine/apps/monolyth/monolyth.cli.d.ts +45 -0
  262. package/lib/engine/apps/monolyth/monolyth.cli.js +362 -0
  263. package/lib/engine/auth/authn.d.ts +18 -0
  264. package/lib/engine/auth/authn.js +9 -0
  265. package/lib/engine/auth/zero.authn_provider.d.ts +13 -0
  266. package/lib/engine/auth/zero.authn_provider.js +13 -0
  267. package/lib/engine/cli/cli.d.ts +19 -0
  268. package/lib/engine/cli/cli.js +88 -0
  269. package/lib/engine/cli/cli_adapter.d.ts +18 -0
  270. package/lib/engine/cli/cli_adapter.js +61 -0
  271. package/lib/engine/cli/ui.d.ts +36 -0
  272. package/lib/engine/cli/ui.js +188 -0
  273. package/lib/engine/daemon.d.ts +35 -0
  274. package/lib/engine/daemon.js +66 -0
  275. package/lib/engine/data/date.d.ts +10 -0
  276. package/lib/engine/data/date.js +32 -0
  277. package/lib/engine/data/datetime.d.ts +12 -0
  278. package/lib/engine/data/datetime.js +31 -0
  279. package/lib/engine/data/decimal.d.ts +11 -0
  280. package/lib/engine/data/decimal.js +70 -0
  281. package/lib/engine/data/error.d.ts +213 -0
  282. package/lib/engine/data/error.js +386 -0
  283. package/lib/engine/data/obj.d.ts +16 -0
  284. package/lib/engine/data/obj.js +5 -0
  285. package/lib/engine/data/tree.d.ts +17 -0
  286. package/lib/engine/data/tree.js +111 -0
  287. package/lib/engine/dependency.d.ts +68 -0
  288. package/lib/engine/dependency.js +91 -0
  289. package/lib/engine/module.d.ts +97 -0
  290. package/lib/engine/module.js +335 -0
  291. package/lib/engine/space.d.ts +54 -0
  292. package/lib/engine/space.js +138 -0
  293. package/lib/engine/transaction/nodes/bucket.trx_node.d.ts +53 -0
  294. package/lib/engine/transaction/nodes/bucket.trx_node.js +522 -0
  295. package/lib/engine/transaction/nodes/bucket_query.trx_node.d.ts +17 -0
  296. package/lib/engine/transaction/nodes/bucket_query.trx_node.js +82 -0
  297. package/lib/engine/transaction/nodes/job.trx_node.d.ts +13 -0
  298. package/lib/engine/transaction/nodes/job.trx_node.js +40 -0
  299. package/lib/engine/transaction/nodes/machine.trx_node.d.ts +12 -0
  300. package/lib/engine/transaction/nodes/machine.trx_node.js +39 -0
  301. package/lib/engine/transaction/nodes/queue.trx_node.d.ts +10 -0
  302. package/lib/engine/transaction/nodes/queue.trx_node.js +24 -0
  303. package/lib/engine/transaction/nodes/resource.trx_node.d.ts +24 -0
  304. package/lib/engine/transaction/nodes/resource.trx_node.js +77 -0
  305. package/lib/engine/transaction/trx.d.ts +50 -0
  306. package/lib/engine/transaction/trx.js +94 -0
  307. package/lib/engine/transaction/trx_engine.config.d.ts +15 -0
  308. package/lib/engine/transaction/trx_engine.config.js +2 -0
  309. package/lib/engine/transaction/trx_engine.d.ts +27 -0
  310. package/lib/engine/transaction/trx_engine.js +95 -0
  311. package/lib/engine/transaction/trx_node.d.ts +61 -0
  312. package/lib/engine/transaction/trx_node.js +175 -0
  313. package/lib/engine/tree.d.ts +34 -0
  314. package/lib/engine/tree.js +237 -0
  315. package/lib/engine/util/cache.d.ts +6 -0
  316. package/lib/engine/util/cache.js +20 -0
  317. package/lib/engine/util/console.d.ts +4 -0
  318. package/lib/engine/util/console.js +24 -0
  319. package/lib/engine/util/deep.d.ts +7 -0
  320. package/lib/engine/util/deep.js +2 -0
  321. package/lib/engine/util/dotenv.d.ts +15 -0
  322. package/lib/engine/util/dotenv.js +94 -0
  323. package/lib/engine/util/i18n.d.ts +5 -0
  324. package/lib/engine/util/i18n.js +19 -0
  325. package/lib/engine/util/log.d.ts +17 -0
  326. package/lib/engine/util/log.js +93 -0
  327. package/lib/engine/util/parse.d.ts +63 -0
  328. package/lib/engine/util/parse.js +229 -0
  329. package/lib/engine/util/promise.d.ts +3 -0
  330. package/lib/engine/util/promise.js +14 -0
  331. package/lib/engine/util/shell.d.ts +6 -0
  332. package/lib/engine/util/shell.js +44 -0
  333. package/lib/engine/util/string.d.ts +18 -0
  334. package/lib/engine/util/string.js +25 -0
  335. package/lib/engine/util/type.d.ts +7 -0
  336. package/lib/engine/util/type.js +3 -0
  337. package/lib/schema.d.ts +63 -0
  338. package/lib/schema.js +2 -0
  339. package/package.json +22 -0
  340. package/tools/compile.d.ts +1 -0
  341. package/tools/compile.js +68 -0
  342. package/tools/joaquin/job.d.ts +40 -0
  343. package/tools/joaquin/job.js +47 -0
  344. package/tools/joaquin/message.d.ts +12 -0
  345. package/tools/joaquin/message.js +47 -0
  346. package/tools/joaquin/mock.d.ts +28 -0
  347. package/tools/joaquin/mock.js +128 -0
  348. package/tsconfig.build.tsbuildinfo +1 -0
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MachineBuilder = void 0;
4
+ const machine_schema_1 = require("./machine.schema");
5
+ const machine_state_builder_1 = require("./machine_state.builder");
6
+ const block_builder_1 = require("../block.builder");
7
+ const job_builder_1 = require("../job/job.builder");
8
+ const dependency_1 = require("../../../engine/dependency");
9
+ const message_builder_1 = require("../../entities/message/message.builder");
10
+ const machine_transition_builder_1 = require("./machine_transition.builder");
11
+ class MachineBuilder extends block_builder_1.BlockBuilder {
12
+ constructor(module, name) {
13
+ super(module, 'machine', name);
14
+ this.$b = 'machine';
15
+ this._buckets = [];
16
+ this._states = {};
17
+ }
18
+ /* [Block] */
19
+ authn(...providers) {
20
+ return super.authn(...providers);
21
+ }
22
+ messages(def) {
23
+ return super.messages(def);
24
+ }
25
+ /* [Data] */
26
+ bucket(names) {
27
+ names = Array.isArray(names) ? names : [names];
28
+ this._buckets = names.map(name => new dependency_1.$Dependency(this.module, 'bucket', name));
29
+ return this;
30
+ }
31
+ stateField(key) {
32
+ this._stateField = key;
33
+ return this;
34
+ }
35
+ stateAliasField(key) {
36
+ this._stateAliasField = key;
37
+ return this;
38
+ }
39
+ /* The machine nodes */
40
+ state(name, $) {
41
+ const builder = new machine_state_builder_1.MachineStateBuilder(this, this.module, name, Object.values(this._states).length === 0);
42
+ if ($) {
43
+ $(builder);
44
+ }
45
+ this._states[name] = builder;
46
+ return this;
47
+ // return this as unknown as MachineBuilder<Space, Module, Name, $ & {
48
+ // states: {
49
+ // [K in Name]: TMachineState<{ path: Name }>
50
+ // }
51
+ // }>;
52
+ }
53
+ logger($) {
54
+ this._logger = $;
55
+ return this;
56
+ }
57
+ /* Build */
58
+ static build(node, tree, module) {
59
+ const states = {};
60
+ const transitions = {
61
+ from: {},
62
+ to: {}
63
+ };
64
+ // Build substates
65
+ for (const key in node.builder._states) {
66
+ const childBuilder = node.builder._states[key];
67
+ const child = machine_state_builder_1.MachineStateBuilder.build(childBuilder);
68
+ Object.assign(states, child.states);
69
+ machine_transition_builder_1.MachineTransitionBuilder.merge(transitions, child.transitions);
70
+ }
71
+ // Asign unique inputs to states based on transitions to that state
72
+ Object.entries(transitions.to)
73
+ .forEach(([state, msgTransitions]) => {
74
+ Object.values(msgTransitions)
75
+ .flat(1)
76
+ .forEach(t => {
77
+ if (!states[state].input.some(dep => dep.tag === t.msg.tag)) {
78
+ states[state].input.push(t.msg);
79
+ }
80
+ });
81
+ });
82
+ const input = Object.values(states)
83
+ .map(state => state.input)
84
+ .flat(1);
85
+ node.schema = new machine_schema_1.$Machine(node.builder.module, node.builder.name, node.builder._alias || node.builder.name, node.builder._authn, input, node.builder._buckets, node.builder._stateField || 'state', states, transitions, node.builder._stateAliasField, node.builder._logger);
86
+ // Configure state jobs with proper input, based on transition targets
87
+ const inlineJobsConfig = {};
88
+ Object.values(states).forEach(state => {
89
+ const transFrom = transitions.from[state.name] || {};
90
+ const inputLeave = [];
91
+ Object.values(transFrom)
92
+ .flat(1)
93
+ .filter($t => !inputLeave.some(dep => dep.tag === $t.msg.tag))
94
+ .forEach($t => inputLeave.push($t.msg));
95
+ const transTo = transitions.to[state.name] || {};
96
+ const inputEnter = [];
97
+ Object.values(transTo)
98
+ .flat(1)
99
+ .filter($t => !inputEnter.some(dep => dep.tag === $t.msg.tag))
100
+ .forEach($t => inputEnter.push($t.msg));
101
+ state.inputEnter = inputEnter;
102
+ state.inputLeave = inputLeave;
103
+ if (state.jobs.beforeEnter) {
104
+ inlineJobsConfig[state.jobs.beforeEnter.name] = {
105
+ MachineJob: { input: inputEnter }
106
+ };
107
+ }
108
+ if (state.jobs.afterEnter) {
109
+ inlineJobsConfig[state.jobs.afterEnter.name] = {
110
+ MachineJob: { input: inputEnter }
111
+ };
112
+ }
113
+ if (state.jobs.beforeLeave) {
114
+ inlineJobsConfig[state.jobs.beforeLeave.name] = {
115
+ MachineJob: { input: inputLeave }
116
+ };
117
+ }
118
+ if (state.jobs.afterLeave) {
119
+ inlineJobsConfig[state.jobs.afterLeave.name] = {
120
+ MachineJob: { input: inputLeave }
121
+ };
122
+ }
123
+ });
124
+ const { inlineJobs, nestedInlineMessages } = job_builder_1.JobBuilder.buildInlines(node, tree, module, inlineJobsConfig);
125
+ return {
126
+ schema: node.schema,
127
+ inlineMessages: {
128
+ ...message_builder_1.MessageBuilder.buildInlines(node, tree, module),
129
+ ...nestedInlineMessages
130
+ },
131
+ inlineJobs
132
+ };
133
+ }
134
+ }
135
+ exports.MachineBuilder = MachineBuilder;
@@ -0,0 +1,86 @@
1
+ import { $Module, $Space } from "../../../schema";
2
+ import { $Machine } from './machine.schema';
3
+ import { Module } from "../../../engine/module";
4
+ import { Block } from '../block';
5
+ import { TrxNode } from "../../../engine/transaction/trx_node";
6
+ import { AnyMessage } from "../../entities/message/message";
7
+ import { NesoiObjId } from "../../../engine/data/obj";
8
+ export declare const MachineOutputCode: {
9
+ info: {
10
+ msg_received: string;
11
+ state_changed: string;
12
+ state_not_changed: string;
13
+ job_returned_message: string;
14
+ job_unmet_condition: string;
15
+ job_from_transition: string;
16
+ };
17
+ warn: {
18
+ no_transition_found: string;
19
+ no_transition_run: string;
20
+ };
21
+ };
22
+ export declare class MachineOutputEntry<Type = string, Code = string, Text = string, Data = any> {
23
+ type: Type;
24
+ code: Code;
25
+ text: Text;
26
+ data: Data;
27
+ constructor(type: Type, code: Code, text: Text, data: Data);
28
+ static info_msg_received(msg: AnyMessage, state: string, obj: Record<string, any>): MachineOutputEntry<"info", "msg_received", `Message '${string}' received at state '${string}'`, {
29
+ msg: AnyMessage;
30
+ state: string;
31
+ obj: Record<string, any>;
32
+ }>;
33
+ static info_state_changed(from: string, to: string): MachineOutputEntry<"info", "state_changed", `State changed from '${string}' to '${string}'`, {
34
+ from: string;
35
+ to: string;
36
+ }>;
37
+ static info_state_not_changed(from: string): MachineOutputEntry<"info", "state_not_changed", `State didn't change, remains at '${string}'`, {
38
+ from: string;
39
+ }>;
40
+ static info_job_returned_message(job: string, msg: AnyMessage): MachineOutputEntry<"info", "job_returned_message", `Job '${string}' returned a message '${string}', which was added to the machine queue`, {
41
+ job: string;
42
+ msg: AnyMessage;
43
+ }>;
44
+ static info_job_from_state(job: string, state: string): MachineOutputEntry<"info", "job_from_state", `Job '${string}' ran for state '${string}'`, {
45
+ job: string;
46
+ state: string;
47
+ }>;
48
+ static info_unmet_condition(transition: string, error: string): MachineOutputEntry<"info", "unmet_condition", `Transition '${string}' condition failed: '${string}'`, {
49
+ transition: string;
50
+ error: string;
51
+ }>;
52
+ static info_job_from_transition(job: string, transition: string): MachineOutputEntry<"info", "job_from_transition", `Job '${string}' ran from transition '${string}'`, {
53
+ job: string;
54
+ transition: string;
55
+ }>;
56
+ static warn_no_transition_found(state: string, msg: string): MachineOutputEntry<"warn", "no_transition_found", `No transition found for state '${string}' and message '${string}'`, {
57
+ state: string;
58
+ msg: string;
59
+ }>;
60
+ static warn_no_transition_run(state: string): MachineOutputEntry<"warn", "no_transition_run", `No transition from state '${string}' passes the assertions`, {
61
+ state: string;
62
+ }>;
63
+ }
64
+ export declare class MachineOutput {
65
+ entries: MachineOutputEntry[];
66
+ constructor(entries?: MachineOutputEntry[]);
67
+ static add(output: MachineOutput, ...entries: MachineOutputEntry[]): void;
68
+ summary(): string;
69
+ jobs(): MachineOutputEntry<string, string, string, any>[];
70
+ }
71
+ export declare class Machine<S extends $Space, M extends $Module, $ extends $Machine> extends Block<S, M, $> {
72
+ module: Module<S, M>;
73
+ schema: $;
74
+ constructor(module: Module<S, M>, schema: $);
75
+ protected run(trx: TrxNode<S, M, $['#authn']>, msg: AnyMessage & {
76
+ id: NesoiObjId;
77
+ }): Promise<MachineOutput>;
78
+ protected _run(trx: TrxNode<S, M, $['#authn']>, _msg: AnyMessage & {
79
+ id: NesoiObjId;
80
+ }): Promise<{
81
+ obj: Record<string, any>;
82
+ output: MachineOutput;
83
+ }>;
84
+ private runStateJob;
85
+ }
86
+ export type AnyMachine = Machine<any, any, any>;
@@ -0,0 +1,228 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Machine = exports.MachineOutput = exports.MachineOutputEntry = exports.MachineOutputCode = void 0;
4
+ const block_1 = require("../block");
5
+ const trx_node_1 = require("../../../engine/transaction/trx_node");
6
+ const message_1 = require("../../entities/message/message");
7
+ const error_1 = require("../../../engine/data/error");
8
+ const string_1 = require("../../../engine/util/string");
9
+ const log_1 = require("../../../engine/util/log");
10
+ exports.MachineOutputCode = {
11
+ 'info': {
12
+ 'msg_received': 'Message received',
13
+ 'state_changed': 'State changed',
14
+ 'state_not_changed': 'State didn\'t change',
15
+ 'job_returned_message': 'Job returned a message, which will be sent back to the machine',
16
+ 'job_unmet_condition': 'A condition of the job was not met',
17
+ 'job_from_transition': 'A job was run for the transition',
18
+ },
19
+ 'warn': {
20
+ 'no_transition_found': 'No matching transition was found',
21
+ 'no_transition_run': 'No transition matched the required conditions to run',
22
+ }
23
+ };
24
+ class MachineOutputEntry {
25
+ constructor(type, code, text, data) {
26
+ this.type = type;
27
+ this.code = code;
28
+ this.text = text;
29
+ this.data = data;
30
+ }
31
+ static info_msg_received(msg, state, obj) {
32
+ return new MachineOutputEntry('info', 'msg_received', `Message '${msg.$}' received at state '${state}'`, { msg, state, obj });
33
+ }
34
+ static info_state_changed(from, to) {
35
+ return new MachineOutputEntry('info', 'state_changed', `State changed from '${from}' to '${to}'`, { from, to });
36
+ }
37
+ static info_state_not_changed(from) {
38
+ return new MachineOutputEntry('info', 'state_not_changed', `State didn't change, remains at '${from}'`, { from });
39
+ }
40
+ static info_job_returned_message(job, msg) {
41
+ return new MachineOutputEntry('info', 'job_returned_message', `Job '${job}' returned a message '${msg.$}', which was added to the machine queue`, { job, msg });
42
+ }
43
+ static info_job_from_state(job, state) {
44
+ return new MachineOutputEntry('info', 'job_from_state', `Job '${job}' ran for state '${state}'`, { job, state });
45
+ }
46
+ static info_unmet_condition(transition, error) {
47
+ return new MachineOutputEntry('info', 'unmet_condition', `Transition '${transition}' condition failed: '${error}'`, { transition, error });
48
+ }
49
+ static info_job_from_transition(job, transition) {
50
+ return new MachineOutputEntry('info', 'job_from_transition', `Job '${job}' ran from transition '${transition}'`, { job, transition });
51
+ }
52
+ static warn_no_transition_found(state, msg) {
53
+ return new MachineOutputEntry('warn', 'no_transition_found', `No transition found for state '${state}' and message '${msg}'`, { state, msg });
54
+ }
55
+ static warn_no_transition_run(state) {
56
+ return new MachineOutputEntry('warn', 'no_transition_run', `No transition from state '${state}' passes the assertions`, { state });
57
+ }
58
+ }
59
+ exports.MachineOutputEntry = MachineOutputEntry;
60
+ class MachineOutput {
61
+ constructor(entries = []) {
62
+ this.entries = entries;
63
+ }
64
+ static add(output, ...entries) {
65
+ output.entries.push(...entries);
66
+ }
67
+ summary() {
68
+ let str = '\n';
69
+ this.entries.forEach(entry => {
70
+ const pad = ' '.repeat(Math.max(5 - entry.type.length, 0));
71
+ const color = {
72
+ 'info': 'lightpurple',
73
+ 'warn': 'yellow',
74
+ 'job': 'lightblue',
75
+ 'state': 'lightgreen'
76
+ }[entry.type] || 'lightred';
77
+ const type = entry.type ? (0, string_1.colored)(`[${entry.type}]`, color) : 'unknown';
78
+ str += `- ${type}${pad} ${(0, string_1.colored)(entry.code, color)}\n`;
79
+ str += ` ${(0, string_1.colored)(entry.text, 'lightgray')}\n`;
80
+ });
81
+ return str;
82
+ }
83
+ jobs() {
84
+ return this.entries.filter(entry => entry.type === 'job');
85
+ }
86
+ }
87
+ exports.MachineOutput = MachineOutput;
88
+ class Machine extends block_1.Block {
89
+ constructor(module, schema) {
90
+ super('machine', module, schema);
91
+ this.module = module;
92
+ this.schema = schema;
93
+ }
94
+ async run(trx, msg) {
95
+ const { obj, output } = await this._run(trx, msg);
96
+ if (this.schema.logger) {
97
+ try {
98
+ await this.schema.logger({
99
+ trx,
100
+ schema: this.schema,
101
+ obj,
102
+ output
103
+ });
104
+ }
105
+ catch (e) {
106
+ log_1.Log.error('machine', this.schema.name, 'Logger failed.', {
107
+ error: e.toString(),
108
+ stack: e.stack
109
+ });
110
+ }
111
+ }
112
+ return output;
113
+ }
114
+ async _run(trx, _msg) {
115
+ const output = new MachineOutput();
116
+ const msg = message_1.Message.clone(_msg);
117
+ const ctx = { trx, msg };
118
+ if (!msg.id) {
119
+ throw error_1.NesoiError.Machine.MessageHasNoId(this.schema.alias);
120
+ }
121
+ // Read data from bucket
122
+ let bucketUsed;
123
+ let obj;
124
+ for (const bucket of this.schema.buckets) {
125
+ obj = await trx.bucket(bucket.refName).readOne(msg.id);
126
+ if (obj) {
127
+ bucketUsed = bucket;
128
+ break;
129
+ }
130
+ }
131
+ if (!obj) {
132
+ throw error_1.NesoiError.Machine.ObjNotFound(this.schema.alias, msg.id);
133
+ }
134
+ // Get current state
135
+ const stateName = obj[this.schema.stateField];
136
+ if (!stateName) {
137
+ throw error_1.NesoiError.Machine.StateNotFound(this.schema.alias, msg.id);
138
+ }
139
+ const state = this.schema.states[stateName];
140
+ if (!state) {
141
+ throw error_1.NesoiError.Machine.StateNotFound(this.schema.alias, msg.id);
142
+ }
143
+ MachineOutput.add(output, MachineOutputEntry.info_msg_received(msg, state.name, obj));
144
+ // Find list of transitions for given state and message
145
+ const transitions = this.schema.transitions.from[stateName]?.[msg.$];
146
+ if (!transitions?.length) {
147
+ MachineOutput.add(output, MachineOutputEntry.warn_no_transition_found(state.name, msg.$));
148
+ return { obj, output };
149
+ }
150
+ const queue = [];
151
+ // Run "beforeLeave" job of current state
152
+ await this.runStateJob(trx, output, queue, state.jobs.beforeLeave, msg, obj, state.name, undefined, 'before_leave', `Ran job '${state.jobs.beforeLeave?.name}' before leaving '${state.name}'`);
153
+ // Try each transition until one works
154
+ let nextState;
155
+ let nextMsg;
156
+ for (const transition of transitions) {
157
+ // Transition condition [ .if() ]
158
+ if (transition.condition) {
159
+ const conditionResult = await transition.condition(ctx);
160
+ // Condition not met, save message as info and try next transition
161
+ if (conditionResult !== true) {
162
+ MachineOutput.add(output, MachineOutputEntry.info_unmet_condition(transition.name, conditionResult));
163
+ continue;
164
+ }
165
+ }
166
+ // Condition passed, run this transition
167
+ // Get next state
168
+ const nextStateName = transition.to;
169
+ nextState = this.schema.states[nextStateName];
170
+ if (!state) {
171
+ throw error_1.NesoiError.Machine.StateNotFound(this.schema.alias, msg.id);
172
+ }
173
+ // Run all transition jobs
174
+ for (const job of transition.jobs) {
175
+ await trx_node_1.TrxNode.jobWithCustomCtx(trx, job.refName, {
176
+ obj,
177
+ from: state.name,
178
+ to: nextState.name
179
+ }).forward(msg);
180
+ MachineOutput.add(output, MachineOutputEntry.info_job_from_transition(job.tag, transition.name));
181
+ }
182
+ // Run "beforeEnter" job of next state
183
+ await this.runStateJob(trx, output, queue, nextState.jobs.beforeEnter, msg, obj, state.name, nextState.name, 'before_enter', `Ran job '${nextState.jobs.beforeEnter?.name}' before entering '${nextState.name}'`);
184
+ // Change object state to new state and save
185
+ // TODO: log object changes
186
+ obj[this.schema.stateField] = nextState.name;
187
+ if (this.schema.stateAliasField) {
188
+ obj[this.schema.stateAliasField] = nextState.alias;
189
+ }
190
+ obj = await trx.bucket(bucketUsed.refName).put(obj);
191
+ if (nextStateName !== stateName) {
192
+ MachineOutput.add(output, MachineOutputEntry.info_state_changed(state.name, nextState.name));
193
+ }
194
+ else {
195
+ MachineOutput.add(output, MachineOutputEntry.info_state_not_changed(state.name));
196
+ }
197
+ // Run "afterLeave" job of previous state (which was the current until now)
198
+ await this.runStateJob(trx, output, queue, state.jobs.afterLeave, msg, obj, state.name, state.name, 'after_leave', `Ran job '${state.jobs.afterLeave?.name}' after leaving '${state.name}'`);
199
+ // Run "afterEnter" job of current state (which was the next until now)
200
+ await this.runStateJob(trx, output, queue, nextState.jobs.afterEnter, msg, obj, state.name, nextState.name, 'after_enter', `Ran job '${nextState.jobs.afterEnter?.name}' after entering '${nextState.name}'`);
201
+ }
202
+ // No transition run,
203
+ if (!nextState) {
204
+ MachineOutput.add(output, MachineOutputEntry.warn_no_transition_run(state.name));
205
+ }
206
+ // TODO: queue nextMsg
207
+ if (nextMsg) {
208
+ // ...
209
+ }
210
+ return { obj, output };
211
+ }
212
+ async runStateJob(trx, output, queue, job, msg, obj, from, to, code, text) {
213
+ if (!job) {
214
+ return;
215
+ }
216
+ const result = await trx_node_1.TrxNode.jobWithCustomCtx(trx, job.refName, {
217
+ obj,
218
+ from,
219
+ to
220
+ }).forward(msg);
221
+ MachineOutput.add(output, MachineOutputEntry.info_job_from_state(job.tag, from));
222
+ if (result instanceof message_1.Message) {
223
+ queue.push(result);
224
+ MachineOutput.add(output, MachineOutputEntry.info_job_returned_message(job.tag, result));
225
+ }
226
+ }
227
+ }
228
+ exports.Machine = Machine;
@@ -0,0 +1,85 @@
1
+ import { $Block } from "../block.schema";
2
+ import { $JobAssert } from "../job/job.schema";
3
+ import { $Dependency } from "../../../engine/dependency";
4
+ import { AnyTrxNode } from "../../../engine/transaction/trx_node";
5
+ import { MachineOutput } from './machine';
6
+ export declare class $MachineTransition extends $Block {
7
+ module: string;
8
+ name: string;
9
+ alias: string;
10
+ authn: string[];
11
+ msg: $Dependency;
12
+ from: string;
13
+ to: string;
14
+ condition?: $JobAssert<any, any, never, any> | undefined;
15
+ jobs: $Dependency[];
16
+ $t: any;
17
+ constructor(module: string, name: string, alias: string, authn: string[], msg: $Dependency, from: string, to: string, condition?: $JobAssert<any, any, never, any> | undefined, jobs?: $Dependency[]);
18
+ }
19
+ export type $MachineTransitions = {
20
+ from: {
21
+ [state: string]: {
22
+ [msg: string]: $MachineTransition[];
23
+ };
24
+ };
25
+ to: {
26
+ [state: string]: {
27
+ [msg: string]: $MachineTransition[];
28
+ };
29
+ };
30
+ };
31
+ export declare class $MachineState extends $Block {
32
+ module: string;
33
+ name: string;
34
+ alias: string;
35
+ authn: string[];
36
+ initial: boolean;
37
+ final: boolean;
38
+ inputEnter: $Dependency[];
39
+ inputLeave: $Dependency[];
40
+ jobs: {
41
+ beforeEnter?: $Dependency;
42
+ afterEnter?: $Dependency;
43
+ beforeLeave?: $Dependency;
44
+ afterLeave?: $Dependency;
45
+ };
46
+ $t: any;
47
+ '#input.enter': any;
48
+ '#input.leave': any;
49
+ constructor(module: string, name: string, alias: string, authn: string[], initial: boolean, final: boolean, inputEnter: $Dependency[], inputLeave: $Dependency[], jobs: {
50
+ beforeEnter?: $Dependency;
51
+ afterEnter?: $Dependency;
52
+ beforeLeave?: $Dependency;
53
+ afterLeave?: $Dependency;
54
+ });
55
+ }
56
+ export type $MachineStates = {
57
+ [x: string]: $MachineState;
58
+ };
59
+ export declare class $Machine extends $Block {
60
+ module: string;
61
+ name: string;
62
+ alias: string;
63
+ authn: string[];
64
+ input: $Dependency[];
65
+ buckets: $Dependency[];
66
+ stateField: string;
67
+ states: $MachineStates;
68
+ transitions: $MachineTransitions;
69
+ stateAliasField?: string | undefined;
70
+ logger?: $MachineLogFn<any> | undefined;
71
+ $t: "machine";
72
+ '#data': unknown;
73
+ constructor(module: string, name: string, alias: string, authn: string[], input: $Dependency[], buckets: $Dependency[], stateField: string, states: $MachineStates, transitions: $MachineTransitions, stateAliasField?: string | undefined, logger?: $MachineLogFn<any> | undefined);
74
+ }
75
+ export declare class $MachineJobScope {
76
+ module: string;
77
+ machine: string;
78
+ constructor(module: string, machine: string);
79
+ }
80
+ export type $MachineLogFn<M extends $Machine = $Machine> = (ctx: {
81
+ trx: AnyTrxNode;
82
+ schema: M;
83
+ obj: M['#data'];
84
+ output: MachineOutput;
85
+ }) => any | Promise<any>;
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.$MachineJobScope = exports.$Machine = exports.$MachineState = exports.$MachineTransition = void 0;
4
+ const block_schema_1 = require("../block.schema");
5
+ // Transition
6
+ class $MachineTransition extends block_schema_1.$Block {
7
+ constructor(module, name, alias, authn, msg, from, to, condition, jobs = []) {
8
+ super(module, name, alias, authn, [msg], {});
9
+ this.module = module;
10
+ this.name = name;
11
+ this.alias = alias;
12
+ this.authn = authn;
13
+ this.msg = msg;
14
+ this.from = from;
15
+ this.to = to;
16
+ this.condition = condition;
17
+ this.jobs = jobs;
18
+ this.$t = 'machine.transition';
19
+ }
20
+ }
21
+ exports.$MachineTransition = $MachineTransition;
22
+ // State
23
+ class $MachineState extends block_schema_1.$Block {
24
+ constructor(module, name, alias, authn, initial, final, inputEnter, inputLeave, jobs) {
25
+ super(module, name, alias, authn, [...inputEnter, ...inputLeave], {});
26
+ this.module = module;
27
+ this.name = name;
28
+ this.alias = alias;
29
+ this.authn = authn;
30
+ this.initial = initial;
31
+ this.final = final;
32
+ this.inputEnter = inputEnter;
33
+ this.inputLeave = inputLeave;
34
+ this.jobs = jobs;
35
+ this.$t = 'machine.state';
36
+ }
37
+ }
38
+ exports.$MachineState = $MachineState;
39
+ // Machine
40
+ class $Machine extends block_schema_1.$Block {
41
+ constructor(module, name, alias, authn, input, buckets, stateField, states, transitions, stateAliasField, logger) {
42
+ super(module, name, alias, authn, input, {});
43
+ this.module = module;
44
+ this.name = name;
45
+ this.alias = alias;
46
+ this.authn = authn;
47
+ this.input = input;
48
+ this.buckets = buckets;
49
+ this.stateField = stateField;
50
+ this.states = states;
51
+ this.transitions = transitions;
52
+ this.stateAliasField = stateAliasField;
53
+ this.logger = logger;
54
+ this.$t = 'machine';
55
+ }
56
+ }
57
+ exports.$Machine = $Machine;
58
+ class $MachineJobScope {
59
+ constructor(module, machine) {
60
+ this.module = module;
61
+ this.machine = machine;
62
+ }
63
+ }
64
+ exports.$MachineJobScope = $MachineJobScope;
@@ -0,0 +1,58 @@
1
+ import { $Module, $Space, ScopedMessageNameWithId } from "../../../schema";
2
+ import { $Machine, $MachineState, $MachineStates, $MachineTransition, $MachineTransitions } from './machine.schema';
3
+ import { MachineTransitionDef } from './machine_transition.builder';
4
+ import { Overlay } from "../../../engine/util/type";
5
+ import { BlockBuilder } from '../block.builder';
6
+ import { $Job } from '../job/job.schema';
7
+ import { AnyMachineBuilder } from './machine.builder';
8
+ import { MachineJobDef } from '../job/internal/machine_job.builder';
9
+ export declare class MachineStateBuilder<S extends $Space, M extends $Module, $M extends $Machine, $ extends $MachineState = $MachineState> extends BlockBuilder<S, M, 'machine'> {
10
+ private machine;
11
+ private _initial;
12
+ private _transitions;
13
+ private _states;
14
+ private _final;
15
+ constructor(machine: AnyMachineBuilder, module: string, name: string, _initial?: boolean);
16
+ private _jobs;
17
+ as(alias: string): this;
18
+ final(): this;
19
+ beforeEnter<Def extends MachineJobDef<S, M, `${$['name']}__before_enter`, Overlay<$Job, {
20
+ '#input': $['#input.enter'];
21
+ }>, {
22
+ obj: $M['#data'];
23
+ from: $M['transitions']['to'][$['name']][keyof $M['transitions']['to'][$['name']]][number]['from'];
24
+ to: $M['transitions']['to'][$['name']][keyof $M['transitions']['from'][$['name']]][number]['to'];
25
+ }>>(def: Def): this;
26
+ afterEnter<Def extends MachineJobDef<S, M, `${$['name']}__after_enter`, Overlay<$Job, {
27
+ '#input': $['#input.enter'];
28
+ }>, {
29
+ obj: $M['#data'];
30
+ from: $M['transitions']['to'][$['name']][keyof $M['transitions']['to'][$['name']]][number]['from'];
31
+ to: $M['transitions']['from'][$['name']][keyof $M['transitions']['from'][$['name']]][number]['to'];
32
+ }>>(def: Def): this;
33
+ beforeLeave<Def extends MachineJobDef<S, M, `${$['name']}__before_leave`, Overlay<$Job, {
34
+ '#input': $['#input.leave'];
35
+ }>, {
36
+ obj: $M['#data'];
37
+ from: $M['transitions']['to'][$['name']][keyof $M['transitions']['to'][$['name']]][number]['from'];
38
+ to: $M['transitions']['from'][$['name']][keyof $M['transitions']['from'][$['name']]][number]['to'];
39
+ }>>(def: Def): this;
40
+ afterLeave<Def extends MachineJobDef<S, M, `${$['name']}__after_leave`, Overlay<$Job, {
41
+ '#input': $['#input.leave'];
42
+ }>, {
43
+ obj: $M['#data'];
44
+ from: $M['transitions']['to'][$['name']][keyof $M['transitions']['to'][$['name']]][number]['from'];
45
+ to: $M['transitions']['from'][$['name']][keyof $M['transitions']['from'][$['name']]][number]['to'];
46
+ }>>(def: Def): this;
47
+ transition<MsgName extends ScopedMessageNameWithId<M, $M['name'], $M['#data']['id' & keyof $M['#data']]>, Def extends MachineTransitionDef<S, M, $M, Overlay<$MachineTransition, {
48
+ '#input': M['messages'][MsgName extends `@.${infer X}` ? `${$M['name']}.${X}` : MsgName];
49
+ from: $['name'];
50
+ }>>>(msg: MsgName, $: Def): this;
51
+ state<Name extends string, Def extends MachineStateDef<S, M, $M, $M['states'][`${$['name']}.${Name}`]>>(name: Name, $?: Def): this;
52
+ /** Build */
53
+ static build(builder: MachineStateBuilder<any, any, any>): {
54
+ states: $MachineStates;
55
+ transitions: $MachineTransitions;
56
+ };
57
+ }
58
+ export type MachineStateDef<S extends $Space, M extends $Module, $M extends $Machine, State extends $MachineState> = ($: MachineStateBuilder<S, M, $M, State>) => any;