nesoi 3.0.6 → 3.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (255) hide show
  1. package/lib/adapters/postgres/src/migrator/database.d.ts +3 -6
  2. package/lib/adapters/postgres/src/migrator/database.js +20 -20
  3. package/lib/adapters/postgres/src/migrator/generator/generator.d.ts +22 -0
  4. package/lib/adapters/postgres/src/migrator/generator/generator.js +326 -0
  5. package/lib/adapters/postgres/src/migrator/generator/migration.d.ts +66 -0
  6. package/lib/adapters/postgres/src/migrator/generator/migration.js +249 -0
  7. package/lib/adapters/postgres/src/migrator/generator/provider.d.ts +19 -0
  8. package/lib/adapters/postgres/src/migrator/{migrator.js → generator/provider.js} +23 -25
  9. package/lib/adapters/postgres/src/migrator/index.d.ts +47 -1
  10. package/lib/adapters/postgres/src/migrator/index.js +20 -3
  11. package/lib/adapters/postgres/src/migrator/runner/runner.d.ts +17 -0
  12. package/lib/adapters/postgres/src/migrator/runner/runner.js +249 -0
  13. package/lib/adapters/postgres/src/migrator/runner/status.d.ts +17 -0
  14. package/lib/adapters/postgres/src/migrator/runner/status.js +55 -0
  15. package/lib/adapters/postgres/src/postgres.cli.d.ts +11 -1
  16. package/lib/adapters/postgres/src/postgres.cli.js +34 -11
  17. package/lib/adapters/postgres/test/postgres.bucket_adapter.test.js +4 -4
  18. package/lib/compiler/apps/monolyth/stages/1_mkdir_stage.d.ts +3 -0
  19. package/lib/compiler/apps/monolyth/stages/1_mkdir_stage.js +3 -0
  20. package/lib/compiler/apps/monolyth/stages/2_build_typescript_stage.d.ts +3 -0
  21. package/lib/compiler/apps/monolyth/stages/2_build_typescript_stage.js +3 -0
  22. package/lib/compiler/apps/monolyth/stages/3_copy_types_stage.d.ts +3 -0
  23. package/lib/compiler/apps/monolyth/stages/3_copy_types_stage.js +3 -0
  24. package/lib/compiler/apps/monolyth/stages/4_dump_modules_stage.d.ts +3 -0
  25. package/lib/compiler/apps/monolyth/stages/4_dump_modules_stage.js +32 -0
  26. package/lib/compiler/apps/monolyth/stages/5_dump_cli_stage.d.ts +3 -0
  27. package/lib/compiler/apps/monolyth/stages/5_dump_cli_stage.js +3 -0
  28. package/lib/compiler/apps/monolyth/stages/6_dump_package_json_stage.d.ts +3 -0
  29. package/lib/compiler/apps/monolyth/stages/6_dump_package_json_stage.js +3 -0
  30. package/lib/compiler/elements/externals.element.d.ts +1 -1
  31. package/lib/compiler/module.js +1 -1
  32. package/lib/compiler/stages/1_scan_stage.d.ts +3 -0
  33. package/lib/compiler/stages/1_scan_stage.js +3 -0
  34. package/lib/compiler/stages/2_treeshake_stage.d.ts +3 -0
  35. package/lib/compiler/stages/2_treeshake_stage.js +3 -0
  36. package/lib/compiler/stages/3_extract_ts_stage.d.ts +3 -0
  37. package/lib/compiler/stages/3_extract_ts_stage.js +3 -0
  38. package/lib/compiler/stages/4_build_schemas_stage.d.ts +3 -0
  39. package/lib/compiler/stages/4_build_schemas_stage.js +3 -0
  40. package/lib/compiler/stages/5_inject_ts_stage.d.ts +3 -0
  41. package/lib/compiler/stages/5_inject_ts_stage.js +3 -0
  42. package/lib/compiler/stages/6_build_elements_stage.d.ts +3 -0
  43. package/lib/compiler/stages/6_build_elements_stage.js +3 -0
  44. package/lib/compiler/stages/7_dump_stage.d.ts +3 -0
  45. package/lib/compiler/stages/7_dump_stage.js +3 -0
  46. package/lib/compiler/stages/8_diagnose_stage.d.ts +3 -0
  47. package/lib/compiler/stages/8_diagnose_stage.js +3 -0
  48. package/lib/compiler/treeshake.js +3 -3
  49. package/lib/compiler/typescript/transformers/replace_import.transformer.js +8 -1
  50. package/lib/elements/blocks/block.builder.d.ts +6 -2
  51. package/lib/elements/blocks/block.builder.js +8 -4
  52. package/lib/elements/blocks/block.schema.d.ts +4 -0
  53. package/lib/elements/blocks/block.schema.js +4 -0
  54. package/lib/elements/blocks/job/internal/machine_job.builder.d.ts +6 -3
  55. package/lib/elements/blocks/job/internal/machine_job.builder.js +5 -2
  56. package/lib/elements/blocks/job/internal/machine_job.schema.d.ts +4 -0
  57. package/lib/elements/blocks/job/internal/machine_job.schema.js +4 -0
  58. package/lib/elements/blocks/job/internal/resource_job.builder.d.ts +4 -0
  59. package/lib/elements/blocks/job/internal/resource_job.builder.js +4 -0
  60. package/lib/elements/blocks/job/internal/resource_job.d.ts +4 -0
  61. package/lib/elements/blocks/job/internal/resource_job.js +4 -0
  62. package/lib/elements/blocks/job/internal/resource_job.schema.d.ts +4 -0
  63. package/lib/elements/blocks/job/internal/resource_job.schema.js +4 -0
  64. package/lib/elements/blocks/job/job.builder.d.ts +4 -0
  65. package/lib/elements/blocks/job/job.builder.js +4 -0
  66. package/lib/elements/blocks/job/job.d.ts +4 -0
  67. package/lib/elements/blocks/job/job.js +4 -0
  68. package/lib/elements/blocks/job/job.schema.d.ts +4 -0
  69. package/lib/elements/blocks/job/job.schema.js +4 -0
  70. package/lib/elements/blocks/machine/machine.builder.d.ts +4 -0
  71. package/lib/elements/blocks/machine/machine.builder.js +4 -0
  72. package/lib/elements/blocks/machine/machine.d.ts +12 -0
  73. package/lib/elements/blocks/machine/machine.js +12 -0
  74. package/lib/elements/blocks/machine/machine.schema.d.ts +16 -0
  75. package/lib/elements/blocks/machine/machine.schema.js +16 -1
  76. package/lib/elements/blocks/machine/machine_state.builder.d.ts +4 -0
  77. package/lib/elements/blocks/machine/machine_state.builder.js +4 -0
  78. package/lib/elements/blocks/machine/machine_transition.builder.d.ts +4 -0
  79. package/lib/elements/blocks/machine/machine_transition.builder.js +4 -0
  80. package/lib/elements/blocks/queue/adapters/bucket.queue_adapter.d.ts +4 -0
  81. package/lib/elements/blocks/queue/adapters/bucket.queue_adapter.js +4 -0
  82. package/lib/elements/blocks/queue/adapters/queue_adapter.d.ts +4 -0
  83. package/lib/elements/blocks/queue/adapters/queue_adapter.js +4 -0
  84. package/lib/elements/blocks/queue/queue.builder.d.ts +4 -0
  85. package/lib/elements/blocks/queue/queue.builder.js +4 -0
  86. package/lib/elements/blocks/queue/queue.schema.d.ts +4 -0
  87. package/lib/elements/blocks/queue/queue.schema.js +4 -0
  88. package/lib/elements/blocks/resource/resource.builder.d.ts +4 -0
  89. package/lib/elements/blocks/resource/resource.builder.js +4 -0
  90. package/lib/elements/blocks/resource/resource.d.ts +4 -0
  91. package/lib/elements/blocks/resource/resource.js +4 -0
  92. package/lib/elements/blocks/resource/resource.schema.d.ts +4 -0
  93. package/lib/elements/blocks/resource/resource.schema.js +4 -0
  94. package/lib/elements/edge/controller/adapters/cli.controller_adapter.d.ts +4 -0
  95. package/lib/elements/edge/controller/adapters/cli.controller_adapter.js +4 -0
  96. package/lib/elements/edge/controller/adapters/controller_adapter.d.ts +4 -0
  97. package/lib/elements/edge/controller/adapters/controller_adapter.js +4 -0
  98. package/lib/elements/edge/controller/controller.builder.d.ts +16 -0
  99. package/lib/elements/edge/controller/controller.builder.js +16 -0
  100. package/lib/elements/edge/controller/controller.d.ts +4 -0
  101. package/lib/elements/edge/controller/controller.js +4 -0
  102. package/lib/elements/edge/controller/controller.schema.d.ts +16 -0
  103. package/lib/elements/edge/controller/controller.schema.js +16 -0
  104. package/lib/elements/{blocks → edge}/externals/externals.builder.d.ts +4 -0
  105. package/lib/elements/{blocks → edge}/externals/externals.builder.js +4 -0
  106. package/lib/elements/{blocks → edge}/externals/externals.schema.d.ts +4 -0
  107. package/lib/elements/{blocks → edge}/externals/externals.schema.js +4 -0
  108. package/lib/elements/entities/bucket/adapters/bucket_adapter.d.ts +16 -11
  109. package/lib/elements/entities/bucket/adapters/bucket_adapter.js +5 -0
  110. package/lib/elements/entities/bucket/adapters/memory.bucket_adapter.d.ts +4 -0
  111. package/lib/elements/entities/bucket/adapters/memory.bucket_adapter.js +4 -0
  112. package/lib/elements/entities/bucket/adapters/memory.nql.d.ts +4 -1
  113. package/lib/elements/entities/bucket/adapters/memory.nql.js +4 -1
  114. package/lib/elements/entities/bucket/bucket.builder.d.ts +4 -0
  115. package/lib/elements/entities/bucket/bucket.builder.js +4 -0
  116. package/lib/elements/entities/bucket/bucket.d.ts +9 -2
  117. package/lib/elements/entities/bucket/bucket.js +14 -7
  118. package/lib/elements/entities/bucket/bucket.schema.d.ts +4 -0
  119. package/lib/elements/entities/bucket/bucket.schema.js +4 -0
  120. package/lib/elements/entities/bucket/cache/bucket_cache.d.ts +8 -0
  121. package/lib/elements/entities/bucket/cache/bucket_cache.js +8 -0
  122. package/lib/elements/entities/bucket/graph/bucket_graph.builder.d.ts +4 -0
  123. package/lib/elements/entities/bucket/graph/bucket_graph.builder.js +4 -0
  124. package/lib/elements/entities/bucket/graph/bucket_graph.d.ts +4 -0
  125. package/lib/elements/entities/bucket/graph/bucket_graph.js +4 -0
  126. package/lib/elements/entities/bucket/graph/bucket_graph.schema.d.ts +8 -0
  127. package/lib/elements/entities/bucket/graph/bucket_graph.schema.js +8 -0
  128. package/lib/elements/entities/bucket/graph/bucket_graph_link.builder.d.ts +8 -0
  129. package/lib/elements/entities/bucket/graph/bucket_graph_link.builder.js +8 -0
  130. package/lib/elements/entities/bucket/model/bucket_model.builder.d.ts +4 -0
  131. package/lib/elements/entities/bucket/model/bucket_model.builder.js +4 -0
  132. package/lib/elements/entities/bucket/model/bucket_model.convert.d.ts +8 -0
  133. package/lib/elements/entities/bucket/model/bucket_model.convert.js +8 -0
  134. package/lib/elements/entities/bucket/model/bucket_model.schema.d.ts +8 -0
  135. package/lib/elements/entities/bucket/model/bucket_model.schema.js +8 -0
  136. package/lib/elements/entities/bucket/model/bucket_model_field.builder.d.ts +8 -0
  137. package/lib/elements/entities/bucket/model/bucket_model_field.builder.js +8 -0
  138. package/lib/elements/entities/bucket/query/nql_compiler.d.ts +9 -0
  139. package/lib/elements/entities/bucket/query/nql_compiler.js +9 -0
  140. package/lib/elements/entities/bucket/query/nql_engine.d.ts +6 -0
  141. package/lib/elements/entities/bucket/query/nql_engine.js +6 -0
  142. package/lib/elements/entities/bucket/view/bucket_view.builder.d.ts +4 -0
  143. package/lib/elements/entities/bucket/view/bucket_view.builder.js +4 -0
  144. package/lib/elements/entities/bucket/view/bucket_view.d.ts +4 -0
  145. package/lib/elements/entities/bucket/view/bucket_view.js +10 -2
  146. package/lib/elements/entities/bucket/view/bucket_view.schema.d.ts +8 -0
  147. package/lib/elements/entities/bucket/view/bucket_view.schema.js +8 -0
  148. package/lib/elements/entities/bucket/view/bucket_view_field.builder.d.ts +8 -0
  149. package/lib/elements/entities/bucket/view/bucket_view_field.builder.js +8 -0
  150. package/lib/elements/entities/constants/constants.builder.d.ts +21 -6
  151. package/lib/elements/entities/constants/constants.builder.js +21 -6
  152. package/lib/elements/entities/constants/constants.d.ts +4 -0
  153. package/lib/elements/entities/constants/constants.js +4 -0
  154. package/lib/elements/entities/constants/constants.schema.d.ts +16 -0
  155. package/lib/elements/entities/constants/constants.schema.js +16 -0
  156. package/lib/elements/entities/drive/drive_adapter.d.ts +15 -10
  157. package/lib/elements/entities/drive/drive_adapter.js +5 -2
  158. package/lib/elements/entities/drive/local.drive_adapter.d.ts +10 -4
  159. package/lib/elements/entities/drive/local.drive_adapter.js +23 -8
  160. package/lib/elements/entities/message/message.builder.d.ts +4 -0
  161. package/lib/elements/entities/message/message.builder.js +4 -0
  162. package/lib/elements/entities/message/message.d.ts +4 -0
  163. package/lib/elements/entities/message/message.js +4 -0
  164. package/lib/elements/entities/message/message.schema.d.ts +4 -0
  165. package/lib/elements/entities/message/message.schema.js +4 -0
  166. package/lib/elements/entities/message/message_parser.d.ts +4 -0
  167. package/lib/elements/entities/message/message_parser.js +4 -0
  168. package/lib/elements/entities/message/template/message_template.builder.d.ts +4 -0
  169. package/lib/elements/entities/message/template/message_template.builder.js +4 -0
  170. package/lib/elements/entities/message/template/message_template.schema.d.ts +9 -0
  171. package/lib/elements/entities/message/template/message_template.schema.js +25 -0
  172. package/lib/elements/entities/message/template/message_template_field.builder.d.ts +8 -0
  173. package/lib/elements/entities/message/template/message_template_field.builder.js +8 -0
  174. package/lib/elements/index.d.ts +1 -1
  175. package/lib/elements/index.js +1 -1
  176. package/lib/engine/apps/app.config.d.ts +3 -0
  177. package/lib/engine/apps/app.config.js +3 -0
  178. package/lib/engine/apps/app.d.ts +3 -0
  179. package/lib/engine/apps/app.js +4 -1
  180. package/lib/engine/apps/inline.app.d.ts +3 -0
  181. package/lib/engine/apps/inline.app.js +3 -0
  182. package/lib/engine/apps/monolyth/monolyth.app.d.ts +8 -0
  183. package/lib/engine/apps/monolyth/monolyth.app.js +8 -0
  184. package/lib/engine/auth/authn.d.ts +4 -0
  185. package/lib/engine/auth/authn.js +4 -0
  186. package/lib/engine/auth/zero.authn_provider.d.ts +4 -0
  187. package/lib/engine/auth/zero.authn_provider.js +4 -0
  188. package/lib/engine/cli/cli.d.ts +7 -1
  189. package/lib/engine/cli/cli.js +10 -1
  190. package/lib/engine/cli/cli_adapter.d.ts +11 -1
  191. package/lib/engine/cli/cli_adapter.js +10 -1
  192. package/lib/engine/cli/cli_input.d.ts +4 -0
  193. package/lib/engine/cli/cli_input.js +4 -0
  194. package/lib/engine/cli/ui.d.ts +14 -2
  195. package/lib/engine/cli/ui.js +10 -6
  196. package/lib/engine/daemon.d.ts +93 -6
  197. package/lib/engine/daemon.js +90 -7
  198. package/lib/engine/data/date.d.ts +4 -0
  199. package/lib/engine/data/date.js +4 -0
  200. package/lib/engine/data/datetime.d.ts +4 -0
  201. package/lib/engine/data/datetime.js +4 -0
  202. package/lib/engine/data/decimal.d.ts +4 -0
  203. package/lib/engine/data/decimal.js +4 -0
  204. package/lib/engine/data/file.d.ts +23 -23
  205. package/lib/engine/data/file.js +66 -29
  206. package/lib/engine/data/json.d.ts +4 -0
  207. package/lib/engine/data/json.js +4 -0
  208. package/lib/engine/data/tree.d.ts +4 -0
  209. package/lib/engine/data/tree.js +4 -0
  210. package/lib/engine/dependency.d.ts +63 -2
  211. package/lib/engine/dependency.js +52 -0
  212. package/lib/engine/module.d.ts +109 -9
  213. package/lib/engine/module.js +110 -25
  214. package/lib/engine/space.d.ts +163 -10
  215. package/lib/engine/space.js +184 -22
  216. package/lib/engine/transaction/nodes/bucket.trx_node.d.ts +12 -0
  217. package/lib/engine/transaction/nodes/bucket.trx_node.js +12 -0
  218. package/lib/engine/transaction/nodes/bucket_query.trx_node.d.ts +4 -0
  219. package/lib/engine/transaction/nodes/bucket_query.trx_node.js +4 -0
  220. package/lib/engine/transaction/nodes/job.trx_node.d.ts +4 -0
  221. package/lib/engine/transaction/nodes/job.trx_node.js +4 -0
  222. package/lib/engine/transaction/nodes/machine.trx_node.d.ts +4 -0
  223. package/lib/engine/transaction/nodes/machine.trx_node.js +4 -0
  224. package/lib/engine/transaction/nodes/queue.trx_node.d.ts +4 -0
  225. package/lib/engine/transaction/nodes/queue.trx_node.js +4 -0
  226. package/lib/engine/transaction/nodes/resource.trx_node.d.ts +4 -0
  227. package/lib/engine/transaction/nodes/resource.trx_node.js +4 -0
  228. package/lib/engine/transaction/trx.d.ts +8 -0
  229. package/lib/engine/transaction/trx.js +8 -0
  230. package/lib/engine/transaction/trx_engine.d.ts +4 -0
  231. package/lib/engine/transaction/trx_engine.js +4 -3
  232. package/lib/engine/transaction/trx_node.d.ts +4 -0
  233. package/lib/engine/transaction/trx_node.js +4 -0
  234. package/lib/engine/tree.d.ts +54 -2
  235. package/lib/engine/tree.js +54 -2
  236. package/lib/engine/util/mime.d.ts +4 -4
  237. package/lib/engine/util/mime.js +7 -9
  238. package/lib/schema.d.ts +1 -1
  239. package/package.json +1 -1
  240. package/tsconfig.build.tsbuildinfo +1 -1
  241. package/lib/adapters/postgres/src/migrator/bucket.d.ts +0 -20
  242. package/lib/adapters/postgres/src/migrator/bucket.js +0 -184
  243. package/lib/adapters/postgres/src/migrator/migration.d.ts +0 -57
  244. package/lib/adapters/postgres/src/migrator/migration.js +0 -203
  245. package/lib/adapters/postgres/src/migrator/migrator.d.ts +0 -21
  246. package/lib/adapters/postgres/src/migrator/runner.d.ts +0 -71
  247. package/lib/adapters/postgres/src/migrator/runner.js +0 -271
  248. package/lib/elements/entities/bucket/adapters/memory.bucket_query copy.d.ts +0 -0
  249. package/lib/elements/entities/bucket/adapters/memory.bucket_query copy.js +0 -218
  250. package/lib/elements/entities/bucket/adapters/slow_memory.bucket_adapter.d.ts +0 -0
  251. package/lib/elements/entities/bucket/adapters/slow_memory.bucket_adapter.js +0 -47
  252. package/lib/engine/apps/monolyth/monolyth.cli.d.ts +0 -45
  253. package/lib/engine/apps/monolyth/monolyth.cli.js +0 -362
  254. package/lib/engine/util/cache.d.ts +0 -6
  255. package/lib/engine/util/cache.js +0 -20
@@ -0,0 +1,249 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ var _a;
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.MigrationRunner = void 0;
41
+ const fs = __importStar(require("fs"));
42
+ const path = __importStar(require("path"));
43
+ const string_1 = require("../../../../../engine/util/string");
44
+ const log_1 = require("../../../../../engine/util/log");
45
+ const datetime_1 = require("../../../../../engine/data/datetime");
46
+ const daemon_1 = require("../../../../../engine/daemon");
47
+ const trx_1 = require("../../../../../engine/transaction/trx");
48
+ const status_1 = require("./status");
49
+ const __1 = require("..");
50
+ const ui_1 = __importDefault(require("../../../../../engine/cli/ui"));
51
+ class MigrationRunner {
52
+ // Scan (to generate status)
53
+ static async scanFiles(daemon, migrations_dir) {
54
+ const modules = daemon_1.Daemon.getModules(daemon);
55
+ // Read migration files of each module
56
+ const files = [];
57
+ for (const module of modules) {
58
+ const modulepath = path.join('modules', module.name, migrations_dir);
59
+ if (!fs.existsSync(modulepath))
60
+ continue;
61
+ fs.readdirSync(modulepath, { withFileTypes: true })
62
+ .forEach(node => {
63
+ const nodePath = path.resolve(modulepath, node.name);
64
+ if (nodePath.endsWith('.d.ts')) {
65
+ return;
66
+ }
67
+ files.push({
68
+ module: module.name,
69
+ name: node.name,
70
+ path: nodePath
71
+ });
72
+ });
73
+ }
74
+ // Extract migration routine of each file
75
+ const migrationFiles = [];
76
+ for (const file of files) {
77
+ const { default: routine } = await Promise.resolve(`${file.path}`).then(s => __importStar(require(s)));
78
+ if (routine instanceof __1.MigrationRoutine) {
79
+ const name = file.name.replace(/'.[t|j]s'/, '');
80
+ migrationFiles.push({
81
+ ...file,
82
+ name,
83
+ routine
84
+ });
85
+ }
86
+ else {
87
+ log_1.Log.warn('migrator', 'scan', `File at ${file.path} doesn't appear to be a migration. Skipping it.`);
88
+ }
89
+ }
90
+ return migrationFiles;
91
+ }
92
+ static async scanRows(sql) {
93
+ const db = await sql `
94
+ SELECT * FROM ${sql(_a.MIGRATION_TABLE_NAME)}
95
+ ORDER BY id
96
+ `;
97
+ return db;
98
+ }
99
+ static async status(daemon, sql, migrations_dir) {
100
+ const migrationFiles = await _a.scanFiles(daemon, migrations_dir);
101
+ const migrationRows = await _a.scanRows(sql);
102
+ return new status_1.MigrationRunnerStatus(migrationFiles, migrationRows);
103
+ }
104
+ // Public Up / Down
105
+ static async up(daemon, sql, mode = 'one', dirpath = 'migrations') {
106
+ let status = await _a.status(daemon, sql, dirpath);
107
+ console.log(status.describe());
108
+ const pending = status.items.filter(item => item.state === 'pending');
109
+ if (!pending.length) {
110
+ log_1.Log.info('migrator', 'up', 'No migrations to run.');
111
+ return;
112
+ }
113
+ const n = (mode === 'one' ? 1 : pending.length).toString();
114
+ const confirm = await ui_1.default.yesOrNo(`Run ${(0, string_1.colored)(n, 'green')} migration(s) ${(0, string_1.colored)('▲ UP', 'lightgreen')}?`);
115
+ if (!confirm) {
116
+ return;
117
+ }
118
+ await sql.begin(async (sql) => {
119
+ if (mode === 'one') {
120
+ const migration = pending[0];
121
+ await this.migrateUp(daemon, sql, migration, status.batch + 1);
122
+ }
123
+ else {
124
+ for (const migration of pending) {
125
+ await this.migrateUp(daemon, sql, migration, status.batch + 1);
126
+ }
127
+ }
128
+ });
129
+ status = await _a.status(daemon, sql, dirpath);
130
+ console.log(status.describe());
131
+ }
132
+ static async down(daemon, sql, mode = 'one', dirpath = 'migrations') {
133
+ let status = await _a.status(daemon, sql, dirpath);
134
+ console.log(status.describe());
135
+ const lastBatch = status.items.filter(item => item.batch === status.batch);
136
+ if (!lastBatch.length) {
137
+ log_1.Log.info('migrator', 'down', 'No migrations to rollback.');
138
+ return;
139
+ }
140
+ const n = mode === 'one' ? 'one' : 'last batch of';
141
+ const confirm = await ui_1.default.yesOrNo(`Rollback ${(0, string_1.colored)(n, 'green')} migration(s) ${(0, string_1.colored)('▼ DOWN', 'red')}?`);
142
+ if (!confirm) {
143
+ return;
144
+ }
145
+ await sql.begin(async (sql) => {
146
+ if (mode === 'one') {
147
+ const migration = lastBatch.at(-1);
148
+ await this.migrateDown(daemon, sql, migration);
149
+ }
150
+ else {
151
+ for (const migration of lastBatch) {
152
+ await this.migrateDown(daemon, sql, migration);
153
+ }
154
+ }
155
+ });
156
+ status = await _a.status(daemon, sql, dirpath);
157
+ console.log(status.describe());
158
+ }
159
+ // Implementation Up/Down
160
+ static async migrateUp(daemon, sql, migration, batch) {
161
+ log_1.Log.info('migrator', 'up', `Running migration ${(0, string_1.colored)('▲ UP', 'lightgreen')} ${(0, string_1.colored)(migration.name, 'lightblue')}`);
162
+ const status = await daemon.trx(migration.module)
163
+ .run(async (trx) => {
164
+ trx_1.Trx.set(trx, 'sql', sql);
165
+ await migration.routine.up({
166
+ sql,
167
+ trx
168
+ });
169
+ });
170
+ if (status.state !== 'ok') {
171
+ throw new Error('Migration failed. Rolling back all batch changes.');
172
+ }
173
+ const row = {
174
+ module: migration.module,
175
+ name: migration.name,
176
+ description: migration.routine.description,
177
+ batch,
178
+ timestamp: datetime_1.NesoiDatetime.now(),
179
+ hash: migration.hash || null
180
+ };
181
+ if (migration.description) {
182
+ row.description = migration.description;
183
+ }
184
+ await sql `
185
+ INSERT INTO ${sql(_a.MIGRATION_TABLE_NAME)}
186
+ ${sql(row)}
187
+ `;
188
+ }
189
+ static async migrateDown(daemon, sql, migration) {
190
+ const name = (0, string_1.colored)(migration.name, 'lightblue');
191
+ log_1.Log.info('migrator', 'up', `Running migration ${(0, string_1.colored)('▼ DOWN', 'yellow')} ${name}`);
192
+ if (migration.state === 'lost') {
193
+ const del = await ui_1.default.yesOrNo(`The migration ${name} is ${(0, string_1.colored)('lost', 'red')}, skip and delete it? ${(0, string_1.colored)('Warning: this might cause inconsistencies', 'red')}.`);
194
+ if (!del) {
195
+ throw new Error(`Migration ${migration.name} was lost, unable to migrate down.`);
196
+ }
197
+ }
198
+ else {
199
+ const status = await daemon.trx(migration.module)
200
+ .run(async (trx) => {
201
+ trx_1.Trx.set(trx, 'sql', sql);
202
+ await migration.routine.down({
203
+ sql,
204
+ trx
205
+ });
206
+ });
207
+ if (status.state !== 'ok') {
208
+ throw new Error('Migration failed. Rolling back all batch changes.');
209
+ }
210
+ }
211
+ await sql `
212
+ DELETE FROM ${sql(_a.MIGRATION_TABLE_NAME)}
213
+ WHERE id = ${migration.id}
214
+ `;
215
+ }
216
+ }
217
+ exports.MigrationRunner = MigrationRunner;
218
+ _a = MigrationRunner;
219
+ MigrationRunner.MIGRATION_TABLE_NAME = '__nesoi_migrations';
220
+ MigrationRunner.fromSchema = {
221
+ up: async (daemon, sql, migration, dirpath = 'migrations') => {
222
+ let status = await _a.status(daemon, sql, dirpath);
223
+ console.log(status.describe());
224
+ const routine = new __1.MigrationRoutine({
225
+ description: migration.description,
226
+ up: async ($) => {
227
+ for (const sql of migration.sqlUp()) {
228
+ await $.sql.unsafe(sql);
229
+ }
230
+ },
231
+ down: async ($) => {
232
+ for (const sql of migration.sqlDown()) {
233
+ await $.sql.unsafe(sql);
234
+ }
235
+ }
236
+ });
237
+ const mig = {
238
+ ...migration,
239
+ state: 'pending',
240
+ hash: routine.hash,
241
+ routine
242
+ };
243
+ await sql.begin(async (sql) => {
244
+ await _a.migrateUp(daemon, sql, mig, status.batch + 1);
245
+ });
246
+ status = await _a.status(daemon, sql, dirpath);
247
+ console.log(status.describe());
248
+ }
249
+ };
@@ -0,0 +1,17 @@
1
+ import { MigrationFile, MigrationRoutine, MigrationRow } from '..';
2
+ export declare class MigrationRunnerStatus {
3
+ items: {
4
+ state: 'done' | 'pending' | 'lost' | 'modified';
5
+ id?: number;
6
+ module: string;
7
+ name: string;
8
+ description?: string;
9
+ batch?: number;
10
+ timestamp?: string;
11
+ hash?: string;
12
+ routine?: MigrationRoutine;
13
+ }[];
14
+ batch: number;
15
+ constructor(migrationFiles: MigrationFile[], migrationRows: MigrationRow[]);
16
+ describe(): string;
17
+ }
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MigrationRunnerStatus = void 0;
4
+ const string_1 = require("../../../../../engine/util/string");
5
+ class MigrationRunnerStatus {
6
+ constructor(migrationFiles, migrationRows) {
7
+ this.items = migrationRows.map(migration => ({
8
+ ...migration,
9
+ state: 'lost'
10
+ }));
11
+ migrationFiles.forEach(migration => {
12
+ const hash = migration.routine.hash;
13
+ const old = this.items.find(item => item.name === migration.name);
14
+ if (old) {
15
+ if (!old.hash || old.hash === hash) {
16
+ old.state = 'done';
17
+ }
18
+ else {
19
+ old.state = 'modified';
20
+ }
21
+ old.routine = migration.routine;
22
+ }
23
+ else {
24
+ this.items.push({
25
+ id: undefined,
26
+ module: migration.module,
27
+ name: migration.name,
28
+ description: migration.routine.description,
29
+ batch: undefined,
30
+ hash,
31
+ state: 'pending',
32
+ routine: migration.routine
33
+ });
34
+ }
35
+ });
36
+ const lastBatch = Math.max(...this.items.map(item => item.batch || 0), 0);
37
+ this.batch = lastBatch;
38
+ }
39
+ describe() {
40
+ let str = '';
41
+ str += `◆ ${(0, string_1.colored)('Migration Status', 'lightblue')}\n`;
42
+ this.items.forEach(item => {
43
+ const state = {
44
+ 'done': () => (0, string_1.colored)('done', 'green'),
45
+ 'pending': () => (0, string_1.colored)('pending', 'yellow'),
46
+ 'lost': () => (0, string_1.colored)('lost', 'red'),
47
+ 'modified': () => (0, string_1.colored)('modified', 'brown'),
48
+ }[item.state]();
49
+ const module = (0, string_1.colored)(item.module, 'lightcyan');
50
+ str += `└ ${item.id || '*'}\t${state}\t${module} ${item.name} @ ${item.batch || '...'}\n`;
51
+ });
52
+ return str;
53
+ }
54
+ }
55
+ exports.MigrationRunnerStatus = MigrationRunnerStatus;
@@ -1,6 +1,7 @@
1
1
  import { CLIAdapter, CLICommand } from "../../../engine/cli/cli_adapter";
2
2
  import { PostgresProvider } from './postgres.provider';
3
3
  import { AnyDaemon } from "../../../engine/daemon";
4
+ import { CLI } from "../../../engine/cli/cli";
4
5
  export declare class cmd_check extends CLICommand {
5
6
  provider: PostgresProvider;
6
7
  constructor(provider: PostgresProvider);
@@ -23,6 +24,14 @@ export declare class cmd_status extends CLICommand {
23
24
  constructor(provider: PostgresProvider);
24
25
  run(daemon: AnyDaemon): Promise<void>;
25
26
  }
27
+ export declare class cmd_make_empty_migration extends CLICommand {
28
+ cli: CLI;
29
+ provider: PostgresProvider;
30
+ constructor(cli: CLI, provider: PostgresProvider);
31
+ run(daemon: AnyDaemon, $: {
32
+ name?: string;
33
+ }): Promise<void>;
34
+ }
26
35
  export declare class cmd_make_migrations extends CLICommand {
27
36
  provider: PostgresProvider;
28
37
  constructor(provider: PostgresProvider);
@@ -61,6 +70,7 @@ export declare class cmd_import_csv extends CLICommand {
61
70
  run(daemon: AnyDaemon, input: Record<string, any>): Promise<void>;
62
71
  }
63
72
  export declare class PostgresCLI extends CLIAdapter {
73
+ cli: CLI;
64
74
  provider: PostgresProvider;
65
- constructor(provider: PostgresProvider);
75
+ constructor(cli: CLI, provider: PostgresProvider);
66
76
  }
@@ -3,15 +3,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.PostgresCLI = exports.cmd_import_csv = exports.cmd_query = exports.cmd_migrate_one_down = exports.cmd_migrate_down = exports.cmd_migrate_one_up = exports.cmd_migrate_up = exports.cmd_make_migrations = exports.cmd_status = exports.cmd_create_db = exports.cmd_tables = exports.cmd_check = void 0;
6
+ exports.PostgresCLI = exports.cmd_import_csv = exports.cmd_query = exports.cmd_migrate_one_down = exports.cmd_migrate_down = exports.cmd_migrate_one_up = exports.cmd_migrate_up = exports.cmd_make_migrations = exports.cmd_make_empty_migration = exports.cmd_status = exports.cmd_create_db = exports.cmd_tables = exports.cmd_check = void 0;
7
7
  const cli_adapter_1 = require("../../../engine/cli/cli_adapter");
8
8
  const database_1 = require("./migrator/database");
9
+ const provider_1 = require("./migrator/generator/provider");
9
10
  const ui_1 = __importDefault(require("../../../engine/cli/ui"));
10
- const migrator_1 = require("./migrator");
11
11
  const daemon_1 = require("../../../engine/daemon");
12
- const runner_1 = require("./migrator/runner");
13
12
  const postgres_bucket_adapter_1 = require("./postgres.bucket_adapter");
14
13
  const csv_1 = require("./migrator/csv");
14
+ const runner_1 = require("./migrator/runner/runner");
15
+ const migration_1 = require("./migrator/generator/migration");
15
16
  class cmd_check extends cli_adapter_1.CLICommand {
16
17
  constructor(provider) {
17
18
  super('any', 'check', 'check', 'Check if the connection to PostgreSQL is working properly');
@@ -23,7 +24,7 @@ class cmd_check extends cli_adapter_1.CLICommand {
23
24
  ui_1.default.result('ok', 'Connection to PostgreSQL working.');
24
25
  else
25
26
  ui_1.default.result('error', 'Connection to PostgreSQL not working.', res);
26
- await migrator_1.Migrator.prepare(daemon, this.provider.sql);
27
+ await provider_1.MigrationProvider.create(daemon, this.provider.sql);
27
28
  }
28
29
  }
29
30
  exports.cmd_check = cmd_check;
@@ -60,7 +61,7 @@ class cmd_create_db extends cli_adapter_1.CLICommand {
60
61
  catch (e) {
61
62
  ui_1.default.result('error', `Failed to create database ${name}`, e);
62
63
  }
63
- await migrator_1.Migrator.prepare(daemon, this.provider.sql);
64
+ await provider_1.MigrationProvider.create(daemon, this.provider.sql);
64
65
  }
65
66
  }
66
67
  exports.cmd_create_db = cmd_create_db;
@@ -70,24 +71,40 @@ class cmd_status extends cli_adapter_1.CLICommand {
70
71
  this.provider = provider;
71
72
  }
72
73
  async run(daemon) {
73
- const migrator = await migrator_1.Migrator.prepare(daemon, this.provider.sql);
74
+ const migrator = await provider_1.MigrationProvider.create(daemon, this.provider.sql);
74
75
  console.log(migrator.status.describe());
75
76
  }
76
77
  }
77
78
  exports.cmd_status = cmd_status;
79
+ class cmd_make_empty_migration extends cli_adapter_1.CLICommand {
80
+ constructor(cli, provider) {
81
+ super('any', 'make empty migration', 'make empty migration( NAME)', 'Generate an empty migration to be filled by the user', /(\w*)/, ['name']);
82
+ this.cli = cli;
83
+ this.provider = provider;
84
+ }
85
+ async run(daemon, $) {
86
+ const module = await ui_1.default.select('Pick a module to create the migration into:', daemon_1.Daemon.getModules(daemon).map(m => m.name));
87
+ const name = $.name || await ui_1.default.question('Migration name');
88
+ const migration = migration_1.$Migration.empty(module.value, name);
89
+ const filepath = migration.save();
90
+ this.cli.openEditor(filepath);
91
+ }
92
+ }
93
+ exports.cmd_make_empty_migration = cmd_make_empty_migration;
78
94
  class cmd_make_migrations extends cli_adapter_1.CLICommand {
79
95
  constructor(provider) {
80
96
  super('any', 'make migrations', 'make migrations( TAG)', 'Generate migrations for the bucket(s) using PostgresBucketAdapter', /(\w*)/, ['tag']);
81
97
  this.provider = provider;
82
98
  }
83
99
  async run(daemon, $) {
100
+ console.clear();
84
101
  // TODO: restrict by tag
85
- const migrator = await migrator_1.Migrator.prepare(daemon, this.provider.sql);
102
+ const migrator = await provider_1.MigrationProvider.create(daemon, this.provider.sql);
86
103
  const migrations = await migrator.generate();
87
104
  for (const migration of migrations) {
88
- console.log(migration.describe());
89
105
  migration.save();
90
106
  }
107
+ await runner_1.MigrationRunner.up(daemon, this.provider.sql, 'batch');
91
108
  }
92
109
  }
93
110
  exports.cmd_make_migrations = cmd_make_migrations;
@@ -97,6 +114,7 @@ class cmd_migrate_up extends cli_adapter_1.CLICommand {
97
114
  this.provider = provider;
98
115
  }
99
116
  async run(daemon) {
117
+ console.clear();
100
118
  await runner_1.MigrationRunner.up(daemon, this.provider.sql, 'batch');
101
119
  }
102
120
  }
@@ -107,6 +125,7 @@ class cmd_migrate_one_up extends cli_adapter_1.CLICommand {
107
125
  this.provider = provider;
108
126
  }
109
127
  async run(daemon) {
128
+ console.clear();
110
129
  await runner_1.MigrationRunner.up(daemon, this.provider.sql, 'one');
111
130
  }
112
131
  }
@@ -117,6 +136,7 @@ class cmd_migrate_down extends cli_adapter_1.CLICommand {
117
136
  this.provider = provider;
118
137
  }
119
138
  async run(daemon) {
139
+ console.clear();
120
140
  await runner_1.MigrationRunner.down(daemon, this.provider.sql, 'batch');
121
141
  }
122
142
  }
@@ -127,6 +147,7 @@ class cmd_migrate_one_down extends cli_adapter_1.CLICommand {
127
147
  this.provider = provider;
128
148
  }
129
149
  async run(daemon) {
150
+ console.clear();
130
151
  await runner_1.MigrationRunner.down(daemon, this.provider.sql, 'one');
131
152
  }
132
153
  }
@@ -158,13 +179,14 @@ class cmd_import_csv extends cli_adapter_1.CLICommand {
158
179
  })))
159
180
  .flat(1);
160
181
  const bucket = await ui_1.default.select('Bucket', buckets, b => b.name);
161
- await csv_1.CSV.import(this.provider.sql, bucket.tableName, input.path);
182
+ await csv_1.CSV.import(this.provider.sql, bucket.value.tableName, input.path);
162
183
  }
163
184
  }
164
185
  exports.cmd_import_csv = cmd_import_csv;
165
186
  class PostgresCLI extends cli_adapter_1.CLIAdapter {
166
- constructor(provider) {
167
- super();
187
+ constructor(cli, provider) {
188
+ super(cli);
189
+ this.cli = cli;
168
190
  this.provider = provider;
169
191
  this.commands = {
170
192
  'check': new cmd_check(provider),
@@ -172,6 +194,7 @@ class PostgresCLI extends cli_adapter_1.CLIAdapter {
172
194
  'create db': new cmd_create_db(provider),
173
195
  'status': new cmd_status(provider),
174
196
  'make migrations': new cmd_make_migrations(provider),
197
+ 'make empty migration': new cmd_make_empty_migration(cli, provider),
175
198
  'migrate up': new cmd_migrate_up(provider),
176
199
  'migrate one up': new cmd_migrate_one_up(provider),
177
200
  'migrate down': new cmd_migrate_down(provider),
@@ -6,9 +6,9 @@ const log_1 = require("../../../engine/util/log");
6
6
  const inline_app_1 = require("../../../engine/apps/inline.app");
7
7
  const postgres_provider_1 = require("../src/postgres.provider");
8
8
  const postgres_bucket_adapter_1 = require("../src/postgres.bucket_adapter");
9
- const migrator_1 = require("../src/migrator");
10
- const runner_1 = require("../src/migrator/runner");
11
9
  const datetime_1 = require("../../../engine/data/datetime");
10
+ const provider_1 = require("../src/migrator/generator/provider");
11
+ const runner_1 = require("../src/migrator/runner/runner");
12
12
  log_1.Log.level = 'warn';
13
13
  // TODO: read this from env
14
14
  const PostgresConfig = {
@@ -72,11 +72,11 @@ async function setup() {
72
72
  // TODO: encapsulate this
73
73
  // await Database.createDatabase('NESOI_TEST', PostgresConfig.connection, { if_exists: 'delete' });
74
74
  const pg = postgres_provider_1.PostgresProvider.make('pg', PostgresConfig).up();
75
- const migrator = await migrator_1.Migrator.prepare(daemon, pg.sql);
75
+ const migrator = await provider_1.MigrationProvider.create(daemon, pg.sql);
76
76
  const migration = await migrator.generateForBucket('MODULE', 'BUCKET', 'nesoi_test_table');
77
77
  if (migration) {
78
78
  migration.name = 'postgres.bucket_adapter.test';
79
- await runner_1.MigrationRunner.injectUp(daemon, pg.sql, migration);
79
+ await runner_1.MigrationRunner.fromSchema.up(daemon, pg.sql, migration);
80
80
  }
81
81
  // migration?.save();
82
82
  // await MigrationRunner.up(daemon, 'one', PostgresConfig);
@@ -3,6 +3,9 @@ import { MonolythCompiler } from '../monolyth_compiler';
3
3
  /**
4
4
  * [Monolyth Compiler Stage #1]
5
5
  * Create the directory structure
6
+ *
7
+ * @category Monolyth Compiler
8
+ * @subcategory Stages
6
9
  */
7
10
  export declare class MkdirStage {
8
11
  private monolyth;
@@ -41,6 +41,9 @@ const log_1 = require("../../../../engine/util/log");
41
41
  /**
42
42
  * [Monolyth Compiler Stage #1]
43
43
  * Create the directory structure
44
+ *
45
+ * @category Monolyth Compiler
46
+ * @subcategory Stages
44
47
  */
45
48
  class MkdirStage {
46
49
  constructor(monolyth, app) {
@@ -3,6 +3,9 @@ import { MonolythCompiler } from '../monolyth_compiler';
3
3
  /**
4
4
  * [Monolyth Compiler Stage #2]
5
5
  * Build typescript files to build folder
6
+ *
7
+ * @category Monolyth Compiler
8
+ * @subcategory Stages
6
9
  */
7
10
  export declare class BuildTypescriptStage {
8
11
  private monolyth;
@@ -43,6 +43,9 @@ const app_1 = require("../../../../engine/apps/app");
43
43
  /**
44
44
  * [Monolyth Compiler Stage #2]
45
45
  * Build typescript files to build folder
46
+ *
47
+ * @category Monolyth Compiler
48
+ * @subcategory Stages
46
49
  */
47
50
  class BuildTypescriptStage {
48
51
  constructor(monolyth, app) {
@@ -3,6 +3,9 @@ import { MonolythCompiler } from '../monolyth_compiler';
3
3
  /**
4
4
  * [Monolyth Compiler Stage #3]
5
5
  * Copy type declarations to build/types folder
6
+ *
7
+ * @category Monolyth Compiler
8
+ * @subcategory Stages
6
9
  */
7
10
  export declare class CopyTypesStage {
8
11
  private monolyth;
@@ -43,6 +43,9 @@ const app_1 = require("../../../../engine/apps/app");
43
43
  /**
44
44
  * [Monolyth Compiler Stage #3]
45
45
  * Copy type declarations to build/types folder
46
+ *
47
+ * @category Monolyth Compiler
48
+ * @subcategory Stages
46
49
  */
47
50
  class CopyTypesStage {
48
51
  constructor(monolyth, app) {
@@ -3,6 +3,9 @@ import { MonolythCompiler } from '../monolyth_compiler';
3
3
  /**
4
4
  * [Monolyth Compiler Stage #4]
5
5
  * Dump modules to build/modules folder.
6
+ *
7
+ * @category Monolyth Compiler
8
+ * @subcategory Stages
6
9
  */
7
10
  export declare class DumpModulesStage {
8
11
  private monolyth;
@@ -41,6 +41,9 @@ const app_1 = require("../../../../engine/apps/app");
41
41
  /**
42
42
  * [Monolyth Compiler Stage #4]
43
43
  * Dump modules to build/modules folder.
44
+ *
45
+ * @category Monolyth Compiler
46
+ * @subcategory Stages
44
47
  */
45
48
  class DumpModulesStage {
46
49
  constructor(monolyth, app) {
@@ -61,6 +64,35 @@ class DumpModulesStage {
61
64
  let str = `const { Module } = require('${module.compiler.config?.nesoiPath || 'nesoi'}/lib/engine/module');\n`;
62
65
  str += `exports.default = new Module('${module.lowName}')\n`;
63
66
  str += ' .inject({';
67
+ const externals = module.module.schema.externals;
68
+ if (externals) {
69
+ str += '\n externals: {';
70
+ if (Object.keys(externals.buckets).length) {
71
+ str += '\n buckets: {';
72
+ for (const b in externals.buckets) {
73
+ const dep = externals.buckets[b];
74
+ str += `\n '${b}': ${JSON.stringify(dep, undefined, 2).replace(/\n/g, '\n ')},`;
75
+ }
76
+ str += '\n },';
77
+ }
78
+ if (Object.keys(externals.jobs).length) {
79
+ str += '\n jobs: {\n';
80
+ for (const b in externals.jobs) {
81
+ const dep = externals.jobs[b];
82
+ str += `\n '${b}': ${JSON.stringify(dep, undefined, 2).replace(/\n/g, '\n ')},`;
83
+ }
84
+ str += '\n },';
85
+ }
86
+ if (Object.keys(externals.machines).length) {
87
+ str += '\n machines: {\n';
88
+ for (const b in externals.machines) {
89
+ const dep = externals.machines[b];
90
+ str += `\n '${b}': ${JSON.stringify(dep, undefined, 2).replace(/\n/g, '\n ')},`;
91
+ }
92
+ str += '\n },';
93
+ }
94
+ str += '\n },';
95
+ }
64
96
  const constants = module.module.schema.constants;
65
97
  if (constants && (Object.values(constants.values).length || Object.values(constants.enums).length)) {
66
98
  str += `\n constants: require('./${module.lowName}/constants__${module.lowName}').default,`;
@@ -3,6 +3,9 @@ import { MonolythCompiler } from '../monolyth_compiler';
3
3
  /**
4
4
  * [Monolyth Compiler Stage #5]
5
5
  * Dump the cli.js file to build/bin folder.
6
+ *
7
+ * @category Monolyth Compiler
8
+ * @subcategory Stages
6
9
  */
7
10
  export declare class DumpCLIStage {
8
11
  private monolyth;
@@ -40,6 +40,9 @@ const log_1 = require("../../../../engine/util/log");
40
40
  /**
41
41
  * [Monolyth Compiler Stage #5]
42
42
  * Dump the cli.js file to build/bin folder.
43
+ *
44
+ * @category Monolyth Compiler
45
+ * @subcategory Stages
43
46
  */
44
47
  class DumpCLIStage {
45
48
  constructor(monolyth, app) {