nesoi 3.0.0 → 3.0.6

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 (186) hide show
  1. package/README.md +10 -0
  2. package/lib/adapters/postgres/src/migrator/bucket.d.ts +20 -0
  3. package/lib/adapters/postgres/src/migrator/bucket.js +184 -0
  4. package/lib/adapters/postgres/src/migrator/csv.d.ts +7 -0
  5. package/lib/adapters/postgres/src/migrator/csv.js +72 -0
  6. package/lib/adapters/postgres/src/migrator/migration.d.ts +2 -18
  7. package/lib/adapters/postgres/src/migrator/migration.js +10 -158
  8. package/lib/adapters/postgres/src/migrator/migrator.js +8 -5
  9. package/lib/adapters/postgres/src/migrator/runner.d.ts +16 -6
  10. package/lib/adapters/postgres/src/migrator/runner.js +103 -34
  11. package/lib/adapters/postgres/src/postgres.bucket_adapter.d.ts +19 -22
  12. package/lib/adapters/postgres/src/postgres.bucket_adapter.js +116 -100
  13. package/lib/adapters/postgres/src/postgres.cli.d.ts +23 -3
  14. package/lib/adapters/postgres/src/postgres.cli.js +70 -10
  15. package/lib/adapters/postgres/src/postgres.config.d.ts +5 -0
  16. package/lib/adapters/postgres/src/postgres.config.js +2 -0
  17. package/lib/adapters/postgres/src/postgres.nql.d.ts +7 -3
  18. package/lib/adapters/postgres/src/postgres.nql.js +86 -32
  19. package/lib/adapters/postgres/src/postgres.provider.d.ts +18 -0
  20. package/lib/adapters/postgres/src/postgres.provider.js +77 -0
  21. package/lib/adapters/postgres/test/postgres.bucket_adapter.test.js +76 -39
  22. package/lib/compiler/apps/monolyth/monolyth_compiler.d.ts +3 -0
  23. package/lib/compiler/apps/monolyth/monolyth_compiler.js +24 -0
  24. package/lib/compiler/apps/monolyth/stages/2_build_typescript_stage.js +2 -1
  25. package/lib/compiler/apps/monolyth/stages/5_dump_cli_stage.js +1 -1
  26. package/lib/compiler/apps/monolyth/stages/6_dump_package_json_stage.js +1 -1
  27. package/lib/compiler/elements/bucket.element.js +26 -11
  28. package/lib/compiler/elements/constants.element.js +1 -1
  29. package/lib/compiler/elements/element.d.ts +2 -0
  30. package/lib/compiler/elements/message.element.js +4 -4
  31. package/lib/compiler/helpers/dump_helpers.js +5 -2
  32. package/lib/compiler/stages/7_dump_stage.js +2 -0
  33. package/lib/compiler/treeshake.js +9 -37
  34. package/lib/compiler/typescript/bridge/extract.js +12 -0
  35. package/lib/compiler/typescript/bridge/inject.js +3 -0
  36. package/lib/compiler/typescript/bridge/organize.js +3 -3
  37. package/lib/elements/blocks/block.builder.js +4 -2
  38. package/lib/elements/blocks/job/internal/resource_job.builder.d.ts +22 -20
  39. package/lib/elements/blocks/job/internal/resource_job.d.ts +2 -1
  40. package/lib/elements/blocks/job/internal/resource_job.js +17 -4
  41. package/lib/elements/blocks/job/job.js +3 -0
  42. package/lib/elements/blocks/job/job.types.d.ts +7 -0
  43. package/lib/elements/blocks/job/job.types.js +2 -0
  44. package/lib/elements/blocks/machine/machine.js +3 -2
  45. package/lib/elements/blocks/resource/resource.builder.js +2 -4
  46. package/lib/elements/blocks/resource/resource.d.ts +5 -3
  47. package/lib/elements/blocks/resource/resource.js +26 -17
  48. package/lib/elements/edge/controller/adapters/controller_adapter.d.ts +2 -1
  49. package/lib/elements/edge/controller/adapters/controller_adapter.js +11 -2
  50. package/lib/elements/edge/controller/controller.builder.d.ts +4 -5
  51. package/lib/elements/edge/controller/controller.builder.js +7 -7
  52. package/lib/elements/edge/controller/controller.d.ts +2 -1
  53. package/lib/elements/edge/controller/controller.js +8 -6
  54. package/lib/elements/entities/bucket/adapters/bucket_adapter.d.ts +61 -23
  55. package/lib/elements/entities/bucket/adapters/bucket_adapter.js +22 -13
  56. package/lib/elements/entities/bucket/adapters/memory.bucket_adapter.d.ts +21 -22
  57. package/lib/elements/entities/bucket/adapters/memory.bucket_adapter.js +68 -2
  58. package/lib/elements/entities/bucket/adapters/memory.nql.d.ts +10 -6
  59. package/lib/elements/entities/bucket/adapters/memory.nql.js +38 -3
  60. package/lib/elements/entities/bucket/adapters/slow_memory.bucket_adapter.d.ts +0 -20
  61. package/lib/elements/entities/bucket/adapters/slow_memory.bucket_adapter.js +46 -30
  62. package/lib/elements/entities/bucket/bucket.builder.d.ts +8 -2
  63. package/lib/elements/entities/bucket/bucket.builder.js +13 -19
  64. package/lib/elements/entities/bucket/bucket.config.d.ts +5 -1
  65. package/lib/elements/entities/bucket/bucket.d.ts +180 -19
  66. package/lib/elements/entities/bucket/bucket.js +662 -48
  67. package/lib/elements/entities/bucket/bucket.schema.d.ts +7 -1
  68. package/lib/elements/entities/bucket/bucket.schema.js +2 -1
  69. package/lib/elements/entities/bucket/bucket.types.d.ts +2 -7
  70. package/lib/elements/entities/bucket/cache/bucket_cache.d.ts +6 -2
  71. package/lib/elements/entities/bucket/cache/bucket_cache.js +12 -12
  72. package/lib/elements/entities/bucket/graph/bucket_graph.d.ts +32 -5
  73. package/lib/elements/entities/bucket/graph/bucket_graph.js +80 -111
  74. package/lib/elements/entities/bucket/graph/bucket_graph.schema.d.ts +3 -6
  75. package/lib/elements/entities/bucket/graph/bucket_graph.schema.js +1 -4
  76. package/lib/elements/entities/bucket/graph/bucket_graph_link.builder.d.ts +3 -7
  77. package/lib/elements/entities/bucket/graph/bucket_graph_link.builder.js +6 -2
  78. package/lib/elements/entities/bucket/model/bucket_model.builder.js +1 -1
  79. package/lib/elements/entities/bucket/model/bucket_model.convert.js +3 -3
  80. package/lib/elements/entities/bucket/model/bucket_model.schema.d.ts +37 -8
  81. package/lib/elements/entities/bucket/model/bucket_model.schema.js +25 -4
  82. package/lib/elements/entities/bucket/model/bucket_model_field.builder.d.ts +33 -14
  83. package/lib/elements/entities/bucket/model/bucket_model_field.builder.js +56 -13
  84. package/lib/elements/entities/bucket/query/nql.schema.d.ts +1 -0
  85. package/lib/elements/entities/bucket/query/nql_compiler.js +13 -2
  86. package/lib/elements/entities/bucket/query/nql_engine.d.ts +11 -4
  87. package/lib/elements/entities/bucket/query/nql_engine.js +20 -11
  88. package/lib/elements/entities/bucket/view/bucket_view.js +63 -35
  89. package/lib/elements/entities/bucket/view/bucket_view.schema.d.ts +5 -2
  90. package/lib/elements/entities/bucket/view/bucket_view_field.builder.d.ts +6 -2
  91. package/lib/elements/entities/bucket/view/bucket_view_field.builder.js +22 -16
  92. package/lib/elements/entities/constants/constants.schema.d.ts +1 -1
  93. package/lib/elements/entities/drive/drive_adapter.d.ts +44 -0
  94. package/lib/elements/entities/drive/drive_adapter.js +10 -0
  95. package/lib/elements/entities/drive/local.drive_adapter.d.ts +10 -0
  96. package/lib/elements/entities/drive/local.drive_adapter.js +34 -0
  97. package/lib/elements/entities/message/message.schema.d.ts +1 -0
  98. package/lib/elements/entities/message/message.schema.js +33 -0
  99. package/lib/elements/entities/message/message_parser.d.ts +5 -1
  100. package/lib/elements/entities/message/message_parser.js +56 -35
  101. package/lib/elements/entities/message/template/message_template.schema.d.ts +10 -8
  102. package/lib/elements/entities/message/template/message_template_field.builder.d.ts +16 -6
  103. package/lib/elements/entities/message/template/message_template_field.builder.js +25 -0
  104. package/lib/elements/entities/message/template/message_template_parser.js +2 -1
  105. package/lib/engine/apps/app.config.d.ts +32 -11
  106. package/lib/engine/apps/app.config.js +12 -0
  107. package/lib/engine/apps/app.d.ts +2 -0
  108. package/lib/engine/apps/app.js +3 -0
  109. package/lib/engine/apps/inline.app.d.ts +5 -3
  110. package/lib/engine/apps/inline.app.js +27 -12
  111. package/lib/engine/apps/monolyth/monolyth.app.d.ts +4 -2
  112. package/lib/engine/apps/monolyth/monolyth.app.js +22 -10
  113. package/lib/engine/auth/authn.d.ts +5 -1
  114. package/lib/engine/auth/zero.authn_provider.d.ts +4 -2
  115. package/lib/engine/auth/zero.authn_provider.js +2 -2
  116. package/lib/engine/cli/cli.d.ts +3 -1
  117. package/lib/engine/cli/cli.js +22 -3
  118. package/lib/engine/cli/cli_adapter.d.ts +2 -1
  119. package/lib/engine/cli/cli_adapter.js +2 -1
  120. package/lib/engine/cli/cli_input.d.ts +19 -0
  121. package/lib/engine/cli/cli_input.js +207 -0
  122. package/lib/engine/cli/ui.d.ts +1 -1
  123. package/lib/engine/cli/ui.js +2 -2
  124. package/lib/engine/daemon.d.ts +3 -2
  125. package/lib/engine/daemon.js +14 -2
  126. package/lib/engine/data/date.js +2 -2
  127. package/lib/engine/data/datetime.d.ts +40 -4
  128. package/lib/engine/data/datetime.js +70 -11
  129. package/lib/engine/data/decimal.d.ts +1 -1
  130. package/lib/engine/data/decimal.js +3 -3
  131. package/lib/engine/data/error.d.ts +21 -4
  132. package/lib/engine/data/error.js +23 -7
  133. package/lib/engine/data/file.d.ts +38 -0
  134. package/lib/engine/data/file.js +54 -0
  135. package/lib/engine/data/json.d.ts +6 -0
  136. package/lib/engine/data/json.js +26 -0
  137. package/lib/engine/data/obj.d.ts +1 -1
  138. package/lib/engine/data/trash.d.ts +14 -0
  139. package/lib/engine/data/trash.js +2 -0
  140. package/lib/engine/data/tree.d.ts +7 -12
  141. package/lib/engine/data/tree.js +101 -49
  142. package/lib/engine/module.d.ts +2 -1
  143. package/lib/engine/module.js +2 -5
  144. package/lib/engine/space.d.ts +1 -0
  145. package/lib/engine/space.js +6 -0
  146. package/lib/engine/transaction/nodes/bucket.trx_node.d.ts +184 -24
  147. package/lib/engine/transaction/nodes/bucket.trx_node.js +346 -451
  148. package/lib/engine/transaction/nodes/bucket_query.trx_node.d.ts +4 -2
  149. package/lib/engine/transaction/nodes/bucket_query.trx_node.js +27 -15
  150. package/lib/engine/transaction/nodes/job.trx_node.d.ts +2 -1
  151. package/lib/engine/transaction/nodes/job.trx_node.js +6 -0
  152. package/lib/engine/transaction/trx.d.ts +5 -2
  153. package/lib/engine/transaction/trx.js +2 -2
  154. package/lib/engine/transaction/trx_engine.config.d.ts +1 -3
  155. package/lib/engine/transaction/trx_engine.d.ts +2 -2
  156. package/lib/engine/transaction/trx_engine.js +14 -11
  157. package/lib/engine/transaction/trx_node.d.ts +14 -4
  158. package/lib/engine/transaction/trx_node.js +50 -8
  159. package/lib/engine/tree.d.ts +1 -1
  160. package/lib/engine/util/crypto.d.ts +50 -0
  161. package/lib/engine/util/crypto.js +89 -0
  162. package/lib/engine/util/deep.d.ts +5 -0
  163. package/lib/engine/util/deep.js +46 -0
  164. package/lib/engine/util/dotenv.d.ts +2 -8
  165. package/lib/engine/util/dotenv.js +14 -36
  166. package/lib/engine/util/hash.d.ts +3 -0
  167. package/lib/engine/util/hash.js +23 -0
  168. package/lib/engine/util/log.js +1 -1
  169. package/lib/engine/util/mime.d.ts +10 -0
  170. package/lib/engine/util/mime.js +389 -0
  171. package/lib/engine/util/parse.d.ts +6 -5
  172. package/lib/engine/util/parse.js +16 -15
  173. package/lib/engine/util/path.d.ts +3 -0
  174. package/lib/engine/util/path.js +92 -0
  175. package/lib/engine/util/rules.d.ts +4 -0
  176. package/lib/engine/util/rules.js +12 -0
  177. package/package.json +2 -2
  178. package/tools/compile.js +2 -2
  179. package/tools/dotenv.d.ts +1 -0
  180. package/tools/dotenv.js +4 -0
  181. package/tools/joaquin/job.d.ts +5 -5
  182. package/tools/joaquin/mock.d.ts +23 -2
  183. package/tools/joaquin/mock.js +127 -21
  184. package/tsconfig.build.tsbuildinfo +1 -1
  185. package/lib/adapters/postgres/test/postgres.bucket_query.test.d.ts +0 -0
  186. package/lib/adapters/postgres/test/postgres.bucket_query.test.js +0 -136
@@ -0,0 +1,92 @@
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.Path = void 0;
37
+ const path = __importStar(require("path"));
38
+ const fs = __importStar(require("fs"));
39
+ class Path {
40
+ static expandWildcard(str) {
41
+ const abs = path.isAbsolute(str);
42
+ const nodes = str.split(path.sep);
43
+ if (nodes.length === 1) {
44
+ return [
45
+ path.resolve(str)
46
+ ];
47
+ }
48
+ const step = {
49
+ root: abs ? nodes[0] + path.sep : nodes[0],
50
+ next: nodes.slice(1)
51
+ };
52
+ const paths = [];
53
+ let steps = [step];
54
+ while (steps.length) {
55
+ const nextSteps = [];
56
+ for (const step of steps) {
57
+ if (step.next.length === 0 || step.next[0].length === 0) {
58
+ paths.push(step.root);
59
+ continue;
60
+ }
61
+ const nextNext = step.next.slice(1);
62
+ if (step.next[0] === '*') {
63
+ if (fs.lstatSync(step.root).isDirectory()) {
64
+ fs.readdirSync(step.root, { withFileTypes: true })
65
+ .forEach(node => {
66
+ const nextRoot = path.resolve(step.root, node.name);
67
+ nextSteps.push({
68
+ root: nextRoot,
69
+ next: nextNext
70
+ });
71
+ });
72
+ }
73
+ else {
74
+ continue;
75
+ }
76
+ }
77
+ else {
78
+ const nextRoot = path.resolve(step.root, step.next[0]);
79
+ if (fs.existsSync(nextRoot)) {
80
+ nextSteps.push({
81
+ root: nextRoot,
82
+ next: nextNext
83
+ });
84
+ }
85
+ }
86
+ }
87
+ steps = nextSteps;
88
+ }
89
+ return paths;
90
+ }
91
+ }
92
+ exports.Path = Path;
@@ -0,0 +1,4 @@
1
+ export declare const requiredIf: (key: string, val: any, error: string) => ($: {
2
+ value?: any;
3
+ raw: Record<string, any>;
4
+ }) => string | true;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.requiredIf = void 0;
4
+ const requiredIf = (key, val, error) => {
5
+ return ($) => {
6
+ if ($.value)
7
+ return true;
8
+ return $.raw[key] !== val
9
+ || error;
10
+ };
11
+ };
12
+ exports.requiredIf = requiredIf;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nesoi",
3
- "version": "3.0.0",
3
+ "version": "3.0.6",
4
4
  "description": "Declarative framework for data-driven applications",
5
5
  "repository": {
6
6
  "type": "git",
@@ -17,6 +17,6 @@
17
17
  },
18
18
  "homepage": "https://github.com/nesoi-org/nesoi#readme",
19
19
  "peerDependencies": {
20
- "@types/node": "20.12.12"
20
+ "@types/node": ">=20"
21
21
  }
22
22
  }
package/tools/compile.js CHANGED
@@ -40,8 +40,8 @@ const path = __importStar(require("path"));
40
40
  const fs = __importStar(require("fs"));
41
41
  const node_util_1 = require("node:util");
42
42
  const compiler_1 = require("../lib/compiler/compiler");
43
- const log_1 = require("../src/engine/util/log");
44
- const console_1 = __importDefault(require("../src/engine/util/console"));
43
+ const log_1 = require("../lib/engine/util/log");
44
+ const console_1 = __importDefault(require("../lib/engine/util/console"));
45
45
  log_1.Log.level = 'info';
46
46
  /**
47
47
  * [ compile ]
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const dotenv_1 = require("../lib/engine/util/dotenv");
4
+ dotenv_1.DotEnv.load();
@@ -3,19 +3,19 @@ import { AnyMessage } from "../../src/elements/entities/message/message";
3
3
  import { NesoiError } from "../../src/engine/data/error";
4
4
  export declare function expectJob(def: ($: AnyJobBuilder) => any): {
5
5
  onRaw(_raw: {
6
- $: string;
6
+ $?: string;
7
7
  [x: string]: any;
8
8
  }): {
9
9
  toResolve(value: ($: {
10
10
  raw?: {
11
- $: string;
11
+ $?: string;
12
12
  [x: string]: any;
13
13
  };
14
14
  msg?: AnyMessage;
15
15
  }) => any): Promise<void>;
16
16
  toReject(error: ($: {
17
17
  raw?: {
18
- $: string;
18
+ $?: string;
19
19
  [x: string]: any;
20
20
  };
21
21
  msg?: AnyMessage;
@@ -24,14 +24,14 @@ export declare function expectJob(def: ($: AnyJobBuilder) => any): {
24
24
  onMessage(_msg: AnyMessage): {
25
25
  toResolve(value: ($: {
26
26
  raw?: {
27
- $: string;
27
+ $?: string;
28
28
  [x: string]: any;
29
29
  };
30
30
  msg?: AnyMessage;
31
31
  }) => any): Promise<void>;
32
32
  toReject(error: ($: {
33
33
  raw?: {
34
- $: string;
34
+ $?: string;
35
35
  [x: string]: any;
36
36
  };
37
37
  msg?: AnyMessage;
@@ -1,5 +1,8 @@
1
- import { $Bucket, $Module, $Space } from "../../src/elements";
1
+ import { $Bucket, $Message, $Module, $Space } from "../../src/elements";
2
2
  import { Daemon } from "../../src/engine/daemon";
3
+ import { NesoiDate } from "../../src/engine/data/date";
4
+ import { NesoiDatetime } from "../../src/engine/data/datetime";
5
+ import { NesoiDecimal } from "../../src/engine/data/decimal";
3
6
  import { DeepPartial } from "../../src/engine/util/deep";
4
7
  export declare class BucketMockObj<$ extends $Bucket, T> {
5
8
  private module;
@@ -14,7 +17,6 @@ export declare class BucketMockObj<$ extends $Bucket, T> {
14
17
  private makeObj;
15
18
  private makeList;
16
19
  private makeField;
17
- private makeString;
18
20
  }
19
21
  declare class BucketMock<M extends $Module, $ extends $Bucket> {
20
22
  private module;
@@ -22,7 +24,26 @@ declare class BucketMock<M extends $Module, $ extends $Bucket> {
22
24
  constructor(module: M['name'], bucket: keyof M['buckets']);
23
25
  obj<O extends DeepPartial<$['#data']> | undefined>(overrides?: O): BucketMockObj<$, undefined extends O ? $["#data"] : Omit<$["#data"], keyof O> & O>;
24
26
  }
27
+ declare class MessageMock<M extends $Module, $ extends $Message> {
28
+ private module;
29
+ private messageName;
30
+ private message?;
31
+ constructor(module: M['name'], messageName: keyof M['messages']);
32
+ raw<O extends DeepPartial<$['#raw']> | undefined>(daemon: Daemon<any, any>, overrides?: O): any;
33
+ private bindMessage;
34
+ private makeObj;
35
+ private makeList;
36
+ private makeField;
37
+ }
25
38
  export declare class Mock<Space extends $Space = $Space> {
26
39
  bucket<ModuleName extends keyof Space['modules'], BucketName extends keyof Space['modules'][ModuleName]['buckets'], Module extends Space['modules'][ModuleName], Bucket extends Space['modules'][ModuleName]['buckets'][BucketName]>(module: ModuleName, bucket: BucketName): BucketMock<Module, Bucket>;
40
+ message<ModuleName extends keyof Space['modules'], MessageName extends keyof Space['modules'][ModuleName]['messages'], Module extends Space['modules'][ModuleName], Message extends Space['modules'][ModuleName]['messages'][MessageName]>(module: ModuleName, message: MessageName): MessageMock<Module, Message>;
41
+ static boolean(): boolean;
42
+ static date(): NesoiDate;
43
+ static datetime(): NesoiDatetime;
44
+ static decimal(): NesoiDecimal;
45
+ static float(): number;
46
+ static int(): number;
47
+ static string(): string;
27
48
  }
28
49
  export {};
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Mock = exports.BucketMockObj = void 0;
4
- const daemon_1 = require("../../src/engine/daemon");
5
- const date_1 = require("../../src/engine/data/date");
6
- const datetime_1 = require("../../src/engine/data/datetime");
7
- const decimal_1 = require("../../src/engine/data/decimal");
4
+ const daemon_1 = require("../../lib/engine/daemon");
5
+ const date_1 = require("../../lib/engine/data/date");
6
+ const datetime_1 = require("../../lib/engine/data/datetime");
7
+ const decimal_1 = require("../../lib/engine/data/decimal");
8
8
  class BucketMockObj {
9
9
  constructor(module, bucketName, overrides) {
10
10
  this.module = module;
@@ -53,7 +53,7 @@ class BucketMockObj {
53
53
  makeList(field, overrides) {
54
54
  const list = [];
55
55
  for (let i = 0; i < 3; i++) {
56
- list.append(this.makeField(field, overrides));
56
+ list.push(this.makeField(field, overrides));
57
57
  }
58
58
  return list;
59
59
  }
@@ -62,53 +62,45 @@ class BucketMockObj {
62
62
  return [true, false][Math.floor(Math.random() * 2)];
63
63
  }
64
64
  else if (field.type === 'date') {
65
- return date_1.NesoiDate.now();
65
+ return Mock.date();
66
66
  }
67
67
  else if (field.type === 'datetime') {
68
- return datetime_1.NesoiDatetime.now();
68
+ return Mock.datetime();
69
69
  }
70
70
  else if (field.type === 'decimal') {
71
- return new decimal_1.Decimal(`${Math.floor(Math.random() * 999)}.${Math.floor(Math.random() * 999)}`);
71
+ return Mock.decimal();
72
72
  }
73
73
  else if (field.type === 'dict') {
74
74
  const dict = {};
75
75
  for (let i = 0; i < 3; i++) {
76
- dict[this.makeString()] = this.makeField(field.children.__dict);
76
+ dict[Mock.string()] = this.makeField(field.children.__dict);
77
77
  }
78
78
  return dict;
79
79
  }
80
80
  else if (field.type === 'enum') {
81
- return field._enum.options[Math.floor(Math.random() * field._enum.options.length)];
81
+ return field.meta.enum.options[Math.floor(Math.random() * field.meta.enum.options.length)];
82
82
  }
83
83
  else if (field.type === 'file') {
84
84
  // TODO
85
85
  return undefined;
86
86
  }
87
87
  else if (field.type === 'float') {
88
- return Math.random();
88
+ return Mock.float();
89
89
  }
90
90
  else if (field.type === 'int') {
91
- return Math.floor(Math.random() * 999);
91
+ return Mock.int();
92
92
  }
93
93
  else if (field.type === 'obj') {
94
94
  return this.makeObj(field.children, overrides);
95
95
  }
96
96
  else if (field.type === 'string') {
97
- return this.makeString();
97
+ return Mock.string();
98
98
  }
99
99
  else if (field.type === 'unknown') {
100
100
  // TODO
101
101
  return undefined;
102
102
  }
103
103
  }
104
- makeString() {
105
- const charset = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
106
- let str = 'TEST_';
107
- for (let i = 0; i < 8; i++) {
108
- str += charset[Math.floor(Math.random() * charset.length)];
109
- }
110
- return str;
111
- }
112
104
  }
113
105
  exports.BucketMockObj = BucketMockObj;
114
106
  class BucketMock {
@@ -120,9 +112,123 @@ class BucketMock {
120
112
  return new BucketMockObj(this.module, this.bucket, overrides);
121
113
  }
122
114
  }
115
+ class MessageMock {
116
+ constructor(module, messageName) {
117
+ this.module = module;
118
+ this.messageName = messageName;
119
+ }
120
+ raw(daemon, overrides) {
121
+ if (!this.message)
122
+ this.bindMessage(daemon);
123
+ return this.makeObj(this.message?.schema.template.fields || {}, overrides);
124
+ }
125
+ bindMessage(daemon) {
126
+ this.message = daemon_1.Daemon.getModule(daemon, this.module)
127
+ .messages[this.messageName];
128
+ }
129
+ makeObj(fields, overrides) {
130
+ const obj = {};
131
+ for (const f in fields) {
132
+ if (overrides && f in overrides) {
133
+ obj[f] = overrides[f];
134
+ }
135
+ else {
136
+ const field = fields[f];
137
+ if (field.array) {
138
+ obj[f] = this.makeList(field, overrides?.[f]);
139
+ }
140
+ else {
141
+ obj[f] = this.makeField(field, overrides?.[f]);
142
+ }
143
+ }
144
+ }
145
+ return obj;
146
+ }
147
+ makeList(field, overrides) {
148
+ const list = [];
149
+ for (let i = 0; i < 3; i++) {
150
+ list.push(this.makeField(field, overrides));
151
+ }
152
+ return list;
153
+ }
154
+ makeField(field, overrides) {
155
+ if (field.type === 'boolean') {
156
+ return [true, false][Math.floor(Math.random() * 2)];
157
+ }
158
+ else if (field.type === 'date') {
159
+ return Mock.date();
160
+ }
161
+ else if (field.type === 'datetime') {
162
+ return Mock.datetime();
163
+ }
164
+ else if (field.type === 'decimal') {
165
+ return Mock.decimal();
166
+ }
167
+ else if (field.type === 'dict') {
168
+ const dict = {};
169
+ for (let i = 0; i < 3; i++) {
170
+ dict[Mock.string()] = this.makeField(field.children.__dict);
171
+ }
172
+ return dict;
173
+ }
174
+ else if (field.type === 'enum') {
175
+ // TODO
176
+ return 'TODO';
177
+ }
178
+ else if (field.type === 'file') {
179
+ // TODO
180
+ return undefined;
181
+ }
182
+ else if (field.type === 'float') {
183
+ return Mock.float();
184
+ }
185
+ else if (field.type === 'int') {
186
+ return Mock.int();
187
+ }
188
+ else if (field.type === 'obj') {
189
+ return this.makeObj(field.children, overrides);
190
+ }
191
+ else if (field.type === 'string') {
192
+ return Mock.string();
193
+ }
194
+ else if (field.type === 'unknown') {
195
+ // TODO
196
+ return undefined;
197
+ }
198
+ }
199
+ }
123
200
  class Mock {
124
201
  bucket(module, bucket) {
125
202
  return new BucketMock(module, bucket);
126
203
  }
204
+ message(module, message) {
205
+ return new MessageMock(module, message);
206
+ }
207
+ static boolean() {
208
+ return [true, false][Math.floor(Math.random() * 2)];
209
+ }
210
+ static date() {
211
+ return date_1.NesoiDate.now();
212
+ }
213
+ static datetime() {
214
+ return datetime_1.NesoiDatetime.now();
215
+ }
216
+ static decimal() {
217
+ return new decimal_1.NesoiDecimal(`${Math.floor(Math.random() * 999)}.${Math.floor(Math.random() * 999)}`);
218
+ }
219
+ static float() {
220
+ return Math.random();
221
+ }
222
+ static int() {
223
+ return Math.floor(Math.random() * 999);
224
+ }
225
+ static string() {
226
+ const charset = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
227
+ let str = 'TEST_';
228
+ for (let i = 0; i < 8; i++) {
229
+ str += charset[Math.floor(Math.random() * charset.length)];
230
+ }
231
+ return str;
232
+ }
127
233
  }
128
234
  exports.Mock = Mock;