nesoi 3.0.8 → 3.0.10

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 (266) hide show
  1. package/lib/compiler/apps/monolyth/monolyth_compiler.d.ts +1 -1
  2. package/lib/compiler/apps/monolyth/monolyth_compiler.js +7 -7
  3. package/lib/compiler/apps/monolyth/stages/1_mkdir_stage.d.ts +3 -0
  4. package/lib/compiler/apps/monolyth/stages/1_mkdir_stage.js +3 -0
  5. package/lib/compiler/apps/monolyth/stages/2_build_typescript_stage.d.ts +3 -0
  6. package/lib/compiler/apps/monolyth/stages/2_build_typescript_stage.js +3 -0
  7. package/lib/compiler/apps/monolyth/stages/3_copy_types_stage.d.ts +3 -0
  8. package/lib/compiler/apps/monolyth/stages/3_copy_types_stage.js +3 -0
  9. package/lib/compiler/apps/monolyth/stages/4_dump_modules_stage.d.ts +3 -0
  10. package/lib/compiler/apps/monolyth/stages/4_dump_modules_stage.js +3 -0
  11. package/lib/compiler/apps/monolyth/stages/5_dump_cli_stage.d.ts +3 -0
  12. package/lib/compiler/apps/monolyth/stages/5_dump_cli_stage.js +3 -0
  13. package/lib/compiler/apps/monolyth/stages/6_dump_package_json_stage.d.ts +3 -0
  14. package/lib/compiler/apps/monolyth/stages/6_dump_package_json_stage.js +3 -0
  15. package/lib/compiler/elements/externals.element.d.ts +1 -1
  16. package/lib/compiler/module.js +1 -1
  17. package/lib/compiler/stages/1_scan_stage.d.ts +3 -0
  18. package/lib/compiler/stages/1_scan_stage.js +3 -0
  19. package/lib/compiler/stages/2_treeshake_stage.d.ts +3 -0
  20. package/lib/compiler/stages/2_treeshake_stage.js +3 -0
  21. package/lib/compiler/stages/3_extract_ts_stage.d.ts +3 -0
  22. package/lib/compiler/stages/3_extract_ts_stage.js +3 -0
  23. package/lib/compiler/stages/4_build_schemas_stage.d.ts +3 -0
  24. package/lib/compiler/stages/4_build_schemas_stage.js +3 -0
  25. package/lib/compiler/stages/5_inject_ts_stage.d.ts +3 -0
  26. package/lib/compiler/stages/5_inject_ts_stage.js +3 -0
  27. package/lib/compiler/stages/6_build_elements_stage.d.ts +3 -0
  28. package/lib/compiler/stages/6_build_elements_stage.js +3 -0
  29. package/lib/compiler/stages/7_dump_stage.d.ts +3 -0
  30. package/lib/compiler/stages/7_dump_stage.js +3 -0
  31. package/lib/compiler/stages/8_diagnose_stage.d.ts +3 -0
  32. package/lib/compiler/stages/8_diagnose_stage.js +3 -0
  33. package/lib/compiler/treeshake.js +3 -3
  34. package/lib/elements/blocks/block.builder.d.ts +6 -2
  35. package/lib/elements/blocks/block.builder.js +8 -4
  36. package/lib/elements/blocks/block.schema.d.ts +4 -0
  37. package/lib/elements/blocks/block.schema.js +4 -0
  38. package/lib/elements/blocks/job/internal/machine_job.builder.d.ts +6 -3
  39. package/lib/elements/blocks/job/internal/machine_job.builder.js +5 -2
  40. package/lib/elements/blocks/job/internal/machine_job.schema.d.ts +4 -0
  41. package/lib/elements/blocks/job/internal/machine_job.schema.js +4 -0
  42. package/lib/elements/blocks/job/internal/resource_job.builder.d.ts +4 -0
  43. package/lib/elements/blocks/job/internal/resource_job.builder.js +4 -0
  44. package/lib/elements/blocks/job/internal/resource_job.d.ts +4 -0
  45. package/lib/elements/blocks/job/internal/resource_job.js +4 -0
  46. package/lib/elements/blocks/job/internal/resource_job.schema.d.ts +4 -0
  47. package/lib/elements/blocks/job/internal/resource_job.schema.js +4 -0
  48. package/lib/elements/blocks/job/job.builder.d.ts +4 -0
  49. package/lib/elements/blocks/job/job.builder.js +4 -0
  50. package/lib/elements/blocks/job/job.d.ts +4 -0
  51. package/lib/elements/blocks/job/job.js +4 -0
  52. package/lib/elements/blocks/job/job.schema.d.ts +4 -0
  53. package/lib/elements/blocks/job/job.schema.js +4 -0
  54. package/lib/elements/blocks/machine/machine.builder.d.ts +4 -0
  55. package/lib/elements/blocks/machine/machine.builder.js +16 -1
  56. package/lib/elements/blocks/machine/machine.d.ts +12 -0
  57. package/lib/elements/blocks/machine/machine.js +12 -0
  58. package/lib/elements/blocks/machine/machine.schema.d.ts +18 -1
  59. package/lib/elements/blocks/machine/machine.schema.js +18 -2
  60. package/lib/elements/blocks/machine/machine_state.builder.d.ts +4 -0
  61. package/lib/elements/blocks/machine/machine_state.builder.js +4 -0
  62. package/lib/elements/blocks/machine/machine_transition.builder.d.ts +4 -0
  63. package/lib/elements/blocks/machine/machine_transition.builder.js +4 -0
  64. package/lib/elements/blocks/queue/adapters/bucket.queue_adapter.d.ts +4 -0
  65. package/lib/elements/blocks/queue/adapters/bucket.queue_adapter.js +4 -0
  66. package/lib/elements/blocks/queue/adapters/queue_adapter.d.ts +4 -0
  67. package/lib/elements/blocks/queue/adapters/queue_adapter.js +4 -0
  68. package/lib/elements/blocks/queue/queue.builder.d.ts +4 -0
  69. package/lib/elements/blocks/queue/queue.builder.js +4 -0
  70. package/lib/elements/blocks/queue/queue.schema.d.ts +4 -0
  71. package/lib/elements/blocks/queue/queue.schema.js +4 -0
  72. package/lib/elements/blocks/resource/resource.builder.d.ts +4 -0
  73. package/lib/elements/blocks/resource/resource.builder.js +4 -0
  74. package/lib/elements/blocks/resource/resource.d.ts +4 -0
  75. package/lib/elements/blocks/resource/resource.js +4 -0
  76. package/lib/elements/blocks/resource/resource.schema.d.ts +4 -0
  77. package/lib/elements/blocks/resource/resource.schema.js +4 -0
  78. package/lib/elements/edge/controller/adapters/cli.controller_adapter.d.ts +4 -0
  79. package/lib/elements/edge/controller/adapters/cli.controller_adapter.js +4 -0
  80. package/lib/elements/edge/controller/adapters/controller_adapter.d.ts +7 -1
  81. package/lib/elements/edge/controller/adapters/controller_adapter.js +6 -1
  82. package/lib/elements/edge/controller/controller.builder.d.ts +16 -0
  83. package/lib/elements/edge/controller/controller.builder.js +16 -0
  84. package/lib/elements/edge/controller/controller.config.d.ts +3 -2
  85. package/lib/elements/edge/controller/controller.d.ts +7 -3
  86. package/lib/elements/edge/controller/controller.js +7 -3
  87. package/lib/elements/edge/controller/controller.schema.d.ts +16 -0
  88. package/lib/elements/edge/controller/controller.schema.js +16 -0
  89. package/lib/elements/{blocks → edge}/externals/externals.builder.d.ts +4 -0
  90. package/lib/elements/{blocks → edge}/externals/externals.builder.js +4 -0
  91. package/lib/elements/{blocks → edge}/externals/externals.schema.d.ts +4 -0
  92. package/lib/elements/{blocks → edge}/externals/externals.schema.js +4 -0
  93. package/lib/elements/entities/bucket/adapters/bucket_adapter.d.ts +18 -12
  94. package/lib/elements/entities/bucket/adapters/bucket_adapter.js +5 -0
  95. package/lib/elements/entities/bucket/adapters/memory.bucket_adapter.d.ts +4 -0
  96. package/lib/elements/entities/bucket/adapters/memory.bucket_adapter.js +4 -0
  97. package/lib/elements/entities/bucket/adapters/memory.nql.d.ts +4 -1
  98. package/lib/elements/entities/bucket/adapters/memory.nql.js +4 -1
  99. package/lib/elements/entities/bucket/bucket.builder.d.ts +4 -0
  100. package/lib/elements/entities/bucket/bucket.builder.js +4 -0
  101. package/lib/elements/entities/bucket/bucket.config.d.ts +3 -3
  102. package/lib/elements/entities/bucket/bucket.d.ts +12 -4
  103. package/lib/elements/entities/bucket/bucket.js +18 -11
  104. package/lib/elements/entities/bucket/bucket.schema.d.ts +4 -0
  105. package/lib/elements/entities/bucket/bucket.schema.js +4 -0
  106. package/lib/elements/entities/bucket/cache/bucket_cache.d.ts +8 -0
  107. package/lib/elements/entities/bucket/cache/bucket_cache.js +8 -0
  108. package/lib/elements/entities/bucket/graph/bucket_graph.builder.d.ts +4 -0
  109. package/lib/elements/entities/bucket/graph/bucket_graph.builder.js +4 -0
  110. package/lib/elements/entities/bucket/graph/bucket_graph.d.ts +4 -0
  111. package/lib/elements/entities/bucket/graph/bucket_graph.js +4 -0
  112. package/lib/elements/entities/bucket/graph/bucket_graph.schema.d.ts +8 -0
  113. package/lib/elements/entities/bucket/graph/bucket_graph.schema.js +8 -0
  114. package/lib/elements/entities/bucket/graph/bucket_graph_link.builder.d.ts +8 -0
  115. package/lib/elements/entities/bucket/graph/bucket_graph_link.builder.js +8 -0
  116. package/lib/elements/entities/bucket/model/bucket_model.builder.d.ts +4 -0
  117. package/lib/elements/entities/bucket/model/bucket_model.builder.js +4 -0
  118. package/lib/elements/entities/bucket/model/bucket_model.convert.d.ts +8 -0
  119. package/lib/elements/entities/bucket/model/bucket_model.convert.js +8 -0
  120. package/lib/elements/entities/bucket/model/bucket_model.schema.d.ts +8 -0
  121. package/lib/elements/entities/bucket/model/bucket_model.schema.js +8 -0
  122. package/lib/elements/entities/bucket/model/bucket_model_field.builder.d.ts +8 -0
  123. package/lib/elements/entities/bucket/model/bucket_model_field.builder.js +8 -0
  124. package/lib/elements/entities/bucket/query/nql_compiler.d.ts +9 -0
  125. package/lib/elements/entities/bucket/query/nql_compiler.js +9 -0
  126. package/lib/elements/entities/bucket/query/nql_engine.d.ts +6 -0
  127. package/lib/elements/entities/bucket/query/nql_engine.js +6 -0
  128. package/lib/elements/entities/bucket/view/bucket_view.builder.d.ts +4 -0
  129. package/lib/elements/entities/bucket/view/bucket_view.builder.js +4 -0
  130. package/lib/elements/entities/bucket/view/bucket_view.d.ts +4 -0
  131. package/lib/elements/entities/bucket/view/bucket_view.js +10 -2
  132. package/lib/elements/entities/bucket/view/bucket_view.schema.d.ts +8 -0
  133. package/lib/elements/entities/bucket/view/bucket_view.schema.js +8 -0
  134. package/lib/elements/entities/bucket/view/bucket_view_field.builder.d.ts +8 -0
  135. package/lib/elements/entities/bucket/view/bucket_view_field.builder.js +8 -0
  136. package/lib/elements/entities/constants/constants.builder.d.ts +21 -6
  137. package/lib/elements/entities/constants/constants.builder.js +21 -6
  138. package/lib/elements/entities/constants/constants.d.ts +4 -0
  139. package/lib/elements/entities/constants/constants.js +4 -0
  140. package/lib/elements/entities/constants/constants.schema.d.ts +16 -0
  141. package/lib/elements/entities/constants/constants.schema.js +16 -0
  142. package/lib/elements/entities/drive/drive_adapter.d.ts +15 -10
  143. package/lib/elements/entities/drive/drive_adapter.js +5 -2
  144. package/lib/elements/entities/drive/local.drive_adapter.d.ts +10 -4
  145. package/lib/elements/entities/drive/local.drive_adapter.js +23 -8
  146. package/lib/elements/entities/message/message.builder.d.ts +4 -0
  147. package/lib/elements/entities/message/message.builder.js +4 -0
  148. package/lib/elements/entities/message/message.d.ts +4 -0
  149. package/lib/elements/entities/message/message.js +4 -0
  150. package/lib/elements/entities/message/message.schema.d.ts +4 -0
  151. package/lib/elements/entities/message/message.schema.js +4 -0
  152. package/lib/elements/entities/message/message_parser.d.ts +4 -0
  153. package/lib/elements/entities/message/message_parser.js +4 -0
  154. package/lib/elements/entities/message/template/message_template.builder.d.ts +4 -0
  155. package/lib/elements/entities/message/template/message_template.builder.js +4 -0
  156. package/lib/elements/entities/message/template/message_template.schema.d.ts +9 -0
  157. package/lib/elements/entities/message/template/message_template.schema.js +25 -0
  158. package/lib/elements/entities/message/template/message_template_field.builder.d.ts +8 -0
  159. package/lib/elements/entities/message/template/message_template_field.builder.js +8 -0
  160. package/lib/elements/index.d.ts +1 -1
  161. package/lib/elements/index.js +1 -1
  162. package/lib/engine/apps/app.config.d.ts +15 -11
  163. package/lib/engine/apps/app.config.js +3 -0
  164. package/lib/engine/apps/app.d.ts +12 -20
  165. package/lib/engine/apps/app.js +13 -10
  166. package/lib/engine/apps/inline.app.d.ts +12 -8
  167. package/lib/engine/apps/inline.app.js +27 -24
  168. package/lib/engine/apps/monolyth/monolyth.app.d.ts +13 -5
  169. package/lib/engine/apps/monolyth/monolyth.app.js +14 -6
  170. package/lib/engine/apps/service.d.ts +30 -0
  171. package/lib/engine/apps/service.js +15 -0
  172. package/lib/engine/auth/authn.d.ts +14 -1
  173. package/lib/engine/auth/authn.js +4 -0
  174. package/lib/engine/auth/zero.authn_provider.d.ts +11 -3
  175. package/lib/engine/auth/zero.authn_provider.js +13 -2
  176. package/lib/engine/cli/cli.d.ts +8 -2
  177. package/lib/engine/cli/cli.js +10 -1
  178. package/lib/engine/cli/cli_adapter.d.ts +11 -1
  179. package/lib/engine/cli/cli_adapter.js +10 -1
  180. package/lib/engine/cli/cli_input.d.ts +4 -0
  181. package/lib/engine/cli/cli_input.js +4 -0
  182. package/lib/engine/cli/ui.d.ts +14 -2
  183. package/lib/engine/cli/ui.js +10 -6
  184. package/lib/engine/daemon.d.ts +96 -9
  185. package/lib/engine/daemon.js +101 -18
  186. package/lib/engine/data/date.d.ts +4 -0
  187. package/lib/engine/data/date.js +4 -0
  188. package/lib/engine/data/datetime.d.ts +4 -0
  189. package/lib/engine/data/datetime.js +4 -0
  190. package/lib/engine/data/decimal.d.ts +4 -0
  191. package/lib/engine/data/decimal.js +4 -0
  192. package/lib/engine/data/file.d.ts +23 -23
  193. package/lib/engine/data/file.js +66 -29
  194. package/lib/engine/data/json.d.ts +4 -0
  195. package/lib/engine/data/json.js +4 -0
  196. package/lib/engine/data/tree.d.ts +4 -0
  197. package/lib/engine/data/tree.js +4 -0
  198. package/lib/engine/dependency.d.ts +65 -3
  199. package/lib/engine/dependency.js +70 -0
  200. package/lib/engine/module.d.ts +110 -8
  201. package/lib/engine/module.js +131 -31
  202. package/lib/engine/space.d.ts +163 -10
  203. package/lib/engine/space.js +184 -22
  204. package/lib/engine/transaction/nodes/bucket.trx_node.d.ts +12 -0
  205. package/lib/engine/transaction/nodes/bucket.trx_node.js +13 -2
  206. package/lib/engine/transaction/nodes/bucket_query.trx_node.d.ts +4 -0
  207. package/lib/engine/transaction/nodes/bucket_query.trx_node.js +9 -10
  208. package/lib/engine/transaction/nodes/job.trx_node.d.ts +4 -0
  209. package/lib/engine/transaction/nodes/job.trx_node.js +6 -4
  210. package/lib/engine/transaction/nodes/machine.trx_node.d.ts +4 -0
  211. package/lib/engine/transaction/nodes/machine.trx_node.js +6 -4
  212. package/lib/engine/transaction/nodes/queue.trx_node.d.ts +4 -0
  213. package/lib/engine/transaction/nodes/queue.trx_node.js +5 -2
  214. package/lib/engine/transaction/nodes/resource.trx_node.d.ts +4 -0
  215. package/lib/engine/transaction/nodes/resource.trx_node.js +6 -4
  216. package/lib/engine/transaction/trx.d.ts +14 -4
  217. package/lib/engine/transaction/trx.js +10 -1
  218. package/lib/engine/transaction/trx_engine.config.d.ts +2 -2
  219. package/lib/engine/transaction/trx_engine.d.ts +8 -3
  220. package/lib/engine/transaction/trx_engine.js +24 -20
  221. package/lib/engine/transaction/trx_node.d.ts +8 -2
  222. package/lib/engine/transaction/trx_node.js +17 -1
  223. package/lib/engine/tree.d.ts +54 -2
  224. package/lib/engine/tree.js +60 -19
  225. package/lib/engine/util/mime.d.ts +4 -4
  226. package/lib/engine/util/mime.js +7 -9
  227. package/lib/schema.d.ts +2 -2
  228. package/package.json +2 -3
  229. package/tools/joaquin/job.js +2 -2
  230. package/tools/joaquin/message.js +2 -2
  231. package/tools/joaquin/mock.d.ts +6 -6
  232. package/tsconfig.build.tsbuildinfo +1 -1
  233. package/lib/adapters/postgres/src/migrator/bucket.d.ts +0 -20
  234. package/lib/adapters/postgres/src/migrator/bucket.js +0 -184
  235. package/lib/adapters/postgres/src/migrator/csv.d.ts +0 -7
  236. package/lib/adapters/postgres/src/migrator/csv.js +0 -72
  237. package/lib/adapters/postgres/src/migrator/database.d.ts +0 -37
  238. package/lib/adapters/postgres/src/migrator/database.js +0 -88
  239. package/lib/adapters/postgres/src/migrator/index.d.ts +0 -1
  240. package/lib/adapters/postgres/src/migrator/index.js +0 -5
  241. package/lib/adapters/postgres/src/migrator/migration.d.ts +0 -57
  242. package/lib/adapters/postgres/src/migrator/migration.js +0 -203
  243. package/lib/adapters/postgres/src/migrator/migrator.d.ts +0 -21
  244. package/lib/adapters/postgres/src/migrator/migrator.js +0 -76
  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/adapters/postgres/src/postgres.bucket_adapter.d.ts +0 -42
  248. package/lib/adapters/postgres/src/postgres.bucket_adapter.js +0 -294
  249. package/lib/adapters/postgres/src/postgres.cli.d.ts +0 -66
  250. package/lib/adapters/postgres/src/postgres.cli.js +0 -184
  251. package/lib/adapters/postgres/src/postgres.config.d.ts +0 -5
  252. package/lib/adapters/postgres/src/postgres.config.js +0 -2
  253. package/lib/adapters/postgres/src/postgres.nql.d.ts +0 -16
  254. package/lib/adapters/postgres/src/postgres.nql.js +0 -123
  255. package/lib/adapters/postgres/src/postgres.provider.d.ts +0 -18
  256. package/lib/adapters/postgres/src/postgres.provider.js +0 -77
  257. package/lib/adapters/postgres/test/postgres.bucket_adapter.test.d.ts +0 -1
  258. package/lib/adapters/postgres/test/postgres.bucket_adapter.test.js +0 -210
  259. package/lib/elements/entities/bucket/adapters/memory.bucket_query copy.d.ts +0 -0
  260. package/lib/elements/entities/bucket/adapters/memory.bucket_query copy.js +0 -218
  261. package/lib/elements/entities/bucket/adapters/slow_memory.bucket_adapter.d.ts +0 -0
  262. package/lib/elements/entities/bucket/adapters/slow_memory.bucket_adapter.js +0 -47
  263. package/lib/engine/apps/monolyth/monolyth.cli.d.ts +0 -45
  264. package/lib/engine/apps/monolyth/monolyth.cli.js +0 -362
  265. package/lib/engine/util/cache.d.ts +0 -6
  266. package/lib/engine/util/cache.js +0 -20
@@ -1,76 +0,0 @@
1
- "use strict";
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 {
10
- constructor(daemon, sql, dirpath = './migrations') {
11
- this.daemon = daemon;
12
- this.sql = sql;
13
- this.dirpath = dirpath;
14
- }
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};
19
- `;
20
- if (!oldTable.length) {
21
- await migrator.sql `CREATE TABLE ${migrator.sql(Migrator.MIGRATION_TABLE_NAME)} (
22
- id SERIAL PRIMARY KEY,
23
- module VARCHAR NOT NULL,
24
- name VARCHAR NOT NULL,
25
- description VARCHAR,
26
- batch INT4 NOT NULL,
27
- timestamp TIMESTAMP NOT NULL,
28
- hash VARCHAR NOT NULL,
29
- filehash VARCHAR NOT NULL
30
- )`;
31
- }
32
- migrator.status = await runner_1.MigrationRunner.status(daemon, migrator.sql, migrator.dirpath);
33
- return migrator;
34
- }
35
- async generate() {
36
- const modules = daemon_1.Daemon.getModules(this.daemon);
37
- const migrations = [];
38
- for (const module of modules) {
39
- const buckets = daemon_1.Daemon.getModule(this.daemon, module.name).buckets;
40
- for (const bucket in buckets) {
41
- const schema = buckets[bucket].schema;
42
- if (schema.module !== module.name)
43
- continue;
44
- const adapter = buckets[bucket].adapter;
45
- if (!adapter?.tableName)
46
- continue;
47
- const migration = await this.generateForBucket(module.name, bucket, adapter.tableName);
48
- if (migration) {
49
- migrations.push(migration);
50
- }
51
- }
52
- }
53
- return migrations;
54
- }
55
- 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 tag = (0, string_1.colored)(`${module}::bucket:${bucket}`, 'lightcyan');
59
- if (!migration) {
60
- log_1.Log.info('migrator', 'bucket', `No changes detected on ${tag}.`);
61
- return undefined;
62
- }
63
- const hash = migration.hash();
64
- const alreadyExists = this.status.items.find(item => item.hash === hash);
65
- if (alreadyExists && alreadyExists?.state === 'pending') {
66
- log_1.Log.warn('migrator', 'bucket', `A similar migration for ${tag} was found pending, ignoring this one.`);
67
- return undefined;
68
- }
69
- return migration;
70
- }
71
- static migration(...$) {
72
- return new runner_1.MigrationMethod(...$);
73
- }
74
- }
75
- exports.Migrator = Migrator;
76
- Migrator.MIGRATION_TABLE_NAME = '__nesoi_migrations';
@@ -1,71 +0,0 @@
1
- import postgres from 'postgres';
2
- import { Migration } from './migration';
3
- import { AnyDaemon } from "../../../../engine/daemon";
4
- import { AnyTrxNode } from "../../../../engine/transaction/trx_node";
5
- type MigrationFn = ($: {
6
- sql: postgres.Sql<any>;
7
- trx: AnyTrxNode;
8
- }) => Promise<void>;
9
- export type MigrationRow = {
10
- id: number;
11
- module: string;
12
- name: string;
13
- description?: string;
14
- batch: number;
15
- timestamp: string;
16
- hash: string;
17
- filehash: string;
18
- };
19
- export declare class MigrationMethod {
20
- description?: string;
21
- up: MigrationFn;
22
- down: MigrationFn;
23
- constructor($: {
24
- description?: string;
25
- up: MigrationFn;
26
- down: MigrationFn;
27
- });
28
- }
29
- export declare class MigrationStatus {
30
- items: {
31
- state: 'done' | 'pending' | 'lost';
32
- id?: number;
33
- module: string;
34
- name: string;
35
- description?: string;
36
- batch?: number;
37
- timestamp?: string;
38
- hash: string;
39
- filehash?: string;
40
- method?: MigrationMethod;
41
- }[];
42
- batch: number;
43
- constructor(fileMigrations: {
44
- module: string;
45
- name: string;
46
- hash: string;
47
- path: string;
48
- method: MigrationMethod;
49
- }[], dbMigrations: MigrationRow[]);
50
- describe(): string;
51
- }
52
- export declare class MigrationRunner {
53
- dirpath: string;
54
- private migrations;
55
- private constructor();
56
- static scanFiles(daemon: AnyDaemon, dirpath: string): Promise<{
57
- module: string;
58
- name: string;
59
- path: string;
60
- hash: string;
61
- method: MigrationMethod;
62
- }[]>;
63
- static scanDb(sql: postgres.Sql<any>): Promise<postgres.RowList<MigrationRow[]>>;
64
- static status(daemon: AnyDaemon, sql: postgres.Sql<any>, dirpath: string): Promise<MigrationStatus>;
65
- static up(daemon: AnyDaemon, sql: postgres.Sql<any>, mode?: 'one' | 'batch', dirpath?: string): Promise<void>;
66
- static down(daemon: AnyDaemon, sql: postgres.Sql<any>, mode?: 'one' | 'batch', dirpath?: string): Promise<void>;
67
- static injectUp(daemon: AnyDaemon, sql: postgres.Sql<any>, migration: Migration, dirpath?: string): Promise<void>;
68
- private static migrateUp;
69
- private static migrateDown;
70
- }
71
- export {};
@@ -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,42 +0,0 @@
1
- import { $Bucket } from "../../../elements";
2
- import { BucketAdapter } from "../../../elements/entities/bucket/adapters/bucket_adapter";
3
- import { AnyTrxNode } from "../../../engine/transaction/trx_node";
4
- import { NQL_QueryMeta } from "../../../elements/entities/bucket/query/nql.schema";
5
- import { PostgresProvider } from './postgres.provider';
6
- export declare class PostgresBucketAdapter<$ extends $Bucket, Obj extends $['#data']> extends BucketAdapter<$['#data']> {
7
- schema: $;
8
- provider: PostgresProvider;
9
- tableName: string;
10
- constructor(schema: $, provider: PostgresProvider, tableName: string);
11
- private guard;
12
- getQueryMeta(): {
13
- scope: string;
14
- avgTime: number;
15
- };
16
- protected deleteEverything(trx: AnyTrxNode): Promise<void>;
17
- index(trx: AnyTrxNode): Promise<Obj[]>;
18
- get(trx: AnyTrxNode, id: Obj['id']): Promise<Obj>;
19
- private precleanup;
20
- create(trx: AnyTrxNode, obj: Record<string, any>): Promise<Obj>;
21
- createMany(trx: AnyTrxNode, objs: Record<string, any>[]): Promise<Obj[]>;
22
- patch(trx: AnyTrxNode, obj: Record<string, any>): Promise<Obj>;
23
- patchMany(trx: AnyTrxNode, objs: Record<string, any>[]): Promise<$["#data"][]>;
24
- replace(trx: AnyTrxNode, obj: Record<string, any>): Promise<Obj>;
25
- replaceMany(trx: AnyTrxNode, objs: Record<string, any>[]): Promise<$["#data"][]>;
26
- put(trx: AnyTrxNode, obj: Record<string, any>): Promise<Obj>;
27
- putMany(trx: AnyTrxNode, objs: Record<string, any>[]): Promise<$["#data"][]>;
28
- delete(trx: AnyTrxNode, id: Obj['id']): Promise<void>;
29
- deleteMany(trx: AnyTrxNode, ids: Obj['id'][]): Promise<void>;
30
- syncOne(trx: AnyTrxNode, id: Obj['id'], lastObjUpdateEpoch: number): Promise<any>;
31
- syncOneAndPast(trx: AnyTrxNode, id: Obj['id'], lastUpdateEpoch: number): Promise<any>;
32
- syncAll(trx: AnyTrxNode, lastHash?: string, lastUpdateEpoch?: number): Promise<any>;
33
- static getTableMeta(trx: AnyTrxNode, meta: NQL_QueryMeta): {
34
- tableName: string;
35
- meta: {
36
- created_at: string;
37
- created_by: string;
38
- updated_at: string;
39
- updated_by: string;
40
- };
41
- };
42
- }