@squiz/optimization-utils 2.0.2 → 3.0.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 (72) hide show
  1. package/dist/array/chunkify.d.ts +1 -0
  2. package/dist/array/chunkify.js +12 -0
  3. package/dist/array/chunkify.js.map +1 -0
  4. package/dist/array/uniqueWith.d.ts +1 -0
  5. package/dist/array/uniqueWith.js +6 -0
  6. package/dist/array/uniqueWith.js.map +1 -0
  7. package/dist/index.d.ts +3 -13
  8. package/dist/index.js +3 -13
  9. package/dist/index.js.map +1 -1
  10. package/dist/{typesUtils → types}/utilities.js.map +1 -1
  11. package/package.json +3 -16
  12. package/CHANGELOG.md +0 -43
  13. package/dist/cloudflare/CloudflareKVHttpService.d.ts +0 -11
  14. package/dist/cloudflare/CloudflareKVHttpService.js +0 -19
  15. package/dist/cloudflare/CloudflareKVHttpService.js.map +0 -1
  16. package/dist/cloudflare/ImplCloudflareKVHttpService.d.ts +0 -22
  17. package/dist/cloudflare/ImplCloudflareKVHttpService.js +0 -94
  18. package/dist/cloudflare/ImplCloudflareKVHttpService.js.map +0 -1
  19. package/dist/config/ConfigurationLoader.d.ts +0 -23
  20. package/dist/config/ConfigurationLoader.js +0 -98
  21. package/dist/config/ConfigurationLoader.js.map +0 -1
  22. package/dist/date/DateManipulator.d.ts +0 -6
  23. package/dist/date/DateManipulator.js +0 -21
  24. package/dist/date/DateManipulator.js.map +0 -1
  25. package/dist/event/AggregateRoot.d.ts +0 -4
  26. package/dist/event/AggregateRoot.js +0 -3
  27. package/dist/event/AggregateRoot.js.map +0 -1
  28. package/dist/event/DomainEvent.d.ts +0 -14
  29. package/dist/event/DomainEvent.js +0 -28
  30. package/dist/event/DomainEvent.js.map +0 -1
  31. package/dist/event/DynamoDBEventMapper.d.ts +0 -39
  32. package/dist/event/DynamoDBEventMapper.js +0 -58
  33. package/dist/event/DynamoDBEventMapper.js.map +0 -1
  34. package/dist/event/EventHandler.d.ts +0 -14
  35. package/dist/event/EventHandler.js +0 -43
  36. package/dist/event/EventHandler.js.map +0 -1
  37. package/dist/scheduler/EventBridgeScheduler.d.ts +0 -21
  38. package/dist/scheduler/EventBridgeScheduler.js +0 -130
  39. package/dist/scheduler/EventBridgeScheduler.js.map +0 -1
  40. package/dist/scheduler/Scheduler.d.ts +0 -21
  41. package/dist/scheduler/Scheduler.js +0 -17
  42. package/dist/scheduler/Scheduler.js.map +0 -1
  43. package/dist/testing/mock.d.ts +0 -4
  44. package/dist/testing/mock.js +0 -17
  45. package/dist/testing/mock.js.map +0 -1
  46. package/dist/typesUtils/DynamoDB.d.ts +0 -4
  47. package/dist/typesUtils/DynamoDB.js +0 -3
  48. package/dist/typesUtils/DynamoDB.js.map +0 -1
  49. package/src/cloudflare/CloudflareKVHttpService.ts +0 -20
  50. package/src/cloudflare/ImplCloudflareKVHttpService.ts +0 -129
  51. package/src/cloudflare/__tests__/ImplCloudflareKVHttpService.spec.ts +0 -178
  52. package/src/config/ConfigurationLoader.ts +0 -74
  53. package/src/config/__tests__/ConfigurationLoader.spec.ts +0 -62
  54. package/src/date/DateManipulator.ts +0 -29
  55. package/src/date/__tests__/DateManipulator.spec.ts +0 -64
  56. package/src/event/AggregateRoot.ts +0 -5
  57. package/src/event/DomainEvent.ts +0 -53
  58. package/src/event/DynamoDBEventMapper.ts +0 -75
  59. package/src/event/EventHandler.ts +0 -57
  60. package/src/event/__tests__/DynamoDBEventMapper.spec.ts +0 -121
  61. package/src/index.ts +0 -21
  62. package/src/object/__tests__/getProperty.spec.ts +0 -17
  63. package/src/object/getProperty.ts +0 -21
  64. package/src/scheduler/EventBridgeScheduler.ts +0 -172
  65. package/src/scheduler/Scheduler.ts +0 -32
  66. package/src/scheduler/__tests__/EventBridgeScheduler.spec.ts +0 -308
  67. package/src/testing/mock.ts +0 -15
  68. package/src/typesUtils/DynamoDB.ts +0 -17
  69. package/src/typesUtils/utilities.ts +0 -11
  70. package/tsconfig.json +0 -13
  71. /package/dist/{typesUtils → types}/utilities.d.ts +0 -0
  72. /package/dist/{typesUtils → types}/utilities.js +0 -0
@@ -0,0 +1 @@
1
+ export declare const chunkify: <T>(input: Array<T>, size: number) => Array<Array<T>>;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.chunkify = void 0;
4
+ const chunkify = (input, size) => {
5
+ const result = [];
6
+ for (let i = 0; i < input.length; i += size) {
7
+ result.push(input.slice(i, i + size));
8
+ }
9
+ return result;
10
+ };
11
+ exports.chunkify = chunkify;
12
+ //# sourceMappingURL=chunkify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunkify.js","sourceRoot":"","sources":["../../src/array/chunkify.ts"],"names":[],"mappings":";;;AAAO,MAAM,QAAQ,GAAG,CAAI,KAAe,EAAE,IAAY,EAAmB,EAAE;IAC5E,MAAM,MAAM,GAAoB,EAAE,CAAC;IAEnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;QAC5C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AARW,QAAA,QAAQ,YAQnB"}
@@ -0,0 +1 @@
1
+ export declare const uniqueWith: <T>(arr: Array<T>, fn: (a: T, b: T) => boolean) => Array<T>;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.uniqueWith = void 0;
4
+ const uniqueWith = (arr, fn) => arr.filter((element, index) => arr.findIndex((step) => fn(element, step)) === index);
5
+ exports.uniqueWith = uniqueWith;
6
+ //# sourceMappingURL=uniqueWith.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uniqueWith.js","sourceRoot":"","sources":["../../src/array/uniqueWith.ts"],"names":[],"mappings":";;;AAAO,MAAM,UAAU,GAAG,CACxB,GAAa,EACb,EAA2B,EACjB,EAAE,CACZ,GAAG,CAAC,MAAM,CACR,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,CACzE,CAAC;AANS,QAAA,UAAU,cAMnB"}
package/dist/index.d.ts CHANGED
@@ -1,14 +1,4 @@
1
- export * from './typesUtils/utilities';
2
- export * from './typesUtils/DynamoDB';
3
- export * from './testing/mock';
4
- export * from './scheduler/Scheduler';
5
- export * from './scheduler/EventBridgeScheduler';
6
- export * from './event/DynamoDBEventMapper';
7
- export * from './event/DomainEvent';
8
- export * from './event/AggregateRoot';
9
- export * from './date/DateManipulator';
10
- export * from './event/EventHandler';
11
- export * from './config/ConfigurationLoader';
12
- export * from './cloudflare/ImplCloudflareKVHttpService';
13
- export * from './cloudflare/CloudflareKVHttpService';
1
+ export * from './types/utilities';
14
2
  export * from './object/getProperty';
3
+ export * from './array/uniqueWith';
4
+ export * from './array/chunkify';
package/dist/index.js CHANGED
@@ -14,18 +14,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./typesUtils/utilities"), exports);
18
- __exportStar(require("./typesUtils/DynamoDB"), exports);
19
- __exportStar(require("./testing/mock"), exports);
20
- __exportStar(require("./scheduler/Scheduler"), exports);
21
- __exportStar(require("./scheduler/EventBridgeScheduler"), exports);
22
- __exportStar(require("./event/DynamoDBEventMapper"), exports);
23
- __exportStar(require("./event/DomainEvent"), exports);
24
- __exportStar(require("./event/AggregateRoot"), exports);
25
- __exportStar(require("./date/DateManipulator"), exports);
26
- __exportStar(require("./event/EventHandler"), exports);
27
- __exportStar(require("./config/ConfigurationLoader"), exports);
28
- __exportStar(require("./cloudflare/ImplCloudflareKVHttpService"), exports);
29
- __exportStar(require("./cloudflare/CloudflareKVHttpService"), exports);
17
+ __exportStar(require("./types/utilities"), exports);
30
18
  __exportStar(require("./object/getProperty"), exports);
19
+ __exportStar(require("./array/uniqueWith"), exports);
20
+ __exportStar(require("./array/chunkify"), exports);
31
21
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yDAAuC;AACvC,wDAAsC;AAEtC,iDAA+B;AAE/B,wDAAsC;AACtC,mEAAiD;AAEjD,8DAA4C;AAC5C,sDAAoC;AACpC,wDAAsC;AAEtC,yDAAuC;AACvC,uDAAqC;AAErC,+DAA6C;AAE7C,2EAAyD;AACzD,uEAAqD;AAErD,uDAAqC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAElC,uDAAqC;AAErC,qDAAmC;AACnC,mDAAiC"}
@@ -1 +1 @@
1
- {"version":3,"file":"utilities.js","sourceRoot":"","sources":["../../src/typesUtils/utilities.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"utilities.js","sourceRoot":"","sources":["../../src/types/utilities.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,28 +1,15 @@
1
1
  {
2
2
  "name": "@squiz/optimization-utils",
3
- "version": "2.0.2",
3
+ "version": "3.0.0",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "repository": "https://gitlab.squiz.net/optimization/optimization-utils",
8
8
  "scripts": {
9
- "build": "rm -rf dist && tsc",
9
+ "build": "tsc",
10
10
  "build:check": "tsc --noEmit"
11
11
  },
12
- "dependencies": {
13
- "@squiz/optimization-http-client": "^1.0.0",
14
- "@squiz/optimization-logger": "^1.0.1",
15
- "@squiz/optimization-value-objects": "^1.0.0",
16
- "node-fetch-commonjs": "^3.3.2",
17
- "dotenv": "^16.4.5",
18
- "@aws-sdk/client-dynamodb": "^3.614.0",
19
- "@aws-sdk/client-scheduler": "^3.614.0",
20
- "reflect-metadata": "^0.2.2",
21
- "inversify": "^6.0.2",
22
- "zod": "^3.23.8",
23
- "aws-xray-sdk": "^3.6.0",
24
- "winston": "^3.13.0"
25
- },
12
+ "dependencies": {},
26
13
  "devDependencies": {},
27
14
  "author": "",
28
15
  "license": "ISC"
package/CHANGELOG.md DELETED
@@ -1,43 +0,0 @@
1
- # @squiz/optimization-utils
2
-
3
- ## 2.0.2
4
-
5
- ### Patch Changes
6
-
7
- - cf516f7: Cleaned up the optimization/utils
8
-
9
- ## 2.0.1
10
-
11
- ### Patch Changes
12
-
13
- - ca7d105: Removed createLogsLambdaHandler function
14
-
15
- ## 2.0.0
16
-
17
- ### Major Changes
18
-
19
- - abd0e0f: Added EntityId into the DomainEvent interface
20
-
21
- ## 1.3.0
22
-
23
- ### Minor Changes
24
-
25
- - 24aaeac: Added get property function
26
-
27
- ## 1.2.0
28
-
29
- ### Minor Changes
30
-
31
- - 0c347a0: Added remote function into the LogMessage, Updated FilterPattern
32
-
33
- ## 1.1.1
34
-
35
- ### Patch Changes
36
-
37
- - 2a5e0fe: Changed entry points
38
-
39
- ## 1.1.0
40
-
41
- ### Minor Changes
42
-
43
- - afea2f1: Added the logs lambda handler
@@ -1,11 +0,0 @@
1
- export type CloudflareKey = string;
2
- export type BatchValueData<T> = Array<{
3
- key: CloudflareKey;
4
- value: T;
5
- }>;
6
- export declare const MAX_BATCH_DATA_ITEMS = 10000;
7
- export declare abstract class CloudflareKVHttpService<TSchema> {
8
- abstract getValues(key: CloudflareKey): Promise<TSchema>;
9
- abstract putBulk(batchData: BatchValueData<TSchema>): Promise<void>;
10
- abstract deleteBulk(keys: Array<CloudflareKey>): Promise<void>;
11
- }
@@ -1,19 +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.CloudflareKVHttpService = exports.MAX_BATCH_DATA_ITEMS = void 0;
10
- const inversify_1 = require("inversify");
11
- // https://developers.cloudflare.com/api/operations/workers-kv-namespace-write-multiple-key-value-pairs
12
- exports.MAX_BATCH_DATA_ITEMS = 10_000;
13
- let CloudflareKVHttpService = class CloudflareKVHttpService {
14
- };
15
- exports.CloudflareKVHttpService = CloudflareKVHttpService;
16
- exports.CloudflareKVHttpService = CloudflareKVHttpService = __decorate([
17
- (0, inversify_1.injectable)()
18
- ], CloudflareKVHttpService);
19
- //# sourceMappingURL=CloudflareKVHttpService.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CloudflareKVHttpService.js","sourceRoot":"","sources":["../../src/cloudflare/CloudflareKVHttpService.ts"],"names":[],"mappings":";;;;;;;;;AAAA,yCAAuC;AASvC,uGAAuG;AAC1F,QAAA,oBAAoB,GAAG,MAAM,CAAC;AAGpC,IAAe,uBAAuB,GAAtC,MAAe,uBAAuB;CAM5C,CAAA;AANqB,0DAAuB;kCAAvB,uBAAuB;IAD5C,IAAA,sBAAU,GAAE;GACS,uBAAuB,CAM5C"}
@@ -1,22 +0,0 @@
1
- import { BatchValueData, CloudflareKey, CloudflareKVHttpService } from './CloudflareKVHttpService';
2
- import { ZodType } from 'zod';
3
- import { HttpRequestBuilderFactory } from '@squiz/optimization-http-client';
4
- import { Logger } from '@squiz/optimization-logger';
5
- export type CloudflareConfig = {
6
- domain: string;
7
- accountId: string;
8
- namespace: string;
9
- apiKey: string;
10
- };
11
- export type CloudflareConfigProvider = () => Promise<CloudflareConfig>;
12
- export declare class ImplCloudflareKVHttpService<TSchema> implements CloudflareKVHttpService<TSchema> {
13
- private readonly cloudflareConfigProvider;
14
- private readonly httpRequestBuilderFactory;
15
- private readonly logger;
16
- private readonly schema;
17
- constructor(cloudflareConfigProvider: CloudflareConfigProvider, httpRequestBuilderFactory: HttpRequestBuilderFactory, logger: Logger, schema: TSchema extends ZodType ? TSchema : never);
18
- getValues(key: string): Promise<TSchema>;
19
- putBulk(batchData: BatchValueData<TSchema>): Promise<void>;
20
- deleteBulk(keys: Array<CloudflareKey>): Promise<void>;
21
- private callApi;
22
- }
@@ -1,94 +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.ImplCloudflareKVHttpService = void 0;
13
- const inversify_1 = require("inversify");
14
- const util_1 = require("util");
15
- const CloudflareKVHttpService_1 = require("./CloudflareKVHttpService");
16
- const optimization_http_client_1 = require("@squiz/optimization-http-client");
17
- const optimization_logger_1 = require("@squiz/optimization-logger");
18
- let ImplCloudflareKVHttpService = class ImplCloudflareKVHttpService {
19
- cloudflareConfigProvider;
20
- httpRequestBuilderFactory;
21
- logger;
22
- schema;
23
- constructor(cloudflareConfigProvider, httpRequestBuilderFactory, logger, schema) {
24
- this.cloudflareConfigProvider = cloudflareConfigProvider;
25
- this.httpRequestBuilderFactory = httpRequestBuilderFactory;
26
- this.logger = logger;
27
- this.schema = schema;
28
- }
29
- async getValues(key) {
30
- const response = await this.callApi({
31
- path: `/values/${key}`,
32
- method: optimization_http_client_1.HttpMethod.GET,
33
- handleNotFoundAsEmpty: true,
34
- });
35
- return this.schema.parse(typeof response === 'string' ? JSON.parse(response) : {});
36
- }
37
- async putBulk(batchData) {
38
- if (!batchData.length) {
39
- return;
40
- }
41
- if (batchData.length > CloudflareKVHttpService_1.MAX_BATCH_DATA_ITEMS) {
42
- throw new Error(`The max items count has been exceeded. The max items count is ${CloudflareKVHttpService_1.MAX_BATCH_DATA_ITEMS}`);
43
- }
44
- await this.callApi({
45
- method: optimization_http_client_1.HttpMethod.PUT,
46
- body: batchData.map((data) => ({
47
- ...data,
48
- value: JSON.stringify(data.value),
49
- })),
50
- path: `/bulk`,
51
- });
52
- }
53
- async deleteBulk(keys) {
54
- if (!keys.length) {
55
- return;
56
- }
57
- await this.callApi({
58
- method: optimization_http_client_1.HttpMethod.DELETE,
59
- body: keys,
60
- path: `/bulk`,
61
- });
62
- }
63
- async callApi({ path, body, method, handleNotFoundAsEmpty = false, }) {
64
- const config = await this.cloudflareConfigProvider();
65
- const baseUrl = `https://${config.domain}/client/v4/accounts/` +
66
- `${config.accountId}/storage/kv/namespaces/` +
67
- `${config.namespace}`;
68
- const url = baseUrl + path;
69
- const logMessage = (0, optimization_logger_1.createLog)()
70
- .attachMetadata({ path, method, url })
71
- .create(this);
72
- this.logger.debug(...logMessage('started calling http endpoint'));
73
- this.logger.debug(...logMessage(`the request body: ${(0, util_1.inspect)(body, { depth: 4 })}`));
74
- const httpBuilder = this.httpRequestBuilderFactory
75
- .create()
76
- .url(url)
77
- .method(method)
78
- .body(body)
79
- .applicationJson()
80
- .authorizationByBearer(config.apiKey);
81
- handleNotFoundAsEmpty && httpBuilder.handleNotFound();
82
- const response = await httpBuilder.sendRequest();
83
- this.logger.debug(...logMessage('finished calling http endpoint'));
84
- this.logger.debug(...logMessage(`returned type: ${typeof response.body}, type: returned: ${(0, util_1.inspect)(response.body, { depth: 4 })}`));
85
- return response.body;
86
- }
87
- };
88
- exports.ImplCloudflareKVHttpService = ImplCloudflareKVHttpService;
89
- exports.ImplCloudflareKVHttpService = ImplCloudflareKVHttpService = __decorate([
90
- (0, inversify_1.injectable)(),
91
- __metadata("design:paramtypes", [Function, optimization_http_client_1.HttpRequestBuilderFactory,
92
- optimization_logger_1.Logger, Object])
93
- ], ImplCloudflareKVHttpService);
94
- //# sourceMappingURL=ImplCloudflareKVHttpService.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ImplCloudflareKVHttpService.js","sourceRoot":"","sources":["../../src/cloudflare/ImplCloudflareKVHttpService.ts"],"names":[],"mappings":"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"}
@@ -1,23 +0,0 @@
1
- import { z, ZodType } from 'zod';
2
- import { HttpRequestBuilderFactory } from '@squiz/optimization-http-client';
3
- export declare abstract class ConfigurationLoader<TSchema extends ZodType> {
4
- abstract load(): Promise<z.infer<TSchema>>;
5
- }
6
- export declare class DotEnvConfigurationLoader<TSchema extends ZodType> implements ConfigurationLoader<TSchema> {
7
- private readonly schema;
8
- constructor(schema: TSchema);
9
- load(): Promise<z.infer<TSchema>>;
10
- }
11
- export type LambdaLayerAppConfigConfigurationLoaderConfig = {
12
- appConfigName: string;
13
- env: string;
14
- configurationName: string;
15
- };
16
- export declare class LambdaLayerAppConfigConfigurationLoader<TSchema extends ZodType> implements ConfigurationLoader<TSchema> {
17
- private readonly opts;
18
- private readonly httpRequestBuilderFactory;
19
- private readonly schema;
20
- constructor(opts: LambdaLayerAppConfigConfigurationLoaderConfig, httpRequestBuilderFactory: HttpRequestBuilderFactory, schema: TSchema);
21
- load(): Promise<z.infer<TSchema>>;
22
- private fetchFromApi;
23
- }
@@ -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,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=AggregateRoot.js.map
@@ -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 {};