@aws-amplify/predictions 5.5.6-api-v6-models.b3abc9b.0 → 6.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 (148) hide show
  1. package/README.md +3 -0
  2. package/lib/Predictions.d.ts +11 -45
  3. package/lib/Predictions.js +24 -132
  4. package/lib/errors/PredictionsError.d.ts +4 -0
  5. package/lib/errors/PredictionsError.js +15 -0
  6. package/lib/errors/types/validation.d.ts +14 -0
  7. package/lib/errors/types/validation.js +50 -0
  8. package/lib/errors/utils/assertValidationError.d.ts +2 -0
  9. package/lib/errors/utils/assertValidationError.js +14 -0
  10. package/lib/index.d.ts +2 -4
  11. package/lib/index.js +2 -9
  12. package/{lib-esm/Providers → lib/providers}/AmazonAIConvertPredictionsProvider.d.ts +6 -7
  13. package/lib/providers/AmazonAIConvertPredictionsProvider.js +307 -0
  14. package/lib/{Providers → providers}/AmazonAIIdentifyPredictionsProvider.d.ts +5 -6
  15. package/lib/providers/AmazonAIIdentifyPredictionsProvider.js +334 -0
  16. package/lib/{Providers → providers}/AmazonAIInterpretPredictionsProvider.d.ts +3 -4
  17. package/lib/providers/AmazonAIInterpretPredictionsProvider.js +208 -0
  18. package/lib/providers/IdentifyTextUtils.d.ts +16 -0
  19. package/lib/{Providers → providers}/IdentifyTextUtils.js +97 -148
  20. package/lib/{Providers → providers}/Utils.d.ts +2 -2
  21. package/lib/{Providers → providers}/Utils.js +11 -12
  22. package/lib/{Providers → providers}/index.d.ts +1 -2
  23. package/lib/providers/index.js +11 -0
  24. package/lib/tsconfig.tsbuildinfo +1 -0
  25. package/lib/types/AWSTypes.d.ts +8 -9
  26. package/lib/types/AWSTypes.js +0 -1
  27. package/lib/types/Predictions.d.ts +63 -59
  28. package/lib/types/Predictions.js +41 -28
  29. package/lib/types/index.js +1 -2
  30. package/lib-esm/Predictions.d.ts +11 -45
  31. package/lib-esm/Predictions.js +23 -133
  32. package/lib-esm/errors/PredictionsError.d.ts +4 -0
  33. package/lib-esm/errors/PredictionsError.js +11 -0
  34. package/lib-esm/errors/types/validation.d.ts +14 -0
  35. package/lib-esm/errors/types/validation.js +47 -0
  36. package/lib-esm/errors/utils/assertValidationError.d.ts +2 -0
  37. package/lib-esm/errors/utils/assertValidationError.js +10 -0
  38. package/lib-esm/index.d.ts +2 -4
  39. package/lib-esm/index.js +1 -5
  40. package/{lib/Providers → lib-esm/providers}/AmazonAIConvertPredictionsProvider.d.ts +6 -7
  41. package/lib-esm/providers/AmazonAIConvertPredictionsProvider.js +303 -0
  42. package/lib-esm/{Providers → providers}/AmazonAIIdentifyPredictionsProvider.d.ts +5 -6
  43. package/lib-esm/providers/AmazonAIIdentifyPredictionsProvider.js +330 -0
  44. package/lib-esm/{Providers → providers}/AmazonAIInterpretPredictionsProvider.d.ts +3 -4
  45. package/lib-esm/providers/AmazonAIInterpretPredictionsProvider.js +204 -0
  46. package/lib-esm/providers/IdentifyTextUtils.d.ts +16 -0
  47. package/lib-esm/providers/IdentifyTextUtils.js +264 -0
  48. package/lib-esm/{Providers → providers}/Utils.d.ts +2 -2
  49. package/lib-esm/{Providers → providers}/Utils.js +10 -12
  50. package/lib-esm/{Providers → providers}/index.d.ts +1 -2
  51. package/lib-esm/{Providers → providers}/index.js +1 -3
  52. package/lib-esm/tsconfig.tsbuildinfo +1 -0
  53. package/lib-esm/types/AWSTypes.d.ts +8 -9
  54. package/lib-esm/types/AWSTypes.js +1 -1
  55. package/lib-esm/types/Predictions.d.ts +63 -59
  56. package/lib-esm/types/Predictions.js +34 -27
  57. package/lib-esm/types/index.js +0 -1
  58. package/package.json +39 -48
  59. package/src/Predictions.ts +33 -220
  60. package/src/errors/PredictionsError.ts +16 -0
  61. package/src/errors/types/validation.ts +51 -0
  62. package/src/errors/utils/assertValidationError.ts +18 -0
  63. package/src/index.ts +16 -16
  64. package/src/{Providers → providers}/AmazonAIConvertPredictionsProvider.ts +210 -171
  65. package/src/{Providers → providers}/AmazonAIIdentifyPredictionsProvider.ts +244 -246
  66. package/src/providers/AmazonAIInterpretPredictionsProvider.ts +293 -0
  67. package/src/{Providers → providers}/IdentifyTextUtils.ts +69 -52
  68. package/src/{Providers → providers}/Utils.ts +2 -2
  69. package/src/{Providers → providers}/index.ts +0 -2
  70. package/src/types/AWSTypes.ts +5 -6
  71. package/src/types/Predictions.ts +107 -62
  72. package/lib/.tsbuildinfo +0 -3
  73. package/lib/Predictions.js.map +0 -1
  74. package/lib/Providers/AmazonAIConvertPredictionsProvider.js +0 -377
  75. package/lib/Providers/AmazonAIConvertPredictionsProvider.js.map +0 -1
  76. package/lib/Providers/AmazonAIIdentifyPredictionsProvider.js +0 -441
  77. package/lib/Providers/AmazonAIIdentifyPredictionsProvider.js.map +0 -1
  78. package/lib/Providers/AmazonAIInterpretPredictionsProvider.js +0 -321
  79. package/lib/Providers/AmazonAIInterpretPredictionsProvider.js.map +0 -1
  80. package/lib/Providers/AmazonAIPredictionsProvider.d.ts +0 -14
  81. package/lib/Providers/AmazonAIPredictionsProvider.js +0 -43
  82. package/lib/Providers/AmazonAIPredictionsProvider.js.map +0 -1
  83. package/lib/Providers/IdentifyTextUtils.d.ts +0 -40
  84. package/lib/Providers/IdentifyTextUtils.js.map +0 -1
  85. package/lib/Providers/Utils.js.map +0 -1
  86. package/lib/Providers/index.js +0 -13
  87. package/lib/Providers/index.js.map +0 -1
  88. package/lib/index.js.map +0 -1
  89. package/lib/types/AWSTypes.js.map +0 -1
  90. package/lib/types/Predictions.js.map +0 -1
  91. package/lib/types/Providers/AbstractConvertPredictionsProvider.d.ts +0 -9
  92. package/lib/types/Providers/AbstractConvertPredictionsProvider.js +0 -44
  93. package/lib/types/Providers/AbstractConvertPredictionsProvider.js.map +0 -1
  94. package/lib/types/Providers/AbstractIdentifyPredictionsProvider.d.ts +0 -9
  95. package/lib/types/Providers/AbstractIdentifyPredictionsProvider.js +0 -44
  96. package/lib/types/Providers/AbstractIdentifyPredictionsProvider.js.map +0 -1
  97. package/lib/types/Providers/AbstractInterpretPredictionsProvider.d.ts +0 -7
  98. package/lib/types/Providers/AbstractInterpretPredictionsProvider.js +0 -27
  99. package/lib/types/Providers/AbstractInterpretPredictionsProvider.js.map +0 -1
  100. package/lib/types/Providers/AbstractPredictionsProvider.d.ts +0 -7
  101. package/lib/types/Providers/AbstractPredictionsProvider.js +0 -16
  102. package/lib/types/Providers/AbstractPredictionsProvider.js.map +0 -1
  103. package/lib/types/Providers/index.d.ts +0 -4
  104. package/lib/types/Providers/index.js +0 -10
  105. package/lib/types/Providers/index.js.map +0 -1
  106. package/lib/types/index.js.map +0 -1
  107. package/lib-esm/.tsbuildinfo +0 -3
  108. package/lib-esm/Predictions.js.map +0 -1
  109. package/lib-esm/Providers/AmazonAIConvertPredictionsProvider.js +0 -375
  110. package/lib-esm/Providers/AmazonAIConvertPredictionsProvider.js.map +0 -1
  111. package/lib-esm/Providers/AmazonAIIdentifyPredictionsProvider.js +0 -439
  112. package/lib-esm/Providers/AmazonAIIdentifyPredictionsProvider.js.map +0 -1
  113. package/lib-esm/Providers/AmazonAIInterpretPredictionsProvider.js +0 -319
  114. package/lib-esm/Providers/AmazonAIInterpretPredictionsProvider.js.map +0 -1
  115. package/lib-esm/Providers/AmazonAIPredictionsProvider.d.ts +0 -14
  116. package/lib-esm/Providers/AmazonAIPredictionsProvider.js +0 -41
  117. package/lib-esm/Providers/AmazonAIPredictionsProvider.js.map +0 -1
  118. package/lib-esm/Providers/IdentifyTextUtils.d.ts +0 -40
  119. package/lib-esm/Providers/IdentifyTextUtils.js +0 -313
  120. package/lib-esm/Providers/IdentifyTextUtils.js.map +0 -1
  121. package/lib-esm/Providers/Utils.js.map +0 -1
  122. package/lib-esm/Providers/index.js.map +0 -1
  123. package/lib-esm/index.js.map +0 -1
  124. package/lib-esm/types/AWSTypes.js.map +0 -1
  125. package/lib-esm/types/Predictions.js.map +0 -1
  126. package/lib-esm/types/Providers/AbstractConvertPredictionsProvider.d.ts +0 -9
  127. package/lib-esm/types/Providers/AbstractConvertPredictionsProvider.js +0 -42
  128. package/lib-esm/types/Providers/AbstractConvertPredictionsProvider.js.map +0 -1
  129. package/lib-esm/types/Providers/AbstractIdentifyPredictionsProvider.d.ts +0 -9
  130. package/lib-esm/types/Providers/AbstractIdentifyPredictionsProvider.js +0 -42
  131. package/lib-esm/types/Providers/AbstractIdentifyPredictionsProvider.js.map +0 -1
  132. package/lib-esm/types/Providers/AbstractInterpretPredictionsProvider.d.ts +0 -7
  133. package/lib-esm/types/Providers/AbstractInterpretPredictionsProvider.js +0 -25
  134. package/lib-esm/types/Providers/AbstractInterpretPredictionsProvider.js.map +0 -1
  135. package/lib-esm/types/Providers/AbstractPredictionsProvider.d.ts +0 -7
  136. package/lib-esm/types/Providers/AbstractPredictionsProvider.js +0 -14
  137. package/lib-esm/types/Providers/AbstractPredictionsProvider.js.map +0 -1
  138. package/lib-esm/types/Providers/index.d.ts +0 -4
  139. package/lib-esm/types/Providers/index.js +0 -7
  140. package/lib-esm/types/Providers/index.js.map +0 -1
  141. package/lib-esm/types/index.js.map +0 -1
  142. package/src/Providers/AmazonAIInterpretPredictionsProvider.ts +0 -281
  143. package/src/Providers/AmazonAIPredictionsProvider.ts +0 -69
  144. package/src/types/Providers/AbstractConvertPredictionsProvider.ts +0 -55
  145. package/src/types/Providers/AbstractIdentifyPredictionsProvider.ts +0 -57
  146. package/src/types/Providers/AbstractInterpretPredictionsProvider.ts +0 -26
  147. package/src/types/Providers/AbstractPredictionsProvider.ts +0 -20
  148. package/src/types/Providers/index.ts +0 -6
@@ -1,439 +0,0 @@
1
- import { __assign, __awaiter, __extends, __generator } from "tslib";
2
- // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
- // SPDX-License-Identifier: Apache-2.0
4
- import { Category, Credentials, PredictionsAction, getAmplifyUserAgentObject, } from '@aws-amplify/core';
5
- import { Storage } from '@aws-amplify/storage';
6
- import { AbstractIdentifyPredictionsProvider } from '../types/Providers';
7
- import { RekognitionClient, SearchFacesByImageCommand, DetectTextCommand, DetectLabelsCommand, DetectFacesCommand, DetectModerationLabelsCommand, RecognizeCelebritiesCommand, } from '@aws-sdk/client-rekognition';
8
- import { isStorageSource, isFileSource, isBytesSource, isIdentifyCelebrities, isIdentifyFromCollection, } from '../types';
9
- import { TextractClient, DetectDocumentTextCommand, AnalyzeDocumentCommand, } from '@aws-sdk/client-textract';
10
- import { makeCamelCase, makeCamelCaseArray, blobToArrayBuffer } from './Utils';
11
- import { categorizeRekognitionBlocks, categorizeTextractBlocks, } from './IdentifyTextUtils';
12
- var AmazonAIIdentifyPredictionsProvider = /** @class */ (function (_super) {
13
- __extends(AmazonAIIdentifyPredictionsProvider, _super);
14
- function AmazonAIIdentifyPredictionsProvider() {
15
- return _super.call(this) || this;
16
- }
17
- AmazonAIIdentifyPredictionsProvider.prototype.getProviderName = function () {
18
- return 'AmazonAIIdentifyPredictionsProvider';
19
- };
20
- /**
21
- * Verify user input source and converts it into source object readable by Rekognition and Textract.
22
- * Note that Rekognition and Textract use the same source interface, so we need not worry about types.
23
- * @param {IdentifySource} source - User input source that directs to the object user wants
24
- * to identify (storage, file, or bytes).
25
- * @return {Promise<Image>} - Promise resolving to the converted source object.
26
- */
27
- AmazonAIIdentifyPredictionsProvider.prototype.configureSource = function (source) {
28
- return new Promise(function (res, rej) {
29
- if (isStorageSource(source)) {
30
- var storageConfig = {
31
- level: source.level,
32
- identityId: source.identityId,
33
- };
34
- Storage.get(source.key, storageConfig)
35
- .then(function (url) {
36
- var parser = /https:\/\/([a-zA-Z0-9%\-_.]+)\.s3\.[A-Za-z0-9%\-._~]+\/([a-zA-Z0-9%\-._~/]+)\?/;
37
- var parsedURL = url.match(parser);
38
- if (parsedURL.length < 3)
39
- rej('Invalid S3 key was given.');
40
- res({
41
- S3Object: {
42
- Bucket: parsedURL[1],
43
- Name: decodeURIComponent(parsedURL[2]),
44
- },
45
- });
46
- })
47
- .catch(function (err) { return rej(err); });
48
- }
49
- else if (isFileSource(source)) {
50
- blobToArrayBuffer(source.file)
51
- .then(function (buffer) {
52
- res({ Bytes: new Uint8Array(buffer) });
53
- })
54
- .catch(function (err) { return rej(err); });
55
- }
56
- else if (isBytesSource(source)) {
57
- var bytes = source.bytes;
58
- if (bytes instanceof Blob) {
59
- blobToArrayBuffer(bytes)
60
- .then(function (buffer) {
61
- res({ Bytes: new Uint8Array(buffer) });
62
- })
63
- .catch(function (err) { return rej(err); });
64
- }
65
- if (bytes instanceof ArrayBuffer || bytes instanceof Buffer) {
66
- res({ Bytes: new Uint8Array(bytes) });
67
- }
68
- // everything else can be directly passed to Rekognition / Textract.
69
- res({ Bytes: bytes });
70
- }
71
- else {
72
- rej('Input source is not configured correctly.');
73
- }
74
- });
75
- };
76
- /**
77
- * Recognize text from real-world images and documents (plain text, forms and tables). Detects text in the input
78
- * image and converts it into machine-readable text.
79
- * @param {IdentifySource} source - Object containing the source image and feature types to analyze.
80
- * @return {Promise<IdentifyTextOutput>} - Promise resolving to object containing identified texts.
81
- */
82
- AmazonAIIdentifyPredictionsProvider.prototype.identifyText = function (input) {
83
- return __awaiter(this, void 0, void 0, function () {
84
- var credentials, _a, _b, _c, region, _d, _e, configFormat, inputDocument, err_1, format, featureTypes, textractParam, rekognitionParam, detectTextCommand, rekognitionData, rekognitionResponse, detectDocumentTextCommand, Blocks, err_2, param, analyzeDocumentCommand, Blocks, err_3;
85
- return __generator(this, function (_f) {
86
- switch (_f.label) {
87
- case 0: return [4 /*yield*/, Credentials.get()];
88
- case 1:
89
- credentials = _f.sent();
90
- if (!credentials)
91
- return [2 /*return*/, Promise.reject('No credentials')];
92
- _a = this._config.identifyText, _b = _a === void 0 ? {} : _a, _c = _b.region, region = _c === void 0 ? '' : _c, _d = _b.defaults, _e = (_d === void 0 ? {} : _d).format, configFormat = _e === void 0 ? 'PLAIN' : _e;
93
- this.rekognitionClient = new RekognitionClient({
94
- region: region,
95
- credentials: credentials,
96
- customUserAgent: _getPredictionsIdentifyAmplifyUserAgent(),
97
- });
98
- this.textractClient = new TextractClient({
99
- region: region,
100
- credentials: credentials,
101
- customUserAgent: _getPredictionsIdentifyAmplifyUserAgent(),
102
- });
103
- _f.label = 2;
104
- case 2:
105
- _f.trys.push([2, 4, , 5]);
106
- return [4 /*yield*/, this.configureSource(input.text.source)];
107
- case 3:
108
- inputDocument = _f.sent();
109
- return [3 /*break*/, 5];
110
- case 4:
111
- err_1 = _f.sent();
112
- return [2 /*return*/, Promise.reject(err_1)];
113
- case 5:
114
- format = input.text.format || configFormat;
115
- featureTypes = [];
116
- if (format === 'FORM' || format === 'ALL')
117
- featureTypes.push('FORMS');
118
- if (format === 'TABLE' || format === 'ALL')
119
- featureTypes.push('TABLES');
120
- if (!(featureTypes.length === 0)) return [3 /*break*/, 11];
121
- textractParam = {
122
- Document: inputDocument,
123
- };
124
- rekognitionParam = {
125
- Image: inputDocument,
126
- };
127
- _f.label = 6;
128
- case 6:
129
- _f.trys.push([6, 9, , 10]);
130
- detectTextCommand = new DetectTextCommand(rekognitionParam);
131
- return [4 /*yield*/, this.rekognitionClient.send(detectTextCommand)];
132
- case 7:
133
- rekognitionData = _f.sent();
134
- rekognitionResponse = categorizeRekognitionBlocks(rekognitionData.TextDetections);
135
- if (rekognitionResponse.text.words.length < 50) {
136
- // did not hit the word limit, return the data
137
- return [2 /*return*/, rekognitionResponse];
138
- }
139
- detectDocumentTextCommand = new DetectDocumentTextCommand(textractParam);
140
- return [4 /*yield*/, this.textractClient.send(detectDocumentTextCommand)];
141
- case 8:
142
- Blocks = (_f.sent()).Blocks;
143
- if (rekognitionData.TextDetections.length > Blocks.length) {
144
- return [2 /*return*/, rekognitionResponse];
145
- }
146
- return [2 /*return*/, categorizeTextractBlocks(Blocks)];
147
- case 9:
148
- err_2 = _f.sent();
149
- Promise.reject(err_2);
150
- return [3 /*break*/, 10];
151
- case 10: return [3 /*break*/, 15];
152
- case 11:
153
- param = {
154
- Document: inputDocument,
155
- FeatureTypes: featureTypes,
156
- };
157
- _f.label = 12;
158
- case 12:
159
- _f.trys.push([12, 14, , 15]);
160
- analyzeDocumentCommand = new AnalyzeDocumentCommand(param);
161
- return [4 /*yield*/, this.textractClient.send(analyzeDocumentCommand)];
162
- case 13:
163
- Blocks = (_f.sent()).Blocks;
164
- return [2 /*return*/, categorizeTextractBlocks(Blocks)];
165
- case 14:
166
- err_3 = _f.sent();
167
- return [2 /*return*/, Promise.reject(err_3)];
168
- case 15: return [2 /*return*/];
169
- }
170
- });
171
- });
172
- };
173
- /**
174
- * Identify instances of real world entities from an image and if it contains unsafe content.
175
- * @param {IdentifyLabelsInput} input - Object containing the source image and entity type to identify.
176
- * @return {Promise<IdentifyLabelsOutput>} - Promise resolving to an array of identified entities.
177
- */
178
- AmazonAIIdentifyPredictionsProvider.prototype.identifyLabels = function (input) {
179
- return __awaiter(this, void 0, void 0, function () {
180
- var credentials, _a, _b, _c, region, _d, _e, type, inputImage_1, param, servicePromises, entityType, err_4;
181
- return __generator(this, function (_f) {
182
- switch (_f.label) {
183
- case 0:
184
- _f.trys.push([0, 3, , 4]);
185
- return [4 /*yield*/, Credentials.get()];
186
- case 1:
187
- credentials = _f.sent();
188
- if (!credentials)
189
- return [2 /*return*/, Promise.reject('No credentials')];
190
- _a = this._config.identifyLabels, _b = _a === void 0 ? {} : _a, _c = _b.region, region = _c === void 0 ? '' : _c, _d = _b.defaults, _e = (_d === void 0 ? {} : _d).type, type = _e === void 0 ? 'LABELS' : _e;
191
- this.rekognitionClient = new RekognitionClient({
192
- region: region,
193
- credentials: credentials,
194
- customUserAgent: _getPredictionsIdentifyAmplifyUserAgent(),
195
- });
196
- return [4 /*yield*/, this.configureSource(input.labels.source)
197
- .then(function (data) {
198
- inputImage_1 = data;
199
- })
200
- .catch(function (err) {
201
- return Promise.reject(err);
202
- })];
203
- case 2:
204
- _f.sent();
205
- param = { Image: inputImage_1 };
206
- servicePromises = [];
207
- entityType = input.labels.type || type;
208
- if (entityType === 'LABELS' || entityType === 'ALL') {
209
- servicePromises.push(this.detectLabels(param));
210
- }
211
- if (entityType === 'UNSAFE' || entityType === 'ALL') {
212
- servicePromises.push(this.detectModerationLabels(param));
213
- }
214
- return [2 /*return*/, Promise.all(servicePromises)
215
- .then(function (data) {
216
- var identifyResult = {};
217
- // concatenate resolved promises to a single object
218
- data.forEach(function (val) {
219
- identifyResult = __assign(__assign({}, identifyResult), val);
220
- });
221
- return identifyResult;
222
- })
223
- .catch(function (err) { return Promise.reject(err); })];
224
- case 3:
225
- err_4 = _f.sent();
226
- return [2 /*return*/, Promise.reject(err_4)];
227
- case 4: return [2 /*return*/];
228
- }
229
- });
230
- });
231
- };
232
- /**
233
- * Calls Rekognition.detectLabels and organizes the returned data.
234
- * @param {DetectLabelsInput} param - parameter to be passed onto Rekognition
235
- * @return {Promise<IdentifyLabelsOutput>} - Promise resolving to organized detectLabels response.
236
- */
237
- AmazonAIIdentifyPredictionsProvider.prototype.detectLabels = function (param) {
238
- return __awaiter(this, void 0, void 0, function () {
239
- var detectLabelsCommand, data, detectLabelData, err_5;
240
- return __generator(this, function (_a) {
241
- switch (_a.label) {
242
- case 0:
243
- _a.trys.push([0, 2, , 3]);
244
- detectLabelsCommand = new DetectLabelsCommand(param);
245
- return [4 /*yield*/, this.rekognitionClient.send(detectLabelsCommand)];
246
- case 1:
247
- data = _a.sent();
248
- if (!data.Labels)
249
- return [2 /*return*/, { labels: null }]; // no image was detected
250
- detectLabelData = data.Labels.map(function (val) {
251
- var boxes = val.Instances
252
- ? val.Instances.map(function (val) { return makeCamelCase(val.BoundingBox); })
253
- : undefined;
254
- return {
255
- name: val.Name,
256
- boundingBoxes: boxes,
257
- metadata: {
258
- confidence: val.Confidence,
259
- parents: makeCamelCaseArray(val.Parents),
260
- },
261
- };
262
- });
263
- return [2 /*return*/, { labels: detectLabelData }];
264
- case 2:
265
- err_5 = _a.sent();
266
- return [2 /*return*/, Promise.reject(err_5)];
267
- case 3: return [2 /*return*/];
268
- }
269
- });
270
- });
271
- };
272
- /**
273
- * Calls Rekognition.detectModerationLabels and organizes the returned data.
274
- * @param {Rekognition.DetectLabelsRequest} param - Parameter to be passed onto Rekognition
275
- * @return {Promise<IdentifyLabelsOutput>} - Promise resolving to organized detectModerationLabels response.
276
- */
277
- AmazonAIIdentifyPredictionsProvider.prototype.detectModerationLabels = function (param) {
278
- return __awaiter(this, void 0, void 0, function () {
279
- var detectModerationLabelsCommand, data, err_6;
280
- return __generator(this, function (_a) {
281
- switch (_a.label) {
282
- case 0:
283
- _a.trys.push([0, 2, , 3]);
284
- detectModerationLabelsCommand = new DetectModerationLabelsCommand(param);
285
- return [4 /*yield*/, this.rekognitionClient.send(detectModerationLabelsCommand)];
286
- case 1:
287
- data = _a.sent();
288
- if (data.ModerationLabels.length !== 0) {
289
- return [2 /*return*/, { unsafe: 'YES' }];
290
- }
291
- else {
292
- return [2 /*return*/, { unsafe: 'NO' }];
293
- }
294
- return [3 /*break*/, 3];
295
- case 2:
296
- err_6 = _a.sent();
297
- return [2 /*return*/, Promise.reject(err_6)];
298
- case 3: return [2 /*return*/];
299
- }
300
- });
301
- });
302
- };
303
- /**
304
- * Identify faces within an image that is provided as input, and match faces from a collection
305
- * or identify celebrities.
306
- * @param {IdentifyEntityInput} input - object containing the source image and face match options.
307
- * @return {Promise<IdentifyEntityOutput>} Promise resolving to identify results.
308
- */
309
- AmazonAIIdentifyPredictionsProvider.prototype.identifyEntities = function (input) {
310
- return __awaiter(this, void 0, void 0, function () {
311
- var credentials, _a, _b, _c, region, _d, celebrityDetectionEnabled, _e, _f, _g, collectionIdConfig, _h, maxFacesConfig, inputImage, param, recognizeCelebritiesCommand, data, faces, err_7, _j, _k, collectionId, _l, maxFaces, updatedParam, searchFacesByImageCommand, data, faces, err_8, detectFacesCommand, data, faces, err_9;
312
- var _this = this;
313
- return __generator(this, function (_m) {
314
- switch (_m.label) {
315
- case 0: return [4 /*yield*/, Credentials.get()];
316
- case 1:
317
- credentials = _m.sent();
318
- if (!credentials)
319
- return [2 /*return*/, Promise.reject('No credentials')];
320
- _a = this._config.identifyEntities, _b = _a === void 0 ? {} : _a, _c = _b.region, region = _c === void 0 ? '' : _c, _d = _b.celebrityDetectionEnabled, celebrityDetectionEnabled = _d === void 0 ? false : _d, _e = _b.defaults, _f = _e === void 0 ? {} : _e, _g = _f.collectionId, collectionIdConfig = _g === void 0 ? '' : _g, _h = _f.maxEntities, maxFacesConfig = _h === void 0 ? 50 : _h;
321
- // default arguments
322
- this.rekognitionClient = new RekognitionClient({
323
- region: region,
324
- credentials: credentials,
325
- customUserAgent: _getPredictionsIdentifyAmplifyUserAgent(),
326
- });
327
- return [4 /*yield*/, this.configureSource(input.entities.source)
328
- .then(function (data) { return (inputImage = data); })
329
- .catch(function (err) {
330
- return Promise.reject(err);
331
- })];
332
- case 2:
333
- _m.sent();
334
- param = { Attributes: ['ALL'], Image: inputImage };
335
- if (!(isIdentifyCelebrities(input.entities) &&
336
- input.entities.celebrityDetection)) return [3 /*break*/, 7];
337
- if (!celebrityDetectionEnabled) {
338
- return [2 /*return*/, Promise.reject('Error: You have to enable celebrity detection first')];
339
- }
340
- _m.label = 3;
341
- case 3:
342
- _m.trys.push([3, 5, , 6]);
343
- recognizeCelebritiesCommand = new RecognizeCelebritiesCommand(param);
344
- return [4 /*yield*/, this.rekognitionClient.send(recognizeCelebritiesCommand)];
345
- case 4:
346
- data = _m.sent();
347
- faces = data.CelebrityFaces.map(function (celebrity) {
348
- return {
349
- boundingBox: makeCamelCase(celebrity.Face.BoundingBox),
350
- landmarks: makeCamelCaseArray(celebrity.Face.Landmarks),
351
- metadata: __assign(__assign({}, makeCamelCase(celebrity, ['Id', 'Name', 'Urls'])), { pose: makeCamelCase(celebrity.Face.Pose) }),
352
- };
353
- });
354
- return [2 /*return*/, { entities: faces }];
355
- case 5:
356
- err_7 = _m.sent();
357
- return [2 /*return*/, Promise.reject(err_7)];
358
- case 6: return [3 /*break*/, 15];
359
- case 7:
360
- if (!(isIdentifyFromCollection(input.entities) &&
361
- input.entities.collection)) return [3 /*break*/, 12];
362
- _j = input.entities, _k = _j.collectionId, collectionId = _k === void 0 ? collectionIdConfig : _k, _l = _j.maxEntities, maxFaces = _l === void 0 ? maxFacesConfig : _l;
363
- updatedParam = __assign(__assign({}, param), { CollectionId: collectionId, MaxFaces: maxFaces });
364
- _m.label = 8;
365
- case 8:
366
- _m.trys.push([8, 10, , 11]);
367
- searchFacesByImageCommand = new SearchFacesByImageCommand(updatedParam);
368
- return [4 /*yield*/, this.rekognitionClient.send(searchFacesByImageCommand)];
369
- case 9:
370
- data = _m.sent();
371
- faces = data.FaceMatches.map(function (val) {
372
- return {
373
- boundingBox: makeCamelCase(val.Face.BoundingBox),
374
- metadata: {
375
- externalImageId: _this.decodeExternalImageId(val.Face.ExternalImageId),
376
- similarity: val.Similarity,
377
- },
378
- };
379
- });
380
- return [2 /*return*/, { entities: faces }];
381
- case 10:
382
- err_8 = _m.sent();
383
- return [2 /*return*/, Promise.reject(err_8)];
384
- case 11: return [3 /*break*/, 15];
385
- case 12:
386
- _m.trys.push([12, 14, , 15]);
387
- detectFacesCommand = new DetectFacesCommand(param);
388
- return [4 /*yield*/, this.rekognitionClient.send(detectFacesCommand)];
389
- case 13:
390
- data = _m.sent();
391
- faces = data.FaceDetails.map(function (detail) {
392
- // face attributes keys we want to extract from Rekognition's response
393
- var attributeKeys = [
394
- 'Smile',
395
- 'Eyeglasses',
396
- 'Sunglasses',
397
- 'Gender',
398
- 'Beard',
399
- 'Mustache',
400
- 'EyesOpen',
401
- 'MouthOpen',
402
- ];
403
- var faceAttributes = makeCamelCase(detail, attributeKeys);
404
- if (detail.Emotions) {
405
- faceAttributes['emotions'] = detail.Emotions.map(function (emotion) { return emotion.Type; });
406
- }
407
- return {
408
- boundingBox: makeCamelCase(detail.BoundingBox),
409
- landmarks: makeCamelCaseArray(detail.Landmarks),
410
- ageRange: makeCamelCase(detail.AgeRange),
411
- attributes: faceAttributes,
412
- metadata: {
413
- confidence: detail.Confidence,
414
- pose: makeCamelCase(detail.Pose),
415
- },
416
- };
417
- });
418
- return [2 /*return*/, { entities: faces }];
419
- case 14:
420
- err_9 = _m.sent();
421
- return [2 /*return*/, Promise.reject(err_9)];
422
- case 15: return [2 /*return*/];
423
- }
424
- });
425
- });
426
- };
427
- AmazonAIIdentifyPredictionsProvider.prototype.decodeExternalImageId = function (externalImageId) {
428
- return ('' + externalImageId).replace(/::/g, '/');
429
- };
430
- return AmazonAIIdentifyPredictionsProvider;
431
- }(AbstractIdentifyPredictionsProvider));
432
- export { AmazonAIIdentifyPredictionsProvider };
433
- function _getPredictionsIdentifyAmplifyUserAgent() {
434
- return getAmplifyUserAgentObject({
435
- category: Category.Predictions,
436
- action: PredictionsAction.Identify,
437
- });
438
- }
439
- //# sourceMappingURL=AmazonAIIdentifyPredictionsProvider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AmazonAIIdentifyPredictionsProvider.js","sourceRoot":"","sources":["../../src/Providers/AmazonAIIdentifyPredictionsProvider.ts"],"names":[],"mappings":"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"}