@azure/ai-language-text 1.1.0-beta.1 → 1.1.0-beta.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,7 +1,7 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT license.
3
3
  import { __rest } from "tslib";
4
- import { parseAssessmentIndex, parseHealthcareEntityIndex, sortResponseIdObjects, } from "./util";
4
+ import { extractErrorPointerIndex, parseAssessmentIndex, parseHealthcareEntityIndex, sortResponseIdObjects, } from "./util";
5
5
  import { RestError } from "@azure/core-rest-pipeline";
6
6
  /**
7
7
  * Helper function for converting nested service error to the unified
@@ -220,72 +220,170 @@ function toHealthcareResult(docIds, results) {
220
220
  /**
221
221
  * @internal
222
222
  */
223
- export function transformAnalyzeBatchResults(docIds, response = []) {
224
- return response.map((actionData) => {
225
- const { lastUpdateDateTime: completedOn, actionName, kind } = actionData;
226
- switch (kind) {
223
+ export function transformAnalyzeBatchResults(docIds, response = [], errors = []) {
224
+ const errorMap = toIndexErrorMap(errors);
225
+ return response.map((actionData, idx) => {
226
+ const { lastUpdateDateTime: completedOn, actionName, kind: resultKind } = actionData;
227
+ const error = errorMap.get(idx);
228
+ switch (resultKind) {
227
229
  case "SentimentAnalysisLROResults": {
230
+ const kind = "SentimentAnalysis";
231
+ if (actionData.status === "failed") {
232
+ return returnErrorTask(kind, error, completedOn);
233
+ }
228
234
  const { results } = actionData;
229
235
  const { modelVersion, statistics } = results;
230
- return Object.assign(Object.assign(Object.assign({ kind: "SentimentAnalysis", results: toSentimentAnalysisResult(docIds, results), completedOn }, (actionName ? { actionName } : {})), (statistics ? { statistics } : {})), { modelVersion });
236
+ return Object.assign(Object.assign(Object.assign({ kind, results: toSentimentAnalysisResult(docIds, results), completedOn }, (actionName ? { actionName } : {})), (statistics ? { statistics } : {})), { modelVersion });
231
237
  }
232
238
  case "EntityRecognitionLROResults": {
239
+ const kind = "EntityRecognition";
240
+ if (actionData.status === "failed") {
241
+ return returnErrorTask(kind, error, completedOn);
242
+ }
233
243
  const { results } = actionData;
234
244
  const { modelVersion, statistics } = results;
235
245
  return Object.assign(Object.assign(Object.assign({ kind: "EntityRecognition", results: toEntityRecognitionResult(docIds, results), completedOn }, (actionName ? { actionName } : {})), (statistics ? { statistics } : {})), { modelVersion });
236
246
  }
237
247
  case "PiiEntityRecognitionLROResults": {
248
+ const kind = "PiiEntityRecognition";
249
+ if (actionData.status === "failed") {
250
+ return returnErrorTask(kind, error, completedOn);
251
+ }
238
252
  const { results } = actionData;
239
253
  const { modelVersion, statistics } = results;
240
- return Object.assign(Object.assign(Object.assign({ kind: "PiiEntityRecognition", results: toPiiEntityRecognitionResult(docIds, results), completedOn }, (actionName ? { actionName } : {})), (statistics ? { statistics } : {})), { modelVersion });
254
+ return Object.assign(Object.assign(Object.assign({ kind, results: toPiiEntityRecognitionResult(docIds, results), completedOn }, (actionName ? { actionName } : {})), (statistics ? { statistics } : {})), { modelVersion });
241
255
  }
242
256
  case "KeyPhraseExtractionLROResults": {
257
+ const kind = "KeyPhraseExtraction";
258
+ if (actionData.status === "failed") {
259
+ return returnErrorTask(kind, error, completedOn);
260
+ }
243
261
  const { results } = actionData;
244
262
  const { modelVersion, statistics } = results;
245
- return Object.assign(Object.assign(Object.assign({ kind: "KeyPhraseExtraction", results: toKeyPhraseExtractionResult(docIds, results), completedOn }, (actionName ? { actionName } : {})), (statistics ? { statistics } : {})), { modelVersion });
263
+ return Object.assign(Object.assign(Object.assign({ kind, results: toKeyPhraseExtractionResult(docIds, results), completedOn }, (actionName ? { actionName } : {})), (statistics ? { statistics } : {})), { modelVersion });
246
264
  }
247
265
  case "EntityLinkingLROResults": {
266
+ const kind = "EntityLinking";
267
+ if (actionData.status === "failed") {
268
+ return returnErrorTask(kind, error, completedOn);
269
+ }
248
270
  const { results } = actionData;
249
271
  const { modelVersion, statistics } = results;
250
- return Object.assign(Object.assign(Object.assign({ kind: "EntityLinking", results: toEntityLinkingResult(docIds, results), completedOn }, (actionName ? { actionName } : {})), (statistics ? { statistics } : {})), { modelVersion });
272
+ return Object.assign(Object.assign(Object.assign({ kind, results: toEntityLinkingResult(docIds, results), completedOn }, (actionName ? { actionName } : {})), (statistics ? { statistics } : {})), { modelVersion });
251
273
  }
252
274
  case "HealthcareLROResults": {
275
+ const kind = "Healthcare";
276
+ if (actionData.status === "failed") {
277
+ return returnErrorTask(kind, error, completedOn);
278
+ }
253
279
  const { results } = actionData;
254
280
  const { modelVersion, statistics } = results;
255
- return Object.assign(Object.assign(Object.assign({ kind: "Healthcare", results: toHealthcareResult(docIds, results), completedOn }, (actionName ? { actionName } : {})), (statistics ? { statistics } : {})), { modelVersion });
281
+ return Object.assign(Object.assign(Object.assign({ kind, results: toHealthcareResult(docIds, results), completedOn }, (actionName ? { actionName } : {})), (statistics ? { statistics } : {})), { modelVersion });
256
282
  }
257
283
  case "CustomEntityRecognitionLROResults": {
284
+ const kind = "CustomEntityRecognition";
285
+ if (actionData.status === "failed") {
286
+ return returnErrorCustomTask(kind, error, completedOn);
287
+ }
258
288
  const { results } = actionData;
259
289
  const { deploymentName, projectName, statistics } = results;
260
- return Object.assign(Object.assign(Object.assign({ kind: "CustomEntityRecognition", results: transformDocumentResults(docIds, results), completedOn }, (actionName ? { actionName } : {})), (statistics ? { statistics } : {})), { deploymentName,
290
+ return Object.assign(Object.assign(Object.assign({ kind, results: transformDocumentResults(docIds, results), completedOn }, (actionName ? { actionName } : {})), (statistics ? { statistics } : {})), { deploymentName,
261
291
  projectName });
262
292
  }
263
293
  case "CustomSingleLabelClassificationLROResults": {
294
+ const kind = "CustomSingleLabelClassification";
295
+ if (actionData.status === "failed") {
296
+ return returnErrorCustomTask(kind, error, completedOn);
297
+ }
264
298
  const { results } = actionData;
265
299
  const { deploymentName, projectName, statistics } = results;
266
- return Object.assign(Object.assign(Object.assign({ kind: "CustomSingleLabelClassification", results: transformDocumentResults(docIds, results), completedOn }, (actionName ? { actionName } : {})), (statistics ? { statistics } : {})), { deploymentName,
300
+ return Object.assign(Object.assign(Object.assign({ kind, results: transformDocumentResults(docIds, results), completedOn }, (actionName ? { actionName } : {})), (statistics ? { statistics } : {})), { deploymentName,
267
301
  projectName });
268
302
  }
269
303
  case "CustomMultiLabelClassificationLROResults": {
304
+ const kind = "CustomMultiLabelClassification";
305
+ if (actionData.status === "failed") {
306
+ return returnErrorCustomTask(kind, error, completedOn);
307
+ }
270
308
  const { results } = actionData;
271
309
  const { deploymentName, projectName, statistics } = results;
272
- return Object.assign(Object.assign(Object.assign({ kind: "CustomMultiLabelClassification", results: transformDocumentResults(docIds, results), completedOn }, (actionName ? { actionName } : {})), (statistics ? { statistics } : {})), { deploymentName,
310
+ return Object.assign(Object.assign(Object.assign({ kind, results: transformDocumentResults(docIds, results), completedOn }, (actionName ? { actionName } : {})), (statistics ? { statistics } : {})), { deploymentName,
273
311
  projectName });
274
312
  }
275
313
  case "ExtractiveSummarizationLROResults": {
314
+ const kind = "ExtractiveSummarization";
315
+ if (actionData.status === "failed") {
316
+ return returnErrorTask(kind, error, completedOn);
317
+ }
276
318
  const { results } = actionData;
277
319
  const { modelVersion, statistics } = results;
278
- return Object.assign(Object.assign(Object.assign({ kind: "ExtractiveSummarization", results: transformDocumentResults(docIds, results), completedOn }, (actionName ? { actionName } : {})), (statistics ? { statistics } : {})), { modelVersion });
320
+ return Object.assign(Object.assign(Object.assign({ kind, results: transformDocumentResults(docIds, results), completedOn }, (actionName ? { actionName } : {})), (statistics ? { statistics } : {})), { modelVersion });
279
321
  }
280
322
  case "AbstractiveSummarizationLROResults": {
323
+ const kind = "AbstractiveSummarization";
324
+ if (actionData.status === "failed") {
325
+ return returnErrorTask(kind, error, completedOn);
326
+ }
281
327
  const { results } = actionData;
282
328
  const { modelVersion, statistics } = results;
283
- return Object.assign(Object.assign(Object.assign({ kind: "AbstractiveSummarization", results: transformDocumentResults(docIds, results), completedOn }, (actionName ? { actionName } : {})), (statistics ? { statistics } : {})), { modelVersion });
329
+ return Object.assign(Object.assign(Object.assign({ kind, results: transformDocumentResults(docIds, results), completedOn }, (actionName ? { actionName } : {})), (statistics ? { statistics } : {})), { modelVersion });
284
330
  }
285
331
  default: {
286
- throw new Error(`Unsupported results kind: ${kind}`);
332
+ throw new Error(`Unsupported results kind: ${resultKind}`);
287
333
  }
288
334
  }
289
335
  });
290
336
  }
337
+ /**
338
+ * @internal
339
+ * Transform a list of error into index and error Map
340
+ */
341
+ function toIndexErrorMap(errors) {
342
+ const errorMap = new Map();
343
+ for (const error of errors) {
344
+ const position = extractErrorPointerIndex(error);
345
+ const { target } = error, errorWithoutTarget = __rest(error, ["target"]);
346
+ errorMap.set(position, toTextAnalysisError(errorWithoutTarget));
347
+ }
348
+ return errorMap;
349
+ }
350
+ /**
351
+ * Return the error for non-custom task
352
+ *
353
+ * @param kind - non custom task kind
354
+ * @param error - error returned from the service
355
+ * @param failedOn - the LastUpdateDateTime from the service
356
+ * @returns - AnalyzeBatchResult with error
357
+ */
358
+ function returnErrorTask(kind, error, failedOn) {
359
+ if (!error) {
360
+ throw new Error("Unexpected response from service - no errors for missing action results.");
361
+ }
362
+ return {
363
+ kind,
364
+ modelVersion: "",
365
+ failedOn,
366
+ error,
367
+ };
368
+ }
369
+ /**
370
+ * Return the error for non-custom task
371
+ *
372
+ * @param kind - non custom task kind
373
+ * @param error - error returned from the service
374
+ * @param failedOn - the LastUpdateDateTime from the service
375
+ * @returns AnalyzeBatchResult for custom task with error
376
+ */
377
+ function returnErrorCustomTask(kind, error, failedOn) {
378
+ if (!error) {
379
+ throw new Error("Unexpected response from service - no errors for missing action results.");
380
+ }
381
+ return {
382
+ kind,
383
+ projectName: "",
384
+ deploymentName: "",
385
+ failedOn,
386
+ error,
387
+ };
388
+ }
291
389
  //# sourceMappingURL=transforms.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"transforms.js","sourceRoot":"","sources":["../../src/transforms.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n AbstractiveSummarizationLROResult,\n AnalyzeResponse,\n AnalyzeTextLROResultUnion,\n AssessmentSentiment,\n CustomEntityRecognitionLROResult,\n CustomMultiLabelClassificationLROResult,\n CustomSingleLabelClassificationLROResult,\n DocumentError,\n DynamicClassificationTaskResult,\n EntitiesTaskResult,\n EntityLinkingLROResult,\n EntityLinkingTaskResult,\n EntityRecognitionLROResult,\n ErrorModel,\n ErrorResponse,\n ExtractiveSummarizationLROResult,\n DynamicClassificationResult as GeneratedDynamicClassification,\n EntityLinkingResult as GeneratedEntityLinkingResult,\n EntitiesResult as GeneratedEntityRecognitionResult,\n HealthcareEntity as GeneratedHealthcareEntity,\n HealthcareResult as GeneratedHealthcareResult,\n KeyPhraseResult as GeneratedKeyPhraseExtractionResult,\n LanguageDetectionResult as GeneratedLanguageDetectionResult,\n PiiResult as GeneratedPiiEntityRecognitionResult,\n SentenceSentiment as GeneratedSentenceSentiment,\n SentimentResponse as GeneratedSentimentAnalysisResult,\n HealthcareLROResult,\n HealthcareRelation,\n HealthcareRelationEntity,\n InnerErrorModel,\n KeyPhraseExtractionLROResult,\n KeyPhraseTaskResult,\n KnownAnalyzeTextLROResultsKind,\n LanguageDetectionTaskResult,\n PiiEntityRecognitionLROResult,\n PiiTaskResult,\n SentenceTarget,\n SentimentLROResult,\n SentimentTaskResult,\n TargetRelation,\n CustomEntitiesResultDocumentsItem,\n ExtractedSummaryDocumentResultWithDetectedLanguage,\n AbstractiveSummaryDocumentResultWithDetectedLanguage,\n HealthcareEntitiesDocumentResultWithDocumentDetectedLanguage,\n CustomLabelClassificationResultDocumentsItem,\n} from \"./generated\";\nimport {\n AnalyzeActionName,\n AnalyzeBatchResult,\n AnalyzeResult,\n DynamicClassificationResult,\n EntityLinkingResult,\n EntityRecognitionResult,\n HealthcareEntity,\n HealthcareEntityRelation,\n HealthcareEntityRelationRole,\n HealthcareResult,\n HealthcareSuccessResult,\n KeyPhraseExtractionResult,\n LanguageDetectionResult,\n Opinion,\n PiiEntityRecognitionResult,\n SentenceSentiment,\n SentimentAnalysisResult,\n TextAnalysisError,\n TextAnalysisErrorResult,\n TextAnalysisSuccessResult,\n WithDetectedLanguage,\n} from \"./models\";\nimport {\n AssessmentIndex,\n parseAssessmentIndex,\n parseHealthcareEntityIndex,\n sortResponseIdObjects,\n} from \"./util\";\nimport { RestError } from \"@azure/core-rest-pipeline\";\n\n/**\n * Helper function for converting nested service error to the unified\n * TextAnalysisError\n */\nfunction toTextAnalysisError(errorModel: ErrorModel | InnerErrorModel): TextAnalysisError {\n // Return the deepest error.\n if (errorModel.innererror !== undefined) {\n return toTextAnalysisError(errorModel.innererror);\n }\n\n return {\n ...errorModel,\n };\n}\n\nfunction makeTextAnalysisErrorResult(id: string, error: ErrorModel): TextAnalysisErrorResult {\n return {\n id,\n error: toTextAnalysisError(error),\n };\n}\n\n/**\n * combines successful and erroneous results into a single array of results and\n * sort them so that the IDs order match that of the input documents array.\n * @param ids - the array of input document IDs.\n * @param response - the response received from the service.\n * @param options - an options bag that includes functions to process the results.\n */\nfunction transformDocumentResults<\n DocumentSuccess extends TextAnalysisSuccessResult,\n PublicDocumentSuccess extends TextAnalysisSuccessResult = DocumentSuccess,\n TError extends TextAnalysisErrorResult = TextAnalysisErrorResult\n>(\n ids: string[],\n response: {\n documents: DocumentSuccess[];\n errors: DocumentError[];\n },\n options?: {\n processSuccess?: (successResult: DocumentSuccess) => PublicDocumentSuccess;\n processError?: (id: string, error: ErrorModel) => TError;\n }\n): (PublicDocumentSuccess | TextAnalysisErrorResult)[] {\n const { processError = makeTextAnalysisErrorResult, processSuccess } = options || {};\n const successResults = processSuccess\n ? response.documents.map(processSuccess)\n : response.documents;\n const unsortedResults = (\n successResults as (PublicDocumentSuccess | TextAnalysisErrorResult)[]\n ).concat(response.errors.map((error) => processError(error.id, error.error)));\n\n return sortResponseIdObjects(ids, unsortedResults);\n}\n\nfunction toLanguageDetectionResult(\n docIds: string[],\n results: GeneratedLanguageDetectionResult\n): LanguageDetectionResult[] {\n return transformDocumentResults(docIds, results, {\n processSuccess: ({ detectedLanguage, ...rest }) => ({\n primaryLanguage: detectedLanguage,\n ...rest,\n }),\n });\n}\n\nfunction toPiiEntityRecognitionResult(\n docIds: string[],\n results: GeneratedPiiEntityRecognitionResult\n): PiiEntityRecognitionResult[] {\n return transformDocumentResults(docIds, results);\n}\n\nfunction toSentimentAnalysisResult(\n docIds: string[],\n results: GeneratedSentimentAnalysisResult\n): SentimentAnalysisResult[] {\n return transformDocumentResults(docIds, results, {\n processSuccess: ({ sentences, ...rest }) => ({\n ...rest,\n sentences: sentences.map((sentence) =>\n convertGeneratedSentenceSentiment(sentence, sentences)\n ),\n }),\n });\n}\n\nfunction toDynamicClassificationResult(\n docIds: string[],\n results: GeneratedDynamicClassification\n): DynamicClassificationResult[] {\n return transformDocumentResults(docIds, results);\n}\n\n/**\n * Converts a sentence sentiment object returned by the service to another that\n * is user-friendly.\n *\n * @param sentence - The sentence sentiment object to be converted.\n * @param response - The entire response returned by the service.\n * @returns The user-friendly sentence sentiment object.\n * @internal\n */\nfunction convertGeneratedSentenceSentiment(\n { targets, assessments: _, ...rest }: GeneratedSentenceSentiment,\n sentences: GeneratedSentenceSentiment[]\n): SentenceSentiment {\n return {\n ...rest,\n opinions:\n targets?.map(\n // eslint-disable-next-line @typescript-eslint/no-shadow\n ({ relations, ...rest }: SentenceTarget): Opinion => ({\n target: rest,\n assessments: relations\n .filter((relation) => relation.relationType === \"assessment\")\n .map((relation) => convertTargetRelationToAssessmentSentiment(relation, sentences)),\n })\n ) ?? [],\n };\n}\n\n/**\n * Converts a target relation object returned by the service to an assessment\n * sentiment object where JSON pointers in the former are realized in the\n * latter.\n *\n * @param targetRelation - The target relation object to be converted.\n * @param response - The entire response returned by the service.\n * @returns The user-friendly assessment sentiment object.\n * @internal\n */\nfunction convertTargetRelationToAssessmentSentiment(\n targetRelation: TargetRelation,\n sentences: GeneratedSentenceSentiment[]\n): AssessmentSentiment {\n const assessmentPtr = targetRelation.ref;\n const assessmentIndex: AssessmentIndex = parseAssessmentIndex(assessmentPtr);\n const assessment =\n sentences?.[assessmentIndex.sentence].assessments?.[assessmentIndex.assessment];\n if (assessment !== undefined) {\n return assessment;\n } else {\n throw new Error(`Pointer \"${assessmentPtr}\" is not a valid Assessment pointer`);\n }\n}\n\nfunction toEntityLinkingResult(\n docIds: string[],\n results: GeneratedEntityLinkingResult\n): EntityLinkingResult[] {\n return transformDocumentResults(docIds, results);\n}\n\nfunction toKeyPhraseExtractionResult(\n docIds: string[],\n results: GeneratedKeyPhraseExtractionResult\n): KeyPhraseExtractionResult[] {\n return transformDocumentResults(docIds, results);\n}\n\nfunction toEntityRecognitionResult(\n docIds: string[],\n results: GeneratedEntityRecognitionResult\n): EntityRecognitionResult[] {\n return transformDocumentResults(docIds, results);\n}\n\n/**\n * @internal\n */\nexport function transformActionResult<ActionName extends AnalyzeActionName>(\n actionName: ActionName,\n docIds: string[],\n response: AnalyzeResponse\n): AnalyzeResult<AnalyzeActionName> {\n switch (response.kind) {\n case \"EntityLinkingResults\": {\n return toEntityLinkingResult(docIds, (response as EntityLinkingTaskResult).results);\n }\n case \"EntityRecognitionResults\": {\n return toEntityRecognitionResult(docIds, (response as EntitiesTaskResult).results);\n }\n case \"KeyPhraseExtractionResults\": {\n return toKeyPhraseExtractionResult(docIds, (response as KeyPhraseTaskResult).results);\n }\n case \"PiiEntityRecognitionResults\": {\n return toPiiEntityRecognitionResult(docIds, (response as PiiTaskResult).results);\n }\n case \"SentimentAnalysisResults\": {\n return toSentimentAnalysisResult(docIds, (response as SentimentTaskResult).results);\n }\n case \"LanguageDetectionResults\": {\n return toLanguageDetectionResult(docIds, (response as LanguageDetectionTaskResult).results);\n }\n case \"DynamicClassificationResults\": {\n return toDynamicClassificationResult(\n docIds,\n (response as DynamicClassificationTaskResult).results\n );\n }\n default: {\n const __exhaust: never = response;\n throw new Error(`Unsupported results kind: ${__exhaust} for an action of type ${actionName}`);\n }\n }\n}\n\nfunction appendReadableErrorMessage(currentMessage: string, innerMessage: string): string {\n let message = currentMessage;\n if (message.slice(-1) !== \".\") {\n message = message + \".\";\n }\n return message + \" \" + innerMessage;\n}\n\n/**\n * @internal\n * parses incoming errors from the service/\n * @param error - the incoming error\n */\nfunction transformError(errorResponse: unknown): any {\n const strongErrorResponse = errorResponse as {\n response: {\n parsedBody?: ErrorResponse;\n };\n statusCode: number;\n };\n if (!strongErrorResponse.response) {\n throw errorResponse;\n }\n const topLevelError = strongErrorResponse.response.parsedBody?.error;\n if (!topLevelError) return errorResponse;\n let errorMessage = topLevelError.message;\n let code = topLevelError.code;\n function unwrap(error: ErrorModel | InnerErrorModel): ErrorModel {\n const innerError = error.innererror;\n if (innerError) {\n if (innerError.message) {\n errorMessage = appendReadableErrorMessage(errorMessage, innerError.message);\n }\n if (innerError.code) {\n code = innerError.code;\n }\n return unwrap(innerError);\n }\n return error as ErrorModel;\n }\n unwrap(topLevelError);\n return new RestError(errorMessage, {\n code,\n statusCode: strongErrorResponse.statusCode,\n });\n}\n\nexport async function throwError<T>(p: Promise<T>): Promise<T> {\n try {\n return await p;\n } catch (e: unknown) {\n throw transformError(e);\n }\n}\n\nfunction toHealthcareResult(\n docIds: string[],\n results: GeneratedHealthcareResult\n): HealthcareResult[] {\n function makeHealthcareEntity(entity: GeneratedHealthcareEntity): HealthcareEntity {\n const { dataSources, ...rest } = entity;\n return {\n dataSources: dataSources ?? [],\n ...rest,\n };\n }\n function makeHealthcareRelation(\n entities: HealthcareEntity[]\n ): (relation: HealthcareRelation) => HealthcareEntityRelation {\n return ({\n entities: generatedEntities,\n relationType,\n confidenceScore,\n }: HealthcareRelation): HealthcareEntityRelation => ({\n relationType: relationType,\n confidenceScore,\n roles: generatedEntities.map(\n (role: HealthcareRelationEntity): HealthcareEntityRelationRole => ({\n entity: entities[parseHealthcareEntityIndex(role.ref)],\n name: role.role,\n })\n ),\n });\n }\n return transformDocumentResults<\n HealthcareEntitiesDocumentResultWithDocumentDetectedLanguage,\n WithDetectedLanguage<HealthcareSuccessResult>\n >(docIds, results, {\n processSuccess: ({ entities, relations, detectedLanguage, ...rest }) => {\n const newEntities = entities.map(makeHealthcareEntity);\n return {\n entities: newEntities,\n entityRelations: relations.map(makeHealthcareRelation(newEntities)),\n // FIXME: remove this mitigation when the API fixes the representation on their end\n ...(detectedLanguage ? { detectedLanguage: { iso6391Name: detectedLanguage } as any } : {}),\n ...rest,\n };\n },\n });\n}\n\n/**\n * @internal\n */\nexport function transformAnalyzeBatchResults(\n docIds: string[],\n response: AnalyzeTextLROResultUnion[] = []\n): AnalyzeBatchResult[] {\n return response.map((actionData) => {\n const { lastUpdateDateTime: completedOn, actionName, kind } = actionData;\n switch (kind as KnownAnalyzeTextLROResultsKind) {\n case \"SentimentAnalysisLROResults\": {\n const { results } = actionData as SentimentLROResult;\n const { modelVersion, statistics } = results;\n return {\n kind: \"SentimentAnalysis\",\n results: toSentimentAnalysisResult(docIds, results),\n completedOn,\n ...(actionName ? { actionName } : {}),\n ...(statistics ? { statistics } : {}),\n modelVersion,\n };\n }\n case \"EntityRecognitionLROResults\": {\n const { results } = actionData as EntityRecognitionLROResult;\n const { modelVersion, statistics } = results;\n return {\n kind: \"EntityRecognition\",\n results: toEntityRecognitionResult(docIds, results),\n completedOn,\n ...(actionName ? { actionName } : {}),\n ...(statistics ? { statistics } : {}),\n modelVersion,\n };\n }\n case \"PiiEntityRecognitionLROResults\": {\n const { results } = actionData as PiiEntityRecognitionLROResult;\n const { modelVersion, statistics } = results;\n return {\n kind: \"PiiEntityRecognition\",\n results: toPiiEntityRecognitionResult(docIds, results),\n completedOn,\n ...(actionName ? { actionName } : {}),\n ...(statistics ? { statistics } : {}),\n modelVersion,\n };\n }\n case \"KeyPhraseExtractionLROResults\": {\n const { results } = actionData as KeyPhraseExtractionLROResult;\n const { modelVersion, statistics } = results;\n return {\n kind: \"KeyPhraseExtraction\",\n results: toKeyPhraseExtractionResult(docIds, results),\n completedOn,\n ...(actionName ? { actionName } : {}),\n ...(statistics ? { statistics } : {}),\n modelVersion,\n };\n }\n case \"EntityLinkingLROResults\": {\n const { results } = actionData as EntityLinkingLROResult;\n const { modelVersion, statistics } = results;\n return {\n kind: \"EntityLinking\",\n results: toEntityLinkingResult(docIds, results),\n completedOn,\n ...(actionName ? { actionName } : {}),\n ...(statistics ? { statistics } : {}),\n modelVersion,\n };\n }\n case \"HealthcareLROResults\": {\n const { results } = actionData as HealthcareLROResult;\n const { modelVersion, statistics } = results;\n return {\n kind: \"Healthcare\",\n results: toHealthcareResult(docIds, results),\n completedOn,\n ...(actionName ? { actionName } : {}),\n ...(statistics ? { statistics } : {}),\n modelVersion,\n };\n }\n case \"CustomEntityRecognitionLROResults\": {\n const { results } = actionData as CustomEntityRecognitionLROResult;\n const { deploymentName, projectName, statistics } = results;\n return {\n kind: \"CustomEntityRecognition\",\n results: transformDocumentResults<CustomEntitiesResultDocumentsItem>(docIds, results),\n completedOn,\n ...(actionName ? { actionName } : {}),\n ...(statistics ? { statistics } : {}),\n deploymentName,\n projectName,\n };\n }\n case \"CustomSingleLabelClassificationLROResults\": {\n const { results } = actionData as CustomSingleLabelClassificationLROResult;\n const { deploymentName, projectName, statistics } = results;\n return {\n kind: \"CustomSingleLabelClassification\",\n results: transformDocumentResults<CustomLabelClassificationResultDocumentsItem>(\n docIds,\n results\n ),\n completedOn,\n ...(actionName ? { actionName } : {}),\n ...(statistics ? { statistics } : {}),\n deploymentName,\n projectName,\n };\n }\n case \"CustomMultiLabelClassificationLROResults\": {\n const { results } = actionData as CustomMultiLabelClassificationLROResult;\n const { deploymentName, projectName, statistics } = results;\n return {\n kind: \"CustomMultiLabelClassification\",\n results: transformDocumentResults<CustomLabelClassificationResultDocumentsItem>(\n docIds,\n results\n ),\n completedOn,\n ...(actionName ? { actionName } : {}),\n ...(statistics ? { statistics } : {}),\n deploymentName,\n projectName,\n };\n }\n case \"ExtractiveSummarizationLROResults\": {\n const { results } = actionData as ExtractiveSummarizationLROResult;\n const { modelVersion, statistics } = results;\n return {\n kind: \"ExtractiveSummarization\",\n results: transformDocumentResults<ExtractedSummaryDocumentResultWithDetectedLanguage>(\n docIds,\n results\n ),\n completedOn,\n ...(actionName ? { actionName } : {}),\n ...(statistics ? { statistics } : {}),\n modelVersion,\n };\n }\n case \"AbstractiveSummarizationLROResults\": {\n const { results } = actionData as AbstractiveSummarizationLROResult;\n const { modelVersion, statistics } = results;\n return {\n kind: \"AbstractiveSummarization\",\n results: transformDocumentResults<AbstractiveSummaryDocumentResultWithDetectedLanguage>(\n docIds,\n results\n ),\n completedOn,\n ...(actionName ? { actionName } : {}),\n ...(statistics ? { statistics } : {}),\n modelVersion,\n };\n }\n default: {\n throw new Error(`Unsupported results kind: ${kind}`);\n }\n }\n });\n}\n"]}
1
+ {"version":3,"file":"transforms.js","sourceRoot":"","sources":["../../src/transforms.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n AbstractiveSummarizationLROResult,\n AnalyzeResponse,\n AnalyzeTextLROResultUnion,\n AssessmentSentiment,\n CustomEntityRecognitionLROResult,\n CustomMultiLabelClassificationLROResult,\n CustomSingleLabelClassificationLROResult,\n DocumentError,\n DynamicClassificationTaskResult,\n EntitiesTaskResult,\n EntityLinkingLROResult,\n EntityLinkingTaskResult,\n EntityRecognitionLROResult,\n ErrorModel,\n ErrorResponse,\n ExtractiveSummarizationLROResult,\n DynamicClassificationResult as GeneratedDynamicClassification,\n EntityLinkingResult as GeneratedEntityLinkingResult,\n EntitiesResult as GeneratedEntityRecognitionResult,\n HealthcareEntity as GeneratedHealthcareEntity,\n HealthcareResult as GeneratedHealthcareResult,\n KeyPhraseResult as GeneratedKeyPhraseExtractionResult,\n LanguageDetectionResult as GeneratedLanguageDetectionResult,\n PiiResult as GeneratedPiiEntityRecognitionResult,\n SentenceSentiment as GeneratedSentenceSentiment,\n SentimentResponse as GeneratedSentimentAnalysisResult,\n HealthcareLROResult,\n HealthcareRelation,\n HealthcareRelationEntity,\n InnerErrorModel,\n KeyPhraseExtractionLROResult,\n KeyPhraseTaskResult,\n KnownAnalyzeTextLROResultsKind,\n LanguageDetectionTaskResult,\n PiiEntityRecognitionLROResult,\n PiiTaskResult,\n SentenceTarget,\n SentimentLROResult,\n SentimentTaskResult,\n TargetRelation,\n CustomEntitiesResultDocumentsItem,\n ExtractedSummaryDocumentResultWithDetectedLanguage,\n AbstractiveSummaryDocumentResultWithDetectedLanguage,\n HealthcareEntitiesDocumentResultWithDocumentDetectedLanguage,\n CustomLabelClassificationResultDocumentsItem,\n} from \"./generated\";\nimport {\n AnalyzeActionName,\n AnalyzeBatchActionName,\n AnalyzeBatchResult,\n AnalyzeResult,\n DynamicClassificationResult,\n EntityLinkingResult,\n EntityRecognitionResult,\n HealthcareEntity,\n HealthcareEntityRelation,\n HealthcareEntityRelationRole,\n HealthcareResult,\n HealthcareSuccessResult,\n KeyPhraseExtractionResult,\n LanguageDetectionResult,\n Opinion,\n PiiEntityRecognitionResult,\n SentenceSentiment,\n SentimentAnalysisResult,\n TextAnalysisError,\n TextAnalysisErrorResult,\n TextAnalysisSuccessResult,\n WithDetectedLanguage,\n} from \"./models\";\nimport {\n AssessmentIndex,\n extractErrorPointerIndex,\n parseAssessmentIndex,\n parseHealthcareEntityIndex,\n sortResponseIdObjects,\n} from \"./util\";\nimport { RestError } from \"@azure/core-rest-pipeline\";\n\n/**\n * Helper function for converting nested service error to the unified\n * TextAnalysisError\n */\nfunction toTextAnalysisError(errorModel: ErrorModel | InnerErrorModel): TextAnalysisError {\n // Return the deepest error.\n if (errorModel.innererror !== undefined) {\n return toTextAnalysisError(errorModel.innererror);\n }\n\n return {\n ...errorModel,\n };\n}\n\nfunction makeTextAnalysisErrorResult(id: string, error: ErrorModel): TextAnalysisErrorResult {\n return {\n id,\n error: toTextAnalysisError(error),\n };\n}\n\n/**\n * combines successful and erroneous results into a single array of results and\n * sort them so that the IDs order match that of the input documents array.\n * @param ids - the array of input document IDs.\n * @param response - the response received from the service.\n * @param options - an options bag that includes functions to process the results.\n */\nfunction transformDocumentResults<\n DocumentSuccess extends TextAnalysisSuccessResult,\n PublicDocumentSuccess extends TextAnalysisSuccessResult = DocumentSuccess,\n TError extends TextAnalysisErrorResult = TextAnalysisErrorResult\n>(\n ids: string[],\n response: {\n documents: DocumentSuccess[];\n errors: DocumentError[];\n },\n options?: {\n processSuccess?: (successResult: DocumentSuccess) => PublicDocumentSuccess;\n processError?: (id: string, error: ErrorModel) => TError;\n }\n): (PublicDocumentSuccess | TextAnalysisErrorResult)[] {\n const { processError = makeTextAnalysisErrorResult, processSuccess } = options || {};\n const successResults = processSuccess\n ? response.documents.map(processSuccess)\n : response.documents;\n const unsortedResults = (\n successResults as (PublicDocumentSuccess | TextAnalysisErrorResult)[]\n ).concat(response.errors.map((error) => processError(error.id, error.error)));\n\n return sortResponseIdObjects(ids, unsortedResults);\n}\n\nfunction toLanguageDetectionResult(\n docIds: string[],\n results: GeneratedLanguageDetectionResult\n): LanguageDetectionResult[] {\n return transformDocumentResults(docIds, results, {\n processSuccess: ({ detectedLanguage, ...rest }) => ({\n primaryLanguage: detectedLanguage,\n ...rest,\n }),\n });\n}\n\nfunction toPiiEntityRecognitionResult(\n docIds: string[],\n results: GeneratedPiiEntityRecognitionResult\n): PiiEntityRecognitionResult[] {\n return transformDocumentResults(docIds, results);\n}\n\nfunction toSentimentAnalysisResult(\n docIds: string[],\n results: GeneratedSentimentAnalysisResult\n): SentimentAnalysisResult[] {\n return transformDocumentResults(docIds, results, {\n processSuccess: ({ sentences, ...rest }) => ({\n ...rest,\n sentences: sentences.map((sentence) =>\n convertGeneratedSentenceSentiment(sentence, sentences)\n ),\n }),\n });\n}\n\nfunction toDynamicClassificationResult(\n docIds: string[],\n results: GeneratedDynamicClassification\n): DynamicClassificationResult[] {\n return transformDocumentResults(docIds, results);\n}\n\n/**\n * Converts a sentence sentiment object returned by the service to another that\n * is user-friendly.\n *\n * @param sentence - The sentence sentiment object to be converted.\n * @param response - The entire response returned by the service.\n * @returns The user-friendly sentence sentiment object.\n * @internal\n */\nfunction convertGeneratedSentenceSentiment(\n { targets, assessments: _, ...rest }: GeneratedSentenceSentiment,\n sentences: GeneratedSentenceSentiment[]\n): SentenceSentiment {\n return {\n ...rest,\n opinions:\n targets?.map(\n // eslint-disable-next-line @typescript-eslint/no-shadow\n ({ relations, ...rest }: SentenceTarget): Opinion => ({\n target: rest,\n assessments: relations\n .filter((relation) => relation.relationType === \"assessment\")\n .map((relation) => convertTargetRelationToAssessmentSentiment(relation, sentences)),\n })\n ) ?? [],\n };\n}\n\n/**\n * Converts a target relation object returned by the service to an assessment\n * sentiment object where JSON pointers in the former are realized in the\n * latter.\n *\n * @param targetRelation - The target relation object to be converted.\n * @param response - The entire response returned by the service.\n * @returns The user-friendly assessment sentiment object.\n * @internal\n */\nfunction convertTargetRelationToAssessmentSentiment(\n targetRelation: TargetRelation,\n sentences: GeneratedSentenceSentiment[]\n): AssessmentSentiment {\n const assessmentPtr = targetRelation.ref;\n const assessmentIndex: AssessmentIndex = parseAssessmentIndex(assessmentPtr);\n const assessment =\n sentences?.[assessmentIndex.sentence].assessments?.[assessmentIndex.assessment];\n if (assessment !== undefined) {\n return assessment;\n } else {\n throw new Error(`Pointer \"${assessmentPtr}\" is not a valid Assessment pointer`);\n }\n}\n\nfunction toEntityLinkingResult(\n docIds: string[],\n results: GeneratedEntityLinkingResult\n): EntityLinkingResult[] {\n return transformDocumentResults(docIds, results);\n}\n\nfunction toKeyPhraseExtractionResult(\n docIds: string[],\n results: GeneratedKeyPhraseExtractionResult\n): KeyPhraseExtractionResult[] {\n return transformDocumentResults(docIds, results);\n}\n\nfunction toEntityRecognitionResult(\n docIds: string[],\n results: GeneratedEntityRecognitionResult\n): EntityRecognitionResult[] {\n return transformDocumentResults(docIds, results);\n}\n\n/**\n * @internal\n */\nexport function transformActionResult<ActionName extends AnalyzeActionName>(\n actionName: ActionName,\n docIds: string[],\n response: AnalyzeResponse\n): AnalyzeResult<AnalyzeActionName> {\n switch (response.kind) {\n case \"EntityLinkingResults\": {\n return toEntityLinkingResult(docIds, (response as EntityLinkingTaskResult).results);\n }\n case \"EntityRecognitionResults\": {\n return toEntityRecognitionResult(docIds, (response as EntitiesTaskResult).results);\n }\n case \"KeyPhraseExtractionResults\": {\n return toKeyPhraseExtractionResult(docIds, (response as KeyPhraseTaskResult).results);\n }\n case \"PiiEntityRecognitionResults\": {\n return toPiiEntityRecognitionResult(docIds, (response as PiiTaskResult).results);\n }\n case \"SentimentAnalysisResults\": {\n return toSentimentAnalysisResult(docIds, (response as SentimentTaskResult).results);\n }\n case \"LanguageDetectionResults\": {\n return toLanguageDetectionResult(docIds, (response as LanguageDetectionTaskResult).results);\n }\n case \"DynamicClassificationResults\": {\n return toDynamicClassificationResult(\n docIds,\n (response as DynamicClassificationTaskResult).results\n );\n }\n default: {\n const __exhaust: never = response;\n throw new Error(`Unsupported results kind: ${__exhaust} for an action of type ${actionName}`);\n }\n }\n}\n\nfunction appendReadableErrorMessage(currentMessage: string, innerMessage: string): string {\n let message = currentMessage;\n if (message.slice(-1) !== \".\") {\n message = message + \".\";\n }\n return message + \" \" + innerMessage;\n}\n\n/**\n * @internal\n * parses incoming errors from the service/\n * @param error - the incoming error\n */\nfunction transformError(errorResponse: unknown): any {\n const strongErrorResponse = errorResponse as {\n response: {\n parsedBody?: ErrorResponse;\n };\n statusCode: number;\n };\n if (!strongErrorResponse.response) {\n throw errorResponse;\n }\n const topLevelError = strongErrorResponse.response.parsedBody?.error;\n if (!topLevelError) return errorResponse;\n let errorMessage = topLevelError.message;\n let code = topLevelError.code;\n function unwrap(error: ErrorModel | InnerErrorModel): ErrorModel {\n const innerError = error.innererror;\n if (innerError) {\n if (innerError.message) {\n errorMessage = appendReadableErrorMessage(errorMessage, innerError.message);\n }\n if (innerError.code) {\n code = innerError.code;\n }\n return unwrap(innerError);\n }\n return error as ErrorModel;\n }\n unwrap(topLevelError);\n return new RestError(errorMessage, {\n code,\n statusCode: strongErrorResponse.statusCode,\n });\n}\n\nexport async function throwError<T>(p: Promise<T>): Promise<T> {\n try {\n return await p;\n } catch (e: unknown) {\n throw transformError(e);\n }\n}\n\nfunction toHealthcareResult(\n docIds: string[],\n results: GeneratedHealthcareResult\n): HealthcareResult[] {\n function makeHealthcareEntity(entity: GeneratedHealthcareEntity): HealthcareEntity {\n const { dataSources, ...rest } = entity;\n return {\n dataSources: dataSources ?? [],\n ...rest,\n };\n }\n function makeHealthcareRelation(\n entities: HealthcareEntity[]\n ): (relation: HealthcareRelation) => HealthcareEntityRelation {\n return ({\n entities: generatedEntities,\n relationType,\n confidenceScore,\n }: HealthcareRelation): HealthcareEntityRelation => ({\n relationType: relationType,\n confidenceScore,\n roles: generatedEntities.map(\n (role: HealthcareRelationEntity): HealthcareEntityRelationRole => ({\n entity: entities[parseHealthcareEntityIndex(role.ref)],\n name: role.role,\n })\n ),\n });\n }\n return transformDocumentResults<\n HealthcareEntitiesDocumentResultWithDocumentDetectedLanguage,\n WithDetectedLanguage<HealthcareSuccessResult>\n >(docIds, results, {\n processSuccess: ({ entities, relations, detectedLanguage, ...rest }) => {\n const newEntities = entities.map(makeHealthcareEntity);\n return {\n entities: newEntities,\n entityRelations: relations.map(makeHealthcareRelation(newEntities)),\n // FIXME: remove this mitigation when the API fixes the representation on their end\n ...(detectedLanguage ? { detectedLanguage: { iso6391Name: detectedLanguage } as any } : {}),\n ...rest,\n };\n },\n });\n}\n\n/**\n * @internal\n */\nexport function transformAnalyzeBatchResults(\n docIds: string[],\n response: AnalyzeTextLROResultUnion[] = [],\n errors: ErrorModel[] = []\n): AnalyzeBatchResult[] {\n const errorMap = toIndexErrorMap(errors);\n return response.map((actionData, idx): AnalyzeBatchResult => {\n const { lastUpdateDateTime: completedOn, actionName, kind: resultKind } = actionData;\n const error = errorMap.get(idx);\n switch (resultKind as KnownAnalyzeTextLROResultsKind) {\n case \"SentimentAnalysisLROResults\": {\n const kind = \"SentimentAnalysis\";\n if (actionData.status === \"failed\") {\n return returnErrorTask(kind, error, completedOn);\n }\n const { results } = actionData as SentimentLROResult;\n const { modelVersion, statistics } = results;\n return {\n kind,\n results: toSentimentAnalysisResult(docIds, results),\n completedOn,\n ...(actionName ? { actionName } : {}),\n ...(statistics ? { statistics } : {}),\n modelVersion,\n };\n }\n case \"EntityRecognitionLROResults\": {\n const kind = \"EntityRecognition\";\n if (actionData.status === \"failed\") {\n return returnErrorTask(kind, error, completedOn);\n }\n const { results } = actionData as EntityRecognitionLROResult;\n const { modelVersion, statistics } = results;\n return {\n kind: \"EntityRecognition\",\n results: toEntityRecognitionResult(docIds, results),\n completedOn,\n ...(actionName ? { actionName } : {}),\n ...(statistics ? { statistics } : {}),\n modelVersion,\n };\n }\n case \"PiiEntityRecognitionLROResults\": {\n const kind = \"PiiEntityRecognition\";\n if (actionData.status === \"failed\") {\n return returnErrorTask(kind, error, completedOn);\n }\n const { results } = actionData as PiiEntityRecognitionLROResult;\n const { modelVersion, statistics } = results;\n return {\n kind,\n results: toPiiEntityRecognitionResult(docIds, results),\n completedOn,\n ...(actionName ? { actionName } : {}),\n ...(statistics ? { statistics } : {}),\n modelVersion,\n };\n }\n case \"KeyPhraseExtractionLROResults\": {\n const kind = \"KeyPhraseExtraction\";\n if (actionData.status === \"failed\") {\n return returnErrorTask(kind, error, completedOn);\n }\n const { results } = actionData as KeyPhraseExtractionLROResult;\n const { modelVersion, statistics } = results;\n return {\n kind,\n results: toKeyPhraseExtractionResult(docIds, results),\n completedOn,\n ...(actionName ? { actionName } : {}),\n ...(statistics ? { statistics } : {}),\n modelVersion,\n };\n }\n case \"EntityLinkingLROResults\": {\n const kind = \"EntityLinking\";\n if (actionData.status === \"failed\") {\n return returnErrorTask(kind, error, completedOn);\n }\n const { results } = actionData as EntityLinkingLROResult;\n const { modelVersion, statistics } = results;\n return {\n kind,\n results: toEntityLinkingResult(docIds, results),\n completedOn,\n ...(actionName ? { actionName } : {}),\n ...(statistics ? { statistics } : {}),\n modelVersion,\n };\n }\n case \"HealthcareLROResults\": {\n const kind = \"Healthcare\";\n if (actionData.status === \"failed\") {\n return returnErrorTask(kind, error, completedOn);\n }\n const { results } = actionData as HealthcareLROResult;\n const { modelVersion, statistics } = results;\n return {\n kind,\n results: toHealthcareResult(docIds, results),\n completedOn,\n ...(actionName ? { actionName } : {}),\n ...(statistics ? { statistics } : {}),\n modelVersion,\n };\n }\n case \"CustomEntityRecognitionLROResults\": {\n const kind = \"CustomEntityRecognition\";\n if (actionData.status === \"failed\") {\n return returnErrorCustomTask(kind, error, completedOn);\n }\n const { results } = actionData as CustomEntityRecognitionLROResult;\n const { deploymentName, projectName, statistics } = results;\n return {\n kind,\n results: transformDocumentResults<CustomEntitiesResultDocumentsItem>(docIds, results),\n completedOn,\n ...(actionName ? { actionName } : {}),\n ...(statistics ? { statistics } : {}),\n deploymentName,\n projectName,\n };\n }\n case \"CustomSingleLabelClassificationLROResults\": {\n const kind = \"CustomSingleLabelClassification\";\n if (actionData.status === \"failed\") {\n return returnErrorCustomTask(kind, error, completedOn);\n }\n const { results } = actionData as CustomSingleLabelClassificationLROResult;\n const { deploymentName, projectName, statistics } = results;\n return {\n kind,\n results: transformDocumentResults<CustomLabelClassificationResultDocumentsItem>(\n docIds,\n results\n ),\n completedOn,\n ...(actionName ? { actionName } : {}),\n ...(statistics ? { statistics } : {}),\n deploymentName,\n projectName,\n };\n }\n case \"CustomMultiLabelClassificationLROResults\": {\n const kind = \"CustomMultiLabelClassification\";\n if (actionData.status === \"failed\") {\n return returnErrorCustomTask(kind, error, completedOn);\n }\n const { results } = actionData as CustomMultiLabelClassificationLROResult;\n const { deploymentName, projectName, statistics } = results;\n return {\n kind,\n results: transformDocumentResults<CustomLabelClassificationResultDocumentsItem>(\n docIds,\n results\n ),\n completedOn,\n ...(actionName ? { actionName } : {}),\n ...(statistics ? { statistics } : {}),\n deploymentName,\n projectName,\n };\n }\n case \"ExtractiveSummarizationLROResults\": {\n const kind = \"ExtractiveSummarization\";\n if (actionData.status === \"failed\") {\n return returnErrorTask(kind, error, completedOn);\n }\n const { results } = actionData as ExtractiveSummarizationLROResult;\n const { modelVersion, statistics } = results;\n return {\n kind,\n results: transformDocumentResults<ExtractedSummaryDocumentResultWithDetectedLanguage>(\n docIds,\n results\n ),\n completedOn,\n ...(actionName ? { actionName } : {}),\n ...(statistics ? { statistics } : {}),\n modelVersion,\n };\n }\n case \"AbstractiveSummarizationLROResults\": {\n const kind = \"AbstractiveSummarization\";\n if (actionData.status === \"failed\") {\n return returnErrorTask(kind, error, completedOn);\n }\n const { results } = actionData as AbstractiveSummarizationLROResult;\n const { modelVersion, statistics } = results;\n return {\n kind,\n results: transformDocumentResults<AbstractiveSummaryDocumentResultWithDetectedLanguage>(\n docIds,\n results\n ),\n completedOn,\n ...(actionName ? { actionName } : {}),\n ...(statistics ? { statistics } : {}),\n modelVersion,\n };\n }\n default: {\n throw new Error(`Unsupported results kind: ${resultKind}`);\n }\n }\n });\n}\n/**\n * @internal\n * Transform a list of error into index and error Map\n */\nfunction toIndexErrorMap(errors: ErrorModel[]): Map<number, TextAnalysisError> {\n const errorMap = new Map<number, TextAnalysisError>();\n for (const error of errors) {\n const position = extractErrorPointerIndex(error);\n const { target, ...errorWithoutTarget } = error;\n errorMap.set(position, toTextAnalysisError(errorWithoutTarget));\n }\n return errorMap;\n}\n\n/**\n * Return the error for non-custom task\n *\n * @param kind - non custom task kind\n * @param error - error returned from the service\n * @param failedOn - the LastUpdateDateTime from the service\n * @returns - AnalyzeBatchResult with error\n */\nfunction returnErrorTask(\n kind: AnalyzeBatchActionName,\n error: TextAnalysisError | undefined,\n failedOn: Date\n): AnalyzeBatchResult {\n if (!error) {\n throw new Error(\"Unexpected response from service - no errors for missing action results.\");\n }\n return {\n kind,\n modelVersion: \"\",\n failedOn,\n error,\n } as AnalyzeBatchResult;\n}\n/**\n * Return the error for non-custom task\n *\n * @param kind - non custom task kind\n * @param error - error returned from the service\n * @param failedOn - the LastUpdateDateTime from the service\n * @returns AnalyzeBatchResult for custom task with error\n */\nfunction returnErrorCustomTask(\n kind: AnalyzeBatchActionName,\n error: TextAnalysisError | undefined,\n failedOn: Date\n): AnalyzeBatchResult {\n if (!error) {\n throw new Error(\"Unexpected response from service - no errors for missing action results.\");\n }\n return {\n kind,\n projectName: \"\",\n deploymentName: \"\",\n failedOn,\n error,\n } as AnalyzeBatchResult;\n}\n"]}
@@ -113,4 +113,19 @@ export function getOperationOptions(options) {
113
113
  rest,
114
114
  };
115
115
  }
116
+ /**
117
+ *
118
+ * @param error - error with the target in the JSON error pointer format "#/items/0
119
+ * @returns number: the position of the task with error
120
+ */
121
+ export function extractErrorPointerIndex(error) {
122
+ if (!error.target) {
123
+ throw new Error("Unexpected response from service - no target present");
124
+ }
125
+ const position = parseInt(error.target.split("/").pop());
126
+ if (isNaN(position)) {
127
+ throw new Error(`Unexpected response from service - action pointer "${error.target}" is not a valid action pointer.`);
128
+ }
129
+ return position;
130
+ }
116
131
  //# sourceMappingURL=util.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { LanguageDetectionInput, TextDocumentInput } from \"./generated\";\nimport { TextAnalysisOperationOptions } from \"./models\";\nimport { logger } from \"./logger\";\n\n/**\n * Given a sorted array of input objects (with a unique ID) and an unsorted array of results,\n * return a sorted array of results.\n *\n * @internal\n * @param sortedIds - An array of sorted IDs\n * @param unsortedArray - An array of entries that contain `id` but are not sorted\n */\nexport function sortResponseIdObjects<U extends { id: string }>(\n sortedIds: string[],\n unsortedArray: U[]\n): U[] {\n const unsortedMap = new Map<string, U>();\n for (const item of unsortedArray) {\n unsortedMap.set(item.id, item);\n }\n\n if (unsortedArray.length !== sortedIds.length) {\n const ordinal = unsortedArray.length > sortedIds.length ? \"more\" : \"fewer\";\n logger.warning(\n `The service returned ${ordinal} responses than inputs. Some errors may be treated as fatal.`\n );\n }\n\n const result: U[] = [];\n /**\n * When the results are returned in pages, sortedArray will probably have more\n * items than unsortedArray so it is ok to ignore the case when a sorted item\n * ID is not found in `unsortedMap`.\n */\n for (const id of sortedIds) {\n const item = unsortedMap.get(id);\n if (item) {\n result.push(item);\n }\n }\n return result;\n}\n\n/**\n * @internal\n */\nexport interface AssessmentIndex {\n document: number;\n sentence: number;\n assessment: number;\n}\n\n/**\n * @internal\n */\nexport function parseAssessmentIndex(pointer: string): AssessmentIndex {\n const regex = new RegExp(/#\\/documents\\/(\\d+)\\/sentences\\/(\\d+)\\/assessments\\/(\\d+)/);\n const res = regex.exec(pointer);\n if (res !== null) {\n const assessmentIndex: AssessmentIndex = {\n document: parseInt(res[1]),\n sentence: parseInt(res[2]),\n assessment: parseInt(res[3]),\n };\n return assessmentIndex;\n } else {\n throw new Error(`Pointer \"${pointer}\" is not a valid Assessment pointer`);\n }\n}\n\n/**\n * Parses the index of the healthcare entity from a JSON pointer.\n * @param pointer - a JSON pointer representing an entity\n * @internal\n */\nexport function parseHealthcareEntityIndex(pointer: string): number {\n const regex = new RegExp(/#\\/results\\/documents\\/(\\d+)\\/entities\\/(\\d+)/);\n const res = regex.exec(pointer);\n if (res !== null) {\n return parseInt(res[2]);\n } else {\n throw new Error(`Pointer \"${pointer}\" is not a valid healthcare entity pointer`);\n }\n}\n\n/**\n * @internal\n */\nexport function isStringArray(documents: unknown[]): documents is string[] {\n return typeof documents[0] === \"string\";\n}\n\n/**\n * @internal\n */\nexport function convertToTextDocumentInput(\n inputs: string[],\n language?: string\n): TextDocumentInput[] {\n return inputs.map((text: string, index): TextDocumentInput => {\n return {\n id: String(index),\n language,\n text,\n };\n });\n}\n\n/**\n * @internal\n */\nexport function convertToLanguageDetectionInput(\n inputs: string[],\n countryHint?: string\n): LanguageDetectionInput[] {\n return inputs.map((text: string, index): LanguageDetectionInput => {\n return {\n id: String(index),\n countryHint,\n text,\n };\n });\n}\n\n/**\n * @internal\n */\nexport function getOperationOptions<OptionsT extends TextAnalysisOperationOptions>(\n options: OptionsT\n): {\n options: TextAnalysisOperationOptions;\n rest: Omit<\n OptionsT,\n | \"onResponse\"\n | \"abortSignal\"\n | \"includeStatistics\"\n | \"requestOptions\"\n | \"serializerOptions\"\n | \"tracingOptions\"\n >;\n} {\n const {\n abortSignal,\n includeStatistics,\n onResponse,\n requestOptions,\n serializerOptions,\n tracingOptions,\n ...rest\n } = options;\n return {\n options: {\n abortSignal,\n includeStatistics,\n onResponse,\n requestOptions,\n serializerOptions,\n tracingOptions,\n },\n rest,\n };\n}\n"]}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;;AAIlC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CACnC,SAAmB,EACnB,aAAkB;IAElB,MAAM,WAAW,GAAG,IAAI,GAAG,EAAa,CAAC;IACzC,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE;QAChC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;KAChC;IAED,IAAI,aAAa,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,EAAE;QAC7C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QAC3E,MAAM,CAAC,OAAO,CACZ,wBAAwB,OAAO,8DAA8D,CAC9F,CAAC;KACH;IAED,MAAM,MAAM,GAAQ,EAAE,CAAC;IACvB;;;;OAIG;IACH,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE;QAC1B,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACjC,IAAI,IAAI,EAAE;YACR,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACnB;KACF;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAWD;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,2DAA2D,CAAC,CAAC;IACtF,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAChC,IAAI,GAAG,KAAK,IAAI,EAAE;QAChB,MAAM,eAAe,GAAoB;YACvC,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC1B,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC1B,UAAU,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SAC7B,CAAC;QACF,OAAO,eAAe,CAAC;KACxB;SAAM;QACL,MAAM,IAAI,KAAK,CAAC,YAAY,OAAO,qCAAqC,CAAC,CAAC;KAC3E;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CAAC,OAAe;IACxD,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,+CAA+C,CAAC,CAAC;IAC1E,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAChC,IAAI,GAAG,KAAK,IAAI,EAAE;QAChB,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;KACzB;SAAM;QACL,MAAM,IAAI,KAAK,CAAC,YAAY,OAAO,4CAA4C,CAAC,CAAC;KAClF;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,SAAoB;IAChD,OAAO,OAAO,SAAS,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,0BAA0B,CACxC,MAAgB,EAChB,QAAiB;IAEjB,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAY,EAAE,KAAK,EAAqB,EAAE;QAC3D,OAAO;YACL,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC;YACjB,QAAQ;YACR,IAAI;SACL,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,+BAA+B,CAC7C,MAAgB,EAChB,WAAoB;IAEpB,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAY,EAAE,KAAK,EAA0B,EAAE;QAChE,OAAO;YACL,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC;YACjB,WAAW;YACX,IAAI;SACL,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAAiB;IAajB,MAAM,EACJ,WAAW,EACX,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,iBAAiB,EACjB,cAAc,KAEZ,OAAO,EADN,IAAI,UACL,OAAO,EARL,2GAQL,CAAU,CAAC;IACZ,OAAO;QACL,OAAO,EAAE;YACP,WAAW;YACX,iBAAiB;YACjB,UAAU;YACV,cAAc;YACd,iBAAiB;YACjB,cAAc;SACf;QACD,IAAI;KACL,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAAiB;IACxD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;QACjB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;KACzE;IACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAY,CAAC,CAAC;IAEnE,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE;QACnB,MAAM,IAAI,KAAK,CACb,sDAAsD,KAAK,CAAC,MAAM,kCAAkC,CACrG,CAAC;KACH;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { ErrorModel, LanguageDetectionInput, TextDocumentInput } from \"./generated\";\nimport { TextAnalysisOperationOptions } from \"./models\";\nimport { logger } from \"./logger\";\n\n/**\n * Given a sorted array of input objects (with a unique ID) and an unsorted array of results,\n * return a sorted array of results.\n *\n * @internal\n * @param sortedIds - An array of sorted IDs\n * @param unsortedArray - An array of entries that contain `id` but are not sorted\n */\nexport function sortResponseIdObjects<U extends { id: string }>(\n sortedIds: string[],\n unsortedArray: U[]\n): U[] {\n const unsortedMap = new Map<string, U>();\n for (const item of unsortedArray) {\n unsortedMap.set(item.id, item);\n }\n\n if (unsortedArray.length !== sortedIds.length) {\n const ordinal = unsortedArray.length > sortedIds.length ? \"more\" : \"fewer\";\n logger.warning(\n `The service returned ${ordinal} responses than inputs. Some errors may be treated as fatal.`\n );\n }\n\n const result: U[] = [];\n /**\n * When the results are returned in pages, sortedArray will probably have more\n * items than unsortedArray so it is ok to ignore the case when a sorted item\n * ID is not found in `unsortedMap`.\n */\n for (const id of sortedIds) {\n const item = unsortedMap.get(id);\n if (item) {\n result.push(item);\n }\n }\n return result;\n}\n\n/**\n * @internal\n */\nexport interface AssessmentIndex {\n document: number;\n sentence: number;\n assessment: number;\n}\n\n/**\n * @internal\n */\nexport function parseAssessmentIndex(pointer: string): AssessmentIndex {\n const regex = new RegExp(/#\\/documents\\/(\\d+)\\/sentences\\/(\\d+)\\/assessments\\/(\\d+)/);\n const res = regex.exec(pointer);\n if (res !== null) {\n const assessmentIndex: AssessmentIndex = {\n document: parseInt(res[1]),\n sentence: parseInt(res[2]),\n assessment: parseInt(res[3]),\n };\n return assessmentIndex;\n } else {\n throw new Error(`Pointer \"${pointer}\" is not a valid Assessment pointer`);\n }\n}\n\n/**\n * Parses the index of the healthcare entity from a JSON pointer.\n * @param pointer - a JSON pointer representing an entity\n * @internal\n */\nexport function parseHealthcareEntityIndex(pointer: string): number {\n const regex = new RegExp(/#\\/results\\/documents\\/(\\d+)\\/entities\\/(\\d+)/);\n const res = regex.exec(pointer);\n if (res !== null) {\n return parseInt(res[2]);\n } else {\n throw new Error(`Pointer \"${pointer}\" is not a valid healthcare entity pointer`);\n }\n}\n\n/**\n * @internal\n */\nexport function isStringArray(documents: unknown[]): documents is string[] {\n return typeof documents[0] === \"string\";\n}\n\n/**\n * @internal\n */\nexport function convertToTextDocumentInput(\n inputs: string[],\n language?: string\n): TextDocumentInput[] {\n return inputs.map((text: string, index): TextDocumentInput => {\n return {\n id: String(index),\n language,\n text,\n };\n });\n}\n\n/**\n * @internal\n */\nexport function convertToLanguageDetectionInput(\n inputs: string[],\n countryHint?: string\n): LanguageDetectionInput[] {\n return inputs.map((text: string, index): LanguageDetectionInput => {\n return {\n id: String(index),\n countryHint,\n text,\n };\n });\n}\n\n/**\n * @internal\n */\nexport function getOperationOptions<OptionsT extends TextAnalysisOperationOptions>(\n options: OptionsT\n): {\n options: TextAnalysisOperationOptions;\n rest: Omit<\n OptionsT,\n | \"onResponse\"\n | \"abortSignal\"\n | \"includeStatistics\"\n | \"requestOptions\"\n | \"serializerOptions\"\n | \"tracingOptions\"\n >;\n} {\n const {\n abortSignal,\n includeStatistics,\n onResponse,\n requestOptions,\n serializerOptions,\n tracingOptions,\n ...rest\n } = options;\n return {\n options: {\n abortSignal,\n includeStatistics,\n onResponse,\n requestOptions,\n serializerOptions,\n tracingOptions,\n },\n rest,\n };\n}\n\n/**\n *\n * @param error - error with the target in the JSON error pointer format \"#/items/0\n * @returns number: the position of the task with error\n */\nexport function extractErrorPointerIndex(error: ErrorModel): number {\n if (!error.target) {\n throw new Error(\"Unexpected response from service - no target present\");\n }\n const position = parseInt(error.target.split(\"/\").pop() as string);\n\n if (isNaN(position)) {\n throw new Error(\n `Unexpected response from service - action pointer \"${error.target}\" is not a valid action pointer.`\n );\n }\n\n return position;\n}\n"]}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "sdk-type": "client",
4
4
  "author": "Microsoft Corporation",
5
5
  "description": "An isomorphic client library for the text analysis features in the Azure Cognitive Language Service.",
6
- "version": "1.1.0-beta.1",
6
+ "version": "1.1.0-beta.2",
7
7
  "keywords": [
8
8
  "node",
9
9
  "azure",
@@ -101,7 +101,7 @@
101
101
  "@azure/eslint-plugin-azure-sdk": "^3.0.0",
102
102
  "@azure/identity": "^2.0.1",
103
103
  "@azure/test-utils": "^1.0.0",
104
- "@azure-tools/test-recorder": "^2.0.0",
104
+ "@azure-tools/test-recorder": "^3.0.0",
105
105
  "@azure-tools/test-credential": "^1.0.0",
106
106
  "@microsoft/api-extractor": "^7.31.1",
107
107
  "@types/chai": "^4.1.6",
@@ -112,15 +112,13 @@
112
112
  "chai": "^4.2.0",
113
113
  "chai-as-promised": "^7.1.1",
114
114
  "cross-env": "^7.0.2",
115
- "dotenv": "^8.2.0",
115
+ "dotenv": "^16.0.0",
116
116
  "eslint": "^8.0.0",
117
117
  "karma": "^6.2.0",
118
118
  "karma-chrome-launcher": "^3.0.0",
119
119
  "karma-coverage": "^2.0.0",
120
- "karma-edge-launcher": "^0.4.2",
121
120
  "karma-env-preprocessor": "^0.1.1",
122
121
  "karma-firefox-launcher": "^1.1.0",
123
- "karma-ie-launcher": "^1.0.0",
124
122
  "karma-junit-reporter": "^2.0.1",
125
123
  "karma-mocha": "^2.0.1",
126
124
  "karma-mocha-reporter": "^2.2.5",
@@ -134,6 +132,6 @@
134
132
  "sinon": "^9.0.2",
135
133
  "source-map-support": "^0.5.9",
136
134
  "ts-node": "^10.0.0",
137
- "typescript": "~4.6.0"
135
+ "typescript": "~4.8.0"
138
136
  }
139
137
  }
@@ -19,8 +19,8 @@ import { TokenCredential } from '@azure/core-auth';
19
19
 
20
20
  /** Options for an Abstractive Summarization action. */
21
21
  export declare interface AbstractiveSummarizationAction {
22
- /** The max number of sentences to be part of the summary. */
23
- maxSentenceCount?: number;
22
+ /** The approximate number of sentences to be part of the summary. */
23
+ sentenceCount?: number;
24
24
  /**
25
25
  * Specifies the measurement unit used to calculate the offset and length properties. For a list of possible values, see {@link KnownStringIndexType}.
26
26
  *
@@ -68,7 +68,7 @@ export declare interface AbstractiveSummary {
68
68
  /** The text of the summary. */
69
69
  text: string;
70
70
  /** The context list of the summary. */
71
- contexts?: SummaryContext[];
71
+ contexts: SummaryContext[];
72
72
  }
73
73
 
74
74
  /** Configuration common to all actions. */
@@ -381,10 +381,6 @@ export declare interface BeginAnalyzeBatchOptions extends TextAnalysisOperationO
381
381
  * The operation's display name.
382
382
  */
383
383
  displayName?: string;
384
- /**
385
- * Default language code to use for records requesting automatic language detection
386
- */
387
- defaultLanguage?: string;
388
384
  }
389
385
 
390
386
  /** A resolution for boolean expressions */
@@ -3219,10 +3215,10 @@ export declare class TextAnalysisClient {
3219
3215
  *
3220
3216
  * ```js
3221
3217
  * const documents = [<input strings>];
3222
- * const languageHint = "en";
3218
+ * const languageCode = "en";
3223
3219
  * const categoriesFilter = [KnownPiiCategory.USSocialSecurityNumber];
3224
3220
  * const domainFilter = KnownPiiDomain.Phi;
3225
- * const results = await client.analyze("PiiEntityRecognition", documents, languageHint, {
3221
+ * const results = await client.analyze("PiiEntityRecognition", documents, languageCode, {
3226
3222
  * domainFilter, categoriesFilter
3227
3223
  * });
3228
3224
  *
@@ -3252,8 +3248,7 @@ export declare class TextAnalysisClient {
3252
3248
  * about the languages supported for Entity Recognition actions can be
3253
3249
  * found in {@link https://docs.microsoft.com//azure/cognitive-services/language-service/named-entity-recognition/language-support}.
3254
3250
  * If set to "auto", the service will automatically infer the language from
3255
- * the input text. If that process fails, the value in the `defaultLanguage`
3256
- * option will be used.
3251
+ * the input text.
3257
3252
  * @param options - optional action parameters and settings for the operation
3258
3253
  *
3259
3254
  * @returns an array of results corresponding to the input documents
@@ -3313,8 +3308,7 @@ export declare class TextAnalysisClient {
3313
3308
  * about the languages supported for Entity Recognition actions can be
3314
3309
  * found in {@link https://docs.microsoft.com//azure/cognitive-services/language-service/named-entity-recognition/language-support}.
3315
3310
  * If set to "auto", the service will automatically infer the language from
3316
- * the input text. If that process fails, the value in the `defaultLanguage`
3317
- * option will be used.
3311
+ * the input text.
3318
3312
  * @param options - optional settings for the operation
3319
3313
  *
3320
3314
  * @returns an array of results corresponding to the input actions