smartling-api-sdk-nodejs 2.27.0 → 2.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/.scannerwork/report-task.txt +2 -2
  2. package/api/base/base-api.ts +205 -0
  3. package/api/base/base-file-api.ts +23 -0
  4. package/api/base/index.ts +2 -205
  5. package/api/file-translations/index.ts +5 -24
  6. package/api/files/index.ts +39 -2
  7. package/api/files/params/download-file-base-parameters.ts +22 -0
  8. package/api/files/params/download-file-parameters.ts +2 -21
  9. package/api/files/params/download-file-with-metadata-parameters.ts +12 -0
  10. package/api/files/params/download-multiple-files-translations-parameters.ts +50 -0
  11. package/api/files/params/file-filter.ts +4 -0
  12. package/api/files/params/file-locale-mode.ts +19 -0
  13. package/api/files/params/file-locales.ts +6 -0
  14. package/api/files/params/filename-mode.ts +4 -0
  15. package/api/files/params/translation-file-name-mode.ts +18 -0
  16. package/built/api/base/base-api.d.ts +26 -0
  17. package/built/api/base/base-api.js +163 -0
  18. package/built/api/base/base-api.js.map +1 -0
  19. package/built/api/base/base-file-api.d.ts +5 -0
  20. package/built/api/base/base-file-api.js +36 -0
  21. package/built/api/base/base-file-api.js.map +1 -0
  22. package/built/api/base/index.d.ts +2 -26
  23. package/built/api/base/index.js +5 -160
  24. package/built/api/base/index.js.map +1 -1
  25. package/built/api/dto/translated-file-dto.js.map +1 -0
  26. package/built/api/file-translations/index.d.ts +3 -4
  27. package/built/api/file-translations/index.js +3 -22
  28. package/built/api/file-translations/index.js.map +1 -1
  29. package/built/api/files/index.d.ts +7 -2
  30. package/built/api/files/index.js +12 -2
  31. package/built/api/files/index.js.map +1 -1
  32. package/built/api/files/params/download-file-base-parameters.d.ts +7 -0
  33. package/built/api/files/params/download-file-base-parameters.js +20 -0
  34. package/built/api/files/params/download-file-base-parameters.js.map +1 -0
  35. package/built/api/files/params/download-file-parameters.d.ts +2 -6
  36. package/built/api/files/params/download-file-parameters.js +2 -14
  37. package/built/api/files/params/download-file-parameters.js.map +1 -1
  38. package/built/api/files/params/download-file-with-metadata-parameters.d.ts +5 -0
  39. package/built/api/files/params/download-file-with-metadata-parameters.js +15 -0
  40. package/built/api/files/params/download-file-with-metadata-parameters.js.map +1 -0
  41. package/built/api/files/params/download-multiple-files-translations-parameters.d.ts +12 -0
  42. package/built/api/files/params/download-multiple-files-translations-parameters.js +37 -0
  43. package/built/api/files/params/download-multiple-files-translations-parameters.js.map +1 -0
  44. package/built/api/files/params/file-filter.d.ts +4 -0
  45. package/built/api/files/params/file-filter.js +9 -0
  46. package/built/api/files/params/file-filter.js.map +1 -0
  47. package/built/api/files/params/file-locale-mode.d.ts +5 -0
  48. package/built/api/files/params/file-locale-mode.js +10 -0
  49. package/built/api/files/params/file-locale-mode.js.map +1 -0
  50. package/built/api/files/params/file-locales.d.ts +5 -0
  51. package/built/api/files/params/file-locales.js +3 -0
  52. package/built/api/files/params/file-locales.js.map +1 -0
  53. package/built/api/files/params/filename-mode.d.ts +4 -0
  54. package/built/api/files/params/filename-mode.js +9 -0
  55. package/built/api/files/params/filename-mode.js.map +1 -0
  56. package/built/api/files/params/translation-file-name-mode.d.ts +5 -0
  57. package/built/api/files/params/translation-file-name-mode.js +10 -0
  58. package/built/api/files/params/translation-file-name-mode.js.map +1 -0
  59. package/built/index.d.ts +9 -1
  60. package/built/index.js +9 -1
  61. package/built/index.js.map +1 -1
  62. package/built/package.json +1 -1
  63. package/index.ts +9 -1
  64. package/package.json +1 -1
  65. package/test/base-file.spec.ts +57 -0
  66. package/test/files.spec.ts +379 -0
  67. package/built/api/file-translations/dto/translated-file-dto.js.map +0 -1
  68. /package/api/{file-translations/dto → dto}/translated-file-dto.ts +0 -0
  69. /package/built/api/{file-translations/dto → dto}/translated-file-dto.d.ts +0 -0
  70. /package/built/api/{file-translations/dto → dto}/translated-file-dto.js +0 -0
@@ -0,0 +1,50 @@
1
+ import { SmartlingException } from "../../exception";
2
+ import { FileFilter } from "./file-filter";
3
+ import { FileLocaleMode } from "./file-locale-mode";
4
+ import { FileLocales } from "./file-locales";
5
+ import { TranslationFileNameMode } from "./translation-file-name-mode";
6
+ import { DownloadFileBaseParameters } from "./download-file-base-parameters";
7
+
8
+ export class DownloadMultipleFilesTranslationsParameters extends DownloadFileBaseParameters {
9
+ constructor(
10
+ files: FileLocales[]
11
+ ) {
12
+ super();
13
+
14
+ if (!files.length) {
15
+ throw new SmartlingException("At least one file is required.");
16
+ }
17
+
18
+ files.forEach((file) => {
19
+ if (!file.localeIds.length) {
20
+ throw new SmartlingException(`At least one locale is required for fileUri: ${file.fileUri}`);
21
+ }
22
+ });
23
+
24
+ this.set("files", files);
25
+ }
26
+
27
+ setFileNameMode(fileNameMode: TranslationFileNameMode): this {
28
+ this.set("fileNameMode", fileNameMode);
29
+
30
+ return this;
31
+ }
32
+
33
+ setFileLocaleMode(fileLocaleMode: FileLocaleMode): this {
34
+ this.set("localeMode", fileLocaleMode);
35
+
36
+ return this;
37
+ }
38
+
39
+ setZipFileName(zipFileName: string): this {
40
+ this.set("zipFileName", zipFileName);
41
+
42
+ return this;
43
+ }
44
+
45
+ setFileFilter(fileFilter: FileFilter): this {
46
+ this.set("fileFilter", fileFilter);
47
+
48
+ return this;
49
+ }
50
+ }
@@ -0,0 +1,4 @@
1
+ export enum FileFilter {
2
+ ALL_FILES = "all_files",
3
+ PUBLISHED_FILES_ONLY = "published_files_only"
4
+ }
@@ -0,0 +1,19 @@
1
+ export enum FileLocaleMode {
2
+ /**
3
+ * Locale code is added to the end of the file path.
4
+ * e.g. /strings/es-ES/file.properties
5
+ */
6
+ LOCALE_IN_PATH = "locale_in_path",
7
+
8
+ /**
9
+ * Locale code is added to the end of the file name.
10
+ * e.g. /strings/file_es-ES.properties
11
+ */
12
+ LOCALE_IN_NAME = "locale_in_name",
13
+
14
+ /**
15
+ * Locale code is added to both the path and the filename.
16
+ * e.g. /strings/es-ES/file_es-ES.properties
17
+ */
18
+ LOCALE_IN_NAME_AND_PATH = "locale_in_name_and_path"
19
+ }
@@ -0,0 +1,6 @@
1
+ interface FileLocales {
2
+ fileUri: string;
3
+ localeIds: string[];
4
+ }
5
+
6
+ export { FileLocales };
@@ -0,0 +1,4 @@
1
+ export enum FileNameMode {
2
+ ORIGINAL = "original",
3
+ TRANSFORMED = "transformed"
4
+ }
@@ -0,0 +1,18 @@
1
+ export enum TranslationFileNameMode {
2
+ /**
3
+ * Full original file path is used
4
+ */
5
+ UNCHANGED = "unchanged",
6
+
7
+ /**
8
+ * Remove all except the last path segment.
9
+ * e.g. /en/strings/file.properties becomes file.properties
10
+ */
11
+ TRIM_LEADING = "trim_leading",
12
+
13
+ /**
14
+ * Adds a locale folder to the file path directly before the filename.
15
+ * e.g. /strings/file.properties becomes /strings/es-ES/file.properties
16
+ */
17
+ LOCALE_LAST = "locale_last"
18
+ }
@@ -0,0 +1,26 @@
1
+ import FormData from "form-data";
2
+ import { Logger } from "../logger";
3
+ import { AccessTokenProvider } from "../auth/access-token-provider";
4
+ import { ResponseBodyType } from "./enum/response-body-type";
5
+ export declare class SmartlingBaseApi {
6
+ protected authApi: AccessTokenProvider;
7
+ protected entrypoint: string;
8
+ protected defaultClientLibId: string;
9
+ protected defaultClientVersion: string;
10
+ protected clientLibId: string;
11
+ protected clientLibVersion: string;
12
+ protected logger: Logger;
13
+ protected options: Record<string, unknown>;
14
+ constructor(logger: Logger);
15
+ setOptions(options: Record<string, unknown>): void;
16
+ getClientLibId(): string;
17
+ setClientLibId(clientLibId: string): void;
18
+ getClientLibVersion(): string;
19
+ setClientLibVersion(clientLibVersion: string): void;
20
+ fetch(uri: string, options: Record<string, unknown>): Promise<Response>;
21
+ ua(clientId: string, clientVersion: string): string;
22
+ alterRequestData(uri: string, opts: Record<string, unknown>): Record<string, unknown>;
23
+ getDefaultHeaders(headers?: Record<string, unknown>): Promise<Record<string, unknown>>;
24
+ makeRequest(verb: string, uri: string, payload?: Record<string, unknown> | string | FormData, returnRawResponseBody?: ResponseBodyType | boolean, headers?: Record<string, unknown>): Promise<any>;
25
+ static sensitiveReplacer(key: string, value: any): any;
26
+ }
@@ -0,0 +1,163 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.SmartlingBaseApi = void 0;
16
+ const merge_deep_1 = __importDefault(require("merge-deep"));
17
+ const default_user_agent_1 = __importDefault(require("default-user-agent"));
18
+ const cross_fetch_1 = __importDefault(require("cross-fetch"));
19
+ const querystring_1 = require("querystring");
20
+ const index_1 = require("../exception/index");
21
+ const response_body_type_1 = require("./enum/response-body-type");
22
+ const packageJson = require("../../package.json");
23
+ class SmartlingBaseApi {
24
+ constructor(logger) {
25
+ this.authApi = undefined;
26
+ this.defaultClientLibId = packageJson.name;
27
+ this.defaultClientVersion = packageJson.version;
28
+ this.clientLibId = this.defaultClientLibId;
29
+ this.clientLibVersion = this.defaultClientVersion;
30
+ this.logger = logger;
31
+ this.options = {};
32
+ }
33
+ setOptions(options) {
34
+ this.options = options;
35
+ }
36
+ getClientLibId() {
37
+ return this.clientLibId;
38
+ }
39
+ setClientLibId(clientLibId) {
40
+ this.clientLibId = clientLibId;
41
+ }
42
+ getClientLibVersion() {
43
+ return this.clientLibVersion;
44
+ }
45
+ setClientLibVersion(clientLibVersion) {
46
+ this.clientLibVersion = clientLibVersion;
47
+ }
48
+ fetch(uri, options) {
49
+ return __awaiter(this, void 0, void 0, function* () {
50
+ return yield (0, cross_fetch_1.default)(uri, options);
51
+ });
52
+ }
53
+ ua(clientId, clientVersion) {
54
+ return (0, default_user_agent_1.default)(clientId, clientVersion);
55
+ }
56
+ alterRequestData(uri, opts) {
57
+ return opts;
58
+ }
59
+ getDefaultHeaders(headers = {}) {
60
+ return __awaiter(this, void 0, void 0, function* () {
61
+ let defaultHeaders = {};
62
+ if (this.hasOwnProperty("authApi") && undefined !== this.authApi) {
63
+ const accessToken = yield this.authApi.getAccessToken();
64
+ const tokenType = yield this.authApi.getTokenType();
65
+ defaultHeaders = {
66
+ Authorization: `${tokenType} ${accessToken}`
67
+ };
68
+ }
69
+ defaultHeaders["Content-Type"] = "application/json";
70
+ defaultHeaders["User-Agent"] = this.ua(this.clientLibId, this.clientLibVersion);
71
+ return (0, merge_deep_1.default)(defaultHeaders, headers);
72
+ });
73
+ }
74
+ makeRequest(verb, uri, payload = null, returnRawResponseBody = false, headers = {}) {
75
+ var _a, _b;
76
+ return __awaiter(this, void 0, void 0, function* () {
77
+ const opts = (0, merge_deep_1.default)({
78
+ method: verb,
79
+ headers: yield this.getDefaultHeaders(headers)
80
+ }, this.options);
81
+ if (verb.toLowerCase() !== "get" && payload) {
82
+ opts.body = payload;
83
+ }
84
+ else if (payload) {
85
+ uri = `${uri}?${(0, querystring_1.stringify)(payload)}`;
86
+ }
87
+ let response = yield this.fetch(uri, this.alterRequestData(uri, opts));
88
+ if (response.status === 401) {
89
+ this.logger.warn("Got unexpected 401 response code, trying to re-auth carefully...");
90
+ if (this.hasOwnProperty("authApi") && this.authApi !== undefined) {
91
+ this.authApi.resetToken();
92
+ }
93
+ const defaultHeaders = yield this.getDefaultHeaders(headers);
94
+ opts.headers.Authorization = defaultHeaders.Authorization;
95
+ response = yield this.fetch(uri, this.alterRequestData(uri, opts));
96
+ }
97
+ if (response.status >= 400) {
98
+ const responseText = yield response.text();
99
+ throw new index_1.SmartlingException(`Request for ${uri} failed`, {
100
+ statusCode: response.status,
101
+ errorResponse: responseText,
102
+ requestId: response.headers.get("x-sl-requestid")
103
+ });
104
+ }
105
+ if (returnRawResponseBody === true || returnRawResponseBody === response_body_type_1.ResponseBodyType.TEXT) {
106
+ return response.text();
107
+ }
108
+ if (returnRawResponseBody === response_body_type_1.ResponseBodyType.ARRAY_BUFFER) {
109
+ return response.status === 204 ? null : response.arrayBuffer();
110
+ }
111
+ if (returnRawResponseBody === response_body_type_1.ResponseBodyType.RAW_RESPONSE) {
112
+ return response;
113
+ }
114
+ let textResponse;
115
+ try {
116
+ textResponse = yield response.text();
117
+ const jsonResponse = JSON.parse(textResponse, (key, value) => {
118
+ const dateProperties = [
119
+ "created",
120
+ "modified",
121
+ "updated",
122
+ "createdDate",
123
+ "modifiedDate",
124
+ "updatedDate",
125
+ "dueDate",
126
+ "actionTime",
127
+ "publishDate",
128
+ "lastModified",
129
+ "attemptDate"
130
+ ];
131
+ if (dateProperties.includes(key) && value) {
132
+ return new Date(value);
133
+ }
134
+ return value;
135
+ });
136
+ this.logger.debug(`Received code ${response.status}; content: ${JSON.stringify(jsonResponse, SmartlingBaseApi.sensitiveReplacer)}`);
137
+ return ((_a = jsonResponse === null || jsonResponse === void 0 ? void 0 : jsonResponse.response) === null || _a === void 0 ? void 0 : _a.data) ? (_b = jsonResponse === null || jsonResponse === void 0 ? void 0 : jsonResponse.response) === null || _b === void 0 ? void 0 : _b.data : true;
138
+ }
139
+ catch (e) {
140
+ this.logger.error(`Couldn't parse response json: ${e.toString()}`);
141
+ throw new index_1.SmartlingException("Couldn't parse response json", {
142
+ statusCode: response.status,
143
+ errorResponse: textResponse,
144
+ requestId: response.headers.get("x-sl-requestid")
145
+ });
146
+ }
147
+ });
148
+ }
149
+ static sensitiveReplacer(key, value) {
150
+ const sensitiveProperties = [
151
+ "userIdentifier",
152
+ "userSecret",
153
+ "accessToken",
154
+ "refreshToken"
155
+ ];
156
+ if (sensitiveProperties.includes(key) && value && typeof value === "string") {
157
+ return `${value.substring(0, 10)}xxxxx`;
158
+ }
159
+ return value;
160
+ }
161
+ }
162
+ exports.SmartlingBaseApi = SmartlingBaseApi;
163
+ //# sourceMappingURL=base-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-api.js","sourceRoot":"","sources":["../../../api/base/base-api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { SmartlingBaseApi } from "./base-api";
2
+ import { TranslatedFileDto } from "../dto/translated-file-dto";
3
+ export declare class SmartlingBaseFileApi extends SmartlingBaseApi {
4
+ static downloadResponseToTranslatedFileDto(response: Response): Promise<TranslatedFileDto>;
5
+ }
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.SmartlingBaseFileApi = void 0;
13
+ const base_api_1 = require("./base-api");
14
+ class SmartlingBaseFileApi extends base_api_1.SmartlingBaseApi {
15
+ static downloadResponseToTranslatedFileDto(response) {
16
+ var _a;
17
+ return __awaiter(this, void 0, void 0, function* () {
18
+ const contentType = (_a = response.headers.get("content-type")) !== null && _a !== void 0 ? _a : undefined;
19
+ const contentDisposition = response.headers.get("content-disposition");
20
+ let fileName;
21
+ if (contentDisposition) {
22
+ const fileNameMatch = contentDisposition.match(/filename="((?:[^"\\]|\\.)*)"/);
23
+ if (fileNameMatch) {
24
+ fileName = fileNameMatch[1].replace(/\\"/g, "\"");
25
+ }
26
+ }
27
+ return {
28
+ fileContent: yield response.arrayBuffer(),
29
+ fileName,
30
+ contentType
31
+ };
32
+ });
33
+ }
34
+ }
35
+ exports.SmartlingBaseFileApi = SmartlingBaseFileApi;
36
+ //# sourceMappingURL=base-file-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-file-api.js","sourceRoot":"","sources":["../../../api/base/base-file-api.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yCAA8C;AAG9C,MAAa,oBAAqB,SAAQ,2BAAgB;IACtD,MAAM,CAAO,mCAAmC,CAC5C,QAAkB;;;YAElB,MAAM,WAAW,GAAG,MAAA,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,mCAAI,SAAS,CAAC;YACtE,MAAM,kBAAkB,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;YACvE,IAAI,QAAQ,CAAC;YACb,IAAI,kBAAkB,EAAE;gBACpB,MAAM,aAAa,GAAG,kBAAkB,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;gBAC/E,IAAI,aAAa,EAAE;oBACf,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;iBACrD;aACJ;YACD,OAAO;gBACH,WAAW,EAAE,MAAM,QAAQ,CAAC,WAAW,EAAE;gBACzC,QAAQ;gBACR,WAAW;aACd,CAAC;;KACL;CACJ;AAnBD,oDAmBC"}
@@ -1,26 +1,2 @@
1
- import FormData from "form-data";
2
- import { Logger } from "../logger";
3
- import { AccessTokenProvider } from "../auth/access-token-provider";
4
- import { ResponseBodyType } from "./enum/response-body-type";
5
- export declare class SmartlingBaseApi {
6
- protected authApi: AccessTokenProvider;
7
- protected entrypoint: string;
8
- protected defaultClientLibId: string;
9
- protected defaultClientVersion: string;
10
- protected clientLibId: string;
11
- protected clientLibVersion: string;
12
- protected logger: Logger;
13
- protected options: Record<string, unknown>;
14
- constructor(logger: Logger);
15
- setOptions(options: Record<string, unknown>): void;
16
- getClientLibId(): string;
17
- setClientLibId(clientLibId: string): void;
18
- getClientLibVersion(): string;
19
- setClientLibVersion(clientLibVersion: string): void;
20
- fetch(uri: string, options: Record<string, unknown>): Promise<Response>;
21
- ua(clientId: string, clientVersion: string): string;
22
- alterRequestData(uri: string, opts: Record<string, unknown>): Record<string, unknown>;
23
- getDefaultHeaders(headers?: Record<string, unknown>): Promise<Record<string, unknown>>;
24
- makeRequest(verb: string, uri: string, payload?: Record<string, unknown> | string | FormData, returnRawResponseBody?: ResponseBodyType | boolean, headers?: Record<string, unknown>): Promise<any>;
25
- static sensitiveReplacer(key: string, value: any): any;
26
- }
1
+ export { SmartlingBaseApi } from "./base-api";
2
+ export { SmartlingBaseFileApi } from "./base-file-api";
@@ -1,163 +1,8 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
2
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.SmartlingBaseApi = void 0;
16
- const merge_deep_1 = __importDefault(require("merge-deep"));
17
- const default_user_agent_1 = __importDefault(require("default-user-agent"));
18
- const cross_fetch_1 = __importDefault(require("cross-fetch"));
19
- const querystring_1 = require("querystring");
20
- const index_1 = require("../exception/index");
21
- const response_body_type_1 = require("./enum/response-body-type");
22
- const packageJson = require("../../package.json");
23
- class SmartlingBaseApi {
24
- constructor(logger) {
25
- this.authApi = undefined;
26
- this.defaultClientLibId = packageJson.name;
27
- this.defaultClientVersion = packageJson.version;
28
- this.clientLibId = this.defaultClientLibId;
29
- this.clientLibVersion = this.defaultClientVersion;
30
- this.logger = logger;
31
- this.options = {};
32
- }
33
- setOptions(options) {
34
- this.options = options;
35
- }
36
- getClientLibId() {
37
- return this.clientLibId;
38
- }
39
- setClientLibId(clientLibId) {
40
- this.clientLibId = clientLibId;
41
- }
42
- getClientLibVersion() {
43
- return this.clientLibVersion;
44
- }
45
- setClientLibVersion(clientLibVersion) {
46
- this.clientLibVersion = clientLibVersion;
47
- }
48
- fetch(uri, options) {
49
- return __awaiter(this, void 0, void 0, function* () {
50
- return yield (0, cross_fetch_1.default)(uri, options);
51
- });
52
- }
53
- ua(clientId, clientVersion) {
54
- return (0, default_user_agent_1.default)(clientId, clientVersion);
55
- }
56
- alterRequestData(uri, opts) {
57
- return opts;
58
- }
59
- getDefaultHeaders(headers = {}) {
60
- return __awaiter(this, void 0, void 0, function* () {
61
- let defaultHeaders = {};
62
- if (this.hasOwnProperty("authApi") && undefined !== this.authApi) {
63
- const accessToken = yield this.authApi.getAccessToken();
64
- const tokenType = yield this.authApi.getTokenType();
65
- defaultHeaders = {
66
- Authorization: `${tokenType} ${accessToken}`
67
- };
68
- }
69
- defaultHeaders["Content-Type"] = "application/json";
70
- defaultHeaders["User-Agent"] = this.ua(this.clientLibId, this.clientLibVersion);
71
- return (0, merge_deep_1.default)(defaultHeaders, headers);
72
- });
73
- }
74
- makeRequest(verb, uri, payload = null, returnRawResponseBody = false, headers = {}) {
75
- var _a, _b;
76
- return __awaiter(this, void 0, void 0, function* () {
77
- const opts = (0, merge_deep_1.default)({
78
- method: verb,
79
- headers: yield this.getDefaultHeaders(headers)
80
- }, this.options);
81
- if (verb.toLowerCase() !== "get" && payload) {
82
- opts.body = payload;
83
- }
84
- else if (payload) {
85
- uri = `${uri}?${(0, querystring_1.stringify)(payload)}`;
86
- }
87
- let response = yield this.fetch(uri, this.alterRequestData(uri, opts));
88
- if (response.status === 401) {
89
- this.logger.warn("Got unexpected 401 response code, trying to re-auth carefully...");
90
- if (this.hasOwnProperty("authApi") && this.authApi !== undefined) {
91
- this.authApi.resetToken();
92
- }
93
- const defaultHeaders = yield this.getDefaultHeaders(headers);
94
- opts.headers.Authorization = defaultHeaders.Authorization;
95
- response = yield this.fetch(uri, this.alterRequestData(uri, opts));
96
- }
97
- if (response.status >= 400) {
98
- const responseText = yield response.text();
99
- throw new index_1.SmartlingException(`Request for ${uri} failed`, {
100
- statusCode: response.status,
101
- errorResponse: responseText,
102
- requestId: response.headers.get("x-sl-requestid")
103
- });
104
- }
105
- if (returnRawResponseBody === true || returnRawResponseBody === response_body_type_1.ResponseBodyType.TEXT) {
106
- return response.text();
107
- }
108
- if (returnRawResponseBody === response_body_type_1.ResponseBodyType.ARRAY_BUFFER) {
109
- return response.arrayBuffer();
110
- }
111
- if (returnRawResponseBody === response_body_type_1.ResponseBodyType.RAW_RESPONSE) {
112
- return response;
113
- }
114
- let textResponse;
115
- try {
116
- textResponse = yield response.text();
117
- const jsonResponse = JSON.parse(textResponse, (key, value) => {
118
- const dateProperties = [
119
- "created",
120
- "modified",
121
- "updated",
122
- "createdDate",
123
- "modifiedDate",
124
- "updatedDate",
125
- "dueDate",
126
- "actionTime",
127
- "publishDate",
128
- "lastModified",
129
- "attemptDate"
130
- ];
131
- if (dateProperties.includes(key) && value) {
132
- return new Date(value);
133
- }
134
- return value;
135
- });
136
- this.logger.debug(`Received code ${response.status}; content: ${JSON.stringify(jsonResponse, SmartlingBaseApi.sensitiveReplacer)}`);
137
- return ((_a = jsonResponse === null || jsonResponse === void 0 ? void 0 : jsonResponse.response) === null || _a === void 0 ? void 0 : _a.data) ? (_b = jsonResponse === null || jsonResponse === void 0 ? void 0 : jsonResponse.response) === null || _b === void 0 ? void 0 : _b.data : true;
138
- }
139
- catch (e) {
140
- this.logger.error(`Couldn't parse response json: ${e.toString()}`);
141
- throw new index_1.SmartlingException("Couldn't parse response json", {
142
- statusCode: response.status,
143
- errorResponse: textResponse,
144
- requestId: response.headers.get("x-sl-requestid")
145
- });
146
- }
147
- });
148
- }
149
- static sensitiveReplacer(key, value) {
150
- const sensitiveProperties = [
151
- "userIdentifier",
152
- "userSecret",
153
- "accessToken",
154
- "refreshToken"
155
- ];
156
- if (sensitiveProperties.includes(key) && value && typeof value === "string") {
157
- return `${value.substring(0, 10)}xxxxx`;
158
- }
159
- return value;
160
- }
161
- }
162
- exports.SmartlingBaseApi = SmartlingBaseApi;
3
+ exports.SmartlingBaseFileApi = exports.SmartlingBaseApi = void 0;
4
+ var base_api_1 = require("./base-api");
5
+ Object.defineProperty(exports, "SmartlingBaseApi", { enumerable: true, get: function () { return base_api_1.SmartlingBaseApi; } });
6
+ var base_file_api_1 = require("./base-file-api");
7
+ Object.defineProperty(exports, "SmartlingBaseFileApi", { enumerable: true, get: function () { return base_file_api_1.SmartlingBaseFileApi; } });
163
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../api/base/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../api/base/index.ts"],"names":[],"mappings":";;;AAAA,uCAA8C;AAArC,4GAAA,gBAAgB,OAAA;AACzB,iDAAuD;AAA9C,qHAAA,oBAAoB,OAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translated-file-dto.js","sourceRoot":"","sources":["../../../api/dto/translated-file-dto.ts"],"names":[],"mappings":""}
@@ -1,5 +1,5 @@
1
1
  import FormData from "form-data";
2
- import { SmartlingBaseApi } from "../base";
2
+ import { SmartlingBaseFileApi } from "../base";
3
3
  import { AccessTokenProvider } from "../auth/access-token-provider";
4
4
  import { Logger } from "../logger";
5
5
  import { FtsUploadedFileDto } from "./dto/fts-uploaded-file-dto";
@@ -9,9 +9,9 @@ import { TranslateFileParameters } from "./params/translate-file-parameters";
9
9
  import { TranslationStatusDto } from "./dto/translation-status-dto";
10
10
  import { LanguageDetectionDto } from "./dto/language-detection-dto";
11
11
  import { LanguageDetectionStatusDto } from "./dto/language-detection-status-dto";
12
- import { TranslatedFileDto } from "./dto/translated-file-dto";
12
+ import { TranslatedFileDto } from "../dto/translated-file-dto";
13
13
  import { LanguageDetectionParameters } from "./params/language-detection-parameters";
14
- export declare class SmartlingFileTranslationsApi extends SmartlingBaseApi {
14
+ export declare class SmartlingFileTranslationsApi extends SmartlingBaseFileApi {
15
15
  constructor(smartlingApiBaseUrl: string, authApi: AccessTokenProvider, logger: Logger);
16
16
  uploadFile(accountUid: string, parameters: FtsUploadFileParameters): Promise<FtsUploadedFileDto>;
17
17
  translateFile(accountUid: string, fileUid: string, params: TranslateFileParameters): Promise<TranslationDto>;
@@ -24,5 +24,4 @@ export declare class SmartlingFileTranslationsApi extends SmartlingBaseApi {
24
24
  detectFileLanguage(accountUid: string, fileUid: string, params?: LanguageDetectionParameters): Promise<LanguageDetectionDto>;
25
25
  getLanguageDetectionProgress(accountUid: string, fileUid: string, languageDetectionUid: string): Promise<LanguageDetectionStatusDto>;
26
26
  static fixContentTypeHeaderCase(form: FormData): Record<string, unknown>;
27
- private static downloadResponseToTranslatedFileDto;
28
27
  }
@@ -16,7 +16,7 @@ exports.SmartlingFileTranslationsApi = void 0;
16
16
  const form_data_1 = __importDefault(require("form-data"));
17
17
  const base_1 = require("../base");
18
18
  const response_body_type_1 = require("../base/enum/response-body-type");
19
- class SmartlingFileTranslationsApi extends base_1.SmartlingBaseApi {
19
+ class SmartlingFileTranslationsApi extends base_1.SmartlingBaseFileApi {
20
20
  constructor(smartlingApiBaseUrl, authApi, logger) {
21
21
  super(logger);
22
22
  this.authApi = authApi;
@@ -57,7 +57,7 @@ class SmartlingFileTranslationsApi extends base_1.SmartlingBaseApi {
57
57
  }
58
58
  downloadTranslatedFileWithMetadata(accountUid, fileUid, mtUid, localeId) {
59
59
  return __awaiter(this, void 0, void 0, function* () {
60
- return yield SmartlingFileTranslationsApi.downloadResponseToTranslatedFileDto(yield this.makeRequest("get", `${this.entrypoint}/${accountUid}/files/${fileUid}/mt/${mtUid}/locales/${localeId}/file`, null, response_body_type_1.ResponseBodyType.RAW_RESPONSE));
60
+ return yield base_1.SmartlingBaseFileApi.downloadResponseToTranslatedFileDto(yield this.makeRequest("get", `${this.entrypoint}/${accountUid}/files/${fileUid}/mt/${mtUid}/locales/${localeId}/file`, null, response_body_type_1.ResponseBodyType.RAW_RESPONSE));
61
61
  });
62
62
  }
63
63
  downloadTranslatedFiles(accountUid, fileUid, mtUid) {
@@ -67,7 +67,7 @@ class SmartlingFileTranslationsApi extends base_1.SmartlingBaseApi {
67
67
  }
68
68
  downloadTranslatedFilesWithMetadata(accountUid, fileUid, mtUid) {
69
69
  return __awaiter(this, void 0, void 0, function* () {
70
- return yield SmartlingFileTranslationsApi.downloadResponseToTranslatedFileDto(yield this.makeRequest("get", `${this.entrypoint}/${accountUid}/files/${fileUid}/mt/${mtUid}/locales/all/file/zip`, null, response_body_type_1.ResponseBodyType.RAW_RESPONSE));
70
+ return yield base_1.SmartlingBaseFileApi.downloadResponseToTranslatedFileDto(yield this.makeRequest("get", `${this.entrypoint}/${accountUid}/files/${fileUid}/mt/${mtUid}/locales/all/file/zip`, null, response_body_type_1.ResponseBodyType.RAW_RESPONSE));
71
71
  });
72
72
  }
73
73
  cancelFileTranslation(accountUid, fileUid, mtUid) {
@@ -91,25 +91,6 @@ class SmartlingFileTranslationsApi extends base_1.SmartlingBaseApi {
91
91
  delete headers["content-type"];
92
92
  return headers;
93
93
  }
94
- static downloadResponseToTranslatedFileDto(response) {
95
- var _a;
96
- return __awaiter(this, void 0, void 0, function* () {
97
- const contentType = (_a = response.headers.get("content-type")) !== null && _a !== void 0 ? _a : undefined;
98
- const contentDisposition = response.headers.get("content-disposition");
99
- let fileName;
100
- if (contentDisposition) {
101
- const fileNameMatch = contentDisposition.match(/filename="((?:[^"\\]|\\.)*)"/);
102
- if (fileNameMatch) {
103
- fileName = fileNameMatch[1].replace(/\\"/g, "\"");
104
- }
105
- }
106
- return {
107
- fileContent: yield response.arrayBuffer(),
108
- fileName,
109
- contentType
110
- };
111
- });
112
- }
113
94
  }
114
95
  exports.SmartlingFileTranslationsApi = SmartlingFileTranslationsApi;
115
96
  //# sourceMappingURL=index.js.map