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
@@ -1,31 +1,35 @@
1
1
  import { $Module, $Space, ModuleName } from "../../schema";
2
- import { App, AppProvider } from './app';
2
+ import { App } from './app';
3
+ import { IService } from './service';
3
4
  import { AnyTrxEngine } from '../transaction/trx_engine';
4
5
  import { AnyBuilder, AnyModule, Module } from '../module';
5
6
  import { AnyDaemon, Daemon } from '../daemon';
6
7
  import { AppConfigFactory } from './app.config';
7
- export declare class InlineApp<S extends $Space, ModuleNames extends string = ModuleName<S> & string, Providers extends Record<string, any> = Record<string, any>> extends App<S, ModuleNames, Providers> {
8
+ /**
9
+ * @category App
10
+ */
11
+ export declare class InlineApp<S extends $Space, ModuleNames extends string = ModuleName<S> & string, Services extends Record<string, any> = Record<string, any>> extends App<S, ModuleNames, Services> {
8
12
  protected _daemon?: Daemon<S, ModuleNames>;
9
13
  protected _modules: Record<string, AnyModule>;
10
14
  private packageJson?;
11
15
  protected bootPromise?: Promise<void>;
12
16
  constructor(name: string, builders: AnyBuilder[]);
13
- boot(): InlineApp<S, ModuleNames, Providers>;
17
+ boot(): InlineApp<S, ModuleNames, Services>;
14
18
  /**
15
19
  * Treeshake and build modules declared for this application.
16
20
  */
17
21
  protected build(): Promise<void>;
18
22
  /**
19
- * Build the application, start providers and trx engines.
23
+ * Build the application, start services and trx engines.
20
24
  * Returns references to start a daemon.
21
25
  */
22
26
  protected make(): Promise<{
23
27
  modules: Record<string, AnyModule>;
24
- providers: Record<string, any>;
28
+ services: Record<string, any>;
25
29
  trxEngines: Record<ModuleNames, AnyTrxEngine>;
26
30
  }>;
27
31
  daemon(): Promise<Daemon<S, ModuleNames>>;
28
- protected makeDaemon(trxEngines: Record<ModuleNames, AnyTrxEngine>, providers: Record<string, any>): AnyDaemon;
32
+ protected makeDaemon(trxEngines: Record<ModuleNames, AnyTrxEngine>, services: Record<string, IService>): AnyDaemon;
29
33
  package(_package: Record<string, any>): this;
30
34
  /**
31
35
  * This method injects elements flagged as externals by referencing them
@@ -35,8 +39,8 @@ export declare class InlineApp<S extends $Space, ModuleNames extends string = Mo
35
39
  */
36
40
  protected linkExternals(modules: Record<string, Module<S, $Module>>): void;
37
41
  modules<M extends ModuleName<S>>(modules: M[]): InlineApp<S, M & ModuleNames>;
38
- provider<Name extends string, T>($: AppProvider<Name, T>): InlineApp<S, ModuleNames, Providers & { [K in Name]: T; }>;
39
- get config(): AppConfigFactory<S, ModuleNames, Providers, typeof this>;
42
+ service<T extends IService>($: T): InlineApp<S, ModuleNames, Services & { [K in T["name"]]: T; }>;
43
+ get config(): AppConfigFactory<S, ModuleNames, Services, typeof this>;
40
44
  static package(app: InlineApp<any, any>, scripts: Record<string, string>, dependencies: Record<string, string>): {
41
45
  name: string;
42
46
  version: string;
@@ -1,4 +1,7 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.InlineDaemon = exports.InlineApp = void 0;
4
7
  const app_1 = require("./app");
@@ -7,6 +10,10 @@ const trx_engine_1 = require("../transaction/trx_engine");
7
10
  const tree_1 = require("../tree");
8
11
  const daemon_1 = require("../daemon");
9
12
  const app_config_1 = require("./app.config");
13
+ const promise_1 = __importDefault(require("../util/promise"));
14
+ /**
15
+ * @category App
16
+ */
10
17
  class InlineApp extends app_1.App {
11
18
  constructor(name, builders) {
12
19
  super(name, { builders });
@@ -41,7 +48,7 @@ class InlineApp extends app_1.App {
41
48
  });
42
49
  }
43
50
  /**
44
- * Build the application, start providers and trx engines.
51
+ * Build the application, start services and trx engines.
45
52
  * Returns references to start a daemon.
46
53
  */
47
54
  async make() {
@@ -53,19 +60,19 @@ class InlineApp extends app_1.App {
53
60
  const mod = this._injectedModules[key];
54
61
  modules[mod.name] = mod;
55
62
  }
56
- const providers = {};
57
- for (const key in this._providers) {
58
- const provider = this._providers[key].up({
63
+ const services = {};
64
+ for (const key in this._services) {
65
+ const service = this._services[key];
66
+ await promise_1.default.solve(service.up({
59
67
  modules
60
- });
61
- provider.__down = this._providers[key].down;
62
- providers[key] = provider;
68
+ }));
69
+ services[key] = service;
63
70
  }
64
71
  log_1.Log.debug('app', this.name, 'Starting transaction engines');
65
72
  const trxEngines = {};
66
73
  for (const m in modules) {
67
74
  const module = modules[m];
68
- module.start(this, providers);
75
+ module.start(this, services);
69
76
  const trxConfig = this._config.trxEngine?.[m];
70
77
  const authn = {};
71
78
  for (const a in this._config?.authn || {}) {
@@ -74,13 +81,13 @@ class InlineApp extends app_1.App {
74
81
  authn[a] = prov;
75
82
  }
76
83
  }
77
- trxEngines[m] = new trx_engine_1.TrxEngine(`app:${this.name}`, module, authn, trxConfig, providers);
84
+ trxEngines[m] = new trx_engine_1.TrxEngine(`app:${this.name}`, module, authn, trxConfig, services);
78
85
  }
79
86
  log_1.Log.debug('app', this.name, 'Linking externals');
80
87
  this.linkExternals(modules);
81
88
  return {
82
89
  modules,
83
- providers,
90
+ services,
84
91
  trxEngines
85
92
  };
86
93
  }
@@ -90,7 +97,7 @@ class InlineApp extends app_1.App {
90
97
  }
91
98
  const app = await this.make();
92
99
  log_1.Log.debug('app', this.name, 'Spawning daemon');
93
- this._daemon = this.makeDaemon(app.trxEngines, app.providers);
100
+ this._daemon = this.makeDaemon(app.trxEngines, app.services);
94
101
  // Link daemon to modules
95
102
  for (const m in app.modules) {
96
103
  const module = app.modules[m];
@@ -98,8 +105,8 @@ class InlineApp extends app_1.App {
98
105
  }
99
106
  return this._daemon;
100
107
  }
101
- makeDaemon(trxEngines, providers) {
102
- return new InlineDaemon(this.name, trxEngines, providers, this._config);
108
+ makeDaemon(trxEngines, services) {
109
+ return new InlineDaemon(this.name, trxEngines, services, this._config);
103
110
  }
104
111
  package(_package) {
105
112
  this.packageJson = _package;
@@ -113,19 +120,15 @@ class InlineApp extends app_1.App {
113
120
  */
114
121
  linkExternals(modules) {
115
122
  Object.values(modules).forEach(module => {
123
+ module.injectDependencies(modules, {
124
+ buckets: Object.values(module.schema.externals.buckets),
125
+ jobs: Object.values(module.schema.externals.jobs),
126
+ machines: Object.values(module.schema.externals.machines),
127
+ });
116
128
  const buckets = module.schema.externals.buckets;
117
129
  Object.values(buckets).forEach(bucket => {
118
- module.buckets[bucket.refName] = modules[bucket.module].buckets[bucket.name];
119
130
  module.nql.linkExternal(modules[bucket.module].buckets[bucket.name]);
120
131
  });
121
- const jobs = module.schema.externals.jobs;
122
- Object.values(jobs).forEach(job => {
123
- module.jobs[job.refName] = modules[job.module].jobs[job.name];
124
- });
125
- const machines = module.schema.externals.machines;
126
- Object.values(machines).forEach(machine => {
127
- module.machines[machine.refName] = modules[machine.module].machines[machine.name];
128
- });
129
132
  });
130
133
  }
131
134
  // Type Builder Overrides
@@ -133,8 +136,8 @@ class InlineApp extends app_1.App {
133
136
  super.modules(modules);
134
137
  return this;
135
138
  }
136
- provider($) {
137
- super.provider($);
139
+ service($) {
140
+ super.service($);
138
141
  return this;
139
142
  }
140
143
  get config() {
@@ -1,22 +1,30 @@
1
1
  import { $Space, ModuleName } from "../../../schema";
2
- import { AppProvider } from '../app';
2
+ import { IService } from '../service';
3
3
  import { InlineApp } from './../inline.app';
4
4
  import { AnyTrxEngine } from '../../transaction/trx_engine';
5
5
  import { Space } from '../../space';
6
6
  import { Daemon } from "../../daemon";
7
7
  import { AppConfigFactory } from '../app.config';
8
- export declare class MonolythApp<S extends $Space, ModuleNames extends string = ModuleName<S> & string, Providers extends Record<string, any> = Record<string, any>> extends InlineApp<S, ModuleNames, Providers> {
8
+ /**
9
+ * @category App
10
+ * @subcategory Monolyth
11
+ */
12
+ export declare class MonolythApp<S extends $Space, ModuleNames extends string = ModuleName<S> & string, Services extends Record<string, any> = Record<string, any>> extends InlineApp<S, ModuleNames, Services> {
9
13
  private watcher?;
10
14
  constructor(name: string, space?: Space<S>);
11
15
  protected _packageJson?: Record<string, any>;
12
16
  daemon($?: {
13
17
  watch?: boolean;
14
18
  }): Promise<Daemon<S, ModuleNames>>;
15
- protected makeDaemon(trxEngines: Record<ModuleNames, AnyTrxEngine>, providers: Record<string, any>): MonolythDaemon<$Space, ModuleNames>;
19
+ protected makeDaemon(trxEngines: Record<ModuleNames, AnyTrxEngine>, services: Record<string, IService>): MonolythDaemon<$Space, ModuleNames>;
16
20
  remake(): Promise<void>;
17
21
  modules<M extends ModuleName<S>>(modules: M[]): MonolythApp<S, M & ModuleNames>;
18
- provider<Name extends string, T>($: AppProvider<Name, T>): MonolythApp<S, ModuleNames, Providers & { [K in Name]: T; }>;
19
- get config(): AppConfigFactory<S, ModuleNames, Providers, typeof this>;
22
+ service<T extends IService>($: T): MonolythApp<S, ModuleNames, Services & { [K in T["name"]]: T; }>;
23
+ get config(): AppConfigFactory<S, ModuleNames, Services, typeof this>;
20
24
  }
25
+ /**
26
+ * @category App
27
+ * @subcategory Monolyth
28
+ */
21
29
  export declare class MonolythDaemon<S extends $Space, Modules extends ModuleName<S>> extends Daemon<S, Modules> {
22
30
  }
@@ -39,6 +39,10 @@ const space_1 = require("../../space");
39
39
  const daemon_1 = require("../../daemon");
40
40
  const log_1 = require("../../util/log");
41
41
  const app_config_1 = require("../app.config");
42
+ /**
43
+ * @category App
44
+ * @subcategory Monolyth
45
+ */
42
46
  class MonolythApp extends inline_app_1.InlineApp {
43
47
  constructor(name, space) {
44
48
  super(name, []);
@@ -72,8 +76,8 @@ class MonolythApp extends inline_app_1.InlineApp {
72
76
  }
73
77
  return super.daemon();
74
78
  }
75
- makeDaemon(trxEngines, providers) {
76
- return new MonolythDaemon(this.name, trxEngines, providers, this._config);
79
+ makeDaemon(trxEngines, services) {
80
+ return new MonolythDaemon(this.name, trxEngines, services, this._config);
77
81
  }
78
82
  // Reboot (from Watcher)
79
83
  async remake() {
@@ -82,18 +86,18 @@ class MonolythApp extends inline_app_1.InlineApp {
82
86
  log_1.Log.error('app', 'monolyth', `Attempt to remake app ${this.name} failed: Daemon not running.`);
83
87
  return;
84
88
  }
85
- await daemon_1.Daemon.destroy(this._daemon);
89
+ await this._daemon.destroy();
86
90
  this.bootPromise = undefined;
87
91
  const app = await this.make();
88
- await daemon_1.Daemon.reload(this._daemon, app.trxEngines, app.providers);
92
+ await this._daemon.reload(app.trxEngines, app.services);
89
93
  }
90
94
  // Type Builder Overrides
91
95
  modules(modules) {
92
96
  super.modules(modules);
93
97
  return this;
94
98
  }
95
- provider($) {
96
- super.provider($);
99
+ service($) {
100
+ super.service($);
97
101
  return this;
98
102
  }
99
103
  get config() {
@@ -101,6 +105,10 @@ class MonolythApp extends inline_app_1.InlineApp {
101
105
  }
102
106
  }
103
107
  exports.MonolythApp = MonolythApp;
108
+ /**
109
+ * @category App
110
+ * @subcategory Monolyth
111
+ */
104
112
  class MonolythDaemon extends daemon_1.Daemon {
105
113
  }
106
114
  exports.MonolythDaemon = MonolythDaemon;
@@ -0,0 +1,30 @@
1
+ import { AnyModule } from '../module';
2
+ /**
3
+ * Service
4
+ */
5
+ type Optional<T> = (T extends undefined ? [] : never) | [cfg: T];
6
+ export declare abstract class Service<out Name extends string, Config = never> {
7
+ /**
8
+ * This property MUST be set on the implementation class.
9
+ */
10
+ static defaultName: string;
11
+ name: Name;
12
+ config: Config;
13
+ libPaths?: string[];
14
+ abstract up($: {
15
+ modules: Record<string, AnyModule>;
16
+ }): void | Promise<void>;
17
+ abstract down(): void | Promise<void>;
18
+ constructor(...cfg: Optional<Config>);
19
+ constructor(name: Name, ...cfg: Optional<Config>);
20
+ }
21
+ export type AnyService = Service<any, any>;
22
+ export interface IService {
23
+ name: string;
24
+ libPaths?: string[];
25
+ up(this: IService, $: {
26
+ modules: Record<string, AnyModule>;
27
+ }): void | Promise<void>;
28
+ down(this: IService): void | Promise<void>;
29
+ }
30
+ export {};
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Service = void 0;
4
+ class Service {
5
+ constructor(arg1, arg2) {
6
+ if (typeof arg1 === 'string') {
7
+ this.name = arg1;
8
+ }
9
+ else {
10
+ this.name = this.constructor.defaultName;
11
+ }
12
+ this.config = arg2 || arg1;
13
+ }
14
+ }
15
+ exports.Service = Service;
@@ -8,11 +8,24 @@ export type AuthnToken = string;
8
8
  export type AuthnRequest<P extends keyof any> = {
9
9
  [K in P]?: AuthnToken;
10
10
  };
11
+ /**
12
+ * @category Engine
13
+ * @subcategory Auth
14
+ */
11
15
  export declare abstract class AuthnProvider<U extends User> {
16
+ /**
17
+ * - If `true`, this provider is run for all transactions, regardless
18
+ * of a token being sent on the authentication request.
19
+ * - If `false`, the `$.token` is always defined.
20
+ */
21
+ abstract eager: boolean;
12
22
  abstract authenticate($: {
13
23
  trx: AnyTrxNode;
24
+ token?: AuthnToken;
25
+ }): Promise<{
14
26
  token: AuthnToken;
15
- }): Promise<U>;
27
+ user: U;
28
+ }>;
16
29
  }
17
30
  export type AnyAuthnProviders = {
18
31
  [K: string]: AuthnProvider<any>;
@@ -4,6 +4,10 @@ exports.AuthnProvider = void 0;
4
4
  /*
5
5
  Provider
6
6
  */
7
+ /**
8
+ * @category Engine
9
+ * @subcategory Auth
10
+ */
7
11
  class AuthnProvider {
8
12
  }
9
13
  exports.AuthnProvider = AuthnProvider;
@@ -4,12 +4,20 @@ type ZeroUser = {
4
4
  id: NesoiObjId;
5
5
  name: string;
6
6
  };
7
+ /**
8
+ * @category Engine
9
+ * @subcategory Auth
10
+ */
7
11
  export declare class ZeroAuthnProvider extends AuthnProvider<ZeroUser> {
12
+ eager: boolean;
8
13
  authenticate($: {
9
- token: string;
14
+ token?: string;
10
15
  }): Promise<{
11
- id: number;
12
- name: string;
16
+ token: string;
17
+ user: {
18
+ id: number;
19
+ name: string;
20
+ };
13
21
  }>;
14
22
  }
15
23
  export {};
@@ -2,11 +2,22 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ZeroAuthnProvider = void 0;
4
4
  const authn_1 = require("./authn");
5
+ /**
6
+ * @category Engine
7
+ * @subcategory Auth
8
+ */
5
9
  class ZeroAuthnProvider extends authn_1.AuthnProvider {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.eager = false;
13
+ }
6
14
  authenticate($) {
7
15
  return Promise.resolve({
8
- id: 0,
9
- name: $.token
16
+ token: $.token,
17
+ user: {
18
+ id: 0,
19
+ name: $.token
20
+ }
10
21
  });
11
22
  }
12
23
  }
@@ -1,10 +1,15 @@
1
1
  import { AnyDaemon } from '../daemon';
2
2
  import { CLIAdapter } from './cli_adapter';
3
- export type CLIConfig<Providers> = {
3
+ export type CLIConfig<Services> = {
4
+ editor?: string;
4
5
  adapters?: {
5
- [x: string]: (providers: Providers) => CLIAdapter;
6
+ [x: string]: (cli: CLI, services: Services) => CLIAdapter;
6
7
  };
7
8
  };
9
+ /**
10
+ * @category Engine
11
+ * @subcategory CLI
12
+ */
8
13
  export declare class CLI {
9
14
  private daemon;
10
15
  config?: CLIConfig<any> | undefined;
@@ -18,4 +23,5 @@ export declare class CLI {
18
23
  private cmdHelp;
19
24
  private cmdClear;
20
25
  private getCmds;
26
+ openEditor(file: string): void;
21
27
  }
@@ -10,6 +10,11 @@ const console_1 = __importDefault(require("../util/console"));
10
10
  const daemon_1 = require("../daemon");
11
11
  const log_1 = require("../util/log");
12
12
  const cli_input_1 = require("./cli_input");
13
+ const shell_1 = __importDefault(require("../util/shell"));
14
+ /**
15
+ * @category Engine
16
+ * @subcategory CLI
17
+ */
13
18
  class CLI {
14
19
  constructor(daemon, config) {
15
20
  this.daemon = daemon;
@@ -20,7 +25,7 @@ class CLI {
20
25
  // Build adapters
21
26
  this.adapters = {};
22
27
  Object.entries(config?.adapters || {}).forEach(([key, val]) => {
23
- this.adapters[key] = val(daemon_1.Daemon.get(daemon, 'providers'));
28
+ this.adapters[key] = val(this, daemon_1.Daemon.get(daemon, 'services'));
24
29
  this.adapters[key].name = key;
25
30
  });
26
31
  this.input = new cli_input_1.CLIInputHandler(this.getCmds());
@@ -103,5 +108,9 @@ class CLI {
103
108
  }
104
109
  return cmds;
105
110
  }
111
+ openEditor(file) {
112
+ const editor = this.config?.editor || 'code';
113
+ shell_1.default.cmd(process.cwd(), `${editor} ${file}`);
114
+ }
106
115
  }
107
116
  exports.CLI = CLI;
@@ -1,4 +1,9 @@
1
1
  import { AnyDaemon } from '../daemon';
2
+ import { CLI } from './cli';
3
+ /**
4
+ * @category Engine
5
+ * @subcategory CLI
6
+ */
2
7
  export declare abstract class CLICommand<T extends Record<string, any> = Record<string, any>> {
3
8
  scope: 'dev' | 'prod' | 'any';
4
9
  name: string;
@@ -10,10 +15,15 @@ export declare abstract class CLICommand<T extends Record<string, any> = Record<
10
15
  input(payload: string): Record<string, any>;
11
16
  abstract run(daemon: AnyDaemon, input: T): Promise<void>;
12
17
  }
18
+ /**
19
+ * @category Engine
20
+ * @subcategory CLI
21
+ */
13
22
  export declare abstract class CLIAdapter {
23
+ protected cli: CLI;
14
24
  name?: string;
15
25
  commands: Record<string, CLICommand>;
16
- constructor();
26
+ constructor(cli: CLI);
17
27
  runCmd(daemon: AnyDaemon, payload: string): Promise<boolean>;
18
28
  help(): string;
19
29
  }
@@ -2,6 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CLIAdapter = exports.CLICommand = void 0;
4
4
  const string_1 = require("../util/string");
5
+ /**
6
+ * @category Engine
7
+ * @subcategory CLI
8
+ */
5
9
  class CLICommand {
6
10
  constructor(scope, name, syntax, description, regex, groups) {
7
11
  this.scope = scope;
@@ -30,8 +34,13 @@ class CLICommand {
30
34
  }
31
35
  }
32
36
  exports.CLICommand = CLICommand;
37
+ /**
38
+ * @category Engine
39
+ * @subcategory CLI
40
+ */
33
41
  class CLIAdapter {
34
- constructor() {
42
+ constructor(cli) {
43
+ this.cli = cli;
35
44
  this.commands = {};
36
45
  }
37
46
  async runCmd(daemon, payload) {
@@ -1,3 +1,7 @@
1
+ /**
2
+ * @category Engine
3
+ * @subcategory CLI
4
+ */
1
5
  export declare class CLIInputHandler {
2
6
  private suggestions;
3
7
  private items;
@@ -36,6 +36,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.CLIInputHandler = void 0;
37
37
  const stream_1 = require("stream");
38
38
  const readline = __importStar(require("readline"));
39
+ /**
40
+ * @category Engine
41
+ * @subcategory CLI
42
+ */
39
43
  class CLIInputHandler {
40
44
  constructor(suggestions = []) {
41
45
  this.suggestions = suggestions;
@@ -1,8 +1,15 @@
1
+ /**
2
+ * @category Engine
3
+ * @subcategory CLI
4
+ */
1
5
  export default class UI {
2
6
  /**
3
7
  * Show a list of options and let the user pick with up/down + enter
4
8
  */
5
- static select<T>(title: string, options: T[], val?: NoInfer<(o: T) => string>, defaul?: number): Promise<T>;
9
+ static select<T>(title: string, options: T[], val?: NoInfer<(o: T) => string>, defaul?: number): Promise<{
10
+ i: number;
11
+ value: T;
12
+ }>;
6
13
  /**
7
14
  * Ask a question and wait for the answer
8
15
  */
@@ -10,7 +17,12 @@ export default class UI {
10
17
  /**
11
18
  * Show a message and wait for the user to press any key
12
19
  */
13
- static waitForAnyKey(title?: string): Promise<void>;
20
+ static waitForAnyKey(title?: string): Promise<{
21
+ sequence: string;
22
+ name: string;
23
+ ctrl: boolean;
24
+ shift: boolean;
25
+ }>;
14
26
  /**
15
27
  * Ask a yes or no question and wait for the answer
16
28
  */
@@ -36,6 +36,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  const readline = __importStar(require("readline"));
37
37
  const stream_1 = require("stream");
38
38
  const string_1 = require("../util/string");
39
+ /**
40
+ * @category Engine
41
+ * @subcategory CLI
42
+ */
39
43
  class UI {
40
44
  /**
41
45
  * Show a list of options and let the user pick with up/down + enter
@@ -85,7 +89,7 @@ class UI {
85
89
  else if (key.name === 'return') {
86
90
  rl.close();
87
91
  process.stdin.off('keypress', onKeypress);
88
- resolve(options[selected]);
92
+ resolve({ i: selected, value: options[selected] });
89
93
  }
90
94
  clear();
91
95
  print();
@@ -115,7 +119,7 @@ class UI {
115
119
  */
116
120
  static waitForAnyKey(title = 'Press any key to continue...') {
117
121
  return new Promise(resolve => {
118
- UI.step(title);
122
+ process.stdin.write(title + ' ');
119
123
  const mutableStdout = new stream_1.Writable({
120
124
  write: function (chunk, encoding, callback) {
121
125
  }
@@ -127,8 +131,9 @@ class UI {
127
131
  });
128
132
  const onKeypress = function (ch, key) {
129
133
  rl.close();
134
+ console.log(`${(0, string_1.colored)(ch, 'lightcyan')}\n`);
130
135
  process.stdin.off('keypress', onKeypress);
131
- resolve();
136
+ resolve(key);
132
137
  };
133
138
  process.stdin.on('keypress', onKeypress);
134
139
  });
@@ -137,9 +142,8 @@ class UI {
137
142
  * Ask a yes or no question and wait for the answer
138
143
  */
139
144
  static async yesOrNo(text, defaul = 'n') {
140
- let answer = await this.question(text + ' [y|n]', defaul);
141
- answer = answer.toLowerCase();
142
- if (answer === 'y' || answer === 'yes')
145
+ const answer = await this.waitForAnyKey('\n\t» ' + (0, string_1.colored)(text, 'lightblue') + (0, string_1.colored)(' [y|n]', 'darkgray'));
146
+ if (answer.name === 'y')
143
147
  return true;
144
148
  return false;
145
149
  }