@magek/core 0.0.6 → 0.0.7

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 (100) hide show
  1. package/dist/authorizer.js +1 -1
  2. package/dist/command-dispatcher.js +47 -41
  3. package/dist/core-concepts/data-migration/entities/data-migration-entity.js +5 -2
  4. package/dist/core-concepts/data-migration/events/data-migration-finished.js +3 -1
  5. package/dist/core-concepts/data-migration/events/data-migration-started.js +3 -1
  6. package/dist/core-concepts/data-migration/events/entity-migrated.js +4 -0
  7. package/dist/core-concepts/touch-entity/events/entity-touched.js +2 -0
  8. package/dist/data-migrations.js +59 -54
  9. package/dist/decorators/command.d.ts +4 -11
  10. package/dist/decorators/command.js +10 -18
  11. package/dist/decorators/data-migration.d.ts +4 -1
  12. package/dist/decorators/data-migration.js +3 -1
  13. package/dist/decorators/decorator-types.d.ts +50 -0
  14. package/dist/decorators/decorator-types.js +11 -0
  15. package/dist/decorators/decorator-utils.d.ts +1 -0
  16. package/dist/decorators/decorator-utils.js +2 -0
  17. package/dist/decorators/entity.d.ts +7 -15
  18. package/dist/decorators/entity.js +27 -37
  19. package/dist/decorators/event-handler.d.ts +11 -1
  20. package/dist/decorators/event-handler.js +13 -1
  21. package/dist/decorators/event.d.ts +4 -1
  22. package/dist/decorators/event.js +3 -2
  23. package/dist/decorators/field-metadata-reader.d.ts +8 -3
  24. package/dist/decorators/field-metadata-reader.js +50 -62
  25. package/dist/decorators/field.d.ts +23 -0
  26. package/dist/decorators/field.js +41 -0
  27. package/dist/decorators/global-error-handler.d.ts +10 -1
  28. package/dist/decorators/global-error-handler.js +9 -1
  29. package/dist/decorators/global-event-handler.d.ts +10 -1
  30. package/dist/decorators/global-event-handler.js +9 -1
  31. package/dist/decorators/health-sensor.d.ts +4 -1
  32. package/dist/decorators/health-sensor.js +3 -2
  33. package/dist/decorators/index.d.ts +3 -0
  34. package/dist/decorators/index.js +2 -0
  35. package/dist/decorators/metadata.d.ts +17 -1
  36. package/dist/decorators/metadata.js +22 -22
  37. package/dist/decorators/non-exposed.d.ts +13 -2
  38. package/dist/decorators/non-exposed.js +22 -20
  39. package/dist/decorators/notification.d.ts +6 -18
  40. package/dist/decorators/notification.js +10 -50
  41. package/dist/decorators/projects.d.ts +5 -18
  42. package/dist/decorators/projects.js +23 -54
  43. package/dist/decorators/query.d.ts +11 -1
  44. package/dist/decorators/query.js +18 -4
  45. package/dist/decorators/read-model.d.ts +13 -27
  46. package/dist/decorators/read-model.js +45 -77
  47. package/dist/decorators/role.d.ts +9 -3
  48. package/dist/decorators/role.js +8 -3
  49. package/dist/decorators/scheduled-command.d.ts +4 -1
  50. package/dist/decorators/scheduled-command.js +3 -1
  51. package/dist/decorators/schema-migration.d.ts +11 -27
  52. package/dist/decorators/schema-migration.js +32 -77
  53. package/dist/decorators/sequenced-by.d.ts +7 -25
  54. package/dist/decorators/sequenced-by.js +11 -71
  55. package/dist/event-dispatcher.js +29 -24
  56. package/dist/event-processor.js +106 -103
  57. package/dist/event-stream-consumer.js +25 -20
  58. package/dist/event-stream-producer.js +22 -17
  59. package/dist/events-reader.js +1 -0
  60. package/dist/global-error-dispatcher.js +3 -2
  61. package/dist/graphql-dispatcher.js +161 -156
  62. package/dist/index.js +4 -0
  63. package/dist/instrumentation/decorator/trace.d.ts +11 -3
  64. package/dist/instrumentation/decorator/trace.js +17 -71
  65. package/dist/magek.js +2 -2
  66. package/dist/query-dispatcher.js +2 -0
  67. package/dist/read-model-schema-migrator.js +71 -68
  68. package/dist/read-models-reader.js +178 -180
  69. package/dist/register-handler.js +3 -3
  70. package/dist/scheduled-command-dispatcher.js +48 -42
  71. package/dist/schema-migrator.js +63 -59
  72. package/dist/sensor/health/health-service.js +2 -1
  73. package/dist/services/event-store.js +221 -224
  74. package/dist/services/graphql/graphql-generator.js +11 -8
  75. package/dist/services/graphql/graphql-mutation-generator.js +4 -0
  76. package/dist/services/graphql/graphql-query-generator.js +14 -0
  77. package/dist/services/graphql/graphql-subcriptions-generator.js +7 -0
  78. package/dist/services/graphql/graphql-type-informer.js +4 -3
  79. package/dist/services/graphql/query-generators/graphql-query-by-keys-generator.js +4 -0
  80. package/dist/services/graphql/query-generators/graphql-query-events-generator.js +3 -0
  81. package/dist/services/graphql/query-generators/graphql-query-filters-generator.js +6 -0
  82. package/dist/services/graphql/query-generators/graphql-query-generator.js +4 -0
  83. package/dist/services/graphql/query-generators/graphql-query-listed-generator.js +7 -0
  84. package/dist/services/graphql/query-helpers/graphql-handled-fields-generator.js +5 -2
  85. package/dist/services/graphql/query-helpers/graphql-query-filter-arguments-builder.js +3 -0
  86. package/dist/services/graphql/query-helpers/graphql-query-filter-fields-builder.js +4 -0
  87. package/dist/services/graphql/query-helpers/graphql-query-sort-builder.js +4 -2
  88. package/dist/services/graphql/websocket-protocol/graphql-websocket-protocol.js +5 -3
  89. package/dist/services/pub-sub/read-model-pub-sub.js +1 -0
  90. package/dist/services/raw-events-parser.js +1 -1
  91. package/dist/services/read-model-store.js +16 -17
  92. package/dist/services/token-verifiers/jwks-uri-token-verifier.js +8 -4
  93. package/dist/services/token-verifiers/public-key-token-verifier.js +4 -2
  94. package/dist/services/token-verifiers/role-based-token-verifier.js +2 -1
  95. package/dist/services/token-verifiers/utilities.js +1 -1
  96. package/dist/subscribers-notifier.js +98 -92
  97. package/dist/token-verifier.js +2 -1
  98. package/package.json +4 -4
  99. package/dist/decorators/stage3-utils.d.ts +0 -6
  100. package/dist/decorators/stage3-utils.js +0 -25
@@ -6,49 +6,55 @@ const common_1 = require("@magek/common");
6
6
  const register_handler_1 = require("./register-handler");
7
7
  const global_error_dispatcher_1 = require("./global-error-dispatcher");
8
8
  const instrumentation_1 = require("./instrumentation");
9
- class MagekScheduledCommandDispatcher {
10
- constructor(config) {
11
- this.config = config;
12
- this.globalErrorDispatcher = new global_error_dispatcher_1.MagekGlobalErrorDispatcher(config);
13
- }
14
- async dispatchCommand(commandEnvelope) {
15
- const logger = (0, common_1.getLogger)(this.config, 'MagekScheduledCommandDispatcher#dispatchCommand');
16
- logger.debug('Dispatching the following scheduled command envelope: ', commandEnvelope);
17
- const commandMetadata = this.config.scheduledCommandHandlers[commandEnvelope.typeName];
18
- if (!commandMetadata) {
19
- throw new common_1.NotFoundError(`Could not find a proper handler for ${commandEnvelope.typeName}`);
9
+ let MagekScheduledCommandDispatcher = (() => {
10
+ let _instanceExtraInitializers = [];
11
+ let _dispatchCommand_decorators;
12
+ return class MagekScheduledCommandDispatcher {
13
+ static {
14
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
15
+ _dispatchCommand_decorators = [(0, instrumentation_1.trace)(common_1.TraceActionTypes.SCHEDULED_COMMAND_HANDLER)];
16
+ tslib_1.__esDecorate(this, null, _dispatchCommand_decorators, { kind: "method", name: "dispatchCommand", static: false, private: false, access: { has: obj => "dispatchCommand" in obj, get: obj => obj.dispatchCommand }, metadata: _metadata }, null, _instanceExtraInitializers);
17
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
20
18
  }
21
- const commandClass = commandMetadata.class;
22
- logger.debug('Found the following command:', commandClass.name);
23
- const command = commandClass;
24
- const register = new common_1.Register(commandEnvelope.requestID, {}, register_handler_1.RegisterHandler.flush, undefined, commandEnvelope.context);
25
- try {
26
- logger.debug('Calling "handle" method on command: ', command);
27
- await command.handle(register);
19
+ config = tslib_1.__runInitializers(this, _instanceExtraInitializers);
20
+ globalErrorDispatcher;
21
+ constructor(config) {
22
+ this.config = config;
23
+ this.globalErrorDispatcher = new global_error_dispatcher_1.MagekGlobalErrorDispatcher(config);
28
24
  }
29
- catch (e) {
30
- const error = await this.globalErrorDispatcher.dispatch(new common_1.ScheduleCommandGlobalError(commandEnvelope, commandMetadata, e));
31
- if (error)
32
- throw error;
25
+ async dispatchCommand(commandEnvelope) {
26
+ const logger = (0, common_1.getLogger)(this.config, 'MagekScheduledCommandDispatcher#dispatchCommand');
27
+ logger.debug('Dispatching the following scheduled command envelope: ', commandEnvelope);
28
+ const commandMetadata = this.config.scheduledCommandHandlers[commandEnvelope.typeName];
29
+ if (!commandMetadata) {
30
+ throw new common_1.NotFoundError(`Could not find a proper handler for ${commandEnvelope.typeName}`);
31
+ }
32
+ const commandClass = commandMetadata.class;
33
+ logger.debug('Found the following command:', commandClass.name);
34
+ const command = commandClass;
35
+ const register = new common_1.Register(commandEnvelope.requestID, {}, register_handler_1.RegisterHandler.flush, undefined, commandEnvelope.context);
36
+ try {
37
+ logger.debug('Calling "handle" method on command: ', command);
38
+ await command.handle(register);
39
+ }
40
+ catch (e) {
41
+ const error = await this.globalErrorDispatcher.dispatch(new common_1.ScheduleCommandGlobalError(commandEnvelope, commandMetadata, e));
42
+ if (error)
43
+ throw error;
44
+ }
45
+ logger.debug('Command dispatched with register: ', register);
46
+ await register_handler_1.RegisterHandler.handle(this.config, register);
33
47
  }
34
- logger.debug('Command dispatched with register: ', register);
35
- await register_handler_1.RegisterHandler.handle(this.config, register);
36
- }
37
- /**
38
- * Entry point to dispatch scheduled commands.
39
- * @param request The incoming request
40
- */
41
- async dispatch(request) {
42
- const logger = (0, common_1.getLogger)(this.config, 'MagekScheduledCommandDispatcher#dispatch');
43
- const envelopeOrError = await this.config.runtime.scheduled.rawToEnvelope(this.config, request);
44
- logger.debug('Received ScheduledCommand envelope...', envelopeOrError);
45
- await this.dispatchCommand(envelopeOrError);
46
- }
47
- }
48
+ /**
49
+ * Entry point to dispatch scheduled commands.
50
+ * @param request The incoming request
51
+ */
52
+ async dispatch(request) {
53
+ const logger = (0, common_1.getLogger)(this.config, 'MagekScheduledCommandDispatcher#dispatch');
54
+ const envelopeOrError = await this.config.runtime.scheduled.rawToEnvelope(this.config, request);
55
+ logger.debug('Received ScheduledCommand envelope...', envelopeOrError);
56
+ await this.dispatchCommand(envelopeOrError);
57
+ }
58
+ };
59
+ })();
48
60
  exports.MagekScheduledCommandDispatcher = MagekScheduledCommandDispatcher;
49
- tslib_1.__decorate([
50
- (0, instrumentation_1.Trace)(common_1.TraceActionTypes.SCHEDULED_COMMAND_HANDLER),
51
- tslib_1.__metadata("design:type", Function),
52
- tslib_1.__metadata("design:paramtypes", [Object]),
53
- tslib_1.__metadata("design:returntype", Promise)
54
- ], MagekScheduledCommandDispatcher.prototype, "dispatchCommand", null);
@@ -1,71 +1,75 @@
1
1
  "use strict";
2
- var _a;
3
2
  Object.defineProperty(exports, "__esModule", { value: true });
4
3
  exports.SchemaMigrator = void 0;
5
4
  const tslib_1 = require("tslib");
6
5
  const common_1 = require("@magek/common");
7
6
  const instrumentation_1 = require("./instrumentation");
8
- class SchemaMigrator {
9
- constructor(config) {
10
- this.config = config;
11
- }
12
- async migrate(conceptEnvelope) {
13
- this.checkVersionRange(conceptEnvelope);
14
- if (this.needsMigration(conceptEnvelope)) {
15
- return await this.applyAllMigrations(conceptEnvelope);
7
+ let SchemaMigrator = (() => {
8
+ let _instanceExtraInitializers = [];
9
+ let _migrate_decorators;
10
+ return class SchemaMigrator {
11
+ static {
12
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
13
+ _migrate_decorators = [(0, instrumentation_1.trace)(common_1.TraceActionTypes.SCHEMA_MIGRATOR_MIGRATE)];
14
+ tslib_1.__esDecorate(this, null, _migrate_decorators, { kind: "method", name: "migrate", static: false, private: false, access: { has: obj => "migrate" in obj, get: obj => obj.migrate }, metadata: _metadata }, null, _instanceExtraInitializers);
15
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
16
16
  }
17
- return conceptEnvelope; // The current version is exactly the same as the version of the concept
18
- }
19
- checkVersionRange(conceptEnvelope) {
20
- if (conceptEnvelope.version < 1) {
21
- throw new common_1.InvalidVersionError(`Received an invalid schema version value, ${conceptEnvelope.version}, for ${conceptEnvelope.typeName}. ` +
22
- 'Versions must be greater than 0');
17
+ config = tslib_1.__runInitializers(this, _instanceExtraInitializers);
18
+ constructor(config) {
19
+ this.config = config;
23
20
  }
24
- const currentVersion = this.config.currentVersionFor(conceptEnvelope.typeName);
25
- if (currentVersion < conceptEnvelope.version) {
26
- throw new common_1.InvalidVersionError(`Can not migrate schema an unknown version: The current schema version of ${conceptEnvelope.typeName} is ${currentVersion}, which is ` +
27
- `lower than the received version ${conceptEnvelope.version}`);
21
+ async migrate(conceptEnvelope) {
22
+ this.checkVersionRange(conceptEnvelope);
23
+ if (this.needsMigration(conceptEnvelope)) {
24
+ return await this.applyAllMigrations(conceptEnvelope);
25
+ }
26
+ return conceptEnvelope; // The current version is exactly the same as the version of the concept
28
27
  }
29
- }
30
- needsMigration(conceptEnvelope) {
31
- const currentVersion = this.config.currentVersionFor(conceptEnvelope.typeName);
32
- return currentVersion > conceptEnvelope.version;
33
- }
34
- async applyAllMigrations(oldConceptEnvelope) {
35
- const logger = (0, common_1.getLogger)(this.config, 'SchemaMigrator#applyAllMigrations');
36
- const currentVersion = this.config.currentVersionFor(oldConceptEnvelope.typeName);
37
- const oldVersion = oldConceptEnvelope.version;
38
- logger.info(`Migrating schema ${oldConceptEnvelope.typeName} from version ${oldVersion} to version ${currentVersion}`);
39
- logger.debug('Envelope before schema migration:\n', oldConceptEnvelope);
40
- const migrations = this.config.schemaMigrations[oldConceptEnvelope.typeName];
41
- let migratedConceptValue = oldConceptEnvelope.value;
42
- for (let toVersion = oldVersion + 1; toVersion <= currentVersion; toVersion++) {
43
- migratedConceptValue = await this.applyMigration(migratedConceptValue, migrations.get(toVersion));
28
+ checkVersionRange(conceptEnvelope) {
29
+ if (conceptEnvelope.version < 1) {
30
+ throw new common_1.InvalidVersionError(`Received an invalid schema version value, ${conceptEnvelope.version}, for ${conceptEnvelope.typeName}. ` +
31
+ 'Versions must be greater than 0');
32
+ }
33
+ const currentVersion = this.config.currentVersionFor(conceptEnvelope.typeName);
34
+ if (currentVersion < conceptEnvelope.version) {
35
+ throw new common_1.InvalidVersionError(`Can not migrate schema an unknown version: The current schema version of ${conceptEnvelope.typeName} is ${currentVersion}, which is ` +
36
+ `lower than the received version ${conceptEnvelope.version}`);
37
+ }
44
38
  }
45
- const newConceptEnvelope = {
46
- ...oldConceptEnvelope,
47
- value: migratedConceptValue,
48
- version: currentVersion,
49
- };
50
- logger.debug('Envelope after migration:\n', newConceptEnvelope);
51
- return newConceptEnvelope;
52
- }
53
- async applyMigration(oldValue, migration) {
54
- const logger = (0, common_1.getLogger)(this.config, 'SchemaMigrator#applyMigration');
55
- if (!migration) {
56
- throw new common_1.InvalidVersionError('Received an undefined schema migration value. Are there "gaps" between the versions of the schema migrations?');
39
+ needsMigration(conceptEnvelope) {
40
+ const currentVersion = this.config.currentVersionFor(conceptEnvelope.typeName);
41
+ return currentVersion > conceptEnvelope.version;
57
42
  }
58
- const oldConcept = Object.assign(new migration.fromSchema(), oldValue);
59
- const migrationMethod = new migration.migrationClass()[migration.methodName];
60
- const newConcept = await migrationMethod(oldConcept);
61
- logger.debug(`Partial migration finished. Migrated from oldValue=${oldConcept} to newValue=${newConcept}`);
62
- return newConcept;
63
- }
64
- }
43
+ async applyAllMigrations(oldConceptEnvelope) {
44
+ const logger = (0, common_1.getLogger)(this.config, 'SchemaMigrator#applyAllMigrations');
45
+ const currentVersion = this.config.currentVersionFor(oldConceptEnvelope.typeName);
46
+ const oldVersion = oldConceptEnvelope.version;
47
+ logger.info(`Migrating schema ${oldConceptEnvelope.typeName} from version ${oldVersion} to version ${currentVersion}`);
48
+ logger.debug('Envelope before schema migration:\n', oldConceptEnvelope);
49
+ const migrations = this.config.schemaMigrations[oldConceptEnvelope.typeName];
50
+ let migratedConceptValue = oldConceptEnvelope.value;
51
+ for (let toVersion = oldVersion + 1; toVersion <= currentVersion; toVersion++) {
52
+ migratedConceptValue = await this.applyMigration(migratedConceptValue, migrations.get(toVersion));
53
+ }
54
+ const newConceptEnvelope = {
55
+ ...oldConceptEnvelope,
56
+ value: migratedConceptValue,
57
+ version: currentVersion,
58
+ };
59
+ logger.debug('Envelope after migration:\n', newConceptEnvelope);
60
+ return newConceptEnvelope;
61
+ }
62
+ async applyMigration(oldValue, migration) {
63
+ const logger = (0, common_1.getLogger)(this.config, 'SchemaMigrator#applyMigration');
64
+ if (!migration) {
65
+ throw new common_1.InvalidVersionError('Received an undefined schema migration value. Are there "gaps" between the versions of the schema migrations?');
66
+ }
67
+ const oldConcept = Object.assign(new migration.fromSchema(), oldValue);
68
+ const migrationMethod = new migration.migrationClass()[migration.methodName];
69
+ const newConcept = await migrationMethod(oldConcept);
70
+ logger.debug(`Partial migration finished. Migrated from oldValue=${oldConcept} to newValue=${newConcept}`);
71
+ return newConcept;
72
+ }
73
+ };
74
+ })();
65
75
  exports.SchemaMigrator = SchemaMigrator;
66
- tslib_1.__decorate([
67
- (0, instrumentation_1.Trace)(common_1.TraceActionTypes.SCHEMA_MIGRATOR_MIGRATE),
68
- tslib_1.__metadata("design:type", Function),
69
- tslib_1.__metadata("design:paramtypes", [typeof (_a = typeof TMigrableEnvelope !== "undefined" && TMigrableEnvelope) === "function" ? _a : Object]),
70
- tslib_1.__metadata("design:returntype", Promise)
71
- ], SchemaMigrator.prototype, "migrate", null);
@@ -11,6 +11,7 @@ const authorizer_1 = require("../../authorizer");
11
11
  * and dispatching the health checks to the corresponding health indicators
12
12
  */
13
13
  class MagekHealthService {
14
+ config;
14
15
  constructor(config) {
15
16
  this.config = config;
16
17
  }
@@ -52,7 +53,7 @@ class MagekHealthService {
52
53
  : current.healthIndicatorConfiguration.name,
53
54
  id: current.healthIndicatorConfiguration.id,
54
55
  };
55
- if (children && (children === null || children === void 0 ? void 0 : children.length) > 0) {
56
+ if (children && children?.length > 0) {
56
57
  newResult.components = await this.healthProviderResolver(children, healthProviders);
57
58
  }
58
59
  result.push(newResult);