@partium/js-sdk 14.0.2 → 14.1.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 (142) hide show
  1. package/catalog/index.js +21 -1
  2. package/catalog/models/catalog-image-info.js +22 -1
  3. package/catalog/models/catalog-image.js +40 -1
  4. package/catalog/models/upsert-catalog-images-dto.js +3 -1
  5. package/catalog/models/upsert-images-result.js +3 -1
  6. package/catalog/services/images.service.js +62 -1
  7. package/core/constants/constants.js +16 -1
  8. package/core/decorators/injection-identifier.js +19 -1
  9. package/core/factories/paginated-request-service.factory.js +33 -1
  10. package/core/index.js +63 -1
  11. package/core/integration-defaults/http/fetch-api-http-error-helper.js +129 -1
  12. package/core/integration-defaults/http/file-transfer/axios-file-transfer.service.js +138 -1
  13. package/core/integration-defaults/http/file-transfer/fetch-api-file-transfer.service.js +210 -1
  14. package/core/integration-defaults/http/handle-axios-error-helper.js +79 -1
  15. package/core/integration-defaults/http/https-client/axios-https-client.service.js +182 -1
  16. package/core/integration-defaults/http/https-client/fetch-api-https-client.service.js +198 -1
  17. package/core/integration-defaults/http/js-oauth-keycloak-https.service.js +32 -1
  18. package/core/integration-defaults/js-p-file.js +36 -1
  19. package/core/integration-defaults/session/js-oauth-api-key-session.service.js +206 -1
  20. package/core/integration-defaults/session/js-oauth-keycloak-auth-config.js +64 -1
  21. package/core/integration-defaults/session/js-oauth-keycloak-session.service.js +257 -1
  22. package/core/integration-defaults/web-device-status.service.js +125 -1
  23. package/core/integration-defaults/web-file.service.js +135 -1
  24. package/core/integration-defaults/web-indexeddb.service.js +142 -1
  25. package/core/integration-defaults/web-local-storage.service.js +310 -1
  26. package/core/models/api-object.js +16 -1
  27. package/core/models/auth-config.js +72 -1
  28. package/core/models/device-info.js +34 -1
  29. package/core/models/error.js +107 -1
  30. package/core/models/formatted-string.js +14 -1
  31. package/core/models/i18n-map.js +61 -1
  32. package/core/models/i18n-string.js +35 -1
  33. package/core/models/log.js +137 -1
  34. package/core/models/organization.js +159 -1
  35. package/core/models/p-file.js +23 -1
  36. package/core/models/paginated-list.js +41 -1
  37. package/core/models/partium-config.js +43 -1
  38. package/core/models/user-token.js +11 -1
  39. package/core/models/user.js +88 -1
  40. package/core/services/backend-status.service.js +147 -1
  41. package/core/services/base-login-init.service.js +57 -1
  42. package/core/services/base.service.js +37 -1
  43. package/core/services/device-status.service.interface.js +117 -1
  44. package/core/services/file.service.interface.js +61 -1
  45. package/core/services/http/file-transfer/file-transfer.service.interface.js +125 -1
  46. package/core/services/http/https-client/https-client.service.interface.js +152 -1
  47. package/core/services/http/https.service.interface.js +294 -1
  48. package/core/services/http/oauth-https.service.js +218 -1
  49. package/core/services/local-storage.service.interface.js +378 -1
  50. package/core/services/log.service.js +139 -1
  51. package/core/services/organization.service.js +202 -1
  52. package/core/services/paginated-request.service.js +160 -1
  53. package/core/services/recent-parts.service.js +194 -1
  54. package/core/services/service-provider.js +114 -1
  55. package/core/services/session/oauth-session.service.js +104 -1
  56. package/core/services/session/session.service.interface.js +367 -1
  57. package/core/utils/general-helper.js +110 -1
  58. package/data/index.js +44 -1
  59. package/data/models/announcement.js +70 -1
  60. package/data/models/assembly-hierarchy-node-breadcrumb.js +51 -1
  61. package/data/models/assembly-hierarchy-node.js +46 -1
  62. package/data/models/attribute.js +106 -1
  63. package/data/models/csa-request-search.js +46 -1
  64. package/data/models/csa-request-status.js +51 -1
  65. package/data/models/csa-request.js +112 -1
  66. package/data/models/document.js +17 -1
  67. package/data/models/filter-key.js +36 -1
  68. package/data/models/filter-option-value.js +41 -1
  69. package/data/models/image.d.ts +6 -1
  70. package/data/models/image.js +77 -1
  71. package/data/models/inquiry.js +71 -1
  72. package/data/models/mounting-location.js +58 -1
  73. package/data/models/multiple-expert-searches.js +40 -1
  74. package/data/models/part-enrichment-data.js +50 -1
  75. package/data/models/part.js +168 -1
  76. package/data/models/shopping-cart.js +60 -1
  77. package/data/services/announcement.service.js +89 -1
  78. package/data/services/assembly-hierarchy-nodes.service.js +193 -1
  79. package/data/services/csa-helper.service.js +158 -1
  80. package/data/services/customer-service-assistance.service.js +276 -1
  81. package/data/services/filter.service.js +97 -1
  82. package/data/services/inquiry.service.js +68 -1
  83. package/data/services/part-attribute.service.js +118 -1
  84. package/data/services/part-enrichment.service.js +56 -1
  85. package/data/services/part.service.js +182 -1
  86. package/data/services/related-parts.service.js +83 -1
  87. package/data/services/shopping-cart.service.js +152 -1
  88. package/find/index.js +51 -1
  89. package/find/models/assets/asset.js +32 -1
  90. package/find/models/search-filter.js +205 -1
  91. package/find/models/search-input.js +3 -1
  92. package/find/models/search-output.js +3 -1
  93. package/find/models/search-result-status.js +40 -1
  94. package/find/models/search-session-log-object.js +22 -1
  95. package/find/models/search-status/cv-search-status.js +22 -1
  96. package/find/models/search-status/search-filter-status.js +36 -1
  97. package/find/models/search-status/search-status.js +56 -1
  98. package/find/models/search-status/tag-search-status.js +23 -1
  99. package/find/models/search-status/text-search-status.js +18 -1
  100. package/find/models/search-tag.js +16 -1
  101. package/find/models/smart-filter.js +49 -1
  102. package/find/models/tagable/i18n-tagable.js +37 -1
  103. package/find/models/tagable/tagable-base.js +22 -1
  104. package/find/models/tagable/tagable.js +37 -1
  105. package/find/models/text-search-config.js +70 -1
  106. package/find/models/text-search-manipulator.js +90 -1
  107. package/find/models/text-search-result-item/text-search-error.js +12 -1
  108. package/find/models/text-search-result-item/text-search-result-item-document.js +34 -1
  109. package/find/models/text-search-result-item/text-search-result-item-part.js +36 -1
  110. package/find/models/text-search-result-item/text-search-result-item-recent-query.js +35 -1
  111. package/find/models/text-search-result-item/text-search-result-item-unknown.js +38 -1
  112. package/find/models/text-search-result-item/text-search-result-item.js +22 -1
  113. package/find/services/asset.service.js +348 -1
  114. package/find/services/filter-uploaders/filter-uploader.js +3 -1
  115. package/find/services/filter-uploaders/update-filters-uploader.js +77 -1
  116. package/find/services/filter-uploaders/update-filters.model.js +7 -1
  117. package/find/services/search/cv-search.service.js +214 -1
  118. package/find/services/search/recent-text-search-queries.service.js +260 -1
  119. package/find/services/search/search-result.service.js +539 -1
  120. package/find/services/search/search.service.js +514 -1
  121. package/find/services/search/tag-search.service.js +124 -1
  122. package/find/services/search/text-search.service.js +316 -1
  123. package/find/services/search-filter.service.js +292 -1
  124. package/find/utils/search-helper.js +75 -1
  125. package/gen/sdk-version.d.ts +1 -1
  126. package/gen/sdk-version.js +5 -1
  127. package/index.js +392 -1
  128. package/management/index.js +21 -1
  129. package/management/models/api-key-list-response.js +3 -1
  130. package/management/models/api-key-type.js +9 -1
  131. package/management/models/api-key.js +3 -1
  132. package/management/services/api-key.service.js +53 -1
  133. package/ocr/index.js +20 -1
  134. package/ocr/models/detect-response.js +3 -1
  135. package/ocr/models/detected-text-entry.js +3 -1
  136. package/ocr/services/ocr.service.js +59 -1
  137. package/package.json +1 -1
  138. package/user-data/index.js +21 -1
  139. package/user-data/models/part-with-nullable.js +3 -1
  140. package/user-data/models/request-list/request-list.js +63 -1
  141. package/user-data/services/favorite/favorite.service.js +108 -1
  142. 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";var __extends=this&&this.__extends||function(){var e=function(r,t){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,r){e.__proto__=r}||function(e,r){for(var t in r)Object.prototype.hasOwnProperty.call(r,t)&&(e[t]=r[t])},e(r,t)};return function(r,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=r}e(r,t),r.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}}(),__assign=this&&this.__assign||function(){return __assign=Object.assign||function(e){for(var r,t=1,n=arguments.length;t<n;t++)for(var i in r=arguments[t])Object.prototype.hasOwnProperty.call(r,i)&&(e[i]=r[i]);return e},__assign.apply(this,arguments)},__decorate=this&&this.__decorate||function(e,r,t,n){var i,o=arguments.length,s=o<3?r:null===n?n=Object.getOwnPropertyDescriptor(r,t):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,r,t,n);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(r,t,s):i(r,t))||s);return o>3&&s&&Object.defineProperty(r,t,s),s},__awaiter=this&&this.__awaiter||function(e,r,t,n){return new(t||(t=Promise))((function(i,o){function s(e){try{c(n.next(e))}catch(e){o(e)}}function a(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var r;e.done?i(e.value):(r=e.value,r instanceof t?r:new t((function(e){e(r)}))).then(s,a)}c((n=n.apply(e,r||[])).next())}))},__generator=this&&this.__generator||function(e,r){var t,n,i,o,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(a){return function(c){return function(a){if(t)throw new TypeError("Generator is already executing.");for(;o&&(o=0,a[0]&&(s=0)),s;)try{if(t=1,n&&(i=2&a[0]?n.return:a[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,a[1])).done)return i;switch(n=0,i&&(a=[2&a[0],i.value]),a[0]){case 0:case 1:i=a;break;case 4:return s.label++,{value:a[1],done:!1};case 5:s.label++,n=a[1],a=[0];continue;case 7:a=s.ops.pop(),s.trys.pop();continue;default:if(!(i=s.trys,(i=i.length>0&&i[i.length-1])||6!==a[0]&&2!==a[0])){s=0;continue}if(3===a[0]&&(!i||a[1]>i[0]&&a[1]<i[3])){s.label=a[1];break}if(6===a[0]&&s.label<i[1]){s.label=i[1],i=a;break}if(i&&s.label<i[2]){s.label=i[2],s.ops.push(a);break}i[2]&&s.ops.pop(),s.trys.pop();continue}a=r.call(e,s)}catch(e){a=[6,e],n=0}finally{t=i=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,c])}}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.AssetServiceImpl=void 0;var rxjs_1=require("rxjs"),operators_1=require("rxjs/operators"),injection_identifier_1=require("../../core/decorators/injection-identifier"),error_1=require("../../core/models/error"),p_file_1=require("../../core/models/p-file"),base_login_init_service_1=require("../../core/services/base-login-init.service"),file_service_interface_1=require("../../core/services/file.service.interface"),file_transfer_service_interface_1=require("../../core/services/http/file-transfer/file-transfer.service.interface"),https_service_interface_1=require("../../core/services/http/https.service.interface"),log_service_1=require("../../core/services/log.service"),asset_1=require("../models/assets/asset"),core_1=require("../../core"),AssetServiceImpl=function(e){function r(r){var t=e.call(this,r)||this;return t.MAX_UPLOAD_IMAGE_WIDTH=960,t.MAX_UPLOAD_IMAGE_HEIGHT=960,t}return __extends(r,e),r.prototype.onCreate=function(){this.httpsService=this.serviceProvider.getService(https_service_interface_1.HttpsService),this.fileTransferService=this.serviceProvider.getService(file_transfer_service_interface_1.FileTransferService),this.fileService=this.serviceProvider.getService(file_service_interface_1.FileService),this.logService=this.serviceProvider.getService(log_service_1.LogServiceImpl)},r.prototype.init=function(r,t,n){return e.prototype.init.call(this,r,t,n),(0,rxjs_1.of)(void 0)},r.prototype.generateAsset=function(e,r,t){var n=this;return(0,rxjs_1.from)(this.getFileDimensions(r)).pipe((0,operators_1.mergeMap)((function(i){var o=i[0],s=i[1],a=new asset_1.Asset(r);return(0,rxjs_1.defer)((function(){return a.setStatus(asset_1.ASSET_STATUS.NEW),(0,rxjs_1.from)(n.logImageDimensions(o,s,e,t)).pipe((0,operators_1.mergeMap)((function(){return n.uploadAsset(e,a)})))})).pipe((0,operators_1.catchError)((function(e){return a.setStatus(asset_1.ASSET_STATUS.ERROR),(0,rxjs_1.throwError)(e)})))})))},r.prototype.getFileDimensions=function(e){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(r){switch(r.label){case 0:return[4,this.fileService.getFileType(e)];case 1:if(r.sent()!==p_file_1.PFileType.IMAGE)throw new error_1.SdkError(error_1.SDK_ERROR_CODES.INVALID_FILE_TYPE,{},"Wrong file type provided. Type IMAGE required.");return[4,this.fileService.getImageDimensions(e)];case 2:return[2,r.sent()]}}))}))},r.prototype.validateDimensions=function(e,r){return e<=this.MAX_UPLOAD_IMAGE_WIDTH||r<=this.MAX_UPLOAD_IMAGE_HEIGHT},r.prototype.logImageDimensions=function(e,r,t,n){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(i){return this.logService.logEvent(new core_1.EventLog({version:core_1.EVENTLOG_VERSIONS.V_2_0_0,organizationId:t,interface:(null==n?void 0:n.eventInterface)||core_1.INTERFACE.API_ACCESS,event:core_1.EVENT.ATTEMPT_UPLOAD_IMAGE_DIMENSIONS,data:__assign(__assign({},(null==n?void 0:n.searchSessionId)&&{searchSessionId:null==n?void 0:n.searchSessionId}),{width:e,height:r})})).subscribe((function(){}),(function(e){console.log("Error while sending log event ".concat(core_1.EVENT.ATTEMPT_UPLOAD_IMAGE_DIMENSIONS,": "),e)})),[2]}))}))},r.prototype.downloadImage=function(e,r,t){var n=this;return void 0===r&&(r="original"),void 0===t&&(t=https_service_interface_1.BACKEND_SERVICE.DATA),(t===https_service_interface_1.BACKEND_SERVICE.DATA?this.getImageUrl(e,r):this.getImageUrlFromFind(e)).pipe((0,operators_1.mergeMap)((function(e){return n.fileTransferService.downloadFile(e.url)})))},r.prototype.getImageUrl=function(e,r){return this.httpsService.get("images/".concat(e),null,https_service_interface_1.BACKEND_SERVICE.DATA).pipe((0,operators_1.map)((function(t){if(t.urls&&t.urls[r])return{url:t.urls[r],assetId:e};throw new error_1.SdkError(error_1.SDK_ERROR_CODES.NOT_FOUND,null,"Could not find image with id: ".concat(e," in size: ").concat(r))})))},r.prototype.getImageUrlFromFind=function(e){return this.httpsService.get("assets/".concat(e),null,https_service_interface_1.BACKEND_SERVICE.FIND).pipe((0,operators_1.map)((function(r){if(r&&r.url)return{url:r.url,assetId:e};throw new error_1.SdkError(error_1.SDK_ERROR_CODES.NOT_FOUND,null,"Could not find image with id: ".concat(e))})))},r.prototype.downloadDocument=function(e){var r=this;return this.getDocumentUrl(e).pipe((0,operators_1.mergeMap)((function(e){return r.fileTransferService.downloadFile(e.url)})))},r.prototype.getDocumentUrl=function(e){return this.httpsService.get("documents/".concat(e),null,https_service_interface_1.BACKEND_SERVICE.DATA).pipe((0,operators_1.map)((function(r){if(r.url)return{url:r.url,assetId:e};new error_1.SdkError(error_1.SDK_ERROR_CODES.NOT_FOUND,null,"Could not find document with id: ".concat(e))})))},r.prototype.uploadAsset=function(e,r){var t=this;return new rxjs_1.Observable((function(n){if(r.getStatus()!==asset_1.ASSET_STATUS.NEW){var i='Cannot upload asset, since the asset status is not "NEW".';console.log(i),n.error(new error_1.SdkError(error_1.SDK_ERROR_CODES.INVALID_ASSET_STATUS,null,i))}t.prepareAssetUpload(e,r).pipe((0,operators_1.mergeMap)((function(e){return r.setStatus(asset_1.ASSET_STATUS.UPLOADING),t.fileTransferService.uploadFile(r.file,r.uploadUrl)})),(0,operators_1.tap)((function(e){n.next({asset:r,progress:e.progress})})),(0,operators_1.mergeMap)((function(e){return e.status===file_transfer_service_interface_1.TRANSFER_STATUS.TRANSFER_FINISHED&&r.getStatus()===asset_1.ASSET_STATUS.UPLOADING?(r.setStatus(asset_1.ASSET_STATUS.UPLOADED),t.verifyAsset(r)):(0,rxjs_1.of)()})),(0,operators_1.catchError)((function(e){return r.setStatus(asset_1.ASSET_STATUS.ERROR),n.error(e),(0,rxjs_1.of)(e)}))).subscribe((function(){r.getStatus()===asset_1.ASSET_STATUS.VERIFIED&&(n.next({asset:r,progress:100}),n.complete())}))}))},r.prototype.prepareAssetUpload=function(e,r){if(r.getStatus()!==asset_1.ASSET_STATUS.NEW){var t='ERROR: Cannot prepare upload, status not "NEW".';return console.log(t),(0,rxjs_1.throwError)(new error_1.SdkError(error_1.SDK_ERROR_CODES.INVALID_ASSET_STATUS,null,t))}return r.setStatus(asset_1.ASSET_STATUS.PREPARING),this.httpsService.post("assets",{domainId:e}).pipe((0,operators_1.tap)((function(e){r.referenceId=e.assetId,r.uploadUrl=e.url,r.setStatus(asset_1.ASSET_STATUS.PREPARED)})))},r.prototype.verifyAsset=function(e){if(e.getStatus()!==asset_1.ASSET_STATUS.UPLOADED){var r='ERROR: Cannot verify asset, status not "UPLOADED".';return console.log(r),(0,rxjs_1.throwError)(new error_1.SdkError(error_1.SDK_ERROR_CODES.INVALID_ASSET_STATUS,null,r))}return e.setStatus(asset_1.ASSET_STATUS.VERIFYING),this.httpsService.post("assets/".concat(e.referenceId,"/verify"),{}).pipe((0,operators_1.tap)((function(){return e.setStatus(asset_1.ASSET_STATUS.VERIFIED)})))},r=__decorate([(0,injection_identifier_1.InjectionIdentifier)("AssetService")],r)}(base_login_init_service_1.BaseLoginInitService);exports.AssetServiceImpl=AssetServiceImpl;
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,4 @@
1
1
  // Copyright © 2022-2025 Partium, Inc. DBA Partium
2
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ //# sourceMappingURL=filter-uploader.js.map
@@ -1,2 +1,78 @@
1
1
  // Copyright © 2022-2025 Partium, Inc. DBA Partium
2
- "use strict";var __assign=this&&this.__assign||function(){return __assign=Object.assign||function(e){for(var r,t=1,a=arguments.length;t<a;t++)for(var l in r=arguments[t])Object.prototype.hasOwnProperty.call(r,l)&&(e[l]=r[l]);return e},__assign.apply(this,arguments)};Object.defineProperty(exports,"__esModule",{value:!0}),exports.UpdateFiltersUploader=void 0;var core_1=require("../../../core"),search_filter_1=require("../../models/search-filter"),update_filters_model_1=require("./update-filters.model"),UpdateFiltersUploader=function(){function e(e){this.httpsService=e}return e.prototype.reset=function(){},e.prototype.uploadFilters=function(e,r){console.log("UpdateFiltersUploader.uploadFilters() searchSessionId: ".concat(r,", filters: "),e);var t=this.createUpdateFiltersOptions(e);return this.httpsService.patch("search/".concat(r),{method:"updateFilters",options:{updateFilters:__assign({},t)}})},e.prototype.createUpdateFiltersOptions=function(e){for(var r={},t=0,a=Object.entries(e);t<a.length;t++){var l=a[t],s=l[0],i=l[1];switch(i.type){case search_filter_1.SearchFilterType.KvpHardFilter:r[update_filters_model_1.KVP_HARD_FILTERS_KEY]||(r[update_filters_model_1.KVP_HARD_FILTERS_KEY]=[]);var o=i;r[update_filters_model_1.KVP_HARD_FILTERS_KEY].push({label:o.label,values:o.values});break;case search_filter_1.SearchFilterType.IncludeExcludeFilter:var c=i;r[s]={include:c.include,exclude:c.exclude};break;case search_filter_1.SearchFilterType.CategoryFilter:var p=i;r[s]={value:Array.isArray(p.value)?p.value:[p.value]};break;default:throw new core_1.SdkError(core_1.SDK_ERROR_CODES.UNKNOWN_ERROR,null,"Can not upload search filter - unsupported SearchFilterType: ".concat(i.type," (key: ").concat(i.key,")"))}}return r},e}();exports.UpdateFiltersUploader=UpdateFiltersUploader;
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";Object.defineProperty(exports,"__esModule",{value:!0}),exports.KVP_HARD_FILTERS_KEY=void 0;var search_filter_1=require("../../models/search-filter");exports.KVP_HARD_FILTERS_KEY="hard-filters";
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