nesoi 3.2.8 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (291) hide show
  1. package/README.md +33 -2
  2. package/lib/bundler/browser/browser.app.d.ts +32 -0
  3. package/lib/bundler/browser/browser.app.js +51 -0
  4. package/lib/bundler/browser/browser.bundler.d.ts +5 -0
  5. package/lib/bundler/browser/browser.bundler.js +27 -0
  6. package/lib/bundler/browser/stages/8_replace_nesoi_for_browser_stage.d.ts +13 -0
  7. package/lib/bundler/browser/stages/8_replace_nesoi_for_browser_stage.js +74 -0
  8. package/lib/bundler/distributed/distributed.app.config.d.ts +43 -0
  9. package/lib/{engine/apps → bundler}/distributed/distributed.app.config.js +1 -1
  10. package/lib/{engine/apps → bundler}/distributed/distributed.app.d.ts +14 -14
  11. package/lib/{engine/apps → bundler}/distributed/distributed.app.js +8 -3
  12. package/lib/{compiler/apps/distributed/distributed_compiler.d.ts → bundler/distributed/distributed.bundler.d.ts} +7 -7
  13. package/lib/{compiler/apps/distributed/distributed_compiler.js → bundler/distributed/distributed.bundler.js} +11 -11
  14. package/lib/{engine/apps → bundler}/distributed/distributed_node.app.d.ts +14 -20
  15. package/lib/{engine/apps → bundler}/distributed/distributed_node.app.js +18 -50
  16. package/lib/bundler/distributed/stages/1_mkdir_stage.d.ts +15 -0
  17. package/lib/{compiler/apps → bundler}/distributed/stages/1_mkdir_stage.js +6 -6
  18. package/lib/bundler/distributed/stages/2_build_typescript_stage.d.ts +15 -0
  19. package/lib/{compiler/apps → bundler}/distributed/stages/2_build_typescript_stage.js +7 -7
  20. package/lib/bundler/distributed/stages/3_copy_types_stage.d.ts +15 -0
  21. package/lib/{compiler/apps → bundler}/distributed/stages/3_copy_types_stage.js +7 -7
  22. package/lib/bundler/distributed/stages/4_dump_modules_stage.d.ts +16 -0
  23. package/lib/{compiler/apps → bundler}/distributed/stages/4_dump_modules_stage.js +5 -5
  24. package/lib/{compiler/apps → bundler}/distributed/stages/5_copy_static_stage.js +3 -3
  25. package/lib/{compiler/apps → bundler}/distributed/stages/6_dump_cli_stage.js +3 -3
  26. package/lib/{compiler/apps → bundler}/distributed/stages/7_dump_package_json_stage.js +3 -3
  27. package/lib/{engine/apps → bundler}/monolyth/monolyth.app.d.ts +13 -13
  28. package/lib/{engine/apps → bundler}/monolyth/monolyth.app.js +13 -10
  29. package/lib/{compiler/apps/monolyth/monolyth_compiler.d.ts → bundler/monolyth/monolyth.bundler.d.ts} +9 -7
  30. package/lib/{compiler/apps/monolyth/monolyth_compiler.js → bundler/monolyth/monolyth.bundler.js} +13 -12
  31. package/lib/bundler/monolyth/stages/1_mkdir_stage.d.ts +15 -0
  32. package/lib/{compiler/apps → bundler}/monolyth/stages/1_mkdir_stage.js +6 -6
  33. package/lib/bundler/monolyth/stages/2_build_typescript_stage.d.ts +15 -0
  34. package/lib/{compiler/apps → bundler}/monolyth/stages/2_build_typescript_stage.js +8 -7
  35. package/lib/bundler/monolyth/stages/3_copy_types_stage.d.ts +15 -0
  36. package/lib/{compiler/apps → bundler}/monolyth/stages/3_copy_types_stage.js +7 -7
  37. package/lib/{compiler/apps → bundler}/monolyth/stages/4_dump_modules_stage.d.ts +4 -4
  38. package/lib/{compiler/apps → bundler}/monolyth/stages/4_dump_modules_stage.js +29 -16
  39. package/lib/{compiler/apps → bundler}/monolyth/stages/5_copy_static_stage.d.ts +4 -4
  40. package/lib/{compiler/apps → bundler}/monolyth/stages/5_copy_static_stage.js +7 -7
  41. package/lib/bundler/monolyth/stages/6_dump_cli_stage.d.ts +15 -0
  42. package/lib/{compiler/apps → bundler}/monolyth/stages/6_dump_cli_stage.js +4 -4
  43. package/lib/{compiler/apps → bundler}/monolyth/stages/7_dump_package_json_stage.d.ts +4 -4
  44. package/lib/{compiler/apps → bundler}/monolyth/stages/7_dump_package_json_stage.js +13 -10
  45. package/lib/compiler/compiler.d.ts +1 -6
  46. package/lib/compiler/compiler.js +1 -1
  47. package/lib/compiler/elements/bucket.element.d.ts +2 -1
  48. package/lib/compiler/elements/bucket.element.js +16 -21
  49. package/lib/compiler/elements/cached.element.d.ts +1 -1
  50. package/lib/compiler/elements/cached.element.js +2 -2
  51. package/lib/compiler/elements/constants.element.d.ts +1 -1
  52. package/lib/compiler/elements/constants.element.js +2 -0
  53. package/lib/compiler/elements/controller.element.js +3 -3
  54. package/lib/compiler/elements/element.d.ts +6 -13
  55. package/lib/compiler/elements/element.js +11 -9
  56. package/lib/compiler/elements/externals.element.js +2 -2
  57. package/lib/compiler/elements/job.element.d.ts +1 -1
  58. package/lib/compiler/elements/job.element.js +1 -1
  59. package/lib/compiler/elements/machine.element.d.ts +2 -2
  60. package/lib/compiler/elements/machine.element.js +7 -7
  61. package/lib/compiler/elements/message.element.d.ts +1 -1
  62. package/lib/compiler/elements/message.element.js +26 -26
  63. package/lib/compiler/elements/queue.element.js +1 -1
  64. package/lib/compiler/elements/resource.element.d.ts +1 -1
  65. package/lib/compiler/elements/resource.element.js +9 -9
  66. package/lib/compiler/elements/topic.element.js +1 -1
  67. package/lib/compiler/error.d.ts +1 -5
  68. package/lib/compiler/error.js +3 -15
  69. package/lib/compiler/helpers/dump_helpers.d.ts +1 -1
  70. package/lib/compiler/helpers/dump_helpers.js +1 -1
  71. package/lib/compiler/index.d.ts +1 -3
  72. package/lib/compiler/index.js +15 -7
  73. package/lib/compiler/module.js +12 -12
  74. package/lib/compiler/progressive.d.ts +3 -4
  75. package/lib/compiler/progressive.js +3 -4
  76. package/lib/compiler/stages/2_treeshake_stage.js +4 -0
  77. package/lib/compiler/stages/3_extract_ts_stage.js +7 -7
  78. package/lib/compiler/stages/4_build_schemas_stage.js +3 -16
  79. package/lib/compiler/stages/6_build_elements_stage.js +1 -1
  80. package/lib/compiler/stages/7_dump_stage.js +35 -10
  81. package/lib/compiler/typescript/bridge/extract.js +24 -0
  82. package/lib/compiler/typescript/bridge/inject.js +18 -3
  83. package/lib/compiler/typescript/bridge/organize.d.ts +4 -0
  84. package/lib/compiler/typescript/bridge/organize.js +41 -22
  85. package/lib/compiler/typescript/error.d.ts +2 -83
  86. package/lib/compiler/typescript/error.js +6 -219
  87. package/lib/compiler/typescript/parser.js +3 -3
  88. package/lib/compiler/typescript/source.d.ts +2 -2
  89. package/lib/compiler/typescript/transformers/app_inject.transformer.js +13 -4
  90. package/lib/compiler/typescript/typescript_compiler.d.ts +3 -3
  91. package/lib/compiler/typescript/typescript_compiler.js +2 -2
  92. package/lib/elements/blocks/block.builder.d.ts +7 -4
  93. package/lib/elements/blocks/block.builder.js +24 -13
  94. package/lib/elements/blocks/block.js +2 -2
  95. package/lib/elements/blocks/block.schema.d.ts +12 -9
  96. package/lib/elements/blocks/block.schema.js +2 -2
  97. package/lib/elements/blocks/job/internal/machine_job.builder.d.ts +6 -5
  98. package/lib/elements/blocks/job/internal/machine_job.builder.js +3 -3
  99. package/lib/elements/blocks/job/internal/resource_job.builder.d.ts +11 -10
  100. package/lib/elements/blocks/job/internal/resource_job.builder.js +9 -6
  101. package/lib/elements/blocks/job/internal/resource_job.js +3 -6
  102. package/lib/elements/blocks/job/job.builder.d.ts +5 -5
  103. package/lib/elements/blocks/job/job.builder.js +7 -7
  104. package/lib/elements/blocks/job/job.js +1 -1
  105. package/lib/elements/blocks/job/job.schema.d.ts +5 -5
  106. package/lib/elements/blocks/job/job.schema.js +3 -3
  107. package/lib/elements/blocks/machine/machine.builder.d.ts +2 -2
  108. package/lib/elements/blocks/machine/machine.builder.js +12 -9
  109. package/lib/elements/blocks/machine/machine.js +7 -7
  110. package/lib/elements/blocks/machine/machine.schema.d.ts +23 -23
  111. package/lib/elements/blocks/machine/machine.schema.js +9 -9
  112. package/lib/elements/blocks/machine/machine_state.builder.d.ts +1 -0
  113. package/lib/elements/blocks/machine/machine_state.builder.js +31 -29
  114. package/lib/elements/blocks/machine/machine_transition.builder.d.ts +2 -2
  115. package/lib/elements/blocks/machine/machine_transition.builder.js +8 -8
  116. package/lib/elements/blocks/queue/queue.builder.d.ts +3 -3
  117. package/lib/elements/blocks/queue/queue.builder.js +3 -3
  118. package/lib/elements/blocks/queue/queue.schema.d.ts +6 -6
  119. package/lib/elements/blocks/queue/queue.schema.js +3 -3
  120. package/lib/elements/blocks/resource/resource.builder.d.ts +2 -2
  121. package/lib/elements/blocks/resource/resource.builder.js +37 -40
  122. package/lib/elements/blocks/resource/resource.d.ts +2 -2
  123. package/lib/elements/blocks/resource/resource.js +10 -18
  124. package/lib/elements/blocks/resource/resource.schema.d.ts +15 -15
  125. package/lib/elements/blocks/resource/resource.schema.js +8 -8
  126. package/lib/elements/blocks/topic/topic.builder.d.ts +2 -2
  127. package/lib/elements/blocks/topic/topic.builder.js +4 -4
  128. package/lib/elements/blocks/topic/topic.d.ts +2 -2
  129. package/lib/elements/blocks/topic/topic.js +7 -7
  130. package/lib/elements/blocks/topic/topic.schema.d.ts +6 -6
  131. package/lib/elements/blocks/topic/topic.schema.js +3 -3
  132. package/lib/elements/edge/controller/adapters/cli.controller_adapter.js +1 -1
  133. package/lib/elements/edge/controller/adapters/controller_adapter.d.ts +2 -2
  134. package/lib/elements/edge/controller/adapters/controller_adapter.js +2 -2
  135. package/lib/elements/edge/controller/controller.builder.d.ts +14 -13
  136. package/lib/elements/edge/controller/controller.builder.js +52 -42
  137. package/lib/elements/edge/controller/controller.d.ts +3 -3
  138. package/lib/elements/edge/controller/controller.js +12 -12
  139. package/lib/elements/edge/controller/controller.schema.d.ts +17 -16
  140. package/lib/elements/edge/controller/controller.schema.js +11 -11
  141. package/lib/elements/edge/externals/externals.builder.d.ts +8 -13
  142. package/lib/elements/edge/externals/externals.builder.js +43 -11
  143. package/lib/elements/edge/externals/externals.schema.d.ts +8 -7
  144. package/lib/elements/edge/externals/externals.schema.js +5 -3
  145. package/lib/elements/entities/bucket/adapters/browserdb.bucket_adapter.d.ts +45 -0
  146. package/lib/elements/entities/bucket/adapters/browserdb.bucket_adapter.js +164 -0
  147. package/lib/elements/entities/bucket/adapters/browserdb.service.d.ts +30 -0
  148. package/lib/elements/entities/bucket/adapters/browserdb.service.js +97 -0
  149. package/lib/elements/entities/bucket/adapters/bucket_adapter.d.ts +6 -1
  150. package/lib/elements/entities/bucket/adapters/bucket_adapter.js +7 -6
  151. package/lib/elements/entities/bucket/adapters/json.bucket_adapter.d.ts +1 -1
  152. package/lib/elements/entities/bucket/adapters/json.bucket_adapter.js +1 -0
  153. package/lib/elements/entities/bucket/adapters/memory.bucket_adapter.d.ts +1 -0
  154. package/lib/elements/entities/bucket/adapters/memory.bucket_adapter.js +14 -13
  155. package/lib/elements/entities/bucket/adapters/memory.nql.js +41 -35
  156. package/lib/elements/entities/bucket/bucket.builder.d.ts +6 -8
  157. package/lib/elements/entities/bucket/bucket.builder.js +19 -34
  158. package/lib/elements/entities/bucket/bucket.d.ts +2 -2
  159. package/lib/elements/entities/bucket/bucket.infer.d.ts +5 -5
  160. package/lib/elements/entities/bucket/bucket.js +24 -22
  161. package/lib/elements/entities/bucket/bucket.schema.d.ts +3 -3
  162. package/lib/elements/entities/bucket/bucket.schema.js +2 -2
  163. package/lib/elements/entities/bucket/cache/bucket_cache.js +14 -2
  164. package/lib/elements/entities/bucket/graph/bucket_graph.d.ts +3 -3
  165. package/lib/elements/entities/bucket/graph/bucket_graph.js +102 -30
  166. package/lib/elements/entities/bucket/graph/bucket_graph.schema.d.ts +3 -3
  167. package/lib/elements/entities/bucket/graph/bucket_graph_link.builder.d.ts +2 -2
  168. package/lib/elements/entities/bucket/graph/bucket_graph_link.builder.js +5 -3
  169. package/lib/elements/entities/bucket/model/bucket_model.builder.d.ts +2 -1
  170. package/lib/elements/entities/bucket/model/bucket_model.builder.js +2 -2
  171. package/lib/elements/entities/bucket/model/bucket_model.convert.js +3 -6
  172. package/lib/elements/entities/bucket/model/bucket_model.d.ts +13 -0
  173. package/lib/elements/entities/bucket/model/bucket_model.js +93 -0
  174. package/lib/elements/entities/bucket/model/bucket_model.schema.d.ts +4 -8
  175. package/lib/elements/entities/bucket/model/bucket_model.schema.js +0 -68
  176. package/lib/elements/entities/bucket/model/bucket_model_field.builder.d.ts +12 -4
  177. package/lib/elements/entities/bucket/model/bucket_model_field.builder.js +30 -33
  178. package/lib/elements/entities/bucket/query/nql.schema.d.ts +1 -1
  179. package/lib/elements/entities/bucket/query/nql_compiler.d.ts +8 -4
  180. package/lib/elements/entities/bucket/query/nql_compiler.js +44 -38
  181. package/lib/elements/entities/bucket/query/nql_engine.d.ts +1 -1
  182. package/lib/elements/entities/bucket/query/nql_engine.js +5 -2
  183. package/lib/elements/entities/bucket/view/bucket_view.builder.d.ts +2 -2
  184. package/lib/elements/entities/bucket/view/bucket_view.js +113 -81
  185. package/lib/elements/entities/bucket/view/bucket_view_field.builder.d.ts +9 -8
  186. package/lib/elements/entities/bucket/view/bucket_view_field.builder.js +8 -10
  187. package/lib/elements/entities/constants/constants.builder.d.ts +3 -3
  188. package/lib/elements/entities/constants/constants.builder.js +8 -8
  189. package/lib/elements/entities/constants/constants.schema.d.ts +8 -3
  190. package/lib/elements/entities/constants/constants.schema.js +7 -2
  191. package/lib/elements/entities/message/message.infer.d.ts +1 -5
  192. package/lib/elements/entities/message/message.js +2 -7
  193. package/lib/elements/entities/message/message.schema.js +1 -1
  194. package/lib/elements/entities/message/template/message_template.schema.d.ts +7 -5
  195. package/lib/elements/entities/message/template/message_template_field.builder.d.ts +18 -3
  196. package/lib/elements/entities/message/template/message_template_field.builder.js +49 -30
  197. package/lib/elements/entities/message/template/message_template_parser.js +2 -2
  198. package/lib/engine/{apps → app}/app.config.d.ts +11 -5
  199. package/lib/engine/{apps → app}/app.config.js +2 -2
  200. package/lib/engine/{apps → app}/app.d.ts +3 -2
  201. package/lib/engine/{apps → app}/app.js +3 -1
  202. package/lib/engine/{apps/distributed → app}/inc/inc.client.js +1 -1
  203. package/lib/engine/{apps/distributed → app}/inc/inc.server.js +3 -3
  204. package/lib/engine/{apps/distributed → app}/inc/sandbox.js +1 -1
  205. package/lib/engine/{apps → app}/inline.app.d.ts +2 -12
  206. package/lib/engine/{apps → app}/inline.app.js +37 -34
  207. package/lib/engine/auth/authn.d.ts +10 -12
  208. package/lib/engine/auth/zero.authn_provider.d.ts +3 -4
  209. package/lib/engine/auth/zero.authn_provider.js +0 -1
  210. package/lib/engine/builder.d.ts +28 -0
  211. package/lib/engine/builder.js +99 -0
  212. package/lib/engine/cli/cli.js +3 -2
  213. package/lib/engine/cli/ui.js +1 -0
  214. package/lib/engine/daemon.d.ts +28 -25
  215. package/lib/engine/daemon.js +37 -8
  216. package/lib/engine/data/error.d.ts +37 -3
  217. package/lib/engine/data/error.js +58 -16
  218. package/lib/engine/data/file.d.ts +1 -0
  219. package/lib/engine/data/file.js +4 -0
  220. package/lib/engine/dependency.d.ts +53 -81
  221. package/lib/engine/dependency.js +246 -120
  222. package/lib/engine/module.d.ts +18 -48
  223. package/lib/engine/module.js +78 -158
  224. package/lib/engine/space.d.ts +2 -2
  225. package/lib/engine/space.js +6 -6
  226. package/lib/engine/transaction/nodes/bucket.trx_node.d.ts +7 -4
  227. package/lib/engine/transaction/nodes/bucket.trx_node.js +66 -43
  228. package/lib/engine/transaction/nodes/bucket_query.trx_node.d.ts +10 -4
  229. package/lib/engine/transaction/nodes/bucket_query.trx_node.js +56 -45
  230. package/lib/engine/transaction/nodes/external.trx_node.d.ts +15 -0
  231. package/lib/engine/transaction/nodes/external.trx_node.js +53 -0
  232. package/lib/engine/transaction/nodes/job.trx_node.d.ts +7 -3
  233. package/lib/engine/transaction/nodes/job.trx_node.js +49 -29
  234. package/lib/engine/transaction/nodes/machine.trx_node.js +6 -6
  235. package/lib/engine/transaction/nodes/queue.trx_node.js +3 -3
  236. package/lib/engine/transaction/nodes/resource.trx_node.d.ts +7 -4
  237. package/lib/engine/transaction/nodes/resource.trx_node.js +68 -51
  238. package/lib/engine/transaction/nodes/topic.trx_node.js +9 -9
  239. package/lib/engine/transaction/trx.d.ts +15 -12
  240. package/lib/engine/transaction/trx.js +19 -3
  241. package/lib/engine/transaction/trx_engine.config.d.ts +4 -4
  242. package/lib/engine/transaction/trx_engine.d.ts +25 -7
  243. package/lib/engine/transaction/trx_engine.js +67 -16
  244. package/lib/engine/transaction/trx_node.d.ts +25 -21
  245. package/lib/engine/transaction/trx_node.js +99 -57
  246. package/lib/engine/tree.d.ts +4 -16
  247. package/lib/engine/tree.js +87 -57
  248. package/lib/{compiler → engine}/treeshake.d.ts +32 -32
  249. package/lib/{compiler → engine}/treeshake.js +272 -242
  250. package/lib/engine/util/console.js +3 -0
  251. package/lib/engine/util/crypto.d.ts +4 -3
  252. package/lib/engine/util/crypto.js +15 -5
  253. package/lib/engine/util/hash.js +5 -0
  254. package/lib/engine/util/log.d.ts +6 -8
  255. package/lib/engine/util/log.js +1 -1
  256. package/lib/engine/util/name_helpers.d.ts +37 -0
  257. package/lib/{compiler/helpers → engine/util}/name_helpers.js +33 -0
  258. package/lib/engine/util/parse.d.ts +4 -3
  259. package/lib/engine/util/parse.js +13 -28
  260. package/lib/engine/util/path.d.ts +1 -0
  261. package/lib/engine/util/path.js +14 -0
  262. package/lib/engine/util/random.d.ts +4 -0
  263. package/lib/engine/util/random.js +31 -0
  264. package/lib/engine/util/type.d.ts +8 -0
  265. package/lib/schema.d.ts +1 -1
  266. package/package.json +4 -1
  267. package/tools/joaquin/bucket.js +1 -1
  268. package/tools/joaquin/job.js +1 -1
  269. package/tools/joaquin/message.js +1 -1
  270. package/tools/joaquin/mock.js +2 -1
  271. package/tsconfig.build.tsbuildinfo +1 -1
  272. package/lib/compiler/apps/distributed/stages/1_mkdir_stage.d.ts +0 -15
  273. package/lib/compiler/apps/distributed/stages/2_build_typescript_stage.d.ts +0 -15
  274. package/lib/compiler/apps/distributed/stages/3_copy_types_stage.d.ts +0 -15
  275. package/lib/compiler/apps/distributed/stages/4_dump_modules_stage.d.ts +0 -16
  276. package/lib/compiler/apps/monolyth/stages/1_mkdir_stage.d.ts +0 -15
  277. package/lib/compiler/apps/monolyth/stages/2_build_typescript_stage.d.ts +0 -15
  278. package/lib/compiler/apps/monolyth/stages/3_copy_types_stage.d.ts +0 -15
  279. package/lib/compiler/apps/monolyth/stages/6_dump_cli_stage.d.ts +0 -15
  280. package/lib/compiler/helpers/name_helpers.d.ts +0 -20
  281. package/lib/engine/apps/distributed/distributed.app.config.d.ts +0 -44
  282. package/lib/engine/apps/distributed/elements/distributed_job.d.ts +0 -7
  283. package/lib/engine/apps/distributed/elements/distributed_job.js +0 -11
  284. /package/lib/{compiler/apps → bundler}/distributed/stages/5_copy_static_stage.d.ts +0 -0
  285. /package/lib/{compiler/apps → bundler}/distributed/stages/6_dump_cli_stage.d.ts +0 -0
  286. /package/lib/{compiler/apps → bundler}/distributed/stages/7_dump_package_json_stage.d.ts +0 -0
  287. /package/lib/engine/{apps/distributed → app}/inc/inc.client.d.ts +0 -0
  288. /package/lib/engine/{apps/distributed → app}/inc/inc.server.d.ts +0 -0
  289. /package/lib/engine/{apps/distributed → app}/inc/sandbox.d.ts +0 -0
  290. /package/lib/engine/{apps → app}/service.d.ts +0 -0
  291. /package/lib/engine/{apps → app}/service.js +0 -0
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Builder = void 0;
4
+ const log_1 = require("./util/log");
5
+ const message_builder_1 = require("../elements/entities/message/message.builder");
6
+ const bucket_builder_1 = require("../elements/entities/bucket/bucket.builder");
7
+ const resource_builder_1 = require("../elements/blocks/resource/resource.builder");
8
+ const machine_builder_1 = require("../elements/blocks/machine/machine.builder");
9
+ const job_builder_1 = require("../elements/blocks/job/job.builder");
10
+ const constants_builder_1 = require("../elements/entities/constants/constants.builder");
11
+ const controller_builder_1 = require("../elements/edge/controller/controller.builder");
12
+ const externals_builder_1 = require("../elements/edge/externals/externals.builder");
13
+ const error_1 = require("./data/error");
14
+ const queue_builder_1 = require("../elements/blocks/queue/queue.builder");
15
+ const topic_builder_1 = require("../elements/blocks/topic/topic.builder");
16
+ class Builder {
17
+ // Build Nodes
18
+ /**
19
+ * Build a resolved builder node, then merge the
20
+ * resulting schema(s) to the module.
21
+ * This also merges the resulting inline nodes of building a node.
22
+ *
23
+ * @param node A resolved builder node
24
+ * @param tree A module tree
25
+ */
26
+ static buildNode(module, node, tree) {
27
+ log_1.Log.trace('builder', 'module', `Building ${module.name}::${(0, log_1.scopeTag)(node.builder.$b, node.builder.name)}`);
28
+ if (node.builder.$b === 'constants') {
29
+ module.schema.constants = constants_builder_1.ConstantsBuilder.build(node);
30
+ }
31
+ else if (node.builder.$b === 'externals') {
32
+ module.schema.externals = externals_builder_1.ExternalsBuilder.build(node, tree);
33
+ }
34
+ else if (node.builder.$b === 'bucket') {
35
+ module.schema.buckets[node.tag.name] = bucket_builder_1.BucketBuilder.build(node, tree);
36
+ }
37
+ else if (node.builder.$b === 'message') {
38
+ module.schema.messages[node.tag.name] = message_builder_1.MessageBuilder.build(node, tree, module.schema);
39
+ }
40
+ else if (node.builder.$b === 'job') {
41
+ const { schema, inlineMessages } = job_builder_1.JobBuilder.build(node, tree, module.schema);
42
+ module.schema.jobs[node.tag.name] = schema;
43
+ this.mergeInlineMessages(module, inlineMessages);
44
+ }
45
+ else if (node.builder.$b === 'resource') {
46
+ const { schema, inlineMessages, inlineJobs } = resource_builder_1.ResourceBuilder.build(node, tree, module.schema);
47
+ module.schema.resources[schema.name] = schema;
48
+ this.mergeInlineMessages(module, inlineMessages);
49
+ this.mergeInlineJobs(module, inlineJobs);
50
+ }
51
+ else if (node.builder.$b === 'machine') {
52
+ const { schema, inlineMessages, inlineJobs } = machine_builder_1.MachineBuilder.build(node, tree, module.schema);
53
+ module.schema.machines[schema.name] = schema;
54
+ this.mergeInlineMessages(module, inlineMessages);
55
+ this.mergeInlineJobs(module, inlineJobs);
56
+ }
57
+ else if (node.builder.$b === 'controller') {
58
+ module.schema.controllers[node.tag.name] = controller_builder_1.ControllerBuilder.build(node);
59
+ }
60
+ else if (node.builder.$b === 'queue') {
61
+ const { schema, inlineMessages } = queue_builder_1.QueueBuilder.build(node, tree, module.schema);
62
+ module.schema.queues[node.tag.name] = schema;
63
+ this.mergeInlineMessages(module, inlineMessages);
64
+ }
65
+ else if (node.builder.$b === 'topic') {
66
+ const { schema, inlineMessages } = topic_builder_1.TopicBuilder.build(node, tree, module.schema);
67
+ module.schema.topics[node.tag.name] = schema;
68
+ this.mergeInlineMessages(module, inlineMessages);
69
+ }
70
+ else {
71
+ throw error_1.NesoiError.Module.UnknownBuilderType(module, node.filepath.toString(), node.tag.name, node.builder.$b);
72
+ }
73
+ }
74
+ /**
75
+ * Merge inline message schemas into the module.
76
+ *
77
+ * @param node A resolved builder node
78
+ * @param schemas A dictionary of Message schemas by name
79
+ */
80
+ static mergeInlineMessages(module, schemas) {
81
+ for (const name in schemas) {
82
+ const $msg = schemas[name];
83
+ module.schema.messages[name] = $msg;
84
+ }
85
+ }
86
+ /**
87
+ * Merge inline job schemas into the module.
88
+ *
89
+ * @param node A resolved builder node
90
+ * @param schemas A dictionary of job schemas by name
91
+ */
92
+ static mergeInlineJobs(module, schemas) {
93
+ for (const name in schemas) {
94
+ const $job = schemas[name];
95
+ module.schema.jobs[name] = $job;
96
+ }
97
+ }
98
+ }
99
+ exports.Builder = Builder;
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+ /* @nesoi:browser ignore-file */
2
3
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
4
  if (k2 === undefined) k2 = k;
4
5
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -46,7 +47,7 @@ const daemon_1 = require("../daemon");
46
47
  const log_1 = require("../util/log");
47
48
  const cli_input_1 = require("./cli_input");
48
49
  const shell_1 = __importDefault(require("../util/shell"));
49
- const crypto_1 = require("crypto");
50
+ const random_1 = require("../util/random");
50
51
  /**
51
52
  * @category Engine
52
53
  * @subcategory CLI
@@ -146,7 +147,7 @@ class CLI {
146
147
  ui_1.default.error(`Invalid job '${job}'. Expected "module::name"`);
147
148
  return;
148
149
  }
149
- const tmpFile = 'job_input__' + (0, crypto_1.randomBytes)(8).toString('hex') + '.js';
150
+ const tmpFile = 'job_input__' + random_1.Random.bytes(8).toString('hex') + '.js';
150
151
  const tmpPath = path.join(process.cwd(), tmpFile);
151
152
  fs.writeFileSync(tmpPath, 'export const input = {\n \n}');
152
153
  await this.daemon.trx(module).run(async (trx) => {
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+ /* @nesoi:browser ignore-file */
2
3
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
4
  if (k2 === undefined) k2 = k;
4
5
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -1,12 +1,13 @@
1
1
  import { $Module, $Space } from "../elements";
2
2
  import { ModuleName } from "../schema";
3
- import { AnyTrxEngine } from './transaction/trx_engine';
4
- import { AnyAppConfig } from './apps/app.config';
5
- import { AnyUsers, AuthnRequest } from './auth/authn';
3
+ import { AnyTrxEngine, HeldTrxNode } from './transaction/trx_engine';
4
+ import { AnyAppConfig } from './app/app.config';
5
+ import { AnyUsers, AuthRequest } from './auth/authn';
6
6
  import { TrxNode } from './transaction/trx_node';
7
7
  import { TrxStatus } from './transaction/trx';
8
- import { AnyElementSchema, AnyModule } from './module';
9
- import { IService } from './apps/service';
8
+ import { AnyModule } from './module';
9
+ import { IService } from './app/service';
10
+ import { Tag } from './dependency';
10
11
  /**
11
12
  * A background process running one or more modules,
12
13
  * which runs _Transactions_ for the available elements.
@@ -59,16 +60,6 @@ export declare abstract class Daemon<S extends $Space, Modules extends ModuleNam
59
60
  * @param services A dictionary of Service by name
60
61
  */
61
62
  reload(trxEngines: Record<Modules, AnyTrxEngine>, services: Record<string, any>): void;
62
- /**
63
- * Bind the controller of each module to this Daemon.
64
- * This allows the registered `Controller Adapters` to run
65
- * transactions on the daemon.
66
- */
67
- protected abstract getSchema(tag: {
68
- module: keyof S['modules'];
69
- type: string;
70
- name: string;
71
- }): Promise<AnyElementSchema>;
72
63
  /**
73
64
  * Return a `Daemon` property.
74
65
  * This is used to read private properties.
@@ -91,17 +82,21 @@ export declare abstract class Daemon<S extends $Space, Modules extends ModuleNam
91
82
  */
92
83
  static getModule<Module extends ModuleName<any>, D extends Daemon<any, Module>>(daemon: D, module: Module): import("./module").Module<any, any>;
93
84
  /**
94
- * Return one module of the `Daemon` by name.
85
+ * Return the metadata of a bucket
95
86
  *
96
87
  * @param daemon A `Daemon` instance
97
88
  * @param module A module name
98
89
  * @returns The `Module` instance
99
90
  */
100
- static getSchema<Module extends ModuleName<any>, D extends Daemon<any, Module>>(daemon: D, tag: {
101
- module: Module;
102
- type: string;
103
- name: string;
104
- }): Promise<AnyElementSchema>;
91
+ static getBucketMetadata<Module extends ModuleName<any>, D extends Daemon<any, Module>>(daemon: D, tag: Tag): import("./transaction/trx_engine").BucketMetadata;
92
+ /**
93
+ * Return the metadata of a bucket
94
+ *
95
+ * @param daemon A `Daemon` instance
96
+ * @param module A module name
97
+ * @returns The `Module` instance
98
+ */
99
+ static getBucketDrive<Module extends ModuleName<any>, D extends Daemon<any, Module>>(daemon: D, tag: Tag): import("../elements/entities/drive/drive_adapter").DriveAdapter | undefined;
105
100
  /**
106
101
  * Return all modules of the `Daemon`.
107
102
  *
@@ -117,7 +112,7 @@ export declare abstract class Daemon<S extends $Space, Modules extends ModuleNam
117
112
  *
118
113
  * @category Engine
119
114
  */
120
- export declare class DaemonTrx<S extends $Space, M extends $Module, Authn extends AnyUsers = {}> {
115
+ export declare class DaemonTrx<S extends $Space, M extends $Module, AuthUsers extends AnyUsers = {}> {
121
116
  private trxEngine;
122
117
  /**
123
118
  * The authentication request which will be used to
@@ -129,17 +124,25 @@ export declare class DaemonTrx<S extends $Space, M extends $Module, Authn extend
129
124
  */
130
125
  constructor(trxEngine: AnyTrxEngine);
131
126
  /**
132
- * Authenticate the transaction with the given credentials.
127
+ * Authenticate/authorize the transaction with the given credentials.
133
128
  * You can specify one or more credentials, so the transaction
134
129
  * is able to access elements with different authn providers.
135
130
  */
136
- authn<Authn extends AuthnRequest<keyof S['authnUsers']>>(authn?: Authn): DaemonTrx<S, M, { [K in keyof Authn]: S["authnUsers"][K & keyof S["authnUsers"]]; }>;
131
+ auth<Auth extends AuthRequest<keyof S['authnUsers']>>(auth?: Auth): DaemonTrx<S, M, { [K in keyof Auth]: S["authnUsers"][K & keyof S["authnUsers"]]; }>;
137
132
  /**
138
133
  * Run a method inside the transaction.
139
134
  *
140
135
  * @param fn A function to execute inside the transaction
141
136
  * @returns A `TrxStatus` containing metadata about the transaction and the function response
142
137
  */
143
- run<Output>(fn: (trx: TrxNode<S, M, Authn>) => Promise<Output>): Promise<TrxStatus<Output>>;
138
+ run<Output>(fn: (trx: TrxNode<S, M, AuthUsers>) => Promise<Output>, id?: string): Promise<TrxStatus<Output>>;
139
+ /**
140
+ * Run a method inside the transaction, and hold it until
141
+ * the external caller decides to commit.
142
+ *
143
+ * @param fn A function to execute inside the transaction
144
+ * @returns A `TrxStatus` containing metadata about the transaction and the function response
145
+ */
146
+ run_and_hold<Output>(fn: (trx: TrxNode<S, M, AuthUsers>) => Promise<Output>, id?: string): Promise<HeldTrxNode<Output>>;
144
147
  }
145
148
  export type AnyDaemon = Daemon<any, any>;
@@ -3,7 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DaemonTrx = exports.Daemon = void 0;
4
4
  const log_1 = require("./util/log");
5
5
  const error_1 = require("./data/error");
6
+ /* @nesoi:browser ignore-start */
6
7
  const cli_1 = require("./cli/cli");
8
+ /* @nesoi:browser ignore-end */
7
9
  /**
8
10
  * A background process running one or more modules,
9
11
  * which runs _Transactions_ for the available elements.
@@ -44,8 +46,13 @@ class Daemon {
44
46
  * Run the Nesoi CLI for this Daemon.
45
47
  */
46
48
  async cli(cmd) {
49
+ /* @nesoi:browser ignore-start */
47
50
  const cli = new cli_1.CLI(this, this.config?.cli);
48
51
  await cli.run(cmd);
52
+ /* @nesoi:browser ignore-end */
53
+ /* @nesoi:browser add
54
+ throw new Exception('CLI not supported on Browser');
55
+ */
49
56
  }
50
57
  /**
51
58
  * Bind the controller of each module to this Daemon.
@@ -114,14 +121,26 @@ class Daemon {
114
121
  return daemon.trxEngines[module].getModule();
115
122
  }
116
123
  /**
117
- * Return one module of the `Daemon` by name.
124
+ * Return the metadata of a bucket
125
+ *
126
+ * @param daemon A `Daemon` instance
127
+ * @param module A module name
128
+ * @returns The `Module` instance
129
+ */
130
+ static getBucketMetadata(daemon, tag) {
131
+ const trxEngine = daemon.trxEngines[tag.module];
132
+ return trxEngine.getBucketMetadata(tag);
133
+ }
134
+ /**
135
+ * Return the metadata of a bucket
118
136
  *
119
137
  * @param daemon A `Daemon` instance
120
138
  * @param module A module name
121
139
  * @returns The `Module` instance
122
140
  */
123
- static getSchema(daemon, tag) {
124
- return daemon.getSchema(tag);
141
+ static getBucketDrive(daemon, tag) {
142
+ const trxEngine = daemon.trxEngines[tag.module];
143
+ return trxEngine.getBucketDrive(tag);
125
144
  }
126
145
  /**
127
146
  * Return all modules of the `Daemon`.
@@ -150,12 +169,12 @@ class DaemonTrx {
150
169
  this.trxEngine = trxEngine;
151
170
  }
152
171
  /**
153
- * Authenticate the transaction with the given credentials.
172
+ * Authenticate/authorize the transaction with the given credentials.
154
173
  * You can specify one or more credentials, so the transaction
155
174
  * is able to access elements with different authn providers.
156
175
  */
157
- authn(authn) {
158
- this.authnRequest = authn;
176
+ auth(auth) {
177
+ this.authnRequest = auth;
159
178
  return this;
160
179
  }
161
180
  /**
@@ -164,8 +183,18 @@ class DaemonTrx {
164
183
  * @param fn A function to execute inside the transaction
165
184
  * @returns A `TrxStatus` containing metadata about the transaction and the function response
166
185
  */
167
- run(fn) {
168
- return this.trxEngine.trx(fn, this.authnRequest);
186
+ run(fn, id) {
187
+ return this.trxEngine.trx(fn, id, this.authnRequest);
188
+ }
189
+ /**
190
+ * Run a method inside the transaction, and hold it until
191
+ * the external caller decides to commit.
192
+ *
193
+ * @param fn A function to execute inside the transaction
194
+ * @returns A `TrxStatus` containing metadata about the transaction and the function response
195
+ */
196
+ run_and_hold(fn, id) {
197
+ return this.trxEngine.trx_hold(fn, id, this.authnRequest);
169
198
  }
170
199
  }
171
200
  exports.DaemonTrx = DaemonTrx;
@@ -11,6 +11,27 @@ export declare namespace NesoiError {
11
11
  toString(): string;
12
12
  }
13
13
  namespace Builder {
14
+ function UnmetModuleDependency($: {
15
+ from: string;
16
+ dep: string;
17
+ }): BaseError;
18
+ function UnmetDependency($: {
19
+ from: string;
20
+ dep: string;
21
+ }): BaseError;
22
+ function UnmetDependencyEnum($: {
23
+ from: string;
24
+ dep: string;
25
+ }): BaseError;
26
+ function UnmetDependencyValue($: {
27
+ from: string;
28
+ dep: string;
29
+ }): BaseError;
30
+ function NotImportedDependency($: {
31
+ from: string;
32
+ dep: string;
33
+ }): BaseError;
34
+ function CircularDependency($: {}): BaseError;
14
35
  namespace Job {
15
36
  function NoMethod($: {
16
37
  job: string;
@@ -35,6 +56,10 @@ export declare namespace NesoiError {
35
56
  function CustomInputRequiresPrepare(resource: string): BaseError;
36
57
  }
37
58
  }
59
+ namespace Space {
60
+ function DirectoryDoesntExists(dir: string): BaseError;
61
+ function NoModulesFolder(): BaseError;
62
+ }
38
63
  namespace App {
39
64
  function ModuleNotFound(module: string): BaseError;
40
65
  }
@@ -50,15 +75,17 @@ export declare namespace NesoiError {
50
75
  function InlineMessageNotFoundOnMerge(msg: string): BaseError;
51
76
  function InlineJobNotFoundOnMerge(job: string): BaseError;
52
77
  }
53
- namespace Authn {
78
+ namespace Auth {
54
79
  function NoProvidersRegisteredForModule(module: string): BaseError;
55
80
  function NoProviderRegisteredForModule(module: string, provider: string): BaseError;
56
- function NoUsersAuthenticatedForTrxNode(globalId: string): BaseError;
57
81
  }
58
82
  namespace Trx {
83
+ function DaemonNotFound(module: string): BaseError;
59
84
  function ModuleNotFound(module: string): BaseError;
60
85
  function NodeNotFound(node: string, trx: string): BaseError;
61
- function NotAuthenticated($: {}): BaseError;
86
+ function Unauthorized($: {
87
+ providers: string[];
88
+ }): BaseError;
62
89
  }
63
90
  namespace Bucket {
64
91
  function InvalidId($: {
@@ -124,6 +151,13 @@ export declare namespace NesoiError {
124
151
  index: (string | number)[];
125
152
  }): BaseError;
126
153
  }
154
+ namespace Model {
155
+ function InvalidEnum($: {
156
+ bucket: string;
157
+ value: string;
158
+ options: string[];
159
+ }): BaseError;
160
+ }
127
161
  namespace Drive {
128
162
  function NoAdapter($: {
129
163
  bucket: string;
@@ -25,6 +25,30 @@ var NesoiError;
25
25
  })(Status || (Status = {}));
26
26
  let Builder;
27
27
  (function (Builder) {
28
+ function UnmetModuleDependency($) {
29
+ return new BaseError('Builder.UnmetModuleDependency', `Unment module dependency '${$.dep}' while building '${$.from}'.`, Status.INTERNAL_ERROR, $);
30
+ }
31
+ Builder.UnmetModuleDependency = UnmetModuleDependency;
32
+ function UnmetDependency($) {
33
+ return new BaseError('Builder.UnmetDependency', `Unment dependency '${$.dep}' while building '${$.from}'.`, Status.INTERNAL_ERROR, $);
34
+ }
35
+ Builder.UnmetDependency = UnmetDependency;
36
+ function UnmetDependencyEnum($) {
37
+ return new BaseError('Builder.UnmetDependencyEnum', `Unment dependency enum '${$.dep}' while building '${$.from}'.`, Status.INTERNAL_ERROR, $);
38
+ }
39
+ Builder.UnmetDependencyEnum = UnmetDependencyEnum;
40
+ function UnmetDependencyValue($) {
41
+ return new BaseError('Builder.UnmetDependencyValue', `Unment dependency value '${$.dep}' while building '${$.from}'.`, Status.INTERNAL_ERROR, $);
42
+ }
43
+ Builder.UnmetDependencyValue = UnmetDependencyValue;
44
+ function NotImportedDependency($) {
45
+ return new BaseError('Builder.NotImportedDependency', `Dependency '${$.dep}' must be included on '${$.from}' externals.`, Status.INTERNAL_ERROR, $);
46
+ }
47
+ Builder.NotImportedDependency = NotImportedDependency;
48
+ function CircularDependency($) {
49
+ return new BaseError('Builder.CircularDependency', 'Circular dependency found while building.', Status.INTERNAL_ERROR, $);
50
+ }
51
+ Builder.CircularDependency = CircularDependency;
28
52
  let Job;
29
53
  (function (Job) {
30
54
  function NoMethod($) {
@@ -78,6 +102,17 @@ var NesoiError;
78
102
  Resource.CustomInputRequiresPrepare = CustomInputRequiresPrepare;
79
103
  })(Resource = Builder.Resource || (Builder.Resource = {}));
80
104
  })(Builder = NesoiError.Builder || (NesoiError.Builder = {}));
105
+ let Space;
106
+ (function (Space) {
107
+ function DirectoryDoesntExists(dir) {
108
+ return new BaseError('Space.DirectoryDoesntExists', `Directory '${module}' not found on space`, Status.INTERNAL_ERROR);
109
+ }
110
+ Space.DirectoryDoesntExists = DirectoryDoesntExists;
111
+ function NoModulesFolder() {
112
+ return new BaseError('Space.NoModulesFolder', 'No modules folder found on space root', Status.INTERNAL_ERROR);
113
+ }
114
+ Space.NoModulesFolder = NoModulesFolder;
115
+ })(Space = NesoiError.Space || (NesoiError.Space = {}));
81
116
  let App;
82
117
  (function (App) {
83
118
  function ModuleNotFound(module) {
@@ -128,35 +163,35 @@ var NesoiError;
128
163
  }
129
164
  Module.InlineJobNotFoundOnMerge = InlineJobNotFoundOnMerge;
130
165
  })(Module = NesoiError.Module || (NesoiError.Module = {}));
131
- let Authn;
132
- (function (Authn) {
166
+ let Auth;
167
+ (function (Auth) {
133
168
  function NoProvidersRegisteredForModule(module) {
134
- return new BaseError('Authn.NoProvidersRegisteredForModule', `No authentication providers registered for module ${module}`, Status.NOT_FOUND);
169
+ return new BaseError('Auth.NoProvidersRegisteredForModule', `No authentication providers registered for module ${module}`, Status.NOT_FOUND);
135
170
  }
136
- Authn.NoProvidersRegisteredForModule = NoProvidersRegisteredForModule;
171
+ Auth.NoProvidersRegisteredForModule = NoProvidersRegisteredForModule;
137
172
  function NoProviderRegisteredForModule(module, provider) {
138
- return new BaseError('Authn.NoProviderRegisteredForModule', `No authentication provider named ${provider} registered for module ${module}`, Status.NOT_FOUND);
139
- }
140
- Authn.NoProviderRegisteredForModule = NoProviderRegisteredForModule;
141
- function NoUsersAuthenticatedForTrxNode(globalId) {
142
- return new BaseError('Authn.NoUsersAuthenticatedForTrxNode', `No users authenticated for trx node ${globalId}`, Status.NOT_FOUND);
173
+ return new BaseError('Auth.NoProviderRegisteredForModule', `No authentication provider named ${provider} registered for module ${module}`, Status.NOT_FOUND);
143
174
  }
144
- Authn.NoUsersAuthenticatedForTrxNode = NoUsersAuthenticatedForTrxNode;
145
- })(Authn = NesoiError.Authn || (NesoiError.Authn = {}));
175
+ Auth.NoProviderRegisteredForModule = NoProviderRegisteredForModule;
176
+ })(Auth = NesoiError.Auth || (NesoiError.Auth = {}));
146
177
  let Trx;
147
178
  (function (Trx) {
179
+ function DaemonNotFound(module) {
180
+ return new BaseError('Trx.DaemonNotFound', `Daemon not found for module ${module}`, Status.INTERNAL_ERROR);
181
+ }
182
+ Trx.DaemonNotFound = DaemonNotFound;
148
183
  function ModuleNotFound(module) {
149
- return new BaseError('Trx.ModuleNotFound', `Module ${module} not found on app`, Status.NOT_FOUND);
184
+ return new BaseError('Trx.ModuleNotFound', `Module ${module} not found on app`, Status.INTERNAL_ERROR);
150
185
  }
151
186
  Trx.ModuleNotFound = ModuleNotFound;
152
187
  function NodeNotFound(node, trx) {
153
- return new BaseError('Trx.NodeNotFoundOnTrx', `Node ${node} not found on transaction ${trx}`, Status.NOT_FOUND);
188
+ return new BaseError('Trx.NodeNotFoundOnTrx', `Node ${node} not found on transaction ${trx}`, Status.INTERNAL_ERROR);
154
189
  }
155
190
  Trx.NodeNotFound = NodeNotFound;
156
- function NotAuthenticated($) {
157
- return new BaseError('Trx.NotAuthenticated', 'Unauthorized', Status.UNAUTHORIZED, $);
191
+ function Unauthorized($) {
192
+ return new BaseError('Trx.Unauthorized', `Transaction not authenticated/authorized. Providers: ${$.providers}`, Status.UNAUTHORIZED, $);
158
193
  }
159
- Trx.NotAuthenticated = NotAuthenticated;
194
+ Trx.Unauthorized = Unauthorized;
160
195
  })(Trx = NesoiError.Trx || (NesoiError.Trx = {}));
161
196
  /*
162
197
  Elements / Entities
@@ -252,6 +287,13 @@ var NesoiError;
252
287
  }
253
288
  Fieldpath.InvalidIndexLength = InvalidIndexLength;
254
289
  })(Fieldpath = Bucket.Fieldpath || (Bucket.Fieldpath = {}));
290
+ let Model;
291
+ (function (Model) {
292
+ function InvalidEnum($) {
293
+ return new BaseError('Bucket.Model.InvalidEnum', `Value '${$.value}' for bucket '${$.bucket}' doesn't match the options: ${$.options}.`, Status.BAD_REQUEST, $);
294
+ }
295
+ Model.InvalidEnum = InvalidEnum;
296
+ })(Model = Bucket.Model || (Bucket.Model = {}));
255
297
  let Drive;
256
298
  (function (Drive) {
257
299
  function NoAdapter($) {
@@ -12,6 +12,7 @@ export declare class LocalNesoiFile {
12
12
  static delete(file: NesoiFile): void;
13
13
  static move(file: NesoiFile, to: string): void;
14
14
  static read(file: NesoiFile): string;
15
+ static new(filepath: string, content: string, overrides?: Partial<NesoiFile>): NesoiFile;
15
16
  }
16
17
  /**
17
18
  * @category Engine
@@ -50,6 +50,10 @@ class LocalNesoiFile {
50
50
  static read(file) {
51
51
  return fs_1.default.readFileSync(file.filepath).toString();
52
52
  }
53
+ static new(filepath, content, overrides) {
54
+ fs_1.default.writeFileSync(filepath, content);
55
+ return this.from(filepath, overrides);
56
+ }
53
57
  }
54
58
  exports.LocalNesoiFile = LocalNesoiFile;
55
59
  /**