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
@@ -6,31 +6,118 @@ import { AnyUsers, AuthnRequest } from './auth/authn';
6
6
  import { TrxNode } from './transaction/trx_node';
7
7
  import { TrxStatus } from './transaction/trx';
8
8
  import { AnyModule } from './module';
9
+ import { IService } from './apps/service';
10
+ /**
11
+ * A background process running one or more modules,
12
+ * which runs _Transactions_ for the available elements.
13
+ *
14
+ * A `Daemon` is spawn by an `App`.
15
+ *
16
+ * @category Engine
17
+ */
9
18
  export declare abstract class Daemon<S extends $Space, Modules extends ModuleName<S>> {
10
19
  protected name: string;
11
20
  protected trxEngines: Record<Modules, AnyTrxEngine>;
12
- protected providers: Record<string, any>;
13
- protected app?: AnyAppConfig | undefined;
14
- private _cli?;
15
- constructor(name: string, trxEngines: Record<Modules, AnyTrxEngine>, providers: Record<string, any>, app?: AnyAppConfig | undefined);
21
+ protected services: Record<string, IService>;
22
+ protected config?: AnyAppConfig | undefined;
23
+ /**
24
+ * @param name Name of the daemon (taken from App)
25
+ * @param trxEngines A dictionary of Transaction Engine by module name
26
+ * @param services A dictionary of Service by name
27
+ * @param config Optional `AppConfig`
28
+ */
29
+ constructor(name: string, trxEngines: Record<Modules, AnyTrxEngine>, services: Record<string, IService>, config?: AnyAppConfig | undefined);
30
+ /**
31
+ * Prepare a transaction to be run by the Daemon.
32
+ *
33
+ * @param moduleName Name of the module where to run the transactoin
34
+ * @returns A `DaemonTrx` instance, which can be run
35
+ */
16
36
  trx<K extends Modules & keyof S['modules']>(moduleName: K): DaemonTrx<S, S["modules"][K], {}>;
37
+ /**
38
+ * Run the Nesoi CLI for this Daemon.
39
+ */
17
40
  cli(cmd?: string): Promise<void>;
41
+ /**
42
+ * Bind the controller of each module to this Daemon.
43
+ * This allows the registered `Controller Adapters` to run
44
+ * transactions on the daemon.
45
+ */
18
46
  private bindControllers;
19
- static destroy(daemon: AnyDaemon): Promise<void>;
20
- static reload(daemon: AnyDaemon, trxEngines: Record<string, AnyTrxEngine>, providers: Record<string, any>): void;
47
+ /**
48
+ * Destroy the services and transaction engines of this daemon
49
+ *
50
+ * @param A `Daemon` instance
51
+ */
52
+ destroy(): Promise<void>;
53
+ /**
54
+ * Replace the services and transaction engines of this daemon
55
+ * and rebind the controllers
56
+ *
57
+ * @param daemon A `Daemon` instance
58
+ * @param trxEngines A dictionary of Transaction Engine by module name
59
+ * @param services A dictionary of Service by name
60
+ */
61
+ reload(trxEngines: Record<Modules, AnyTrxEngine>, services: Record<string, any>): void;
62
+ /**
63
+ * Return a `Daemon` property.
64
+ * This is used to read private properties.
65
+ *
66
+ * @param daemon A `Daemon` instance
67
+ * @param key A `Daemon` property `'name'|'services'|'app'`
68
+ * @returns The selected property
69
+ */
21
70
  static get<T extends {
22
71
  name: string;
23
- providers: Record<string, any>;
72
+ services: Record<string, any>;
24
73
  app: AnyAppConfig;
25
74
  }, K extends keyof T>(daemon: AnyDaemon | undefined, key: K): T[K];
26
- static getModule<Modules extends ModuleName<any>, D extends Daemon<any, Modules>>(daemon: D, module: Modules): import("./module").Module<any, any>;
75
+ /**
76
+ * Return one module of the `Daemon` by name.
77
+ *
78
+ * @param daemon A `Daemon` instance
79
+ * @param module A module name
80
+ * @returns The `Module` instance
81
+ */
82
+ static getModule<Module extends ModuleName<any>, D extends Daemon<any, Module>>(daemon: D, module: Module): import("./module").Module<any, any>;
83
+ /**
84
+ * Return all modules of the `Daemon`.
85
+ *
86
+ * @param daemon A `Daemon` instance
87
+ * @returns The `Module` instances
88
+ */
27
89
  static getModules(daemon: AnyDaemon): AnyModule[];
28
90
  }
91
+ /**
92
+ * A helper class for preparing a transaction to be run.
93
+ * It allows declaring authentication data before running
94
+ * the transaction.
95
+ *
96
+ * @category Engine
97
+ */
29
98
  export declare class DaemonTrx<S extends $Space, M extends $Module, Authn extends AnyUsers = {}> {
30
99
  private trxEngine;
31
- private _authn?;
100
+ /**
101
+ * The authentication request which will be used to
102
+ * authenticate this transaction prior to running.
103
+ */
104
+ private authnRequest?;
105
+ /**
106
+ * @param trxEngine The transaction engine where to run the transaction.
107
+ */
32
108
  constructor(trxEngine: AnyTrxEngine);
109
+ /**
110
+ * Authenticate the transaction with the given credentials.
111
+ * You can specify one or more credentials, so the transaction
112
+ * is able to access elements with different authn providers.
113
+ */
33
114
  authn<Authn extends AuthnRequest<keyof S['authnUsers']>>(authn?: Authn): DaemonTrx<S, M, { [K in keyof Authn]: S["authnUsers"][K & keyof S["authnUsers"]]; }>;
115
+ /**
116
+ * Run a method inside the transaction.
117
+ *
118
+ * @param fn A function to execute inside the transaction
119
+ * @returns A `TrxStatus` containing metadata about the transaction and the function response
120
+ */
34
121
  run<Output>(fn: (trx: TrxNode<S, M, Authn>) => Promise<Output>): Promise<TrxStatus<Output>>;
35
122
  }
36
123
  export type AnyDaemon = Daemon<any, any>;
@@ -4,15 +4,35 @@ exports.DaemonTrx = exports.Daemon = void 0;
4
4
  const log_1 = require("./util/log");
5
5
  const error_1 = require("./data/error");
6
6
  const cli_1 = require("./cli/cli");
7
+ /**
8
+ * A background process running one or more modules,
9
+ * which runs _Transactions_ for the available elements.
10
+ *
11
+ * A `Daemon` is spawn by an `App`.
12
+ *
13
+ * @category Engine
14
+ */
7
15
  class Daemon {
8
- constructor(name, trxEngines, providers, app) {
16
+ /**
17
+ * @param name Name of the daemon (taken from App)
18
+ * @param trxEngines A dictionary of Transaction Engine by module name
19
+ * @param services A dictionary of Service by name
20
+ * @param config Optional `AppConfig`
21
+ */
22
+ constructor(name, trxEngines, services, config) {
9
23
  this.name = name;
10
24
  this.trxEngines = trxEngines;
11
- this.providers = providers;
12
- this.app = app;
25
+ this.services = services;
26
+ this.config = config;
13
27
  this.bindControllers();
14
28
  log_1.Log.info('daemon', name, 'Woo-ha!');
15
29
  }
30
+ /**
31
+ * Prepare a transaction to be run by the Daemon.
32
+ *
33
+ * @param moduleName Name of the module where to run the transactoin
34
+ * @returns A `DaemonTrx` instance, which can be run
35
+ */
16
36
  trx(moduleName) {
17
37
  const trxEngine = this.trxEngines[moduleName];
18
38
  if (!trxEngine) {
@@ -20,10 +40,18 @@ class Daemon {
20
40
  }
21
41
  return new DaemonTrx(trxEngine);
22
42
  }
43
+ /**
44
+ * Run the Nesoi CLI for this Daemon.
45
+ */
23
46
  async cli(cmd) {
24
- this._cli = new cli_1.CLI(this, this.app?.cli);
25
- await this._cli.run(cmd);
47
+ const cli = new cli_1.CLI(this, this.config?.cli);
48
+ await cli.run(cmd);
26
49
  }
50
+ /**
51
+ * Bind the controller of each module to this Daemon.
52
+ * This allows the registered `Controller Adapters` to run
53
+ * transactions on the daemon.
54
+ */
27
55
  bindControllers() {
28
56
  log_1.Log.info('daemon', this.name, 'Binding controllers');
29
57
  for (const t in this.trxEngines) {
@@ -34,45 +62,100 @@ class Daemon {
34
62
  }
35
63
  }
36
64
  }
37
- static async destroy(daemon) {
65
+ /**
66
+ * Destroy the services and transaction engines of this daemon
67
+ *
68
+ * @param A `Daemon` instance
69
+ */
70
+ async destroy() {
38
71
  log_1.Log.info('daemon', this.name, 'Stop');
39
- for (const key in daemon.providers) {
40
- const provider = daemon.providers[key];
41
- await provider.__down(provider);
42
- delete daemon.providers[key];
72
+ for (const key in this.services) {
73
+ const service = this.services[key];
74
+ await service.down();
75
+ delete this.services[key];
43
76
  }
44
- for (const key in daemon.trxEngines) {
45
- delete daemon.trxEngines[key];
77
+ for (const key in this.trxEngines) {
78
+ delete this.trxEngines[key];
46
79
  }
47
80
  }
48
- static reload(daemon, trxEngines, providers) {
81
+ /**
82
+ * Replace the services and transaction engines of this daemon
83
+ * and rebind the controllers
84
+ *
85
+ * @param daemon A `Daemon` instance
86
+ * @param trxEngines A dictionary of Transaction Engine by module name
87
+ * @param services A dictionary of Service by name
88
+ */
89
+ reload(trxEngines, services) {
49
90
  log_1.Log.info('daemon', this.name, 'Reloaded');
50
- daemon.trxEngines = trxEngines;
51
- daemon.providers = providers;
52
- daemon.bindControllers();
91
+ this.trxEngines = trxEngines;
92
+ this.services = services;
93
+ this.bindControllers();
53
94
  }
95
+ /**
96
+ * Return a `Daemon` property.
97
+ * This is used to read private properties.
98
+ *
99
+ * @param daemon A `Daemon` instance
100
+ * @param key A `Daemon` property `'name'|'services'|'app'`
101
+ * @returns The selected property
102
+ */
54
103
  static get(daemon, key) {
55
104
  return daemon?.[key];
56
105
  }
106
+ /**
107
+ * Return one module of the `Daemon` by name.
108
+ *
109
+ * @param daemon A `Daemon` instance
110
+ * @param module A module name
111
+ * @returns The `Module` instance
112
+ */
57
113
  static getModule(daemon, module) {
58
114
  return daemon.trxEngines[module].getModule();
59
115
  }
116
+ /**
117
+ * Return all modules of the `Daemon`.
118
+ *
119
+ * @param daemon A `Daemon` instance
120
+ * @returns The `Module` instances
121
+ */
60
122
  static getModules(daemon) {
61
123
  return Object.values(daemon.trxEngines)
62
124
  .map((trx) => trx.getModule());
63
125
  }
64
126
  }
65
127
  exports.Daemon = Daemon;
128
+ /**
129
+ * A helper class for preparing a transaction to be run.
130
+ * It allows declaring authentication data before running
131
+ * the transaction.
132
+ *
133
+ * @category Engine
134
+ */
66
135
  class DaemonTrx {
136
+ /**
137
+ * @param trxEngine The transaction engine where to run the transaction.
138
+ */
67
139
  constructor(trxEngine) {
68
140
  this.trxEngine = trxEngine;
69
141
  }
142
+ /**
143
+ * Authenticate the transaction with the given credentials.
144
+ * You can specify one or more credentials, so the transaction
145
+ * is able to access elements with different authn providers.
146
+ */
70
147
  authn(authn) {
71
- this._authn = authn;
148
+ this.authnRequest = authn;
72
149
  return this;
73
150
  }
151
+ /**
152
+ * Run a method inside the transaction.
153
+ *
154
+ * @param fn A function to execute inside the transaction
155
+ * @returns A `TrxStatus` containing metadata about the transaction and the function response
156
+ */
74
157
  async run(fn) {
75
- return this.trxEngine.trx(fn, this._authn);
158
+ return this.trxEngine.trx(fn, this.authnRequest);
76
159
  }
77
160
  }
78
161
  exports.DaemonTrx = DaemonTrx;
@@ -1,3 +1,7 @@
1
+ /**
2
+ * @category Engine
3
+ * @subcategory Data
4
+ */
1
5
  export declare class NesoiDate {
2
6
  day: number;
3
7
  month: number;
@@ -2,6 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.NesoiDate = void 0;
4
4
  const error_1 = require("./error");
5
+ /**
6
+ * @category Engine
7
+ * @subcategory Data
8
+ */
5
9
  class NesoiDate {
6
10
  constructor(day, month, year) {
7
11
  this.day = day;
@@ -1,3 +1,7 @@
1
+ /**
2
+ * @category Engine
3
+ * @subcategory Data
4
+ */
1
5
  export declare class NesoiDatetime {
2
6
  static tz: {
3
7
  '-12:00': string;
@@ -2,6 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.NesoiDatetime = void 0;
4
4
  const error_1 = require("./error");
5
+ /**
6
+ * @category Engine
7
+ * @subcategory Data
8
+ */
5
9
  class NesoiDatetime {
6
10
  constructor(epoch, tz = 'Z') {
7
11
  this.epoch = epoch || new Date().getTime();
@@ -1,3 +1,7 @@
1
+ /**
2
+ * @category Engine
3
+ * @subcategory Data
4
+ */
1
5
  export declare class NesoiDecimal {
2
6
  private neg;
3
7
  private left;
@@ -2,6 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.NesoiDecimal = void 0;
4
4
  const error_1 = require("./error");
5
+ /**
6
+ * @category Engine
7
+ * @subcategory Data
8
+ */
5
9
  class NesoiDecimal {
6
10
  constructor(value, pLeft = 12, pRight = 12) {
7
11
  this.neg = false;
@@ -1,5 +1,22 @@
1
- import { TrxNode } from '../transaction/trx_node';
2
- import { $Module } from "../../elements";
1
+ /**
2
+ * @category Engine
3
+ * @subcategory Data
4
+ */
5
+ export declare class LocalNesoiFile {
6
+ /**
7
+ * - If not overriden, `extname` is derived from `filepath`
8
+ * - If `overrides.originalFilename` is passed, `extname` is derived from it (this allows saving the file without extension, but keeping the information on NesoiFile).
9
+ * - If not overriden, `mimetype` is derived from the resolved `extname`
10
+ */
11
+ static from(filepath: string, overrides?: Partial<NesoiFile>): NesoiFile;
12
+ static delete(file: NesoiFile): void;
13
+ static move(file: NesoiFile, to: string): void;
14
+ static read(file: NesoiFile): string;
15
+ }
16
+ /**
17
+ * @category Engine
18
+ * @subcategory Data
19
+ */
3
20
  export declare class NesoiFile {
4
21
  __nesoi_file: boolean;
5
22
  filepath: string;
@@ -8,31 +25,14 @@ export declare class NesoiFile {
8
25
  mimetype: string | null;
9
26
  size: number;
10
27
  originalFilename: string | null;
11
- newFilename: string;
12
28
  mtime: Date | null;
13
29
  hashAlgorithm: false | 'sha1' | 'md5' | 'sha256';
14
- private _hash;
15
- constructor(filepath: string, extra?: {
16
- originalFilename?: string | null;
17
- newFilename?: string | null;
18
- });
30
+ private hash;
31
+ constructor(filepath: string, filename: string, extname: string, mimetype: string | null, size: number, originalFilename: string | null, mtime: Date | null);
32
+ static from(file: NesoiFile, overrides: Partial<NesoiFile>): NesoiFile;
19
33
  static hash(file: NesoiFile, hashAlgorithm: 'sha1' | 'md5' | 'sha256'): Promise<{
20
34
  algorithm: "sha1" | "sha256" | "md5";
21
35
  hash: string | object;
22
36
  }>;
23
- static delete<M extends $Module>($: {
24
- trx: TrxNode<any, M, any>;
25
- }, bucket: keyof M['buckets'], file: NesoiFile, options?: {
26
- silent?: boolean;
27
- }): Promise<void> | undefined;
28
- static move<M extends $Module>($: {
29
- trx: TrxNode<any, M, any>;
30
- }, bucket: keyof M['buckets'], file: NesoiFile, to: string, options?: {
31
- silent?: boolean;
32
- }): Promise<void>;
33
- static read<M extends $Module>($: {
34
- trx: TrxNode<any, M, any>;
35
- }, bucket: keyof M['buckets'], file: NesoiFile, options?: {
36
- silent?: boolean;
37
- }): Promise<void>;
37
+ static local: typeof LocalNesoiFile;
38
38
  }
@@ -3,52 +3,89 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.NesoiFile = void 0;
6
+ exports.NesoiFile = exports.LocalNesoiFile = void 0;
7
7
  const fs_1 = __importDefault(require("fs"));
8
8
  const path_1 = __importDefault(require("path"));
9
9
  const hash_1 = require("../util/hash");
10
10
  const mime_1 = require("../util/mime");
11
- // Based on [formidable](https://github.com/node-formidable/formidable)
11
+ /**
12
+ * @category Engine
13
+ * @subcategory Data
14
+ */
15
+ class LocalNesoiFile {
16
+ /**
17
+ * - If not overriden, `extname` is derived from `filepath`
18
+ * - If `overrides.originalFilename` is passed, `extname` is derived from it (this allows saving the file without extension, but keeping the information on NesoiFile).
19
+ * - If not overriden, `mimetype` is derived from the resolved `extname`
20
+ */
21
+ static from(filepath, overrides) {
22
+ const filename = overrides?.filename || path_1.default.basename(filepath);
23
+ let extname;
24
+ if (overrides?.extname) {
25
+ extname = overrides.extname;
26
+ }
27
+ else {
28
+ if (overrides?.originalFilename) {
29
+ extname = path_1.default.extname(overrides?.originalFilename).slice(1);
30
+ }
31
+ else {
32
+ extname = path_1.default.extname(filepath).slice(1);
33
+ }
34
+ }
35
+ const mimetype = overrides?.mimetype || mime_1.Mime.ofExtname(extname);
36
+ const stat = fs_1.default.statSync(filepath);
37
+ const mtime = stat.mtime;
38
+ const size = stat.size;
39
+ const originalFilename = overrides?.originalFilename || null;
40
+ return new NesoiFile(filepath, filename, extname, mimetype, size, originalFilename, mtime);
41
+ }
42
+ static delete(file) {
43
+ fs_1.default.rmSync(file.filepath);
44
+ }
45
+ static move(file, to) {
46
+ fs_1.default.renameSync(file.filepath, to);
47
+ file.filepath = to;
48
+ file.filename = path_1.default.basename(to);
49
+ }
50
+ static read(file) {
51
+ return fs_1.default.readFileSync(file.filepath).toString();
52
+ }
53
+ }
54
+ exports.LocalNesoiFile = LocalNesoiFile;
55
+ /**
56
+ * @category Engine
57
+ * @subcategory Data
58
+ */
12
59
  class NesoiFile {
13
- constructor(filepath, extra) {
60
+ constructor(filepath, filename, extname, mimetype, size, originalFilename, mtime) {
14
61
  this.__nesoi_file = true;
62
+ // Algorithm used to generate the hash
15
63
  this.hashAlgorithm = false;
16
64
  // Only available after `.hash` is called
17
- this._hash = null;
65
+ this.hash = null;
18
66
  this.filepath = filepath;
19
- this.filename = path_1.default.basename(filepath);
20
- const mime = mime_1.Mime.ofFilepath(filepath);
21
- this.extname = extra?.originalFilename
22
- ? path_1.default.extname(extra.originalFilename).slice(1)
23
- : mime.extname;
24
- this.mimetype = mime.mimetype;
25
- const stat = fs_1.default.statSync(filepath);
26
- this.size = stat.size;
27
- this.originalFilename = extra?.originalFilename || null;
28
- this.newFilename = extra?.newFilename || this.filename;
29
- this.mtime = stat.mtime;
67
+ this.filename = filename;
68
+ this.extname = extname;
69
+ this.mimetype = mimetype;
70
+ this.size = size;
71
+ this.originalFilename = originalFilename;
72
+ this.mtime = mtime;
73
+ }
74
+ static from(file, overrides) {
75
+ return new NesoiFile(overrides.filepath || file.filepath, overrides.filename || file.filename, overrides.extname || file.extname, overrides.mimetype || file.mimetype, overrides.size || file.size, overrides.originalFilename || file.originalFilename, overrides.mtime || file.mtime);
30
76
  }
31
77
  static async hash(file, hashAlgorithm) {
32
- if (!file._hash) {
78
+ if (!file.hash) {
33
79
  file.hashAlgorithm = hashAlgorithm;
34
- file._hash = hash_1.Hash.file(file.filepath, file.hashAlgorithm).then(hash => {
35
- file._hash = hash;
80
+ file.hash = hash_1.Hash.file(file.filepath, file.hashAlgorithm).then(hash => {
81
+ file.hash = hash;
36
82
  });
37
83
  }
38
84
  return {
39
85
  algorithm: hashAlgorithm,
40
- hash: file._hash
86
+ hash: file.hash
41
87
  };
42
88
  }
43
- static delete($, bucket, file, options) {
44
- return $.trx.bucket(bucket).drive.delete(file, options);
45
- }
46
- static async move($, bucket, file, to, options) {
47
- await $.trx.bucket(bucket).drive.move(file, to, options);
48
- file.filepath = to;
49
- }
50
- static async read($, bucket, file, options) {
51
- await $.trx.bucket(bucket).drive.read(file, options);
52
- }
53
89
  }
54
90
  exports.NesoiFile = NesoiFile;
91
+ NesoiFile.local = LocalNesoiFile;
@@ -1,3 +1,7 @@
1
+ /**
2
+ * @category Engine
3
+ * @subcategory Data
4
+ */
1
5
  export declare class NesoiJSON {
2
6
  /**
3
7
  * Dumps an object to
@@ -4,6 +4,10 @@ exports.NesoiJSON = void 0;
4
4
  const date_1 = require("./date");
5
5
  const datetime_1 = require("./datetime");
6
6
  const decimal_1 = require("./decimal");
7
+ /**
8
+ * @category Engine
9
+ * @subcategory Data
10
+ */
7
11
  class NesoiJSON {
8
12
  /**
9
13
  * Dumps an object to
@@ -1,3 +1,7 @@
1
+ /**
2
+ * @category Engine
3
+ * @subcategory Data
4
+ */
1
5
  export declare class Tree {
2
6
  /**
3
7
  * Read one or more values from the object, from a _fieldpath_.
@@ -5,6 +5,10 @@
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.Tree = void 0;
7
7
  const error_1 = require("./error");
8
+ /**
9
+ * @category Engine
10
+ * @subcategory Data
11
+ */
8
12
  class Tree {
9
13
  /**
10
14
  * Read one or more values from the object, from a _fieldpath_.