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.
- package/README.md +20 -0
- package/dist/_examples/model/user.model.d.ts +6 -0
- package/dist/_examples/model/user.model.js +3 -0
- package/dist/_examples/model/user.model.js.map +1 -0
- package/dist/controller/base-controller.d.ts +34 -0
- package/dist/controller/base-controller.js +151 -0
- package/dist/controller/base-controller.js.map +1 -0
- package/dist/controller/index.d.ts +1 -0
- package/dist/controller/index.js +18 -0
- package/dist/controller/index.js.map +1 -0
- package/dist/exception/errors.d.ts +32 -0
- package/dist/exception/errors.js +46 -0
- package/dist/exception/errors.js.map +1 -0
- package/dist/exception/exception-handler.d.ts +238 -0
- package/dist/exception/exception-handler.js +112 -0
- package/dist/exception/exception-handler.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/dist/model/base.model.d.ts +64 -0
- package/dist/model/base.model.js +20 -0
- package/dist/model/base.model.js.map +1 -0
- package/dist/model/cognito-user.model.d.ts +12 -0
- package/dist/model/cognito-user.model.js +3 -0
- package/dist/model/cognito-user.model.js.map +1 -0
- package/dist/model/filter.model.d.ts +46 -0
- package/dist/model/filter.model.js +22 -0
- package/dist/model/filter.model.js.map +1 -0
- package/dist/model/http.model.d.ts +7 -0
- package/dist/model/http.model.js +12 -0
- package/dist/model/http.model.js.map +1 -0
- package/dist/model/index.d.ts +4 -0
- package/dist/model/index.js +21 -0
- package/dist/model/index.js.map +1 -0
- package/dist/model/schema-validation.d.ts +20 -0
- package/dist/model/schema-validation.js +91 -0
- package/dist/model/schema-validation.js.map +1 -0
- package/dist/provider/apigateway.d.ts +4 -0
- package/dist/provider/apigateway.js +28 -0
- package/dist/provider/apigateway.js.map +1 -0
- package/dist/provider/dynamodb.d.ts +3 -0
- package/dist/provider/dynamodb.js +18 -0
- package/dist/provider/dynamodb.js.map +1 -0
- package/dist/provider/index.d.ts +3 -0
- package/dist/provider/index.js +20 -0
- package/dist/provider/index.js.map +1 -0
- package/dist/provider/opensearch.d.ts +4 -0
- package/dist/provider/opensearch.js +34 -0
- package/dist/provider/opensearch.js.map +1 -0
- package/dist/repositories/base-core.repo.interface.d.ts +129 -0
- package/dist/repositories/base-core.repo.interface.js +3 -0
- package/dist/repositories/base-core.repo.interface.js.map +1 -0
- package/dist/repositories/base-db.repo.d.ts +78 -0
- package/dist/repositories/base-db.repo.interface.d.ts +61 -0
- package/dist/repositories/base-db.repo.interface.js +3 -0
- package/dist/repositories/base-db.repo.interface.js.map +1 -0
- package/dist/repositories/base-db.repo.js +471 -0
- package/dist/repositories/base-db.repo.js.map +1 -0
- package/dist/repositories/base-es.repo.d.ts +31 -0
- package/dist/repositories/base-es.repo.interface.d.ts +13 -0
- package/dist/repositories/base-es.repo.interface.js +3 -0
- package/dist/repositories/base-es.repo.interface.js.map +1 -0
- package/dist/repositories/base-es.repo.js +148 -0
- package/dist/repositories/base-es.repo.js.map +1 -0
- package/dist/repositories/index.d.ts +4 -0
- package/dist/repositories/index.js +21 -0
- package/dist/repositories/index.js.map +1 -0
- package/dist/service/api.services/api.service.d.ts +11 -0
- package/dist/service/api.services/api.service.interface.d.ts +8 -0
- package/dist/service/api.services/api.service.interface.js +3 -0
- package/dist/service/api.services/api.service.interface.js.map +1 -0
- package/dist/service/api.services/api.service.js +103 -0
- package/dist/service/api.services/api.service.js.map +1 -0
- package/dist/service/api.services/index.d.ts +2 -0
- package/dist/service/api.services/index.js +19 -0
- package/dist/service/api.services/index.js.map +1 -0
- package/dist/service/auth.service.d.ts +8 -0
- package/dist/service/auth.service.interface.d.ts +6 -0
- package/dist/service/auth.service.interface.js +3 -0
- package/dist/service/auth.service.interface.js.map +1 -0
- package/dist/service/auth.service.js +90 -0
- package/dist/service/auth.service.js.map +1 -0
- package/dist/service/base.service.d.ts +39 -0
- package/dist/service/base.service.interface.d.ts +106 -0
- package/dist/service/base.service.interface.js +3 -0
- package/dist/service/base.service.interface.js.map +1 -0
- package/dist/service/base.service.js +167 -0
- package/dist/service/base.service.js.map +1 -0
- package/dist/service/index.d.ts +5 -0
- package/dist/service/index.js +22 -0
- package/dist/service/index.js.map +1 -0
- package/dist/service/key-aws.services.d.ts +6 -0
- package/dist/service/key-aws.services.js +48 -0
- package/dist/service/key-aws.services.js.map +1 -0
- package/dist/service/key.services.interface.d.ts +3 -0
- package/dist/service/key.services.interface.js +3 -0
- package/dist/service/key.services.interface.js.map +1 -0
- package/dist/service/socket.service.d.ts +6 -0
- package/dist/service/socket.service.interface.d.ts +3 -0
- package/dist/service/socket.service.interface.js +3 -0
- package/dist/service/socket.service.interface.js.map +1 -0
- package/dist/service/socket.service.js +33 -0
- package/dist/service/socket.service.js.map +1 -0
- package/dist/service/validation.service.interface.d.ts +2 -0
- package/dist/service/validation.service.interface.js +3 -0
- package/dist/service/validation.service.interface.js.map +1 -0
- package/dist/utils/auth.util.d.ts +13 -0
- package/dist/utils/auth.util.js +17 -0
- package/dist/utils/auth.util.js.map +1 -0
- package/dist/utils/dynamodb.utils.d.ts +43 -0
- package/dist/utils/dynamodb.utils.js +303 -0
- package/dist/utils/dynamodb.utils.js.map +1 -0
- package/dist/utils/env.util.d.ts +1 -0
- package/dist/utils/env.util.js +14 -0
- package/dist/utils/env.util.js.map +1 -0
- package/dist/utils/error.util.d.ts +1 -0
- package/dist/utils/error.util.js +5 -0
- package/dist/utils/error.util.js.map +1 -0
- package/dist/utils/file-handler.d.ts +14 -0
- package/dist/utils/file-handler.js +216 -0
- package/dist/utils/file-handler.js.map +1 -0
- package/dist/utils/http.util.d.ts +27 -0
- package/dist/utils/http.util.js +133 -0
- package/dist/utils/http.util.js.map +1 -0
- package/dist/utils/index.d.ts +8 -0
- package/dist/utils/index.js +25 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/json.util.d.ts +1 -0
- package/dist/utils/json.util.js +20 -0
- package/dist/utils/json.util.js.map +1 -0
- package/dist/utils/opensearch.utils.d.ts +40 -0
- package/dist/utils/opensearch.utils.js +293 -0
- package/dist/utils/opensearch.utils.js.map +1 -0
- package/dist/utils/reflection.util.d.ts +20 -0
- package/dist/utils/reflection.util.js +154 -0
- package/dist/utils/reflection.util.js.map +1 -0
- package/dist/utils/validation.util.d.ts +13 -0
- package/dist/utils/validation.util.js +90 -0
- package/dist/utils/validation.util.js.map +1 -0
- 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
|
+
}
|