smartling-api-sdk-nodejs 1.1.2 → 1.2.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.
@@ -2,5 +2,5 @@ projectKey=smartling-api-sdk-nodejs
2
2
  serverUrl=https://sonar-next.connectors.stg.smartling.net
3
3
  serverVersion=8.6.1.40680
4
4
  dashboardUrl=https://sonar-next.connectors.stg.smartling.net/dashboard?id=smartling-api-sdk-nodejs
5
- ceTaskId=AX2AqCuSdMA5141C1fch
6
- ceTaskUrl=https://sonar-next.connectors.stg.smartling.net/api/ce/task?id=AX2AqCuSdMA5141C1fch
5
+ ceTaskId=AX4IuqDVT9NWOnswYCGu
6
+ ceTaskUrl=https://sonar-next.connectors.stg.smartling.net/api/ce/task?id=AX4IuqDVT9NWOnswYCGu
@@ -1,5 +1,4 @@
1
1
  import FormData from "form-data";
2
- import * as fs from "fs";
3
2
  import { SmartlingBaseApi } from "../base/index";
4
3
  import { SmartlingAuthApi } from "../auth/index";
5
4
  import { Logger } from "../logger";
@@ -68,13 +67,7 @@ export class SmartlingFilesApi extends SmartlingBaseApi {
68
67
  const formData = new FormData();
69
68
  const exported = parameters.export();
70
69
  Object.keys(exported).forEach((key) => {
71
- if (key === "file") {
72
- formData.append(key, fs.createReadStream(
73
- fs.realpathSync(exported[key])
74
- ));
75
- } else {
76
- formData.append(key, exported[key]);
77
- }
70
+ formData.append(key, exported[key]);
78
71
  });
79
72
 
80
73
  return await this.makeRequest(
@@ -1,3 +1,5 @@
1
+ import * as fs from "fs";
2
+ import { Readable } from "stream";
1
3
  import { BaseParameters } from "../../parameters/index";
2
4
  import { FileType } from "./file-type";
3
5
 
@@ -8,8 +10,28 @@ export class UploadFileParameters extends BaseParameters {
8
10
  return this;
9
11
  }
10
12
 
11
- setFile(file: string): UploadFileParameters {
12
- this.set("file", file);
13
+ /**
14
+ * @deprecated This method will be deleted in 2.0.0
15
+ * @param filePath
16
+ * @returns UploadFileParameters
17
+ */
18
+ setFile(filePath: string): UploadFileParameters {
19
+ this.set("file", fs.createReadStream(
20
+ fs.realpathSync(filePath)
21
+ ));
22
+ return this;
23
+ }
24
+
25
+ setFileFromLocalFilePath(filePath: string): UploadFileParameters {
26
+ this.set("file", fs.createReadStream(
27
+ fs.realpathSync(filePath)
28
+ ));
29
+ return this;
30
+ }
31
+
32
+ setFileContent(fileContent: Readable): UploadFileParameters {
33
+ this.set("file", fileContent);
34
+
13
35
  return this;
14
36
  }
15
37
 
@@ -1,4 +1,3 @@
1
- import * as fs from "fs";
2
1
  import FormData from "form-data";
3
2
  import { SmartlingBaseApi } from "../base/index";
4
3
  import { SmartlingAuthApi } from "../auth/index";
@@ -23,11 +22,7 @@ export class SmartlingJobBatchesApi extends SmartlingBaseApi {
23
22
  const formData = new FormData();
24
23
 
25
24
  Object.keys(opts.body).forEach((key) => {
26
- if (key === "file") {
27
- formData.append(key, fs.createReadStream(
28
- fs.realpathSync(opts.body[key])
29
- ));
30
- } else if (Array.isArray(opts.body[key])) {
25
+ if (Array.isArray(opts.body[key])) {
31
26
  opts.body[key].forEach((value) => {
32
27
  formData.append(`${key}[]`, value);
33
28
  });
@@ -1,3 +1,5 @@
1
+ import * as fs from "fs";
2
+ import { Readable } from "stream";
1
3
  import { BaseParameters } from "../../parameters/index";
2
4
  import { FileType } from "../../files/params/file-type";
3
5
 
@@ -23,8 +25,29 @@ export class UploadBatchFileParameters extends BaseParameters {
23
25
  return this;
24
26
  }
25
27
 
28
+ /**
29
+ * @deprecated This method will be deleted in 2.0.0
30
+ * @param filePath
31
+ * @returns UploadBatchFileParameters
32
+ */
26
33
  setFile(filePath: string): UploadBatchFileParameters {
27
- this.set("file", filePath);
34
+ this.set("file", fs.createReadStream(
35
+ fs.realpathSync(filePath)
36
+ ));
37
+
38
+ return this;
39
+ }
40
+
41
+ setFileFromLocalFilePath(filePath: string): UploadBatchFileParameters {
42
+ this.set("file", fs.createReadStream(
43
+ fs.realpathSync(filePath)
44
+ ));
45
+
46
+ return this;
47
+ }
48
+
49
+ setFileContent(fileContent: Readable): UploadBatchFileParameters {
50
+ this.set("file", fileContent);
28
51
 
29
52
  return this;
30
53
  }
@@ -1,23 +1,4 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
2
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
22
3
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
23
4
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -33,7 +14,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
33
14
  Object.defineProperty(exports, "__esModule", { value: true });
34
15
  exports.SmartlingFilesApi = void 0;
35
16
  const form_data_1 = __importDefault(require("form-data"));
36
- const fs = __importStar(require("fs"));
37
17
  const index_1 = require("../base/index");
38
18
  class SmartlingFilesApi extends index_1.SmartlingBaseApi {
39
19
  constructor(smartlingApiBaseUrl, authApi, logger) {
@@ -68,12 +48,7 @@ class SmartlingFilesApi extends index_1.SmartlingBaseApi {
68
48
  const formData = new form_data_1.default();
69
49
  const exported = parameters.export();
70
50
  Object.keys(exported).forEach((key) => {
71
- if (key === "file") {
72
- formData.append(key, fs.createReadStream(fs.realpathSync(exported[key])));
73
- }
74
- else {
75
- formData.append(key, exported[key]);
76
- }
51
+ formData.append(key, exported[key]);
77
52
  });
78
53
  return yield this.makeRequest("post", `${this.entrypoint}/${projectId}/file`, formData, false, SmartlingFilesApi.fixContentTypeHeaderCase(formData));
79
54
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../api/files/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0DAAiC;AACjC,uCAAyB;AACzB,yCAAiD;AAUjD,MAAa,iBAAkB,SAAQ,wBAAgB;IACnD,YAAY,mBAA2B,EAAE,OAAyB,EAAE,MAAc;QAC9E,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,GAAG,mBAAmB,wBAAwB,CAAC;IACrE,CAAC;IAEK,sBAAsB,CACxB,SAAiB,EAAE,OAAe;;YAElC,OAAO,MAAM,IAAI,CAAC,WAAW,CACzB,KAAK,EACL,GAAG,IAAI,CAAC,UAAU,IAAI,SAAS,cAAc,EAC7C,EAAE,OAAO,EAAE,CACd,CAAC;QACN,CAAC;KAAA;IAEK,eAAe,CACjB,SAAiB,EAAE,OAAe;;YAElC,OAAO,MAAM,IAAI,CAAC,WAAW,CACzB,KAAK,EACL,GAAG,IAAI,CAAC,UAAU,IAAI,SAAS,qBAAqB,EACpD,EAAE,OAAO,EAAE,CACd,CAAC;QACN,CAAC;KAAA;IAEK,YAAY,CACd,SAAiB,EAAE,OAAe,EAAE,MAAc,EAAE,MAA8B;;YAElF,OAAO,MAAM,IAAI,CAAC,WAAW,CACzB,KAAK,EACL,GAAG,IAAI,CAAC,UAAU,IAAI,SAAS,YAAY,MAAM,OAAO,EACxD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAC3C,IAAI,CACP,CAAC;QACN,CAAC;KAAA;IAEK,UAAU,CAAC,SAAiB,EAAE,OAAe;;YAC/C,MAAM,IAAI,GAAG,IAAI,mBAAQ,EAAE,CAAC;YAE5B,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAEhC,OAAO,MAAM,IAAI,CAAC,WAAW,CACzB,MAAM,EACN,GAAG,IAAI,CAAC,UAAU,IAAI,SAAS,cAAc,EAC7C,IAAI,EACJ,KAAK,EACL,iBAAiB,CAAC,wBAAwB,CAAC,IAAI,CAAC,CACnD,CAAC;QACN,CAAC;KAAA;IAEK,UAAU,CACZ,SAAiB,EAAE,UAAgC;;YAEnD,MAAM,QAAQ,GAAG,IAAI,mBAAQ,EAAE,CAAC;YAChC,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;YACrC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBAClC,IAAI,GAAG,KAAK,MAAM,EAAE;oBAChB,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,gBAAgB,CACpC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CACjC,CAAC,CAAC;iBACN;qBAAM;oBACH,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;iBACvC;YACL,CAAC,CAAC,CAAC;YAEH,OAAO,MAAM,IAAI,CAAC,WAAW,CACzB,MAAM,EACN,GAAG,IAAI,CAAC,UAAU,IAAI,SAAS,OAAO,EACtC,QAAQ,EACR,KAAK,EACL,iBAAiB,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CACvD,CAAC;QACN,CAAC;KAAA;IAED,MAAM,CAAC,wBAAwB,CAAC,IAAc;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAElC,OAAO,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;QAElD,OAAO,OAAO,CAAC,cAAc,CAAC,CAAC;QAC/B,OAAO,OAAO,CAAC;IACnB,CAAC;CACJ;AApFD,8CAoFC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../api/files/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,0DAAiC;AACjC,yCAAiD;AAUjD,MAAa,iBAAkB,SAAQ,wBAAgB;IACnD,YAAY,mBAA2B,EAAE,OAAyB,EAAE,MAAc;QAC9E,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,GAAG,mBAAmB,wBAAwB,CAAC;IACrE,CAAC;IAEK,sBAAsB,CACxB,SAAiB,EAAE,OAAe;;YAElC,OAAO,MAAM,IAAI,CAAC,WAAW,CACzB,KAAK,EACL,GAAG,IAAI,CAAC,UAAU,IAAI,SAAS,cAAc,EAC7C,EAAE,OAAO,EAAE,CACd,CAAC;QACN,CAAC;KAAA;IAEK,eAAe,CACjB,SAAiB,EAAE,OAAe;;YAElC,OAAO,MAAM,IAAI,CAAC,WAAW,CACzB,KAAK,EACL,GAAG,IAAI,CAAC,UAAU,IAAI,SAAS,qBAAqB,EACpD,EAAE,OAAO,EAAE,CACd,CAAC;QACN,CAAC;KAAA;IAEK,YAAY,CACd,SAAiB,EAAE,OAAe,EAAE,MAAc,EAAE,MAA8B;;YAElF,OAAO,MAAM,IAAI,CAAC,WAAW,CACzB,KAAK,EACL,GAAG,IAAI,CAAC,UAAU,IAAI,SAAS,YAAY,MAAM,OAAO,EACxD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAC3C,IAAI,CACP,CAAC;QACN,CAAC;KAAA;IAEK,UAAU,CAAC,SAAiB,EAAE,OAAe;;YAC/C,MAAM,IAAI,GAAG,IAAI,mBAAQ,EAAE,CAAC;YAE5B,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAEhC,OAAO,MAAM,IAAI,CAAC,WAAW,CACzB,MAAM,EACN,GAAG,IAAI,CAAC,UAAU,IAAI,SAAS,cAAc,EAC7C,IAAI,EACJ,KAAK,EACL,iBAAiB,CAAC,wBAAwB,CAAC,IAAI,CAAC,CACnD,CAAC;QACN,CAAC;KAAA;IAEK,UAAU,CACZ,SAAiB,EAAE,UAAgC;;YAEnD,MAAM,QAAQ,GAAG,IAAI,mBAAQ,EAAE,CAAC;YAChC,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;YACrC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBAClC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;YACxC,CAAC,CAAC,CAAC;YAEH,OAAO,MAAM,IAAI,CAAC,WAAW,CACzB,MAAM,EACN,GAAG,IAAI,CAAC,UAAU,IAAI,SAAS,OAAO,EACtC,QAAQ,EACR,KAAK,EACL,iBAAiB,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CACvD,CAAC;QACN,CAAC;KAAA;IAED,MAAM,CAAC,wBAAwB,CAAC,IAAc;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAElC,OAAO,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;QAElD,OAAO,OAAO,CAAC,cAAc,CAAC,CAAC;QAC/B,OAAO,OAAO,CAAC;IACnB,CAAC;CACJ;AA9ED,8CA8EC"}
@@ -1,8 +1,12 @@
1
+ /// <reference types="node" />
2
+ import { Readable } from "stream";
1
3
  import { BaseParameters } from "../../parameters/index";
2
4
  import { FileType } from "./file-type";
3
5
  export declare class UploadFileParameters extends BaseParameters {
4
6
  setDirective(key: string, value: string): UploadFileParameters;
5
- setFile(file: string): UploadFileParameters;
7
+ setFile(filePath: string): UploadFileParameters;
8
+ setFileFromLocalFilePath(filePath: string): UploadFileParameters;
9
+ setFileContent(fileContent: Readable): UploadFileParameters;
6
10
  setFileType(fileType: FileType): UploadFileParameters;
7
11
  setFileUri(fileUri: string): UploadFileParameters;
8
12
  }
@@ -1,14 +1,42 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
2
21
  Object.defineProperty(exports, "__esModule", { value: true });
3
22
  exports.UploadFileParameters = void 0;
23
+ const fs = __importStar(require("fs"));
4
24
  const index_1 = require("../../parameters/index");
5
25
  class UploadFileParameters extends index_1.BaseParameters {
6
26
  setDirective(key, value) {
7
27
  this.set(`smartling.${key}`, value);
8
28
  return this;
9
29
  }
10
- setFile(file) {
11
- this.set("file", file);
30
+ setFile(filePath) {
31
+ this.set("file", fs.createReadStream(fs.realpathSync(filePath)));
32
+ return this;
33
+ }
34
+ setFileFromLocalFilePath(filePath) {
35
+ this.set("file", fs.createReadStream(fs.realpathSync(filePath)));
36
+ return this;
37
+ }
38
+ setFileContent(fileContent) {
39
+ this.set("file", fileContent);
12
40
  return this;
13
41
  }
14
42
  setFileType(fileType) {
@@ -1 +1 @@
1
- {"version":3,"file":"upload-file-parameters.js","sourceRoot":"","sources":["../../../../api/files/params/upload-file-parameters.ts"],"names":[],"mappings":";;;AAAA,kDAAwD;AAGxD,MAAa,oBAAqB,SAAQ,sBAAc;IACpD,YAAY,CAAC,GAAW,EAAE,KAAa;QACnC,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;QAEpC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,CAAC,IAAY;QAChB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,WAAW,CAAC,QAAkB;QAC1B,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,UAAU,CAAC,OAAe;QACtB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AArBD,oDAqBC"}
1
+ {"version":3,"file":"upload-file-parameters.js","sourceRoot":"","sources":["../../../../api/files/params/upload-file-parameters.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AAEzB,kDAAwD;AAGxD,MAAa,oBAAqB,SAAQ,sBAAc;IACpD,YAAY,CAAC,GAAW,EAAE,KAAa;QACnC,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;QAEpC,OAAO,IAAI,CAAC;IAChB,CAAC;IAOD,OAAO,CAAC,QAAgB;QACpB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,gBAAgB,CAChC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAC5B,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,wBAAwB,CAAC,QAAgB;QACrC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,gBAAgB,CAChC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAC5B,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,cAAc,CAAC,WAAqB;QAChC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAE9B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,WAAW,CAAC,QAAkB;QAC1B,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,UAAU,CAAC,OAAe;QACtB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAzCD,oDAyCC"}
@@ -1,23 +1,4 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
2
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
22
3
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
23
4
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -32,7 +13,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
32
13
  };
33
14
  Object.defineProperty(exports, "__esModule", { value: true });
34
15
  exports.SmartlingJobBatchesApi = void 0;
35
- const fs = __importStar(require("fs"));
36
16
  const form_data_1 = __importDefault(require("form-data"));
37
17
  const index_1 = require("../base/index");
38
18
  class SmartlingJobBatchesApi extends index_1.SmartlingBaseApi {
@@ -45,10 +25,7 @@ class SmartlingJobBatchesApi extends index_1.SmartlingBaseApi {
45
25
  if (uri.match(/job-batches-api\/.*\/projects\/.*\/batches\/.*\/file$/g)) {
46
26
  const formData = new form_data_1.default();
47
27
  Object.keys(opts.body).forEach((key) => {
48
- if (key === "file") {
49
- formData.append(key, fs.createReadStream(fs.realpathSync(opts.body[key])));
50
- }
51
- else if (Array.isArray(opts.body[key])) {
28
+ if (Array.isArray(opts.body[key])) {
52
29
  opts.body[key].forEach((value) => {
53
30
  formData.append(`${key}[]`, value);
54
31
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../api/job-batches/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../api/job-batches/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,0DAAiC;AACjC,yCAAiD;AAUjD,MAAa,sBAAuB,SAAQ,wBAAgB;IACxD,YAAY,mBAA2B,EAAE,OAAyB,EAAE,MAAc;QAC9E,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,GAAG,mBAAmB,8BAA8B,CAAC;IAC3E,CAAC;IAGD,gBAAgB,CAAC,GAAW,EAAE,IAA6B;QACvD,IAAI,GAAG,CAAC,KAAK,CAAC,wDAAwD,CAAC,EAAE;YACrE,MAAM,QAAQ,GAAG,IAAI,mBAAQ,EAAE,CAAC;YAEhC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBACnC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;wBAC7B,QAAQ,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC;oBACvC,CAAC,CAAC,CAAC;iBACN;qBAAM;oBACH,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;iBACxC;YACL,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,QAAQ,CAAC,UAAU,EAAE,CAAC,cAAc,CAAC,CAAC;YACrE,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;SACxB;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAEK,WAAW,CAAC,SAAiB,EAAE,MAA6B;;YAC9D,OAAO,MAAM,IAAI,CAAC,WAAW,CACzB,MAAM,EACN,GAAG,IAAI,CAAC,UAAU,IAAI,SAAS,UAAU,EACzC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAClC,CAAC;QACN,CAAC;KAAA;IAEK,iBAAiB,CACnB,SAAiB,EAAE,QAAgB,EAAE,MAAmC;;YAExE,OAAO,MAAM,IAAI,CAAC,WAAW,CACzB,KAAK,EACL,GAAG,IAAI,CAAC,UAAU,IAAI,SAAS,YAAY,QAAQ,EAAE,EACrD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAClC,CAAC;QACN,CAAC;KAAA;IAEK,eAAe,CACjB,SAAiB,EAAE,QAAgB,EAAE,MAAiC;;YAEtE,OAAO,MAAM,IAAI,CAAC,WAAW,CACzB,KAAK,EACL,GAAG,IAAI,CAAC,UAAU,IAAI,SAAS,YAAY,QAAQ,EAAE,EACrD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAClC,CAAC;QACN,CAAC;KAAA;IAEK,eAAe,CACjB,SAAiB,EAAE,QAAgB,EAAE,MAAiC;;YAEtE,OAAO,MAAM,IAAI,CAAC,WAAW,CACzB,MAAM,EACN,GAAG,IAAI,CAAC,UAAU,IAAI,SAAS,YAAY,QAAQ,OAAO,EAC1D,MAAM,CAAC,MAAM,EAAE,CAClB,CAAC;QACN,CAAC;KAAA;IAEK,cAAc,CAAC,SAAiB,EAAE,QAAgB;;YACpD,OAAO,MAAM,IAAI,CAAC,WAAW,CACzB,KAAK,EACL,GAAG,IAAI,CAAC,UAAU,IAAI,SAAS,YAAY,QAAQ,EAAE,CACxD,CAAC;QACN,CAAC;KAAA;CACJ;AAzED,wDAyEC"}
@@ -1,3 +1,5 @@
1
+ /// <reference types="node" />
2
+ import { Readable } from "stream";
1
3
  import { BaseParameters } from "../../parameters/index";
2
4
  import { FileType } from "../../files/params/file-type";
3
5
  export declare class UploadBatchFileParameters extends BaseParameters {
@@ -5,6 +7,8 @@ export declare class UploadBatchFileParameters extends BaseParameters {
5
7
  setCallbackUrl(callbackUrl: string): UploadBatchFileParameters;
6
8
  setLocalesToApprove(localesToApprove: Array<string>): UploadBatchFileParameters;
7
9
  setFile(filePath: string): UploadBatchFileParameters;
10
+ setFileFromLocalFilePath(filePath: string): UploadBatchFileParameters;
11
+ setFileContent(fileContent: Readable): UploadBatchFileParameters;
8
12
  setFileUri(fileUri: string): UploadBatchFileParameters;
9
13
  setFileType(fileType: FileType): UploadBatchFileParameters;
10
14
  setDirective(key: string, value: string): UploadBatchFileParameters;
@@ -1,6 +1,26 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
2
21
  Object.defineProperty(exports, "__esModule", { value: true });
3
22
  exports.UploadBatchFileParameters = void 0;
23
+ const fs = __importStar(require("fs"));
4
24
  const index_1 = require("../../parameters/index");
5
25
  class UploadBatchFileParameters extends index_1.BaseParameters {
6
26
  setClientLibId(clientLibId, version) {
@@ -19,7 +39,15 @@ class UploadBatchFileParameters extends index_1.BaseParameters {
19
39
  return this;
20
40
  }
21
41
  setFile(filePath) {
22
- this.set("file", filePath);
42
+ this.set("file", fs.createReadStream(fs.realpathSync(filePath)));
43
+ return this;
44
+ }
45
+ setFileFromLocalFilePath(filePath) {
46
+ this.set("file", fs.createReadStream(fs.realpathSync(filePath)));
47
+ return this;
48
+ }
49
+ setFileContent(fileContent) {
50
+ this.set("file", fileContent);
23
51
  return this;
24
52
  }
25
53
  setFileUri(fileUri) {
@@ -1 +1 @@
1
- {"version":3,"file":"upload-batch-file-parameters.js","sourceRoot":"","sources":["../../../../api/job-batches/params/upload-batch-file-parameters.ts"],"names":[],"mappings":";;;AAAA,kDAAwD;AAGxD,MAAa,yBAA0B,SAAQ,sBAAc;IACzD,cAAc,CAAC,WAAmB,EAAE,OAAe;QAC/C,IAAI,CAAC,GAAG,CAAC,yBAAyB,EAAE,IAAI,CAAC,SAAS,CAAC;YAC/C,MAAM,EAAE,WAAW;YACnB,OAAO;SACV,CAAC,CAAC,CAAC;QAEJ,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,cAAc,CAAC,WAAmB;QAC9B,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;QAErC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,mBAAmB,CAAC,gBAA+B;QAC/C,IAAI,CAAC,GAAG,CAAC,sBAAsB,EAAE,gBAAgB,CAAC,CAAC;QAEnD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,CAAC,QAAgB;QACpB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAE3B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,UAAU,CAAC,OAAe;QACtB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAE7B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,WAAW,CAAC,QAAkB;QAC1B,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAE/B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,YAAY,CAAC,GAAW,EAAE,KAAa;QACnC,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;QAEpC,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AA7CD,8DA6CC"}
1
+ {"version":3,"file":"upload-batch-file-parameters.js","sourceRoot":"","sources":["../../../../api/job-batches/params/upload-batch-file-parameters.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AAEzB,kDAAwD;AAGxD,MAAa,yBAA0B,SAAQ,sBAAc;IACzD,cAAc,CAAC,WAAmB,EAAE,OAAe;QAC/C,IAAI,CAAC,GAAG,CAAC,yBAAyB,EAAE,IAAI,CAAC,SAAS,CAAC;YAC/C,MAAM,EAAE,WAAW;YACnB,OAAO;SACV,CAAC,CAAC,CAAC;QAEJ,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,cAAc,CAAC,WAAmB;QAC9B,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;QAErC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,mBAAmB,CAAC,gBAA+B;QAC/C,IAAI,CAAC,GAAG,CAAC,sBAAsB,EAAE,gBAAgB,CAAC,CAAC;QAEnD,OAAO,IAAI,CAAC;IAChB,CAAC;IAOD,OAAO,CAAC,QAAgB;QACpB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,gBAAgB,CAChC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAC5B,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,wBAAwB,CAAC,QAAgB;QACrC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,gBAAgB,CAChC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAC5B,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,cAAc,CAAC,WAAqB;QAChC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAE9B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,UAAU,CAAC,OAAe;QACtB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAE7B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,WAAW,CAAC,QAAkB;QAC1B,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAE/B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,YAAY,CAAC,GAAW,EAAE,KAAa;QACnC,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;QAEpC,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAlED,8DAkEC"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "smartling-api-sdk-nodejs",
3
- "version": "1.1.2",
3
+ "version": "1.2.0",
4
4
  "description": "Package for Smartling API",
5
5
  "main": "built/index.js",
6
6
  "scripts": {
@@ -40,10 +40,11 @@
40
40
  "@typescript-eslint/eslint-plugin": "^4.29.0",
41
41
  "@typescript-eslint/parser": "^4.29.0",
42
42
  "eslint": "^7.31.0",
43
- "mocha": "^9.0.3",
44
- "mocha-junit-reporter": "^2.0.0",
43
+ "mocha": "^9.1.3",
44
+ "mocha-junit-reporter": "^2.0.2",
45
45
  "nyc": "^15.1.0",
46
- "sinon": "^11.1.2"
46
+ "sinon": "^11.1.2",
47
+ "ansi-regex": "^5.0.1"
47
48
  },
48
49
  "nyc": {
49
50
  "reporter": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "smartling-api-sdk-nodejs",
3
- "version": "1.1.2",
3
+ "version": "1.2.0",
4
4
  "description": "Package for Smartling API",
5
5
  "main": "built/index.js",
6
6
  "scripts": {
@@ -40,10 +40,11 @@
40
40
  "@typescript-eslint/eslint-plugin": "^4.29.0",
41
41
  "@typescript-eslint/parser": "^4.29.0",
42
42
  "eslint": "^7.31.0",
43
- "mocha": "^9.0.3",
44
- "mocha-junit-reporter": "^2.0.0",
43
+ "mocha": "^9.1.3",
44
+ "mocha-junit-reporter": "^2.0.2",
45
45
  "nyc": "^15.1.0",
46
- "sinon": "^11.1.2"
46
+ "sinon": "^11.1.2",
47
+ "ansi-regex": "^5.0.1"
47
48
  },
48
49
  "nyc": {
49
50
  "reporter": [
@@ -1,3 +1,4 @@
1
+ import * as fs from "fs";
1
2
  import sinon from "sinon";
2
3
  import assert from "assert";
3
4
  import { SmartlingFilesApi } from "../api/files/index";
@@ -7,6 +8,7 @@ import { DownloadFileParameters } from "../api/files/params/download-file-parame
7
8
  import { UploadFileParameters } from "../api/files/params/upload-file-parameters";
8
9
  import { SmartlingAuthApi } from "../api/auth/index";
9
10
  import { FileType } from "../api/files/params/file-type";
11
+ import { streamToString } from "./stream-to-string";
10
12
 
11
13
  describe("SmartlingFilesApi class tests.", () => {
12
14
  const projectId = "testProjectId";
@@ -133,11 +135,11 @@ describe("SmartlingFilesApi class tests.", () => {
133
135
  );
134
136
  });
135
137
 
136
- it("Upload file", async () => {
138
+ it("Upload file: from disk", async () => {
137
139
  const params = new UploadFileParameters();
138
140
 
139
141
  params
140
- .setFile("./test/data/file.xml")
142
+ .setFileFromLocalFilePath("./test/data/file.xml")
141
143
  .setFileUri("test-file-uri")
142
144
  .setFileType(FileType.XML)
143
145
  .setDirective("foo", "bar");
@@ -165,6 +167,61 @@ describe("SmartlingFilesApi class tests.", () => {
165
167
  filesApiFetchStub.getCall(0).args[1].headers["User-Agent"],
166
168
  "test_user_agent"
167
169
  );
170
+
171
+ assert.equal(
172
+ // eslint-disable-next-line no-underscore-dangle
173
+ await streamToString(filesApiFetchStub.getCall(0).args[1].body._streams[1]),
174
+ fs.readFileSync(
175
+ fs.realpathSync("./test/data/file.xml"),
176
+ "utf8"
177
+ )
178
+ );
179
+ });
180
+
181
+ it("Upload file: as stream", async () => {
182
+ const params = new UploadFileParameters();
183
+
184
+ params
185
+ .setFileContent(fs.createReadStream(
186
+ fs.realpathSync("./test/data/file.xml"),
187
+ "utf8"
188
+ ))
189
+ .setFileUri("test-file-uri")
190
+ .setFileType(FileType.XML)
191
+ .setDirective("foo", "bar");
192
+
193
+ await filesApi.uploadFile(projectId, params);
194
+
195
+ sinon.assert.calledOnce(filesApiFetchStub);
196
+
197
+ assert.equal(
198
+ filesApiFetchStub.getCall(0).args[0],
199
+ `https://test.com/files-api/v2/projects/${projectId}/file`
200
+ );
201
+
202
+ assert.equal(
203
+ filesApiFetchStub.getCall(0).args[1].method,
204
+ "post"
205
+ );
206
+
207
+ assert.equal(
208
+ filesApiFetchStub.getCall(0).args[1].headers.Authorization,
209
+ "test_token_type test_access_token"
210
+ );
211
+
212
+ assert.equal(
213
+ filesApiFetchStub.getCall(0).args[1].headers["User-Agent"],
214
+ "test_user_agent"
215
+ );
216
+
217
+ assert.equal(
218
+ // eslint-disable-next-line no-underscore-dangle
219
+ await streamToString(filesApiFetchStub.getCall(0).args[1].body._streams[1]),
220
+ fs.readFileSync(
221
+ fs.realpathSync("./test/data/file.xml"),
222
+ "utf8"
223
+ )
224
+ );
168
225
  });
169
226
  });
170
227
  });
@@ -1,3 +1,4 @@
1
+ import * as fs from "fs";
1
2
  import sinon from "sinon";
2
3
  import assert from "assert";
3
4
  import { loggerMock, authMock, responseMock } from "./mock";
@@ -8,6 +9,7 @@ import { UploadBatchFileParameters } from "../api/job-batches/params/upload-batc
8
9
  import { FileType } from "../api/files/params/file-type";
9
10
  import { CancelBatchFileParameters } from "../api/job-batches/params/cancel-batch-file-parameters";
10
11
  import { RegisterBatchFileParameters } from "../api/job-batches/params/register-batch-file-parameters";
12
+ import { streamToString } from "./stream-to-string";
11
13
 
12
14
  describe("SmartlingJobBatchesAPI class tests.", () => {
13
15
  const projectId = "testProjectId";
@@ -115,11 +117,11 @@ describe("SmartlingJobBatchesAPI class tests.", () => {
115
117
  );
116
118
  });
117
119
 
118
- it("Upload batch file", async () => {
120
+ it("Upload batch file: from disk", async () => {
119
121
  const params = new UploadBatchFileParameters();
120
122
 
121
123
  params
122
- .setFile("./test/data/file.xml")
124
+ .setFileFromLocalFilePath("./test/data/file.xml")
123
125
  .setFileUri("test-file-uri")
124
126
  .setFileType(FileType.XML)
125
127
  .setDirective("foo", "bar")
@@ -150,6 +152,64 @@ describe("SmartlingJobBatchesAPI class tests.", () => {
150
152
  jobBatchesApiFetchStub.getCall(0).args[1].headers["User-Agent"],
151
153
  "test_user_agent"
152
154
  );
155
+
156
+ assert.equal(
157
+ // eslint-disable-next-line no-underscore-dangle
158
+ await streamToString(jobBatchesApiFetchStub.getCall(0).args[1].body._streams[1]),
159
+ fs.readFileSync(
160
+ fs.realpathSync("./test/data/file.xml"),
161
+ "utf8"
162
+ )
163
+ );
164
+ });
165
+
166
+ it("Upload batch file: as stream", async () => {
167
+ const params = new UploadBatchFileParameters();
168
+
169
+ params
170
+ .setFileContent(fs.createReadStream(
171
+ fs.realpathSync("./test/data/file.xml"),
172
+ "utf8"
173
+ ))
174
+ .setFileUri("test-file-uri")
175
+ .setFileType(FileType.XML)
176
+ .setDirective("foo", "bar")
177
+ .setLocalesToApprove(["fr-FR", "de-DE"])
178
+ .setCallbackUrl("testCallbackUrl")
179
+ .setClientLibId("clientLibId", "clientLibVersion");
180
+
181
+ await jobBatchesApi.uploadBatchFile(projectId, batchUid, params);
182
+
183
+ sinon.assert.calledOnce(jobBatchesApiFetchStub);
184
+
185
+ assert.equal(
186
+ jobBatchesApiFetchStub.getCall(0).args[0],
187
+ `https://test.com/job-batches-api/v2/projects/${projectId}/batches/${batchUid}/file`
188
+ );
189
+
190
+ assert.equal(
191
+ jobBatchesApiFetchStub.getCall(0).args[1].method,
192
+ "post"
193
+ );
194
+
195
+ assert.equal(
196
+ jobBatchesApiFetchStub.getCall(0).args[1].headers.Authorization,
197
+ "test_token_type test_access_token"
198
+ );
199
+
200
+ assert.equal(
201
+ jobBatchesApiFetchStub.getCall(0).args[1].headers["User-Agent"],
202
+ "test_user_agent"
203
+ );
204
+
205
+ assert.equal(
206
+ // eslint-disable-next-line no-underscore-dangle
207
+ await streamToString(jobBatchesApiFetchStub.getCall(0).args[1].body._streams[1]),
208
+ fs.readFileSync(
209
+ fs.realpathSync("./test/data/file.xml"),
210
+ "utf8"
211
+ )
212
+ );
153
213
  });
154
214
 
155
215
  it("Get batch status", async () => {
@@ -0,0 +1,16 @@
1
+ import { Readable } from "stream";
2
+
3
+ function streamToString(stream: Readable): Promise<string> {
4
+ const chunks = [];
5
+
6
+ stream.resume();
7
+
8
+ return new Promise((resolve, reject) => {
9
+ // eslint-disable-next-line fp/no-mutating-methods
10
+ stream.on("data", chunk => chunks.push(Buffer.from(chunk)));
11
+ stream.on("error", err => reject(err));
12
+ stream.on("end", () => resolve(Buffer.concat(chunks).toString("utf8")));
13
+ });
14
+ }
15
+
16
+ export { streamToString };