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,602 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.TypeScriptCompiler = void 0;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ const ts = __importStar(require("typescript"));
40
+ const log_1 = require("../../engine/util/log");
41
+ const space_1 = require("../../engine/space");
42
+ const replace_import_transformer_1 = require("./transformers/replace_import.transformer");
43
+ const app_inject_transformer_1 = require("./transformers/app_inject.transformer");
44
+ const string_1 = require("../../engine/util/string");
45
+ const parser_1 = require("./parser");
46
+ class TypeScriptCompiler {
47
+ constructor(space, nesoiPath = 'node_modules/nesoi') {
48
+ this.space = space;
49
+ this.nesoiPath = nesoiPath;
50
+ this.files = TypeScriptCompiler.allFiles([
51
+ space_1.Space.path(space, 'modules')
52
+ ]);
53
+ this.files.push(space_1.Space.path(space, 'nesoi.ts'));
54
+ this.createProgram();
55
+ }
56
+ createProgram() {
57
+ this.program = ts.createProgram({
58
+ rootNames: this.files,
59
+ options: {
60
+ target: ts.ScriptTarget.ES2020,
61
+ module: ts.ModuleKind.CommonJS,
62
+ moduleResolution: ts.ModuleResolutionKind.Node10,
63
+ noEmitOnError: true,
64
+ declaration: false,
65
+ strict: true,
66
+ esModuleInterop: true,
67
+ paths: {
68
+ ...(this.nesoiPath ? { 'nesoi/*': [`${this.nesoiPath}/*`] } : {}),
69
+ '$': ['nesoi.ts']
70
+ },
71
+ rootDir: space_1.Space.path(this.space),
72
+ baseUrl: '.'
73
+ },
74
+ });
75
+ this.checker = this.program.getTypeChecker();
76
+ }
77
+ check(filepath) {
78
+ log_1.Log.debug('compiler', 'ts', `Diagnosing file ${(0, string_1.colored)(filepath, 'blue')}`);
79
+ const source = this.getSource(filepath);
80
+ const diagnostics = ts.getPreEmitDiagnostics(this.program, source);
81
+ TypeScriptCompiler.logDiagnostics(diagnostics);
82
+ if (diagnostics.length) {
83
+ throw new Error('TypeScript errors found.');
84
+ }
85
+ }
86
+ /**
87
+ * Extract all import nodes
88
+ */
89
+ extractImports(filepath, $) {
90
+ log_1.Log.trace('compiler', 'ts', `Extracting imports for file ${(0, string_1.colored)(filepath, 'blue')}`);
91
+ const source = this.getSource(filepath);
92
+ const imports = this.findAll(source, node => {
93
+ if (!ts.isImportDeclaration(node)) {
94
+ return;
95
+ }
96
+ const spec = parser_1.Parser.parseNode(node.moduleSpecifier).value;
97
+ // Not a relative import, use as it is
98
+ if (!spec.startsWith('./') && !spec.startsWith('../')) {
99
+ return node;
100
+ }
101
+ const from = path.resolve(filepath, '..', spec);
102
+ if ($?.ignore?.includes(from)) {
103
+ return;
104
+ }
105
+ return ts.factory.createImportDeclaration(node.modifiers, node.importClause, ts.factory.createStringLiteral(from, true));
106
+ });
107
+ const printer = ts.createPrinter({ newLine: ts.NewLineKind.LineFeed });
108
+ const importStrs = imports.map(node => printer.printNode(ts.EmitHint.Unspecified, node, source));
109
+ return importStrs;
110
+ }
111
+ query(filepath, $) {
112
+ log_1.Log.trace('compiler', 'ts', `Querying '${$.query}' for file ${(0, string_1.colored)(filepath, 'blue')}`);
113
+ const source = this.getSource(filepath);
114
+ const builders = this.findAllNesoiBuilders(source);
115
+ const path = $.query.split('.');
116
+ if (path.length < 2) {
117
+ throw new Error('Query must start with builder_type.(*|builder_name)');
118
+ }
119
+ const buildersOfType = builders[path[0]];
120
+ if (!buildersOfType) {
121
+ throw new Error(`Invalid builder type ${path[0]}`);
122
+ }
123
+ const nodes = Object.entries(buildersOfType).filter(([name, node]) => path[1] === '*' || path[1] === name).map(([name, node]) => {
124
+ const [mod, el] = name.split('::');
125
+ return {
126
+ path: `${mod}::${path[0]}:${el}`,
127
+ node
128
+ };
129
+ });
130
+ const results = this.runQuery(nodes, {
131
+ ...$,
132
+ query: path.slice(2).join('.')
133
+ });
134
+ log_1.Log.trace('compiler', 'ts', 'Query results:', results.map(res => ({
135
+ path: res.path,
136
+ kind: ts.SyntaxKind[res.node.kind]
137
+ })));
138
+ return results;
139
+ }
140
+ runQuery(nodes, $) {
141
+ let results = [...nodes];
142
+ const path = $.query.split('.');
143
+ const loop = {
144
+ query: undefined
145
+ };
146
+ path.forEach(p => {
147
+ // Loop behavior
148
+ let loopStart = false;
149
+ let loopEnd = false;
150
+ if (p.startsWith('{')) {
151
+ p = p.slice(1);
152
+ loop.query = p;
153
+ loopStart = true;
154
+ }
155
+ if (p.endsWith('}')) {
156
+ if (loop.query === undefined) {
157
+ throw new Error('In order to close a loop query, you must open one first');
158
+ }
159
+ p = p.slice(0, -1);
160
+ loopEnd = true;
161
+ }
162
+ if (!loopStart && loop.query !== undefined) {
163
+ loop.query += '.' + p;
164
+ }
165
+ // Filter step
166
+ results = results.map(result => {
167
+ const ptr = result.node;
168
+ // TS API object
169
+ if (ts.isCallExpression(ptr)) {
170
+ const argIdx = parseInt(p);
171
+ if (!isNaN(argIdx)) {
172
+ if (argIdx >= ptr.arguments.length) {
173
+ return [];
174
+ }
175
+ return {
176
+ path: result.path + '▹' + argIdx.toString(),
177
+ node: ptr.arguments[argIdx]
178
+ };
179
+ }
180
+ return this.findInCallChain(ptr, node => {
181
+ const name = this.getCallName(node);
182
+ return p === '*' || name === p;
183
+ }).map(node => {
184
+ const suffix = (ts.isCallExpression(node) && ts.isStringLiteral(node.arguments[0]))
185
+ ? '▹' + node.arguments[0].text
186
+ : '';
187
+ return {
188
+ path: result.path + '▹' + p + suffix,
189
+ node,
190
+ };
191
+ });
192
+ }
193
+ if (ts.isPropertyAccessExpression(ptr)) {
194
+ return this.findInCallChain(ptr, parent => {
195
+ const name = this.getCallName(parent);
196
+ return name === p;
197
+ }).map(node => ({
198
+ path: result.path + '▹' + p,
199
+ node,
200
+ }));
201
+ }
202
+ if (ts.isFunctionExpression(ptr) || ts.isArrowFunction(ptr)) {
203
+ if (p === 'return') {
204
+ const node = this.getReturnNode(ptr);
205
+ if (!node) {
206
+ return [];
207
+ }
208
+ return {
209
+ path: result.path + '▹return',
210
+ node
211
+ };
212
+ }
213
+ throw new Error('You can only query functions with .return');
214
+ }
215
+ if (ts.isObjectLiteralExpression(ptr)) {
216
+ const parseObj = (node, path, nested = false) => {
217
+ return node.properties.map(prop => {
218
+ if (!ts.isPropertyAssignment(prop)) {
219
+ throw new Error('A nesoi builder object property must be an assignment');
220
+ }
221
+ let name;
222
+ if (ts.isIdentifier(prop.name)) {
223
+ name = prop.name.escapedText;
224
+ }
225
+ else if (ts.isStringLiteral(prop.name)) {
226
+ name = prop.name.text;
227
+ }
228
+ else {
229
+ throw new Error('A nesoi builder object property assignment name must be an identifier or string literal');
230
+ }
231
+ if (p === '**') {
232
+ if (ts.isObjectLiteralExpression(prop.initializer)) {
233
+ const nestedPath = path + '▹' + name;
234
+ return parseObj(prop.initializer, nestedPath, true);
235
+ }
236
+ }
237
+ if (p === '*' || p === '**' || name === p) {
238
+ return {
239
+ path: path + (nested ? '.' : '▹') + name,
240
+ node: prop.initializer
241
+ };
242
+ }
243
+ })
244
+ .flat(1)
245
+ .filter(p => !!p);
246
+ };
247
+ return parseObj(ptr, result.path);
248
+ }
249
+ return [];
250
+ }).flat(1);
251
+ // Loop behavior
252
+ if (loopEnd) {
253
+ let loopResults = results;
254
+ while (loopResults.length) {
255
+ loopResults = this.runQuery(loopResults, { query: loop.query, expectedKinds: [] });
256
+ results.push(...loopResults);
257
+ }
258
+ loop.query = undefined;
259
+ }
260
+ });
261
+ if ($.expectedKinds.length) {
262
+ results.forEach(ptr => {
263
+ if (!$.expectedKinds.includes(ptr.node.kind)) {
264
+ throw new Error(`Unexpected kind ${ts.SyntaxKind[ptr.node.kind]} on query result`);
265
+ }
266
+ });
267
+ }
268
+ return results;
269
+ }
270
+ getReturnNode(node) {
271
+ if (!ts.isFunctionExpression(node) && !ts.isArrowFunction(node)) {
272
+ return;
273
+ }
274
+ if (ts.isBlock(node.body)) {
275
+ // Warning: this only returns the first "return"
276
+ // to appear on the AST
277
+ const ret = node.body.statements.find(st => ts.isReturnStatement(st));
278
+ return ret?.expression;
279
+ }
280
+ if (ts.isParenthesizedExpression(node.body)) {
281
+ return node.body.expression;
282
+ }
283
+ if (ts.isCallExpression(node.body)) {
284
+ return node.body;
285
+ }
286
+ if (ts.isIdentifier(node.body)) {
287
+ return undefined;
288
+ }
289
+ throw new Error(`Unknown kind ${ts.SyntaxKind[node.body.kind]} for function body`);
290
+ }
291
+ getReturnType(node) {
292
+ const type = this.checker.getTypeAtLocation(node);
293
+ const signatures = this.checker.getSignaturesOfType(type, ts.SignatureKind.Call);
294
+ let fnReturnType = this.checker.getReturnTypeOfSignature(signatures[0]);
295
+ if (fnReturnType.symbol?.escapedName === 'Promise') {
296
+ fnReturnType = this.checker.getTypeArguments(fnReturnType)[0];
297
+ }
298
+ return this.checker.typeToString(fnReturnType, undefined, ts.TypeFormatFlags.NoTruncation | ts.TypeFormatFlags.NoTypeReduction | ts.TypeFormatFlags.UseFullyQualifiedType // TODO: this causes freaky imports
299
+ );
300
+ }
301
+ getFnText(node) {
302
+ // This method is only used to generated intermediate schemas
303
+ // (the ones on the .nesoi folder). The function should have been
304
+ // evaluated before generating this schema, so the typing is useless here
305
+ return `(${node.getFullText()}) as (...args: any[]) => any`;
306
+ }
307
+ getFnType(node) {
308
+ const type = this.checker.getTypeAtLocation(node);
309
+ return this.checker.typeToString(type, undefined, ts.TypeFormatFlags.NoTruncation | ts.TypeFormatFlags.NoTypeReduction);
310
+ }
311
+ getCallName(node) {
312
+ // Function Call
313
+ if (ts.isCallExpression(node)) {
314
+ if (!ts.isPropertyAccessExpression(node.expression)) {
315
+ return undefined;
316
+ }
317
+ if (!ts.isIdentifier(node.expression.name)) {
318
+ return undefined;
319
+ }
320
+ return node.expression.name.escapedText;
321
+ }
322
+ // Getter Call
323
+ else if (ts.isPropertyAccessExpression(node)) {
324
+ if (!ts.isCallExpression(node.expression)) {
325
+ return undefined;
326
+ }
327
+ return node.name.escapedText;
328
+ }
329
+ return undefined;
330
+ }
331
+ isCall(node, from, method) {
332
+ if (ts.isCallExpression(node)
333
+ && ts.isPropertyAccessExpression(node.expression)
334
+ && ts.isIdentifier(node.expression.name)
335
+ && (!method || node.expression.name.escapedText === method)) {
336
+ const $ = node.expression.expression;
337
+ const symbol = this.checker.getTypeAtLocation($).getSymbol();
338
+ return symbol == from;
339
+ }
340
+ return false;
341
+ }
342
+ getSource(filename) {
343
+ const source = this.program.getSourceFile(filename);
344
+ if (!source) {
345
+ throw new Error(`Unable to find SourceFile for file '${filename}'`);
346
+ }
347
+ return source;
348
+ }
349
+ getNesoiSymbol(name, path) {
350
+ const factorySource = this.getSource(`${this.nesoiPath}/${path}`);
351
+ const factorySourceSymbol = this.checker.getSymbolAtLocation(factorySource);
352
+ if (!factorySourceSymbol) {
353
+ throw new Error(`Unable to find Nesoi symbol named '${name}' at '${path}'`);
354
+ }
355
+ const factorySourceExports = this.checker.getExportsOfModule(factorySourceSymbol);
356
+ for (const expt of factorySourceExports) {
357
+ if (expt.escapedName === name) {
358
+ return expt;
359
+ }
360
+ }
361
+ throw new Error(`Unable to find Nesoi symbol named '${name}' at '${path}'`);
362
+ }
363
+ getPropPath(node) {
364
+ const path = [
365
+ parser_1.Parser.parseNode(node.name).value
366
+ ];
367
+ let ptr = node;
368
+ while (ptr.parent?.parent) {
369
+ ptr = ptr.parent?.parent;
370
+ if (!ts.isPropertyAssignment(ptr)) {
371
+ break;
372
+ }
373
+ path.unshift(parser_1.Parser.parseNode(ptr.name).value);
374
+ }
375
+ return path.join('.');
376
+ }
377
+ findAllNesoiBuilders(node) {
378
+ const Nesoi = this.getNesoiSymbol('Space', 'lib/engine/space.d.ts');
379
+ const allBuilders = this.findAll(node, node => this.isCall(node, Nesoi) ? node : undefined);
380
+ const builders = {};
381
+ allBuilders.forEach(b => {
382
+ if (!ts.isCallExpression(b)) {
383
+ throw new Error('A Space property is not being called as a function');
384
+ }
385
+ if (!ts.isPropertyAccessExpression(b.expression)) {
386
+ throw new Error('A Space property is not being properly called');
387
+ }
388
+ const builderType = parser_1.Parser.parseNode(b.expression.name).value;
389
+ if (!builderType) {
390
+ throw new Error('Unable to identify builder type');
391
+ }
392
+ if (![
393
+ 'externals',
394
+ 'constants',
395
+ 'bucket',
396
+ 'message',
397
+ 'job',
398
+ 'resource',
399
+ 'machine',
400
+ 'controller',
401
+ 'queue',
402
+ ].includes(builderType)) {
403
+ throw new Error(`Unknown builder type ${builderType}`);
404
+ }
405
+ builders[builderType] ?? (builders[builderType] = {});
406
+ if (b.arguments.length != 1) {
407
+ throw new Error('A builder initial call requires a single string argument');
408
+ }
409
+ if (!ts.isStringLiteral(b.arguments[0])) {
410
+ throw new Error('A builder name must be a string (to be known at compile time)');
411
+ }
412
+ const name = parser_1.Parser.parseNode(b.arguments[0]).value;
413
+ builders[builderType][name] = b;
414
+ });
415
+ return builders;
416
+ }
417
+ findAll(node, predicate) {
418
+ const found = [];
419
+ const visit = (node) => {
420
+ const result = predicate(node);
421
+ if (result) {
422
+ found.push(result);
423
+ }
424
+ return node.forEachChild((child) => visit(child));
425
+ };
426
+ node.forEachChild((child) => visit(child));
427
+ return found;
428
+ }
429
+ findParent(from, predicate) {
430
+ let node = from;
431
+ while (node.parent) {
432
+ node = node.parent;
433
+ if (predicate(node)) {
434
+ return node;
435
+ }
436
+ }
437
+ }
438
+ findInCallChain(node, predicate) {
439
+ const results = [];
440
+ const from = this.findCallsUntilRoot(node);
441
+ const to = this.findCallsUntilLast(node);
442
+ from.reverse();
443
+ const calls = [
444
+ ...from,
445
+ ...(ts.isCallExpression(node) ? [node] : []),
446
+ ...to
447
+ ];
448
+ for (const call of calls) {
449
+ if (predicate(call)) {
450
+ results.push(call);
451
+ }
452
+ }
453
+ return results;
454
+ }
455
+ findCallsUntilRoot(from) {
456
+ const calls = [];
457
+ let node = from;
458
+ while (node) {
459
+ if (!ts.isCallExpression(node) && !ts.isPropertyAccessExpression(node)) {
460
+ return calls;
461
+ }
462
+ if (!node.expression || !ts.isPropertyAccessExpression(node.expression)) {
463
+ return calls;
464
+ }
465
+ if (!node.expression.expression) {
466
+ return calls;
467
+ }
468
+ if (ts.isCallExpression(node.expression.expression)) {
469
+ calls.push(node.expression.expression);
470
+ node = node.expression.expression;
471
+ }
472
+ else if (ts.isPropertyAccessExpression(node.expression.expression)) {
473
+ calls.push(node.expression);
474
+ node = node.expression;
475
+ }
476
+ else {
477
+ return calls;
478
+ }
479
+ }
480
+ return calls;
481
+ }
482
+ findCallsUntilLast(from) {
483
+ const calls = [];
484
+ let node = from;
485
+ while (node) {
486
+ if (!node.parent || !ts.isPropertyAccessExpression(node.parent)) {
487
+ return calls;
488
+ }
489
+ if (!node.parent.parent) {
490
+ return calls;
491
+ }
492
+ if (ts.isPropertyAccessExpression(node.parent.parent)) {
493
+ calls.push(node.parent);
494
+ node = node.parent;
495
+ }
496
+ else if (ts.isCallExpression(node.parent.parent)) {
497
+ calls.push(node.parent.parent);
498
+ node = node.parent.parent;
499
+ }
500
+ else {
501
+ return calls;
502
+ }
503
+ }
504
+ return calls;
505
+ }
506
+ static logDiagnostics(diagnostics) {
507
+ if (!diagnostics.length) {
508
+ return;
509
+ }
510
+ log_1.Log.error('compiler', 'ts', 'TypeScript errors found:');
511
+ diagnostics.forEach(diagnostic => {
512
+ if (diagnostic.file) {
513
+ const { line, character } = ts.getLineAndCharacterOfPosition(diagnostic.file, diagnostic.start);
514
+ const message = ts.flattenDiagnosticMessageText(diagnostic.messageText, '\n');
515
+ console.log(`${(0, string_1.colored)(diagnostic.file.fileName, 'blue')}:${(0, string_1.colored)(line + 1 + '', 'purple')},${(0, string_1.colored)(character + 1 + '', 'purple')}: ${(0, string_1.colored)(message, 'red')}`);
516
+ }
517
+ else {
518
+ console.log((0, string_1.colored)(ts.flattenDiagnosticMessageText(diagnostic.messageText, '\n'), 'red'));
519
+ }
520
+ });
521
+ }
522
+ static allFiles(dirPaths) {
523
+ const arrayOfFiles = [];
524
+ for (const dirPath of dirPaths) {
525
+ const files = fs.readdirSync(dirPath);
526
+ files.forEach(function (file) {
527
+ const filepath = path.join(dirPath, file);
528
+ if (fs.lstatSync(filepath).isDirectory()) {
529
+ arrayOfFiles.push(...TypeScriptCompiler.allFiles([filepath]));
530
+ }
531
+ else if (file.endsWith('.ts')) {
532
+ arrayOfFiles.push(path.join(dirPath, file));
533
+ }
534
+ });
535
+ }
536
+ return arrayOfFiles;
537
+ }
538
+ /**
539
+ *
540
+ */
541
+ static compileFile(fileName, options = {
542
+ target: ts.ScriptTarget.ES2020,
543
+ module: ts.ModuleKind.CommonJS,
544
+ moduleResolution: ts.ModuleResolutionKind.Node10
545
+ }) {
546
+ log_1.Log.debug('compiler', 'ts', `Building file ${fileName}`);
547
+ const program = ts.createProgram([fileName], options);
548
+ const source = program.getSourceFile(fileName);
549
+ const diagnostics = ts.getPreEmitDiagnostics(program, source);
550
+ this.logDiagnostics(diagnostics);
551
+ if (diagnostics.length) {
552
+ throw new Error('TypeScript errors found.');
553
+ }
554
+ const result = ts.transpileModule(source.getFullText(), { compilerOptions: options });
555
+ return result.outputText;
556
+ }
557
+ /**
558
+ * !The first file is currently expected to be the app file
559
+ */
560
+ static compileApp(modules, fileNames, options, spacePath, buildPath, paths = {}) {
561
+ // const host = ts.createCompilerHost(options);
562
+ const program = ts.createProgram(fileNames, options);
563
+ let exitCode = 0;
564
+ for (const fileName of fileNames) {
565
+ log_1.Log.debug('compiler', 'ts', `Building file ${fileName}`);
566
+ const source = program.getSourceFile(fileName);
567
+ const emitResult = program.emit(source, (_, text) => {
568
+ let path = _;
569
+ const resolvedPath = paths[fileName];
570
+ if (resolvedPath && typeof resolvedPath === 'string') {
571
+ path = resolvedPath;
572
+ if (_.endsWith('.d.ts')) {
573
+ path = path.replace(/\.js$/, '.d.ts');
574
+ }
575
+ }
576
+ ts.sys.writeFile(path, text);
577
+ }, undefined, undefined, {
578
+ before: [
579
+ (0, replace_import_transformer_1.makeReplaceImportTransformer)(spacePath, buildPath, paths),
580
+ ...(fileName === fileNames[0] ? [(0, app_inject_transformer_1.makeAppInjectTransformer)(modules)] : [])
581
+ ],
582
+ afterDeclarations: [(0, replace_import_transformer_1.makeReplaceImportTransformer)(spacePath, buildPath, paths)]
583
+ });
584
+ emitResult.diagnostics.forEach(diagnostic => {
585
+ if (diagnostic.file) {
586
+ const { line, character } = ts.getLineAndCharacterOfPosition(diagnostic.file, diagnostic.start);
587
+ const message = ts.flattenDiagnosticMessageText(diagnostic.messageText, '\n');
588
+ log_1.Log.error('compiler', 'ts', `${diagnostic.file.fileName} (${line + 1},${character + 1}): ${message}`);
589
+ }
590
+ else {
591
+ log_1.Log.error('compiler', 'ts', ts.flattenDiagnosticMessageText(diagnostic.messageText, '\n'));
592
+ }
593
+ });
594
+ const stepExitCode = emitResult.emitSkipped ? 1 : 0;
595
+ log_1.Log.trace('compiler', 'ts', `Compiler resulted code '${exitCode}'.`);
596
+ if (stepExitCode)
597
+ exitCode = stepExitCode;
598
+ }
599
+ return exitCode;
600
+ }
601
+ }
602
+ exports.TypeScriptCompiler = TypeScriptCompiler;
@@ -0,0 +1,29 @@
1
+ import { $Module, $Space } from "../../schema";
2
+ import { $BlockOutput, $BlockType } from './block.schema';
3
+ import { MultiMessageTemplateDef } from "../entities/message/template/message_template.builder";
4
+ import { $Dependency, BuilderNode } from "../../engine/dependency";
5
+ export declare abstract class BlockBuilder<Space extends $Space, Module extends $Module, Type extends $BlockType> {
6
+ protected module: string;
7
+ protected type: Type;
8
+ protected name: string;
9
+ protected _alias?: string;
10
+ protected _authn: string[];
11
+ protected _inlineNodes: BuilderNode[];
12
+ protected _inputMsgs: $Dependency[];
13
+ protected _output?: $BlockOutput;
14
+ constructor(module: string, type: Type, name: string);
15
+ /** Block "human" name */
16
+ as(alias: string): this;
17
+ /**
18
+ * Inline messages. These messages are exposed to the module,
19
+ * with a name prefixed by the block name.
20
+ * @param def Example: `$ => { msg1: { prop1: $.int, prop2: $.string }, msg2: { prop3: $.boolean } }`
21
+ * @returns
22
+ */
23
+ protected messages<Def extends MultiMessageTemplateDef<Space, Module>>(def: Def): unknown;
24
+ authn(...providers: string[]): unknown;
25
+ protected _input(...names: string[]): unknown;
26
+ protected outputRaw(): unknown;
27
+ protected outputMsg(...msgs: string[]): unknown;
28
+ protected outputObj(...objs: string[]): unknown;
29
+ }