nesoi 3.0.8 → 3.0.10

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 (266) hide show
  1. package/lib/compiler/apps/monolyth/monolyth_compiler.d.ts +1 -1
  2. package/lib/compiler/apps/monolyth/monolyth_compiler.js +7 -7
  3. package/lib/compiler/apps/monolyth/stages/1_mkdir_stage.d.ts +3 -0
  4. package/lib/compiler/apps/monolyth/stages/1_mkdir_stage.js +3 -0
  5. package/lib/compiler/apps/monolyth/stages/2_build_typescript_stage.d.ts +3 -0
  6. package/lib/compiler/apps/monolyth/stages/2_build_typescript_stage.js +3 -0
  7. package/lib/compiler/apps/monolyth/stages/3_copy_types_stage.d.ts +3 -0
  8. package/lib/compiler/apps/monolyth/stages/3_copy_types_stage.js +3 -0
  9. package/lib/compiler/apps/monolyth/stages/4_dump_modules_stage.d.ts +3 -0
  10. package/lib/compiler/apps/monolyth/stages/4_dump_modules_stage.js +3 -0
  11. package/lib/compiler/apps/monolyth/stages/5_dump_cli_stage.d.ts +3 -0
  12. package/lib/compiler/apps/monolyth/stages/5_dump_cli_stage.js +3 -0
  13. package/lib/compiler/apps/monolyth/stages/6_dump_package_json_stage.d.ts +3 -0
  14. package/lib/compiler/apps/monolyth/stages/6_dump_package_json_stage.js +3 -0
  15. package/lib/compiler/elements/externals.element.d.ts +1 -1
  16. package/lib/compiler/module.js +1 -1
  17. package/lib/compiler/stages/1_scan_stage.d.ts +3 -0
  18. package/lib/compiler/stages/1_scan_stage.js +3 -0
  19. package/lib/compiler/stages/2_treeshake_stage.d.ts +3 -0
  20. package/lib/compiler/stages/2_treeshake_stage.js +3 -0
  21. package/lib/compiler/stages/3_extract_ts_stage.d.ts +3 -0
  22. package/lib/compiler/stages/3_extract_ts_stage.js +3 -0
  23. package/lib/compiler/stages/4_build_schemas_stage.d.ts +3 -0
  24. package/lib/compiler/stages/4_build_schemas_stage.js +3 -0
  25. package/lib/compiler/stages/5_inject_ts_stage.d.ts +3 -0
  26. package/lib/compiler/stages/5_inject_ts_stage.js +3 -0
  27. package/lib/compiler/stages/6_build_elements_stage.d.ts +3 -0
  28. package/lib/compiler/stages/6_build_elements_stage.js +3 -0
  29. package/lib/compiler/stages/7_dump_stage.d.ts +3 -0
  30. package/lib/compiler/stages/7_dump_stage.js +3 -0
  31. package/lib/compiler/stages/8_diagnose_stage.d.ts +3 -0
  32. package/lib/compiler/stages/8_diagnose_stage.js +3 -0
  33. package/lib/compiler/treeshake.js +3 -3
  34. package/lib/elements/blocks/block.builder.d.ts +6 -2
  35. package/lib/elements/blocks/block.builder.js +8 -4
  36. package/lib/elements/blocks/block.schema.d.ts +4 -0
  37. package/lib/elements/blocks/block.schema.js +4 -0
  38. package/lib/elements/blocks/job/internal/machine_job.builder.d.ts +6 -3
  39. package/lib/elements/blocks/job/internal/machine_job.builder.js +5 -2
  40. package/lib/elements/blocks/job/internal/machine_job.schema.d.ts +4 -0
  41. package/lib/elements/blocks/job/internal/machine_job.schema.js +4 -0
  42. package/lib/elements/blocks/job/internal/resource_job.builder.d.ts +4 -0
  43. package/lib/elements/blocks/job/internal/resource_job.builder.js +4 -0
  44. package/lib/elements/blocks/job/internal/resource_job.d.ts +4 -0
  45. package/lib/elements/blocks/job/internal/resource_job.js +4 -0
  46. package/lib/elements/blocks/job/internal/resource_job.schema.d.ts +4 -0
  47. package/lib/elements/blocks/job/internal/resource_job.schema.js +4 -0
  48. package/lib/elements/blocks/job/job.builder.d.ts +4 -0
  49. package/lib/elements/blocks/job/job.builder.js +4 -0
  50. package/lib/elements/blocks/job/job.d.ts +4 -0
  51. package/lib/elements/blocks/job/job.js +4 -0
  52. package/lib/elements/blocks/job/job.schema.d.ts +4 -0
  53. package/lib/elements/blocks/job/job.schema.js +4 -0
  54. package/lib/elements/blocks/machine/machine.builder.d.ts +4 -0
  55. package/lib/elements/blocks/machine/machine.builder.js +16 -1
  56. package/lib/elements/blocks/machine/machine.d.ts +12 -0
  57. package/lib/elements/blocks/machine/machine.js +12 -0
  58. package/lib/elements/blocks/machine/machine.schema.d.ts +18 -1
  59. package/lib/elements/blocks/machine/machine.schema.js +18 -2
  60. package/lib/elements/blocks/machine/machine_state.builder.d.ts +4 -0
  61. package/lib/elements/blocks/machine/machine_state.builder.js +4 -0
  62. package/lib/elements/blocks/machine/machine_transition.builder.d.ts +4 -0
  63. package/lib/elements/blocks/machine/machine_transition.builder.js +4 -0
  64. package/lib/elements/blocks/queue/adapters/bucket.queue_adapter.d.ts +4 -0
  65. package/lib/elements/blocks/queue/adapters/bucket.queue_adapter.js +4 -0
  66. package/lib/elements/blocks/queue/adapters/queue_adapter.d.ts +4 -0
  67. package/lib/elements/blocks/queue/adapters/queue_adapter.js +4 -0
  68. package/lib/elements/blocks/queue/queue.builder.d.ts +4 -0
  69. package/lib/elements/blocks/queue/queue.builder.js +4 -0
  70. package/lib/elements/blocks/queue/queue.schema.d.ts +4 -0
  71. package/lib/elements/blocks/queue/queue.schema.js +4 -0
  72. package/lib/elements/blocks/resource/resource.builder.d.ts +4 -0
  73. package/lib/elements/blocks/resource/resource.builder.js +4 -0
  74. package/lib/elements/blocks/resource/resource.d.ts +4 -0
  75. package/lib/elements/blocks/resource/resource.js +4 -0
  76. package/lib/elements/blocks/resource/resource.schema.d.ts +4 -0
  77. package/lib/elements/blocks/resource/resource.schema.js +4 -0
  78. package/lib/elements/edge/controller/adapters/cli.controller_adapter.d.ts +4 -0
  79. package/lib/elements/edge/controller/adapters/cli.controller_adapter.js +4 -0
  80. package/lib/elements/edge/controller/adapters/controller_adapter.d.ts +7 -1
  81. package/lib/elements/edge/controller/adapters/controller_adapter.js +6 -1
  82. package/lib/elements/edge/controller/controller.builder.d.ts +16 -0
  83. package/lib/elements/edge/controller/controller.builder.js +16 -0
  84. package/lib/elements/edge/controller/controller.config.d.ts +3 -2
  85. package/lib/elements/edge/controller/controller.d.ts +7 -3
  86. package/lib/elements/edge/controller/controller.js +7 -3
  87. package/lib/elements/edge/controller/controller.schema.d.ts +16 -0
  88. package/lib/elements/edge/controller/controller.schema.js +16 -0
  89. package/lib/elements/{blocks → edge}/externals/externals.builder.d.ts +4 -0
  90. package/lib/elements/{blocks → edge}/externals/externals.builder.js +4 -0
  91. package/lib/elements/{blocks → edge}/externals/externals.schema.d.ts +4 -0
  92. package/lib/elements/{blocks → edge}/externals/externals.schema.js +4 -0
  93. package/lib/elements/entities/bucket/adapters/bucket_adapter.d.ts +18 -12
  94. package/lib/elements/entities/bucket/adapters/bucket_adapter.js +5 -0
  95. package/lib/elements/entities/bucket/adapters/memory.bucket_adapter.d.ts +4 -0
  96. package/lib/elements/entities/bucket/adapters/memory.bucket_adapter.js +4 -0
  97. package/lib/elements/entities/bucket/adapters/memory.nql.d.ts +4 -1
  98. package/lib/elements/entities/bucket/adapters/memory.nql.js +4 -1
  99. package/lib/elements/entities/bucket/bucket.builder.d.ts +4 -0
  100. package/lib/elements/entities/bucket/bucket.builder.js +4 -0
  101. package/lib/elements/entities/bucket/bucket.config.d.ts +3 -3
  102. package/lib/elements/entities/bucket/bucket.d.ts +12 -4
  103. package/lib/elements/entities/bucket/bucket.js +18 -11
  104. package/lib/elements/entities/bucket/bucket.schema.d.ts +4 -0
  105. package/lib/elements/entities/bucket/bucket.schema.js +4 -0
  106. package/lib/elements/entities/bucket/cache/bucket_cache.d.ts +8 -0
  107. package/lib/elements/entities/bucket/cache/bucket_cache.js +8 -0
  108. package/lib/elements/entities/bucket/graph/bucket_graph.builder.d.ts +4 -0
  109. package/lib/elements/entities/bucket/graph/bucket_graph.builder.js +4 -0
  110. package/lib/elements/entities/bucket/graph/bucket_graph.d.ts +4 -0
  111. package/lib/elements/entities/bucket/graph/bucket_graph.js +4 -0
  112. package/lib/elements/entities/bucket/graph/bucket_graph.schema.d.ts +8 -0
  113. package/lib/elements/entities/bucket/graph/bucket_graph.schema.js +8 -0
  114. package/lib/elements/entities/bucket/graph/bucket_graph_link.builder.d.ts +8 -0
  115. package/lib/elements/entities/bucket/graph/bucket_graph_link.builder.js +8 -0
  116. package/lib/elements/entities/bucket/model/bucket_model.builder.d.ts +4 -0
  117. package/lib/elements/entities/bucket/model/bucket_model.builder.js +4 -0
  118. package/lib/elements/entities/bucket/model/bucket_model.convert.d.ts +8 -0
  119. package/lib/elements/entities/bucket/model/bucket_model.convert.js +8 -0
  120. package/lib/elements/entities/bucket/model/bucket_model.schema.d.ts +8 -0
  121. package/lib/elements/entities/bucket/model/bucket_model.schema.js +8 -0
  122. package/lib/elements/entities/bucket/model/bucket_model_field.builder.d.ts +8 -0
  123. package/lib/elements/entities/bucket/model/bucket_model_field.builder.js +8 -0
  124. package/lib/elements/entities/bucket/query/nql_compiler.d.ts +9 -0
  125. package/lib/elements/entities/bucket/query/nql_compiler.js +9 -0
  126. package/lib/elements/entities/bucket/query/nql_engine.d.ts +6 -0
  127. package/lib/elements/entities/bucket/query/nql_engine.js +6 -0
  128. package/lib/elements/entities/bucket/view/bucket_view.builder.d.ts +4 -0
  129. package/lib/elements/entities/bucket/view/bucket_view.builder.js +4 -0
  130. package/lib/elements/entities/bucket/view/bucket_view.d.ts +4 -0
  131. package/lib/elements/entities/bucket/view/bucket_view.js +10 -2
  132. package/lib/elements/entities/bucket/view/bucket_view.schema.d.ts +8 -0
  133. package/lib/elements/entities/bucket/view/bucket_view.schema.js +8 -0
  134. package/lib/elements/entities/bucket/view/bucket_view_field.builder.d.ts +8 -0
  135. package/lib/elements/entities/bucket/view/bucket_view_field.builder.js +8 -0
  136. package/lib/elements/entities/constants/constants.builder.d.ts +21 -6
  137. package/lib/elements/entities/constants/constants.builder.js +21 -6
  138. package/lib/elements/entities/constants/constants.d.ts +4 -0
  139. package/lib/elements/entities/constants/constants.js +4 -0
  140. package/lib/elements/entities/constants/constants.schema.d.ts +16 -0
  141. package/lib/elements/entities/constants/constants.schema.js +16 -0
  142. package/lib/elements/entities/drive/drive_adapter.d.ts +15 -10
  143. package/lib/elements/entities/drive/drive_adapter.js +5 -2
  144. package/lib/elements/entities/drive/local.drive_adapter.d.ts +10 -4
  145. package/lib/elements/entities/drive/local.drive_adapter.js +23 -8
  146. package/lib/elements/entities/message/message.builder.d.ts +4 -0
  147. package/lib/elements/entities/message/message.builder.js +4 -0
  148. package/lib/elements/entities/message/message.d.ts +4 -0
  149. package/lib/elements/entities/message/message.js +4 -0
  150. package/lib/elements/entities/message/message.schema.d.ts +4 -0
  151. package/lib/elements/entities/message/message.schema.js +4 -0
  152. package/lib/elements/entities/message/message_parser.d.ts +4 -0
  153. package/lib/elements/entities/message/message_parser.js +4 -0
  154. package/lib/elements/entities/message/template/message_template.builder.d.ts +4 -0
  155. package/lib/elements/entities/message/template/message_template.builder.js +4 -0
  156. package/lib/elements/entities/message/template/message_template.schema.d.ts +9 -0
  157. package/lib/elements/entities/message/template/message_template.schema.js +25 -0
  158. package/lib/elements/entities/message/template/message_template_field.builder.d.ts +8 -0
  159. package/lib/elements/entities/message/template/message_template_field.builder.js +8 -0
  160. package/lib/elements/index.d.ts +1 -1
  161. package/lib/elements/index.js +1 -1
  162. package/lib/engine/apps/app.config.d.ts +15 -11
  163. package/lib/engine/apps/app.config.js +3 -0
  164. package/lib/engine/apps/app.d.ts +12 -20
  165. package/lib/engine/apps/app.js +13 -10
  166. package/lib/engine/apps/inline.app.d.ts +12 -8
  167. package/lib/engine/apps/inline.app.js +27 -24
  168. package/lib/engine/apps/monolyth/monolyth.app.d.ts +13 -5
  169. package/lib/engine/apps/monolyth/monolyth.app.js +14 -6
  170. package/lib/engine/apps/service.d.ts +30 -0
  171. package/lib/engine/apps/service.js +15 -0
  172. package/lib/engine/auth/authn.d.ts +14 -1
  173. package/lib/engine/auth/authn.js +4 -0
  174. package/lib/engine/auth/zero.authn_provider.d.ts +11 -3
  175. package/lib/engine/auth/zero.authn_provider.js +13 -2
  176. package/lib/engine/cli/cli.d.ts +8 -2
  177. package/lib/engine/cli/cli.js +10 -1
  178. package/lib/engine/cli/cli_adapter.d.ts +11 -1
  179. package/lib/engine/cli/cli_adapter.js +10 -1
  180. package/lib/engine/cli/cli_input.d.ts +4 -0
  181. package/lib/engine/cli/cli_input.js +4 -0
  182. package/lib/engine/cli/ui.d.ts +14 -2
  183. package/lib/engine/cli/ui.js +10 -6
  184. package/lib/engine/daemon.d.ts +96 -9
  185. package/lib/engine/daemon.js +101 -18
  186. package/lib/engine/data/date.d.ts +4 -0
  187. package/lib/engine/data/date.js +4 -0
  188. package/lib/engine/data/datetime.d.ts +4 -0
  189. package/lib/engine/data/datetime.js +4 -0
  190. package/lib/engine/data/decimal.d.ts +4 -0
  191. package/lib/engine/data/decimal.js +4 -0
  192. package/lib/engine/data/file.d.ts +23 -23
  193. package/lib/engine/data/file.js +66 -29
  194. package/lib/engine/data/json.d.ts +4 -0
  195. package/lib/engine/data/json.js +4 -0
  196. package/lib/engine/data/tree.d.ts +4 -0
  197. package/lib/engine/data/tree.js +4 -0
  198. package/lib/engine/dependency.d.ts +65 -3
  199. package/lib/engine/dependency.js +70 -0
  200. package/lib/engine/module.d.ts +110 -8
  201. package/lib/engine/module.js +131 -31
  202. package/lib/engine/space.d.ts +163 -10
  203. package/lib/engine/space.js +184 -22
  204. package/lib/engine/transaction/nodes/bucket.trx_node.d.ts +12 -0
  205. package/lib/engine/transaction/nodes/bucket.trx_node.js +13 -2
  206. package/lib/engine/transaction/nodes/bucket_query.trx_node.d.ts +4 -0
  207. package/lib/engine/transaction/nodes/bucket_query.trx_node.js +9 -10
  208. package/lib/engine/transaction/nodes/job.trx_node.d.ts +4 -0
  209. package/lib/engine/transaction/nodes/job.trx_node.js +6 -4
  210. package/lib/engine/transaction/nodes/machine.trx_node.d.ts +4 -0
  211. package/lib/engine/transaction/nodes/machine.trx_node.js +6 -4
  212. package/lib/engine/transaction/nodes/queue.trx_node.d.ts +4 -0
  213. package/lib/engine/transaction/nodes/queue.trx_node.js +5 -2
  214. package/lib/engine/transaction/nodes/resource.trx_node.d.ts +4 -0
  215. package/lib/engine/transaction/nodes/resource.trx_node.js +6 -4
  216. package/lib/engine/transaction/trx.d.ts +14 -4
  217. package/lib/engine/transaction/trx.js +10 -1
  218. package/lib/engine/transaction/trx_engine.config.d.ts +2 -2
  219. package/lib/engine/transaction/trx_engine.d.ts +8 -3
  220. package/lib/engine/transaction/trx_engine.js +24 -20
  221. package/lib/engine/transaction/trx_node.d.ts +8 -2
  222. package/lib/engine/transaction/trx_node.js +17 -1
  223. package/lib/engine/tree.d.ts +54 -2
  224. package/lib/engine/tree.js +60 -19
  225. package/lib/engine/util/mime.d.ts +4 -4
  226. package/lib/engine/util/mime.js +7 -9
  227. package/lib/schema.d.ts +2 -2
  228. package/package.json +2 -3
  229. package/tools/joaquin/job.js +2 -2
  230. package/tools/joaquin/message.js +2 -2
  231. package/tools/joaquin/mock.d.ts +6 -6
  232. package/tsconfig.build.tsbuildinfo +1 -1
  233. package/lib/adapters/postgres/src/migrator/bucket.d.ts +0 -20
  234. package/lib/adapters/postgres/src/migrator/bucket.js +0 -184
  235. package/lib/adapters/postgres/src/migrator/csv.d.ts +0 -7
  236. package/lib/adapters/postgres/src/migrator/csv.js +0 -72
  237. package/lib/adapters/postgres/src/migrator/database.d.ts +0 -37
  238. package/lib/adapters/postgres/src/migrator/database.js +0 -88
  239. package/lib/adapters/postgres/src/migrator/index.d.ts +0 -1
  240. package/lib/adapters/postgres/src/migrator/index.js +0 -5
  241. package/lib/adapters/postgres/src/migrator/migration.d.ts +0 -57
  242. package/lib/adapters/postgres/src/migrator/migration.js +0 -203
  243. package/lib/adapters/postgres/src/migrator/migrator.d.ts +0 -21
  244. package/lib/adapters/postgres/src/migrator/migrator.js +0 -76
  245. package/lib/adapters/postgres/src/migrator/runner.d.ts +0 -71
  246. package/lib/adapters/postgres/src/migrator/runner.js +0 -271
  247. package/lib/adapters/postgres/src/postgres.bucket_adapter.d.ts +0 -42
  248. package/lib/adapters/postgres/src/postgres.bucket_adapter.js +0 -294
  249. package/lib/adapters/postgres/src/postgres.cli.d.ts +0 -66
  250. package/lib/adapters/postgres/src/postgres.cli.js +0 -184
  251. package/lib/adapters/postgres/src/postgres.config.d.ts +0 -5
  252. package/lib/adapters/postgres/src/postgres.config.js +0 -2
  253. package/lib/adapters/postgres/src/postgres.nql.d.ts +0 -16
  254. package/lib/adapters/postgres/src/postgres.nql.js +0 -123
  255. package/lib/adapters/postgres/src/postgres.provider.d.ts +0 -18
  256. package/lib/adapters/postgres/src/postgres.provider.js +0 -77
  257. package/lib/adapters/postgres/test/postgres.bucket_adapter.test.d.ts +0 -1
  258. package/lib/adapters/postgres/test/postgres.bucket_adapter.test.js +0 -210
  259. package/lib/elements/entities/bucket/adapters/memory.bucket_query copy.d.ts +0 -0
  260. package/lib/elements/entities/bucket/adapters/memory.bucket_query copy.js +0 -218
  261. package/lib/elements/entities/bucket/adapters/slow_memory.bucket_adapter.d.ts +0 -0
  262. package/lib/elements/entities/bucket/adapters/slow_memory.bucket_adapter.js +0 -47
  263. package/lib/engine/apps/monolyth/monolyth.cli.d.ts +0 -45
  264. package/lib/engine/apps/monolyth/monolyth.cli.js +0 -362
  265. package/lib/engine/util/cache.d.ts +0 -6
  266. package/lib/engine/util/cache.js +0 -20
@@ -4,23 +4,28 @@ import { Trx } from './trx';
4
4
  import { TrxNode, TrxNodeStatus } from './trx_node';
5
5
  import { AnyAuthnProviders, AuthnRequest } from '../auth/authn';
6
6
  import { TrxEngineConfig } from './trx_engine.config';
7
+ import { IService } from '../apps/service';
7
8
  export type TrxEngineOrigin = `app:${string}`;
9
+ /**
10
+ * @category Engine
11
+ * @subcategory Transaction
12
+ */
8
13
  export declare class TrxEngine<S extends $Space, M extends $Module, Authn extends AnyAuthnProviders> {
9
14
  private origin;
10
15
  private module;
11
16
  private authnProviders?;
12
17
  private config?;
13
- private providers;
18
+ private services;
14
19
  /**
15
20
  * Transaction used to read/write transactions on the adapter
16
21
  */
17
22
  private innerTrx;
18
23
  private adapter;
19
- constructor(origin: TrxEngineOrigin, module: Module<S, M>, authnProviders?: Authn | undefined, config?: TrxEngineConfig<S, M, any, any> | undefined, providers?: Record<string, any>);
24
+ constructor(origin: TrxEngineOrigin, module: Module<S, M>, authnProviders?: Authn | undefined, config?: TrxEngineConfig<S, M, any, any> | undefined, services?: Record<string, IService>);
20
25
  getModule(): Module<S, M>;
21
26
  get(id?: string): Promise<Trx<S, M, any>>;
22
27
  trx(fn: (trx: TrxNode<S, M, any>) => Promise<TrxNodeStatus>, authn?: AuthnRequest<keyof Authn>): Promise<import("./trx").TrxStatus<any>>;
23
- private authenticate;
28
+ authenticate(node: TrxNode<S, M, any>, request?: AuthnRequest<keyof Authn>): Promise<void>;
24
29
  private commit;
25
30
  private rollback;
26
31
  }
@@ -6,17 +6,18 @@ const trx_1 = require("./trx");
6
6
  const trx_node_1 = require("./trx_node");
7
7
  const error_1 = require("../data/error");
8
8
  const memory_bucket_adapter_1 = require("../../elements/entities/bucket/adapters/memory.bucket_adapter");
9
- /*
10
- Transaction Engine
11
- */
9
+ /**
10
+ * @category Engine
11
+ * @subcategory Transaction
12
+ */
12
13
  class TrxEngine {
13
- constructor(origin, module, authnProviders, config, providers = {}) {
14
+ constructor(origin, module, authnProviders, config, services = {}) {
14
15
  this.origin = origin;
15
16
  this.module = module;
16
17
  this.authnProviders = authnProviders;
17
18
  this.config = config;
18
- this.providers = providers;
19
- this.innerTrx = new trx_1.Trx(this.module, `trx:${origin}`);
19
+ this.services = services;
20
+ this.innerTrx = new trx_1.Trx(this, this.module, `trx:${origin}`);
20
21
  this.adapter = config?.adapter?.(module.schema) || new memory_bucket_adapter_1.MemoryBucketAdapter({}, {});
21
22
  }
22
23
  getModule() {
@@ -25,7 +26,7 @@ class TrxEngine {
25
26
  async get(id) {
26
27
  let trx = undefined;
27
28
  if (!id) {
28
- trx = new trx_1.Trx(this.module, this.origin);
29
+ trx = new trx_1.Trx(this, this.module, this.origin);
29
30
  log_1.Log.info('module', this.module.name, `Begin ${(0, log_1.scopeTag)('trx', trx.id)} @ ${(0, log_1.anyScopeTag)(this.origin)}`);
30
31
  return this.adapter.create(this.innerTrx.root, trx);
31
32
  }
@@ -36,7 +37,7 @@ class TrxEngine {
36
37
  }
37
38
  else {
38
39
  log_1.Log.info('module', this.module.name, `Chain ${(0, log_1.scopeTag)('trx', id)} @ ${(0, log_1.anyScopeTag)(this.origin)}`);
39
- trx = new trx_1.Trx(this.module, this.origin, undefined, id);
40
+ trx = new trx_1.Trx(this, this.module, this.origin, undefined, id);
40
41
  return this.adapter.create(this.innerTrx.root, trx);
41
42
  }
42
43
  }
@@ -45,13 +46,10 @@ class TrxEngine {
45
46
  async trx(fn, authn) {
46
47
  const trx = await this.get(undefined);
47
48
  try {
48
- const users = authn ? await this.authenticate(trx.root, authn) : undefined;
49
- if (users) {
50
- trx_node_1.TrxNode.addAuthn(trx.root, authn, users);
51
- }
49
+ await this.authenticate(trx.root, authn);
52
50
  let output;
53
51
  if (this.config?.wrap) {
54
- output = await this.config?.wrap(trx, fn, this.providers);
52
+ output = await this.config?.wrap(trx, fn, this.services);
55
53
  }
56
54
  else {
57
55
  output = await fn(trx.root);
@@ -64,19 +62,25 @@ class TrxEngine {
64
62
  return trx.status();
65
63
  }
66
64
  // authentication
67
- async authenticate(trx, request) {
65
+ async authenticate(node, request = {}) {
68
66
  if (!this.authnProviders) {
69
67
  throw error_1.NesoiError.Authn.NoProvidersRegisteredForModule(this.module.name);
70
68
  }
71
69
  const users = {};
72
- for (const provider in request) {
73
- const token = request[provider];
74
- if (!(provider in this.authnProviders)) {
75
- throw error_1.NesoiError.Authn.NoProviderRegisteredForModule(this.module.name, provider);
70
+ const tokens = {};
71
+ for (const providerName in this.authnProviders) {
72
+ const provider = this.authnProviders[providerName];
73
+ const reqToken = request[providerName];
74
+ if (provider.eager || reqToken) {
75
+ if (!provider) {
76
+ throw error_1.NesoiError.Authn.NoProviderRegisteredForModule(this.module.name, providerName);
77
+ }
78
+ const { user, token } = await provider.authenticate({ trx: node, token: reqToken });
79
+ users[providerName] = user;
80
+ tokens[providerName] = token;
76
81
  }
77
- users[provider] = await this.authnProviders[provider].authenticate({ trx, token });
78
82
  }
79
- return users;
83
+ trx_node_1.TrxNode.addAuthn(node, tokens, users);
80
84
  }
81
85
  //
82
86
  async commit(trx, output) {
@@ -1,4 +1,5 @@
1
1
  import { $Module, $Space } from "../../schema";
2
+ import { NesoiError } from '../data/error';
2
3
  import { AnyModule, VirtualModuleDef } from '../module';
3
4
  import { AnyTrx } from './trx';
4
5
  import { BucketTrxNode } from './nodes/bucket.trx_node';
@@ -18,10 +19,14 @@ export type TrxNodeStatus = {
18
19
  action?: string;
19
20
  input?: Record<string, any>;
20
21
  output?: Record<string, any>;
21
- error?: string;
22
+ error?: NesoiError.BaseError;
22
23
  nodes: TrxNodeStatus[];
23
24
  app: number;
24
25
  };
26
+ /**
27
+ * @category Engine
28
+ * @subcategory Transaction
29
+ */
25
30
  export declare class TrxNode<Space extends $Space, M extends $Module, Authn extends AnyUsers> {
26
31
  private scope;
27
32
  private trx;
@@ -43,7 +48,7 @@ export declare class TrxNode<Space extends $Space, M extends $Module, Authn exte
43
48
  } | undefined, id?: string);
44
49
  static open(node: AnyTrxNode, action: string, input: Record<string, any>): Promise<void>;
45
50
  static ok(node: AnyTrxNode, output?: Record<string, any>): Promise<void>;
46
- static error(node: AnyTrxNode, error: any): Promise<void>;
51
+ static error(node: AnyTrxNode, error: any): Promise<any>;
47
52
  message<Raw extends M['#input']['#raw'], Msg extends $Message = M['messages'][Raw['$'] & keyof M['messages']]>(raw: Raw): Promise<M['#input']['#parsed']>;
48
53
  value<K extends keyof M['constants']['values']>(key: K): M["constants"]["values"][K]["value"];
49
54
  enum<EnumName extends KeysOfUnion<Space['modules'][keyof Space['modules']]['constants']['enums']>>(name: EnumName): Enum<M['constants']['enums'][EnumName]>;
@@ -53,6 +58,7 @@ export declare class TrxNode<Space extends $Space, M extends $Module, Authn exte
53
58
  resource<Name extends keyof M['resources'], Resource extends M['resources'][Name]>(name: Name): ResourceTrxNode<M, Resource>;
54
59
  machine<Name extends keyof M['machines'], Machine extends M['machines'][Name]>(name: Name): MachineTrxNode<M, Machine>;
55
60
  queue<Name extends keyof M['queues'], Queue extends M['queues'][Name]>(name: Name): QueueTrxNode<M, Queue>;
61
+ authenticate(authnRequest: AuthnRequest<keyof Authn>): Promise<TrxNode<$Space, $Module, Authn>>;
56
62
  token<U extends keyof Authn & keyof M['#authn']>(provider: U): M['#authn'][U];
57
63
  user<U extends keyof Authn & keyof M['#authn']>(provider: U): M['#authn'][U];
58
64
  virtual<T>(def: VirtualModuleDef, fn: ($: AnyTrxNode) => T | Promise<T>): Promise<T>;
@@ -15,6 +15,10 @@ const datetime_1 = require("../data/datetime");
15
15
  /*
16
16
  Transaction Node
17
17
  */
18
+ /**
19
+ * @category Engine
20
+ * @subcategory Transaction
21
+ */
18
22
  class TrxNode {
19
23
  constructor(scope, trx, parent, module, authn, id) {
20
24
  this.scope = scope;
@@ -47,8 +51,15 @@ class TrxNode {
47
51
  }
48
52
  static async error(node, error) {
49
53
  node.state = 'error';
50
- node.error = i18n_1.i18n.error(error, node.trx.root.module.daemon);
54
+ if (error instanceof error_1.NesoiError.BaseError) {
55
+ error.message = i18n_1.i18n.error(error, node.trx.root.module.daemon);
56
+ }
57
+ else {
58
+ error = new error_1.NesoiError.BaseError('UnknownError', error.toString());
59
+ }
60
+ node.error = error;
51
61
  node.time.end = datetime_1.NesoiDatetime.now();
62
+ return error;
52
63
  }
53
64
  // Entities
54
65
  async message(raw) {
@@ -117,6 +128,11 @@ class TrxNode {
117
128
  return new queue_trx_node_1.QueueTrxNode(this, queue);
118
129
  }
119
130
  // Authentication
131
+ async authenticate(authnRequest) {
132
+ const newNode = new TrxNode(this.scope, this.trx, this, this.module, this.authn);
133
+ await this.trx.engine.authenticate(newNode, authnRequest);
134
+ return newNode;
135
+ }
120
136
  token(provider) {
121
137
  if (!this.authn?.tokens) {
122
138
  throw error_1.NesoiError.Authn.NoUsersAuthenticatedForTrxNode(this.globalId);
@@ -3,32 +3,84 @@ import { ResolvedBuilderNode } from './dependency';
3
3
  import { AnyModule } from './module';
4
4
  import { TreeshakeConfig } from "../compiler/treeshake";
5
5
  type TraverseCallback = (node: ResolvedBuilderNode) => Promise<void>;
6
+ /**
7
+ * A tree of module elements which allows building in the correct order.
8
+ *
9
+ * @category Engine
10
+ */
6
11
  export declare class ModuleTree {
7
12
  modules: Record<string, AnyModule>;
8
13
  config?: TreeshakeConfig | undefined;
9
14
  private layers;
15
+ /**
16
+ * @param modules A dictionary of modules by name
17
+ * @param config Optional configuration for the treeshaking process
18
+ */
10
19
  constructor(modules: Record<string, AnyModule>, config?: TreeshakeConfig | undefined);
20
+ /**
21
+ * Build the tree from existing modules on the Space.
22
+ * - Treeshakes each element to identify it's dependencies
23
+ * - Resolves each found dependency forming a tree
24
+ * - Groups tree into layers which can be built in isolation
25
+ */
11
26
  resolve(): Promise<void>;
27
+ /**
28
+ * Read the module elements from files and identify
29
+ * all related nodes.
30
+ *
31
+ * @returns A dictionary of nodes by module name
32
+ */
12
33
  private treeshake;
13
34
  /**
14
- * Each node declares it's dependencies as a `$Dependency`.
35
+ * Each element declares it's dependencies as a `$Dependency`.
15
36
  * In order to assemble the build layers, it's necessary to
16
37
  * resolve them into a graph of `ResolvedBuilderNode`s.
17
38
  * This also resolves the inline nodes, to allow merging the schemas
18
39
  * of inline nodes on build.
40
+ *
41
+ * @param nodesByModule A dictionary of builder nodes by module name
42
+ * @returns A dictionary of resolved builder nodes
19
43
  */
20
44
  private resolveDependencies;
45
+ /**
46
+ * Recursively extract all inline nodes from a resolved builder node.
47
+ *
48
+ * @param node A resolved builder node
49
+ * @returns A list of resolved builder nodes
50
+ */
21
51
  private getAllInlineNodes;
22
52
  /**
23
- * In order to build nodes on the proper order, a set of layers must be stablished
53
+ * Build a list of layers (a _layer_ is a list of resolved builder nodes),
54
+ * each of which can be separately built, in a specific order, so all
55
+ * the dependencies of a node are built before the node itself.
56
+ *
57
+ * @param nodes A list of resolved builder nodes
58
+ * @returns A list of module tree layers
24
59
  */
25
60
  private resolveLayers;
61
+ /**
62
+ * Traverse tree layers and run the callback `fn` for each node of each layer.
63
+ *
64
+ * @param actionAlias Action alias to be logged
65
+ * @param fn Callback to be run for each node
66
+ */
26
67
  traverse(actionAlias: string, fn: TraverseCallback): Promise<void>;
68
+ /**
69
+ * Get schema of a dependency-like object.
70
+ *
71
+ * @param node A dependency-like object
72
+ * @return An element schema
73
+ */
27
74
  getSchema(node: {
28
75
  module: string;
29
76
  type: BuilderType;
30
77
  name: string;
31
78
  }): import("../elements").$Message | import("../elements").$Machine | import("../elements").$Bucket | import("../elements").$Constants | import("../elements").$Job | import("../elements").$Externals | import("../elements").$Resource | import("../elements").$Controller;
79
+ /**
80
+ * Return a list of all nodes of all modules on the tree.
81
+ *
82
+ * @returns A list of resolved builder nodes
83
+ */
32
84
  allNodes(): ResolvedBuilderNode[];
33
85
  }
34
86
  export {};
@@ -1,21 +1,43 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ModuleTree = void 0;
4
+ const dependency_1 = require("./dependency");
4
5
  const error_1 = require("../compiler/error");
5
6
  const log_1 = require("./util/log");
6
7
  const string_1 = require("./util/string");
7
8
  const treeshake_1 = require("../compiler/treeshake");
9
+ /**
10
+ * A tree of module elements which allows building in the correct order.
11
+ *
12
+ * @category Engine
13
+ */
8
14
  class ModuleTree {
15
+ /**
16
+ * @param modules A dictionary of modules by name
17
+ * @param config Optional configuration for the treeshaking process
18
+ */
9
19
  constructor(modules, config) {
10
20
  this.modules = modules;
11
21
  this.config = config;
12
22
  this.layers = [];
13
23
  }
24
+ /**
25
+ * Build the tree from existing modules on the Space.
26
+ * - Treeshakes each element to identify it's dependencies
27
+ * - Resolves each found dependency forming a tree
28
+ * - Groups tree into layers which can be built in isolation
29
+ */
14
30
  async resolve() {
15
31
  const nodesByModule = await this.treeshake();
16
32
  const resolvedNodes = await this.resolveDependencies(nodesByModule);
17
33
  this.layers = this.resolveLayers(resolvedNodes);
18
34
  }
35
+ /**
36
+ * Read the module elements from files and identify
37
+ * all related nodes.
38
+ *
39
+ * @returns A dictionary of nodes by module name
40
+ */
19
41
  async treeshake() {
20
42
  log_1.Log.debug('compiler', 'tree', 'Treeshaking');
21
43
  const nodesByModule = {};
@@ -27,11 +49,14 @@ class ModuleTree {
27
49
  return nodesByModule;
28
50
  }
29
51
  /**
30
- * Each node declares it's dependencies as a `$Dependency`.
52
+ * Each element declares it's dependencies as a `$Dependency`.
31
53
  * In order to assemble the build layers, it's necessary to
32
54
  * resolve them into a graph of `ResolvedBuilderNode`s.
33
55
  * This also resolves the inline nodes, to allow merging the schemas
34
56
  * of inline nodes on build.
57
+ *
58
+ * @param nodesByModule A dictionary of builder nodes by module name
59
+ * @returns A dictionary of resolved builder nodes
35
60
  */
36
61
  async resolveDependencies(nodesByModule) {
37
62
  log_1.Log.debug('compiler', 'tree', 'Resolving dependencies');
@@ -123,6 +148,12 @@ class ModuleTree {
123
148
  });
124
149
  return resolvedNodes;
125
150
  }
151
+ /**
152
+ * Recursively extract all inline nodes from a resolved builder node.
153
+ *
154
+ * @param node A resolved builder node
155
+ * @returns A list of resolved builder nodes
156
+ */
126
157
  getAllInlineNodes(node) {
127
158
  const inlineNodes = [];
128
159
  if (node.inlines.message) {
@@ -139,7 +170,12 @@ class ModuleTree {
139
170
  return inlineNodes;
140
171
  }
141
172
  /**
142
- * In order to build nodes on the proper order, a set of layers must be stablished
173
+ * Build a list of layers (a _layer_ is a list of resolved builder nodes),
174
+ * each of which can be separately built, in a specific order, so all
175
+ * the dependencies of a node are built before the node itself.
176
+ *
177
+ * @param nodes A list of resolved builder nodes
178
+ * @returns A list of module tree layers
143
179
  */
144
180
  resolveLayers(nodes) {
145
181
  log_1.Log.debug('compiler', 'tree', 'Resolving Layers');
@@ -195,6 +231,12 @@ class ModuleTree {
195
231
  });
196
232
  return layers;
197
233
  }
234
+ /**
235
+ * Traverse tree layers and run the callback `fn` for each node of each layer.
236
+ *
237
+ * @param actionAlias Action alias to be logged
238
+ * @param fn Callback to be run for each node
239
+ */
198
240
  async traverse(actionAlias, fn) {
199
241
  for (let i = 0; i < this.layers.length; i++) {
200
242
  const layer = this.layers[i];
@@ -204,26 +246,25 @@ class ModuleTree {
204
246
  }
205
247
  }
206
248
  }
249
+ /**
250
+ * Get schema of a dependency-like object.
251
+ *
252
+ * @param node A dependency-like object
253
+ * @return An element schema
254
+ */
207
255
  getSchema(node) {
208
256
  const mod = this.modules[node.module];
209
- if (node.type === 'constants')
210
- return mod.schema.constants;
211
- if (node.type === 'externals')
212
- return mod.schema.externals;
213
- if (node.type === 'bucket')
214
- return mod.schema.buckets[node.name];
215
- if (node.type === 'message')
216
- return mod.schema.messages[node.name];
217
- if (node.type === 'job')
218
- return mod.schema.jobs[node.name];
219
- if (node.type === 'resource')
220
- return mod.schema.resources[node.name];
221
- if (node.type === 'machine')
222
- return mod.schema.machines[node.name];
223
- if (node.type === 'controller')
224
- return mod.schema.controllers[node.name];
225
- throw error_1.CompilerError.UnmetDependency('tree', node.name);
257
+ const schema = dependency_1.$Dependency.resolve(mod.schema, node);
258
+ if (!schema) {
259
+ throw error_1.CompilerError.UnmetDependency('tree', node.name);
260
+ }
261
+ return schema;
226
262
  }
263
+ /**
264
+ * Return a list of all nodes of all modules on the tree.
265
+ *
266
+ * @returns A list of resolved builder nodes
267
+ */
227
268
  allNodes() {
228
269
  const nodes = [];
229
270
  for (const layer of this.layers) {
@@ -1,8 +1,8 @@
1
1
  export declare class Mime {
2
- static ofFilepath(filepath: string): {
3
- extname: string;
4
- mimetype: string;
5
- };
2
+ /**
3
+ * extname without '.'
4
+ */
5
+ static ofExtname(extname: string): string;
6
6
  }
7
7
  declare const types: {
8
8
  [key: string]: string[];
@@ -1,23 +1,21 @@
1
1
  "use strict";
2
2
  // Taken from [mime](https://github.com/broofa/mime)
3
- var __importDefault = (this && this.__importDefault) || function (mod) {
4
- return (mod && mod.__esModule) ? mod : { "default": mod };
5
- };
6
3
  Object.defineProperty(exports, "__esModule", { value: true });
7
4
  exports.Mime = void 0;
8
- const path_1 = __importDefault(require("path"));
9
5
  class Mime {
10
- static ofFilepath(filepath) {
11
- let extname = path_1.default.extname(filepath);
6
+ /**
7
+ * extname without '.'
8
+ */
9
+ static ofExtname(extname) {
12
10
  if (!extname.length)
13
- return { extname, mimetype: '' };
11
+ return '';
14
12
  extname = extname.slice(1);
15
13
  for (const type in types) {
16
14
  if (types[type].includes(extname)) {
17
- return { extname, mimetype: type };
15
+ return type;
18
16
  }
19
17
  }
20
- return { extname, mimetype: '' };
18
+ return '';
21
19
  }
22
20
  }
23
21
  exports.Mime = Mime;
package/lib/schema.d.ts CHANGED
@@ -7,7 +7,7 @@ import { $Bucket } from './elements/entities/bucket/bucket.schema';
7
7
  import { $Job } from './elements/blocks/job/job.schema';
8
8
  import { $Resource } from './elements/blocks/resource/resource.schema';
9
9
  import { $Queue } from './elements/blocks/queue/queue.schema';
10
- import { $Externals } from './elements/blocks/externals/externals.schema';
10
+ import { $Externals } from './elements/edge/externals/externals.schema';
11
11
  export type BuilderType = 'constants' | 'externals' | 'message' | 'bucket' | 'job' | 'resource' | 'machine' | 'controller' | 'queue';
12
12
  export type $Space = {
13
13
  authnUsers: {
@@ -44,7 +44,7 @@ export type $Module = {
44
44
  };
45
45
  '#input': $Message;
46
46
  '#authn': AnyUsers;
47
- '#providers': Record<string, any>;
47
+ '#services': Record<string, any>;
48
48
  };
49
49
  export type ModuleName<$ extends $Space> = keyof $['modules'];
50
50
  export type MessageName<$ extends $Module> = keyof $['messages'];
package/package.json CHANGED
@@ -1,14 +1,13 @@
1
1
  {
2
2
  "name": "nesoi",
3
- "version": "3.0.8",
3
+ "version": "3.0.10",
4
4
  "description": "Declarative framework for data-driven applications",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "git+https://github.com/nesoi-org/nesoi.git"
8
8
  },
9
9
  "keywords": [
10
- "nesoi",
11
- "postgresql"
10
+ "nesoi"
12
11
  ],
13
12
  "author": "Hugo Aboud",
14
13
  "license": "MIT",
@@ -34,8 +34,8 @@ function expectJob(def) {
34
34
  try {
35
35
  const status = await promise;
36
36
  expect(status.state).toEqual('error');
37
- expect(status.error)
38
- .toMatch(new RegExp(`^\\[${errorObj.name}\\]`));
37
+ expect(status.error?.name)
38
+ .toEqual(errorObj.name);
39
39
  }
40
40
  catch (e) {
41
41
  expect(e.toString())
@@ -33,8 +33,8 @@ function expectMessage(def) {
33
33
  const status = await promise;
34
34
  status.forEach(st => {
35
35
  expect(st.state).toEqual('error');
36
- expect(st.error)
37
- .toMatch(new RegExp(`^\\[${errorObj.name}\\]`));
36
+ expect(st.error?.name)
37
+ .toEqual(errorObj.name);
38
38
  });
39
39
  }
40
40
  catch (e) {
@@ -1,9 +1,9 @@
1
- import { $Bucket, $Message, $Module, $Space } from "../../src/elements";
2
- import { Daemon } from "../../src/engine/daemon";
3
- import { NesoiDate } from "../../src/engine/data/date";
4
- import { NesoiDatetime } from "../../src/engine/data/datetime";
5
- import { NesoiDecimal } from "../../src/engine/data/decimal";
6
- import { DeepPartial } from "../../src/engine/util/deep";
1
+ import { $Bucket, $Message, $Module, $Space } from "../../lib/elements";
2
+ import { Daemon } from "../../lib/engine/daemon";
3
+ import { NesoiDate } from "../../lib/engine/data/date";
4
+ import { NesoiDatetime } from "../../lib/engine/data/datetime";
5
+ import { NesoiDecimal } from "../../lib/engine/data/decimal";
6
+ import { DeepPartial } from "../../lib/engine/util/deep";
7
7
  export declare class BucketMockObj<$ extends $Bucket, T> {
8
8
  private module;
9
9
  private bucketName;