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,362 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.Color = exports.MonolythCLI = void 0;
40
+ const package_json_1 = __importDefault(require("../../../../package.json"));
41
+ const readline = __importStar(require("readline"));
42
+ const path = __importStar(require("path"));
43
+ const stream_1 = require("stream");
44
+ const fs = __importStar(require("fs"));
45
+ const cli_controller_adapter_1 = require("../../../elements/edge/controller/adapters/cli.controller_adapter");
46
+ const typescript_compiler_1 = require("../../../compiler/typescript/typescript_compiler");
47
+ const shell_1 = __importDefault(require("../../util/shell"));
48
+ class MonolythCLI {
49
+ constructor(
50
+ // private space: Space<any>,
51
+ trxEngines) {
52
+ this.trxEngines = trxEngines;
53
+ }
54
+ async run() {
55
+ Console.header('CLI');
56
+ // eslint-disable-next-line no-constant-condition
57
+ while (true) {
58
+ const context = this.module ? `${this.module}>` : '>';
59
+ const cmd = await Console.question(context);
60
+ if (await this.runCmd(cmd)) {
61
+ break;
62
+ }
63
+ }
64
+ }
65
+ async runCmd(cmd) {
66
+ // > help
67
+ // Exit the CLI
68
+ if (cmd === 'help') {
69
+ this.cmdHelp();
70
+ return false;
71
+ }
72
+ // > exit
73
+ if (cmd === 'exit') {
74
+ return true;
75
+ }
76
+ // > clear
77
+ if (cmd === 'clear') {
78
+ this.cmdClear();
79
+ return false;
80
+ }
81
+ // > @
82
+ if (cmd === '@') {
83
+ await this.cmdListModules();
84
+ return false;
85
+ }
86
+ // > invoke
87
+ if (cmd === 'invoke') {
88
+ await this.cmdInvokeInteractive();
89
+ return false;
90
+ }
91
+ // > @[MODULE_NAME]
92
+ if (this.cmdPickModule(cmd)) {
93
+ return false;
94
+ }
95
+ // > invoke [ENDPOINT_PATH] [DATA_JSON]
96
+ if (await this.cmdInvoke(cmd)) {
97
+ return false;
98
+ }
99
+ Console.error('Invalid command');
100
+ return false;
101
+ }
102
+ cmdHelp() {
103
+ Console.step('Welcome to the Nesoi Monolyth CLI.');
104
+ console.log('' +
105
+ `\t${Console.colored('help', 'lightcyan')}\t\tShow this info\n` +
106
+ `\t${Console.colored('exit', 'lightcyan')}\t\tClose the CLI\n` +
107
+ `\t${Console.colored('@', 'lightcyan')}\t\tInteractively switch to a module\n` +
108
+ `\t${Console.colored('@[MODULE_NAME]', 'lightcyan')}\tSwitch to a module by name\n` +
109
+ `\t${Console.colored('invoke', 'lightcyan')}\t\tInteractively invoke a message to a controller\n`);
110
+ }
111
+ async cmdClear() {
112
+ console.clear();
113
+ }
114
+ async cmdListModules() {
115
+ const module = await Console.select('Pick a module from the list below:', Object.keys(this.trxEngines));
116
+ this.cmdPickModule(`@${module}`);
117
+ }
118
+ async cmdInvokeInteractive() {
119
+ if (!this.module) {
120
+ Console.error('No module selected. Use "@" to switch to the desired module first.');
121
+ return;
122
+ }
123
+ const module = this.trxEngines[this.module].getModule();
124
+ const adapters = Object.entries(module.controllers)
125
+ .reduce((a, [name, controller]) => {
126
+ if (controller.adapter instanceof cli_controller_adapter_1.CLIControllerAdapter) {
127
+ a[name] = controller.adapter;
128
+ }
129
+ return a;
130
+ }, {});
131
+ const controllerName = await Console.select('Pick a controller from the list below:', Object.keys(adapters));
132
+ const adapter = adapters[controllerName];
133
+ const endpointName = await Console.select('Pick an endpoint from the list below:', Object.keys(adapter.endpoints));
134
+ const endpoint = adapter.endpoints[endpointName];
135
+ const tmpInputFile = (Math.random() + 1).toString(36).substring(7) + '.cli.tmp.ts';
136
+ const tmpInputFilePath = path.join(process.cwd(), tmpInputFile);
137
+ const tmpInput = ''
138
+ + 'import { CLIData as _ } from \'nesoi/lib/engine/apps/monolyth.cli\';\n'
139
+ + `import $ from '${path.join(process.cwd(), 'types', module.name + '.module')}';\n`
140
+ + '\n'
141
+ + `export const data: _<$, '${endpoint.schema.msg.refName}'> = {\n\t\n};`;
142
+ fs.writeFileSync(tmpInputFilePath, tmpInput);
143
+ shell_1.default.cmd('', `code ${tmpInputFilePath}`);
144
+ await Console.waitForAnyKey();
145
+ const compiled = typescript_compiler_1.TypeScriptCompiler.compileFile(tmpInputFilePath);
146
+ fs.writeFileSync(tmpInputFilePath, compiled);
147
+ const data = (await Promise.resolve(`${tmpInputFilePath}`).then(s => __importStar(require(s)))).data;
148
+ Console.cmd(`invoke ${endpoint.path} ${JSON.stringify(data)}`);
149
+ Console.info(`Invoking endpoint ${endpoint.path}`);
150
+ const response = await endpoint.invoke(data);
151
+ console.log({ output: response.output });
152
+ console.log(response.summary());
153
+ fs.rmSync(tmpInputFile);
154
+ }
155
+ cmdPickModule(cmd) {
156
+ const module = /@(\w*)/.exec(cmd)?.[1];
157
+ if (!module) {
158
+ return false;
159
+ }
160
+ Console.info(`Switching to module '${module}'`);
161
+ if (!(module in this.trxEngines)) {
162
+ Console.error(`Module '${module}' not found on app`);
163
+ return true;
164
+ }
165
+ this.module = module;
166
+ return true;
167
+ }
168
+ async cmdInvoke(cmd) {
169
+ if (!this.module) {
170
+ Console.error('No module selected. Use "@" to switch to the desired module first.');
171
+ return true;
172
+ }
173
+ const parsed = /invoke (.*?) (.*)/.exec(cmd);
174
+ if (!parsed) {
175
+ return false;
176
+ }
177
+ const [_, endpointName, json] = parsed;
178
+ const controllerName = /\/(.*?)\//.exec(endpointName)?.[1];
179
+ if (!controllerName) {
180
+ Console.error('Invalid endpoint format');
181
+ return false;
182
+ }
183
+ const module = this.trxEngines[this.module].getModule();
184
+ const adapters = Object.entries(module.controllers)
185
+ .reduce((a, [name, controller]) => {
186
+ if (controller.adapter instanceof cli_controller_adapter_1.CLIControllerAdapter) {
187
+ a[name] = controller.adapter;
188
+ }
189
+ return a;
190
+ }, {});
191
+ const adapter = adapters[controllerName];
192
+ const endpoint = adapter.endpoints[endpointName];
193
+ if (!endpoint) {
194
+ Console.error('Endpoint not found');
195
+ return false;
196
+ }
197
+ let data;
198
+ try {
199
+ data = JSON.parse(json);
200
+ }
201
+ catch {
202
+ Console.error('Invalid json');
203
+ return false;
204
+ }
205
+ Console.info(`Invoking endpoint ${endpoint.path}`);
206
+ const response = await endpoint.invoke(data);
207
+ console.log(response.summary());
208
+ return true;
209
+ }
210
+ }
211
+ exports.MonolythCLI = MonolythCLI;
212
+ // Console helpers (this should be moved somewhere when the CLI matures)
213
+ var Color;
214
+ (function (Color) {
215
+ Color["black"] = "0;30";
216
+ Color["red"] = "0;31";
217
+ Color["green"] = "0;32";
218
+ Color["brown"] = "0;33";
219
+ Color["blue"] = "0;34";
220
+ Color["purple"] = "0;35";
221
+ Color["cyan"] = "0;36";
222
+ Color["lightgray"] = "0;37";
223
+ Color["darkgray"] = "1;30";
224
+ Color["lightred"] = "1;31";
225
+ Color["lightgreen"] = "1;32";
226
+ Color["yellow"] = "1;33";
227
+ Color["lightblue"] = "1;34";
228
+ Color["lightpurple"] = "1;35";
229
+ Color["lightcyan"] = "1;36";
230
+ })(Color || (exports.Color = Color = {}));
231
+ class Console {
232
+ // Returns colored message
233
+ static colored(msg, color) {
234
+ return '\x1b[' + Color[color] + 'm' + msg + '\x1b[0m';
235
+ }
236
+ // Show a list of options and let the user pick with up/down + enter
237
+ static async select(title, options, defaul = 0) {
238
+ return new Promise(resolve => {
239
+ Console.step(title);
240
+ let mute = true;
241
+ const mutableStdout = new stream_1.Writable({
242
+ write: function (chunk, encoding, callback) {
243
+ if (!mute) {
244
+ process.stdout.write(chunk, encoding);
245
+ }
246
+ callback();
247
+ }
248
+ });
249
+ const rl = readline.createInterface({
250
+ input: process.stdin,
251
+ output: mutableStdout,
252
+ terminal: true
253
+ });
254
+ let selected = defaul;
255
+ const print = () => {
256
+ mute = false;
257
+ for (let i = 0; i < options.length; i++) {
258
+ rl.write(this.colored(`${i === selected ? '» ' : ' '}` + options[i] + '\n', i === selected ? 'lightgreen' : 'lightgray'));
259
+ }
260
+ mute = true;
261
+ };
262
+ const clear = () => {
263
+ process.stdout.moveCursor(0, -options.length);
264
+ };
265
+ const onKeypress = function (ch, key) {
266
+ if (!key) {
267
+ return;
268
+ }
269
+ if (key.name === 'up') {
270
+ if (selected > 0) {
271
+ selected -= 1;
272
+ }
273
+ }
274
+ else if (key.name === 'down') {
275
+ if (selected < options.length - 1) {
276
+ selected += 1;
277
+ }
278
+ }
279
+ else if (key.name === 'return') {
280
+ rl.close();
281
+ process.stdin.off('keypress', onKeypress);
282
+ resolve(options[selected]);
283
+ }
284
+ clear();
285
+ print();
286
+ };
287
+ process.stdin.on('keypress', onKeypress);
288
+ print();
289
+ });
290
+ }
291
+ // Ask a question and wait for the answer
292
+ static async question(text, defaul = '', prefix = '') {
293
+ return new Promise(resolve => {
294
+ const rl = readline.createInterface({
295
+ input: process.stdin,
296
+ output: process.stdout
297
+ });
298
+ rl.question(this.colored(text + ' ', 'cyan') + prefix, val => {
299
+ rl.close();
300
+ resolve(val);
301
+ });
302
+ rl.write(defaul);
303
+ });
304
+ }
305
+ static waitForAnyKey(title = 'Press any key to continue...') {
306
+ return new Promise(resolve => {
307
+ Console.step(title);
308
+ const mutableStdout = new stream_1.Writable({
309
+ write: function (chunk, encoding, callback) {
310
+ }
311
+ });
312
+ const rl = readline.createInterface({
313
+ input: process.stdin,
314
+ output: mutableStdout,
315
+ terminal: true
316
+ });
317
+ const onKeypress = function (ch, key) {
318
+ rl.close();
319
+ process.stdin.off('keypress', onKeypress);
320
+ resolve();
321
+ };
322
+ process.stdin.on('keypress', onKeypress);
323
+ });
324
+ }
325
+ // Ask a yes or no question and wait for the answer
326
+ static async yesOrNo(text, defaul = 'n') {
327
+ let answer = await this.question(text + ' [y|n]', defaul);
328
+ answer = answer.toLowerCase();
329
+ if (answer === 'y' || answer === 'yes')
330
+ return true;
331
+ return false;
332
+ }
333
+ // Prints a step message to the terminal
334
+ static step(msg) {
335
+ console.log(this.colored('- ' + msg, 'green'));
336
+ }
337
+ // Prints a info message to the terminal
338
+ static info(msg) {
339
+ console.log(this.colored(msg, 'lightblue'));
340
+ }
341
+ // Prints a info message to the terminal
342
+ static cmd(msg) {
343
+ console.log(this.colored('\n\t> ' + msg + '\n', 'darkgray'));
344
+ }
345
+ // Prints a error message to the terminal
346
+ static error(msg) {
347
+ console.log(this.colored('! ' + msg, 'red'));
348
+ }
349
+ // Prints the header
350
+ static header(module) {
351
+ console.log(this.colored(' __', 'lightblue'));
352
+ console.log(this.colored(' ___ __ ____ ___ /\\_\\', 'lightblue'));
353
+ console.log(this.colored(' /\'_ `\\ /\'__`\\ /\',__\\ / __`\\/\\ \\', 'lightblue'));
354
+ console.log(this.colored('/\\ \\/\\ \\/\\ __//\\__, `\\/\\ \\L\\ \\ \\ \\', 'lightblue'));
355
+ console.log(this.colored('\\ \\_\\ \\_\\ \\____\\/\\____/\\ \\____/\\ \\_\\', 'lightblue'));
356
+ console.log(this.colored(' \\/_/\\/_/\\/____/\\/___/ \\/___/ \\/_/', 'lightblue'));
357
+ console.log(this.colored(' ' + package_json_1.default.version, 'cyan'));
358
+ console.log('[ ' + module + ' ]');
359
+ console.log();
360
+ }
361
+ }
362
+ exports.default = Console;
@@ -0,0 +1,18 @@
1
+ import { NesoiObjId } from '../data/obj';
2
+ export type User = {
3
+ id: NesoiObjId;
4
+ [x: string]: any;
5
+ };
6
+ export type AuthnToken = string;
7
+ export type AuthnRequest<P extends keyof any> = {
8
+ [K in P]?: AuthnToken;
9
+ };
10
+ export declare abstract class AuthnProvider<U extends User> {
11
+ abstract authenticate(token: AuthnToken): Promise<U>;
12
+ }
13
+ export type AnyAuthnProviders = {
14
+ [K: string]: AuthnProvider<any>;
15
+ };
16
+ export type AnyUsers = {
17
+ [K: string]: User;
18
+ };
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AuthnProvider = void 0;
4
+ /*
5
+ Provider
6
+ */
7
+ class AuthnProvider {
8
+ }
9
+ exports.AuthnProvider = AuthnProvider;
@@ -0,0 +1,13 @@
1
+ import { NesoiObjId } from '../data/obj';
2
+ import { AuthnProvider, AuthnToken } from './authn';
3
+ type ZeroUser = {
4
+ id: NesoiObjId;
5
+ name: string;
6
+ };
7
+ export declare class ZeroAuthnProvider extends AuthnProvider<ZeroUser> {
8
+ authenticate(_token: AuthnToken): Promise<{
9
+ id: number;
10
+ name: string;
11
+ }>;
12
+ }
13
+ export {};
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ZeroAuthnProvider = void 0;
4
+ const authn_1 = require("./authn");
5
+ class ZeroAuthnProvider extends authn_1.AuthnProvider {
6
+ async authenticate(_token) {
7
+ return Promise.resolve({
8
+ id: 0,
9
+ name: 'User Zero'
10
+ });
11
+ }
12
+ }
13
+ exports.ZeroAuthnProvider = ZeroAuthnProvider;
@@ -0,0 +1,19 @@
1
+ import { AnyDaemon } from '../daemon';
2
+ import { CLIAdapter } from './cli_adapter';
3
+ export type CLIConfig<Providers> = {
4
+ adapters?: {
5
+ [x: string]: (providers: Providers) => CLIAdapter;
6
+ };
7
+ };
8
+ export declare class CLI {
9
+ private daemon;
10
+ config?: CLIConfig<any> | undefined;
11
+ private app;
12
+ private ctx;
13
+ private adapters;
14
+ constructor(daemon: AnyDaemon, config?: CLIConfig<any> | undefined);
15
+ run(): Promise<void>;
16
+ private runCmd;
17
+ private cmdHelp;
18
+ private cmdClear;
19
+ }
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.CLI = void 0;
7
+ const string_1 = require("../util/string");
8
+ const ui_1 = __importDefault(require("./ui"));
9
+ const console_1 = __importDefault(require("../util/console"));
10
+ const daemon_1 = require("../daemon");
11
+ const log_1 = require("../util/log");
12
+ class CLI {
13
+ constructor(daemon, config) {
14
+ this.daemon = daemon;
15
+ this.config = config;
16
+ this.ctx = '';
17
+ this.adapters = {};
18
+ this.app = daemon_1.Daemon.get(daemon, 'name') || 'app';
19
+ // Build adapters
20
+ this.adapters = {};
21
+ Object.entries(config?.adapters || {}).forEach(([key, val]) => {
22
+ this.adapters[key] = val(daemon_1.Daemon.get(daemon, 'providers'));
23
+ this.adapters[key].name = key;
24
+ });
25
+ }
26
+ async run() {
27
+ console_1.default.header('CLI');
28
+ // eslint-disable-next-line no-constant-condition
29
+ while (true) {
30
+ const ctx = `${(0, string_1.colored)(this.app, 'darkgray')}:${(0, string_1.colored)(this.ctx, 'lightcyan')}${(0, string_1.colored)('$', 'brown')}`;
31
+ const cmd = await ui_1.default.question(ctx);
32
+ try {
33
+ if (await this.runCmd(cmd)) {
34
+ break;
35
+ }
36
+ }
37
+ catch (e) {
38
+ console.error(e);
39
+ log_1.Log.error('cli', daemon_1.Daemon.get(this.daemon, 'name'), `Failed to run command: ${cmd}`);
40
+ }
41
+ }
42
+ }
43
+ async runCmd(payload) {
44
+ payload = payload.trim();
45
+ // > help
46
+ // Exit the CLI
47
+ if (payload === 'help') {
48
+ this.cmdHelp();
49
+ return false;
50
+ }
51
+ // > exit
52
+ if (payload === 'exit') {
53
+ return true;
54
+ }
55
+ // > clear
56
+ if (payload === 'clear') {
57
+ this.cmdClear();
58
+ return false;
59
+ }
60
+ for (const name in this.adapters) {
61
+ if (!payload.startsWith(name))
62
+ continue;
63
+ payload = payload.replace(name, '').trim();
64
+ const adapter = this.adapters[name];
65
+ if (await adapter.runCmd(this.daemon, payload)) {
66
+ return false;
67
+ }
68
+ }
69
+ ui_1.default.error('Invalid command');
70
+ return false;
71
+ }
72
+ cmdHelp() {
73
+ ui_1.default.step('\nWelcome to the Nesoi CLI!\n');
74
+ let str = '' +
75
+ `${(0, string_1.colored)('general', 'brown')}\n` +
76
+ `\t${(0, string_1.colored)('help', 'lightcyan')}\n\t\tShow this info\n` +
77
+ `\t${(0, string_1.colored)('exit', 'lightcyan')}\n\t\tClose the CLI\n` +
78
+ `\t${(0, string_1.colored)('clear', 'lightcyan')}\n\t\tClear the sceen\n`;
79
+ Object.values(this.adapters).forEach(adapter => {
80
+ str += adapter.help();
81
+ });
82
+ console.log(str);
83
+ }
84
+ async cmdClear() {
85
+ console.clear();
86
+ }
87
+ }
88
+ exports.CLI = CLI;
@@ -0,0 +1,18 @@
1
+ import { AnyDaemon } from '../daemon';
2
+ export declare abstract class CLICommand<T extends Record<string, any> = Record<string, any>> {
3
+ name: string;
4
+ syntax: string;
5
+ description: string;
6
+ regex?: RegExp | undefined;
7
+ groups?: string[] | undefined;
8
+ constructor(name: string, syntax: string, description: string, regex?: RegExp | undefined, groups?: string[] | undefined);
9
+ input(payload: string): Record<string, any>;
10
+ abstract run(daemon: AnyDaemon, input: T): Promise<void>;
11
+ }
12
+ export declare abstract class CLIAdapter {
13
+ name?: string;
14
+ commands: Record<string, CLICommand>;
15
+ constructor();
16
+ runCmd(daemon: AnyDaemon, payload: string): Promise<boolean>;
17
+ help(): string;
18
+ }
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CLIAdapter = exports.CLICommand = void 0;
4
+ const string_1 = require("../util/string");
5
+ class CLICommand {
6
+ constructor(name, syntax, description, regex, groups) {
7
+ this.name = name;
8
+ this.syntax = syntax;
9
+ this.description = description;
10
+ this.regex = regex;
11
+ this.groups = groups;
12
+ }
13
+ input(payload) {
14
+ if (!this.regex) {
15
+ return {};
16
+ }
17
+ const match = payload.match(this.regex);
18
+ if (!match) {
19
+ throw new Error(`Invalid input for command ${this.name}`);
20
+ }
21
+ const data = {};
22
+ if (this.groups) {
23
+ for (let i = 0; i < this.groups.length; i++) {
24
+ const key = this.groups[i];
25
+ data[key] = match[i + 1];
26
+ }
27
+ }
28
+ return data;
29
+ }
30
+ }
31
+ exports.CLICommand = CLICommand;
32
+ class CLIAdapter {
33
+ constructor() {
34
+ this.commands = {};
35
+ }
36
+ async runCmd(daemon, payload) {
37
+ payload = payload.trim();
38
+ let cmd;
39
+ for (const name in this.commands) {
40
+ if (!payload.startsWith(name))
41
+ continue;
42
+ payload = payload.replace(name, '').trim();
43
+ cmd = this.commands[name];
44
+ }
45
+ if (!cmd) {
46
+ return false;
47
+ }
48
+ const input = cmd.input(payload);
49
+ await cmd.run(daemon, input);
50
+ return true;
51
+ }
52
+ help() {
53
+ const name = this.name || '?';
54
+ let str = `${(0, string_1.colored)(name, 'brown')}\n`;
55
+ Object.values(this.commands).forEach(cmd => {
56
+ str += `\t${(0, string_1.colored)(name + ' ' + cmd.syntax, 'lightcyan')}\n\t\t${cmd.description}\n`;
57
+ });
58
+ return str;
59
+ }
60
+ }
61
+ exports.CLIAdapter = CLIAdapter;
@@ -0,0 +1,36 @@
1
+ export default class UI {
2
+ /**
3
+ * Show a list of options and let the user pick with up/down + enter
4
+ */
5
+ static select(title: string, options: string[], defaul?: number): Promise<string>;
6
+ /**
7
+ * Ask a question and wait for the answer
8
+ */
9
+ static question(text: string, defaul?: string, prefix?: string): Promise<string>;
10
+ /**
11
+ * Show a message and wait for the user to press any key
12
+ */
13
+ static waitForAnyKey(title?: string): Promise<void>;
14
+ /**
15
+ * Ask a yes or no question and wait for the answer
16
+ */
17
+ static yesOrNo(text: string, defaul?: 'y' | 'n'): Promise<boolean>;
18
+ static list(items: string[]): void;
19
+ static result(outcome: 'ok' | 'error', message: string, details?: any): void;
20
+ /**
21
+ * Print a step message to the terminal
22
+ */
23
+ static step(msg: string): void;
24
+ /**
25
+ * Print a info message to the terminal
26
+ */
27
+ static info(msg: string): void;
28
+ /**
29
+ * Print a command to the terminal
30
+ */
31
+ static cmd(msg: string): void;
32
+ /**
33
+ * Print a error message to the terminal
34
+ */
35
+ static error(msg: string): void;
36
+ }