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
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.$Migration = exports.$MigrationField = void 0;
37
+ const string_1 = require("../../../../../engine/util/string");
38
+ const path = __importStar(require("path"));
39
+ const fs = __importStar(require("fs"));
40
+ const datetime_1 = require("../../../../../engine/data/datetime");
41
+ const crypto_1 = require("crypto");
42
+ class $MigrationField {
43
+ constructor(column, operation) {
44
+ this.column = column;
45
+ this.operation = operation;
46
+ }
47
+ describe() {
48
+ const col_str = (0, string_1.colored)(this.column, 'lightblue');
49
+ if ('create' in this.operation) {
50
+ const type_str = (0, string_1.colored)(this.operation.create.type, 'purple');
51
+ return `Create column ${col_str} as ${type_str}`;
52
+ }
53
+ else if ('rename' in this.operation) {
54
+ const op = this.operation.rename;
55
+ const name_str = op.name ? (0, string_1.colored)(op.name, 'lightcyan') : undefined;
56
+ return `Rename column ${col_str} to ${name_str}`;
57
+ }
58
+ else if ('alter_type' in this.operation) {
59
+ const op = this.operation.alter_type;
60
+ const from_str = op.from ? (0, string_1.colored)(op.from, 'purple') : undefined;
61
+ const to_str = op.to ? (0, string_1.colored)(op.to, 'purple') : undefined;
62
+ return `Alter column ${col_str} type from ${from_str} to ${to_str};`;
63
+ }
64
+ else if ('alter_null' in this.operation) {
65
+ const op = this.operation.alter_null;
66
+ const from_str = (0, string_1.colored)(op.from ? 'NULL' : 'NOT NULL', 'purple');
67
+ const to_str = (0, string_1.colored)(op.to ? 'NULL' : 'NOT NULL', 'purple');
68
+ return `Alter column ${col_str} from ${from_str} to ${to_str};`;
69
+ }
70
+ else if ('drop' in this.operation) {
71
+ return `Drop column ${col_str}`;
72
+ }
73
+ else if ('create_fk' in this.operation) {
74
+ const op = this.operation.create_fk;
75
+ const table_str = (0, string_1.colored)(op.table, 'lightcyan');
76
+ const field_str = (0, string_1.colored)(op.field, 'purple');
77
+ return `Create foreign key from ${col_str} to ${table_str}.${field_str}`;
78
+ }
79
+ else if ('drop_fk' in this.operation) {
80
+ const op = this.operation.drop_fk;
81
+ const table_str = (0, string_1.colored)(op.table, 'lightcyan');
82
+ const field_str = (0, string_1.colored)(op.field, 'purple');
83
+ return `Drop foreign key from ${col_str} to ${table_str}.${field_str}`;
84
+ }
85
+ else {
86
+ return (0, string_1.colored)(`Unknown: ${this.operation}`, 'lightred');
87
+ }
88
+ }
89
+ sqlUp(table_op) {
90
+ if ('create' in this.operation) {
91
+ const notNull = this.operation.create.nullable ? '' : ' NOT NULL';
92
+ if (table_op === 'create') {
93
+ return `"${this.column}" ${this.operation.create.type} ${notNull}`;
94
+ }
95
+ else {
96
+ return `ADD "${this.column}" ${this.operation.create.type} ${notNull}`;
97
+ }
98
+ }
99
+ else if ('rename' in this.operation) {
100
+ return `RENAME COLUMN "${this.column}" TO "${this.operation.rename.name}"`;
101
+ }
102
+ else if ('alter_type' in this.operation) {
103
+ return `ALTER COLUMN "${this.column}" TYPE ${this.operation.alter_type.to} USING ${this.operation.alter_type.using.up}`;
104
+ }
105
+ else if ('alter_null' in this.operation) {
106
+ return `ALTER COLUMN "${this.column}" ${this.operation.alter_null.to ? 'DROP' : 'SET'} NOT NULL`;
107
+ }
108
+ else if ('drop' in this.operation) {
109
+ return `DROP COLUMN "${this.column}"`;
110
+ }
111
+ return '';
112
+ }
113
+ sqlDown() {
114
+ if ('create' in this.operation) {
115
+ return `DROP COLUMN "${this.column}"`;
116
+ }
117
+ else if ('rename' in this.operation) {
118
+ return `RENAME COLUMN "${this.operation.rename.name}" TO "${this.column}"`;
119
+ }
120
+ else if ('alter_type' in this.operation) {
121
+ return `ALTER COLUMN "${this.column}" TYPE ${this.operation.alter_type.from} USING ${this.operation.alter_type.using.down}`;
122
+ }
123
+ else if ('alter_null' in this.operation) {
124
+ return `ALTER COLUMN "${this.column}" ${this.operation.alter_null.from ? 'DROP' : 'SET'} NOT NULL`;
125
+ }
126
+ else if ('drop' in this.operation) {
127
+ const notNull = this.operation.drop.nullable ? '' : ' NOT NULL';
128
+ const defaul = this.operation.drop.default;
129
+ return `ADD COLUMN "${this.column}" ${this.operation.drop.type}${notNull}${defaul ? (' DEFAULT ' + defaul) : ''}`;
130
+ }
131
+ return '';
132
+ }
133
+ }
134
+ exports.$MigrationField = $MigrationField;
135
+ class $Migration {
136
+ constructor(module, type, tableName, fields, description) {
137
+ this.module = module;
138
+ this.type = type;
139
+ this.tableName = tableName;
140
+ this.fields = fields;
141
+ this.description = description;
142
+ this.name = `${datetime_1.NesoiDatetime.now().epoch}_${this.tableName}`;
143
+ }
144
+ describe() {
145
+ let str = '';
146
+ str += '┌\n';
147
+ str += `│ ${(0, string_1.colored)('module: ' + this.module, 'darkgray')}\n`;
148
+ str += `│ ${(0, string_1.colored)(this.name, 'lightcyan')}\n`;
149
+ str += '└\n\n';
150
+ if (this.type === 'create') {
151
+ str += `◆ Create table ${(0, string_1.colored)(this.tableName, 'lightblue')}\n`;
152
+ }
153
+ else if (this.type === 'alter') {
154
+ str += `◆ Alter table '${this.tableName}'\n`;
155
+ }
156
+ this.fields.forEach(field => {
157
+ str += `└ ${field.describe()}\n`;
158
+ });
159
+ str += '\n';
160
+ str += `${(0, string_1.colored)('▲ UP', 'lightgreen')}:\n`;
161
+ str += this.sqlUp().join('\n');
162
+ str += '\n';
163
+ str += `${(0, string_1.colored)('▼ DOWN', 'yellow')}:\n`;
164
+ str += this.sqlDown().join('\n');
165
+ return str;
166
+ }
167
+ sqlUp() {
168
+ if (this.type === 'create') {
169
+ return [`CREATE TABLE ${this.tableName} (\n` +
170
+ this.fields.map(field => '\t' + field.sqlUp('create')).join(',\n')
171
+ + '\n)'];
172
+ }
173
+ else if (this.type === 'alter') {
174
+ return this.fields.map(field => `ALTER TABLE ${this.tableName} ` + field.sqlUp('alter'));
175
+ }
176
+ return [];
177
+ }
178
+ sqlDown() {
179
+ if (this.type === 'create') {
180
+ return [`DROP TABLE ${this.tableName}`];
181
+ }
182
+ else if (this.type === 'alter') {
183
+ return this.fields.map(field => `ALTER TABLE ${this.tableName} ` + field.sqlDown());
184
+ }
185
+ return [];
186
+ }
187
+ save(dirpath = './migrations') {
188
+ const filedir = path.join('modules', this.module, dirpath);
189
+ fs.mkdirSync(filedir, { recursive: true });
190
+ const filepath = path.join(filedir, this.name + '.ts');
191
+ let str = '';
192
+ str += 'import { migration } from \'nesoi/lib/adapters/postgres/src/migrator\';\n';
193
+ str += '\n';
194
+ str += '/**\n';
195
+ str += ` * $migration[${this.name}]\n`;
196
+ str += ' *\n';
197
+ str += ` * $type[${this.type}]\n`;
198
+ if (this.type !== 'custom') {
199
+ str += ` * $table[${this.tableName}]\n`;
200
+ str += ' *\n';
201
+ str += ' * Migration auto-generated by @nesoi/postgres. Don\'t modify it manually.\n';
202
+ }
203
+ str += ' */\n';
204
+ str += '\n';
205
+ str += 'export default migration({\n';
206
+ if (this.type !== 'custom')
207
+ str += `\thash: '${this.hash()}',\n`;
208
+ str += `\tdescription: '${this.description || ''}',\n`;
209
+ str += '\tup: ' + this.fnUp().replace(/\n/g, '\n\t') + ',\n';
210
+ str += '\tdown: ' + this.fnDown().replace(/\n/g, '\n\t') + '\n';
211
+ str += '})';
212
+ fs.writeFileSync(filepath, str);
213
+ return filepath;
214
+ }
215
+ fnUp() {
216
+ let str = '';
217
+ str += 'async ({ sql }) => {\n';
218
+ this.sqlUp().forEach(sql => {
219
+ str += '\tawait sql`\n';
220
+ str += '\t\t' + sql.replace(/\n/g, '\n\t\t') + '\n';
221
+ str += '\t`\n';
222
+ });
223
+ str += '}';
224
+ return str;
225
+ }
226
+ fnDown() {
227
+ let str = '';
228
+ str += 'async ({ sql }) => {\n';
229
+ this.sqlDown().forEach(sql => {
230
+ str += '\tawait sql`\n';
231
+ str += '\t\t' + sql.replace(/\n/g, '\n\t\t') + '\n';
232
+ str += '\t`\n';
233
+ });
234
+ str += '}';
235
+ return str;
236
+ }
237
+ hash() {
238
+ const hash = (0, crypto_1.createHash)('md5');
239
+ const up = this.fnUp().replace(/\s*/g, '');
240
+ hash.update(up);
241
+ const down = this.fnDown().replace(/\s*/g, '');
242
+ hash.update(down);
243
+ return hash.digest('hex');
244
+ }
245
+ static empty(module, name) {
246
+ return new $Migration(module, 'custom', name, []);
247
+ }
248
+ }
249
+ exports.$Migration = $Migration;
@@ -0,0 +1,19 @@
1
+ import postgres from 'postgres';
2
+ import { $Space } from "../../../../../elements";
3
+ import { AnyDaemon } from "../../../../../engine/daemon";
4
+ import { MigrationRunnerStatus } from '../runner/status';
5
+ import { $Migration } from './migration';
6
+ export type MigratorConfig = {
7
+ dirpath?: string;
8
+ postgres?: postgres.Options<any>;
9
+ };
10
+ export declare class MigrationProvider<S extends $Space> {
11
+ protected daemon: AnyDaemon;
12
+ private sql;
13
+ dirpath: string;
14
+ status: MigrationRunnerStatus;
15
+ private constructor();
16
+ static create(daemon: AnyDaemon, sql: postgres.Sql<any>): Promise<MigrationProvider<$Space>>;
17
+ generate(): Promise<$Migration[]>;
18
+ generateForBucket<ModuleName extends keyof S['modules']>(module: ModuleName, bucket: keyof S['modules'][ModuleName]['buckets'], tableName: string): Promise<$Migration | undefined>;
19
+ }
@@ -1,36 +1,36 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Migrator = void 0;
4
- const log_1 = require("../../../../engine/util/log");
5
- const runner_1 = require("./runner");
6
- const daemon_1 = require("../../../../engine/daemon");
7
- const string_1 = require("../../../../engine/util/string");
8
- const bucket_1 = require("./bucket");
9
- class Migrator {
3
+ exports.MigrationProvider = void 0;
4
+ const log_1 = require("../../../../../engine/util/log");
5
+ const runner_1 = require("../runner/runner");
6
+ const daemon_1 = require("../../../../../engine/daemon");
7
+ const postgres_bucket_adapter_1 = require("../../postgres.bucket_adapter");
8
+ const string_1 = require("../../../../../engine/util/string");
9
+ const generator_1 = require("./generator");
10
+ class MigrationProvider {
10
11
  constructor(daemon, sql, dirpath = './migrations') {
11
12
  this.daemon = daemon;
12
13
  this.sql = sql;
13
14
  this.dirpath = dirpath;
14
15
  }
15
- static async prepare(daemon, sql) {
16
- const migrator = new Migrator(daemon, sql);
17
- const oldTable = await migrator.sql `
18
- SELECT * FROM pg_catalog.pg_tables WHERE tablename = ${Migrator.MIGRATION_TABLE_NAME};
16
+ static async create(daemon, sql) {
17
+ const provider = new MigrationProvider(daemon, sql);
18
+ const oldTable = await provider.sql `
19
+ SELECT * FROM pg_catalog.pg_tables WHERE tablename = ${runner_1.MigrationRunner.MIGRATION_TABLE_NAME};
19
20
  `;
20
21
  if (!oldTable.length) {
21
- await migrator.sql `CREATE TABLE ${migrator.sql(Migrator.MIGRATION_TABLE_NAME)} (
22
+ await provider.sql `CREATE TABLE ${provider.sql(runner_1.MigrationRunner.MIGRATION_TABLE_NAME)} (
22
23
  id SERIAL PRIMARY KEY,
23
24
  module VARCHAR NOT NULL,
24
25
  name VARCHAR NOT NULL,
25
26
  description VARCHAR,
26
27
  batch INT4 NOT NULL,
27
28
  timestamp TIMESTAMP NOT NULL,
28
- hash VARCHAR NOT NULL,
29
- filehash VARCHAR NOT NULL
29
+ hash VARCHAR
30
30
  )`;
31
31
  }
32
- migrator.status = await runner_1.MigrationRunner.status(daemon, migrator.sql, migrator.dirpath);
33
- return migrator;
32
+ provider.status = await runner_1.MigrationRunner.status(daemon, provider.sql, provider.dirpath);
33
+ return provider;
34
34
  }
35
35
  async generate() {
36
36
  const modules = daemon_1.Daemon.getModules(this.daemon);
@@ -39,10 +39,12 @@ class Migrator {
39
39
  const buckets = daemon_1.Daemon.getModule(this.daemon, module.name).buckets;
40
40
  for (const bucket in buckets) {
41
41
  const schema = buckets[bucket].schema;
42
+ // Avoid external buckets
42
43
  if (schema.module !== module.name)
43
44
  continue;
45
+ // Avoid non-postgres buckets
44
46
  const adapter = buckets[bucket].adapter;
45
- if (!adapter?.tableName)
47
+ if (!(adapter instanceof postgres_bucket_adapter_1.PostgresBucketAdapter))
46
48
  continue;
47
49
  const migration = await this.generateForBucket(module.name, bucket, adapter.tableName);
48
50
  if (migration) {
@@ -53,11 +55,11 @@ class Migrator {
53
55
  return migrations;
54
56
  }
55
57
  async generateForBucket(module, bucket, tableName) {
56
- const migrator = new bucket_1.BucketMigrator(this.daemon, this.sql, module, bucket, tableName);
57
- const migration = await migrator.generate();
58
+ const generator = new generator_1.MigrationGenerator(this.daemon, this.sql, module, bucket, tableName);
59
+ const migration = await generator.generate();
58
60
  const tag = (0, string_1.colored)(`${module}::bucket:${bucket}`, 'lightcyan');
59
61
  if (!migration) {
60
- log_1.Log.info('migrator', 'bucket', `No changes detected on ${tag}.`);
62
+ log_1.Log.info('migrator', 'bucket', `No migrations for ${tag}.`);
61
63
  return undefined;
62
64
  }
63
65
  const hash = migration.hash();
@@ -68,9 +70,5 @@ class Migrator {
68
70
  }
69
71
  return migration;
70
72
  }
71
- static migration(...$) {
72
- return new runner_1.MigrationMethod(...$);
73
- }
74
73
  }
75
- exports.Migrator = Migrator;
76
- Migrator.MIGRATION_TABLE_NAME = '__nesoi_migrations';
74
+ exports.MigrationProvider = MigrationProvider;
@@ -1 +1,47 @@
1
- export { Migrator } from './migrator';
1
+ import postgres from 'postgres';
2
+ import { AnyTrxNode } from "../../../../engine/transaction/trx_node";
3
+ type MigrationFn = ($: {
4
+ sql: postgres.Sql<any>;
5
+ trx: AnyTrxNode;
6
+ }) => Promise<void>;
7
+ /**
8
+ * An entry on a bucket adapter describing one migration.
9
+ */
10
+ export type MigrationRow = {
11
+ id: number;
12
+ module: string;
13
+ name: string;
14
+ description?: string;
15
+ batch: number;
16
+ timestamp: string;
17
+ hash: string;
18
+ };
19
+ /**
20
+ * A file on disk describing one migration.
21
+ */
22
+ export type MigrationFile = {
23
+ module: string;
24
+ name: string;
25
+ path: string;
26
+ routine: MigrationRoutine;
27
+ };
28
+ /**
29
+ * A migration routine, composed of up and down methods.
30
+ */
31
+ export declare class MigrationRoutine {
32
+ hash?: string;
33
+ description?: string;
34
+ up: MigrationFn;
35
+ down: MigrationFn;
36
+ constructor($: {
37
+ hash?: string;
38
+ description?: string;
39
+ up: MigrationFn;
40
+ down: MigrationFn;
41
+ });
42
+ }
43
+ /**
44
+ * Function used on migration files to declare a routine
45
+ */
46
+ export declare function migration(...$: ConstructorParameters<typeof MigrationRoutine>): MigrationRoutine;
47
+ export {};
@@ -1,5 +1,22 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Migrator = void 0;
4
- var migrator_1 = require("./migrator");
5
- Object.defineProperty(exports, "Migrator", { enumerable: true, get: function () { return migrator_1.Migrator; } });
3
+ exports.MigrationRoutine = void 0;
4
+ exports.migration = migration;
5
+ /**
6
+ * A migration routine, composed of up and down methods.
7
+ */
8
+ class MigrationRoutine {
9
+ constructor($) {
10
+ this.hash = $.hash;
11
+ this.description = $.description;
12
+ this.up = $.up;
13
+ this.down = $.down;
14
+ }
15
+ }
16
+ exports.MigrationRoutine = MigrationRoutine;
17
+ /**
18
+ * Function used on migration files to declare a routine
19
+ */
20
+ function migration(...$) {
21
+ return new MigrationRoutine(...$);
22
+ }
@@ -0,0 +1,17 @@
1
+ import postgres from 'postgres';
2
+ import { AnyDaemon } from "../../../../../engine/daemon";
3
+ import { MigrationRunnerStatus } from './status';
4
+ import { $Migration } from '../generator/migration';
5
+ export declare class MigrationRunner {
6
+ static MIGRATION_TABLE_NAME: string;
7
+ private static scanFiles;
8
+ private static scanRows;
9
+ static status(daemon: AnyDaemon, sql: postgres.Sql<any>, migrations_dir: string): Promise<MigrationRunnerStatus>;
10
+ static up(daemon: AnyDaemon, sql: postgres.Sql<any>, mode?: 'one' | 'batch', dirpath?: string): Promise<void>;
11
+ static down(daemon: AnyDaemon, sql: postgres.Sql<any>, mode?: 'one' | 'batch', dirpath?: string): Promise<void>;
12
+ static fromSchema: {
13
+ up: (daemon: AnyDaemon, sql: postgres.Sql<any>, migration: $Migration, dirpath?: string) => Promise<void>;
14
+ };
15
+ private static migrateUp;
16
+ private static migrateDown;
17
+ }