@partium/js-sdk 14.0.3 → 14.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.
- package/catalog/index.js +21 -1
- package/catalog/models/catalog-image-info.js +22 -1
- package/catalog/models/catalog-image.js +40 -1
- package/catalog/models/upsert-catalog-images-dto.js +3 -1
- package/catalog/models/upsert-images-result.js +3 -1
- package/catalog/services/images.service.js +62 -1
- package/core/constants/constants.js +16 -1
- package/core/decorators/injection-identifier.js +19 -1
- package/core/factories/paginated-request-service.factory.js +33 -1
- package/core/index.js +63 -1
- package/core/integration-defaults/http/fetch-api-http-error-helper.js +129 -1
- package/core/integration-defaults/http/file-transfer/axios-file-transfer.service.js +138 -1
- package/core/integration-defaults/http/file-transfer/fetch-api-file-transfer.service.js +210 -1
- package/core/integration-defaults/http/handle-axios-error-helper.js +79 -1
- package/core/integration-defaults/http/https-client/axios-https-client.service.js +182 -1
- package/core/integration-defaults/http/https-client/fetch-api-https-client.service.js +198 -1
- package/core/integration-defaults/http/js-oauth-keycloak-https.service.js +32 -1
- package/core/integration-defaults/js-p-file.js +36 -1
- package/core/integration-defaults/session/js-oauth-api-key-session.service.js +206 -1
- package/core/integration-defaults/session/js-oauth-keycloak-auth-config.js +64 -1
- package/core/integration-defaults/session/js-oauth-keycloak-session.service.js +257 -1
- package/core/integration-defaults/web-device-status.service.js +125 -1
- package/core/integration-defaults/web-file.service.js +135 -1
- package/core/integration-defaults/web-indexeddb.service.js +142 -1
- package/core/integration-defaults/web-local-storage.service.js +310 -1
- package/core/models/api-object.js +16 -1
- package/core/models/auth-config.js +72 -1
- package/core/models/device-info.js +34 -1
- package/core/models/error.js +107 -1
- package/core/models/formatted-string.js +14 -1
- package/core/models/i18n-map.js +61 -1
- package/core/models/i18n-string.js +35 -1
- package/core/models/log.js +137 -1
- package/core/models/organization.js +159 -1
- package/core/models/p-file.js +23 -1
- package/core/models/paginated-list.js +41 -1
- package/core/models/partium-config.js +43 -1
- package/core/models/user-token.js +11 -1
- package/core/models/user.d.ts +2 -1
- package/core/models/user.js +89 -1
- package/core/services/backend-status.service.js +147 -1
- package/core/services/base-login-init.service.js +57 -1
- package/core/services/base.service.js +37 -1
- package/core/services/device-status.service.interface.js +117 -1
- package/core/services/file.service.interface.js +61 -1
- package/core/services/http/file-transfer/file-transfer.service.interface.js +125 -1
- package/core/services/http/https-client/https-client.service.interface.js +152 -1
- package/core/services/http/https.service.interface.js +294 -1
- package/core/services/http/oauth-https.service.js +218 -1
- package/core/services/local-storage.service.interface.js +378 -1
- package/core/services/log.service.js +139 -1
- package/core/services/organization.service.js +202 -1
- package/core/services/paginated-request.service.js +160 -1
- package/core/services/recent-parts.service.js +194 -1
- package/core/services/service-provider.js +114 -1
- package/core/services/session/oauth-session.service.js +104 -1
- package/core/services/session/session.service.interface.js +367 -1
- package/core/utils/general-helper.js +110 -1
- package/data/index.js +44 -1
- package/data/models/announcement.js +70 -1
- package/data/models/assembly-hierarchy-node-breadcrumb.js +51 -1
- package/data/models/assembly-hierarchy-node.js +46 -1
- package/data/models/attribute.js +106 -1
- package/data/models/csa-request-search.js +46 -1
- package/data/models/csa-request-status.js +51 -1
- package/data/models/csa-request.js +112 -1
- package/data/models/document.js +17 -1
- package/data/models/filter-key.js +36 -1
- package/data/models/filter-option-value.js +41 -1
- package/data/models/image.d.ts +3 -1
- package/data/models/image.js +77 -1
- package/data/models/inquiry.js +71 -1
- package/data/models/mounting-location.js +58 -1
- package/data/models/multiple-expert-searches.js +40 -1
- package/data/models/part-enrichment-data.js +50 -1
- package/data/models/part.js +168 -1
- package/data/models/shopping-cart.js +60 -1
- package/data/services/announcement.service.js +89 -1
- package/data/services/assembly-hierarchy-nodes.service.js +193 -1
- package/data/services/csa-helper.service.js +158 -1
- package/data/services/customer-service-assistance.service.js +276 -1
- package/data/services/filter.service.js +97 -1
- package/data/services/inquiry.service.js +68 -1
- package/data/services/part-attribute.service.js +118 -1
- package/data/services/part-enrichment.service.js +56 -1
- package/data/services/part.service.js +182 -1
- package/data/services/related-parts.service.js +83 -1
- package/data/services/shopping-cart.service.js +152 -1
- package/find/index.js +51 -1
- package/find/models/assets/asset.js +32 -1
- package/find/models/search-filter.js +205 -1
- package/find/models/search-input.js +3 -1
- package/find/models/search-output.js +3 -1
- package/find/models/search-result-status.js +40 -1
- package/find/models/search-session-log-object.js +22 -1
- package/find/models/search-status/cv-search-status.js +22 -1
- package/find/models/search-status/search-filter-status.js +36 -1
- package/find/models/search-status/search-status.js +56 -1
- package/find/models/search-status/tag-search-status.js +23 -1
- package/find/models/search-status/text-search-status.js +18 -1
- package/find/models/search-tag.js +16 -1
- package/find/models/smart-filter.js +49 -1
- package/find/models/tagable/i18n-tagable.js +37 -1
- package/find/models/tagable/tagable-base.js +22 -1
- package/find/models/tagable/tagable.js +37 -1
- package/find/models/text-search-config.js +70 -1
- package/find/models/text-search-manipulator.js +90 -1
- package/find/models/text-search-result-item/text-search-error.js +12 -1
- package/find/models/text-search-result-item/text-search-result-item-document.js +34 -1
- package/find/models/text-search-result-item/text-search-result-item-part.js +36 -1
- package/find/models/text-search-result-item/text-search-result-item-recent-query.js +35 -1
- package/find/models/text-search-result-item/text-search-result-item-unknown.js +38 -1
- package/find/models/text-search-result-item/text-search-result-item.js +22 -1
- package/find/services/asset.service.js +348 -1
- package/find/services/filter-uploaders/filter-uploader.js +3 -1
- package/find/services/filter-uploaders/update-filters-uploader.js +77 -1
- package/find/services/filter-uploaders/update-filters.model.js +7 -1
- package/find/services/search/cv-search.service.js +214 -1
- package/find/services/search/recent-text-search-queries.service.js +260 -1
- package/find/services/search/search-result.service.js +539 -1
- package/find/services/search/search.service.js +514 -1
- package/find/services/search/tag-search.service.js +124 -1
- package/find/services/search/text-search.service.js +316 -1
- package/find/services/search-filter.service.js +292 -1
- package/find/utils/search-helper.js +75 -1
- package/gen/sdk-version.d.ts +1 -1
- package/gen/sdk-version.js +5 -1
- package/index.js +392 -1
- package/management/index.js +21 -1
- package/management/models/api-key-list-response.js +3 -1
- package/management/models/api-key-type.js +9 -1
- package/management/models/api-key.js +3 -1
- package/management/services/api-key.service.js +53 -1
- package/ocr/index.js +20 -1
- package/ocr/models/detect-response.js +3 -1
- package/ocr/models/detected-text-entry.js +3 -1
- package/ocr/services/ocr.service.js +59 -1
- package/package.json +1 -1
- package/user-data/index.js +21 -1
- package/user-data/models/part-with-nullable.js +3 -1
- package/user-data/models/request-list/request-list.js +63 -1
- package/user-data/services/favorite/favorite.service.js +108 -1
- package/user-data/services/request-list/request-list.service.js +133 -1
|
@@ -1,2 +1,349 @@
|
|
|
1
1
|
// Copyright © 2022-2025 Partium, Inc. DBA Partium
|
|
2
|
-
"use strict";
|
|
2
|
+
"use strict";
|
|
3
|
+
var __extends = (this && this.__extends) || (function () {
|
|
4
|
+
var extendStatics = function (d, b) {
|
|
5
|
+
extendStatics = Object.setPrototypeOf ||
|
|
6
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
7
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
8
|
+
return extendStatics(d, b);
|
|
9
|
+
};
|
|
10
|
+
return function (d, b) {
|
|
11
|
+
if (typeof b !== "function" && b !== null)
|
|
12
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
13
|
+
extendStatics(d, b);
|
|
14
|
+
function __() { this.constructor = d; }
|
|
15
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
16
|
+
};
|
|
17
|
+
})();
|
|
18
|
+
var __assign = (this && this.__assign) || function () {
|
|
19
|
+
__assign = Object.assign || function(t) {
|
|
20
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
21
|
+
s = arguments[i];
|
|
22
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
23
|
+
t[p] = s[p];
|
|
24
|
+
}
|
|
25
|
+
return t;
|
|
26
|
+
};
|
|
27
|
+
return __assign.apply(this, arguments);
|
|
28
|
+
};
|
|
29
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
30
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
31
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
32
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
33
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
34
|
+
};
|
|
35
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
36
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
37
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
38
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
39
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
40
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
41
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
45
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
46
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
47
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
48
|
+
function step(op) {
|
|
49
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
50
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
51
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
52
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
53
|
+
switch (op[0]) {
|
|
54
|
+
case 0: case 1: t = op; break;
|
|
55
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
56
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
57
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
58
|
+
default:
|
|
59
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
60
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
61
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
62
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
63
|
+
if (t[2]) _.ops.pop();
|
|
64
|
+
_.trys.pop(); continue;
|
|
65
|
+
}
|
|
66
|
+
op = body.call(thisArg, _);
|
|
67
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
68
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
72
|
+
exports.AssetServiceImpl = void 0;
|
|
73
|
+
var rxjs_1 = require("rxjs");
|
|
74
|
+
var operators_1 = require("rxjs/operators");
|
|
75
|
+
var injection_identifier_1 = require("../../core/decorators/injection-identifier");
|
|
76
|
+
var error_1 = require("../../core/models/error");
|
|
77
|
+
var p_file_1 = require("../../core/models/p-file");
|
|
78
|
+
var base_login_init_service_1 = require("../../core/services/base-login-init.service");
|
|
79
|
+
var file_service_interface_1 = require("../../core/services/file.service.interface");
|
|
80
|
+
var file_transfer_service_interface_1 = require("../../core/services/http/file-transfer/file-transfer.service.interface");
|
|
81
|
+
var https_service_interface_1 = require("../../core/services/http/https.service.interface");
|
|
82
|
+
var log_service_1 = require("../../core/services/log.service");
|
|
83
|
+
var asset_1 = require("../models/assets/asset");
|
|
84
|
+
var core_1 = require("../../core");
|
|
85
|
+
var AssetServiceImpl = /** @class */ (function (_super) {
|
|
86
|
+
__extends(AssetServiceImpl, _super);
|
|
87
|
+
function AssetServiceImpl(serviceProvider) {
|
|
88
|
+
var _this = _super.call(this, serviceProvider) || this;
|
|
89
|
+
_this.MAX_UPLOAD_IMAGE_WIDTH = 960;
|
|
90
|
+
_this.MAX_UPLOAD_IMAGE_HEIGHT = 960;
|
|
91
|
+
return _this;
|
|
92
|
+
}
|
|
93
|
+
AssetServiceImpl.prototype.onCreate = function () {
|
|
94
|
+
this.httpsService = this.serviceProvider.getService(https_service_interface_1.HttpsService);
|
|
95
|
+
this.fileTransferService = this.serviceProvider.getService(file_transfer_service_interface_1.FileTransferService);
|
|
96
|
+
this.fileService = this.serviceProvider.getService(file_service_interface_1.FileService);
|
|
97
|
+
this.logService = this.serviceProvider.getService(log_service_1.LogServiceImpl);
|
|
98
|
+
};
|
|
99
|
+
/**
|
|
100
|
+
* Called on login
|
|
101
|
+
*/
|
|
102
|
+
AssetServiceImpl.prototype.init = function (config, userEmail, currentOrganization$) {
|
|
103
|
+
_super.prototype.init.call(this, config, userEmail, currentOrganization$);
|
|
104
|
+
return (0, rxjs_1.of)(undefined); // resolve
|
|
105
|
+
};
|
|
106
|
+
AssetServiceImpl.prototype.generateAsset = function (searchDomainId, pFile, assetEventContext) {
|
|
107
|
+
var _this = this;
|
|
108
|
+
return (0, rxjs_1.from)(this.getFileDimensions(pFile))
|
|
109
|
+
.pipe((0, operators_1.mergeMap)(function (_a) {
|
|
110
|
+
var width = _a[0], height = _a[1];
|
|
111
|
+
var asset = new asset_1.Asset(pFile);
|
|
112
|
+
return (0, rxjs_1.defer)(function () {
|
|
113
|
+
// we use "defer" here to make the whole Observable-chain repeatable.
|
|
114
|
+
// If we would directly call .saveImageInTemp this would not be repeated if we retry the observable,
|
|
115
|
+
// and the file will be deleted in error-case, so it has to be saved again also.
|
|
116
|
+
asset.setStatus(asset_1.ASSET_STATUS.NEW); // needed for retry in error case
|
|
117
|
+
return (0, rxjs_1.from)(_this.logImageDimensions(width, height, searchDomainId, assetEventContext))
|
|
118
|
+
.pipe((0, operators_1.mergeMap)(function () { return _this.uploadAsset(searchDomainId, asset); }));
|
|
119
|
+
}).pipe((0, operators_1.catchError)(function (err) {
|
|
120
|
+
asset.setStatus(asset_1.ASSET_STATUS.ERROR);
|
|
121
|
+
return (0, rxjs_1.throwError)(err);
|
|
122
|
+
}));
|
|
123
|
+
}));
|
|
124
|
+
};
|
|
125
|
+
/**
|
|
126
|
+
* Check if the asset is an image and, in that case, log its dimensions.
|
|
127
|
+
*
|
|
128
|
+
* @param file PFile
|
|
129
|
+
* @return Promise<boolean>
|
|
130
|
+
*/
|
|
131
|
+
AssetServiceImpl.prototype.getFileDimensions = function (pFile) {
|
|
132
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
133
|
+
var fileType;
|
|
134
|
+
return __generator(this, function (_a) {
|
|
135
|
+
switch (_a.label) {
|
|
136
|
+
case 0: return [4 /*yield*/, this.fileService.getFileType(pFile)];
|
|
137
|
+
case 1:
|
|
138
|
+
fileType = _a.sent();
|
|
139
|
+
if (fileType !== p_file_1.PFileType.IMAGE) {
|
|
140
|
+
throw new error_1.SdkError(error_1.SDK_ERROR_CODES.INVALID_FILE_TYPE, {}, 'Wrong file type provided. Type IMAGE required.');
|
|
141
|
+
}
|
|
142
|
+
return [4 /*yield*/, this.fileService.getImageDimensions(pFile)];
|
|
143
|
+
case 2: return [2 /*return*/, _a.sent()];
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
};
|
|
148
|
+
/**
|
|
149
|
+
* Check if the provided dimensions are supported.
|
|
150
|
+
*
|
|
151
|
+
* @param width number
|
|
152
|
+
* @param height number
|
|
153
|
+
* @return boolean
|
|
154
|
+
*/
|
|
155
|
+
AssetServiceImpl.prototype.validateDimensions = function (width, height) {
|
|
156
|
+
// shorter side smaller or equal 960 pixels
|
|
157
|
+
return width <= this.MAX_UPLOAD_IMAGE_WIDTH || height <= this.MAX_UPLOAD_IMAGE_HEIGHT;
|
|
158
|
+
};
|
|
159
|
+
/**
|
|
160
|
+
* Log image dimensions to BE-Log service.
|
|
161
|
+
*
|
|
162
|
+
* @param width number
|
|
163
|
+
* @param height number
|
|
164
|
+
* @param searchDomainId string
|
|
165
|
+
* @param assetEventContext AssetEventContext
|
|
166
|
+
* @return Promise<void>
|
|
167
|
+
*/
|
|
168
|
+
AssetServiceImpl.prototype.logImageDimensions = function (width, height, searchDomainId, assetEventContext) {
|
|
169
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
170
|
+
return __generator(this, function (_a) {
|
|
171
|
+
this.logService.logEvent(new core_1.EventLog({
|
|
172
|
+
version: core_1.EVENTLOG_VERSIONS.V_2_0_0,
|
|
173
|
+
organizationId: searchDomainId,
|
|
174
|
+
interface: (assetEventContext === null || assetEventContext === void 0 ? void 0 : assetEventContext.eventInterface) || core_1.INTERFACE.API_ACCESS,
|
|
175
|
+
event: core_1.EVENT.ATTEMPT_UPLOAD_IMAGE_DIMENSIONS,
|
|
176
|
+
data: __assign(__assign({}, ((assetEventContext === null || assetEventContext === void 0 ? void 0 : assetEventContext.searchSessionId) && { searchSessionId: assetEventContext === null || assetEventContext === void 0 ? void 0 : assetEventContext.searchSessionId })), { width: width, height: height })
|
|
177
|
+
})).subscribe(function () {
|
|
178
|
+
// do nothing (console.log will be called in log-service)
|
|
179
|
+
}, function (error) {
|
|
180
|
+
console.log("Error while sending log event ".concat(core_1.EVENT.ATTEMPT_UPLOAD_IMAGE_DIMENSIONS, ": "), error);
|
|
181
|
+
});
|
|
182
|
+
return [2 /*return*/];
|
|
183
|
+
});
|
|
184
|
+
});
|
|
185
|
+
};
|
|
186
|
+
AssetServiceImpl.prototype.downloadImage = function (assetId, size, origin) {
|
|
187
|
+
var _this = this;
|
|
188
|
+
if (size === void 0) { size = 'original'; }
|
|
189
|
+
if (origin === void 0) { origin = https_service_interface_1.BACKEND_SERVICE.DATA; }
|
|
190
|
+
var downloadFunction$ = origin === https_service_interface_1.BACKEND_SERVICE.DATA ? this.getImageUrl(assetId, size) : this.getImageUrlFromFind(assetId);
|
|
191
|
+
return downloadFunction$.pipe((0, operators_1.mergeMap)(function (res) {
|
|
192
|
+
return _this.fileTransferService.downloadFile(res.url);
|
|
193
|
+
}));
|
|
194
|
+
};
|
|
195
|
+
/**
|
|
196
|
+
* Get the temporary download url of an image by its assetId and preferred size
|
|
197
|
+
*
|
|
198
|
+
* @param assetId the assetId of image
|
|
199
|
+
* @param size the names of the sizes this image is available in eg: "original", "thumbnail", "medium"
|
|
200
|
+
* @returns Observable that resolves with an object containing the temporary url, where the image
|
|
201
|
+
* can be downloaded and the assetId of the asset
|
|
202
|
+
*/
|
|
203
|
+
AssetServiceImpl.prototype.getImageUrl = function (assetId, size) {
|
|
204
|
+
return this.httpsService.get("images/".concat(assetId), null, https_service_interface_1.BACKEND_SERVICE.DATA).pipe((0, operators_1.map)(function (res) {
|
|
205
|
+
if (res['urls'] && res['urls'][size]) {
|
|
206
|
+
return {
|
|
207
|
+
url: res['urls'][size],
|
|
208
|
+
assetId: assetId,
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
throw new error_1.SdkError(error_1.SDK_ERROR_CODES.NOT_FOUND, null, "Could not find image with id: ".concat(assetId, " in size: ").concat(size));
|
|
212
|
+
}));
|
|
213
|
+
};
|
|
214
|
+
AssetServiceImpl.prototype.getImageUrlFromFind = function (assetId) {
|
|
215
|
+
return this.httpsService.get("assets/".concat(assetId), null, https_service_interface_1.BACKEND_SERVICE.FIND).pipe((0, operators_1.map)(function (findRes) {
|
|
216
|
+
if (findRes && findRes['url']) {
|
|
217
|
+
return {
|
|
218
|
+
url: findRes['url'],
|
|
219
|
+
assetId: assetId
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
throw new error_1.SdkError(error_1.SDK_ERROR_CODES.NOT_FOUND, null, "Could not find image with id: ".concat(assetId));
|
|
223
|
+
}));
|
|
224
|
+
};
|
|
225
|
+
AssetServiceImpl.prototype.downloadDocument = function (assetId) {
|
|
226
|
+
var _this = this;
|
|
227
|
+
return this.getDocumentUrl(assetId).pipe((0, operators_1.mergeMap)(function (res) {
|
|
228
|
+
return _this.fileTransferService.downloadFile(res.url);
|
|
229
|
+
}));
|
|
230
|
+
};
|
|
231
|
+
/**
|
|
232
|
+
* Get the temporary download url of a document by its assetId
|
|
233
|
+
*
|
|
234
|
+
* @param assetId the assetId of the document
|
|
235
|
+
* @returns Observable that resolves with an object containing the temporary url, where the document
|
|
236
|
+
* can be downloaded and the assetId of the asset
|
|
237
|
+
*/
|
|
238
|
+
AssetServiceImpl.prototype.getDocumentUrl = function (assetId) {
|
|
239
|
+
return this.httpsService.get("documents/".concat(assetId), null, https_service_interface_1.BACKEND_SERVICE.DATA).pipe((0, operators_1.map)(function (res) {
|
|
240
|
+
if (res['url']) {
|
|
241
|
+
return {
|
|
242
|
+
url: res['url'],
|
|
243
|
+
assetId: assetId,
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
new error_1.SdkError(error_1.SDK_ERROR_CODES.NOT_FOUND, null, "Could not find document with id: ".concat(assetId));
|
|
247
|
+
}));
|
|
248
|
+
};
|
|
249
|
+
/**
|
|
250
|
+
* Upload a newly created asset to the BE.
|
|
251
|
+
*
|
|
252
|
+
* @param searchDomainId Search domain to upload the asset to.
|
|
253
|
+
* @param asset the asset to upload
|
|
254
|
+
* @returns Observable that resolves with an object containing the asset-object
|
|
255
|
+
* and the current upload progress
|
|
256
|
+
*/
|
|
257
|
+
AssetServiceImpl.prototype.uploadAsset = function (searchDomainId, asset) {
|
|
258
|
+
var _this = this;
|
|
259
|
+
return new rxjs_1.Observable(function (observer) {
|
|
260
|
+
if (asset.getStatus() !== asset_1.ASSET_STATUS.NEW) {
|
|
261
|
+
var msg = 'Cannot upload asset, since the asset status is not "NEW".';
|
|
262
|
+
console.log(msg);
|
|
263
|
+
observer.error(new error_1.SdkError(error_1.SDK_ERROR_CODES.INVALID_ASSET_STATUS, null, msg));
|
|
264
|
+
}
|
|
265
|
+
// prepare asset for upload
|
|
266
|
+
_this.prepareAssetUpload(searchDomainId, asset)
|
|
267
|
+
.pipe((0, operators_1.mergeMap)(function (res) {
|
|
268
|
+
// start asset upload
|
|
269
|
+
asset.setStatus(asset_1.ASSET_STATUS.UPLOADING);
|
|
270
|
+
return _this.fileTransferService.uploadFile(asset.file, asset.uploadUrl);
|
|
271
|
+
}), (0, operators_1.tap)(function (status) {
|
|
272
|
+
// forward upload progress to subscribers
|
|
273
|
+
observer.next({
|
|
274
|
+
asset: asset,
|
|
275
|
+
progress: status.progress,
|
|
276
|
+
});
|
|
277
|
+
}), (0, operators_1.mergeMap)(function (status) {
|
|
278
|
+
if (status.status === file_transfer_service_interface_1.TRANSFER_STATUS.TRANSFER_FINISHED && asset.getStatus() === asset_1.ASSET_STATUS.UPLOADING) {
|
|
279
|
+
// asset upload finished -> verify asset
|
|
280
|
+
asset.setStatus(asset_1.ASSET_STATUS.UPLOADED);
|
|
281
|
+
return _this.verifyAsset(asset);
|
|
282
|
+
}
|
|
283
|
+
else {
|
|
284
|
+
return (0, rxjs_1.of)();
|
|
285
|
+
}
|
|
286
|
+
}), (0, operators_1.catchError)(function (error) {
|
|
287
|
+
asset.setStatus(asset_1.ASSET_STATUS.ERROR);
|
|
288
|
+
observer.error(error);
|
|
289
|
+
return (0, rxjs_1.of)(error);
|
|
290
|
+
}))
|
|
291
|
+
.subscribe(function () {
|
|
292
|
+
if (asset.getStatus() === asset_1.ASSET_STATUS.VERIFIED) {
|
|
293
|
+
observer.next({
|
|
294
|
+
asset: asset,
|
|
295
|
+
progress: 100,
|
|
296
|
+
});
|
|
297
|
+
observer.complete();
|
|
298
|
+
}
|
|
299
|
+
});
|
|
300
|
+
});
|
|
301
|
+
};
|
|
302
|
+
/**
|
|
303
|
+
* Send a request to the backend to create a new asset and retrieve the uploadUrl and
|
|
304
|
+
* Reference id. This data is then applied to the given asset object.
|
|
305
|
+
*
|
|
306
|
+
* @param searchDomainId Search domain to upload the asset to.
|
|
307
|
+
* @param asset the asset object to prepare for upload
|
|
308
|
+
* @returns Observable that resolves when the prepare-asset is finished successfully
|
|
309
|
+
*/
|
|
310
|
+
AssetServiceImpl.prototype.prepareAssetUpload = function (searchDomainId, asset) {
|
|
311
|
+
if (asset.getStatus() !== asset_1.ASSET_STATUS.NEW) {
|
|
312
|
+
var msg = 'ERROR: Cannot prepare upload, status not "NEW".';
|
|
313
|
+
console.log(msg);
|
|
314
|
+
return (0, rxjs_1.throwError)(new error_1.SdkError(error_1.SDK_ERROR_CODES.INVALID_ASSET_STATUS, null, msg));
|
|
315
|
+
}
|
|
316
|
+
asset.setStatus(asset_1.ASSET_STATUS.PREPARING);
|
|
317
|
+
return this.httpsService
|
|
318
|
+
.post('assets', { domainId: searchDomainId })
|
|
319
|
+
.pipe((0, operators_1.tap)(function (res) {
|
|
320
|
+
// prepare finished -> update asset-model
|
|
321
|
+
asset.referenceId = res['assetId'];
|
|
322
|
+
asset.uploadUrl = res['url'];
|
|
323
|
+
asset.setStatus(asset_1.ASSET_STATUS.PREPARED);
|
|
324
|
+
}));
|
|
325
|
+
};
|
|
326
|
+
/**
|
|
327
|
+
* Sends a request to the backend to verify an uploaded asset.
|
|
328
|
+
*
|
|
329
|
+
* @param asset the asset to verify
|
|
330
|
+
* @returns Observable that resolves when the verify-asset is finished successfully
|
|
331
|
+
*/
|
|
332
|
+
AssetServiceImpl.prototype.verifyAsset = function (asset) {
|
|
333
|
+
if (asset.getStatus() !== asset_1.ASSET_STATUS.UPLOADED) {
|
|
334
|
+
var msg = 'ERROR: Cannot verify asset, status not "UPLOADED".';
|
|
335
|
+
console.log(msg);
|
|
336
|
+
return (0, rxjs_1.throwError)(new error_1.SdkError(error_1.SDK_ERROR_CODES.INVALID_ASSET_STATUS, null, msg));
|
|
337
|
+
}
|
|
338
|
+
asset.setStatus(asset_1.ASSET_STATUS.VERIFYING);
|
|
339
|
+
return this.httpsService.post("assets/".concat(asset.referenceId, "/verify"), {}).pipe(
|
|
340
|
+
// asset verified -> update status
|
|
341
|
+
(0, operators_1.tap)(function () { return asset.setStatus(asset_1.ASSET_STATUS.VERIFIED); }));
|
|
342
|
+
};
|
|
343
|
+
AssetServiceImpl = __decorate([
|
|
344
|
+
(0, injection_identifier_1.InjectionIdentifier)('AssetService')
|
|
345
|
+
], AssetServiceImpl);
|
|
346
|
+
return AssetServiceImpl;
|
|
347
|
+
}(base_login_init_service_1.BaseLoginInitService));
|
|
348
|
+
exports.AssetServiceImpl = AssetServiceImpl;
|
|
349
|
+
//# sourceMappingURL=asset.service.js.map
|
|
@@ -1,2 +1,78 @@
|
|
|
1
1
|
// Copyright © 2022-2025 Partium, Inc. DBA Partium
|
|
2
|
-
"use strict";
|
|
2
|
+
"use strict";
|
|
3
|
+
var __assign = (this && this.__assign) || function () {
|
|
4
|
+
__assign = Object.assign || function(t) {
|
|
5
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
6
|
+
s = arguments[i];
|
|
7
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
8
|
+
t[p] = s[p];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
return __assign.apply(this, arguments);
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.UpdateFiltersUploader = void 0;
|
|
16
|
+
var core_1 = require("../../../core");
|
|
17
|
+
var search_filter_1 = require("../../models/search-filter");
|
|
18
|
+
var update_filters_model_1 = require("./update-filters.model");
|
|
19
|
+
/**
|
|
20
|
+
* Implementation of the FilterUploader to update the search filters on the backend
|
|
21
|
+
*/
|
|
22
|
+
var UpdateFiltersUploader = /** @class */ (function () {
|
|
23
|
+
function UpdateFiltersUploader(httpsService) {
|
|
24
|
+
this.httpsService = httpsService;
|
|
25
|
+
}
|
|
26
|
+
UpdateFiltersUploader.prototype.reset = function () { };
|
|
27
|
+
UpdateFiltersUploader.prototype.uploadFilters = function (filters, searchSessionId) {
|
|
28
|
+
console.log("UpdateFiltersUploader.uploadFilters() searchSessionId: ".concat(searchSessionId, ", filters: "), filters);
|
|
29
|
+
var options = this.createUpdateFiltersOptions(filters);
|
|
30
|
+
return this.httpsService
|
|
31
|
+
.patch("search/".concat(searchSessionId), {
|
|
32
|
+
method: 'updateFilters',
|
|
33
|
+
options: {
|
|
34
|
+
updateFilters: __assign({}, options),
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
UpdateFiltersUploader.prototype.createUpdateFiltersOptions = function (filters) {
|
|
39
|
+
var filtersToAPI = {};
|
|
40
|
+
for (var _i = 0, _a = Object.entries(filters); _i < _a.length; _i++) {
|
|
41
|
+
var _b = _a[_i], filterKey = _b[0], filter = _b[1];
|
|
42
|
+
switch (filter.type) {
|
|
43
|
+
case search_filter_1.SearchFilterType.KvpHardFilter: {
|
|
44
|
+
if (!filtersToAPI[update_filters_model_1.KVP_HARD_FILTERS_KEY]) {
|
|
45
|
+
filtersToAPI[update_filters_model_1.KVP_HARD_FILTERS_KEY] = [];
|
|
46
|
+
}
|
|
47
|
+
var kvpFilterInput = filter;
|
|
48
|
+
filtersToAPI[update_filters_model_1.KVP_HARD_FILTERS_KEY].push({
|
|
49
|
+
label: kvpFilterInput.label,
|
|
50
|
+
values: kvpFilterInput.values,
|
|
51
|
+
});
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
case search_filter_1.SearchFilterType.IncludeExcludeFilter: {
|
|
55
|
+
var includeExcludeFilterInput = filter;
|
|
56
|
+
filtersToAPI[filterKey] = {
|
|
57
|
+
include: includeExcludeFilterInput.include,
|
|
58
|
+
exclude: includeExcludeFilterInput.exclude,
|
|
59
|
+
};
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
case search_filter_1.SearchFilterType.CategoryFilter: {
|
|
63
|
+
var categoryFilterInput = filter;
|
|
64
|
+
filtersToAPI[filterKey] = {
|
|
65
|
+
value: Array.isArray(categoryFilterInput.value) ? categoryFilterInput.value : [categoryFilterInput.value],
|
|
66
|
+
};
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
default:
|
|
70
|
+
throw new core_1.SdkError(core_1.SDK_ERROR_CODES.UNKNOWN_ERROR, null, "Can not upload search filter - unsupported SearchFilterType: ".concat(filter.type, " (key: ").concat(filter.key, ")"));
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return filtersToAPI;
|
|
74
|
+
};
|
|
75
|
+
return UpdateFiltersUploader;
|
|
76
|
+
}());
|
|
77
|
+
exports.UpdateFiltersUploader = UpdateFiltersUploader;
|
|
78
|
+
//# sourceMappingURL=update-filters-uploader.js.map
|
|
@@ -1,2 +1,8 @@
|
|
|
1
1
|
// Copyright © 2022-2025 Partium, Inc. DBA Partium
|
|
2
|
-
"use strict";
|
|
2
|
+
"use strict";
|
|
3
|
+
// backend API option types
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.KVP_HARD_FILTERS_KEY = void 0;
|
|
6
|
+
var search_filter_1 = require("../../models/search-filter");
|
|
7
|
+
exports.KVP_HARD_FILTERS_KEY = 'hard-filters';
|
|
8
|
+
//# sourceMappingURL=update-filters.model.js.map
|