@squiz/optimization-utils 2.0.3 → 3.1.0

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 (68) hide show
  1. package/dist/array/__tests__/chunkify.test.d.ts +1 -0
  2. package/dist/array/__tests__/chunkify.test.js +29 -0
  3. package/dist/array/__tests__/chunkify.test.js.map +1 -0
  4. package/dist/array/chunkify.d.ts +1 -0
  5. package/dist/array/chunkify.js +15 -0
  6. package/dist/array/chunkify.js.map +1 -0
  7. package/dist/array/index.d.ts +2 -0
  8. package/dist/array/index.js +19 -0
  9. package/dist/array/index.js.map +1 -0
  10. package/dist/array/uniqueWith.d.ts +1 -0
  11. package/dist/array/uniqueWith.js +6 -0
  12. package/dist/array/uniqueWith.js.map +1 -0
  13. package/dist/data-structures/Result.d.ts +22 -0
  14. package/dist/data-structures/Result.js +48 -0
  15. package/dist/data-structures/Result.js.map +1 -0
  16. package/dist/data-structures/index.d.ts +1 -0
  17. package/dist/data-structures/index.js +18 -0
  18. package/dist/data-structures/index.js.map +1 -0
  19. package/dist/index.d.ts +4 -14
  20. package/dist/index.js +4 -14
  21. package/dist/index.js.map +1 -1
  22. package/dist/object/index.d.ts +1 -0
  23. package/dist/object/index.js +18 -0
  24. package/dist/object/index.js.map +1 -0
  25. package/dist/{event/AggregateRoot.js → types/class-utilities-types.js} +1 -1
  26. package/dist/types/class-utilities-types.js.map +1 -0
  27. package/dist/types/index.d.ts +1 -0
  28. package/dist/types/index.js +18 -0
  29. package/dist/types/index.js.map +1 -0
  30. package/package.json +23 -15
  31. package/dist/cloudflare/CloudflareKVHttpService.d.ts +0 -11
  32. package/dist/cloudflare/CloudflareKVHttpService.js +0 -19
  33. package/dist/cloudflare/CloudflareKVHttpService.js.map +0 -1
  34. package/dist/cloudflare/ImplCloudflareKVHttpService.d.ts +0 -22
  35. package/dist/cloudflare/ImplCloudflareKVHttpService.js +0 -94
  36. package/dist/cloudflare/ImplCloudflareKVHttpService.js.map +0 -1
  37. package/dist/config/ConfigurationLoader.d.ts +0 -23
  38. package/dist/config/ConfigurationLoader.js +0 -98
  39. package/dist/config/ConfigurationLoader.js.map +0 -1
  40. package/dist/date/DateManipulator.d.ts +0 -6
  41. package/dist/date/DateManipulator.js +0 -21
  42. package/dist/date/DateManipulator.js.map +0 -1
  43. package/dist/event/AggregateRoot.d.ts +0 -4
  44. package/dist/event/AggregateRoot.js.map +0 -1
  45. package/dist/event/DomainEvent.d.ts +0 -14
  46. package/dist/event/DomainEvent.js +0 -28
  47. package/dist/event/DomainEvent.js.map +0 -1
  48. package/dist/event/DynamoDBEventMapper.d.ts +0 -39
  49. package/dist/event/DynamoDBEventMapper.js +0 -58
  50. package/dist/event/DynamoDBEventMapper.js.map +0 -1
  51. package/dist/event/EventHandler.d.ts +0 -14
  52. package/dist/event/EventHandler.js +0 -43
  53. package/dist/event/EventHandler.js.map +0 -1
  54. package/dist/scheduler/EventBridgeScheduler.d.ts +0 -21
  55. package/dist/scheduler/EventBridgeScheduler.js +0 -130
  56. package/dist/scheduler/EventBridgeScheduler.js.map +0 -1
  57. package/dist/scheduler/Scheduler.d.ts +0 -21
  58. package/dist/scheduler/Scheduler.js +0 -17
  59. package/dist/scheduler/Scheduler.js.map +0 -1
  60. package/dist/testing/mock.d.ts +0 -4
  61. package/dist/testing/mock.js +0 -17
  62. package/dist/testing/mock.js.map +0 -1
  63. package/dist/typesUtils/DynamoDB.d.ts +0 -4
  64. package/dist/typesUtils/DynamoDB.js +0 -3
  65. package/dist/typesUtils/DynamoDB.js.map +0 -1
  66. package/dist/typesUtils/utilities.js +0 -3
  67. package/dist/typesUtils/utilities.js.map +0 -1
  68. /package/dist/{typesUtils/utilities.d.ts → types/class-utilities-types.d.ts} +0 -0
@@ -1,98 +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 __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
22
- return c > 3 && r && Object.defineProperty(target, key, r), r;
23
- };
24
- var __importStar = (this && this.__importStar) || function (mod) {
25
- if (mod && mod.__esModule) return mod;
26
- var result = {};
27
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
28
- __setModuleDefault(result, mod);
29
- return result;
30
- };
31
- var __metadata = (this && this.__metadata) || function (k, v) {
32
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
33
- };
34
- Object.defineProperty(exports, "__esModule", { value: true });
35
- exports.LambdaLayerAppConfigConfigurationLoader = exports.DotEnvConfigurationLoader = exports.ConfigurationLoader = void 0;
36
- const dotenv_1 = require("dotenv");
37
- const process = __importStar(require("process"));
38
- const path = __importStar(require("path"));
39
- const inversify_1 = require("inversify");
40
- const optimization_http_client_1 = require("@squiz/optimization-http-client");
41
- class ConfigurationLoader {
42
- }
43
- exports.ConfigurationLoader = ConfigurationLoader;
44
- let DotEnvConfigurationLoader = class DotEnvConfigurationLoader {
45
- schema;
46
- constructor(schema) {
47
- this.schema = schema;
48
- }
49
- async load() {
50
- const output = (0, dotenv_1.config)({
51
- path: path.join(__dirname, '../../../../env/.env'),
52
- });
53
- if (output.error) {
54
- throw output.error;
55
- }
56
- return this.schema.parse(process.env);
57
- }
58
- };
59
- exports.DotEnvConfigurationLoader = DotEnvConfigurationLoader;
60
- exports.DotEnvConfigurationLoader = DotEnvConfigurationLoader = __decorate([
61
- (0, inversify_1.injectable)(),
62
- __metadata("design:paramtypes", [Object])
63
- ], DotEnvConfigurationLoader);
64
- let LambdaLayerAppConfigConfigurationLoader = class LambdaLayerAppConfigConfigurationLoader {
65
- opts;
66
- httpRequestBuilderFactory;
67
- schema;
68
- constructor(opts, httpRequestBuilderFactory, schema) {
69
- this.opts = opts;
70
- this.httpRequestBuilderFactory = httpRequestBuilderFactory;
71
- this.schema = schema;
72
- }
73
- async load() {
74
- const configuration = await this.fetchFromApi();
75
- return this.schema.parse(configuration);
76
- }
77
- async fetchFromApi() {
78
- const application = this.opts.appConfigName;
79
- const environment = this.opts.env;
80
- const configuration = this.opts.configurationName;
81
- // the http://localhost:2772 represents the URL to the AWS AppConfig Lambda layer
82
- // the documentation: https://docs.aws.amazon.com/appconfig/latest/userguide/appconfig-integration-lambda-extensions.html
83
- const url = `http://localhost:2772` +
84
- `/applications/${application}/environments/${environment}/configurations/${configuration}`;
85
- const response = await this.httpRequestBuilderFactory
86
- .create()
87
- .url(url)
88
- .method(optimization_http_client_1.HttpMethod.GET)
89
- .sendRequest();
90
- return response.body;
91
- }
92
- };
93
- exports.LambdaLayerAppConfigConfigurationLoader = LambdaLayerAppConfigConfigurationLoader;
94
- exports.LambdaLayerAppConfigConfigurationLoader = LambdaLayerAppConfigConfigurationLoader = __decorate([
95
- (0, inversify_1.injectable)(),
96
- __metadata("design:paramtypes", [Object, optimization_http_client_1.HttpRequestBuilderFactory, Object])
97
- ], LambdaLayerAppConfigConfigurationLoader);
98
- //# sourceMappingURL=ConfigurationLoader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ConfigurationLoader.js","sourceRoot":"","sources":["../../src/config/ConfigurationLoader.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mCAAgC;AAChC,iDAAmC;AACnC,2CAA6B;AAC7B,yCAAuC;AAEvC,8EAGyC;AAEzC,MAAsB,mBAAmB;CAExC;AAFD,kDAEC;AAGM,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;IAGP;IAA7B,YAA6B,MAAe;QAAf,WAAM,GAAN,MAAM,CAAS;IAAG,CAAC;IAEhD,KAAK,CAAC,IAAI;QACR,MAAM,MAAM,GAAG,IAAA,eAAM,EAAC;YACpB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,sBAAsB,CAAC;SACnD,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,MAAM,CAAC,KAAK,CAAC;QACrB,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACxC,CAAC;CACF,CAAA;AAhBY,8DAAyB;oCAAzB,yBAAyB;IADrC,IAAA,sBAAU,GAAE;;GACA,yBAAyB,CAgBrC;AASM,IAAM,uCAAuC,GAA7C,MAAM,uCAAuC;IAI/B;IACA;IACA;IAHnB,YACmB,IAAmD,EACnD,yBAAoD,EACpD,MAAe;QAFf,SAAI,GAAJ,IAAI,CAA+C;QACnD,8BAAyB,GAAzB,yBAAyB,CAA2B;QACpD,WAAM,GAAN,MAAM,CAAS;IAC/B,CAAC;IAEJ,KAAK,CAAC,IAAI;QACR,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAEhD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAC1C,CAAC;IAEO,KAAK,CAAC,YAAY;QACxB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;QAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QAClC,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;QAClD,iFAAiF;QACjF,yHAAyH;QACzH,MAAM,GAAG,GACP,uBAAuB;YACvB,iBAAiB,WAAW,iBAAiB,WAAW,mBAAmB,aAAa,EAAE,CAAC;QAE7F,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,yBAAyB;aAClD,MAAM,EAAE;aACR,GAAG,CAAC,GAAG,CAAC;aACR,MAAM,CAAC,qCAAU,CAAC,GAAG,CAAC;aACtB,WAAW,EAAE,CAAC;QAEjB,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;CACF,CAAA;AAjCY,0FAAuC;kDAAvC,uCAAuC;IADnD,IAAA,sBAAU,GAAE;6CAMmC,oDAAyB;GAL5D,uCAAuC,CAiCnD"}
@@ -1,6 +0,0 @@
1
- export type DateManipulator = {
2
- addDays(days: number): DateManipulator;
3
- addMonths(months: number): DateManipulator;
4
- valueOf(): Date;
5
- };
6
- export declare function DateManipulator(input: Date): DateManipulator;
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DateManipulator = DateManipulator;
4
- function DateManipulator(input) {
5
- const addDays = (days) => {
6
- const copiedDate = new Date(input);
7
- copiedDate.setDate(copiedDate.getDate() + days);
8
- return DateManipulator(copiedDate);
9
- };
10
- const addMonths = (months) => {
11
- const copiedDate = new Date(input);
12
- copiedDate.setMonth(copiedDate.getMonth() + months);
13
- return DateManipulator(copiedDate);
14
- };
15
- return {
16
- addDays,
17
- addMonths,
18
- valueOf: () => new Date(input),
19
- };
20
- }
21
- //# sourceMappingURL=DateManipulator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DateManipulator.js","sourceRoot":"","sources":["../../src/date/DateManipulator.ts"],"names":[],"mappings":";;AAMA,0CAsBC;AAtBD,SAAgB,eAAe,CAAC,KAAW;IACzC,MAAM,OAAO,GAAG,CAAC,IAAY,EAAmB,EAAE;QAChD,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;QAEnC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;QAEhD,OAAO,eAAe,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,CAAC,MAAc,EAAmB,EAAE;QACpD,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;QAEnC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC,CAAC;QAEpD,OAAO,eAAe,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC,CAAC;IAEF,OAAO;QACL,OAAO;QACP,SAAS;QACT,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC;KAC/B,CAAC;AACJ,CAAC"}
@@ -1,4 +0,0 @@
1
- import { DomainEvent } from './DomainEvent';
2
- export interface AggregateRoot {
3
- events(): Array<DomainEvent>;
4
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"AggregateRoot.js","sourceRoot":"","sources":["../../src/event/AggregateRoot.ts"],"names":[],"mappings":""}
@@ -1,14 +0,0 @@
1
- import 'reflect-metadata';
2
- export interface DomainEvent<TData extends Record<string, unknown> = Record<string, unknown>> {
3
- readonly eventId: string;
4
- readonly name: string;
5
- readonly detail: TData;
6
- readonly time: Date;
7
- readonly version: string;
8
- readonly entityId: string;
9
- }
10
- export type DomainEventConstructor = new (...any: Array<any>) => DomainEvent;
11
- export type DomainEventName = string;
12
- export declare function getDomainEventType(name: DomainEventName): DomainEventConstructor | undefined;
13
- export declare function getDomainMetadata(): Array<DomainEventConstructor>;
14
- export declare function AsDomainEvent(): ClassDecorator;
@@ -1,28 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getDomainEventType = getDomainEventType;
4
- exports.getDomainMetadata = getDomainMetadata;
5
- exports.AsDomainEvent = AsDomainEvent;
6
- require("reflect-metadata");
7
- const DOMAIN_EVENT_SYMBOL = Symbol();
8
- function getDomainEventType(name) {
9
- const domainEvents = getDomainMetadata();
10
- return domainEvents.find((d) => d.name === name);
11
- }
12
- function getDomainMetadata() {
13
- return Reflect.getMetadata(DOMAIN_EVENT_SYMBOL, Object) ?? [];
14
- }
15
- function setDomainMetadata(domainEvent) {
16
- const metadata = getDomainMetadata();
17
- const isDomainEventExist = getDomainEventType(domainEvent.name);
18
- if (isDomainEventExist) {
19
- throw new Error(`The DomainEvent Name has been used two times: "${domainEvent.name}". Each event name should be uniq`);
20
- }
21
- Reflect.defineMetadata(DOMAIN_EVENT_SYMBOL, [...metadata, domainEvent], Object);
22
- }
23
- function AsDomainEvent() {
24
- return (target) => {
25
- setDomainMetadata(target);
26
- };
27
- }
28
- //# sourceMappingURL=DomainEvent.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DomainEvent.js","sourceRoot":"","sources":["../../src/event/DomainEvent.ts"],"names":[],"mappings":";;AAmBA,gDAMC;AAED,8CAEC;AAmBD,sCAIC;AApDD,4BAA0B;AAa1B,MAAM,mBAAmB,GAAG,MAAM,EAAE,CAAC;AAMrC,SAAgB,kBAAkB,CAChC,IAAqB;IAErB,MAAM,YAAY,GAAG,iBAAiB,EAAE,CAAC;IAEzC,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACnD,CAAC;AAED,SAAgB,iBAAiB;IAC/B,OAAO,OAAO,CAAC,WAAW,CAAC,mBAAmB,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;AAChE,CAAC;AAED,SAAS,iBAAiB,CAAC,WAAmC;IAC5D,MAAM,QAAQ,GAAG,iBAAiB,EAAE,CAAC;IACrC,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAEhE,IAAI,kBAAkB,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,kDAAkD,WAAW,CAAC,IAAI,mCAAmC,CACtG,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,cAAc,CACpB,mBAAmB,EACnB,CAAC,GAAG,QAAQ,EAAE,WAAW,CAAC,EAC1B,MAAM,CACP,CAAC;AACJ,CAAC;AAED,SAAgB,aAAa;IAC3B,OAAO,CAAC,MAAM,EAAE,EAAE;QAChB,iBAAiB,CAAC,MAA2C,CAAC,CAAC;IACjE,CAAC,CAAC;AACJ,CAAC"}
@@ -1,39 +0,0 @@
1
- import { DomainEvent } from './DomainEvent';
2
- import { z } from 'zod';
3
- import { MarshalledResult } from '../typesUtils/DynamoDB';
4
- import { AttributeValue } from '@aws-sdk/client-dynamodb';
5
- declare const EVENT_DYNAMO_DB_MODEL_SCHEMA: z.ZodObject<{
6
- eventId: z.ZodString;
7
- name: z.ZodString;
8
- detail: z.ZodObject<{}, "strip", z.ZodAny, z.objectOutputType<{}, z.ZodAny, "strip">, z.objectInputType<{}, z.ZodAny, "strip">>;
9
- time: z.ZodString;
10
- version: z.ZodString;
11
- ttl: z.ZodNumber;
12
- entityId: z.ZodString;
13
- }, "strip", z.ZodTypeAny, {
14
- eventId: string;
15
- name: string;
16
- detail: {} & {
17
- [k: string]: any;
18
- };
19
- time: string;
20
- version: string;
21
- ttl: number;
22
- entityId: string;
23
- }, {
24
- eventId: string;
25
- name: string;
26
- detail: {} & {
27
- [k: string]: any;
28
- };
29
- time: string;
30
- version: string;
31
- ttl: number;
32
- entityId: string;
33
- }>;
34
- export type EventDynamoDBModel = z.infer<typeof EVENT_DYNAMO_DB_MODEL_SCHEMA>;
35
- type EventDynamoMarshalledModel = MarshalledResult<EventDynamoDBModel>;
36
- export declare const eventToDynamoDB: (event: DomainEvent) => EventDynamoMarshalledModel;
37
- export declare const toEventFromDynamoDb: <TData extends DomainEvent>(dynamoItem: Record<string, AttributeValue>) => TData;
38
- export declare const toEventFromPlain: <TData extends DomainEvent>(plainObject: Record<string, unknown>) => TData;
39
- export {};
@@ -1,58 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toEventFromPlain = exports.toEventFromDynamoDb = exports.eventToDynamoDB = void 0;
4
- const DomainEvent_1 = require("./DomainEvent");
5
- const zod_1 = require("zod");
6
- const util_dynamodb_1 = require("@aws-sdk/util-dynamodb");
7
- const DateManipulator_1 = require("../date/DateManipulator");
8
- const notEmptyString = zod_1.z.string().min(1);
9
- const EVENT_DYNAMO_DB_MODEL_SCHEMA = zod_1.z.object({
10
- eventId: notEmptyString,
11
- name: notEmptyString,
12
- detail: zod_1.z.object({}).catchall(zod_1.z.any()),
13
- time: zod_1.z.string().datetime(),
14
- version: notEmptyString,
15
- ttl: zod_1.z.number(),
16
- entityId: zod_1.z.string(),
17
- });
18
- const eventToDynamoDB = (event) => {
19
- const timestampPlus30Days = (0, DateManipulator_1.DateManipulator)(event.time)
20
- .addDays(30)
21
- .valueOf()
22
- .getTime();
23
- const dynamoDBModel = {
24
- eventId: event.eventId,
25
- name: event.name,
26
- detail: JSON.parse(JSON.stringify(event.detail)),
27
- time: event.time.toISOString(),
28
- version: event.version,
29
- ttl: timestampPlus30Days / 1000,
30
- entityId: event.entityId,
31
- };
32
- return (0, util_dynamodb_1.marshall)(dynamoDBModel, {
33
- removeUndefinedValues: true,
34
- });
35
- };
36
- exports.eventToDynamoDB = eventToDynamoDB;
37
- const toEventFromDynamoDb = (dynamoItem) => {
38
- const unmarshalled = (0, util_dynamodb_1.unmarshall)(dynamoItem);
39
- return (0, exports.toEventFromPlain)(unmarshalled);
40
- };
41
- exports.toEventFromDynamoDb = toEventFromDynamoDb;
42
- const toEventFromPlain = (plainObject) => {
43
- const dynamoDBModel = EVENT_DYNAMO_DB_MODEL_SCHEMA.omit({ ttl: true }).parse(plainObject);
44
- const eventType = (0, DomainEvent_1.getDomainEventType)(dynamoDBModel.name);
45
- if (!eventType) {
46
- throw new Error(`Cannot map the event "${dynamoDBModel.name}" because does not exist`);
47
- }
48
- return Object.assign(new eventType({}), {
49
- eventId: dynamoDBModel.eventId,
50
- detail: dynamoDBModel.detail,
51
- time: new Date(dynamoDBModel.time),
52
- version: dynamoDBModel.version,
53
- name: dynamoDBModel.name,
54
- entityId: dynamoDBModel.entityId,
55
- });
56
- };
57
- exports.toEventFromPlain = toEventFromPlain;
58
- //# sourceMappingURL=DynamoDBEventMapper.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DynamoDBEventMapper.js","sourceRoot":"","sources":["../../src/event/DynamoDBEventMapper.ts"],"names":[],"mappings":";;;AAAA,+CAAgE;AAChE,6BAAwB;AAExB,0DAA8D;AAE9D,6DAA0D;AAE1D,MAAM,cAAc,GAAG,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC,MAAM,4BAA4B,GAAG,OAAC,CAAC,MAAM,CAAC;IAC5C,OAAO,EAAE,cAAc;IACvB,IAAI,EAAE,cAAc;IACpB,MAAM,EAAE,OAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAC,CAAC,GAAG,EAAE,CAAC;IACtC,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,OAAO,EAAE,cAAc;IACvB,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE;IACf,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE;CACrB,CAAC,CAAC;AAKI,MAAM,eAAe,GAAG,CAC7B,KAAkB,EACU,EAAE;IAC9B,MAAM,mBAAmB,GAAG,IAAA,iCAAe,EAAC,KAAK,CAAC,IAAI,CAAC;SACpD,OAAO,CAAC,EAAE,CAAC;SACX,OAAO,EAAE;SACT,OAAO,EAAE,CAAC;IAEb,MAAM,aAAa,GAAuB;QACxC,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE;QAC9B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,GAAG,EAAE,mBAAmB,GAAG,IAAI;QAC/B,QAAQ,EAAE,KAAK,CAAC,QAAQ;KACzB,CAAC;IAEF,OAAO,IAAA,wBAAQ,EAAC,aAAa,EAAE;QAC7B,qBAAqB,EAAE,IAAI;KAC5B,CAA+B,CAAC;AACnC,CAAC,CAAC;AArBW,QAAA,eAAe,mBAqB1B;AAEK,MAAM,mBAAmB,GAAG,CACjC,UAA0C,EACnC,EAAE;IACT,MAAM,YAAY,GAAG,IAAA,0BAAU,EAAC,UAAU,CAAC,CAAC;IAE5C,OAAO,IAAA,wBAAgB,EAAC,YAAY,CAAC,CAAC;AACxC,CAAC,CAAC;AANW,QAAA,mBAAmB,uBAM9B;AAEK,MAAM,gBAAgB,GAAG,CAC9B,WAAoC,EAC7B,EAAE;IACT,MAAM,aAAa,GAAG,4BAA4B,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAC1E,WAAW,CACZ,CAAC;IACF,MAAM,SAAS,GAAG,IAAA,gCAAkB,EAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAEzD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,yBAAyB,aAAa,CAAC,IAAI,0BAA0B,CACtE,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,EAAE,CAAC,EAAE;QACtC,OAAO,EAAE,aAAa,CAAC,OAAO;QAC9B,MAAM,EAAE,aAAa,CAAC,MAAM;QAC5B,IAAI,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;QAClC,OAAO,EAAE,aAAa,CAAC,OAAO;QAC9B,IAAI,EAAE,aAAa,CAAC,IAAI;QACxB,QAAQ,EAAE,aAAa,CAAC,QAAQ;KACjC,CAAU,CAAC;AACd,CAAC,CAAC;AAtBW,QAAA,gBAAgB,oBAsB3B"}
@@ -1,14 +0,0 @@
1
- import { DomainEvent } from './DomainEvent';
2
- export declare abstract class EventHandler<TEvent extends DomainEvent = DomainEvent> {
3
- abstract execute(event: TEvent): Promise<void>;
4
- }
5
- type Constructor = new (...args: Array<any>) => any;
6
- type EventConstructor = Constructor;
7
- type EventHandlerConstructor = Constructor;
8
- type EventHandlerMetadata = Array<{
9
- eventHandler: EventHandlerConstructor;
10
- event: EventConstructor;
11
- }>;
12
- export declare function getEventHandlerMetadata(): EventHandlerMetadata;
13
- export declare function AsEventHandler(event: EventConstructor): ClassDecorator;
14
- export {};
@@ -1,43 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.EventHandler = void 0;
10
- exports.getEventHandlerMetadata = getEventHandlerMetadata;
11
- exports.AsEventHandler = AsEventHandler;
12
- const inversify_1 = require("inversify");
13
- let EventHandler = class EventHandler {
14
- };
15
- exports.EventHandler = EventHandler;
16
- exports.EventHandler = EventHandler = __decorate([
17
- (0, inversify_1.injectable)()
18
- ], EventHandler);
19
- const EVENT_HANDLER_SYMBOL = Symbol();
20
- function getEventHandlerMetadata() {
21
- return Reflect.getMetadata(EVENT_HANDLER_SYMBOL, Object) ?? [];
22
- }
23
- function setEventHandlerMetadata({ event, eventHandler, }) {
24
- const metadata = getEventHandlerMetadata();
25
- const handlerExists = metadata.find((m) => m.eventHandler.name === eventHandler.name);
26
- if (handlerExists) {
27
- throw new Error(`The EventHandler has been used two times: ${eventHandler.name}. The EventHandler has to have uniq name`);
28
- }
29
- const newMetadata = [
30
- ...getEventHandlerMetadata(),
31
- { eventHandler, event },
32
- ];
33
- Reflect.defineMetadata(EVENT_HANDLER_SYMBOL, newMetadata, Object);
34
- }
35
- function AsEventHandler(event) {
36
- return (target) => {
37
- setEventHandlerMetadata({
38
- event,
39
- eventHandler: target,
40
- });
41
- };
42
- }
43
- //# sourceMappingURL=EventHandler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EventHandler.js","sourceRoot":"","sources":["../../src/event/EventHandler.ts"],"names":[],"mappings":";;;;;;;;;AAmBA,0DAEC;AA4BD,wCAOC;AAxDD,yCAAuC;AAIhC,IAAe,YAAY,GAA3B,MAAe,YAAY;CAEjC,CAAA;AAFqB,oCAAY;uBAAZ,YAAY;IADjC,IAAA,sBAAU,GAAE;GACS,YAAY,CAEjC;AAWD,MAAM,oBAAoB,GAAG,MAAM,EAAE,CAAC;AAEtC,SAAgB,uBAAuB;IACrC,OAAO,OAAO,CAAC,WAAW,CAAC,oBAAoB,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;AACjE,CAAC;AAED,SAAS,uBAAuB,CAAC,EAC/B,KAAK,EACL,YAAY,GAIb;IACC,MAAM,QAAQ,GAAG,uBAAuB,EAAE,CAAC;IAC3C,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CACjC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,CACjD,CAAC;IAEF,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CACb,6CAA6C,YAAY,CAAC,IAAI,0CAA0C,CACzG,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAyB;QACxC,GAAG,uBAAuB,EAAE;QAC5B,EAAE,YAAY,EAAE,KAAK,EAAE;KACxB,CAAC;IAEF,OAAO,CAAC,cAAc,CAAC,oBAAoB,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;AACpE,CAAC;AAED,SAAgB,cAAc,CAAC,KAAuB;IACpD,OAAO,CAAC,MAAM,EAAE,EAAE;QAChB,uBAAuB,CAAC;YACtB,KAAK;YACL,YAAY,EAAE,MAA4C;SAC3D,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
@@ -1,21 +0,0 @@
1
- import { SchedulerClient } from '@aws-sdk/client-scheduler';
2
- import { DomainEvent } from '../event/DomainEvent';
3
- import { ScheduleName, Scheduler, SchedulerOptions } from './Scheduler';
4
- import { Logger } from '@squiz/optimization-logger';
5
- export type EventBridgeSchedulerConfig = {
6
- region: string;
7
- groupName: string;
8
- eventTableName: string;
9
- schedulerRole: string;
10
- };
11
- export declare class EventBridgeScheduler implements Scheduler {
12
- private readonly config;
13
- private readonly client;
14
- private readonly logger;
15
- constructor(config: EventBridgeSchedulerConfig, client: SchedulerClient, logger: Logger);
16
- schedule(domainEvent: DomainEvent, options: SchedulerOptions): Promise<void>;
17
- private createScheduleName;
18
- private createScheduleExpression;
19
- deleteSchedule(scheduleName: ScheduleName): Promise<void>;
20
- private _deleteSchedule;
21
- }
@@ -1,130 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.EventBridgeScheduler = void 0;
13
- const inversify_1 = require("inversify");
14
- const client_scheduler_1 = require("@aws-sdk/client-scheduler");
15
- const DynamoDBEventMapper_1 = require("../event/DynamoDBEventMapper");
16
- const crypto_1 = require("crypto");
17
- const util_dynamodb_1 = require("@aws-sdk/util-dynamodb");
18
- const optimization_logger_1 = require("@squiz/optimization-logger");
19
- let EventBridgeScheduler = class EventBridgeScheduler {
20
- config;
21
- client;
22
- logger;
23
- constructor(config, client, logger) {
24
- this.config = config;
25
- this.client = client;
26
- this.logger = logger;
27
- }
28
- async schedule(domainEvent, options) {
29
- const logMessage = (0, optimization_logger_1.createLog)()
30
- .attachEventName(domainEvent.name)
31
- .create(this);
32
- this.logger.debug(...logMessage('started scheduling'));
33
- // I putted here "the schedule attributes" because in that way we ensure that every PutItem command
34
- // it will create always a new record in dynamoDB
35
- const putItemCommand = {
36
- TableName: this.config.eventTableName,
37
- Item: {
38
- ...(0, DynamoDBEventMapper_1.eventToDynamoDB)(domainEvent),
39
- // https://docs.aws.amazon.com/scheduler/latest/UserGuide/managing-schedule-context-attributes.html
40
- ...(0, util_dynamodb_1.marshall)({
41
- eventId: '<aws.scheduler.execution-id>',
42
- time: '<aws.scheduler.scheduled-time>',
43
- }),
44
- },
45
- };
46
- this.logger.debug(...logMessage('finished mapping to PutItemCommandInput'));
47
- const scheduleName = this.createScheduleName(options.name);
48
- const scheduleExpression = this.createScheduleExpression(options);
49
- this.logger.debug(...logMessage(`started calling AWS Scheduler with ScheduleName: ` +
50
- `${scheduleName}, ScheduleExpression: ${scheduleExpression}`));
51
- await this._deleteSchedule(scheduleName, logMessage);
52
- const command = new client_scheduler_1.CreateScheduleCommand({
53
- Name: scheduleName,
54
- GroupName: this.config.groupName,
55
- ScheduleExpression: scheduleExpression,
56
- ScheduleExpressionTimezone: 'UTC',
57
- State: 'ENABLED',
58
- FlexibleTimeWindow: {
59
- Mode: client_scheduler_1.FlexibleTimeWindowMode.OFF,
60
- },
61
- ActionAfterCompletion: 'DELETE',
62
- Target: {
63
- Arn: 'arn:aws:scheduler:::aws-sdk:dynamodb:putItem',
64
- Input: JSON.stringify(putItemCommand),
65
- RoleArn: this.config.schedulerRole,
66
- },
67
- ClientToken: (0, crypto_1.randomUUID)(),
68
- });
69
- await this.client.send(command);
70
- this.logger.debug(...logMessage('finished calling AWS Scheduler'));
71
- }
72
- createScheduleName(scheduleName) {
73
- const truncateString = (str, maxLength) => str.length > maxLength ? str.substring(0, maxLength) : str;
74
- const maxLengthOfScheduleName = 64;
75
- return truncateString(scheduleName, maxLengthOfScheduleName);
76
- }
77
- createScheduleExpression(options) {
78
- switch (options.type) {
79
- case 'at': {
80
- const dateString = options.value.toISOString().replace(/\..*/, '');
81
- return `at(${dateString})`;
82
- }
83
- case 'cron':
84
- return `cron(${options.value})`;
85
- case 'rate':
86
- return `rate(${options.value} ${options.unit})`;
87
- default:
88
- throw new Error(`Passed unresolved ScheduleOption type.`);
89
- }
90
- }
91
- async deleteSchedule(scheduleName) {
92
- const logMessage = (0, optimization_logger_1.createLog)()
93
- .attachMetadata({ scheduleName })
94
- .create(this);
95
- return this._deleteSchedule(scheduleName, logMessage);
96
- }
97
- async _deleteSchedule(scheduleName, logMessage) {
98
- const trimmedScheduleName = this.createScheduleName(scheduleName);
99
- try {
100
- this.logger.debug(...logMessage(`started getting schedule, scheduleName: ${trimmedScheduleName}`));
101
- const getCommand = new client_scheduler_1.GetScheduleCommand({
102
- GroupName: this.config.groupName,
103
- Name: trimmedScheduleName,
104
- });
105
- await this.client.send(getCommand);
106
- this.logger.debug(...logMessage(`finished getting schedule, scheduleName: ${trimmedScheduleName}`));
107
- }
108
- catch (e) {
109
- if (e instanceof client_scheduler_1.ResourceNotFoundException) {
110
- this.logger.debug(...logMessage(`the schedule does not exist, skipped deleting existing schedule, scheduleName: ${trimmedScheduleName}`));
111
- return;
112
- }
113
- throw e;
114
- }
115
- this.logger.debug(...logMessage('started deleting schedule'));
116
- const deleteCommand = new client_scheduler_1.DeleteScheduleCommand({
117
- GroupName: this.config.groupName,
118
- Name: trimmedScheduleName,
119
- });
120
- await this.client.send(deleteCommand);
121
- this.logger.debug(...logMessage('finished deleting schedule'));
122
- }
123
- };
124
- exports.EventBridgeScheduler = EventBridgeScheduler;
125
- exports.EventBridgeScheduler = EventBridgeScheduler = __decorate([
126
- (0, inversify_1.injectable)(),
127
- __metadata("design:paramtypes", [Object, client_scheduler_1.SchedulerClient,
128
- optimization_logger_1.Logger])
129
- ], EventBridgeScheduler);
130
- //# sourceMappingURL=EventBridgeScheduler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EventBridgeScheduler.js","sourceRoot":"","sources":["../../src/scheduler/EventBridgeScheduler.ts"],"names":[],"mappings":"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"}
@@ -1,21 +0,0 @@
1
- import { DomainEvent } from './../event/DomainEvent';
2
- export type CronExpression = `${string} ${string} ${string} ${string} ${string} ${string}`;
3
- export type RateUnit = 'minutes' | 'hours' | 'days';
4
- export type ScheduleName = string;
5
- export type SchedulerOptions = ({
6
- type: 'at';
7
- value: Date;
8
- } | {
9
- type: 'cron';
10
- value: CronExpression;
11
- } | {
12
- type: 'rate';
13
- value: number;
14
- unit: RateUnit;
15
- }) & {
16
- name: ScheduleName;
17
- };
18
- export declare abstract class Scheduler {
19
- abstract schedule(domainEvent: DomainEvent, options: SchedulerOptions): Promise<void>;
20
- abstract deleteSchedule(scheduleName: ScheduleName): Promise<void>;
21
- }
@@ -1,17 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.Scheduler = void 0;
10
- const inversify_1 = require("inversify");
11
- let Scheduler = class Scheduler {
12
- };
13
- exports.Scheduler = Scheduler;
14
- exports.Scheduler = Scheduler = __decorate([
15
- (0, inversify_1.injectable)()
16
- ], Scheduler);
17
- //# sourceMappingURL=Scheduler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Scheduler.js","sourceRoot":"","sources":["../../src/scheduler/Scheduler.ts"],"names":[],"mappings":";;;;;;;;;AACA,yCAAuC;AAuBhC,IAAe,SAAS,GAAxB,MAAe,SAAS;CAO9B,CAAA;AAPqB,8BAAS;oBAAT,SAAS;IAD9B,IAAA,sBAAU,GAAE;GACS,SAAS,CAO9B"}
@@ -1,4 +0,0 @@
1
- import { SchedulerClient } from '@aws-sdk/client-scheduler';
2
- import { Scheduler } from '../scheduler/Scheduler';
3
- export declare const createSchedulerClientMock: () => SchedulerClient;
4
- export declare const createSchedulerMock: () => Scheduler;
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createSchedulerMock = exports.createSchedulerClientMock = void 0;
4
- const createSchedulerClientMock = () => {
5
- return {
6
- send: jest.fn(),
7
- };
8
- };
9
- exports.createSchedulerClientMock = createSchedulerClientMock;
10
- const createSchedulerMock = () => {
11
- return {
12
- schedule: jest.fn(),
13
- deleteSchedule: jest.fn(),
14
- };
15
- };
16
- exports.createSchedulerMock = createSchedulerMock;
17
- //# sourceMappingURL=mock.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mock.js","sourceRoot":"","sources":["../../src/testing/mock.ts"],"names":[],"mappings":";;;AAGO,MAAM,yBAAyB,GAAG,GAAoB,EAAE;IAC7D,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;KACc,CAAC;AAClC,CAAC,CAAC;AAJW,QAAA,yBAAyB,6BAIpC;AAEK,MAAM,mBAAmB,GAAG,GAAc,EAAE;IACjD,OAAO;QACL,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE;QACnB,cAAc,EAAE,IAAI,CAAC,EAAE,EAAE;KAC1B,CAAC;AACJ,CAAC,CAAC;AALW,QAAA,mBAAmB,uBAK9B"}
@@ -1,4 +0,0 @@
1
- import { AttributeValue } from '@aws-sdk/client-dynamodb';
2
- export type MarshalledResult<T> = {
3
- [K in keyof T]: T[K] extends string ? AttributeValue.SMember : T[K] extends number ? AttributeValue.NMember : T[K] extends Record<string, unknown> ? AttributeValue.MMember : T[K] extends Array<unknown> ? AttributeValue.LMember : T[K] extends boolean ? AttributeValue.BOOLMember : T[K] extends undefined ? Partial<T[K]> : never;
4
- };
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=DynamoDB.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DynamoDB.js","sourceRoot":"","sources":["../../src/typesUtils/DynamoDB.ts"],"names":[],"mappings":""}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=utilities.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utilities.js","sourceRoot":"","sources":["../../src/typesUtils/utilities.ts"],"names":[],"mappings":""}