nesoi 3.0.8 → 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 (254) 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 +3 -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/elements/blocks/block.builder.d.ts +6 -2
  50. package/lib/elements/blocks/block.builder.js +8 -4
  51. package/lib/elements/blocks/block.schema.d.ts +4 -0
  52. package/lib/elements/blocks/block.schema.js +4 -0
  53. package/lib/elements/blocks/job/internal/machine_job.builder.d.ts +6 -3
  54. package/lib/elements/blocks/job/internal/machine_job.builder.js +5 -2
  55. package/lib/elements/blocks/job/internal/machine_job.schema.d.ts +4 -0
  56. package/lib/elements/blocks/job/internal/machine_job.schema.js +4 -0
  57. package/lib/elements/blocks/job/internal/resource_job.builder.d.ts +4 -0
  58. package/lib/elements/blocks/job/internal/resource_job.builder.js +4 -0
  59. package/lib/elements/blocks/job/internal/resource_job.d.ts +4 -0
  60. package/lib/elements/blocks/job/internal/resource_job.js +4 -0
  61. package/lib/elements/blocks/job/internal/resource_job.schema.d.ts +4 -0
  62. package/lib/elements/blocks/job/internal/resource_job.schema.js +4 -0
  63. package/lib/elements/blocks/job/job.builder.d.ts +4 -0
  64. package/lib/elements/blocks/job/job.builder.js +4 -0
  65. package/lib/elements/blocks/job/job.d.ts +4 -0
  66. package/lib/elements/blocks/job/job.js +4 -0
  67. package/lib/elements/blocks/job/job.schema.d.ts +4 -0
  68. package/lib/elements/blocks/job/job.schema.js +4 -0
  69. package/lib/elements/blocks/machine/machine.builder.d.ts +4 -0
  70. package/lib/elements/blocks/machine/machine.builder.js +4 -0
  71. package/lib/elements/blocks/machine/machine.d.ts +12 -0
  72. package/lib/elements/blocks/machine/machine.js +12 -0
  73. package/lib/elements/blocks/machine/machine.schema.d.ts +16 -0
  74. package/lib/elements/blocks/machine/machine.schema.js +16 -1
  75. package/lib/elements/blocks/machine/machine_state.builder.d.ts +4 -0
  76. package/lib/elements/blocks/machine/machine_state.builder.js +4 -0
  77. package/lib/elements/blocks/machine/machine_transition.builder.d.ts +4 -0
  78. package/lib/elements/blocks/machine/machine_transition.builder.js +4 -0
  79. package/lib/elements/blocks/queue/adapters/bucket.queue_adapter.d.ts +4 -0
  80. package/lib/elements/blocks/queue/adapters/bucket.queue_adapter.js +4 -0
  81. package/lib/elements/blocks/queue/adapters/queue_adapter.d.ts +4 -0
  82. package/lib/elements/blocks/queue/adapters/queue_adapter.js +4 -0
  83. package/lib/elements/blocks/queue/queue.builder.d.ts +4 -0
  84. package/lib/elements/blocks/queue/queue.builder.js +4 -0
  85. package/lib/elements/blocks/queue/queue.schema.d.ts +4 -0
  86. package/lib/elements/blocks/queue/queue.schema.js +4 -0
  87. package/lib/elements/blocks/resource/resource.builder.d.ts +4 -0
  88. package/lib/elements/blocks/resource/resource.builder.js +4 -0
  89. package/lib/elements/blocks/resource/resource.d.ts +4 -0
  90. package/lib/elements/blocks/resource/resource.js +4 -0
  91. package/lib/elements/blocks/resource/resource.schema.d.ts +4 -0
  92. package/lib/elements/blocks/resource/resource.schema.js +4 -0
  93. package/lib/elements/edge/controller/adapters/cli.controller_adapter.d.ts +4 -0
  94. package/lib/elements/edge/controller/adapters/cli.controller_adapter.js +4 -0
  95. package/lib/elements/edge/controller/adapters/controller_adapter.d.ts +4 -0
  96. package/lib/elements/edge/controller/adapters/controller_adapter.js +4 -0
  97. package/lib/elements/edge/controller/controller.builder.d.ts +16 -0
  98. package/lib/elements/edge/controller/controller.builder.js +16 -0
  99. package/lib/elements/edge/controller/controller.d.ts +4 -0
  100. package/lib/elements/edge/controller/controller.js +4 -0
  101. package/lib/elements/edge/controller/controller.schema.d.ts +16 -0
  102. package/lib/elements/edge/controller/controller.schema.js +16 -0
  103. package/lib/elements/{blocks → edge}/externals/externals.builder.d.ts +4 -0
  104. package/lib/elements/{blocks → edge}/externals/externals.builder.js +4 -0
  105. package/lib/elements/{blocks → edge}/externals/externals.schema.d.ts +4 -0
  106. package/lib/elements/{blocks → edge}/externals/externals.schema.js +4 -0
  107. package/lib/elements/entities/bucket/adapters/bucket_adapter.d.ts +16 -11
  108. package/lib/elements/entities/bucket/adapters/bucket_adapter.js +5 -0
  109. package/lib/elements/entities/bucket/adapters/memory.bucket_adapter.d.ts +4 -0
  110. package/lib/elements/entities/bucket/adapters/memory.bucket_adapter.js +4 -0
  111. package/lib/elements/entities/bucket/adapters/memory.nql.d.ts +4 -1
  112. package/lib/elements/entities/bucket/adapters/memory.nql.js +4 -1
  113. package/lib/elements/entities/bucket/bucket.builder.d.ts +4 -0
  114. package/lib/elements/entities/bucket/bucket.builder.js +4 -0
  115. package/lib/elements/entities/bucket/bucket.d.ts +9 -2
  116. package/lib/elements/entities/bucket/bucket.js +14 -7
  117. package/lib/elements/entities/bucket/bucket.schema.d.ts +4 -0
  118. package/lib/elements/entities/bucket/bucket.schema.js +4 -0
  119. package/lib/elements/entities/bucket/cache/bucket_cache.d.ts +8 -0
  120. package/lib/elements/entities/bucket/cache/bucket_cache.js +8 -0
  121. package/lib/elements/entities/bucket/graph/bucket_graph.builder.d.ts +4 -0
  122. package/lib/elements/entities/bucket/graph/bucket_graph.builder.js +4 -0
  123. package/lib/elements/entities/bucket/graph/bucket_graph.d.ts +4 -0
  124. package/lib/elements/entities/bucket/graph/bucket_graph.js +4 -0
  125. package/lib/elements/entities/bucket/graph/bucket_graph.schema.d.ts +8 -0
  126. package/lib/elements/entities/bucket/graph/bucket_graph.schema.js +8 -0
  127. package/lib/elements/entities/bucket/graph/bucket_graph_link.builder.d.ts +8 -0
  128. package/lib/elements/entities/bucket/graph/bucket_graph_link.builder.js +8 -0
  129. package/lib/elements/entities/bucket/model/bucket_model.builder.d.ts +4 -0
  130. package/lib/elements/entities/bucket/model/bucket_model.builder.js +4 -0
  131. package/lib/elements/entities/bucket/model/bucket_model.convert.d.ts +8 -0
  132. package/lib/elements/entities/bucket/model/bucket_model.convert.js +8 -0
  133. package/lib/elements/entities/bucket/model/bucket_model.schema.d.ts +8 -0
  134. package/lib/elements/entities/bucket/model/bucket_model.schema.js +8 -0
  135. package/lib/elements/entities/bucket/model/bucket_model_field.builder.d.ts +8 -0
  136. package/lib/elements/entities/bucket/model/bucket_model_field.builder.js +8 -0
  137. package/lib/elements/entities/bucket/query/nql_compiler.d.ts +9 -0
  138. package/lib/elements/entities/bucket/query/nql_compiler.js +9 -0
  139. package/lib/elements/entities/bucket/query/nql_engine.d.ts +6 -0
  140. package/lib/elements/entities/bucket/query/nql_engine.js +6 -0
  141. package/lib/elements/entities/bucket/view/bucket_view.builder.d.ts +4 -0
  142. package/lib/elements/entities/bucket/view/bucket_view.builder.js +4 -0
  143. package/lib/elements/entities/bucket/view/bucket_view.d.ts +4 -0
  144. package/lib/elements/entities/bucket/view/bucket_view.js +10 -2
  145. package/lib/elements/entities/bucket/view/bucket_view.schema.d.ts +8 -0
  146. package/lib/elements/entities/bucket/view/bucket_view.schema.js +8 -0
  147. package/lib/elements/entities/bucket/view/bucket_view_field.builder.d.ts +8 -0
  148. package/lib/elements/entities/bucket/view/bucket_view_field.builder.js +8 -0
  149. package/lib/elements/entities/constants/constants.builder.d.ts +21 -6
  150. package/lib/elements/entities/constants/constants.builder.js +21 -6
  151. package/lib/elements/entities/constants/constants.d.ts +4 -0
  152. package/lib/elements/entities/constants/constants.js +4 -0
  153. package/lib/elements/entities/constants/constants.schema.d.ts +16 -0
  154. package/lib/elements/entities/constants/constants.schema.js +16 -0
  155. package/lib/elements/entities/drive/drive_adapter.d.ts +15 -10
  156. package/lib/elements/entities/drive/drive_adapter.js +5 -2
  157. package/lib/elements/entities/drive/local.drive_adapter.d.ts +10 -4
  158. package/lib/elements/entities/drive/local.drive_adapter.js +23 -8
  159. package/lib/elements/entities/message/message.builder.d.ts +4 -0
  160. package/lib/elements/entities/message/message.builder.js +4 -0
  161. package/lib/elements/entities/message/message.d.ts +4 -0
  162. package/lib/elements/entities/message/message.js +4 -0
  163. package/lib/elements/entities/message/message.schema.d.ts +4 -0
  164. package/lib/elements/entities/message/message.schema.js +4 -0
  165. package/lib/elements/entities/message/message_parser.d.ts +4 -0
  166. package/lib/elements/entities/message/message_parser.js +4 -0
  167. package/lib/elements/entities/message/template/message_template.builder.d.ts +4 -0
  168. package/lib/elements/entities/message/template/message_template.builder.js +4 -0
  169. package/lib/elements/entities/message/template/message_template.schema.d.ts +9 -0
  170. package/lib/elements/entities/message/template/message_template.schema.js +25 -0
  171. package/lib/elements/entities/message/template/message_template_field.builder.d.ts +8 -0
  172. package/lib/elements/entities/message/template/message_template_field.builder.js +8 -0
  173. package/lib/elements/index.d.ts +1 -1
  174. package/lib/elements/index.js +1 -1
  175. package/lib/engine/apps/app.config.d.ts +3 -0
  176. package/lib/engine/apps/app.config.js +3 -0
  177. package/lib/engine/apps/app.d.ts +3 -0
  178. package/lib/engine/apps/app.js +4 -1
  179. package/lib/engine/apps/inline.app.d.ts +3 -0
  180. package/lib/engine/apps/inline.app.js +3 -0
  181. package/lib/engine/apps/monolyth/monolyth.app.d.ts +8 -0
  182. package/lib/engine/apps/monolyth/monolyth.app.js +8 -0
  183. package/lib/engine/auth/authn.d.ts +4 -0
  184. package/lib/engine/auth/authn.js +4 -0
  185. package/lib/engine/auth/zero.authn_provider.d.ts +4 -0
  186. package/lib/engine/auth/zero.authn_provider.js +4 -0
  187. package/lib/engine/cli/cli.d.ts +7 -1
  188. package/lib/engine/cli/cli.js +10 -1
  189. package/lib/engine/cli/cli_adapter.d.ts +11 -1
  190. package/lib/engine/cli/cli_adapter.js +10 -1
  191. package/lib/engine/cli/cli_input.d.ts +4 -0
  192. package/lib/engine/cli/cli_input.js +4 -0
  193. package/lib/engine/cli/ui.d.ts +14 -2
  194. package/lib/engine/cli/ui.js +10 -6
  195. package/lib/engine/daemon.d.ts +93 -6
  196. package/lib/engine/daemon.js +90 -7
  197. package/lib/engine/data/date.d.ts +4 -0
  198. package/lib/engine/data/date.js +4 -0
  199. package/lib/engine/data/datetime.d.ts +4 -0
  200. package/lib/engine/data/datetime.js +4 -0
  201. package/lib/engine/data/decimal.d.ts +4 -0
  202. package/lib/engine/data/decimal.js +4 -0
  203. package/lib/engine/data/file.d.ts +23 -23
  204. package/lib/engine/data/file.js +66 -29
  205. package/lib/engine/data/json.d.ts +4 -0
  206. package/lib/engine/data/json.js +4 -0
  207. package/lib/engine/data/tree.d.ts +4 -0
  208. package/lib/engine/data/tree.js +4 -0
  209. package/lib/engine/dependency.d.ts +63 -2
  210. package/lib/engine/dependency.js +52 -0
  211. package/lib/engine/module.d.ts +108 -8
  212. package/lib/engine/module.js +107 -22
  213. package/lib/engine/space.d.ts +163 -10
  214. package/lib/engine/space.js +184 -22
  215. package/lib/engine/transaction/nodes/bucket.trx_node.d.ts +12 -0
  216. package/lib/engine/transaction/nodes/bucket.trx_node.js +12 -0
  217. package/lib/engine/transaction/nodes/bucket_query.trx_node.d.ts +4 -0
  218. package/lib/engine/transaction/nodes/bucket_query.trx_node.js +4 -0
  219. package/lib/engine/transaction/nodes/job.trx_node.d.ts +4 -0
  220. package/lib/engine/transaction/nodes/job.trx_node.js +4 -0
  221. package/lib/engine/transaction/nodes/machine.trx_node.d.ts +4 -0
  222. package/lib/engine/transaction/nodes/machine.trx_node.js +4 -0
  223. package/lib/engine/transaction/nodes/queue.trx_node.d.ts +4 -0
  224. package/lib/engine/transaction/nodes/queue.trx_node.js +4 -0
  225. package/lib/engine/transaction/nodes/resource.trx_node.d.ts +4 -0
  226. package/lib/engine/transaction/nodes/resource.trx_node.js +4 -0
  227. package/lib/engine/transaction/trx.d.ts +8 -0
  228. package/lib/engine/transaction/trx.js +8 -0
  229. package/lib/engine/transaction/trx_engine.d.ts +4 -0
  230. package/lib/engine/transaction/trx_engine.js +4 -3
  231. package/lib/engine/transaction/trx_node.d.ts +4 -0
  232. package/lib/engine/transaction/trx_node.js +4 -0
  233. package/lib/engine/tree.d.ts +54 -2
  234. package/lib/engine/tree.js +54 -2
  235. package/lib/engine/util/mime.d.ts +4 -4
  236. package/lib/engine/util/mime.js +7 -9
  237. package/lib/schema.d.ts +1 -1
  238. package/package.json +1 -1
  239. package/tsconfig.build.tsbuildinfo +1 -1
  240. package/lib/adapters/postgres/src/migrator/bucket.d.ts +0 -20
  241. package/lib/adapters/postgres/src/migrator/bucket.js +0 -184
  242. package/lib/adapters/postgres/src/migrator/migration.d.ts +0 -57
  243. package/lib/adapters/postgres/src/migrator/migration.js +0 -203
  244. package/lib/adapters/postgres/src/migrator/migrator.d.ts +0 -21
  245. package/lib/adapters/postgres/src/migrator/runner.d.ts +0 -71
  246. package/lib/adapters/postgres/src/migrator/runner.js +0 -271
  247. package/lib/elements/entities/bucket/adapters/memory.bucket_query copy.d.ts +0 -0
  248. package/lib/elements/entities/bucket/adapters/memory.bucket_query copy.js +0 -218
  249. package/lib/elements/entities/bucket/adapters/slow_memory.bucket_adapter.d.ts +0 -0
  250. package/lib/elements/entities/bucket/adapters/slow_memory.bucket_adapter.js +0 -47
  251. package/lib/engine/apps/monolyth/monolyth.cli.d.ts +0 -45
  252. package/lib/engine/apps/monolyth/monolyth.cli.js +0 -362
  253. package/lib/engine/util/cache.d.ts +0 -6
  254. package/lib/engine/util/cache.js +0 -20
@@ -1,271 +0,0 @@
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.MigrationRunner = exports.MigrationStatus = exports.MigrationMethod = void 0;
37
- const fs = __importStar(require("fs"));
38
- const path = __importStar(require("path"));
39
- const migrator_1 = require("./migrator");
40
- const crypto_1 = require("crypto");
41
- const string_1 = require("../../../../engine/util/string");
42
- const log_1 = require("../../../../engine/util/log");
43
- const datetime_1 = require("../../../../engine/data/datetime");
44
- const daemon_1 = require("../../../../engine/daemon");
45
- const trx_1 = require("../../../../engine/transaction/trx");
46
- class MigrationMethod {
47
- constructor($) {
48
- this.description = $.description;
49
- this.up = $.up;
50
- this.down = $.down;
51
- }
52
- }
53
- exports.MigrationMethod = MigrationMethod;
54
- class MigrationStatus {
55
- constructor(fileMigrations, dbMigrations) {
56
- this.items = dbMigrations.map(migration => ({
57
- ...migration,
58
- state: 'lost'
59
- }));
60
- fileMigrations.forEach(migration => {
61
- const file = fs.readFileSync(migration.path).toString();
62
- const filehash = (0, crypto_1.createHash)('md5').update(file).digest('hex');
63
- const old = this.items.find(item => item.name === migration.name);
64
- if (old) {
65
- if (old.filehash === filehash) {
66
- old.state = 'done';
67
- old.method = migration.method;
68
- }
69
- }
70
- else {
71
- this.items.push({
72
- id: undefined,
73
- module: migration.module,
74
- name: migration.name,
75
- description: migration.method.description,
76
- batch: undefined,
77
- hash: migration.hash,
78
- filehash,
79
- state: 'pending',
80
- method: migration.method
81
- });
82
- }
83
- });
84
- const lastBatch = Math.max(...this.items.map(item => item.batch || 0), 0);
85
- this.batch = lastBatch;
86
- }
87
- describe() {
88
- let str = '';
89
- str += `◆ ${(0, string_1.colored)('Migration Status', 'lightblue')}\n`;
90
- this.items.forEach(item => {
91
- const state = {
92
- 'done': () => (0, string_1.colored)('done', 'green'),
93
- 'pending': () => (0, string_1.colored)('pending', 'yellow'),
94
- 'lost': () => (0, string_1.colored)('lost', 'brown'),
95
- }[item.state]();
96
- const module = (0, string_1.colored)(item.module, 'lightcyan');
97
- str += `└ ${item.id || '*'}\t${state}\t${module} ${item.name} @ ${item.batch || '...'}\n`;
98
- });
99
- return str;
100
- }
101
- }
102
- exports.MigrationStatus = MigrationStatus;
103
- class MigrationRunner {
104
- constructor(dirpath = './migrations') {
105
- this.dirpath = dirpath;
106
- this.migrations = [];
107
- }
108
- static async scanFiles(daemon, dirpath) {
109
- const modules = daemon_1.Daemon.getModules(daemon);
110
- const files = [];
111
- for (const module of modules) {
112
- const modulepath = path.join('modules', module.name, dirpath);
113
- if (!fs.existsSync(modulepath))
114
- continue;
115
- fs.readdirSync(modulepath, { withFileTypes: true })
116
- .forEach(node => {
117
- const nodePath = path.resolve(modulepath, node.name);
118
- if (nodePath.endsWith('.d.ts')) {
119
- return;
120
- }
121
- files.push({
122
- module: module.name,
123
- name: node.name,
124
- path: nodePath
125
- });
126
- });
127
- }
128
- const migrations = [];
129
- for (const file of files) {
130
- const contents = fs.readFileSync(file.path).toString();
131
- const hash = contents.match(/\$hash\[(.*)\]/)?.[1];
132
- if (!hash) {
133
- log_1.Log.error('migrator', 'prepare', `Unable to read hash of migration at ${file.path}`);
134
- continue;
135
- }
136
- const { default: method } = await Promise.resolve(`${file.path}`).then(s => __importStar(require(s)));
137
- if (method instanceof MigrationMethod) {
138
- const name = file.name.replace('.ts', '').replace('.js', '');
139
- migrations.push({ module: file.module, name, path: file.path, hash, method });
140
- }
141
- }
142
- return migrations;
143
- }
144
- static async scanDb(sql) {
145
- const db = await sql `
146
- SELECT * FROM ${sql(migrator_1.Migrator.MIGRATION_TABLE_NAME)}
147
- ORDER BY id
148
- `;
149
- return db;
150
- }
151
- static async status(daemon, sql, dirpath) {
152
- const fileMigrations = await MigrationRunner.scanFiles(daemon, dirpath);
153
- const dbMigrations = await MigrationRunner.scanDb(sql);
154
- return new MigrationStatus(fileMigrations, dbMigrations);
155
- }
156
- static async up(daemon, sql, mode = 'one', dirpath = './migrations') {
157
- let status = await MigrationRunner.status(daemon, sql, dirpath);
158
- console.log(status.describe());
159
- const pending = status.items.filter(item => item.state === 'pending');
160
- if (!pending.length) {
161
- log_1.Log.info('migrator', 'up', 'No migrations to run.');
162
- return;
163
- }
164
- await sql.begin(async (sql) => {
165
- if (mode === 'one') {
166
- const migration = pending[0];
167
- await this.migrateUp(daemon, sql, migration, status.batch + 1);
168
- }
169
- else {
170
- for (const migration of pending) {
171
- await this.migrateUp(daemon, sql, migration, status.batch + 1);
172
- }
173
- }
174
- });
175
- status = await MigrationRunner.status(daemon, sql, dirpath);
176
- console.log(status.describe());
177
- }
178
- static async down(daemon, sql, mode = 'one', dirpath = './migrations') {
179
- let status = await MigrationRunner.status(daemon, sql, dirpath);
180
- console.log(status.describe());
181
- const lastBatch = status.items.filter(item => item.batch === status.batch);
182
- if (!lastBatch.length) {
183
- log_1.Log.info('migrator', 'down', 'No migrations to rollback.');
184
- return;
185
- }
186
- await sql.begin(async (sql) => {
187
- if (mode === 'one') {
188
- const migration = lastBatch.at(-1);
189
- await this.migrateDown(daemon, sql, migration);
190
- }
191
- else {
192
- for (const migration of lastBatch) {
193
- await this.migrateDown(daemon, sql, migration);
194
- }
195
- }
196
- });
197
- status = await MigrationRunner.status(daemon, sql, dirpath);
198
- console.log(status.describe());
199
- }
200
- static async injectUp(daemon, sql, migration, dirpath = './migrations') {
201
- let status = await MigrationRunner.status(daemon, sql, dirpath);
202
- console.log(status.describe());
203
- const mig = {
204
- ...migration,
205
- state: 'pending',
206
- hash: migration.hash(),
207
- filehash: '',
208
- method: {
209
- up: async ($) => {
210
- await $.sql.unsafe(migration.sqlUp());
211
- },
212
- down: async ($) => {
213
- await $.sql.unsafe(migration.sqlDown());
214
- }
215
- }
216
- };
217
- await sql.begin(async (sql) => {
218
- await this.migrateUp(daemon, sql, mig, status.batch + 1);
219
- });
220
- status = await MigrationRunner.status(daemon, sql, dirpath);
221
- console.log(status.describe());
222
- }
223
- static async migrateUp(daemon, sql, migration, batch) {
224
- log_1.Log.info('migrator', 'up', `Running migration ${(0, string_1.colored)('▲ UP', 'lightgreen')} ${(0, string_1.colored)(migration.name, 'lightblue')}`);
225
- const status = await daemon.trx(migration.module)
226
- .run(async (trx) => {
227
- trx_1.Trx.set(trx, 'sql', sql);
228
- await migration.method.up({
229
- sql,
230
- trx
231
- });
232
- });
233
- if (status.state !== 'ok') {
234
- throw new Error('Migration failed. Rolling back all batch changes.');
235
- }
236
- const row = {
237
- module: migration.module,
238
- name: migration.name,
239
- batch,
240
- timestamp: datetime_1.NesoiDatetime.now(),
241
- hash: migration.hash,
242
- filehash: migration.filehash
243
- };
244
- if (migration.description) {
245
- row.description = migration.description;
246
- }
247
- await sql `
248
- INSERT INTO ${sql(migrator_1.Migrator.MIGRATION_TABLE_NAME)}
249
- ${sql(row)}
250
- `;
251
- }
252
- static async migrateDown(daemon, sql, migration) {
253
- log_1.Log.info('migrator', 'up', `Running migration ${(0, string_1.colored)('▼ DOWN', 'yellow')} ${(0, string_1.colored)(migration.name, 'lightblue')}`);
254
- const status = await daemon.trx(migration.module)
255
- .run(async (trx) => {
256
- trx_1.Trx.set(trx, 'sql', sql);
257
- await migration.method.down({
258
- sql,
259
- trx
260
- });
261
- });
262
- if (status.state !== 'ok') {
263
- throw new Error('Migration failed. Rolling back all batch changes.');
264
- }
265
- await sql `
266
- DELETE FROM ${sql(migrator_1.Migrator.MIGRATION_TABLE_NAME)}
267
- WHERE id = ${migration.id}
268
- `;
269
- }
270
- }
271
- exports.MigrationRunner = MigrationRunner;
@@ -1,218 +0,0 @@
1
- "use strict";
2
- // import { AnyTrxNode } from '~/engine/transaction/trx_node';
3
- // import { NesoiObj } from '~/engine/data/obj';
4
- // import { NesoiError } from '~/engine/data/error';
5
- // import { Tree } from '~/engine/data/tree';
6
- // import { $BucketView } from '../view/bucket_view.schema';
7
- // import { BucketQuery } from '../query/bucket_query';
8
- // import { BucketAdapter } from './bucket_adapter';
9
- // import { MemoryBucketAdapter } from './memory.bucket_adapter';
10
- // /**
11
- // * This is a slow implementation of the query engine for a Memory Bucket.
12
- // *
13
- // * It goes through all objects and applies all rules. If one returns false,
14
- // * it skips and goes to the next.
15
- // */
16
- // export class MemoryBucketQuery extends BucketQuery {
17
- // async run<Obj extends NesoiObj, V extends $BucketView>(
18
- // adapter: BucketAdapter<Obj>,
19
- // trx: AnyTrxNode,
20
- // view: V,
21
- // query: $BucketQuery,
22
- // pagination?: NQL_Pagination
23
- // ) {
24
- // const filtered: Obj[] = [];
25
- // await this.parse(trx, view, query);
26
- // const memory = adapter as MemoryBucketAdapter<Obj>;
27
- // for (const id in memory.data) {
28
- // const obj = (memory.data as any)[id] as Obj;
29
- // const match = await this.checkObj(view, obj, query);
30
- // if (match) {
31
- // filtered.push(obj);
32
- // }
33
- // }
34
- // return filtered;
35
- // }
36
- // private async checkObj<Obj extends NesoiObj, V extends $BucketView>(
37
- // view: V,
38
- // obj: Obj,
39
- // query: $BucketQuery
40
- // ) {
41
- // for (const term of query.or) {
42
- // const match = ('$t' in term) && term.$t === 'bucket.query.rule'
43
- // ? await this.applyRule(view, obj, term)
44
- // : await this.checkObj(view, obj, term);
45
- // if (match) {
46
- // return true;
47
- // }
48
- // }
49
- // for (const term of query.and) {
50
- // const match = ('$t' in term) && term.$t === 'bucket.query.rule'
51
- // ? await this.applyRule(view, obj, term)
52
- // : await this.checkObj(view, obj, term);
53
- // if (!match) {
54
- // return false;
55
- // }
56
- // }
57
- // return true;
58
- // }
59
- // private async applyRule<Obj extends NesoiObj, V extends $BucketView>(
60
- // view: V,
61
- // obj: Obj,
62
- // rule: $BucketQueryRule
63
- // ) {
64
- // const field = rule.viewField;
65
- // const objVal = Tree.get(obj, rule.path);
66
- // let res;
67
- // switch (field.type) {
68
- // case 'id':
69
- // res = await this.applyIdRule(objVal, rule); break;
70
- // case 'int':
71
- // case 'float':
72
- // res = await this.applyNumberRule(objVal, rule); break;
73
- // case 'string':
74
- // res = await this.applyStringRule(objVal, rule); break;
75
- // case 'boolean':
76
- // res = await this.applyBooleanRule(objVal, rule); break;
77
- // // TODO
78
- // // case 'list':
79
- // // return this.applyListRule(objVal, rule);
80
- // // case 'obj':
81
- // // return this.applyObjRule(objVal, rule);
82
- // }
83
- // if (rule.not) {
84
- // res = !res;
85
- // }
86
- // return res;
87
- // }
88
- // private async applyIdRule(
89
- // objVal: number|string,
90
- // rule: $BucketQueryRule
91
- // ) {
92
- // switch (rule.op) {
93
- // case '==':
94
- // if (typeof rule.parsedValue !== 'number' && typeof rule.parsedValue !== 'string')
95
- // throw NesoiError.Bucket.Query.InvalidRuleValueType(rule.path, 'id');
96
- // return objVal === rule.parsedValue;
97
- // case 'in':
98
- // if (!Array.isArray(rule.parsedValue))
99
- // throw NesoiError.Bucket.Query.InvalidRuleValueType(rule.path, 'id[]');
100
- // return (rule.parsedValue as (number|string)[]).includes(objVal);
101
- // case 'present':
102
- // return (objVal !== undefined) === rule.parsedValue;
103
- // }
104
- // }
105
- // private async applyNumberRule(
106
- // objVal: number | number[],
107
- // rule: $BucketQueryRule
108
- // ) {
109
- // const isNumber = typeof objVal === 'number';
110
- // const isNumberList = Array.isArray(objVal) && !objVal.some(v => typeof v !== 'number');
111
- // if (!isNumber && !isNumberList) {
112
- // return false;
113
- // }
114
- // switch (rule.op) {
115
- // case '<':
116
- // return (objVal as number) < (rule.parsedValue as number);
117
- // case '<=':
118
- // return (objVal as number) <= (rule.parsedValue as number);
119
- // case '>':
120
- // return (objVal as number) > (rule.parsedValue as number);
121
- // case '>=':
122
- // return (objVal as number) >= (rule.parsedValue as number);
123
- // case '==':
124
- // return (objVal as number) === (rule.parsedValue as number);
125
- // case 'in':
126
- // return (rule.parsedValue as number[]).includes(objVal as number);
127
- // case 'contains':
128
- // return (rule.parsedValue as boolean[]).includes(rule.parsedValue as boolean);
129
- // case 'contains_any':
130
- // return (rule.parsedValue as boolean[]).some(v => (rule.parsedValue as boolean[]).includes(v));
131
- // case 'present':
132
- // return (objVal !== undefined) === rule.parsedValue;
133
- // }
134
- // }
135
- // private async applyStringRule(
136
- // objVal: string | string[],
137
- // rule: $BucketQueryRule
138
- // ) {
139
- // const isString = typeof objVal === 'string';
140
- // const isStringList = Array.isArray(objVal) && !objVal.some(v => typeof v !== 'string');
141
- // if (!isString && !isStringList) {
142
- // return false;
143
- // }
144
- // switch (rule.op) {
145
- // case '==':
146
- // if (rule.case_sensitive) {
147
- // return objVal === rule.parsedValue;
148
- // }
149
- // return (objVal as string).toLowerCase() === (rule.parsedValue as string).toLowerCase()
150
- // case 'contains':
151
- // if (rule.case_sensitive) {
152
- // return objVal.includes(rule.parsedValue as string);
153
- // }
154
- // return (objVal as string).toLowerCase().includes((rule.parsedValue as string).toLowerCase());
155
- // case 'contains_any':
156
- // if (rule.case_sensitive) {
157
- // return (rule.parsedValue as string[]).some(v => objVal.includes(v.toString()));
158
- // }
159
- // return (rule.parsedValue as string[])
160
- // .map(o => o.toString().toLowerCase())
161
- // .some(v => objVal.includes(v.toString()));
162
- // case 'in':
163
- // return (rule.parsedValue as string|string[]).includes(objVal as string);
164
- // case 'present':
165
- // return (objVal !== undefined) === rule.parsedValue;
166
- // }
167
- // }
168
- // private async applyBooleanRule(
169
- // objVal: boolean | boolean[],
170
- // rule: $BucketQueryRule
171
- // ) {
172
- // const isBoolean = typeof objVal === 'boolean';
173
- // const isBooleanList = Array.isArray(objVal) && !objVal.some(v => typeof v !== 'boolean');
174
- // if (!isBoolean && !isBooleanList) {
175
- // return false;
176
- // }
177
- // switch (rule.op) {
178
- // case '==':
179
- // return objVal === rule.parsedValue;
180
- // case 'in':
181
- // return (rule.parsedValue as boolean[]).includes(objVal as boolean);
182
- // case 'contains':
183
- // return (objVal as boolean[]).includes(rule.parsedValue as boolean);
184
- // case 'contains_any':
185
- // return (rule.parsedValue as boolean[]).some(v => (objVal as boolean[]).includes(v));
186
- // case 'present':
187
- // return (objVal !== undefined) === rule.parsedValue;
188
- // }
189
- // }
190
- // // private async applyObjRule<Obj extends NesoiObj, V extends $BucketView>(
191
- // // objVal: Record<string, any>,
192
- // // rule: $BucketQueryRule
193
- // // ) {
194
- // // if (typeof objVal !== 'object' && !Array.isArray(objVal)) {
195
- // // return false;
196
- // // }
197
- // // switch (rule.op) {
198
- // // // case '==':
199
- // // // if (typeof rule.parsedValue !== 'object' && !Array.isArray(rule.parsedValue))
200
- // // // throw NesoiError.Bucket.Query.InvalidRuleValueType(rule.path, 'object');
201
- // // // return objVal === rule.parsedValue;
202
- // // case 'contains':
203
- // // if (typeof rule.parsedValue !== 'string')
204
- // // throw NesoiError.Bucket.Query.InvalidRuleValueType(rule.path, 'string');
205
- // // return Object.keys(objVal).includes(rule.parsedValue);
206
- // // // case 'contains_any':
207
- // // // if (!Array.isArray(rule.parsedValue))
208
- // // // throw NesoiError.Bucket.Query.InvalidRuleValueType(rule.path, 'object');
209
- // // // return rule.parsedValue.some(v => Object.keys(objVal).includes(v));
210
- // // // case 'in':
211
- // // // if (!Array.isArray(rule.parsedValue))
212
- // // // throw NesoiError.Bucket.Query.InvalidRuleValueType(rule.path, 'object');
213
- // // // return (rule.parsedValue as Record<string, any>[]).includes(objVal);
214
- // // case 'present':
215
- // // return objVal !== undefined;
216
- // // }
217
- // // }
218
- // }
@@ -1,47 +0,0 @@
1
- "use strict";
2
- // import { BucketAdapterConfig } from './bucket_adapter';
3
- // import { MemoryBucketAdapter } from './memory.bucket_adapter';
4
- // import { $Bucket } from '../bucket.schema';
5
- // import { AnyTrxNode } from '~/engine/transaction/trx_node';
6
- // import { NQL_AnyQuery, NQL_Pagination } from '../query/nql.schema';
7
- // export class SlowMemoryBucketAdapter<
8
- // B extends $Bucket,
9
- // Obj extends B['#data']
10
- // > extends MemoryBucketAdapter<B, Obj> {
11
- // constructor(
12
- // public schema: $Bucket,
13
- // protected timeout: number,
14
- // data: Record<Obj['id'], Obj> = {} as any,
15
- // config?: BucketAdapterConfig
16
- // ) {
17
- // super(schema, data, config);
18
- // }
19
- // private wrap<T extends Promise<any>>(scale: number, fn: () => T): T {
20
- // return new Promise((resolve, reject) => {
21
- // setTimeout(() => {
22
- // fn()
23
- // .then(resolve)
24
- // .catch(reject);
25
- // }, this.timeout*scale);
26
- // }) as any;
27
- // }
28
- // /* Read operations */
29
- // index(trx: AnyTrxNode) {
30
- // return this.wrap(5, () => super.index(trx));
31
- // }
32
- // get(trx: AnyTrxNode, id: Obj['id']) {
33
- // return this.wrap(1, () => super.get(trx, id));
34
- // }
35
- // async query<
36
- // MetadataOnly extends boolean
37
- // >(
38
- // trx: AnyTrxNode,
39
- // query: NQL_AnyQuery,
40
- // pagination?: NQL_Pagination,
41
- // config?: {
42
- // metadataOnly: MetadataOnly
43
- // }
44
- // ): Promise<MetadataOnly extends true ? { id: Obj['id'], [x: string]: any }[] : Obj[]> {
45
- // return this.wrap(3, () => super.query(trx, query, pagination, config));
46
- // }
47
- // }
@@ -1,45 +0,0 @@
1
- import { AnyTrxEngine } from '../../transaction/trx_engine';
2
- import { $Module } from "../../../schema";
3
- export type CLIData<M extends $Module, Msg extends keyof M['messages']> = Omit<M['messages'][Msg]['#raw'], '$'>;
4
- export declare class MonolythCLI {
5
- private trxEngines;
6
- private module?;
7
- constructor(trxEngines: Record<string, AnyTrxEngine>);
8
- run(): Promise<void>;
9
- private runCmd;
10
- private cmdHelp;
11
- private cmdClear;
12
- private cmdListModules;
13
- private cmdInvokeInteractive;
14
- private cmdPickModule;
15
- private cmdInvoke;
16
- }
17
- export declare enum Color {
18
- black = "0;30",
19
- red = "0;31",
20
- green = "0;32",
21
- brown = "0;33",
22
- blue = "0;34",
23
- purple = "0;35",
24
- cyan = "0;36",
25
- lightgray = "0;37",
26
- darkgray = "1;30",
27
- lightred = "1;31",
28
- lightgreen = "1;32",
29
- yellow = "1;33",
30
- lightblue = "1;34",
31
- lightpurple = "1;35",
32
- lightcyan = "1;36"
33
- }
34
- export default class Console {
35
- static colored(msg: string, color: keyof typeof Color): string;
36
- static select(title: string, options: string[], defaul?: number): Promise<string>;
37
- static question(text: string, defaul?: string, prefix?: string): Promise<string>;
38
- static waitForAnyKey(title?: string): Promise<void>;
39
- static yesOrNo(text: string, defaul?: 'y' | 'n'): Promise<boolean>;
40
- static step(msg: string): void;
41
- static info(msg: string): void;
42
- static cmd(msg: string): void;
43
- static error(msg: string): void;
44
- static header(module: string): void;
45
- }