aws-service-stack 0.10.92

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 (140) hide show
  1. package/README.md +20 -0
  2. package/dist/_examples/model/user.model.d.ts +6 -0
  3. package/dist/_examples/model/user.model.js +3 -0
  4. package/dist/_examples/model/user.model.js.map +1 -0
  5. package/dist/controller/base-controller.d.ts +34 -0
  6. package/dist/controller/base-controller.js +151 -0
  7. package/dist/controller/base-controller.js.map +1 -0
  8. package/dist/controller/index.d.ts +1 -0
  9. package/dist/controller/index.js +18 -0
  10. package/dist/controller/index.js.map +1 -0
  11. package/dist/exception/errors.d.ts +32 -0
  12. package/dist/exception/errors.js +46 -0
  13. package/dist/exception/errors.js.map +1 -0
  14. package/dist/exception/exception-handler.d.ts +238 -0
  15. package/dist/exception/exception-handler.js +112 -0
  16. package/dist/exception/exception-handler.js.map +1 -0
  17. package/dist/index.d.ts +6 -0
  18. package/dist/index.js +23 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/model/base.model.d.ts +64 -0
  21. package/dist/model/base.model.js +20 -0
  22. package/dist/model/base.model.js.map +1 -0
  23. package/dist/model/cognito-user.model.d.ts +12 -0
  24. package/dist/model/cognito-user.model.js +3 -0
  25. package/dist/model/cognito-user.model.js.map +1 -0
  26. package/dist/model/filter.model.d.ts +46 -0
  27. package/dist/model/filter.model.js +22 -0
  28. package/dist/model/filter.model.js.map +1 -0
  29. package/dist/model/http.model.d.ts +7 -0
  30. package/dist/model/http.model.js +12 -0
  31. package/dist/model/http.model.js.map +1 -0
  32. package/dist/model/index.d.ts +4 -0
  33. package/dist/model/index.js +21 -0
  34. package/dist/model/index.js.map +1 -0
  35. package/dist/model/schema-validation.d.ts +20 -0
  36. package/dist/model/schema-validation.js +91 -0
  37. package/dist/model/schema-validation.js.map +1 -0
  38. package/dist/provider/apigateway.d.ts +4 -0
  39. package/dist/provider/apigateway.js +28 -0
  40. package/dist/provider/apigateway.js.map +1 -0
  41. package/dist/provider/dynamodb.d.ts +3 -0
  42. package/dist/provider/dynamodb.js +18 -0
  43. package/dist/provider/dynamodb.js.map +1 -0
  44. package/dist/provider/index.d.ts +3 -0
  45. package/dist/provider/index.js +20 -0
  46. package/dist/provider/index.js.map +1 -0
  47. package/dist/provider/opensearch.d.ts +4 -0
  48. package/dist/provider/opensearch.js +34 -0
  49. package/dist/provider/opensearch.js.map +1 -0
  50. package/dist/repositories/base-core.repo.interface.d.ts +129 -0
  51. package/dist/repositories/base-core.repo.interface.js +3 -0
  52. package/dist/repositories/base-core.repo.interface.js.map +1 -0
  53. package/dist/repositories/base-db.repo.d.ts +78 -0
  54. package/dist/repositories/base-db.repo.interface.d.ts +61 -0
  55. package/dist/repositories/base-db.repo.interface.js +3 -0
  56. package/dist/repositories/base-db.repo.interface.js.map +1 -0
  57. package/dist/repositories/base-db.repo.js +471 -0
  58. package/dist/repositories/base-db.repo.js.map +1 -0
  59. package/dist/repositories/base-es.repo.d.ts +31 -0
  60. package/dist/repositories/base-es.repo.interface.d.ts +13 -0
  61. package/dist/repositories/base-es.repo.interface.js +3 -0
  62. package/dist/repositories/base-es.repo.interface.js.map +1 -0
  63. package/dist/repositories/base-es.repo.js +148 -0
  64. package/dist/repositories/base-es.repo.js.map +1 -0
  65. package/dist/repositories/index.d.ts +4 -0
  66. package/dist/repositories/index.js +21 -0
  67. package/dist/repositories/index.js.map +1 -0
  68. package/dist/service/api.services/api.service.d.ts +11 -0
  69. package/dist/service/api.services/api.service.interface.d.ts +8 -0
  70. package/dist/service/api.services/api.service.interface.js +3 -0
  71. package/dist/service/api.services/api.service.interface.js.map +1 -0
  72. package/dist/service/api.services/api.service.js +103 -0
  73. package/dist/service/api.services/api.service.js.map +1 -0
  74. package/dist/service/api.services/index.d.ts +2 -0
  75. package/dist/service/api.services/index.js +19 -0
  76. package/dist/service/api.services/index.js.map +1 -0
  77. package/dist/service/auth.service.d.ts +8 -0
  78. package/dist/service/auth.service.interface.d.ts +6 -0
  79. package/dist/service/auth.service.interface.js +3 -0
  80. package/dist/service/auth.service.interface.js.map +1 -0
  81. package/dist/service/auth.service.js +90 -0
  82. package/dist/service/auth.service.js.map +1 -0
  83. package/dist/service/base.service.d.ts +39 -0
  84. package/dist/service/base.service.interface.d.ts +106 -0
  85. package/dist/service/base.service.interface.js +3 -0
  86. package/dist/service/base.service.interface.js.map +1 -0
  87. package/dist/service/base.service.js +167 -0
  88. package/dist/service/base.service.js.map +1 -0
  89. package/dist/service/index.d.ts +5 -0
  90. package/dist/service/index.js +22 -0
  91. package/dist/service/index.js.map +1 -0
  92. package/dist/service/key-aws.services.d.ts +6 -0
  93. package/dist/service/key-aws.services.js +48 -0
  94. package/dist/service/key-aws.services.js.map +1 -0
  95. package/dist/service/key.services.interface.d.ts +3 -0
  96. package/dist/service/key.services.interface.js +3 -0
  97. package/dist/service/key.services.interface.js.map +1 -0
  98. package/dist/service/socket.service.d.ts +6 -0
  99. package/dist/service/socket.service.interface.d.ts +3 -0
  100. package/dist/service/socket.service.interface.js +3 -0
  101. package/dist/service/socket.service.interface.js.map +1 -0
  102. package/dist/service/socket.service.js +33 -0
  103. package/dist/service/socket.service.js.map +1 -0
  104. package/dist/service/validation.service.interface.d.ts +2 -0
  105. package/dist/service/validation.service.interface.js +3 -0
  106. package/dist/service/validation.service.interface.js.map +1 -0
  107. package/dist/utils/auth.util.d.ts +13 -0
  108. package/dist/utils/auth.util.js +17 -0
  109. package/dist/utils/auth.util.js.map +1 -0
  110. package/dist/utils/dynamodb.utils.d.ts +43 -0
  111. package/dist/utils/dynamodb.utils.js +303 -0
  112. package/dist/utils/dynamodb.utils.js.map +1 -0
  113. package/dist/utils/env.util.d.ts +1 -0
  114. package/dist/utils/env.util.js +14 -0
  115. package/dist/utils/env.util.js.map +1 -0
  116. package/dist/utils/error.util.d.ts +1 -0
  117. package/dist/utils/error.util.js +5 -0
  118. package/dist/utils/error.util.js.map +1 -0
  119. package/dist/utils/file-handler.d.ts +14 -0
  120. package/dist/utils/file-handler.js +216 -0
  121. package/dist/utils/file-handler.js.map +1 -0
  122. package/dist/utils/http.util.d.ts +27 -0
  123. package/dist/utils/http.util.js +133 -0
  124. package/dist/utils/http.util.js.map +1 -0
  125. package/dist/utils/index.d.ts +8 -0
  126. package/dist/utils/index.js +25 -0
  127. package/dist/utils/index.js.map +1 -0
  128. package/dist/utils/json.util.d.ts +1 -0
  129. package/dist/utils/json.util.js +20 -0
  130. package/dist/utils/json.util.js.map +1 -0
  131. package/dist/utils/opensearch.utils.d.ts +40 -0
  132. package/dist/utils/opensearch.utils.js +293 -0
  133. package/dist/utils/opensearch.utils.js.map +1 -0
  134. package/dist/utils/reflection.util.d.ts +20 -0
  135. package/dist/utils/reflection.util.js +154 -0
  136. package/dist/utils/reflection.util.js.map +1 -0
  137. package/dist/utils/validation.util.d.ts +13 -0
  138. package/dist/utils/validation.util.js +90 -0
  139. package/dist/utils/validation.util.js.map +1 -0
  140. package/package.json +106 -0
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.addDatesAndId = exports.addDates = exports.copyField = exports.fieldsInclude = exports.chunkArray = exports.hasField = exports.parseObject = void 0;
7
+ exports.isMethodeHasKeyword = isMethodeHasKeyword;
8
+ exports.parseIndexFilter = parseIndexFilter;
9
+ exports.excludeKeys = excludeKeys;
10
+ exports.removeFields = removeFields;
11
+ const http_util_1 = require("./http.util");
12
+ const dayjs_1 = __importDefault(require("dayjs"));
13
+ const parseObject = (body) => {
14
+ try {
15
+ if (typeof body === "string") {
16
+ const parsed = JSON.parse(body);
17
+ return parsed;
18
+ }
19
+ if (typeof body === "object" && body !== null) {
20
+ return body;
21
+ }
22
+ throw new Error("Invalid body format");
23
+ }
24
+ catch (error) {
25
+ throw new Error(`Failed to parse object: ${error.message}`);
26
+ }
27
+ };
28
+ exports.parseObject = parseObject;
29
+ const hasField = (obj, fieldName) => {
30
+ return Object.prototype.hasOwnProperty.call(obj, fieldName);
31
+ };
32
+ exports.hasField = hasField;
33
+ const chunkArray = (array, size) => {
34
+ const result = [];
35
+ for (let i = 0; i < array.length; i += size) {
36
+ result.push(array.slice(i, i + size));
37
+ }
38
+ return result;
39
+ };
40
+ exports.chunkArray = chunkArray;
41
+ function isMethodeHasKeyword(methodName, keywords) {
42
+ if (!methodName)
43
+ return false;
44
+ return keywords.some((keyword) => methodName.toLowerCase().includes(keyword));
45
+ }
46
+ function parseIndexFilter(filter, indexMap) {
47
+ var _a;
48
+ if (!filter)
49
+ return undefined;
50
+ if (typeof filter === "string") {
51
+ filter = (0, http_util_1.toRecord)(filter);
52
+ }
53
+ const result = Object.assign({}, filter);
54
+ if (indexMap === undefined || ((filter === null || filter === void 0 ? void 0 : filter.indexName) && (filter === null || filter === void 0 ? void 0 : filter.indexValue)))
55
+ return result;
56
+ let bestMatch = null;
57
+ for (const [indexName, { rFields, fieldSeparator: fieldSeparator }] of indexMap.entries()) {
58
+ const allFieldsPresent = rFields.every((field) => filter.hasOwnProperty(field));
59
+ if (!allFieldsPresent)
60
+ continue;
61
+ if (!bestMatch || rFields.length > bestMatch.rFields.length) {
62
+ bestMatch = { indexName, rFields, fieldSeparator: fieldSeparator };
63
+ }
64
+ }
65
+ if (bestMatch) {
66
+ const indexValues = bestMatch.rFields.map((field) => filter[field]);
67
+ result.indexName = bestMatch.indexName;
68
+ result.indexValue = indexValues.join((_a = bestMatch.fieldSeparator) !== null && _a !== void 0 ? _a : "");
69
+ // rFields-ийг result-аас хасна
70
+ for (const field of bestMatch.rFields) {
71
+ delete result[field];
72
+ }
73
+ }
74
+ return result;
75
+ }
76
+ function excludeKeys(obj, keysToExclude) {
77
+ const result = {};
78
+ for (const key in obj) {
79
+ if (!keysToExclude.includes(key)) {
80
+ result[key] = obj[key];
81
+ }
82
+ }
83
+ return result;
84
+ }
85
+ /*
86
+ * remove all fields except the ones in the fieldName array
87
+ * */
88
+ const fieldsInclude = (object, fieldName) => {
89
+ if (typeof object !== "object" || object === null) {
90
+ throw new Error("Input must be an object");
91
+ }
92
+ // Create a new object with only the specified fields
93
+ return fieldName.reduce((result, field) => {
94
+ if (field in object) {
95
+ result[field] = object[field];
96
+ }
97
+ return result;
98
+ }, {});
99
+ };
100
+ exports.fieldsInclude = fieldsInclude;
101
+ const copyField = (object, fromFieldName, toFieldName) => {
102
+ if (typeof object !== "object" || object === null)
103
+ throw new Error("Input must be an object");
104
+ object[toFieldName] = object[fromFieldName];
105
+ };
106
+ exports.copyField = copyField;
107
+ /**
108
+ * Removes or keeps specific fields from a list of objects.
109
+ *
110
+ * @param dataList - Array of objects to process
111
+ * @param includes - Optional list of fields to include (whitelist)
112
+ * @param excludes - Optional list of fields to exclude (blacklist)
113
+ * @returns New array of objects with filtered fields
114
+ */
115
+ function removeFields(dataList, includes, excludes) {
116
+ return dataList.map((item) => {
117
+ // If includes are provided, only keep those fields
118
+ if (includes && includes.length > 0) {
119
+ const included = {};
120
+ for (const key of includes) {
121
+ if (key in item) {
122
+ included[key] = item[key];
123
+ }
124
+ }
125
+ return included;
126
+ }
127
+ // If excludes are provided, remove those fields
128
+ if (excludes && excludes.length > 0) {
129
+ const cloned = Object.assign({}, item);
130
+ for (const key of excludes) {
131
+ delete cloned[key];
132
+ }
133
+ return cloned;
134
+ }
135
+ // If neither includes nor excludes: return the item as is
136
+ return item;
137
+ });
138
+ }
139
+ const addDates = (entity) => {
140
+ if (!entity.createdAt)
141
+ entity.createdAt = (0, dayjs_1.default)().toISOString();
142
+ if (!entity.createdDate)
143
+ entity.createdDate = (0, dayjs_1.default)().toISOString();
144
+ entity.updatedAt = (0, dayjs_1.default)().toISOString();
145
+ entity.updatedDate = (0, dayjs_1.default)().toISOString();
146
+ };
147
+ exports.addDates = addDates;
148
+ const addDatesAndId = (entity) => {
149
+ if (!entity.id)
150
+ entity.id = crypto.randomUUID();
151
+ (0, exports.addDates)(entity);
152
+ };
153
+ exports.addDatesAndId = addDatesAndId;
154
+ //# sourceMappingURL=reflection.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reflection.util.js","sourceRoot":"","sources":["../../src/utils/reflection.util.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import * as yup from "yup";
2
+ export interface ValidationResult<T> {
3
+ valid: boolean;
4
+ errors: Record<keyof T, string[]>;
5
+ }
6
+ /**
7
+ * Generic validation function for any data and schema.
8
+ * @param data - The data to validate
9
+ * @param schema - The Yup schema used for validation
10
+ * @returns ValidationResult with `valid` and `errors`
11
+ */
12
+ export declare function validateData<T>(data: T, schema: yup.Schema): Promise<T>;
13
+ export declare function Validate<T>(schema: yup.Schema<T>): MethodDecorator;
@@ -0,0 +1,90 @@
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
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
36
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
37
+ return new (P || (P = Promise))(function (resolve, reject) {
38
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
39
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
40
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
41
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
42
+ });
43
+ };
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.validateData = validateData;
46
+ exports.Validate = Validate;
47
+ const yup = __importStar(require("yup"));
48
+ /**
49
+ * Generic validation function for any data and schema.
50
+ * @param data - The data to validate
51
+ * @param schema - The Yup schema used for validation
52
+ * @returns ValidationResult with `valid` and `errors`
53
+ */
54
+ function validateData(data, schema) {
55
+ return __awaiter(this, void 0, void 0, function* () {
56
+ // Validate the data
57
+ return schema.validate(data, { abortEarly: false }); // `abortEarly: false` ensures all errors are returned
58
+ });
59
+ }
60
+ function Validate(schema) {
61
+ return (target, propertyKey, descriptor) => {
62
+ if (!descriptor)
63
+ throw new Error("@Validate can only be applied to methods.");
64
+ const originalMethod = descriptor.value;
65
+ descriptor.value = function (...args) {
66
+ return __awaiter(this, void 0, void 0, function* () {
67
+ for (const arg of args) {
68
+ if (arg && typeof arg === "object" && !validateEntity(arg, schema)) {
69
+ throw new Error(`Validation failed for method "${propertyKey.toString()}".`);
70
+ }
71
+ }
72
+ return originalMethod.apply(this, args);
73
+ });
74
+ };
75
+ return descriptor;
76
+ };
77
+ }
78
+ function validateEntity(entity, schema) {
79
+ try {
80
+ schema.validateSync(entity, { abortEarly: false });
81
+ return true;
82
+ }
83
+ catch (err) {
84
+ if (err instanceof yup.ValidationError) {
85
+ console.error(`Validation errors for entity:`, err.errors);
86
+ }
87
+ return false;
88
+ }
89
+ }
90
+ //# sourceMappingURL=validation.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.util.js","sourceRoot":"","sources":["../../src/utils/validation.util.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,oCAGC;AAED,4BAyBC;AA3CD,yCAA2B;AAO3B;;;;;GAKG;AACH,SAAsB,YAAY,CAAI,IAAO,EAAE,MAAkB;;QAC/D,oBAAoB;QACpB,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,sDAAsD;IAC7G,CAAC;CAAA;AAED,SAAgB,QAAQ,CAAI,MAAqB;IAC/C,OAAO,CACL,MAAW,EACX,WAA4B,EAC5B,UAA8B,EACV,EAAE;QACtB,IAAI,CAAC,UAAU;YACb,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAE/D,MAAM,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC;QAExC,UAAU,CAAC,KAAK,GAAG,UAAgB,GAAG,IAAW;;gBAC/C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;oBACvB,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC;wBACnE,MAAM,IAAI,KAAK,CACb,iCAAiC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAC5D,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAED,OAAO,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC1C,CAAC;SAAA,CAAC;QAEF,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAI,MAAS,EAAE,MAAqB;IACzD,IAAI,CAAC;QACH,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,GAAG,CAAC,eAAe,EAAE,CAAC;YACvC,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
package/package.json ADDED
@@ -0,0 +1,106 @@
1
+ {
2
+ "name": "aws-service-stack",
3
+ "version": "0.10.92",
4
+ "main": "dist/index.js",
5
+ "types": "dist/index.d.ts",
6
+ "author": "chinggis.systems",
7
+ "license": "ISC",
8
+ "description": "chinggis core backend package",
9
+ "scripts": {
10
+ "test": "jest",
11
+ "build": "tsc && tsc-alias"
12
+ },
13
+ "files": [
14
+ "dist"
15
+ ],
16
+ "publishConfig": {
17
+ "registry": "https://registry.npmjs.org/",
18
+ "access": "public"
19
+ },
20
+ "peerDependencies": {
21
+ "@aws-sdk/client-api-gateway": "^3.577.0",
22
+ "@aws-sdk/client-apigatewaymanagementapi": "^3.485.0",
23
+ "@aws-sdk/client-cognito-identity-provider": "^3.427.0",
24
+ "@aws-sdk/client-dynamodb": "^3.427.0",
25
+ "@aws-sdk/client-lambda": "^3.427.0",
26
+ "@aws-sdk/client-pinpoint": "^3.525.0",
27
+ "@aws-sdk/client-secrets-manager": "^3.427.0",
28
+ "@aws-sdk/client-sqs": "^3.427.0",
29
+ "@aws-sdk/credential-provider-node": "^3.438.0",
30
+ "@aws-sdk/s3-request-presigner": "^3.484.0",
31
+ "@aws-sdk/util-dynamodb": "^3.716.0",
32
+ "@opensearch-project/opensearch": "^2.4.0",
33
+ "aws-lambda": "^1.0.7",
34
+ "axios": "^1.6.0",
35
+ "crypto-js": "^4.2.0",
36
+ "dayjs": "^1.11.10",
37
+ "dynamoose": "^3.2.1",
38
+ "firebase-admin": "^12.0.0",
39
+ "jwt-decode": "^4.0.0",
40
+ "lodash.truncate": "^4.4.2",
41
+ "nanoid": "3.3.4",
42
+ "nodemailer": "^6.9.11",
43
+ "numeral": "^2.0.6",
44
+ "reflect-metadata": "0.2.2",
45
+ "tslib": "^2.3.0",
46
+ "typedi": "0.10.0",
47
+ "uuid": "^8.3.2",
48
+ "xlsx": "^0.18.5",
49
+ "yup": "^1.3.2"
50
+ },
51
+ "dependencies": {
52
+ "@acuris/aws-es-connection": "^2.3.0",
53
+ "@aws-sdk/client-api-gateway": "^3.577.0",
54
+ "@aws-sdk/client-apigatewaymanagementapi": "^3.485.0",
55
+ "@aws-sdk/client-cognito-identity-provider": "^3.427.0",
56
+ "@aws-sdk/client-dynamodb": "^3.427.0",
57
+ "@aws-sdk/client-lambda": "^3.427.0",
58
+ "@aws-sdk/client-pinpoint": "^3.525.0",
59
+ "@aws-sdk/client-secrets-manager": "^3.427.0",
60
+ "@aws-sdk/client-sqs": "^3.427.0",
61
+ "@aws-sdk/credential-provider-node": "^3.438.0",
62
+ "@aws-sdk/lib-dynamodb": "^3.789.0",
63
+ "@aws-sdk/s3-request-presigner": "^3.484.0",
64
+ "@aws-sdk/util-dynamodb": "^3.788.0",
65
+ "@elastic/elasticsearch": "^8.17.1",
66
+ "@opensearch-project/opensearch": "^2.4.0",
67
+ "aws-elasticsearch-connector": "^9.2.0",
68
+ "aws-lambda": "^1.0.7",
69
+ "aws-sdk": "^2.1692.0",
70
+ "axios": "^1.6.0",
71
+ "crypto-js": "^4.2.0",
72
+ "dayjs": "^1.11.10",
73
+ "dynamoose": "^3.2.1",
74
+ "eslint-config-prettier": "^9.1.0",
75
+ "eslint-plugin-prettier": "^5.1.3",
76
+ "firebase-admin": "^12.0.0",
77
+ "jwt-decode": "^4.0.0",
78
+ "lodash.truncate": "^4.4.2",
79
+ "nanoid": "^5.1.5",
80
+ "nodemailer": "^6.9.11",
81
+ "numeral": "^2.0.6",
82
+ "prettier": "^3.2.5",
83
+ "reflect-metadata": "0.2.2",
84
+ "tslib": "^2.3.0",
85
+ "typedi": "0.10.0",
86
+ "uuid": "^8.3.2",
87
+ "xlsx": "^0.18.5",
88
+ "yup": "^1.3.2",
89
+ "zod": "^3.24.4"
90
+ },
91
+ "devDependencies": {
92
+ "@types/aws-lambda": "^8.10.149",
93
+ "@types/jest": "^29.5.14",
94
+ "@typescript-eslint/eslint-plugin": "^6.19.1",
95
+ "@typescript-eslint/parser": "^6.19.1",
96
+ "eslint": "8.57.0",
97
+ "jest": "^29.7.0",
98
+ "jest-transform-stub": "^2.0.0",
99
+ "jsonc-eslint-parser": "^2.4.0",
100
+ "ts-jest": "^29.3.1",
101
+ "ts-node": "^10.9.2",
102
+ "tsc-alias": "^1.8.11",
103
+ "typescript": "^5.8.3",
104
+ "typescript-transform-paths": "^3.5.3"
105
+ }
106
+ }