nesoi 3.0.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 (348) hide show
  1. package/lib/adapters/postgres/src/migrator/database.d.ts +37 -0
  2. package/lib/adapters/postgres/src/migrator/database.js +88 -0
  3. package/lib/adapters/postgres/src/migrator/index.d.ts +1 -0
  4. package/lib/adapters/postgres/src/migrator/index.js +5 -0
  5. package/lib/adapters/postgres/src/migrator/migration.d.ts +73 -0
  6. package/lib/adapters/postgres/src/migrator/migration.js +351 -0
  7. package/lib/adapters/postgres/src/migrator/migrator.d.ts +21 -0
  8. package/lib/adapters/postgres/src/migrator/migrator.js +73 -0
  9. package/lib/adapters/postgres/src/migrator/runner.d.ts +61 -0
  10. package/lib/adapters/postgres/src/migrator/runner.js +202 -0
  11. package/lib/adapters/postgres/src/postgres.bucket_adapter.d.ts +45 -0
  12. package/lib/adapters/postgres/src/postgres.bucket_adapter.js +278 -0
  13. package/lib/adapters/postgres/src/postgres.cli.d.ts +46 -0
  14. package/lib/adapters/postgres/src/postgres.cli.js +124 -0
  15. package/lib/adapters/postgres/src/postgres.nql.d.ts +12 -0
  16. package/lib/adapters/postgres/src/postgres.nql.js +69 -0
  17. package/lib/adapters/postgres/test/postgres.bucket_adapter.test.d.ts +1 -0
  18. package/lib/adapters/postgres/test/postgres.bucket_adapter.test.js +173 -0
  19. package/lib/adapters/postgres/test/postgres.bucket_query.test.d.ts +0 -0
  20. package/lib/adapters/postgres/test/postgres.bucket_query.test.js +136 -0
  21. package/lib/compiler/apps/monolyth/monolyth_compiler.d.ts +21 -0
  22. package/lib/compiler/apps/monolyth/monolyth_compiler.js +95 -0
  23. package/lib/compiler/apps/monolyth/stages/1_mkdir_stage.d.ts +12 -0
  24. package/lib/compiler/apps/monolyth/stages/1_mkdir_stage.js +80 -0
  25. package/lib/compiler/apps/monolyth/stages/2_build_typescript_stage.d.ts +12 -0
  26. package/lib/compiler/apps/monolyth/stages/2_build_typescript_stage.js +128 -0
  27. package/lib/compiler/apps/monolyth/stages/3_copy_types_stage.d.ts +12 -0
  28. package/lib/compiler/apps/monolyth/stages/3_copy_types_stage.js +75 -0
  29. package/lib/compiler/apps/monolyth/stages/4_dump_modules_stage.d.ts +13 -0
  30. package/lib/compiler/apps/monolyth/stages/4_dump_modules_stage.js +130 -0
  31. package/lib/compiler/apps/monolyth/stages/5_dump_cli_stage.d.ts +12 -0
  32. package/lib/compiler/apps/monolyth/stages/5_dump_cli_stage.js +65 -0
  33. package/lib/compiler/apps/monolyth/stages/6_dump_package_json_stage.d.ts +12 -0
  34. package/lib/compiler/apps/monolyth/stages/6_dump_package_json_stage.js +74 -0
  35. package/lib/compiler/compiler.d.ts +19 -0
  36. package/lib/compiler/compiler.js +83 -0
  37. package/lib/compiler/elements/bucket.element.d.ts +23 -0
  38. package/lib/compiler/elements/bucket.element.js +304 -0
  39. package/lib/compiler/elements/constants.element.d.ts +9 -0
  40. package/lib/compiler/elements/constants.element.js +88 -0
  41. package/lib/compiler/elements/controller.element.d.ts +6 -0
  42. package/lib/compiler/elements/controller.element.js +22 -0
  43. package/lib/compiler/elements/element.d.ts +49 -0
  44. package/lib/compiler/elements/element.js +105 -0
  45. package/lib/compiler/elements/externals.element.d.ts +19 -0
  46. package/lib/compiler/elements/externals.element.js +83 -0
  47. package/lib/compiler/elements/job.element.d.ts +7 -0
  48. package/lib/compiler/elements/job.element.js +62 -0
  49. package/lib/compiler/elements/machine.element.d.ts +10 -0
  50. package/lib/compiler/elements/machine.element.js +98 -0
  51. package/lib/compiler/elements/message.element.d.ts +9 -0
  52. package/lib/compiler/elements/message.element.js +175 -0
  53. package/lib/compiler/elements/queue.element.d.ts +6 -0
  54. package/lib/compiler/elements/queue.element.js +24 -0
  55. package/lib/compiler/elements/resource.element.d.ts +7 -0
  56. package/lib/compiler/elements/resource.element.js +64 -0
  57. package/lib/compiler/error.d.ts +21 -0
  58. package/lib/compiler/error.js +57 -0
  59. package/lib/compiler/helpers/dump_helpers.d.ts +11 -0
  60. package/lib/compiler/helpers/dump_helpers.js +157 -0
  61. package/lib/compiler/helpers/name_helpers.d.ts +20 -0
  62. package/lib/compiler/helpers/name_helpers.js +44 -0
  63. package/lib/compiler/index.d.ts +2 -0
  64. package/lib/compiler/index.js +7 -0
  65. package/lib/compiler/module.d.ts +24 -0
  66. package/lib/compiler/module.js +122 -0
  67. package/lib/compiler/stages/1_scan_stage.d.ts +10 -0
  68. package/lib/compiler/stages/1_scan_stage.js +23 -0
  69. package/lib/compiler/stages/2_treeshake_stage.d.ts +11 -0
  70. package/lib/compiler/stages/2_treeshake_stage.js +24 -0
  71. package/lib/compiler/stages/3_extract_ts_stage.d.ts +10 -0
  72. package/lib/compiler/stages/3_extract_ts_stage.js +71 -0
  73. package/lib/compiler/stages/4_build_schemas_stage.d.ts +10 -0
  74. package/lib/compiler/stages/4_build_schemas_stage.js +25 -0
  75. package/lib/compiler/stages/5_inject_ts_stage.d.ts +10 -0
  76. package/lib/compiler/stages/5_inject_ts_stage.js +22 -0
  77. package/lib/compiler/stages/6_build_elements_stage.d.ts +11 -0
  78. package/lib/compiler/stages/6_build_elements_stage.js +22 -0
  79. package/lib/compiler/stages/7_dump_stage.d.ts +14 -0
  80. package/lib/compiler/stages/7_dump_stage.js +208 -0
  81. package/lib/compiler/stages/8_diagnose_stage.d.ts +16 -0
  82. package/lib/compiler/stages/8_diagnose_stage.js +43 -0
  83. package/lib/compiler/treeshake.d.ts +58 -0
  84. package/lib/compiler/treeshake.js +424 -0
  85. package/lib/compiler/typescript/bridge/extract.d.ts +11 -0
  86. package/lib/compiler/typescript/bridge/extract.js +270 -0
  87. package/lib/compiler/typescript/bridge/inject.d.ts +10 -0
  88. package/lib/compiler/typescript/bridge/inject.js +140 -0
  89. package/lib/compiler/typescript/bridge/organize.d.ts +61 -0
  90. package/lib/compiler/typescript/bridge/organize.js +258 -0
  91. package/lib/compiler/typescript/error.d.ts +88 -0
  92. package/lib/compiler/typescript/error.js +265 -0
  93. package/lib/compiler/typescript/parser.d.ts +48 -0
  94. package/lib/compiler/typescript/parser.js +581 -0
  95. package/lib/compiler/typescript/source.d.ts +12 -0
  96. package/lib/compiler/typescript/source.js +87 -0
  97. package/lib/compiler/typescript/transformers/app_inject.transformer.d.ts +2 -0
  98. package/lib/compiler/typescript/transformers/app_inject.transformer.js +89 -0
  99. package/lib/compiler/typescript/transformers/replace_import.transformer.d.ts +4 -0
  100. package/lib/compiler/typescript/transformers/replace_import.transformer.js +102 -0
  101. package/lib/compiler/typescript/typescript_compiler.d.ts +63 -0
  102. package/lib/compiler/typescript/typescript_compiler.js +602 -0
  103. package/lib/elements/blocks/block.builder.d.ts +29 -0
  104. package/lib/elements/blocks/block.builder.js +87 -0
  105. package/lib/elements/blocks/block.d.ts +15 -0
  106. package/lib/elements/blocks/block.js +37 -0
  107. package/lib/elements/blocks/block.schema.d.ts +23 -0
  108. package/lib/elements/blocks/block.schema.js +15 -0
  109. package/lib/elements/blocks/externals/externals.builder.d.ts +30 -0
  110. package/lib/elements/blocks/externals/externals.builder.js +37 -0
  111. package/lib/elements/blocks/externals/externals.schema.d.ts +11 -0
  112. package/lib/elements/blocks/externals/externals.schema.js +19 -0
  113. package/lib/elements/blocks/job/internal/machine_job.builder.d.ts +52 -0
  114. package/lib/elements/blocks/job/internal/machine_job.builder.js +74 -0
  115. package/lib/elements/blocks/job/internal/machine_job.schema.d.ts +5 -0
  116. package/lib/elements/blocks/job/internal/machine_job.schema.js +10 -0
  117. package/lib/elements/blocks/job/internal/resource_job.builder.d.ts +109 -0
  118. package/lib/elements/blocks/job/internal/resource_job.builder.js +146 -0
  119. package/lib/elements/blocks/job/internal/resource_job.d.ts +14 -0
  120. package/lib/elements/blocks/job/internal/resource_job.js +30 -0
  121. package/lib/elements/blocks/job/internal/resource_job.schema.d.ts +11 -0
  122. package/lib/elements/blocks/job/internal/resource_job.schema.js +15 -0
  123. package/lib/elements/blocks/job/job.builder.d.ts +118 -0
  124. package/lib/elements/blocks/job/job.builder.js +137 -0
  125. package/lib/elements/blocks/job/job.d.ts +13 -0
  126. package/lib/elements/blocks/job/job.js +40 -0
  127. package/lib/elements/blocks/job/job.schema.d.ts +26 -0
  128. package/lib/elements/blocks/job/job.schema.js +20 -0
  129. package/lib/elements/blocks/machine/machine.builder.d.ts +58 -0
  130. package/lib/elements/blocks/machine/machine.builder.js +135 -0
  131. package/lib/elements/blocks/machine/machine.d.ts +86 -0
  132. package/lib/elements/blocks/machine/machine.js +228 -0
  133. package/lib/elements/blocks/machine/machine.schema.d.ts +85 -0
  134. package/lib/elements/blocks/machine/machine.schema.js +64 -0
  135. package/lib/elements/blocks/machine/machine_state.builder.d.ts +58 -0
  136. package/lib/elements/blocks/machine/machine_state.builder.js +186 -0
  137. package/lib/elements/blocks/machine/machine_transition.builder.d.ts +48 -0
  138. package/lib/elements/blocks/machine/machine_transition.builder.js +98 -0
  139. package/lib/elements/blocks/queue/adapters/bucket.queue_adapter.d.ts +10 -0
  140. package/lib/elements/blocks/queue/adapters/bucket.queue_adapter.js +17 -0
  141. package/lib/elements/blocks/queue/adapters/queue_adapter.d.ts +6 -0
  142. package/lib/elements/blocks/queue/adapters/queue_adapter.js +6 -0
  143. package/lib/elements/blocks/queue/queue.builder.d.ts +40 -0
  144. package/lib/elements/blocks/queue/queue.builder.js +31 -0
  145. package/lib/elements/blocks/queue/queue.d.ts +9 -0
  146. package/lib/elements/blocks/queue/queue.js +11 -0
  147. package/lib/elements/blocks/queue/queue.schema.d.ts +12 -0
  148. package/lib/elements/blocks/queue/queue.schema.js +17 -0
  149. package/lib/elements/blocks/resource/resource.builder.d.ts +60 -0
  150. package/lib/elements/blocks/resource/resource.builder.js +224 -0
  151. package/lib/elements/blocks/resource/resource.d.ts +48 -0
  152. package/lib/elements/blocks/resource/resource.js +125 -0
  153. package/lib/elements/blocks/resource/resource.schema.d.ts +32 -0
  154. package/lib/elements/blocks/resource/resource.schema.js +30 -0
  155. package/lib/elements/blocks/resource/resource.types.d.ts +38 -0
  156. package/lib/elements/blocks/resource/resource.types.js +3 -0
  157. package/lib/elements/edge/controller/adapters/cli.controller_adapter.d.ts +8 -0
  158. package/lib/elements/edge/controller/adapters/cli.controller_adapter.js +17 -0
  159. package/lib/elements/edge/controller/adapters/controller_adapter.d.ts +14 -0
  160. package/lib/elements/edge/controller/adapters/controller_adapter.js +44 -0
  161. package/lib/elements/edge/controller/controller.builder.d.ts +78 -0
  162. package/lib/elements/edge/controller/controller.builder.js +178 -0
  163. package/lib/elements/edge/controller/controller.config.d.ts +6 -0
  164. package/lib/elements/edge/controller/controller.config.js +2 -0
  165. package/lib/elements/edge/controller/controller.d.ts +22 -0
  166. package/lib/elements/edge/controller/controller.js +41 -0
  167. package/lib/elements/edge/controller/controller.schema.d.ts +44 -0
  168. package/lib/elements/edge/controller/controller.schema.js +51 -0
  169. package/lib/elements/entities/bucket/adapters/bucket_adapter.d.ts +107 -0
  170. package/lib/elements/entities/bucket/adapters/bucket_adapter.js +41 -0
  171. package/lib/elements/entities/bucket/adapters/memory.bucket_adapter.d.ts +37 -0
  172. package/lib/elements/entities/bucket/adapters/memory.bucket_adapter.js +149 -0
  173. package/lib/elements/entities/bucket/adapters/memory.bucket_query copy.d.ts +0 -0
  174. package/lib/elements/entities/bucket/adapters/memory.bucket_query copy.js +218 -0
  175. package/lib/elements/entities/bucket/adapters/memory.nql.d.ts +19 -0
  176. package/lib/elements/entities/bucket/adapters/memory.nql.js +212 -0
  177. package/lib/elements/entities/bucket/adapters/slow_memory.bucket_adapter.d.ts +20 -0
  178. package/lib/elements/entities/bucket/adapters/slow_memory.bucket_adapter.js +31 -0
  179. package/lib/elements/entities/bucket/bucket.builder.d.ts +61 -0
  180. package/lib/elements/entities/bucket/bucket.builder.js +130 -0
  181. package/lib/elements/entities/bucket/bucket.config.d.ts +29 -0
  182. package/lib/elements/entities/bucket/bucket.config.js +2 -0
  183. package/lib/elements/entities/bucket/bucket.d.ts +36 -0
  184. package/lib/elements/entities/bucket/bucket.infer.d.ts +22 -0
  185. package/lib/elements/entities/bucket/bucket.infer.js +85 -0
  186. package/lib/elements/entities/bucket/bucket.js +125 -0
  187. package/lib/elements/entities/bucket/bucket.schema.d.ts +24 -0
  188. package/lib/elements/entities/bucket/bucket.schema.js +16 -0
  189. package/lib/elements/entities/bucket/bucket.types.d.ts +32 -0
  190. package/lib/elements/entities/bucket/bucket.types.js +2 -0
  191. package/lib/elements/entities/bucket/cache/bucket_cache.d.ts +35 -0
  192. package/lib/elements/entities/bucket/cache/bucket_cache.js +182 -0
  193. package/lib/elements/entities/bucket/graph/bucket_graph.builder.d.ts +11 -0
  194. package/lib/elements/entities/bucket/graph/bucket_graph.builder.js +27 -0
  195. package/lib/elements/entities/bucket/graph/bucket_graph.d.ts +16 -0
  196. package/lib/elements/entities/bucket/graph/bucket_graph.infer.d.ts +9 -0
  197. package/lib/elements/entities/bucket/graph/bucket_graph.infer.js +2 -0
  198. package/lib/elements/entities/bucket/graph/bucket_graph.js +136 -0
  199. package/lib/elements/entities/bucket/graph/bucket_graph.schema.d.ts +28 -0
  200. package/lib/elements/entities/bucket/graph/bucket_graph.schema.js +27 -0
  201. package/lib/elements/entities/bucket/graph/bucket_graph_link.builder.d.ts +36 -0
  202. package/lib/elements/entities/bucket/graph/bucket_graph_link.builder.js +56 -0
  203. package/lib/elements/entities/bucket/model/bucket_model.builder.d.ts +13 -0
  204. package/lib/elements/entities/bucket/model/bucket_model.builder.js +24 -0
  205. package/lib/elements/entities/bucket/model/bucket_model.convert.d.ts +5 -0
  206. package/lib/elements/entities/bucket/model/bucket_model.convert.js +51 -0
  207. package/lib/elements/entities/bucket/model/bucket_model.infer.d.ts +13 -0
  208. package/lib/elements/entities/bucket/model/bucket_model.infer.js +2 -0
  209. package/lib/elements/entities/bucket/model/bucket_model.schema.d.ts +35 -0
  210. package/lib/elements/entities/bucket/model/bucket_model.schema.js +47 -0
  211. package/lib/elements/entities/bucket/model/bucket_model_field.builder.d.ts +119 -0
  212. package/lib/elements/entities/bucket/model/bucket_model_field.builder.js +154 -0
  213. package/lib/elements/entities/bucket/query/nql.schema.d.ts +140 -0
  214. package/lib/elements/entities/bucket/query/nql.schema.js +2 -0
  215. package/lib/elements/entities/bucket/query/nql_compiler.d.ts +44 -0
  216. package/lib/elements/entities/bucket/query/nql_compiler.js +620 -0
  217. package/lib/elements/entities/bucket/query/nql_engine.d.ts +16 -0
  218. package/lib/elements/entities/bucket/query/nql_engine.js +42 -0
  219. package/lib/elements/entities/bucket/view/bucket_view.builder.d.ts +14 -0
  220. package/lib/elements/entities/bucket/view/bucket_view.builder.js +24 -0
  221. package/lib/elements/entities/bucket/view/bucket_view.d.ts +10 -0
  222. package/lib/elements/entities/bucket/view/bucket_view.js +102 -0
  223. package/lib/elements/entities/bucket/view/bucket_view.schema.d.ts +55 -0
  224. package/lib/elements/entities/bucket/view/bucket_view.schema.js +42 -0
  225. package/lib/elements/entities/bucket/view/bucket_view_field.builder.d.ts +37 -0
  226. package/lib/elements/entities/bucket/view/bucket_view_field.builder.js +138 -0
  227. package/lib/elements/entities/constants/constants.builder.d.ts +57 -0
  228. package/lib/elements/entities/constants/constants.builder.js +116 -0
  229. package/lib/elements/entities/constants/constants.d.ts +7 -0
  230. package/lib/elements/entities/constants/constants.js +15 -0
  231. package/lib/elements/entities/constants/constants.schema.d.ts +51 -0
  232. package/lib/elements/entities/constants/constants.schema.js +45 -0
  233. package/lib/elements/entities/message/message.builder.d.ts +33 -0
  234. package/lib/elements/entities/message/message.builder.js +41 -0
  235. package/lib/elements/entities/message/message.d.ts +11 -0
  236. package/lib/elements/entities/message/message.infer.d.ts +63 -0
  237. package/lib/elements/entities/message/message.infer.js +2 -0
  238. package/lib/elements/entities/message/message.js +52 -0
  239. package/lib/elements/entities/message/message.schema.d.ts +15 -0
  240. package/lib/elements/entities/message/message.schema.js +13 -0
  241. package/lib/elements/entities/message/message_parser.d.ts +12 -0
  242. package/lib/elements/entities/message/message_parser.js +112 -0
  243. package/lib/elements/entities/message/template/message_template.builder.d.ts +14 -0
  244. package/lib/elements/entities/message/template/message_template.builder.js +20 -0
  245. package/lib/elements/entities/message/template/message_template.schema.d.ts +57 -0
  246. package/lib/elements/entities/message/template/message_template.schema.js +28 -0
  247. package/lib/elements/entities/message/template/message_template_field.builder.d.ts +225 -0
  248. package/lib/elements/entities/message/template/message_template_field.builder.js +172 -0
  249. package/lib/elements/entities/message/template/message_template_parser.d.ts +3 -0
  250. package/lib/elements/entities/message/template/message_template_parser.js +83 -0
  251. package/lib/elements/index.d.ts +11 -0
  252. package/lib/elements/index.js +23 -0
  253. package/lib/engine/apps/app.config.d.ts +49 -0
  254. package/lib/engine/apps/app.config.js +38 -0
  255. package/lib/engine/apps/app.d.ts +70 -0
  256. package/lib/engine/apps/app.js +101 -0
  257. package/lib/engine/apps/inline.app.d.ts +48 -0
  258. package/lib/engine/apps/inline.app.js +144 -0
  259. package/lib/engine/apps/monolyth/monolyth.app.d.ts +20 -0
  260. package/lib/engine/apps/monolyth/monolyth.app.js +94 -0
  261. package/lib/engine/apps/monolyth/monolyth.cli.d.ts +45 -0
  262. package/lib/engine/apps/monolyth/monolyth.cli.js +362 -0
  263. package/lib/engine/auth/authn.d.ts +18 -0
  264. package/lib/engine/auth/authn.js +9 -0
  265. package/lib/engine/auth/zero.authn_provider.d.ts +13 -0
  266. package/lib/engine/auth/zero.authn_provider.js +13 -0
  267. package/lib/engine/cli/cli.d.ts +19 -0
  268. package/lib/engine/cli/cli.js +88 -0
  269. package/lib/engine/cli/cli_adapter.d.ts +18 -0
  270. package/lib/engine/cli/cli_adapter.js +61 -0
  271. package/lib/engine/cli/ui.d.ts +36 -0
  272. package/lib/engine/cli/ui.js +188 -0
  273. package/lib/engine/daemon.d.ts +35 -0
  274. package/lib/engine/daemon.js +66 -0
  275. package/lib/engine/data/date.d.ts +10 -0
  276. package/lib/engine/data/date.js +32 -0
  277. package/lib/engine/data/datetime.d.ts +12 -0
  278. package/lib/engine/data/datetime.js +31 -0
  279. package/lib/engine/data/decimal.d.ts +11 -0
  280. package/lib/engine/data/decimal.js +70 -0
  281. package/lib/engine/data/error.d.ts +213 -0
  282. package/lib/engine/data/error.js +386 -0
  283. package/lib/engine/data/obj.d.ts +16 -0
  284. package/lib/engine/data/obj.js +5 -0
  285. package/lib/engine/data/tree.d.ts +17 -0
  286. package/lib/engine/data/tree.js +111 -0
  287. package/lib/engine/dependency.d.ts +68 -0
  288. package/lib/engine/dependency.js +91 -0
  289. package/lib/engine/module.d.ts +97 -0
  290. package/lib/engine/module.js +335 -0
  291. package/lib/engine/space.d.ts +54 -0
  292. package/lib/engine/space.js +138 -0
  293. package/lib/engine/transaction/nodes/bucket.trx_node.d.ts +53 -0
  294. package/lib/engine/transaction/nodes/bucket.trx_node.js +522 -0
  295. package/lib/engine/transaction/nodes/bucket_query.trx_node.d.ts +17 -0
  296. package/lib/engine/transaction/nodes/bucket_query.trx_node.js +82 -0
  297. package/lib/engine/transaction/nodes/job.trx_node.d.ts +13 -0
  298. package/lib/engine/transaction/nodes/job.trx_node.js +40 -0
  299. package/lib/engine/transaction/nodes/machine.trx_node.d.ts +12 -0
  300. package/lib/engine/transaction/nodes/machine.trx_node.js +39 -0
  301. package/lib/engine/transaction/nodes/queue.trx_node.d.ts +10 -0
  302. package/lib/engine/transaction/nodes/queue.trx_node.js +24 -0
  303. package/lib/engine/transaction/nodes/resource.trx_node.d.ts +24 -0
  304. package/lib/engine/transaction/nodes/resource.trx_node.js +77 -0
  305. package/lib/engine/transaction/trx.d.ts +50 -0
  306. package/lib/engine/transaction/trx.js +94 -0
  307. package/lib/engine/transaction/trx_engine.config.d.ts +15 -0
  308. package/lib/engine/transaction/trx_engine.config.js +2 -0
  309. package/lib/engine/transaction/trx_engine.d.ts +27 -0
  310. package/lib/engine/transaction/trx_engine.js +95 -0
  311. package/lib/engine/transaction/trx_node.d.ts +61 -0
  312. package/lib/engine/transaction/trx_node.js +175 -0
  313. package/lib/engine/tree.d.ts +34 -0
  314. package/lib/engine/tree.js +237 -0
  315. package/lib/engine/util/cache.d.ts +6 -0
  316. package/lib/engine/util/cache.js +20 -0
  317. package/lib/engine/util/console.d.ts +4 -0
  318. package/lib/engine/util/console.js +24 -0
  319. package/lib/engine/util/deep.d.ts +7 -0
  320. package/lib/engine/util/deep.js +2 -0
  321. package/lib/engine/util/dotenv.d.ts +15 -0
  322. package/lib/engine/util/dotenv.js +94 -0
  323. package/lib/engine/util/i18n.d.ts +5 -0
  324. package/lib/engine/util/i18n.js +19 -0
  325. package/lib/engine/util/log.d.ts +17 -0
  326. package/lib/engine/util/log.js +93 -0
  327. package/lib/engine/util/parse.d.ts +63 -0
  328. package/lib/engine/util/parse.js +229 -0
  329. package/lib/engine/util/promise.d.ts +3 -0
  330. package/lib/engine/util/promise.js +14 -0
  331. package/lib/engine/util/shell.d.ts +6 -0
  332. package/lib/engine/util/shell.js +44 -0
  333. package/lib/engine/util/string.d.ts +18 -0
  334. package/lib/engine/util/string.js +25 -0
  335. package/lib/engine/util/type.d.ts +7 -0
  336. package/lib/engine/util/type.js +3 -0
  337. package/lib/schema.d.ts +63 -0
  338. package/lib/schema.js +2 -0
  339. package/package.json +22 -0
  340. package/tools/compile.d.ts +1 -0
  341. package/tools/compile.js +68 -0
  342. package/tools/joaquin/job.d.ts +40 -0
  343. package/tools/joaquin/job.js +47 -0
  344. package/tools/joaquin/message.d.ts +12 -0
  345. package/tools/joaquin/message.js +47 -0
  346. package/tools/joaquin/mock.d.ts +28 -0
  347. package/tools/joaquin/mock.js +128 -0
  348. package/tsconfig.build.tsbuildinfo +1 -0
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BucketViewBuilder = void 0;
4
+ const bucket_view_schema_1 = require("./bucket_view.schema");
5
+ const bucket_view_field_builder_1 = require("./bucket_view_field.builder");
6
+ class BucketViewBuilder {
7
+ constructor(name) {
8
+ this.name = name;
9
+ this._fields = {};
10
+ }
11
+ fields($) {
12
+ const fieldBuilder = new bucket_view_field_builder_1.BucketViewFieldFactory(this);
13
+ this._fields = $(fieldBuilder);
14
+ return this;
15
+ }
16
+ // Build
17
+ static build(builder, model, graph, views) {
18
+ const fields = bucket_view_field_builder_1.BucketViewFieldBuilder.buildFields(builder._fields, model, graph, views);
19
+ const schema = new bucket_view_schema_1.$BucketView(builder.name, fields);
20
+ schema.fields.id = new bucket_view_schema_1.$BucketViewField('id', 'model', 'id', 'id', false, true, { model: { key: 'id' } });
21
+ return schema;
22
+ }
23
+ }
24
+ exports.BucketViewBuilder = BucketViewBuilder;
@@ -0,0 +1,10 @@
1
+ import { NesoiObj } from "../../../../engine/data/obj";
2
+ import { Bucket } from '../bucket';
3
+ import { $BucketView } from './bucket_view.schema';
4
+ import { AnyTrxNode } from "../../../../engine/transaction/trx_node";
5
+ export declare class BucketView<$ extends $BucketView> {
6
+ private bucket;
7
+ schema: $;
8
+ constructor(bucket: Bucket<any, any>, schema: $);
9
+ parse<Obj extends NesoiObj>(trx: AnyTrxNode, raw: Obj): Promise<$['#data']>;
10
+ }
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.BucketView = void 0;
7
+ const promise_1 = __importDefault(require("../../../../engine/util/promise"));
8
+ const tree_1 = require("../../../../engine/data/tree");
9
+ class BucketView {
10
+ constructor(bucket, schema) {
11
+ this.bucket = bucket;
12
+ this.schema = schema;
13
+ }
14
+ async parse(trx, raw) {
15
+ const bucket = this.bucket;
16
+ const doParse = async (schema, index) => {
17
+ const parsedObj = {};
18
+ // Model props
19
+ for (const k in schema) {
20
+ const prop = schema[k];
21
+ if (prop.scope !== 'model') {
22
+ continue;
23
+ }
24
+ const value = prop.value.model;
25
+ const rawValue = tree_1.Tree.get(raw, value.key, index);
26
+ if (prop.children) {
27
+ if (prop.array) {
28
+ if (!Array.isArray(rawValue)) {
29
+ continue;
30
+ }
31
+ const parsedArray = [];
32
+ for (let i = 0; i < rawValue.length; i++) {
33
+ const child = await doParse(prop.children, [...(index || []), i]);
34
+ parsedArray.push(child);
35
+ }
36
+ parsedObj[k] = parsedArray;
37
+ continue;
38
+ }
39
+ else if (prop.type === 'dict') {
40
+ if (typeof rawValue !== 'object' || Array.isArray(rawValue)) {
41
+ continue;
42
+ }
43
+ const parsedArray = [];
44
+ for (const k in rawValue) {
45
+ const child = await doParse(prop.children, [...(index || []), k]);
46
+ parsedArray.push(child);
47
+ }
48
+ parsedObj[k] = parsedArray;
49
+ continue;
50
+ }
51
+ else {
52
+ parsedObj[k] = await doParse(prop.children, index || []);
53
+ continue;
54
+ }
55
+ }
56
+ parsedObj[k] = rawValue;
57
+ }
58
+ // Computed props
59
+ for (const k in schema) {
60
+ const prop = schema[k];
61
+ if (prop.$t !== 'bucket.view.field') {
62
+ continue;
63
+ }
64
+ if (prop.scope !== 'computed') {
65
+ continue;
66
+ }
67
+ const value = prop.value.computed;
68
+ parsedObj[k] = await promise_1.default.solve(value.fn({ trx, raw, bucket: bucket.schema }));
69
+ }
70
+ // Graph props
71
+ for (const k in schema) {
72
+ const prop = schema[k];
73
+ if (prop.$t !== 'bucket.view.field') {
74
+ continue;
75
+ }
76
+ if (prop.scope !== 'graph') {
77
+ continue;
78
+ }
79
+ const value = prop.value.graph;
80
+ parsedObj[k] = await promise_1.default.solve(bucket.graph.readLink(trx, value.link, raw, value.view, index || []));
81
+ }
82
+ // Group props
83
+ for (const k in schema) {
84
+ const prop = schema[k];
85
+ if (prop.$t !== 'bucket.view.field') {
86
+ continue;
87
+ }
88
+ if (prop.scope !== 'group') {
89
+ continue;
90
+ }
91
+ parsedObj[k] = await doParse(prop.children || {}, index);
92
+ }
93
+ return parsedObj;
94
+ };
95
+ const parsedObj = await doParse(this.schema.fields, null);
96
+ return {
97
+ id: raw.id,
98
+ ...parsedObj
99
+ };
100
+ }
101
+ }
102
+ exports.BucketView = BucketView;
@@ -0,0 +1,55 @@
1
+ import { $BucketModelFieldType } from '../model/bucket_model.schema';
2
+ import { $Bucket } from '../bucket.schema';
3
+ import { AnyTrxNode } from "../../../../engine/transaction/trx_node";
4
+ export type $BucketViewFieldFn<TrxNode extends AnyTrxNode, B extends $Bucket> = (ctx: {
5
+ trx: TrxNode;
6
+ raw: B['#data'];
7
+ bucket: $Bucket;
8
+ }) => any | Promise<any>;
9
+ export type $BucketViewFieldValue = {
10
+ model?: {
11
+ key: string;
12
+ enumOptions?: string | string[];
13
+ };
14
+ graph?: {
15
+ link: string;
16
+ view?: string;
17
+ };
18
+ computed?: {
19
+ fn: $BucketViewFieldFn<any, any>;
20
+ };
21
+ view?: {
22
+ view: string;
23
+ };
24
+ group?: {};
25
+ };
26
+ export declare class $BucketViewField {
27
+ name: string;
28
+ scope: 'model' | 'graph' | 'computed' | 'group' | 'view';
29
+ type: $BucketModelFieldType | 'id';
30
+ alias: string;
31
+ array: boolean | 'unknown';
32
+ required: boolean;
33
+ value: $BucketViewFieldValue;
34
+ children?: $BucketViewFields | undefined;
35
+ $t: string;
36
+ '#data': unknown;
37
+ constructor(name: string, scope: 'model' | 'graph' | 'computed' | 'group' | 'view', type: $BucketModelFieldType | 'id', alias: string, array: boolean | 'unknown', required: boolean, value: $BucketViewFieldValue, children?: $BucketViewFields | undefined);
38
+ }
39
+ export type $BucketViewFields = {
40
+ [x: string]: $BucketViewField;
41
+ };
42
+ export type $BucketViewFieldTree = {
43
+ [x: string]: $BucketViewField | $BucketViewFieldTree;
44
+ };
45
+ export declare class $BucketView {
46
+ name: string;
47
+ fields: $BucketViewFields;
48
+ $t: string;
49
+ '#data': unknown;
50
+ constructor(name: string, fields?: $BucketViewFields);
51
+ static getField(schema: $BucketView, path: string): $BucketViewField | undefined;
52
+ }
53
+ export type $BucketViews = {
54
+ [x: string]: $BucketView;
55
+ };
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.$BucketView = exports.$BucketViewField = void 0;
4
+ class $BucketViewField {
5
+ constructor(name, scope, type, alias, array, required, value, children) {
6
+ this.name = name;
7
+ this.scope = scope;
8
+ this.type = type;
9
+ this.alias = alias;
10
+ this.array = array;
11
+ this.required = required;
12
+ this.value = value;
13
+ this.children = children;
14
+ this.$t = 'bucket.view.field';
15
+ }
16
+ }
17
+ exports.$BucketViewField = $BucketViewField;
18
+ class $BucketView {
19
+ constructor(name, fields = {}) {
20
+ this.name = name;
21
+ this.fields = fields;
22
+ this.$t = 'bucket.view';
23
+ }
24
+ static getField(schema, path) {
25
+ const find = (fields, path) => {
26
+ const term = path[0];
27
+ if (term in fields) {
28
+ const field = fields[term];
29
+ if (path.length === 1) {
30
+ return field;
31
+ }
32
+ if (!field.children) {
33
+ return undefined;
34
+ }
35
+ return find(field.children, path.slice(1));
36
+ }
37
+ return undefined;
38
+ };
39
+ return find(schema.fields, path.split('.'));
40
+ }
41
+ }
42
+ exports.$BucketView = $BucketView;
@@ -0,0 +1,37 @@
1
+ import { $BucketViewField, $BucketViewFieldFn, $BucketViewFieldValue, $BucketViewFields, $BucketViews } from './bucket_view.schema';
2
+ import { $Module, $Space, ViewObj } from "../../../../schema";
3
+ import { $BucketModel } from '../model/bucket_model.schema';
4
+ import { $BucketGraph } from '../graph/bucket_graph.schema';
5
+ import { BucketViewBuilder } from './bucket_view.builder';
6
+ import { $Bucket } from '../bucket.schema';
7
+ import { $BucketViewFieldBuilderInfer } from '../bucket.infer';
8
+ import { TrxNode } from "../../../../engine/transaction/trx_node";
9
+ type GraphLinkBucket<Bucket extends $Bucket, L extends keyof Bucket['graph']['links']> = Bucket['graph']['links'][L]['#bucket'];
10
+ type ComputedData<Fn extends $BucketViewFieldFn<any, any>, R = ReturnType<Fn>> = R extends Promise<infer X> ? X : R;
11
+ export declare class BucketViewFieldFactory<Space extends $Space, Module extends $Module, Bucket extends $Bucket> {
12
+ private _view;
13
+ protected scope: $BucketViewField['scope'];
14
+ protected type: $BucketViewField['type'];
15
+ protected value: $BucketViewField['value'];
16
+ constructor(_view: BucketViewBuilder<any, any, any>);
17
+ model<K extends keyof Bucket['#fieldpath'], Extra extends BucketViewFieldBuilderTree>(key: K, extra?: Extra): BucketViewFieldBuilder<Bucket["#fieldpath"][K], "model", never>;
18
+ computed<Fn extends $BucketViewFieldFn<TrxNode<Space, Module, Space['authnUsers']>, Bucket>>(fn: Fn): BucketViewFieldBuilder<ComputedData<Fn, ReturnType<Fn>>, "computed", never>;
19
+ graph<L extends keyof Bucket['graph']['links'], LinkBucket extends GraphLinkBucket<Bucket, L>, V extends (keyof LinkBucket['views']) | undefined>(link: L, view?: V): BucketViewFieldBuilder<undefined extends V ? LinkBucket["#data"] : ViewObj<LinkBucket, NonNullable<V>>, "graph", `${LinkBucket["name"]}.${V & string}`>;
20
+ view<ViewName extends keyof Bucket['views'], View extends Bucket['views'][ViewName]>(view: ViewName): BucketViewFieldBuilder<View["#data"], "view", never>;
21
+ extend<ViewName extends keyof Bucket['views'], Builders extends BucketViewFieldBuilderTree>(view: ViewName, fields: Builders): $BucketViewFieldBuilderInfer<Bucket["views"][ViewName]["#data"]> & Builders;
22
+ static group(name: string, children: $BucketViewFields): $BucketViewField;
23
+ }
24
+ export declare class BucketViewFieldBuilder<Data, Scope extends $BucketViewField['scope'], GraphLink extends string = never> {
25
+ protected scope: $BucketViewField['scope'];
26
+ protected value: $BucketViewFieldValue;
27
+ protected refKey?: string | undefined;
28
+ protected extra?: BucketViewFieldBuilderTree | undefined;
29
+ protected type: $BucketViewField['type'];
30
+ constructor(scope: $BucketViewField['scope'], value: $BucketViewFieldValue, refKey?: string | undefined, extra?: BucketViewFieldBuilderTree | undefined);
31
+ static build(builder: BucketViewFieldBuilder<any, any>, model: $BucketModel, graph: $BucketGraph, views: $BucketViews, name: string): $BucketViewField;
32
+ static buildFields(fields: BucketViewFieldBuilderTree, model: $BucketModel, graph: $BucketGraph, views: $BucketViews): $BucketViewFields;
33
+ }
34
+ export type BucketViewFieldBuilderTree = {
35
+ [x: string]: BucketViewFieldBuilder<any, any, any> | BucketViewFieldBuilderTree;
36
+ };
37
+ export {};
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BucketViewFieldBuilder = exports.BucketViewFieldFactory = void 0;
4
+ const error_1 = require("../../../../engine/data/error");
5
+ const bucket_view_schema_1 = require("./bucket_view.schema");
6
+ const bucket_model_schema_1 = require("../model/bucket_model.schema");
7
+ const bucket_model_convert_1 = require("../model/bucket_model.convert");
8
+ /*
9
+ Factory
10
+ */
11
+ class BucketViewFieldFactory {
12
+ constructor(_view) {
13
+ this._view = _view;
14
+ }
15
+ model(key, extra) {
16
+ return new BucketViewFieldBuilder('model', {
17
+ model: {
18
+ key: key
19
+ }
20
+ }, key, extra);
21
+ }
22
+ computed(fn) {
23
+ return new BucketViewFieldBuilder('computed', {
24
+ computed: {
25
+ fn: fn
26
+ }
27
+ });
28
+ }
29
+ graph(link, view) {
30
+ return new BucketViewFieldBuilder('graph', {
31
+ graph: {
32
+ link: link,
33
+ view: view
34
+ }
35
+ }, link);
36
+ }
37
+ view(view) {
38
+ return new BucketViewFieldBuilder('view', {
39
+ view: {
40
+ view: view
41
+ }
42
+ }, view);
43
+ }
44
+ extend(view, fields) {
45
+ return {
46
+ __ext: view,
47
+ ...fields
48
+ };
49
+ }
50
+ static group(name, children) {
51
+ return new bucket_view_schema_1.$BucketViewField(name, 'group', 'obj', name, false, true, { group: {} }, children);
52
+ }
53
+ }
54
+ exports.BucketViewFieldFactory = BucketViewFieldFactory;
55
+ /*
56
+ Builder
57
+ */
58
+ class BucketViewFieldBuilder {
59
+ constructor(scope, value, refKey, extra) {
60
+ this.scope = scope;
61
+ this.value = value;
62
+ this.refKey = refKey;
63
+ this.extra = extra;
64
+ this.type = 'unknown';
65
+ this.type = 'unknown';
66
+ }
67
+ // Build
68
+ static build(builder, model, graph, views, name) {
69
+ let type = 'unknown';
70
+ let array = 'unknown';
71
+ let required = true;
72
+ let children = undefined;
73
+ if (builder.scope === 'model') {
74
+ const modelField = bucket_model_schema_1.$BucketModel.get(model, builder.refKey);
75
+ if (!modelField) {
76
+ throw error_1.NesoiError.Builder.Bucket.UnknownModelField(builder.refKey);
77
+ }
78
+ type = modelField.type;
79
+ array = builder.refKey?.includes('.*') || modelField.array;
80
+ required = modelField.required;
81
+ if (modelField._enum) {
82
+ builder.value.model.enumOptions = modelField._enum.options;
83
+ }
84
+ if (modelField.children) {
85
+ const path = builder.refKey + ((modelField.array || modelField.type === 'dict') ? '.*' : '');
86
+ const fromModel = (0, bucket_model_convert_1.convertToView)(model, '', modelField.children, path).fields;
87
+ children = Object.assign({}, fromModel);
88
+ }
89
+ if (builder.extra) {
90
+ const extra = this.buildFields(builder.extra, model, graph, views);
91
+ children = Object.assign({}, children, extra);
92
+ }
93
+ }
94
+ else if (builder.scope === 'graph') {
95
+ const graphLink = builder.refKey ? graph.links[builder.refKey] : undefined;
96
+ if (!graphLink) {
97
+ throw error_1.NesoiError.Builder.Bucket.UnknownGraphLink(builder.refKey || '');
98
+ }
99
+ array = graphLink.many;
100
+ }
101
+ else if (builder.scope === 'view') {
102
+ const view = builder.refKey ? views[builder.refKey] : undefined;
103
+ if (!view) {
104
+ throw error_1.NesoiError.Builder.Bucket.UnknownViewName(builder.refKey || '');
105
+ }
106
+ type = 'obj';
107
+ array = false;
108
+ children = view.fields;
109
+ }
110
+ return new bucket_view_schema_1.$BucketViewField(name, builder.scope, type, name, array, required, builder.value, children);
111
+ }
112
+ static buildFields(fields, model, graph, views) {
113
+ const schema = {};
114
+ // Extended fields inherit from other views
115
+ if ('__ext' in fields) {
116
+ const ext = views[fields.__ext];
117
+ Object.assign(schema, ext.fields);
118
+ }
119
+ for (const f in fields) {
120
+ if (f === '__ext') {
121
+ continue;
122
+ }
123
+ const field = fields[f];
124
+ // Normal fields are built here
125
+ if (field instanceof BucketViewFieldBuilder) {
126
+ schema[f] = BucketViewFieldBuilder.build(field, model, graph, views, f);
127
+ }
128
+ // Builders are allowed to implicitly declare nested fields.
129
+ // The code below transforms these groups into fields of the scope 'group'.
130
+ else {
131
+ const children = BucketViewFieldBuilder.buildFields(field, model, graph, views);
132
+ schema[f] = BucketViewFieldFactory.group(f, children);
133
+ }
134
+ }
135
+ return schema;
136
+ }
137
+ }
138
+ exports.BucketViewFieldBuilder = BucketViewFieldBuilder;
@@ -0,0 +1,57 @@
1
+ import { ResolvedBuilderNode } from "../../../engine/dependency";
2
+ import { $ConstantEnum, $ConstantEnumOption, $ConstantValue, $Constants } from './constants.schema';
3
+ /**
4
+ * Value
5
+ */
6
+ export declare class ConstantValueBuilder {
7
+ private scope;
8
+ private key?;
9
+ private value?;
10
+ constructor(scope: string, key?: string | undefined, value?: any | undefined);
11
+ static build(key: string, builder: ConstantValueBuilder): $ConstantValue;
12
+ }
13
+ export declare class ConstantValueFactory {
14
+ static<T>(value: T): ConstantValueBuilder;
15
+ app<T>(key?: string): ConstantValueBuilder;
16
+ }
17
+ type ConstantValueDef = ($: ConstantValueFactory) => Record<string, ConstantValueBuilder>;
18
+ /**
19
+ * Enum
20
+ */
21
+ export declare class ConstantEnumOptionBuilder {
22
+ private value;
23
+ constructor(value: any);
24
+ static build(key: string, builder: ConstantEnumOptionBuilder): $ConstantEnumOption;
25
+ }
26
+ export declare class ConstantEnumOptionFactory<T> {
27
+ opt(value: T): ConstantEnumOptionBuilder;
28
+ }
29
+ type ConstantEnumOptionBuilders = Record<string, ConstantEnumOptionBuilder>;
30
+ type ConstantEnumOptionDef<T> = ($: ConstantEnumOptionFactory<T>) => ConstantEnumOptionBuilders;
31
+ export declare class ConstantEnumBuilder {
32
+ name: string;
33
+ options: ConstantEnumOptionBuilders;
34
+ constructor(name: string, options: ConstantEnumOptionBuilders);
35
+ static build(builder: ConstantEnumBuilder): $ConstantEnum;
36
+ private static buildOptions;
37
+ }
38
+ /**
39
+ * Constants
40
+ */
41
+ export declare class ConstantsBuilder {
42
+ private module;
43
+ $b: "constants";
44
+ name: string;
45
+ private _values;
46
+ private enums;
47
+ constructor(module: string);
48
+ values($: ConstantValueDef): this;
49
+ enum<T>(name: string, $: ConstantEnumOptionDef<T>): this;
50
+ static merge(to: ConstantsBuilder, from: ConstantsBuilder): void;
51
+ static build(node: ConstantsBuilderNode): $Constants;
52
+ }
53
+ export type ConstantsBuilderNode = ResolvedBuilderNode & {
54
+ builder: ConstantsBuilder;
55
+ schema?: $Constants;
56
+ };
57
+ export {};
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ConstantsBuilder = exports.ConstantEnumBuilder = exports.ConstantEnumOptionFactory = exports.ConstantEnumOptionBuilder = exports.ConstantValueFactory = exports.ConstantValueBuilder = void 0;
4
+ const constants_schema_1 = require("./constants.schema");
5
+ /**
6
+ * Value
7
+ */
8
+ class ConstantValueBuilder {
9
+ constructor(scope, key, value) {
10
+ this.scope = scope;
11
+ this.key = key;
12
+ this.value = value;
13
+ }
14
+ // Build
15
+ static build(key, builder) {
16
+ return new constants_schema_1.$ConstantValue(builder.scope, builder.key || key, builder.value);
17
+ }
18
+ }
19
+ exports.ConstantValueBuilder = ConstantValueBuilder;
20
+ class ConstantValueFactory {
21
+ static(value) {
22
+ return new ConstantValueBuilder('static', undefined, value);
23
+ }
24
+ app(key) {
25
+ return new ConstantValueBuilder('app', key);
26
+ }
27
+ }
28
+ exports.ConstantValueFactory = ConstantValueFactory;
29
+ /**
30
+ * Enum
31
+ */
32
+ class ConstantEnumOptionBuilder {
33
+ constructor(value) {
34
+ this.value = value;
35
+ }
36
+ // Build
37
+ static build(key, builder) {
38
+ return new constants_schema_1.$ConstantEnumOption(key, builder.value);
39
+ }
40
+ }
41
+ exports.ConstantEnumOptionBuilder = ConstantEnumOptionBuilder;
42
+ class ConstantEnumOptionFactory {
43
+ opt(value) {
44
+ return new ConstantEnumOptionBuilder(value);
45
+ }
46
+ }
47
+ exports.ConstantEnumOptionFactory = ConstantEnumOptionFactory;
48
+ class ConstantEnumBuilder {
49
+ constructor(name, options) {
50
+ this.name = name;
51
+ this.options = options;
52
+ }
53
+ // Build
54
+ static build(builder) {
55
+ return new constants_schema_1.$ConstantEnum(builder.name, this.buildOptions(builder.options));
56
+ }
57
+ static buildOptions(builders) {
58
+ const options = {};
59
+ for (const k in builders) {
60
+ options[k] = ConstantEnumOptionBuilder.build(k, builders[k]);
61
+ }
62
+ return options;
63
+ }
64
+ }
65
+ exports.ConstantEnumBuilder = ConstantEnumBuilder;
66
+ /**
67
+ * Constants
68
+ */
69
+ class ConstantsBuilder {
70
+ constructor(module) {
71
+ this.module = module;
72
+ this.$b = 'constants';
73
+ this.name = '*';
74
+ this._values = {};
75
+ this.enums = {};
76
+ }
77
+ values($) {
78
+ const factory = new ConstantValueFactory();
79
+ this._values = $(factory);
80
+ return this;
81
+ }
82
+ enum(name, $) {
83
+ const factory = new ConstantEnumOptionFactory();
84
+ const options = $(factory);
85
+ this.enums[name] = new ConstantEnumBuilder(name, options);
86
+ return this;
87
+ }
88
+ static merge(to, from) {
89
+ Object.assign(to._values, from._values);
90
+ Object.assign(to.enums, from.enums);
91
+ }
92
+ // Build
93
+ static build(node) {
94
+ const values = {};
95
+ const enums = {};
96
+ for (const k in node.builder._values) {
97
+ values[k] = ConstantValueBuilder.build(k, node.builder._values[k]);
98
+ }
99
+ for (const k in node.builder.enums) {
100
+ enums[k] = ConstantEnumBuilder.build(node.builder.enums[k]);
101
+ // Spread enum into multiple enums if it has one or more "." on it's name
102
+ const split = k.split('.');
103
+ if (split.length > 1) {
104
+ let parent = '';
105
+ for (let i = 0; i < split.length - 1; i++) {
106
+ parent = parent.length ? (`${parent}.${split[i]}`) : split[i];
107
+ enums[parent] ?? (enums[parent] = new constants_schema_1.$ConstantEnum(parent, {}));
108
+ Object.assign(enums[parent].options, enums[k].options);
109
+ }
110
+ }
111
+ }
112
+ node.schema = new constants_schema_1.$Constants(node.module, values, enums);
113
+ return node.schema;
114
+ }
115
+ }
116
+ exports.ConstantsBuilder = ConstantsBuilder;
@@ -0,0 +1,7 @@
1
+ import { $ConstantEnum } from './constants.schema';
2
+ export declare class Enum<$ extends $ConstantEnum> {
3
+ private schema;
4
+ constructor(schema: $);
5
+ keys<K extends keyof $['options']>(): K[];
6
+ get<K extends keyof $['options']>(key: K): $['options'][K]['value'];
7
+ }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Enum = void 0;
4
+ class Enum {
5
+ constructor(schema) {
6
+ this.schema = schema;
7
+ }
8
+ keys() {
9
+ return Object.keys(this.schema.options);
10
+ }
11
+ get(key) {
12
+ return this.schema.options[key].value;
13
+ }
14
+ }
15
+ exports.Enum = Enum;
@@ -0,0 +1,51 @@
1
+ import { $Module, $Space } from "../../../schema";
2
+ import { $Message } from '../message/message.schema';
3
+ import { MergeUnion } from "../../../engine/util/type";
4
+ export declare class $ConstantValue {
5
+ scope: string;
6
+ key: string;
7
+ value?: any | undefined;
8
+ constructor(scope: string, key: string, value?: any | undefined);
9
+ }
10
+ export declare class $ConstantEnumOption {
11
+ key: string;
12
+ value: unknown;
13
+ constructor(key: string, value: unknown);
14
+ }
15
+ export declare class $ConstantEnum {
16
+ name: string;
17
+ options: Record<string, $ConstantEnumOption>;
18
+ '#data': any;
19
+ constructor(name: string, options: Record<string, $ConstantEnumOption>);
20
+ static keys(schema: $ConstantEnum): string[];
21
+ static get(schema: $ConstantEnum, key: string): unknown;
22
+ }
23
+ export declare class $Constants {
24
+ name: string;
25
+ values: Record<string, $ConstantValue>;
26
+ enums: Record<string, $ConstantEnum>;
27
+ $t: "constants";
28
+ '#enumpath': Record<string, {
29
+ _enum: $ConstantEnum;
30
+ _subs: string;
31
+ }>;
32
+ module: string;
33
+ constructor(name: string, values?: Record<string, $ConstantValue>, enums?: Record<string, $ConstantEnum>);
34
+ static merge(to: $Constants, from: $Constants): void;
35
+ }
36
+ type CompatibleMessageKey<Data, Subs extends string> = {
37
+ [K in keyof Data]: Data[K] extends Subs ? K : never;
38
+ }[keyof Data];
39
+ type ParseMessageEnumpath<Message extends $Message, Path extends string, Subs extends string> = Path extends `${infer X}.*` ? `${X}.{${CompatibleMessageKey<Message['#parsed'], Subs> & string}}` : Path;
40
+ export type MessageEnumpath<Module extends $Module, Message extends $Message, Modules extends Record<string, $Module>> = MergeUnion<{
41
+ [M in keyof Modules]: {
42
+ [K in keyof Modules[M]['constants']['#enumpath'] as M extends Module['name'] ? ParseMessageEnumpath<Message, K & string, Modules[M]['constants']['#enumpath'][K]['_subs']> : `${M & string}::${ParseMessageEnumpath<Message, K & string, Modules[M]['constants']['#enumpath'][K]['_subs']>}`]: Modules[M]['constants']['#enumpath'][K]['_enum'];
43
+ };
44
+ }[keyof Modules]>;
45
+ export type EnumName<Space extends $Space> = MergeUnion<{
46
+ [M in keyof Space['modules']]: {
47
+ [K in keyof Space['modules'][M]['constants']['enums'] as `${M & string}::${K & string}`]: Space['modules'][M]['constants']['enums'][K];
48
+ };
49
+ }[keyof Space['modules']]>;
50
+ export type EnumFromName<Space extends $Space, Name, ModuleName extends keyof Space['modules'] = Name extends `${infer X}::${string}` ? X : never, Module extends $Module = Space['modules'][ModuleName], Enums = Module['constants']['enums'], EnumName = Name extends `${string}::${infer X}` ? X : never> = Enums[EnumName & keyof Enums];
51
+ export {};