lemon-core 4.0.1 → 4.0.3
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/dist/cores/aws/aws-kms-service.js +5 -10
- package/dist/cores/aws/aws-kms-service.js.map +1 -1
- package/dist/cores/aws/aws-s3-service.d.ts +8 -2
- package/dist/cores/aws/aws-s3-service.js +51 -15
- package/dist/cores/aws/aws-s3-service.js.map +1 -1
- package/dist/cores/aws/aws-sns-service.d.ts +14 -1
- package/dist/cores/aws/aws-sns-service.js +12 -9
- package/dist/cores/aws/aws-sns-service.js.map +1 -1
- package/dist/cores/aws/aws-sqs-service.d.ts +1 -1
- package/dist/cores/aws/aws-sqs-service.js +15 -9
- package/dist/cores/aws/aws-sqs-service.js.map +1 -1
- package/dist/cores/core-services.d.ts +1 -1
- package/dist/cores/dynamo/dynamo-query-service.js +3 -3
- package/dist/cores/dynamo/dynamo-query-service.js.map +1 -1
- package/dist/cores/dynamo/dynamo-scan-service.d.ts +7 -1
- package/dist/cores/dynamo/dynamo-scan-service.js +10 -3
- package/dist/cores/dynamo/dynamo-scan-service.js.map +1 -1
- package/dist/cores/dynamo/dynamo-service.d.ts +1 -1
- package/dist/cores/dynamo/dynamo-service.js +45 -14
- package/dist/cores/dynamo/dynamo-service.js.map +1 -1
- package/dist/cores/dynamo/tools/expressions.d.ts +0 -10
- package/dist/cores/dynamo/tools/expressions.js +12 -12
- package/dist/cores/dynamo/tools/expressions.js.map +1 -1
- package/dist/cores/dynamo/tools/query.d.ts +0 -10
- package/dist/cores/dynamo/tools/query.js +12 -12
- package/dist/cores/dynamo/tools/query.js.map +1 -1
- package/dist/cores/dynamo/tools/scan.d.ts +0 -10
- package/dist/cores/dynamo/tools/scan.js +12 -12
- package/dist/cores/dynamo/tools/scan.js.map +1 -1
- package/dist/cores/dynamo/tools/serializer.d.ts +0 -10
- package/dist/cores/dynamo/tools/serializer.js +25 -16
- package/dist/cores/dynamo/tools/serializer.js.map +1 -1
- package/dist/cores/dynamo/tools/utils.d.ts +3 -11
- package/dist/cores/dynamo/tools/utils.js +17 -17
- package/dist/cores/dynamo/tools/utils.js.map +1 -1
- package/dist/cores/lambda/lambda-handler.d.ts +5 -0
- package/dist/cores/lambda/lambda-handler.js +13 -0
- package/dist/cores/lambda/lambda-handler.js.map +1 -1
- package/dist/cores/lambda/lambda-web-handler.d.ts +10 -2
- package/dist/cores/lambda/lambda-web-handler.js +4 -14
- package/dist/cores/lambda/lambda-web-handler.js.map +1 -1
- package/dist/cores/protocol/protocol-service.d.ts +2 -1
- package/dist/cores/protocol/protocol-service.js +74 -25
- package/dist/cores/protocol/protocol-service.js.map +1 -1
- package/dist/engine/utilities.d.ts +4 -0
- package/dist/engine/utilities.js +34 -8
- package/dist/engine/utilities.js.map +1 -1
- package/dist/environ.d.ts +9 -30
- package/dist/environ.js +54 -18
- package/dist/environ.js.map +1 -1
- package/dist/extended/abstract-service.d.ts +3 -12
- package/dist/extended/abstract-service.js +1 -28
- package/dist/extended/abstract-service.js.map +1 -1
- package/dist/helpers/helpers.js +2 -7
- package/dist/helpers/helpers.js.map +1 -1
- package/dist/lib/dynamo/expressions.d.ts +14 -0
- package/dist/lib/dynamo/expressions.js +212 -0
- package/dist/lib/dynamo/expressions.js.map +1 -0
- package/dist/lib/dynamo/query.d.ts +43 -0
- package/dist/lib/dynamo/query.js +246 -0
- package/dist/lib/dynamo/query.js.map +1 -0
- package/dist/lib/dynamo/scan.d.ts +33 -0
- package/dist/lib/dynamo/scan.js +172 -0
- package/dist/lib/dynamo/scan.js.map +1 -0
- package/dist/lib/dynamo/serializer.d.ts +12 -0
- package/dist/lib/dynamo/serializer.js +243 -0
- package/dist/lib/dynamo/serializer.js.map +1 -0
- package/dist/lib/dynamo/utils.d.ts +15 -0
- package/dist/lib/dynamo/utils.js +129 -0
- package/dist/lib/dynamo/utils.js.map +1 -0
- package/dist/tools/express.d.ts +18 -32
- package/dist/tools/express.js +56 -7
- package/dist/tools/express.js.map +1 -1
- package/dist/tools/shared.d.ts +1 -8
- package/dist/tools/shared.js +23 -14
- package/dist/tools/shared.js.map +1 -1
- package/dist/tools/tools.d.ts +34 -2
- package/dist/tools/tools.js +52 -2
- package/dist/tools/tools.js.map +1 -1
- package/package.json +7 -6
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// origin from: https://github.com/baseprime/dynamodb @20191106
|
|
3
|
+
// Copyright (c) 2016 Ryan Fitzgerald
|
|
4
|
+
/**
|
|
5
|
+
* `serialize.ts`
|
|
6
|
+
* - serialize
|
|
7
|
+
*
|
|
8
|
+
*
|
|
9
|
+
* @author Steve Jung <steve@lemoncloud.io>
|
|
10
|
+
* @date 2019-11-20 refactoring to ts via origin
|
|
11
|
+
*
|
|
12
|
+
* @copyright (C) lemoncloud.io 2019 - All Rights Reserved.
|
|
13
|
+
*/
|
|
14
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
17
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
18
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
19
|
+
}
|
|
20
|
+
Object.defineProperty(o, k2, desc);
|
|
21
|
+
}) : (function(o, m, k, k2) {
|
|
22
|
+
if (k2 === undefined) k2 = k;
|
|
23
|
+
o[k2] = m[k];
|
|
24
|
+
}));
|
|
25
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
26
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
27
|
+
}) : function(o, v) {
|
|
28
|
+
o["default"] = v;
|
|
29
|
+
});
|
|
30
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
31
|
+
if (mod && mod.__esModule) return mod;
|
|
32
|
+
var result = {};
|
|
33
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
34
|
+
__setModuleDefault(result, mod);
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
38
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
39
|
+
};
|
|
40
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
42
|
+
const utils = __importStar(require("./utils"));
|
|
43
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
44
|
+
const DocClient = require('aws-sdk/lib/dynamodb/document_client');
|
|
45
|
+
const serializer = {};
|
|
46
|
+
const internals = {
|
|
47
|
+
docClient: new DocClient(),
|
|
48
|
+
createSet: function (value, opt) {
|
|
49
|
+
if (lodash_1.default.isArray(value)) {
|
|
50
|
+
return internals.docClient.createSet(value);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
return internals.docClient.createSet([value]);
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
serialize: {
|
|
57
|
+
binary: function (value) {
|
|
58
|
+
if (lodash_1.default.isString(value)) {
|
|
59
|
+
return utils.strToBin(value);
|
|
60
|
+
}
|
|
61
|
+
return value;
|
|
62
|
+
},
|
|
63
|
+
date: function (value) {
|
|
64
|
+
if (lodash_1.default.isDate(value)) {
|
|
65
|
+
return value.toISOString();
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
return new Date(value).toISOString();
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
boolean: function (value) {
|
|
72
|
+
if (value && value !== 'false') {
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
stringSet: function (value) {
|
|
80
|
+
return internals.createSet(value, 'S');
|
|
81
|
+
},
|
|
82
|
+
numberSet: function (value) {
|
|
83
|
+
return internals.createSet(value, 'N');
|
|
84
|
+
},
|
|
85
|
+
binarySet: function (value) {
|
|
86
|
+
let bins = value;
|
|
87
|
+
if (!lodash_1.default.isArray(value)) {
|
|
88
|
+
bins = [value];
|
|
89
|
+
}
|
|
90
|
+
const vals = lodash_1.default.map(bins, serialize.binary);
|
|
91
|
+
return internals.createSet(vals, 'B');
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
deserializeAttribute: (value) => {
|
|
95
|
+
if (lodash_1.default.isObject(value) && lodash_1.default.isFunction(value.detectType) && lodash_1.default.isArray(value.values)) {
|
|
96
|
+
// value is a Set object from document client
|
|
97
|
+
return value.values;
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
return value;
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
serializeAttribute: (value, type, options) => {
|
|
104
|
+
if (!type) {
|
|
105
|
+
// if type is unknown, possibly because its an dynamic key return given value
|
|
106
|
+
return value;
|
|
107
|
+
}
|
|
108
|
+
if (lodash_1.default.isNull(value)) {
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
options = options || {};
|
|
112
|
+
switch (type) {
|
|
113
|
+
case 'DATE':
|
|
114
|
+
return serialize.date(value);
|
|
115
|
+
case 'BOOL':
|
|
116
|
+
return serialize.boolean(value);
|
|
117
|
+
case 'B':
|
|
118
|
+
return serialize.binary(value);
|
|
119
|
+
case 'NS':
|
|
120
|
+
return serialize.numberSet(value);
|
|
121
|
+
case 'SS':
|
|
122
|
+
return serialize.stringSet(value);
|
|
123
|
+
case 'BS':
|
|
124
|
+
return serialize.binarySet(value);
|
|
125
|
+
default:
|
|
126
|
+
return value;
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
};
|
|
130
|
+
const serialize = internals.serialize;
|
|
131
|
+
serializer.serializeAttribute = internals.serializeAttribute;
|
|
132
|
+
serializer.buildKey = (hashKey, rangeKey, schema) => {
|
|
133
|
+
const obj = {};
|
|
134
|
+
if (lodash_1.default.isPlainObject(hashKey)) {
|
|
135
|
+
obj[schema.hashKey] = hashKey[schema.hashKey];
|
|
136
|
+
if (schema.rangeKey && !lodash_1.default.isNull(hashKey[schema.rangeKey]) && !lodash_1.default.isUndefined(hashKey[schema.rangeKey])) {
|
|
137
|
+
obj[schema.rangeKey] = hashKey[schema.rangeKey];
|
|
138
|
+
}
|
|
139
|
+
lodash_1.default.each(schema.globalIndexes, function (keys) {
|
|
140
|
+
if (lodash_1.default.has(hashKey, keys.hashKey)) {
|
|
141
|
+
obj[keys.hashKey] = hashKey[keys.hashKey];
|
|
142
|
+
}
|
|
143
|
+
if (lodash_1.default.has(hashKey, keys.rangeKey)) {
|
|
144
|
+
obj[keys.rangeKey] = hashKey[keys.rangeKey];
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
lodash_1.default.each(schema.secondaryIndexes, function (keys) {
|
|
148
|
+
if (lodash_1.default.has(hashKey, keys.rangeKey)) {
|
|
149
|
+
obj[keys.rangeKey] = hashKey[keys.rangeKey];
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
obj[schema.hashKey] = hashKey;
|
|
155
|
+
if (schema.rangeKey && !lodash_1.default.isNull(rangeKey) && !lodash_1.default.isUndefined(rangeKey)) {
|
|
156
|
+
obj[schema.rangeKey] = rangeKey;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
return serializer.serializeItem(schema, obj);
|
|
160
|
+
};
|
|
161
|
+
serializer.serializeItem = (schema, item, options) => {
|
|
162
|
+
options = options || {};
|
|
163
|
+
const serialize = function (item, datatypes) {
|
|
164
|
+
datatypes = datatypes || {};
|
|
165
|
+
if (!item) {
|
|
166
|
+
return null;
|
|
167
|
+
}
|
|
168
|
+
return lodash_1.default.reduce(item, function (result, val, key) {
|
|
169
|
+
if (options.expected && lodash_1.default.isObject(val) && lodash_1.default.isBoolean(val.Exists)) {
|
|
170
|
+
result[key] = val;
|
|
171
|
+
return result;
|
|
172
|
+
}
|
|
173
|
+
if (lodash_1.default.isPlainObject(val)) {
|
|
174
|
+
result[key] = serialize(val, datatypes[key]);
|
|
175
|
+
return result;
|
|
176
|
+
}
|
|
177
|
+
if (lodash_1.default.isArray(val) && lodash_1.default.isArray(datatypes[key])) {
|
|
178
|
+
result[key] = lodash_1.default.map(val, function (item) {
|
|
179
|
+
return serialize(item, datatypes[key][0]);
|
|
180
|
+
});
|
|
181
|
+
return result;
|
|
182
|
+
}
|
|
183
|
+
const attr = internals.serializeAttribute(val, datatypes[key], options);
|
|
184
|
+
if (!lodash_1.default.isNull(attr) || options.returnNulls) {
|
|
185
|
+
if (options.expected) {
|
|
186
|
+
result[key] = { Value: attr };
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
result[key] = attr;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
return result;
|
|
193
|
+
}, {});
|
|
194
|
+
};
|
|
195
|
+
return serialize(item, schema._modelDatatypes);
|
|
196
|
+
};
|
|
197
|
+
serializer.serializeItemForUpdate = function (schema, action, item) {
|
|
198
|
+
const datatypes = schema._modelDatatypes;
|
|
199
|
+
const data = utils.omitPrimaryKeys(schema, item);
|
|
200
|
+
return lodash_1.default.reduce(data, function (result, value, key) {
|
|
201
|
+
if (lodash_1.default.isNull(value)) {
|
|
202
|
+
result[key] = { Action: 'DELETE' };
|
|
203
|
+
}
|
|
204
|
+
else if (lodash_1.default.isPlainObject(value) && value.$add) {
|
|
205
|
+
result[key] = { Action: 'ADD', Value: internals.serializeAttribute(value.$add, datatypes[key]) };
|
|
206
|
+
}
|
|
207
|
+
else if (lodash_1.default.isPlainObject(value) && value.$del) {
|
|
208
|
+
result[key] = { Action: 'DELETE', Value: internals.serializeAttribute(value.$del, datatypes[key]) };
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
result[key] = { Action: action, Value: internals.serializeAttribute(value, datatypes[key]) };
|
|
212
|
+
}
|
|
213
|
+
return result;
|
|
214
|
+
}, {});
|
|
215
|
+
};
|
|
216
|
+
serializer.deserializeItem = function (item) {
|
|
217
|
+
if (lodash_1.default.isNull(item)) {
|
|
218
|
+
return null;
|
|
219
|
+
}
|
|
220
|
+
const formatter = (data) => {
|
|
221
|
+
let map = lodash_1.default.mapValues;
|
|
222
|
+
if (lodash_1.default.isArray(data)) {
|
|
223
|
+
map = lodash_1.default.map;
|
|
224
|
+
}
|
|
225
|
+
return map(data, function (value) {
|
|
226
|
+
let result;
|
|
227
|
+
if (lodash_1.default.isPlainObject(value)) {
|
|
228
|
+
result = formatter(value);
|
|
229
|
+
}
|
|
230
|
+
else if (lodash_1.default.isArray(value)) {
|
|
231
|
+
result = formatter(value);
|
|
232
|
+
}
|
|
233
|
+
else {
|
|
234
|
+
result = internals.deserializeAttribute(value);
|
|
235
|
+
}
|
|
236
|
+
return result;
|
|
237
|
+
});
|
|
238
|
+
};
|
|
239
|
+
return formatter(item);
|
|
240
|
+
};
|
|
241
|
+
//* export default
|
|
242
|
+
exports.default = serializer;
|
|
243
|
+
//# sourceMappingURL=serializer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serializer.js","sourceRoot":"","sources":["../../../src/lib/dynamo/serializer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `utils.ts`
|
|
3
|
+
* - utils
|
|
4
|
+
*
|
|
5
|
+
*
|
|
6
|
+
* @author Steve Jung <steve@lemoncloud.io>
|
|
7
|
+
* @date 2019-11-20 refactoring to ts via origin
|
|
8
|
+
*
|
|
9
|
+
* @copyright (C) lemoncloud.io 2019 - All Rights Reserved.
|
|
10
|
+
*/
|
|
11
|
+
export declare const omitNulls: (data: any) => Partial<any>;
|
|
12
|
+
export declare const mergeResults: (responses: any, tableName: string) => any;
|
|
13
|
+
export declare const paginatedRequest: (self: any, runRequestFunc: any, callback: any) => void;
|
|
14
|
+
export declare const omitPrimaryKeys: (schema: any, params: any) => Pick<any, never>;
|
|
15
|
+
export declare const strToBin: (value: any) => any;
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// origin from: https://github.com/baseprime/dynamodb @20191106
|
|
3
|
+
// Copyright (c) 2016 Ryan Fitzgerald
|
|
4
|
+
/**
|
|
5
|
+
* `utils.ts`
|
|
6
|
+
* - utils
|
|
7
|
+
*
|
|
8
|
+
*
|
|
9
|
+
* @author Steve Jung <steve@lemoncloud.io>
|
|
10
|
+
* @date 2019-11-20 refactoring to ts via origin
|
|
11
|
+
*
|
|
12
|
+
* @copyright (C) lemoncloud.io 2019 - All Rights Reserved.
|
|
13
|
+
*/
|
|
14
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
15
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
16
|
+
};
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.strToBin = exports.omitPrimaryKeys = exports.paginatedRequest = exports.mergeResults = exports.omitNulls = void 0;
|
|
19
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
20
|
+
const async_1 = __importDefault(require("async"));
|
|
21
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
22
|
+
const AWSUtil = require('aws-sdk/lib/util');
|
|
23
|
+
const omitNulls = (data) => {
|
|
24
|
+
return lodash_1.default.omitBy(data, function (value) {
|
|
25
|
+
return (lodash_1.default.isNull(value) ||
|
|
26
|
+
lodash_1.default.isUndefined(value) ||
|
|
27
|
+
(lodash_1.default.isArray(value) && lodash_1.default.isEmpty(value)) ||
|
|
28
|
+
(lodash_1.default.isString(value) && lodash_1.default.isEmpty(value)));
|
|
29
|
+
});
|
|
30
|
+
};
|
|
31
|
+
exports.omitNulls = omitNulls;
|
|
32
|
+
const mergeResults = (responses, tableName) => {
|
|
33
|
+
const result = {
|
|
34
|
+
Items: [],
|
|
35
|
+
ConsumedCapacity: {
|
|
36
|
+
CapacityUnits: 0,
|
|
37
|
+
TableName: tableName,
|
|
38
|
+
},
|
|
39
|
+
Count: 0,
|
|
40
|
+
ScannedCount: 0,
|
|
41
|
+
};
|
|
42
|
+
const merged = lodash_1.default.reduce(responses, (memo, resp) => {
|
|
43
|
+
if (!resp) {
|
|
44
|
+
return memo;
|
|
45
|
+
}
|
|
46
|
+
memo.Count += resp.Count || 0;
|
|
47
|
+
memo.ScannedCount += resp.ScannedCount || 0;
|
|
48
|
+
if (resp.ConsumedCapacity) {
|
|
49
|
+
memo.ConsumedCapacity.CapacityUnits += resp.ConsumedCapacity.CapacityUnits || 0;
|
|
50
|
+
}
|
|
51
|
+
if (resp.Items) {
|
|
52
|
+
memo.Items = memo.Items.concat(resp.Items);
|
|
53
|
+
}
|
|
54
|
+
if (resp.LastEvaluatedKey) {
|
|
55
|
+
memo.LastEvaluatedKey = resp.LastEvaluatedKey;
|
|
56
|
+
}
|
|
57
|
+
return memo;
|
|
58
|
+
}, result);
|
|
59
|
+
if (merged.ConsumedCapacity.CapacityUnits === 0) {
|
|
60
|
+
delete merged.ConsumedCapacity;
|
|
61
|
+
}
|
|
62
|
+
if (merged.ScannedCount === 0) {
|
|
63
|
+
delete merged.ScannedCount;
|
|
64
|
+
}
|
|
65
|
+
return merged;
|
|
66
|
+
};
|
|
67
|
+
exports.mergeResults = mergeResults;
|
|
68
|
+
const paginatedRequest = (self, runRequestFunc, callback) => {
|
|
69
|
+
// if callback isn't passed switch to stream
|
|
70
|
+
if (!callback) {
|
|
71
|
+
throw new Error('@callback is required');
|
|
72
|
+
}
|
|
73
|
+
let lastEvaluatedKey = null;
|
|
74
|
+
const responses = [];
|
|
75
|
+
let retry = false;
|
|
76
|
+
const doFunc = function (callback) {
|
|
77
|
+
if (lastEvaluatedKey) {
|
|
78
|
+
self.startKey(lastEvaluatedKey);
|
|
79
|
+
}
|
|
80
|
+
runRequestFunc(self.buildRequest(), function (err, resp) {
|
|
81
|
+
if (err && err.retryable) {
|
|
82
|
+
retry = true;
|
|
83
|
+
return setImmediate(callback);
|
|
84
|
+
}
|
|
85
|
+
else if (err) {
|
|
86
|
+
retry = false;
|
|
87
|
+
return setImmediate(callback, err);
|
|
88
|
+
}
|
|
89
|
+
retry = false;
|
|
90
|
+
lastEvaluatedKey = resp.LastEvaluatedKey;
|
|
91
|
+
responses.push(resp);
|
|
92
|
+
return setImmediate(callback);
|
|
93
|
+
});
|
|
94
|
+
};
|
|
95
|
+
const testFunc = function () {
|
|
96
|
+
return (self.options.loadAll && lastEvaluatedKey) || retry;
|
|
97
|
+
};
|
|
98
|
+
const resulsFunc = function (err) {
|
|
99
|
+
if (err) {
|
|
100
|
+
return callback(err);
|
|
101
|
+
}
|
|
102
|
+
return callback(null, (0, exports.mergeResults)(responses, self.table.tableName()));
|
|
103
|
+
};
|
|
104
|
+
async_1.default.doWhilst(doFunc, testFunc, resulsFunc);
|
|
105
|
+
};
|
|
106
|
+
exports.paginatedRequest = paginatedRequest;
|
|
107
|
+
const omitPrimaryKeys = function (schema, params) {
|
|
108
|
+
return lodash_1.default.omit(params, schema.hashKey, schema.rangeKey);
|
|
109
|
+
};
|
|
110
|
+
exports.omitPrimaryKeys = omitPrimaryKeys;
|
|
111
|
+
const strToBin = function (value) {
|
|
112
|
+
if (typeof value !== 'string') {
|
|
113
|
+
const StrConversionError = 'Need to pass in string primitive to be converted to binary.';
|
|
114
|
+
throw new Error(StrConversionError);
|
|
115
|
+
}
|
|
116
|
+
if (AWSUtil.isBrowser()) {
|
|
117
|
+
const len = value.length;
|
|
118
|
+
const bin = new Uint8Array(new ArrayBuffer(len));
|
|
119
|
+
for (let i = 0; i < len; i++) {
|
|
120
|
+
bin[i] = value.charCodeAt(i);
|
|
121
|
+
}
|
|
122
|
+
return bin;
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
return AWSUtil.Buffer(value);
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
exports.strToBin = strToBin;
|
|
129
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/lib/dynamo/utils.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,qCAAqC;AACrC;;;;;;;;;GASG;;;;;;AAEH,oDAAuB;AACvB,kDAA2B;AAC3B,8DAA8D;AAC9D,MAAM,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAErC,MAAM,SAAS,GAAG,CAAC,IAAS,EAAE,EAAE;IACnC,OAAO,gBAAC,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,KAAK;QACjC,OAAO,CACH,gBAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YACf,gBAAC,CAAC,WAAW,CAAC,KAAK,CAAC;YACpB,CAAC,gBAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,gBAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACtC,CAAC,gBAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,gBAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAC1C,CAAC;IACN,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AATW,QAAA,SAAS,aASpB;AAEK,MAAM,YAAY,GAAG,CAAC,SAAc,EAAE,SAAiB,EAAE,EAAE;IAC9D,MAAM,MAAM,GAAG;QACX,KAAK,EAAE,EAAW;QAClB,gBAAgB,EAAE;YACd,aAAa,EAAE,CAAC;YAChB,SAAS,EAAE,SAAS;SACvB;QACD,KAAK,EAAE,CAAC;QACR,YAAY,EAAE,CAAC;KAClB,CAAC;IAEF,MAAM,MAAM,GAAG,gBAAC,CAAC,MAAM,CACnB,SAAS,EACT,CAAC,IAAS,EAAE,IAAS,EAAE,EAAE;QACrB,IAAI,CAAC,IAAI,EAAE;YACP,OAAO,IAAI,CAAC;SACf;QAED,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC;QAE5C,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,CAAC,gBAAgB,CAAC,aAAa,IAAI,IAAI,CAAC,gBAAgB,CAAC,aAAa,IAAI,CAAC,CAAC;SACnF;QAED,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC9C;QAED,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;SACjD;QAED,OAAO,IAAI,CAAC;IAChB,CAAC,EACD,MAAM,CACT,CAAC;IAEF,IAAI,MAAM,CAAC,gBAAgB,CAAC,aAAa,KAAK,CAAC,EAAE;QAC7C,OAAO,MAAM,CAAC,gBAAgB,CAAC;KAClC;IAED,IAAI,MAAM,CAAC,YAAY,KAAK,CAAC,EAAE;QAC3B,OAAO,MAAM,CAAC,YAAY,CAAC;KAC9B;IAED,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AA/CW,QAAA,YAAY,gBA+CvB;AAEK,MAAM,gBAAgB,GAAG,CAAC,IAAS,EAAE,cAAmB,EAAE,QAAa,EAAE,EAAE;IAC9E,4CAA4C;IAC5C,IAAI,CAAC,QAAQ,EAAE;QACX,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;KAC5C;IAED,IAAI,gBAAgB,GAAG,IAAW,CAAC;IACnC,MAAM,SAAS,GAAG,EAAW,CAAC;IAC9B,IAAI,KAAK,GAAG,KAAK,CAAC;IAElB,MAAM,MAAM,GAAG,UAAU,QAAa;QAClC,IAAI,gBAAgB,EAAE;YAClB,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;SACnC;QAED,cAAc,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,UAAU,GAAQ,EAAE,IAAS;YAC7D,IAAI,GAAG,IAAI,GAAG,CAAC,SAAS,EAAE;gBACtB,KAAK,GAAG,IAAI,CAAC;gBACb,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC;aACjC;iBAAM,IAAI,GAAG,EAAE;gBACZ,KAAK,GAAG,KAAK,CAAC;gBACd,OAAO,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;aACtC;YAED,KAAK,GAAG,KAAK,CAAC;YACd,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;YAEzC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAErB,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG;QACb,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,gBAAgB,CAAC,IAAI,KAAK,CAAC;IAC/D,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,UAAU,GAAQ;QACjC,IAAI,GAAG,EAAE;YACL,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;SACxB;QAED,OAAO,QAAQ,CAAC,IAAI,EAAE,IAAA,oBAAY,EAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IAC3E,CAAC,CAAC;IAEF,eAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AAClD,CAAC,CAAC;AA9CW,QAAA,gBAAgB,oBA8C3B;AAEK,MAAM,eAAe,GAAG,UAAU,MAAW,EAAE,MAAW;IAC7D,OAAO,gBAAC,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC3D,CAAC,CAAC;AAFW,QAAA,eAAe,mBAE1B;AAEK,MAAM,QAAQ,GAAG,UAAU,KAAU;IACxC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC3B,MAAM,kBAAkB,GAAG,6DAA6D,CAAC;QACzF,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;KACvC;IAED,IAAI,OAAO,CAAC,SAAS,EAAE,EAAE;QACrB,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;QACzB,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;QACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;YAC1B,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;SAChC;QACD,OAAO,GAAG,CAAC;KACd;SAAM;QACH,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KAChC;AACL,CAAC,CAAC;AAhBW,QAAA,QAAQ,YAgBnB"}
|
package/dist/tools/express.d.ts
CHANGED
|
@@ -1,29 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Express Server Application.
|
|
3
|
-
* - standalone http service with express.
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* ```bash
|
|
7
|
-
* #run-server (use lemon.yml:local)
|
|
8
|
-
* $ npm install -g nodemon
|
|
9
|
-
* $ ENV=lemon STAGE=local nodemon express.js
|
|
10
|
-
* ```
|
|
11
|
-
*
|
|
12
|
-
* [TODO]
|
|
13
|
-
* - [ ] 190801 proper content type `text/plain`
|
|
14
|
-
* - [x] 190801 change router underscore char like `loopers_front` -> `loopers-front`
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* @author Steve Jung <steve@lemoncloud.io>
|
|
18
|
-
* @date 2019-07-31 support ECMA 2016.
|
|
19
|
-
* @date 2019-08-01a auto register api with pattern. `/^[a-z][a-z0-9\-_]+$/`
|
|
20
|
-
* @date 2019-08-07 ignore `engine.dt` function.
|
|
21
|
-
* @date 2019-11-26 cleanup and optimized for `lemon-core#v2`
|
|
22
|
-
* @date 2020-01-23 improve context information via headers.
|
|
23
|
-
* @date 2025-05-20 cleanup `express` out of this module.
|
|
24
|
-
*
|
|
25
|
-
* @copyright (C) lemoncloud.io 2019 - All Rights Reserved.
|
|
26
|
-
*/
|
|
27
1
|
import { LemonEngine } from '../engine/types';
|
|
28
2
|
import { LambdaWEBHandler } from '../cores/lambda/lambda-web-handler';
|
|
29
3
|
/**
|
|
@@ -49,12 +23,24 @@ export interface ExpressFactoryResult {
|
|
|
49
23
|
/** create server listener */
|
|
50
24
|
createServer: (...args: any[]) => any;
|
|
51
25
|
}
|
|
52
|
-
|
|
26
|
+
/**
|
|
27
|
+
* type: `BuildExpressOptions`
|
|
28
|
+
* - options for `buildExpress()`
|
|
29
|
+
*/
|
|
30
|
+
export interface BuildExpressOptions {
|
|
31
|
+
/** run arguments */
|
|
53
32
|
argv?: string[];
|
|
33
|
+
/** prefix as ROUTE_PREFIX */
|
|
54
34
|
prefix?: string;
|
|
35
|
+
/** request-id generator */
|
|
55
36
|
genRequestId?: () => string;
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
37
|
+
/** (optional) loader of module */
|
|
38
|
+
loadModule?: <T = any>(mod: string) => T;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* create Server Instance.
|
|
42
|
+
*
|
|
43
|
+
* @param $engine - LemonEngine by `buildEngine()`
|
|
44
|
+
* @param $web - LambdaWEBHandler in `$cores`
|
|
45
|
+
*/
|
|
46
|
+
export declare const buildExpress: ($engine: LemonEngine, $web: LambdaWEBHandler, options?: BuildExpressOptions) => ExpressFactoryResult;
|
package/dist/tools/express.js
CHANGED
|
@@ -1,20 +1,69 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.buildExpress = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
/**
|
|
5
|
+
* Express Server Application.
|
|
6
|
+
* - standalone http service with express.
|
|
7
|
+
*
|
|
8
|
+
*
|
|
9
|
+
* ```bash
|
|
10
|
+
* #run-server (use lemon.yml:local)
|
|
11
|
+
* $ npm install -g nodemon
|
|
12
|
+
* $ ENV=lemon STAGE=local nodemon express.js
|
|
13
|
+
* ```
|
|
14
|
+
*
|
|
15
|
+
* [TODO]
|
|
16
|
+
* - [ ] 190801 proper content type `text/plain`
|
|
17
|
+
* - [x] 190801 change router underscore char like `loopers_front` -> `loopers-front`
|
|
18
|
+
*
|
|
19
|
+
*
|
|
20
|
+
* @author Steve Jung <steve@lemoncloud.io>
|
|
21
|
+
* @date 2019-07-31 support ECMA 2016.
|
|
22
|
+
* @date 2019-08-01a auto register api with pattern. `/^[a-z][a-z0-9\-_]+$/`
|
|
23
|
+
* @date 2019-08-07 ignore `engine.dt` function.
|
|
24
|
+
* @date 2019-11-26 cleanup and optimized for `lemon-core#v2`
|
|
25
|
+
* @date 2020-01-23 improve context information via headers.
|
|
26
|
+
* @date 2025-05-20 cleanup `express` out of this module.
|
|
27
|
+
*
|
|
28
|
+
* @copyright (C) lemoncloud.io 2019 - All Rights Reserved.
|
|
29
|
+
*/
|
|
30
|
+
const test_helper_1 = require("../common/test-helper");
|
|
31
|
+
/**
|
|
32
|
+
* create Server Instance.
|
|
33
|
+
*
|
|
34
|
+
* @param $engine - LemonEngine by `buildEngine()`
|
|
35
|
+
* @param $web - LambdaWEBHandler in `$cores`
|
|
36
|
+
*/
|
|
6
37
|
const buildExpress = ($engine, $web, options) => {
|
|
7
38
|
const errScope = `buildExpress()`;
|
|
39
|
+
// STEP.0 validate parameters.
|
|
8
40
|
if (!$engine)
|
|
9
41
|
throw new Error(`$engine(LemonEngine) is required - ${errScope}`);
|
|
10
42
|
if (!$web)
|
|
11
43
|
throw new Error(`$web(LambdaWEBHandler) is required - ${errScope}`);
|
|
12
|
-
|
|
13
|
-
const
|
|
14
|
-
|
|
44
|
+
// STEP.1 check the `lemon-devkit` module.
|
|
45
|
+
const _load = (mod) => {
|
|
46
|
+
var _a, _b;
|
|
47
|
+
if (options === null || options === void 0 ? void 0 : options.loadModule)
|
|
48
|
+
return options.loadModule(mod);
|
|
49
|
+
try {
|
|
50
|
+
return require(mod);
|
|
51
|
+
}
|
|
52
|
+
catch (e) {
|
|
53
|
+
(_a = $engine === null || $engine === void 0 ? void 0 : $engine.err) === null || _a === void 0 ? void 0 : _a.call($engine, `! err =`, e);
|
|
54
|
+
const error = `${(_b = e === null || e === void 0 ? void 0 : e.message) !== null && _b !== void 0 ? _b : (0, test_helper_1.GETERR)(e)}`.toLowerCase();
|
|
55
|
+
if (error.includes('cannot find module'))
|
|
56
|
+
return null;
|
|
57
|
+
throw e;
|
|
58
|
+
}
|
|
15
59
|
};
|
|
16
|
-
const
|
|
17
|
-
|
|
60
|
+
const devkit = _load('lemon-devkit');
|
|
61
|
+
if (!devkit)
|
|
62
|
+
throw new Error(`lemon-devkit(module) is required (npm i -D lemon-devkit) - ${errScope}`);
|
|
63
|
+
const _factory = devkit === null || devkit === void 0 ? void 0 : devkit.buildExpress;
|
|
64
|
+
if (!_factory)
|
|
65
|
+
throw new Error(`@buildExpress (function) is required (invalid devkit) - ${errScope}`);
|
|
66
|
+
return _factory($engine, $web, options);
|
|
18
67
|
};
|
|
19
68
|
exports.buildExpress = buildExpress;
|
|
20
69
|
//# sourceMappingURL=express.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"express.js","sourceRoot":"","sources":["../../src/tools/express.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"express.js","sourceRoot":"","sources":["../../src/tools/express.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,uDAA+C;AA4C/C;;;;;GAKG;AACI,MAAM,YAAY,GAAG,CACxB,OAAoB,EACpB,IAAsB,EACtB,OAA6B,EACT,EAAE;IACtB,MAAM,QAAQ,GAAG,gBAAgB,CAAC;IAClC,8BAA8B;IAC9B,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,QAAQ,EAAE,CAAC,CAAC;IAChF,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,QAAQ,EAAE,CAAC,CAAC;IAE/E,0CAA0C;IAC1C,MAAM,KAAK,GAAG,CAAC,GAAW,EAAE,EAAE;;QAC1B,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU;YAAE,OAAO,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAExD,IAAI;YACA,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;SACvB;QAAC,OAAO,CAAC,EAAE;YACR,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,GAAG,wDAAG,SAAS,EAAE,CAAC,CAAC,CAAC;YAC7B,MAAM,KAAK,GAAG,GAAG,MAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,OAAO,mCAAI,IAAA,oBAAM,EAAC,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;YACzD,IAAI,KAAK,CAAC,QAAQ,CAAC,oBAAoB,CAAC;gBAAE,OAAO,IAAI,CAAC;YACtD,MAAM,CAAC,CAAC;SACX;IACL,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC;IACrC,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,8DAA8D,QAAQ,EAAE,CAAC,CAAC;IAEvG,MAAM,QAAQ,GAAmB,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,YAAY,CAAC;IACtD,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,2DAA2D,QAAQ,EAAE,CAAC,CAAC;IACtG,OAAO,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC,CAAC;AA7BW,QAAA,YAAY,gBA6BvB"}
|
package/dist/tools/shared.d.ts
CHANGED
|
@@ -1,20 +1,13 @@
|
|
|
1
|
-
import { AwsCredentialIdentity } from '@aws-sdk/types';
|
|
2
1
|
/**
|
|
3
2
|
* load json in sync.
|
|
4
3
|
*/
|
|
5
4
|
export declare const loadJsonSync: <T extends object = any>(name: string, def?: {}) => T;
|
|
6
5
|
/**
|
|
7
6
|
* dynamic loading credentials by profile. (search PROFILE -> NAME)
|
|
8
|
-
*
|
|
9
|
-
* TODO -define the return type exactly.
|
|
10
|
-
*
|
|
11
|
-
* @returns {Promise<any>} - AWS credentials
|
|
12
7
|
*/
|
|
13
|
-
export declare const asyncCredentials: (profile: string) => Promise<
|
|
8
|
+
export declare const asyncCredentials: (profile: string) => Promise<unknown>;
|
|
14
9
|
/**
|
|
15
10
|
* dynamic loading credentials by profile. (search PROFILE -> NAME)
|
|
16
|
-
*
|
|
17
|
-
* @deprecated use `asyncCredentials` instead.
|
|
18
11
|
*/
|
|
19
12
|
export declare const credentials: (profile: string) => string;
|
|
20
13
|
/**
|
package/dist/tools/shared.js
CHANGED
|
@@ -32,7 +32,7 @@ exports.getRunParam = exports.loadDataYml = exports.hasCredentials = exports.cre
|
|
|
32
32
|
*/
|
|
33
33
|
const fs_1 = __importDefault(require("fs"));
|
|
34
34
|
const js_yaml_1 = __importDefault(require("js-yaml"));
|
|
35
|
-
const
|
|
35
|
+
const aws_sdk_1 = __importDefault(require("aws-sdk"));
|
|
36
36
|
/**
|
|
37
37
|
* load json in sync.
|
|
38
38
|
*/
|
|
@@ -51,30 +51,39 @@ const loadJsonSync = (name, def = {}) => {
|
|
|
51
51
|
exports.loadJsonSync = loadJsonSync;
|
|
52
52
|
/**
|
|
53
53
|
* dynamic loading credentials by profile. (search PROFILE -> NAME)
|
|
54
|
-
*
|
|
55
|
-
* TODO -define the return type exactly.
|
|
56
|
-
*
|
|
57
|
-
* @returns {Promise<any>} - AWS credentials
|
|
58
54
|
*/
|
|
59
55
|
const asyncCredentials = (profile) => __awaiter(void 0, void 0, void 0, function* () {
|
|
60
|
-
|
|
61
|
-
|
|
56
|
+
return new Promise((resolve, reject) => {
|
|
57
|
+
let credentials = null;
|
|
58
|
+
const callback = (e, r) => {
|
|
59
|
+
// e || console.error('! credentials.res :=', r);
|
|
60
|
+
// e && console.error('! credentials.err :=', e);
|
|
61
|
+
if (e)
|
|
62
|
+
reject(e);
|
|
63
|
+
else
|
|
64
|
+
resolve(r || credentials);
|
|
65
|
+
};
|
|
66
|
+
try {
|
|
67
|
+
//WARN! - could not catch AWS.Error `Profile null not found` via callback.
|
|
68
|
+
credentials = new aws_sdk_1.default.SharedIniFileCredentials({ profile, callback });
|
|
69
|
+
aws_sdk_1.default.config.credentials = credentials;
|
|
70
|
+
}
|
|
71
|
+
catch (e) {
|
|
72
|
+
callback(e);
|
|
73
|
+
}
|
|
74
|
+
});
|
|
62
75
|
});
|
|
63
76
|
exports.asyncCredentials = asyncCredentials;
|
|
64
77
|
/**
|
|
65
78
|
* dynamic loading credentials by profile. (search PROFILE -> NAME)
|
|
66
|
-
*
|
|
67
|
-
* @deprecated use `asyncCredentials` instead.
|
|
68
79
|
*/
|
|
69
80
|
const credentials = (profile) => {
|
|
70
81
|
if (!profile)
|
|
71
82
|
return '';
|
|
72
|
-
throw new Error('credentials is deprecated. use `asyncCredentials` instead.');
|
|
73
83
|
// console.info('! credentials.profile =', profile);
|
|
74
84
|
// WARN! - could not catch AWS.Error `Profile null not found` via callback.
|
|
75
|
-
const credentials = new
|
|
76
|
-
|
|
77
|
-
AWS.config.credentials = credentials;
|
|
85
|
+
const credentials = new aws_sdk_1.default.SharedIniFileCredentials({ profile });
|
|
86
|
+
aws_sdk_1.default.config.credentials = credentials;
|
|
78
87
|
return `${profile}`;
|
|
79
88
|
};
|
|
80
89
|
exports.credentials = credentials;
|
|
@@ -82,7 +91,7 @@ exports.credentials = credentials;
|
|
|
82
91
|
* return whether AWS credentials set
|
|
83
92
|
*/
|
|
84
93
|
const hasCredentials = () => {
|
|
85
|
-
return !!
|
|
94
|
+
return !!aws_sdk_1.default.config.credentials;
|
|
86
95
|
};
|
|
87
96
|
exports.hasCredentials = hasCredentials;
|
|
88
97
|
/**
|
package/dist/tools/shared.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/tools/shared.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,4CAAoB;AACpB,sDAA2B;AAC3B,
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/tools/shared.ts"],"names":[],"mappings":"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"}
|