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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -41,7 +41,7 @@ const DEFAULT_COGNITIVE_SCOPE = "https://cognitiveservices.azure.com/.default";
41
41
  /**
42
42
  * @internal
43
43
  */
44
- const SDK_VERSION = "1.1.0-beta.1";
44
+ const SDK_VERSION = "1.1.0-beta.2";
45
45
  /**
46
46
  * @internal
47
47
  */
@@ -166,6 +166,21 @@ function getOperationOptions(options) {
166
166
  rest,
167
167
  };
168
168
  }
169
+ /**
170
+ *
171
+ * @param error - error with the target in the JSON error pointer format "#/items/0
172
+ * @returns number: the position of the task with error
173
+ */
174
+ function extractErrorPointerIndex(error) {
175
+ if (!error.target) {
176
+ throw new Error("Unexpected response from service - no target present");
177
+ }
178
+ const position = parseInt(error.target.split("/").pop());
179
+ if (isNaN(position)) {
180
+ throw new Error(`Unexpected response from service - action pointer "${error.target}" is not a valid action pointer.`);
181
+ }
182
+ return position;
183
+ }
169
184
 
170
185
  /*
171
186
  * Copyright (c) Microsoft Corporation.
@@ -330,12 +345,6 @@ const AnalyzeTextJobsInput = {
330
345
  name: "String"
331
346
  }
332
347
  },
333
- defaultLanguage: {
334
- serializedName: "defaultLanguage",
335
- type: {
336
- name: "String"
337
- }
338
- },
339
348
  analysisInput: {
340
349
  serializedName: "analysisInput",
341
350
  type: {
@@ -1646,7 +1655,7 @@ const AbstractiveSummarizationTaskParametersBase = {
1646
1655
  name: "Composite",
1647
1656
  className: "AbstractiveSummarizationTaskParametersBase",
1648
1657
  modelProperties: {
1649
- maxSentenceCount: {
1658
+ sentenceCount: {
1650
1659
  serializedName: "sentenceCount",
1651
1660
  type: {
1652
1661
  name: "Number"
@@ -1697,6 +1706,7 @@ const AbstractiveSummary = {
1697
1706
  },
1698
1707
  contexts: {
1699
1708
  serializedName: "contexts",
1709
+ required: true,
1700
1710
  type: {
1701
1711
  name: "Sequence",
1702
1712
  element: {
@@ -4076,74 +4086,172 @@ function toHealthcareResult(docIds, results) {
4076
4086
  /**
4077
4087
  * @internal
4078
4088
  */
4079
- function transformAnalyzeBatchResults(docIds, response = []) {
4080
- return response.map((actionData) => {
4081
- const { lastUpdateDateTime: completedOn, actionName, kind } = actionData;
4082
- switch (kind) {
4089
+ function transformAnalyzeBatchResults(docIds, response = [], errors = []) {
4090
+ const errorMap = toIndexErrorMap(errors);
4091
+ return response.map((actionData, idx) => {
4092
+ const { lastUpdateDateTime: completedOn, actionName, kind: resultKind } = actionData;
4093
+ const error = errorMap.get(idx);
4094
+ switch (resultKind) {
4083
4095
  case "SentimentAnalysisLROResults": {
4096
+ const kind = "SentimentAnalysis";
4097
+ if (actionData.status === "failed") {
4098
+ return returnErrorTask(kind, error, completedOn);
4099
+ }
4084
4100
  const { results } = actionData;
4085
4101
  const { modelVersion, statistics } = results;
4086
- return Object.assign(Object.assign(Object.assign({ kind: "SentimentAnalysis", results: toSentimentAnalysisResult(docIds, results), completedOn }, (actionName ? { actionName } : {})), (statistics ? { statistics } : {})), { modelVersion });
4102
+ return Object.assign(Object.assign(Object.assign({ kind, results: toSentimentAnalysisResult(docIds, results), completedOn }, (actionName ? { actionName } : {})), (statistics ? { statistics } : {})), { modelVersion });
4087
4103
  }
4088
4104
  case "EntityRecognitionLROResults": {
4105
+ const kind = "EntityRecognition";
4106
+ if (actionData.status === "failed") {
4107
+ return returnErrorTask(kind, error, completedOn);
4108
+ }
4089
4109
  const { results } = actionData;
4090
4110
  const { modelVersion, statistics } = results;
4091
4111
  return Object.assign(Object.assign(Object.assign({ kind: "EntityRecognition", results: toEntityRecognitionResult(docIds, results), completedOn }, (actionName ? { actionName } : {})), (statistics ? { statistics } : {})), { modelVersion });
4092
4112
  }
4093
4113
  case "PiiEntityRecognitionLROResults": {
4114
+ const kind = "PiiEntityRecognition";
4115
+ if (actionData.status === "failed") {
4116
+ return returnErrorTask(kind, error, completedOn);
4117
+ }
4094
4118
  const { results } = actionData;
4095
4119
  const { modelVersion, statistics } = results;
4096
- return Object.assign(Object.assign(Object.assign({ kind: "PiiEntityRecognition", results: toPiiEntityRecognitionResult(docIds, results), completedOn }, (actionName ? { actionName } : {})), (statistics ? { statistics } : {})), { modelVersion });
4120
+ return Object.assign(Object.assign(Object.assign({ kind, results: toPiiEntityRecognitionResult(docIds, results), completedOn }, (actionName ? { actionName } : {})), (statistics ? { statistics } : {})), { modelVersion });
4097
4121
  }
4098
4122
  case "KeyPhraseExtractionLROResults": {
4123
+ const kind = "KeyPhraseExtraction";
4124
+ if (actionData.status === "failed") {
4125
+ return returnErrorTask(kind, error, completedOn);
4126
+ }
4099
4127
  const { results } = actionData;
4100
4128
  const { modelVersion, statistics } = results;
4101
- return Object.assign(Object.assign(Object.assign({ kind: "KeyPhraseExtraction", results: toKeyPhraseExtractionResult(docIds, results), completedOn }, (actionName ? { actionName } : {})), (statistics ? { statistics } : {})), { modelVersion });
4129
+ return Object.assign(Object.assign(Object.assign({ kind, results: toKeyPhraseExtractionResult(docIds, results), completedOn }, (actionName ? { actionName } : {})), (statistics ? { statistics } : {})), { modelVersion });
4102
4130
  }
4103
4131
  case "EntityLinkingLROResults": {
4132
+ const kind = "EntityLinking";
4133
+ if (actionData.status === "failed") {
4134
+ return returnErrorTask(kind, error, completedOn);
4135
+ }
4104
4136
  const { results } = actionData;
4105
4137
  const { modelVersion, statistics } = results;
4106
- return Object.assign(Object.assign(Object.assign({ kind: "EntityLinking", results: toEntityLinkingResult(docIds, results), completedOn }, (actionName ? { actionName } : {})), (statistics ? { statistics } : {})), { modelVersion });
4138
+ return Object.assign(Object.assign(Object.assign({ kind, results: toEntityLinkingResult(docIds, results), completedOn }, (actionName ? { actionName } : {})), (statistics ? { statistics } : {})), { modelVersion });
4107
4139
  }
4108
4140
  case "HealthcareLROResults": {
4141
+ const kind = "Healthcare";
4142
+ if (actionData.status === "failed") {
4143
+ return returnErrorTask(kind, error, completedOn);
4144
+ }
4109
4145
  const { results } = actionData;
4110
4146
  const { modelVersion, statistics } = results;
4111
- return Object.assign(Object.assign(Object.assign({ kind: "Healthcare", results: toHealthcareResult(docIds, results), completedOn }, (actionName ? { actionName } : {})), (statistics ? { statistics } : {})), { modelVersion });
4147
+ return Object.assign(Object.assign(Object.assign({ kind, results: toHealthcareResult(docIds, results), completedOn }, (actionName ? { actionName } : {})), (statistics ? { statistics } : {})), { modelVersion });
4112
4148
  }
4113
4149
  case "CustomEntityRecognitionLROResults": {
4150
+ const kind = "CustomEntityRecognition";
4151
+ if (actionData.status === "failed") {
4152
+ return returnErrorCustomTask(kind, error, completedOn);
4153
+ }
4114
4154
  const { results } = actionData;
4115
4155
  const { deploymentName, projectName, statistics } = results;
4116
- return Object.assign(Object.assign(Object.assign({ kind: "CustomEntityRecognition", results: transformDocumentResults(docIds, results), completedOn }, (actionName ? { actionName } : {})), (statistics ? { statistics } : {})), { deploymentName,
4156
+ return Object.assign(Object.assign(Object.assign({ kind, results: transformDocumentResults(docIds, results), completedOn }, (actionName ? { actionName } : {})), (statistics ? { statistics } : {})), { deploymentName,
4117
4157
  projectName });
4118
4158
  }
4119
4159
  case "CustomSingleLabelClassificationLROResults": {
4160
+ const kind = "CustomSingleLabelClassification";
4161
+ if (actionData.status === "failed") {
4162
+ return returnErrorCustomTask(kind, error, completedOn);
4163
+ }
4120
4164
  const { results } = actionData;
4121
4165
  const { deploymentName, projectName, statistics } = results;
4122
- return Object.assign(Object.assign(Object.assign({ kind: "CustomSingleLabelClassification", results: transformDocumentResults(docIds, results), completedOn }, (actionName ? { actionName } : {})), (statistics ? { statistics } : {})), { deploymentName,
4166
+ return Object.assign(Object.assign(Object.assign({ kind, results: transformDocumentResults(docIds, results), completedOn }, (actionName ? { actionName } : {})), (statistics ? { statistics } : {})), { deploymentName,
4123
4167
  projectName });
4124
4168
  }
4125
4169
  case "CustomMultiLabelClassificationLROResults": {
4170
+ const kind = "CustomMultiLabelClassification";
4171
+ if (actionData.status === "failed") {
4172
+ return returnErrorCustomTask(kind, error, completedOn);
4173
+ }
4126
4174
  const { results } = actionData;
4127
4175
  const { deploymentName, projectName, statistics } = results;
4128
- return Object.assign(Object.assign(Object.assign({ kind: "CustomMultiLabelClassification", results: transformDocumentResults(docIds, results), completedOn }, (actionName ? { actionName } : {})), (statistics ? { statistics } : {})), { deploymentName,
4176
+ return Object.assign(Object.assign(Object.assign({ kind, results: transformDocumentResults(docIds, results), completedOn }, (actionName ? { actionName } : {})), (statistics ? { statistics } : {})), { deploymentName,
4129
4177
  projectName });
4130
4178
  }
4131
4179
  case "ExtractiveSummarizationLROResults": {
4180
+ const kind = "ExtractiveSummarization";
4181
+ if (actionData.status === "failed") {
4182
+ return returnErrorTask(kind, error, completedOn);
4183
+ }
4132
4184
  const { results } = actionData;
4133
4185
  const { modelVersion, statistics } = results;
4134
- return Object.assign(Object.assign(Object.assign({ kind: "ExtractiveSummarization", results: transformDocumentResults(docIds, results), completedOn }, (actionName ? { actionName } : {})), (statistics ? { statistics } : {})), { modelVersion });
4186
+ return Object.assign(Object.assign(Object.assign({ kind, results: transformDocumentResults(docIds, results), completedOn }, (actionName ? { actionName } : {})), (statistics ? { statistics } : {})), { modelVersion });
4135
4187
  }
4136
4188
  case "AbstractiveSummarizationLROResults": {
4189
+ const kind = "AbstractiveSummarization";
4190
+ if (actionData.status === "failed") {
4191
+ return returnErrorTask(kind, error, completedOn);
4192
+ }
4137
4193
  const { results } = actionData;
4138
4194
  const { modelVersion, statistics } = results;
4139
- return Object.assign(Object.assign(Object.assign({ kind: "AbstractiveSummarization", results: transformDocumentResults(docIds, results), completedOn }, (actionName ? { actionName } : {})), (statistics ? { statistics } : {})), { modelVersion });
4195
+ return Object.assign(Object.assign(Object.assign({ kind, results: transformDocumentResults(docIds, results), completedOn }, (actionName ? { actionName } : {})), (statistics ? { statistics } : {})), { modelVersion });
4140
4196
  }
4141
4197
  default: {
4142
- throw new Error(`Unsupported results kind: ${kind}`);
4198
+ throw new Error(`Unsupported results kind: ${resultKind}`);
4143
4199
  }
4144
4200
  }
4145
4201
  });
4146
4202
  }
4203
+ /**
4204
+ * @internal
4205
+ * Transform a list of error into index and error Map
4206
+ */
4207
+ function toIndexErrorMap(errors) {
4208
+ const errorMap = new Map();
4209
+ for (const error of errors) {
4210
+ const position = extractErrorPointerIndex(error);
4211
+ const errorWithoutTarget = tslib.__rest(error, ["target"]);
4212
+ errorMap.set(position, toTextAnalysisError(errorWithoutTarget));
4213
+ }
4214
+ return errorMap;
4215
+ }
4216
+ /**
4217
+ * Return the error for non-custom task
4218
+ *
4219
+ * @param kind - non custom task kind
4220
+ * @param error - error returned from the service
4221
+ * @param failedOn - the LastUpdateDateTime from the service
4222
+ * @returns - AnalyzeBatchResult with error
4223
+ */
4224
+ function returnErrorTask(kind, error, failedOn) {
4225
+ if (!error) {
4226
+ throw new Error("Unexpected response from service - no errors for missing action results.");
4227
+ }
4228
+ return {
4229
+ kind,
4230
+ modelVersion: "",
4231
+ failedOn,
4232
+ error,
4233
+ };
4234
+ }
4235
+ /**
4236
+ * Return the error for non-custom task
4237
+ *
4238
+ * @param kind - non custom task kind
4239
+ * @param error - error returned from the service
4240
+ * @param failedOn - the LastUpdateDateTime from the service
4241
+ * @returns AnalyzeBatchResult for custom task with error
4242
+ */
4243
+ function returnErrorCustomTask(kind, error, failedOn) {
4244
+ if (!error) {
4245
+ throw new Error("Unexpected response from service - no errors for missing action results.");
4246
+ }
4247
+ return {
4248
+ kind,
4249
+ projectName: "",
4250
+ deploymentName: "",
4251
+ failedOn,
4252
+ error,
4253
+ };
4254
+ }
4147
4255
 
4148
4256
  // Copyright (c) Microsoft Corporation.
4149
4257
  const serializer$2 = coreClient.createSerializer(Mappers, /* isXml */ false);
@@ -4161,13 +4269,24 @@ const jobStatusOperationSpec$1 = {
4161
4269
  queryParameters: [top, skip, includeStatistics],
4162
4270
  serializer: serializer$2,
4163
4271
  };
4272
+ function addOnResponse(options, cb) {
4273
+ return Object.assign(Object.assign({}, options), { onResponse: (rawResponse, response, error) => {
4274
+ var _a;
4275
+ cb(rawResponse, response, error);
4276
+ (_a = options.onResponse) === null || _a === void 0 ? void 0 : _a.call(options, rawResponse, response, error);
4277
+ } });
4278
+ }
4279
+ function logWarnHeader(rawResponse) {
4280
+ const warnHeader = rawResponse.headers.get("warn-text");
4281
+ if (warnHeader) {
4282
+ warnHeader.split(";").map((x) => logger.warning(x));
4283
+ }
4284
+ }
4164
4285
  async function getRawResponse(getResponse, options) {
4165
- const { onResponse } = options || {};
4166
4286
  let rawResponse;
4167
- const flatResponse = await getResponse(Object.assign(Object.assign({}, options), { onResponse: (response, flatResponseParam) => {
4168
- rawResponse = response;
4169
- onResponse === null || onResponse === void 0 ? void 0 : onResponse(response, flatResponseParam);
4170
- } }));
4287
+ const flatResponse = await getResponse(addOnResponse(options, (response) => {
4288
+ rawResponse = response;
4289
+ }));
4171
4290
  return {
4172
4291
  flatResponse,
4173
4292
  rawResponse: {
@@ -4190,7 +4309,12 @@ function createSendPollRequest(settings) {
4190
4309
  return async (path) => {
4191
4310
  return throwError(sendRequest({
4192
4311
  client,
4193
- opOptions: options,
4312
+ opOptions: addOnResponse(options, (_, response) => {
4313
+ const castResponse = response;
4314
+ if (castResponse.status.toLowerCase() === "partiallysucceeded") {
4315
+ castResponse.status = "succeeded";
4316
+ }
4317
+ }),
4194
4318
  path,
4195
4319
  spanStr,
4196
4320
  spec: jobStatusOperationSpec$1,
@@ -4205,7 +4329,7 @@ function createAnalyzeBatchLro(settings) {
4205
4329
  const { client, commonOptions, documents, initialRequestOptions, pollRequestOptions, tasks, tracing, } = settings;
4206
4330
  return {
4207
4331
  async sendInitialRequest() {
4208
- return tracing.withSpan(`${clientName}.beginAnalyzeBatch`, Object.assign(Object.assign({}, commonOptions), initialRequestOptions), async (finalOptions) => throwError(getRawResponse((paramOptions) => client.analyzeBatch({
4332
+ return tracing.withSpan(`${clientName}.beginAnalyzeBatch`, addOnResponse(Object.assign(Object.assign({}, commonOptions), initialRequestOptions), logWarnHeader), async (finalOptions) => throwError(getRawResponse((paramOptions) => client.analyzeBatch({
4209
4333
  tasks,
4210
4334
  analysisInput: {
4211
4335
  documents,
@@ -4273,7 +4397,7 @@ function processAnalyzeResult(options) {
4273
4397
  });
4274
4398
  const flatResponse = response.flatResponse;
4275
4399
  return {
4276
- page: transformAnalyzeBatchResults(docIds, flatResponse.tasks.items),
4400
+ page: transformAnalyzeBatchResults(docIds, flatResponse.tasks.items, flatResponse.errors),
4277
4401
  nextPageLink: flatResponse.nextLink,
4278
4402
  };
4279
4403
  },
@@ -4414,13 +4538,13 @@ class GeneratedClient extends coreClient__namespace.ServiceClient {
4414
4538
  const defaults = {
4415
4539
  requestContentType: "application/json; charset=utf-8"
4416
4540
  };
4417
- const packageDetails = `azsdk-js-ai-language-text/1.1.0-beta.1`;
4541
+ const packageDetails = `azsdk-js-ai-language-text/1.1.0-beta.2`;
4418
4542
  const userAgentPrefix = options.userAgentOptions && options.userAgentOptions.userAgentPrefix
4419
4543
  ? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}`
4420
4544
  : `${packageDetails}`;
4421
4545
  const optionsWithDefaults = Object.assign(Object.assign(Object.assign({}, defaults), options), { userAgentOptions: {
4422
4546
  userAgentPrefix
4423
- }, baseUri: (_b = (_a = options.endpoint) !== null && _a !== void 0 ? _a : options.baseUri) !== null && _b !== void 0 ? _b : "{Endpoint}/language" });
4547
+ }, endpoint: (_b = (_a = options.endpoint) !== null && _a !== void 0 ? _a : options.baseUri) !== null && _b !== void 0 ? _b : "{Endpoint}/language" });
4424
4548
  super(optionsWithDefaults);
4425
4549
  // Parameter assignments
4426
4550
  this.endpoint = endpoint;
@@ -4639,8 +4763,8 @@ class TextAnalysisClient {
4639
4763
  throw new Error("'documents' must be a non-empty array");
4640
4764
  }
4641
4765
  if (isStringArray(documents)) {
4642
- const languageHint = (_a = languageOrOptions) !== null && _a !== void 0 ? _a : this.defaultLanguage;
4643
- realInputs = convertToTextDocumentInput(documents, languageHint);
4766
+ const languageCode = (_a = languageOrOptions) !== null && _a !== void 0 ? _a : this.defaultLanguage;
4767
+ realInputs = convertToTextDocumentInput(documents, languageCode);
4644
4768
  realOptions = options;
4645
4769
  }
4646
4770
  else {