nesoi 3.0.6 → 3.0.9

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 (255) hide show
  1. package/lib/adapters/postgres/src/migrator/database.d.ts +3 -6
  2. package/lib/adapters/postgres/src/migrator/database.js +20 -20
  3. package/lib/adapters/postgres/src/migrator/generator/generator.d.ts +22 -0
  4. package/lib/adapters/postgres/src/migrator/generator/generator.js +326 -0
  5. package/lib/adapters/postgres/src/migrator/generator/migration.d.ts +66 -0
  6. package/lib/adapters/postgres/src/migrator/generator/migration.js +249 -0
  7. package/lib/adapters/postgres/src/migrator/generator/provider.d.ts +19 -0
  8. package/lib/adapters/postgres/src/migrator/{migrator.js → generator/provider.js} +23 -25
  9. package/lib/adapters/postgres/src/migrator/index.d.ts +47 -1
  10. package/lib/adapters/postgres/src/migrator/index.js +20 -3
  11. package/lib/adapters/postgres/src/migrator/runner/runner.d.ts +17 -0
  12. package/lib/adapters/postgres/src/migrator/runner/runner.js +249 -0
  13. package/lib/adapters/postgres/src/migrator/runner/status.d.ts +17 -0
  14. package/lib/adapters/postgres/src/migrator/runner/status.js +55 -0
  15. package/lib/adapters/postgres/src/postgres.cli.d.ts +11 -1
  16. package/lib/adapters/postgres/src/postgres.cli.js +34 -11
  17. package/lib/adapters/postgres/test/postgres.bucket_adapter.test.js +4 -4
  18. package/lib/compiler/apps/monolyth/stages/1_mkdir_stage.d.ts +3 -0
  19. package/lib/compiler/apps/monolyth/stages/1_mkdir_stage.js +3 -0
  20. package/lib/compiler/apps/monolyth/stages/2_build_typescript_stage.d.ts +3 -0
  21. package/lib/compiler/apps/monolyth/stages/2_build_typescript_stage.js +3 -0
  22. package/lib/compiler/apps/monolyth/stages/3_copy_types_stage.d.ts +3 -0
  23. package/lib/compiler/apps/monolyth/stages/3_copy_types_stage.js +3 -0
  24. package/lib/compiler/apps/monolyth/stages/4_dump_modules_stage.d.ts +3 -0
  25. package/lib/compiler/apps/monolyth/stages/4_dump_modules_stage.js +32 -0
  26. package/lib/compiler/apps/monolyth/stages/5_dump_cli_stage.d.ts +3 -0
  27. package/lib/compiler/apps/monolyth/stages/5_dump_cli_stage.js +3 -0
  28. package/lib/compiler/apps/monolyth/stages/6_dump_package_json_stage.d.ts +3 -0
  29. package/lib/compiler/apps/monolyth/stages/6_dump_package_json_stage.js +3 -0
  30. package/lib/compiler/elements/externals.element.d.ts +1 -1
  31. package/lib/compiler/module.js +1 -1
  32. package/lib/compiler/stages/1_scan_stage.d.ts +3 -0
  33. package/lib/compiler/stages/1_scan_stage.js +3 -0
  34. package/lib/compiler/stages/2_treeshake_stage.d.ts +3 -0
  35. package/lib/compiler/stages/2_treeshake_stage.js +3 -0
  36. package/lib/compiler/stages/3_extract_ts_stage.d.ts +3 -0
  37. package/lib/compiler/stages/3_extract_ts_stage.js +3 -0
  38. package/lib/compiler/stages/4_build_schemas_stage.d.ts +3 -0
  39. package/lib/compiler/stages/4_build_schemas_stage.js +3 -0
  40. package/lib/compiler/stages/5_inject_ts_stage.d.ts +3 -0
  41. package/lib/compiler/stages/5_inject_ts_stage.js +3 -0
  42. package/lib/compiler/stages/6_build_elements_stage.d.ts +3 -0
  43. package/lib/compiler/stages/6_build_elements_stage.js +3 -0
  44. package/lib/compiler/stages/7_dump_stage.d.ts +3 -0
  45. package/lib/compiler/stages/7_dump_stage.js +3 -0
  46. package/lib/compiler/stages/8_diagnose_stage.d.ts +3 -0
  47. package/lib/compiler/stages/8_diagnose_stage.js +3 -0
  48. package/lib/compiler/treeshake.js +3 -3
  49. package/lib/compiler/typescript/transformers/replace_import.transformer.js +8 -1
  50. package/lib/elements/blocks/block.builder.d.ts +6 -2
  51. package/lib/elements/blocks/block.builder.js +8 -4
  52. package/lib/elements/blocks/block.schema.d.ts +4 -0
  53. package/lib/elements/blocks/block.schema.js +4 -0
  54. package/lib/elements/blocks/job/internal/machine_job.builder.d.ts +6 -3
  55. package/lib/elements/blocks/job/internal/machine_job.builder.js +5 -2
  56. package/lib/elements/blocks/job/internal/machine_job.schema.d.ts +4 -0
  57. package/lib/elements/blocks/job/internal/machine_job.schema.js +4 -0
  58. package/lib/elements/blocks/job/internal/resource_job.builder.d.ts +4 -0
  59. package/lib/elements/blocks/job/internal/resource_job.builder.js +4 -0
  60. package/lib/elements/blocks/job/internal/resource_job.d.ts +4 -0
  61. package/lib/elements/blocks/job/internal/resource_job.js +4 -0
  62. package/lib/elements/blocks/job/internal/resource_job.schema.d.ts +4 -0
  63. package/lib/elements/blocks/job/internal/resource_job.schema.js +4 -0
  64. package/lib/elements/blocks/job/job.builder.d.ts +4 -0
  65. package/lib/elements/blocks/job/job.builder.js +4 -0
  66. package/lib/elements/blocks/job/job.d.ts +4 -0
  67. package/lib/elements/blocks/job/job.js +4 -0
  68. package/lib/elements/blocks/job/job.schema.d.ts +4 -0
  69. package/lib/elements/blocks/job/job.schema.js +4 -0
  70. package/lib/elements/blocks/machine/machine.builder.d.ts +4 -0
  71. package/lib/elements/blocks/machine/machine.builder.js +4 -0
  72. package/lib/elements/blocks/machine/machine.d.ts +12 -0
  73. package/lib/elements/blocks/machine/machine.js +12 -0
  74. package/lib/elements/blocks/machine/machine.schema.d.ts +16 -0
  75. package/lib/elements/blocks/machine/machine.schema.js +16 -1
  76. package/lib/elements/blocks/machine/machine_state.builder.d.ts +4 -0
  77. package/lib/elements/blocks/machine/machine_state.builder.js +4 -0
  78. package/lib/elements/blocks/machine/machine_transition.builder.d.ts +4 -0
  79. package/lib/elements/blocks/machine/machine_transition.builder.js +4 -0
  80. package/lib/elements/blocks/queue/adapters/bucket.queue_adapter.d.ts +4 -0
  81. package/lib/elements/blocks/queue/adapters/bucket.queue_adapter.js +4 -0
  82. package/lib/elements/blocks/queue/adapters/queue_adapter.d.ts +4 -0
  83. package/lib/elements/blocks/queue/adapters/queue_adapter.js +4 -0
  84. package/lib/elements/blocks/queue/queue.builder.d.ts +4 -0
  85. package/lib/elements/blocks/queue/queue.builder.js +4 -0
  86. package/lib/elements/blocks/queue/queue.schema.d.ts +4 -0
  87. package/lib/elements/blocks/queue/queue.schema.js +4 -0
  88. package/lib/elements/blocks/resource/resource.builder.d.ts +4 -0
  89. package/lib/elements/blocks/resource/resource.builder.js +4 -0
  90. package/lib/elements/blocks/resource/resource.d.ts +4 -0
  91. package/lib/elements/blocks/resource/resource.js +4 -0
  92. package/lib/elements/blocks/resource/resource.schema.d.ts +4 -0
  93. package/lib/elements/blocks/resource/resource.schema.js +4 -0
  94. package/lib/elements/edge/controller/adapters/cli.controller_adapter.d.ts +4 -0
  95. package/lib/elements/edge/controller/adapters/cli.controller_adapter.js +4 -0
  96. package/lib/elements/edge/controller/adapters/controller_adapter.d.ts +4 -0
  97. package/lib/elements/edge/controller/adapters/controller_adapter.js +4 -0
  98. package/lib/elements/edge/controller/controller.builder.d.ts +16 -0
  99. package/lib/elements/edge/controller/controller.builder.js +16 -0
  100. package/lib/elements/edge/controller/controller.d.ts +4 -0
  101. package/lib/elements/edge/controller/controller.js +4 -0
  102. package/lib/elements/edge/controller/controller.schema.d.ts +16 -0
  103. package/lib/elements/edge/controller/controller.schema.js +16 -0
  104. package/lib/elements/{blocks → edge}/externals/externals.builder.d.ts +4 -0
  105. package/lib/elements/{blocks → edge}/externals/externals.builder.js +4 -0
  106. package/lib/elements/{blocks → edge}/externals/externals.schema.d.ts +4 -0
  107. package/lib/elements/{blocks → edge}/externals/externals.schema.js +4 -0
  108. package/lib/elements/entities/bucket/adapters/bucket_adapter.d.ts +16 -11
  109. package/lib/elements/entities/bucket/adapters/bucket_adapter.js +5 -0
  110. package/lib/elements/entities/bucket/adapters/memory.bucket_adapter.d.ts +4 -0
  111. package/lib/elements/entities/bucket/adapters/memory.bucket_adapter.js +4 -0
  112. package/lib/elements/entities/bucket/adapters/memory.nql.d.ts +4 -1
  113. package/lib/elements/entities/bucket/adapters/memory.nql.js +4 -1
  114. package/lib/elements/entities/bucket/bucket.builder.d.ts +4 -0
  115. package/lib/elements/entities/bucket/bucket.builder.js +4 -0
  116. package/lib/elements/entities/bucket/bucket.d.ts +9 -2
  117. package/lib/elements/entities/bucket/bucket.js +14 -7
  118. package/lib/elements/entities/bucket/bucket.schema.d.ts +4 -0
  119. package/lib/elements/entities/bucket/bucket.schema.js +4 -0
  120. package/lib/elements/entities/bucket/cache/bucket_cache.d.ts +8 -0
  121. package/lib/elements/entities/bucket/cache/bucket_cache.js +8 -0
  122. package/lib/elements/entities/bucket/graph/bucket_graph.builder.d.ts +4 -0
  123. package/lib/elements/entities/bucket/graph/bucket_graph.builder.js +4 -0
  124. package/lib/elements/entities/bucket/graph/bucket_graph.d.ts +4 -0
  125. package/lib/elements/entities/bucket/graph/bucket_graph.js +4 -0
  126. package/lib/elements/entities/bucket/graph/bucket_graph.schema.d.ts +8 -0
  127. package/lib/elements/entities/bucket/graph/bucket_graph.schema.js +8 -0
  128. package/lib/elements/entities/bucket/graph/bucket_graph_link.builder.d.ts +8 -0
  129. package/lib/elements/entities/bucket/graph/bucket_graph_link.builder.js +8 -0
  130. package/lib/elements/entities/bucket/model/bucket_model.builder.d.ts +4 -0
  131. package/lib/elements/entities/bucket/model/bucket_model.builder.js +4 -0
  132. package/lib/elements/entities/bucket/model/bucket_model.convert.d.ts +8 -0
  133. package/lib/elements/entities/bucket/model/bucket_model.convert.js +8 -0
  134. package/lib/elements/entities/bucket/model/bucket_model.schema.d.ts +8 -0
  135. package/lib/elements/entities/bucket/model/bucket_model.schema.js +8 -0
  136. package/lib/elements/entities/bucket/model/bucket_model_field.builder.d.ts +8 -0
  137. package/lib/elements/entities/bucket/model/bucket_model_field.builder.js +8 -0
  138. package/lib/elements/entities/bucket/query/nql_compiler.d.ts +9 -0
  139. package/lib/elements/entities/bucket/query/nql_compiler.js +9 -0
  140. package/lib/elements/entities/bucket/query/nql_engine.d.ts +6 -0
  141. package/lib/elements/entities/bucket/query/nql_engine.js +6 -0
  142. package/lib/elements/entities/bucket/view/bucket_view.builder.d.ts +4 -0
  143. package/lib/elements/entities/bucket/view/bucket_view.builder.js +4 -0
  144. package/lib/elements/entities/bucket/view/bucket_view.d.ts +4 -0
  145. package/lib/elements/entities/bucket/view/bucket_view.js +10 -2
  146. package/lib/elements/entities/bucket/view/bucket_view.schema.d.ts +8 -0
  147. package/lib/elements/entities/bucket/view/bucket_view.schema.js +8 -0
  148. package/lib/elements/entities/bucket/view/bucket_view_field.builder.d.ts +8 -0
  149. package/lib/elements/entities/bucket/view/bucket_view_field.builder.js +8 -0
  150. package/lib/elements/entities/constants/constants.builder.d.ts +21 -6
  151. package/lib/elements/entities/constants/constants.builder.js +21 -6
  152. package/lib/elements/entities/constants/constants.d.ts +4 -0
  153. package/lib/elements/entities/constants/constants.js +4 -0
  154. package/lib/elements/entities/constants/constants.schema.d.ts +16 -0
  155. package/lib/elements/entities/constants/constants.schema.js +16 -0
  156. package/lib/elements/entities/drive/drive_adapter.d.ts +15 -10
  157. package/lib/elements/entities/drive/drive_adapter.js +5 -2
  158. package/lib/elements/entities/drive/local.drive_adapter.d.ts +10 -4
  159. package/lib/elements/entities/drive/local.drive_adapter.js +23 -8
  160. package/lib/elements/entities/message/message.builder.d.ts +4 -0
  161. package/lib/elements/entities/message/message.builder.js +4 -0
  162. package/lib/elements/entities/message/message.d.ts +4 -0
  163. package/lib/elements/entities/message/message.js +4 -0
  164. package/lib/elements/entities/message/message.schema.d.ts +4 -0
  165. package/lib/elements/entities/message/message.schema.js +4 -0
  166. package/lib/elements/entities/message/message_parser.d.ts +4 -0
  167. package/lib/elements/entities/message/message_parser.js +4 -0
  168. package/lib/elements/entities/message/template/message_template.builder.d.ts +4 -0
  169. package/lib/elements/entities/message/template/message_template.builder.js +4 -0
  170. package/lib/elements/entities/message/template/message_template.schema.d.ts +9 -0
  171. package/lib/elements/entities/message/template/message_template.schema.js +25 -0
  172. package/lib/elements/entities/message/template/message_template_field.builder.d.ts +8 -0
  173. package/lib/elements/entities/message/template/message_template_field.builder.js +8 -0
  174. package/lib/elements/index.d.ts +1 -1
  175. package/lib/elements/index.js +1 -1
  176. package/lib/engine/apps/app.config.d.ts +3 -0
  177. package/lib/engine/apps/app.config.js +3 -0
  178. package/lib/engine/apps/app.d.ts +3 -0
  179. package/lib/engine/apps/app.js +4 -1
  180. package/lib/engine/apps/inline.app.d.ts +3 -0
  181. package/lib/engine/apps/inline.app.js +3 -0
  182. package/lib/engine/apps/monolyth/monolyth.app.d.ts +8 -0
  183. package/lib/engine/apps/monolyth/monolyth.app.js +8 -0
  184. package/lib/engine/auth/authn.d.ts +4 -0
  185. package/lib/engine/auth/authn.js +4 -0
  186. package/lib/engine/auth/zero.authn_provider.d.ts +4 -0
  187. package/lib/engine/auth/zero.authn_provider.js +4 -0
  188. package/lib/engine/cli/cli.d.ts +7 -1
  189. package/lib/engine/cli/cli.js +10 -1
  190. package/lib/engine/cli/cli_adapter.d.ts +11 -1
  191. package/lib/engine/cli/cli_adapter.js +10 -1
  192. package/lib/engine/cli/cli_input.d.ts +4 -0
  193. package/lib/engine/cli/cli_input.js +4 -0
  194. package/lib/engine/cli/ui.d.ts +14 -2
  195. package/lib/engine/cli/ui.js +10 -6
  196. package/lib/engine/daemon.d.ts +93 -6
  197. package/lib/engine/daemon.js +90 -7
  198. package/lib/engine/data/date.d.ts +4 -0
  199. package/lib/engine/data/date.js +4 -0
  200. package/lib/engine/data/datetime.d.ts +4 -0
  201. package/lib/engine/data/datetime.js +4 -0
  202. package/lib/engine/data/decimal.d.ts +4 -0
  203. package/lib/engine/data/decimal.js +4 -0
  204. package/lib/engine/data/file.d.ts +23 -23
  205. package/lib/engine/data/file.js +66 -29
  206. package/lib/engine/data/json.d.ts +4 -0
  207. package/lib/engine/data/json.js +4 -0
  208. package/lib/engine/data/tree.d.ts +4 -0
  209. package/lib/engine/data/tree.js +4 -0
  210. package/lib/engine/dependency.d.ts +63 -2
  211. package/lib/engine/dependency.js +52 -0
  212. package/lib/engine/module.d.ts +109 -9
  213. package/lib/engine/module.js +110 -25
  214. package/lib/engine/space.d.ts +163 -10
  215. package/lib/engine/space.js +184 -22
  216. package/lib/engine/transaction/nodes/bucket.trx_node.d.ts +12 -0
  217. package/lib/engine/transaction/nodes/bucket.trx_node.js +12 -0
  218. package/lib/engine/transaction/nodes/bucket_query.trx_node.d.ts +4 -0
  219. package/lib/engine/transaction/nodes/bucket_query.trx_node.js +4 -0
  220. package/lib/engine/transaction/nodes/job.trx_node.d.ts +4 -0
  221. package/lib/engine/transaction/nodes/job.trx_node.js +4 -0
  222. package/lib/engine/transaction/nodes/machine.trx_node.d.ts +4 -0
  223. package/lib/engine/transaction/nodes/machine.trx_node.js +4 -0
  224. package/lib/engine/transaction/nodes/queue.trx_node.d.ts +4 -0
  225. package/lib/engine/transaction/nodes/queue.trx_node.js +4 -0
  226. package/lib/engine/transaction/nodes/resource.trx_node.d.ts +4 -0
  227. package/lib/engine/transaction/nodes/resource.trx_node.js +4 -0
  228. package/lib/engine/transaction/trx.d.ts +8 -0
  229. package/lib/engine/transaction/trx.js +8 -0
  230. package/lib/engine/transaction/trx_engine.d.ts +4 -0
  231. package/lib/engine/transaction/trx_engine.js +4 -3
  232. package/lib/engine/transaction/trx_node.d.ts +4 -0
  233. package/lib/engine/transaction/trx_node.js +4 -0
  234. package/lib/engine/tree.d.ts +54 -2
  235. package/lib/engine/tree.js +54 -2
  236. package/lib/engine/util/mime.d.ts +4 -4
  237. package/lib/engine/util/mime.js +7 -9
  238. package/lib/schema.d.ts +1 -1
  239. package/package.json +1 -1
  240. package/tsconfig.build.tsbuildinfo +1 -1
  241. package/lib/adapters/postgres/src/migrator/bucket.d.ts +0 -20
  242. package/lib/adapters/postgres/src/migrator/bucket.js +0 -184
  243. package/lib/adapters/postgres/src/migrator/migration.d.ts +0 -57
  244. package/lib/adapters/postgres/src/migrator/migration.js +0 -203
  245. package/lib/adapters/postgres/src/migrator/migrator.d.ts +0 -21
  246. package/lib/adapters/postgres/src/migrator/runner.d.ts +0 -71
  247. package/lib/adapters/postgres/src/migrator/runner.js +0 -271
  248. package/lib/elements/entities/bucket/adapters/memory.bucket_query copy.d.ts +0 -0
  249. package/lib/elements/entities/bucket/adapters/memory.bucket_query copy.js +0 -218
  250. package/lib/elements/entities/bucket/adapters/slow_memory.bucket_adapter.d.ts +0 -0
  251. package/lib/elements/entities/bucket/adapters/slow_memory.bucket_adapter.js +0 -47
  252. package/lib/engine/apps/monolyth/monolyth.cli.d.ts +0 -45
  253. package/lib/engine/apps/monolyth/monolyth.cli.js +0 -362
  254. package/lib/engine/util/cache.d.ts +0 -6
  255. package/lib/engine/util/cache.js +0 -20
@@ -39,7 +39,7 @@ const path = __importStar(require("path"));
39
39
  // import { MachineBuilder } from "~/plugins/machine";
40
40
  const machine_builder_1 = require("../elements/blocks/machine/machine.builder");
41
41
  const constants_builder_1 = require("../elements/entities/constants/constants.builder");
42
- const externals_builder_1 = require("../elements/blocks/externals/externals.builder");
42
+ const externals_builder_1 = require("../elements/edge/externals/externals.builder");
43
43
  const job_builder_1 = require("../elements/blocks/job/job.builder");
44
44
  const message_builder_1 = require("../elements/entities/message/message.builder");
45
45
  const resource_builder_1 = require("../elements/blocks/resource/resource.builder");
@@ -49,21 +49,48 @@ const bucket_model_builder_1 = require("../elements/entities/bucket/model/bucket
49
49
  const bucket_model_field_builder_1 = require("../elements/entities/bucket/model/bucket_model_field.builder");
50
50
  const error_1 = require("../compiler/error");
51
51
  const queue_builder_1 = require("../elements/blocks/queue/queue.builder");
52
+ /**
53
+ * When using Nesoi as a framework (not a library), the `Space`
54
+ * is a collection of all modules.
55
+ * The name comes from the linear algebra notion of 'vector space'.
56
+ * It's the 'module space', where all past and future modules exist.
57
+ *
58
+ * The `Space` is mainly used to:
59
+ * - Declare builders which reference the compiled schemas with a minimal syntax
60
+ * - Read modules from the directory structure to compile schemas and apps
61
+ *
62
+ * @category Engine
63
+ */
52
64
  class Space {
53
- constructor(dirname) {
54
- this.dirname = dirname;
65
+ /**
66
+ * @param dirpath The path for the Space root directory
67
+ */
68
+ constructor(dirpath) {
69
+ this.dirpath = dirpath;
55
70
  this._authn = {};
56
- this._name = 'App';
71
+ this._name = 'Space';
57
72
  }
73
+ /*
74
+ * ROOT
75
+ */
58
76
  /**
59
- * Space Settings
60
- * - Name
61
- * - Authentication
77
+ * Set a custom Space name. The default is 'Space'.
78
+ * > This method MUST be called on the root `nesoi.ts` file.
79
+ * @param name A new Space name
80
+ * @returns The current Space, for call-chaining
62
81
  */
63
82
  name(name) {
64
83
  this._name = name;
65
84
  return this;
66
85
  }
86
+ /**
87
+ * Set one authentication model.
88
+ * This model MUST be yielded by the `AuthnProvider` assigned
89
+ * to the same name.
90
+ * > This method MUST be called on the root `nesoi.ts` file.
91
+ * @param name A name for the authentication
92
+ * @returns The current Space, for call-chaining
93
+ */
67
94
  authn(name, $) {
68
95
  const fieldBuilder = new bucket_model_field_builder_1.BucketModelFieldFactory('*');
69
96
  const fields = $(fieldBuilder);
@@ -71,64 +98,199 @@ class Space {
71
98
  this._authn[name] = bucket_model_builder_1.BucketModelBuilder.build(builder);
72
99
  return this;
73
100
  }
74
- // Statics
75
- externals(module) {
76
- return new externals_builder_1.ExternalsBuilder(module);
77
- }
101
+ /*
102
+ * ELEMENTS
103
+ */
104
+ // Entities
105
+ /**
106
+ * > Elements / Entities / Constants
107
+ *
108
+ * `Constants` represent statically-known data, namely `values` and `enums`,
109
+ * which can be referenced from any `Module`.
110
+ *
111
+ * @param module A module name
112
+ * @returns A `Constants` builder
113
+ */
78
114
  constants(module) {
79
115
  return new constants_builder_1.ConstantsBuilder(module);
80
116
  }
81
- // Entities
117
+ /**
118
+ * > Elements / Entities / Bucket
119
+ *
120
+ * A `Bucket` represents stored data, on any kind of storage.
121
+ * It contains a definition of the type of data (_model_),
122
+ * the relations between this data and other (_graph_),
123
+ * and different ways to present this data (_view_).
124
+ *
125
+ * The actual storage is linked through a `BucketAdapter`, on the
126
+ * `App` definition. Which means you build a _Bucket_ without
127
+ * knowing how it's data will be stored, and then later plug
128
+ * any adapter (like Memory, or PostgreSQL, etc) into it.
129
+ *
130
+ * @param globalName A _Bucket_ name in the format `module::name`
131
+ * @returns A `Bucket` builder
132
+ */
82
133
  bucket(globalName) {
83
134
  const [module, name] = globalName.split('::');
84
135
  // TODO: review why this was not "$Bucket & {...}"
85
136
  // type Bucket = Module['buckets'][K] & { name: K }
86
137
  return new bucket_builder_1.BucketBuilder(module, name);
87
138
  }
139
+ /**
140
+ * > Elements / Entities / Message
141
+ *
142
+ * A `Message` represents data in transit (generally incoming).
143
+ * It contains a definition of the data format (_template_),
144
+ * which includes possibly complex validation rules.
145
+ *
146
+ * This _template_ is used to _parse_ an object into the message format,
147
+ * so a _Message_ has two states: `raw` and `parsed`.
148
+ * - `raw`: A JS object containing a `$` with the message name plus some other properties
149
+ * - `parsed`: A `Message` object containing the parsed data plus some metadata (signature, etc)
150
+ *
151
+ * @param globalName A message name in the format `module::name`
152
+ * @returns A `Constants` builder
153
+ */
88
154
  message(globalName) {
89
155
  const [module, name] = globalName.split('::');
90
156
  return new message_builder_1.MessageBuilder(module, name);
91
157
  }
92
158
  // Blocks
159
+ /**
160
+ * > Elements / Blocks / Job
161
+ *
162
+ * A `Job` is a method which accepts one or more _Messages_ as input.
163
+ *
164
+ * It might declare _extra_ data to include on the job input, and
165
+ * conditions which must be met before the method is executed.
166
+ * These can be pre-validate a Job before queuing it, or for
167
+ * organizing the job flow in a more declarative way.
168
+ *
169
+ * This method has access to all elements within it's module.
170
+ *
171
+ * @param globalName A _Job_ name in the format `module::name`
172
+ * @returns A `Job` builder
173
+ */
93
174
  job(globalName) {
94
175
  const [module, name] = globalName.split('::');
95
176
  return new job_builder_1.JobBuilder(module, name);
96
177
  }
178
+ /**
179
+ * > Elements / Blocks / Resource
180
+ *
181
+ * A `Resource` is a fast way to declare simple CRUD _Jobs_ and _Messages_ for a `Bucket`.
182
+ *
183
+ * It offers 5 types of jobs:
184
+ * - `view`: Read one or all bucket object(s) through a specific view
185
+ * - `query`: Query bucket object(s)
186
+ * - `create`: Create one object on the bucket
187
+ * - `update`: Modify (patch) one object of the bucket
188
+ * - `delete`: Delete one object of the bucket
189
+ *
190
+ * @param globalName A _Resource_ name in the format `module::name`
191
+ * @returns A `Resource` builder
192
+ */
97
193
  resource(globalName) {
98
194
  const [module, name] = globalName.split('::');
99
195
  return new resource_builder_1.ResourceBuilder(module, name);
100
196
  }
197
+ /**
198
+ * > Elements / Blocks / Machine
199
+ *
200
+ * A `Machine` is a _Statechart_ which reads it's context from a _Bucket_,
201
+ * and uses a specific property to store a discrete state.
202
+ * When this machine receives _Messages_, it follows the definition to possibly
203
+ * advance the state and run _Jobs_.
204
+ *
205
+ * @param globalName A _Machine_ name in the format `module::name`
206
+ * @returns A `Machine` builder
207
+ */
101
208
  machine(globalName) {
102
209
  const [module, name] = globalName.split('::');
103
210
  return new machine_builder_1.MachineBuilder(module, name);
104
211
  }
212
+ /**
213
+ * > Elements / Blocks / Queue
214
+ *
215
+ * A `Queue` stores _Messages_ to be consumed later in order.
216
+ *
217
+ * @param globalName A _Queue_ name in the format `module::name`
218
+ * @returns A `Queue` builder
219
+ */
220
+ queue(globalName) {
221
+ const [module, name] = globalName.split('::');
222
+ return new queue_builder_1.QueueBuilder(module, name);
223
+ }
105
224
  // Edge
225
+ /**
226
+ * > Elements / Edge / Externals
227
+ *
228
+ * `Externals` references elements from other modules, allowing
229
+ * them to be used by Jobs and other elements from this module.
230
+ *
231
+ * @param module A module name
232
+ * @returns A `Externals` builder
233
+ */
234
+ externals(module) {
235
+ return new externals_builder_1.ExternalsBuilder(module);
236
+ }
237
+ /**
238
+ * > Elements / Edge / Controller
239
+ *
240
+ * A `Controller` allows an external application to send
241
+ * and receive messages /from the Nesoi Engine.
242
+ *
243
+ * The controller declares endpoints which accept specific messages
244
+ * and route them to specific elements.
245
+ * On the `App`, each controller is assigned a `ControllerAdapter`, which
246
+ * is responsible for creating the raw _Messages_ and sending them to the Engine.
247
+ *
248
+ * @param globalName A _Controller_ name in the format `module::name`
249
+ * @returns A `Controller` builder
250
+ */
106
251
  controller(globalName) {
107
252
  const [module, name] = globalName.split('::');
108
253
  return new controller_builder_1.ControllerBuilder(module, name);
109
254
  }
110
- queue(globalName) {
111
- const [module, name] = globalName.split('::');
112
- return new queue_builder_1.QueueBuilder(module, name);
113
- }
255
+ /*
256
+ * RUN / COMPILE
257
+ */
114
258
  /**
259
+ * Resolve a path relative to the Space root.
115
260
  *
261
+ * @param space A `Space` instance
262
+ * @param relPath One or many path terms
263
+ * @returns A resolved path
116
264
  */
117
265
  static path(space, ...relPath) {
118
- if (!space.dirname) {
266
+ if (!space.dirpath) {
119
267
  throw new Error('Cant use .path() on virtual space');
120
268
  }
121
- return path.resolve(space.dirname, ...relPath);
269
+ return path.resolve(space.dirpath, ...relPath);
122
270
  }
271
+ /**
272
+ * Return a path relative to the Space root given an absolute path.
273
+ *
274
+ * @param space A `Space` instance
275
+ * @param relPath One or many path terms
276
+ * @returns A resolved path
277
+ */
123
278
  static relPath(space, absPath) {
124
- if (!space.dirname) {
279
+ if (!space.dirpath) {
125
280
  throw new Error('Cant use .path() on virtual space');
126
281
  }
127
- return path.relative(space.dirname, absPath);
282
+ return path.relative(space.dirpath, absPath);
128
283
  }
284
+ /**
285
+ * Read all module directories from the Space root, then
286
+ * run a callback for each.
287
+ *
288
+ * @param space A `Space` instance
289
+ * @param buildFn A callback to run for each module directory
290
+ */
129
291
  static scan(space, buildFn) {
130
- if (!fs.existsSync(space.dirname)) {
131
- throw error_1.CompilerError.DirectoryDoesntExists(space.dirname);
292
+ if (!fs.existsSync(space.dirpath)) {
293
+ throw error_1.CompilerError.DirectoryDoesntExists(space.dirpath);
132
294
  }
133
295
  const modulesPath = this.path(space, './modules');
134
296
  if (!fs.existsSync(modulesPath)) {
@@ -6,6 +6,10 @@ import { Bucket } from "../../../elements/entities/bucket/bucket";
6
6
  import { CreateObj, PatchObj, PutObj } from "../../../elements/entities/bucket/bucket.types";
7
7
  import { NQL_Query } from "../../../elements/entities/bucket/query/nql.schema";
8
8
  import { NesoiFile } from "../../data/file";
9
+ /**
10
+ * @category Engine
11
+ * @subcategory Transaction
12
+ */
9
13
  export declare class BucketTrxNode<M extends $Module, $ extends $Bucket> {
10
14
  private parentTrx;
11
15
  private bucket;
@@ -147,6 +151,10 @@ export declare class BucketTrxNode<M extends $Module, $ extends $Bucket> {
147
151
  */
148
152
  get unsafe(): BucketUnsafeTrxNode<M, $>;
149
153
  }
154
+ /**
155
+ * @category Engine
156
+ * @subcategory Transaction
157
+ */
150
158
  export declare class BucketUnsafeTrxNode<M extends $Module, $ extends $Bucket> {
151
159
  private bucketTrx;
152
160
  private bucket;
@@ -188,6 +196,10 @@ export declare class BucketUnsafeTrxNode<M extends $Module, $ extends $Bucket> {
188
196
  */
189
197
  deleteMany(ids: $['#data']['id'][]): Promise<void>;
190
198
  }
199
+ /**
200
+ * @category Engine
201
+ * @subcategory Transaction
202
+ */
191
203
  export declare class BucketDriveTrxNode<M extends $Module, $ extends $Bucket> {
192
204
  private bucketTrx;
193
205
  private bucket;
@@ -4,6 +4,10 @@ exports.BucketDriveTrxNode = exports.BucketUnsafeTrxNode = exports.BucketTrxNode
4
4
  const trx_node_1 = require("../trx_node");
5
5
  const bucket_query_trx_node_1 = require("./bucket_query.trx_node");
6
6
  const error_1 = require("../../data/error");
7
+ /**
8
+ * @category Engine
9
+ * @subcategory Transaction
10
+ */
7
11
  class BucketTrxNode {
8
12
  constructor(parentTrx, bucket) {
9
13
  this.parentTrx = parentTrx;
@@ -283,6 +287,10 @@ class BucketTrxNode {
283
287
  }
284
288
  }
285
289
  exports.BucketTrxNode = BucketTrxNode;
290
+ /**
291
+ * @category Engine
292
+ * @subcategory Transaction
293
+ */
286
294
  class BucketUnsafeTrxNode {
287
295
  constructor(bucketTrx, bucket, enableTenancy) {
288
296
  this.bucketTrx = bucketTrx;
@@ -360,6 +368,10 @@ class BucketUnsafeTrxNode {
360
368
  }
361
369
  }
362
370
  exports.BucketUnsafeTrxNode = BucketUnsafeTrxNode;
371
+ /**
372
+ * @category Engine
373
+ * @subcategory Transaction
374
+ */
363
375
  class BucketDriveTrxNode {
364
376
  constructor(bucketTrx, bucket) {
365
377
  this.bucketTrx = bucketTrx;
@@ -4,6 +4,10 @@ import { $Bucket } from "../../../elements/entities/bucket/bucket.schema";
4
4
  import { Bucket } from "../../../elements/entities/bucket/bucket";
5
5
  import { NQL_AnyQuery, NQL_Pagination, NQL_Query } from "../../../elements/entities/bucket/query/nql.schema";
6
6
  import { NQL_Result } from "../../../elements/entities/bucket/query/nql_engine";
7
+ /**
8
+ * @category Engine
9
+ * @subcategory Transaction
10
+ */
7
11
  export declare class BucketQueryTrxNode<M extends $Module, B extends $Bucket, V extends ViewName<B>, Obj = ViewObj<B, V>> {
8
12
  private trx;
9
13
  private bucket;
@@ -3,6 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BucketQueryTrxNode = void 0;
4
4
  const trx_node_1 = require("../trx_node");
5
5
  const error_1 = require("../../data/error");
6
+ /**
7
+ * @category Engine
8
+ * @subcategory Transaction
9
+ */
6
10
  class BucketQueryTrxNode {
7
11
  constructor(trx, bucket, query, view, enableTenancy) {
8
12
  this.trx = trx;
@@ -4,6 +4,10 @@ import { $Job } from "../../../elements/blocks/job/job.schema";
4
4
  import { Job } from "../../../elements/blocks/job/job";
5
5
  import { Message } from "../../../elements/entities/message/message";
6
6
  import { JobInput } from "../../../elements/blocks/job/job.types";
7
+ /**
8
+ * @category Engine
9
+ * @subcategory Transaction
10
+ */
7
11
  export declare class JobTrxNode<M extends $Module, $ extends $Job> {
8
12
  private trx;
9
13
  private job;
@@ -2,6 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.JobTrxNode = void 0;
4
4
  const trx_node_1 = require("../trx_node");
5
+ /**
6
+ * @category Engine
7
+ * @subcategory Transaction
8
+ */
5
9
  class JobTrxNode {
6
10
  constructor(trx, job, ctx) {
7
11
  this.trx = trx;
@@ -3,6 +3,10 @@ import { TrxNode } from '../trx_node';
3
3
  import { $Machine } from "../../../elements/blocks/machine/machine.schema";
4
4
  import { Machine, MachineOutput } from "../../../elements/blocks/machine/machine";
5
5
  import { Message } from "../../../elements/entities/message/message";
6
+ /**
7
+ * @category Engine
8
+ * @subcategory Transaction
9
+ */
6
10
  export declare class MachineTrxNode<M extends $Module, $ extends $Machine> {
7
11
  private trx;
8
12
  private machine;
@@ -2,6 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MachineTrxNode = void 0;
4
4
  const trx_node_1 = require("../trx_node");
5
+ /**
6
+ * @category Engine
7
+ * @subcategory Transaction
8
+ */
5
9
  class MachineTrxNode {
6
10
  constructor(trx, machine) {
7
11
  this.trx = trx;
@@ -2,6 +2,10 @@ import { $Module, RawMessageInput } from "../../../schema";
2
2
  import { TrxNode } from '../trx_node';
3
3
  import { $Queue } from "../../../elements/blocks/queue/queue.schema";
4
4
  import { Queue } from "../../../elements/blocks/queue/queue";
5
+ /**
6
+ * @category Engine
7
+ * @subcategory Transaction
8
+ */
5
9
  export declare class QueueTrxNode<M extends $Module, $ extends $Queue> {
6
10
  private trx;
7
11
  private queue;
@@ -2,6 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.QueueTrxNode = void 0;
4
4
  const trx_node_1 = require("../trx_node");
5
+ /**
6
+ * @category Engine
7
+ * @subcategory Transaction
8
+ */
5
9
  class QueueTrxNode {
6
10
  constructor(trx, queue) {
7
11
  this.trx = trx;
@@ -8,6 +8,10 @@ type QueryRaw<$ extends $Resource> = $['#input.query']['#raw'];
8
8
  type CreateRaw<$ extends $Resource> = $['#input.create']['#raw'];
9
9
  type UpdateRaw<$ extends $Resource> = $['#input.update']['#raw'];
10
10
  type DeleteRaw<$ extends $Resource> = $['#input.delete']['#raw'];
11
+ /**
12
+ * @category Engine
13
+ * @subcategory Transaction
14
+ */
11
15
  export declare class ResourceTrxNode<M extends $Module, $ extends $Resource> {
12
16
  private trx;
13
17
  private resource;
@@ -2,6 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ResourceTrxNode = void 0;
4
4
  const trx_node_1 = require("../trx_node");
5
+ /**
6
+ * @category Engine
7
+ * @subcategory Transaction
8
+ */
5
9
  class ResourceTrxNode {
6
10
  constructor(trx, resource) {
7
11
  this.trx = trx;
@@ -6,6 +6,10 @@ import { AnyUsers, AuthnRequest } from '../auth/authn';
6
6
  import { NesoiDatetime } from '../data/datetime';
7
7
  type TrxOrigin = TrxEngineOrigin | `trx:${string}`;
8
8
  type TrxState = 'open' | 'ok' | 'error';
9
+ /**
10
+ * @category Engine
11
+ * @subcategory Transaction
12
+ */
9
13
  export declare class TrxStatus<Output> {
10
14
  id: string;
11
15
  origin: TrxOrigin;
@@ -18,6 +22,10 @@ export declare class TrxStatus<Output> {
18
22
  constructor(id: string, origin: TrxOrigin, start: NesoiDatetime, end?: NesoiDatetime | undefined, state?: TrxState | undefined, output?: Output | undefined, error?: string | undefined, nodes?: TrxNodeStatus[]);
19
23
  summary(): string;
20
24
  }
25
+ /**
26
+ * @category Engine
27
+ * @subcategory Transaction
28
+ */
21
29
  export declare class Trx<S extends $Space, M extends $Module, Authn extends AnyUsers> {
22
30
  private module;
23
31
  id: string;
@@ -8,6 +8,10 @@ const datetime_1 = require("../data/datetime");
8
8
  /*
9
9
  Transaction Status
10
10
  */
11
+ /**
12
+ * @category Engine
13
+ * @subcategory Transaction
14
+ */
11
15
  class TrxStatus {
12
16
  constructor(id, origin, start, end, state, output, error, nodes = []) {
13
17
  this.id = id;
@@ -45,6 +49,10 @@ class TrxStatus {
45
49
  }
46
50
  }
47
51
  exports.TrxStatus = TrxStatus;
52
+ /**
53
+ * @category Engine
54
+ * @subcategory Transaction
55
+ */
48
56
  class Trx {
49
57
  constructor(module, origin, authn, id, root, nodes) {
50
58
  this.start = datetime_1.NesoiDatetime.now();
@@ -5,6 +5,10 @@ import { TrxNode, TrxNodeStatus } from './trx_node';
5
5
  import { AnyAuthnProviders, AuthnRequest } from '../auth/authn';
6
6
  import { TrxEngineConfig } from './trx_engine.config';
7
7
  export type TrxEngineOrigin = `app:${string}`;
8
+ /**
9
+ * @category Engine
10
+ * @subcategory Transaction
11
+ */
8
12
  export declare class TrxEngine<S extends $Space, M extends $Module, Authn extends AnyAuthnProviders> {
9
13
  private origin;
10
14
  private module;
@@ -6,9 +6,10 @@ 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
14
  constructor(origin, module, authnProviders, config, providers = {}) {
14
15
  this.origin = origin;
@@ -22,6 +22,10 @@ export type TrxNodeStatus = {
22
22
  nodes: TrxNodeStatus[];
23
23
  app: number;
24
24
  };
25
+ /**
26
+ * @category Engine
27
+ * @subcategory Transaction
28
+ */
25
29
  export declare class TrxNode<Space extends $Space, M extends $Module, Authn extends AnyUsers> {
26
30
  private scope;
27
31
  private trx;
@@ -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;
@@ -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 {};