sodas-sdk 1.1.13 → 1.4.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 (26) hide show
  1. package/dist/SODAS_SDK_CLASS/DCAT/dataService.d.ts +2 -1
  2. package/dist/SODAS_SDK_CLASS/DCAT/dataset.d.ts +2 -0
  3. package/dist/SODAS_SDK_CLASS/DCAT/datasetSeries.d.ts +3 -1
  4. package/dist/SODAS_SDK_CLASS/template/validation.d.ts +83 -0
  5. package/dist/__tests__/SODAS_SDK_CLASS/DCAT/dataService/userL.medium.test.d.ts +1 -0
  6. package/dist/__tests__/SODAS_SDK_CLASS/DCAT/dataset/rdf.medium.test.d.ts +1 -0
  7. package/dist/__tests__/SODAS_SDK_CLASS/DCAT/dataset/userL.medium.test.d.ts +1 -0
  8. package/dist/__tests__/SODAS_SDK_CLASS/DCAT/datasetSeries/rdf.medium.test.d.ts +1 -0
  9. package/dist/__tests__/SODAS_SDK_CLASS/DCAT/datasetSeries/userL.medium.test.d.ts +1 -0
  10. package/dist/__tests__/SODAS_SDK_CLASS/template/validation/CRUD.medium.test.d.ts +1 -0
  11. package/dist/__tests__/SODAS_SDK_CLASS/template/validation/LIST.big.test.d.ts +1 -0
  12. package/dist/__tests__/SODAS_SDK_CLASS/template/validation/escape.small.test.d.ts +1 -0
  13. package/dist/__tests__/SODAS_SDK_CLASS/template/validation/group.small.test.d.ts +1 -0
  14. package/dist/__tests__/SODAS_SDK_CLASS/template/validation/manageRules.small.test.d.ts +1 -0
  15. package/dist/__tests__/SODAS_SDK_CLASS/template/validation/parse.small.test.d.ts +1 -0
  16. package/dist/__tests__/utility/validation.d.ts +6 -0
  17. package/dist/index.browser.js +499 -26
  18. package/dist/index.browser.js.map +1 -1
  19. package/dist/index.legacy.browser.js +499 -26
  20. package/dist/index.legacy.browser.js.map +1 -1
  21. package/dist/index.legacy.node.cjs +499 -26
  22. package/dist/index.legacy.node.cjs.map +1 -1
  23. package/dist/index.node.js +499 -26
  24. package/dist/index.node.js.map +1 -1
  25. package/package.json +1 -1
  26. package/dist/SODAS_SDK_FILE/artifactFile.d.ts +0 -8
@@ -2320,8 +2320,12 @@ __webpack_require__.r(__webpack_exports__);
2320
2320
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2321
2321
  /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
2322
2322
  /* harmony export */ });
2323
- /* harmony import */ var _core_type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../core/type */ "./lib/core/type.ts");
2324
- /* harmony import */ var _dcatResource__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./dcatResource */ "./lib/SODAS_SDK_CLASS/DCAT/dcatResource.ts");
2323
+ /* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! axios */ "./node_modules/axios/lib/axios.js");
2324
+ /* harmony import */ var _core_error__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../core/error */ "./lib/core/error.ts");
2325
+ /* harmony import */ var _core_type__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../core/type */ "./lib/core/type.ts");
2326
+ /* harmony import */ var _core_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../core/util */ "./lib/core/util.ts");
2327
+ /* harmony import */ var _sodasSDKClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../sodasSDKClass */ "./lib/SODAS_SDK_CLASS/sodasSDKClass.ts");
2328
+ /* harmony import */ var _dcatResource__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./dcatResource */ "./lib/SODAS_SDK_CLASS/DCAT/dcatResource.ts");
2325
2329
  var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
2326
2330
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
2327
2331
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -2333,10 +2337,14 @@ var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _argume
2333
2337
  };
2334
2338
 
2335
2339
 
2340
+
2341
+
2342
+
2343
+
2336
2344
  /**
2337
2345
  * Represents a Data Service DTO.
2338
2346
  */
2339
- class DataService extends _dcatResource__WEBPACK_IMPORTED_MODULE_1__["default"] {
2347
+ class DataService extends _dcatResource__WEBPACK_IMPORTED_MODULE_4__["default"] {
2340
2348
  /**
2341
2349
  * Initializes the API URL for DataService.
2342
2350
  *
@@ -2347,6 +2355,37 @@ class DataService extends _dcatResource__WEBPACK_IMPORTED_MODULE_1__["default"]
2347
2355
  DataService.API_URL = `${url}/dataservice`;
2348
2356
  DataService.LIST_URL = `${DataService.API_URL}/list`;
2349
2357
  }
2358
+ static listUserDBRecords() {
2359
+ return __awaiter(this, arguments, void 0, function* (pageNumber = 1, pageSize = 10, sortOrder = _core_type__WEBPACK_IMPORTED_MODULE_1__.SortOrder.DESC) {
2360
+ // @ts-ignore - static helper expects SODAS_SDK_CLASS constructor type
2361
+ (0,_sodasSDKClass__WEBPACK_IMPORTED_MODULE_3__.throwErrorIfAPIURLNotSetForStatic)(this);
2362
+ const url = DataService.LIST_URL.replace(/\/list$/, "/user/list");
2363
+ let response;
2364
+ try {
2365
+ response = yield axios__WEBPACK_IMPORTED_MODULE_5__["default"].get(url, {
2366
+ headers: Object.assign({ "Content-Type": "application/json" }, (DataService.BEARER_TOKEN && {
2367
+ Authorization: `Bearer ${DataService.BEARER_TOKEN}`,
2368
+ })),
2369
+ params: { pageNumber, pageSize, sortOrder },
2370
+ });
2371
+ }
2372
+ catch (error) {
2373
+ (0,_core_util__WEBPACK_IMPORTED_MODULE_2__.handleAxiosError)(error);
2374
+ }
2375
+ if (response.data.total != null && Array.isArray(response.data.list)) {
2376
+ const list = yield Promise.all(response.data.list.map((item) => __awaiter(this, void 0, void 0, function* () {
2377
+ const dataService = new DataService();
2378
+ yield dataService.populateFromDTO(item);
2379
+ return dataService;
2380
+ })));
2381
+ return {
2382
+ total: response.data.total,
2383
+ list,
2384
+ };
2385
+ }
2386
+ throw new _core_error__WEBPACK_IMPORTED_MODULE_0__.UnexpectedResponseFormatError(response);
2387
+ });
2388
+ }
2350
2389
  toDTO() {
2351
2390
  return Object.assign(Object.assign(Object.assign({}, super.toDTO()), (this.DataServiceID && { DataServiceID: this.DataServiceID })), { EndpointURL: this.EndpointURL, EndpointDescription: this.EndpointDescription });
2352
2391
  }
@@ -2358,7 +2397,7 @@ class DataService extends _dcatResource__WEBPACK_IMPORTED_MODULE_1__["default"]
2358
2397
  yield _super.populateFromDTO.call(this, dto);
2359
2398
  const dataServiceDTO = dto;
2360
2399
  dataServiceDTO.DataServiceID &&
2361
- (this.DataServiceID = (0,_core_type__WEBPACK_IMPORTED_MODULE_0__.asID)(dataServiceDTO.DataServiceID));
2400
+ (this.DataServiceID = (0,_core_type__WEBPACK_IMPORTED_MODULE_1__.asID)(dataServiceDTO.DataServiceID));
2362
2401
  dataServiceDTO.EndpointURL &&
2363
2402
  (this.EndpointURL = dataServiceDTO.EndpointURL);
2364
2403
  dataServiceDTO.EndpointDescription &&
@@ -2433,6 +2472,61 @@ class Dataset extends _dcatResource__WEBPACK_IMPORTED_MODULE_4__["default"] {
2433
2472
  Dataset.API_URL = `${url}/dataset`;
2434
2473
  Dataset.LIST_URL = `${Dataset.API_URL}/list`;
2435
2474
  }
2475
+ static listUserDBRecords() {
2476
+ return __awaiter(this, arguments, void 0, function* (pageNumber = 1, pageSize = 10, sortOrder = _core_type__WEBPACK_IMPORTED_MODULE_1__.SortOrder.DESC) {
2477
+ // @ts-ignore - static helper expects SODAS_SDK_CLASS constructor type
2478
+ (0,_sodasSDKClass__WEBPACK_IMPORTED_MODULE_3__.throwErrorIfAPIURLNotSetForStatic)(this);
2479
+ const url = Dataset.LIST_URL.replace(/\/list$/, "/user/list");
2480
+ let response;
2481
+ try {
2482
+ response = yield axios__WEBPACK_IMPORTED_MODULE_6__["default"].get(url, {
2483
+ headers: Object.assign({ "Content-Type": "application/json" }, (Dataset.BEARER_TOKEN && {
2484
+ Authorization: `Bearer ${Dataset.BEARER_TOKEN}`,
2485
+ })),
2486
+ params: { pageNumber, pageSize, sortOrder },
2487
+ });
2488
+ }
2489
+ catch (error) {
2490
+ (0,_core_util__WEBPACK_IMPORTED_MODULE_2__.handleAxiosError)(error);
2491
+ }
2492
+ if (response.data.total != null && Array.isArray(response.data.list)) {
2493
+ const list = yield Promise.all(response.data.list.map((item) => __awaiter(this, void 0, void 0, function* () {
2494
+ const dataset = new Dataset();
2495
+ yield dataset.populateFromDTO(item);
2496
+ return dataset;
2497
+ })));
2498
+ return {
2499
+ total: response.data.total,
2500
+ list,
2501
+ };
2502
+ }
2503
+ throw new _core_error__WEBPACK_IMPORTED_MODULE_0__.UnexpectedResponseFormatError(response);
2504
+ });
2505
+ }
2506
+ static getRDF(id_1) {
2507
+ return __awaiter(this, arguments, void 0, function* (id, depth = 1) {
2508
+ // @ts-ignore - static helper expects SODAS_SDK_CLASS constructor type
2509
+ (0,_sodasSDKClass__WEBPACK_IMPORTED_MODULE_3__.throwErrorIfAPIURLNotSetForStatic)(this);
2510
+ const url = `${Dataset.API_URL}/rdf`;
2511
+ let response;
2512
+ try {
2513
+ response = yield axios__WEBPACK_IMPORTED_MODULE_6__["default"].get(url, {
2514
+ headers: Object.assign({ Accept: "text/turtle" }, (Dataset.BEARER_TOKEN && {
2515
+ Authorization: `Bearer ${Dataset.BEARER_TOKEN}`,
2516
+ })),
2517
+ params: { id, depth },
2518
+ responseType: "text",
2519
+ });
2520
+ }
2521
+ catch (error) {
2522
+ (0,_core_util__WEBPACK_IMPORTED_MODULE_2__.handleAxiosError)(error);
2523
+ }
2524
+ if (typeof response.data === "string") {
2525
+ return response.data;
2526
+ }
2527
+ throw new _core_error__WEBPACK_IMPORTED_MODULE_0__.UnexpectedResponseFormatError(response);
2528
+ });
2529
+ }
2436
2530
  static searchDBRecords(searchKeyword_1) {
2437
2531
  return __awaiter(this, arguments, void 0, function* (searchKeyword, pageNumber = 1, pageSize = 10, sortOrder = _core_type__WEBPACK_IMPORTED_MODULE_1__.SortOrder.DESC) {
2438
2532
  if (!searchKeyword || !searchKeyword.trim()) {
@@ -2757,12 +2851,13 @@ __webpack_require__.r(__webpack_exports__);
2757
2851
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2758
2852
  /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
2759
2853
  /* harmony export */ });
2760
- /* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! axios */ "./node_modules/axios/lib/axios.js");
2854
+ /* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! axios */ "./node_modules/axios/lib/axios.js");
2761
2855
  /* harmony import */ var _core_error__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../core/error */ "./lib/core/error.ts");
2762
2856
  /* harmony import */ var _core_type__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../core/type */ "./lib/core/type.ts");
2763
2857
  /* harmony import */ var _core_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../core/util */ "./lib/core/util.ts");
2764
- /* harmony import */ var _dataset__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./dataset */ "./lib/SODAS_SDK_CLASS/DCAT/dataset.ts");
2765
- /* harmony import */ var _dcatResource__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./dcatResource */ "./lib/SODAS_SDK_CLASS/DCAT/dcatResource.ts");
2858
+ /* harmony import */ var _sodasSDKClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../sodasSDKClass */ "./lib/SODAS_SDK_CLASS/sodasSDKClass.ts");
2859
+ /* harmony import */ var _dataset__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./dataset */ "./lib/SODAS_SDK_CLASS/DCAT/dataset.ts");
2860
+ /* harmony import */ var _dcatResource__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./dcatResource */ "./lib/SODAS_SDK_CLASS/DCAT/dcatResource.ts");
2766
2861
  var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
2767
2862
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
2768
2863
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -2778,10 +2873,11 @@ var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _argume
2778
2873
 
2779
2874
 
2780
2875
 
2876
+
2781
2877
  /**
2782
2878
  * Represents a series of datasets.
2783
2879
  */
2784
- class DatasetSeries extends _dcatResource__WEBPACK_IMPORTED_MODULE_4__["default"] {
2880
+ class DatasetSeries extends _dcatResource__WEBPACK_IMPORTED_MODULE_5__["default"] {
2785
2881
  static syncToCurrentHub(datasetSeries) {
2786
2882
  return __awaiter(this, void 0, void 0, function* () {
2787
2883
  var _a;
@@ -2793,7 +2889,7 @@ class DatasetSeries extends _dcatResource__WEBPACK_IMPORTED_MODULE_4__["default"
2793
2889
  }
2794
2890
  }
2795
2891
  catch (error) {
2796
- if (axios__WEBPACK_IMPORTED_MODULE_5__["default"].isAxiosError(error) && ((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) === 404) {
2892
+ if (axios__WEBPACK_IMPORTED_MODULE_6__["default"].isAxiosError(error) && ((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) === 404) {
2797
2893
  const newDatasetSeries = new DatasetSeries();
2798
2894
  yield newDatasetSeries.populateToSync(datasetSeries);
2799
2895
  yield newDatasetSeries.createDBRecord();
@@ -2854,7 +2950,7 @@ class DatasetSeries extends _dcatResource__WEBPACK_IMPORTED_MODULE_4__["default"
2854
2950
  const assetID = (0,_core_type__WEBPACK_IMPORTED_MODULE_1__.asID)(assetIDStr);
2855
2951
  // Prefer existing record by AssetID; if not found, create a new one.
2856
2952
  try {
2857
- const existing = yield _dataset__WEBPACK_IMPORTED_MODULE_3__["default"].getDBRecordByAssetID(assetID);
2953
+ const existing = yield _dataset__WEBPACK_IMPORTED_MODULE_4__["default"].getDBRecordByAssetID(assetID);
2858
2954
  if (existing) {
2859
2955
  existing.populateToSync(member);
2860
2956
  yield existing.updateDBRecord();
@@ -2862,8 +2958,8 @@ class DatasetSeries extends _dcatResource__WEBPACK_IMPORTED_MODULE_4__["default"
2862
2958
  }
2863
2959
  }
2864
2960
  catch (error) {
2865
- if (axios__WEBPACK_IMPORTED_MODULE_5__["default"].isAxiosError(error) && ((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) === 404) {
2866
- const newMember = new _dataset__WEBPACK_IMPORTED_MODULE_3__["default"]();
2961
+ if (axios__WEBPACK_IMPORTED_MODULE_6__["default"].isAxiosError(error) && ((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) === 404) {
2962
+ const newMember = new _dataset__WEBPACK_IMPORTED_MODULE_4__["default"]();
2867
2963
  newMember.populateToSync(member);
2868
2964
  yield newMember.createDBRecord();
2869
2965
  resolvedIDs.push(newMember.id);
@@ -2886,6 +2982,61 @@ class DatasetSeries extends _dcatResource__WEBPACK_IMPORTED_MODULE_4__["default"
2886
2982
  DatasetSeries.API_URL = `${url}/datasetseries`;
2887
2983
  DatasetSeries.LIST_URL = `${DatasetSeries.API_URL}/list`;
2888
2984
  }
2985
+ static getRDF(id_1) {
2986
+ return __awaiter(this, arguments, void 0, function* (id, depth = 1) {
2987
+ // @ts-ignore - static helper expects SODAS_SDK_CLASS constructor type
2988
+ (0,_sodasSDKClass__WEBPACK_IMPORTED_MODULE_3__.throwErrorIfAPIURLNotSetForStatic)(this);
2989
+ const url = `${DatasetSeries.API_URL}/rdf`;
2990
+ let response;
2991
+ try {
2992
+ response = yield axios__WEBPACK_IMPORTED_MODULE_6__["default"].get(url, {
2993
+ headers: Object.assign({ Accept: "text/turtle" }, (DatasetSeries.BEARER_TOKEN && {
2994
+ Authorization: `Bearer ${DatasetSeries.BEARER_TOKEN}`,
2995
+ })),
2996
+ params: { id, depth },
2997
+ responseType: "text",
2998
+ });
2999
+ }
3000
+ catch (error) {
3001
+ (0,_core_util__WEBPACK_IMPORTED_MODULE_2__.handleAxiosError)(error);
3002
+ }
3003
+ if (typeof response.data === "string") {
3004
+ return response.data;
3005
+ }
3006
+ throw new _core_error__WEBPACK_IMPORTED_MODULE_0__.UnexpectedResponseFormatError(response);
3007
+ });
3008
+ }
3009
+ static listUserDBRecords() {
3010
+ return __awaiter(this, arguments, void 0, function* (pageNumber = 1, pageSize = 10, sortOrder = _core_type__WEBPACK_IMPORTED_MODULE_1__.SortOrder.DESC) {
3011
+ // @ts-ignore - static helper expects SODAS_SDK_CLASS constructor type
3012
+ (0,_sodasSDKClass__WEBPACK_IMPORTED_MODULE_3__.throwErrorIfAPIURLNotSetForStatic)(this);
3013
+ const url = DatasetSeries.LIST_URL.replace(/\/list$/, "/user/list");
3014
+ let response;
3015
+ try {
3016
+ response = yield axios__WEBPACK_IMPORTED_MODULE_6__["default"].get(url, {
3017
+ headers: Object.assign({ "Content-Type": "application/json" }, (DatasetSeries.BEARER_TOKEN && {
3018
+ Authorization: `Bearer ${DatasetSeries.BEARER_TOKEN}`,
3019
+ })),
3020
+ params: { pageNumber, pageSize, sortOrder },
3021
+ });
3022
+ }
3023
+ catch (error) {
3024
+ (0,_core_util__WEBPACK_IMPORTED_MODULE_2__.handleAxiosError)(error);
3025
+ }
3026
+ if (response.data.total != null && Array.isArray(response.data.list)) {
3027
+ const list = yield Promise.all(response.data.list.map((item) => __awaiter(this, void 0, void 0, function* () {
3028
+ const datasetSeries = new DatasetSeries();
3029
+ yield datasetSeries.populateFromDTO(item);
3030
+ return datasetSeries;
3031
+ })));
3032
+ return {
3033
+ total: response.data.total,
3034
+ list,
3035
+ };
3036
+ }
3037
+ throw new _core_error__WEBPACK_IMPORTED_MODULE_0__.UnexpectedResponseFormatError(response);
3038
+ });
3039
+ }
2889
3040
  toDTO() {
2890
3041
  const result = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, super.toDTO()), (this.DatasetSeriesID && { DatasetSeriesID: this.DatasetSeriesID })), (this.InSeriesID && { InSeriesID: this.InSeriesID })), { Frequency: this.Frequency, SpatialResolutionInMeters: this.SpatialResolutionInMeters, TemporalResolution: this.TemporalResolution, Spatial: this.Spatial, Temporal: this.Temporal, WasGeneratedBy: this.WasGeneratedBy }), (this.SeriesMemberIDs && { SeriesMemberIDs: this.SeriesMemberIDs }));
2891
3042
  return result;
@@ -2921,7 +3072,7 @@ class DatasetSeries extends _dcatResource__WEBPACK_IMPORTED_MODULE_4__["default"
2921
3072
  this.SeriesMemberIDs = (0,_core_type__WEBPACK_IMPORTED_MODULE_1__.asIDs)(dto.SeriesMemberIDs);
2922
3073
  if (this.SeriesMemberIDs && this.SeriesMemberIDs.length != 0) {
2923
3074
  for (const seriesMemberID of this.SeriesMemberIDs) {
2924
- const seriesMember = yield _dataset__WEBPACK_IMPORTED_MODULE_3__["default"].getDBRecord(seriesMemberID);
3075
+ const seriesMember = yield _dataset__WEBPACK_IMPORTED_MODULE_4__["default"].getDBRecord(seriesMemberID);
2925
3076
  if (seriesMember) {
2926
3077
  this.SeriesMembers.push(seriesMember);
2927
3078
  }
@@ -2960,7 +3111,7 @@ class DatasetSeries extends _dcatResource__WEBPACK_IMPORTED_MODULE_4__["default"
2960
3111
  if (!this.SeriesMemberIDs) {
2961
3112
  this.SeriesMemberIDs = [];
2962
3113
  }
2963
- if (!(dataset instanceof _dataset__WEBPACK_IMPORTED_MODULE_3__["default"])) {
3114
+ if (!(dataset instanceof _dataset__WEBPACK_IMPORTED_MODULE_4__["default"])) {
2964
3115
  throw new _core_error__WEBPACK_IMPORTED_MODULE_0__.InvalidTypeError(dataset, "Dataset");
2965
3116
  }
2966
3117
  if (!dataset.id) {
@@ -4673,26 +4824,345 @@ class SODAS_SDK_CLASS {
4673
4824
 
4674
4825
  /***/ }),
4675
4826
 
4676
- /***/ "./lib/SODAS_SDK_FILE/artifactFile.ts":
4677
- /*!********************************************!*\
4678
- !*** ./lib/SODAS_SDK_FILE/artifactFile.ts ***!
4679
- \********************************************/
4827
+ /***/ "./lib/SODAS_SDK_CLASS/template/validation.ts":
4828
+ /*!****************************************************!*\
4829
+ !*** ./lib/SODAS_SDK_CLASS/template/validation.ts ***!
4830
+ \****************************************************/
4680
4831
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
4681
4832
 
4682
4833
  __webpack_require__.r(__webpack_exports__);
4683
4834
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
4835
+ /* harmony export */ EXPECTED_TYPE: () => (/* binding */ EXPECTED_TYPE),
4836
+ /* harmony export */ VALIDATION_TYPE: () => (/* binding */ VALIDATION_TYPE),
4684
4837
  /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
4685
4838
  /* harmony export */ });
4686
- /* harmony import */ var _sodasSDKFile__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sodasSDKFile */ "./lib/SODAS_SDK_FILE/sodasSDKFile.ts");
4839
+ /* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! axios */ "./node_modules/axios/lib/axios.js");
4840
+ /* harmony import */ var _core_error__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../core/error */ "./lib/core/error.ts");
4841
+ /* harmony import */ var _core_type__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../core/type */ "./lib/core/type.ts");
4842
+ /* harmony import */ var _core_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../core/util */ "./lib/core/util.ts");
4843
+ /* harmony import */ var _governanceClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../governanceClass */ "./lib/SODAS_SDK_CLASS/governanceClass.ts");
4844
+ /* harmony import */ var _sodasSDKClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../sodasSDKClass */ "./lib/SODAS_SDK_CLASS/sodasSDKClass.ts");
4845
+ var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
4846
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4847
+ return new (P || (P = Promise))(function (resolve, reject) {
4848
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
4849
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
4850
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
4851
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
4852
+ });
4853
+ };
4854
+
4855
+
4687
4856
 
4688
- class ArtifactFile extends _sodasSDKFile__WEBPACK_IMPORTED_MODULE_0__["default"] {
4857
+
4858
+
4859
+
4860
+ var VALIDATION_TYPE;
4861
+ (function (VALIDATION_TYPE) {
4862
+ VALIDATION_TYPE["DATA_TYPE"] = "data_type";
4863
+ VALIDATION_TYPE["RANGE"] = "range";
4864
+ VALIDATION_TYPE["PATTERN"] = "pattern";
4865
+ VALIDATION_TYPE["UNIQUENESS"] = "uniqueness";
4866
+ VALIDATION_TYPE["COMPLETENESS"] = "completeness";
4867
+ VALIDATION_TYPE["LENGTH"] = "length";
4868
+ VALIDATION_TYPE["ALLOWED_VALUES"] = "allowed_values";
4869
+ VALIDATION_TYPE["OUTLIER"] = "outlier";
4870
+ VALIDATION_TYPE["STATISTICAL"] = "statistical";
4871
+ })(VALIDATION_TYPE || (VALIDATION_TYPE = {}));
4872
+ var EXPECTED_TYPE;
4873
+ (function (EXPECTED_TYPE) {
4874
+ EXPECTED_TYPE["NUMERIC"] = "numeric";
4875
+ EXPECTED_TYPE["STRING"] = "string";
4876
+ EXPECTED_TYPE["DATETIME"] = "datetime";
4877
+ })(EXPECTED_TYPE || (EXPECTED_TYPE = {}));
4878
+ class ValidationTemplate extends _governanceClass__WEBPACK_IMPORTED_MODULE_3__["default"] {
4689
4879
  static configureAPIURL(url) {
4690
- ArtifactFile.UPLOAD_URL = `${url}/api/v1/governance/open-reference-model/resource-descriptor/artifact/upload`;
4691
- ArtifactFile.REMOVE_URL = `${url}/api/v1/governance/open-reference-model/resource-descriptor/artifact/remove?id=`;
4692
- ArtifactFile.DOWNLOAD_URL = `${url}/artifacts`;
4880
+ const PREFIX = "api/v1/governance/template";
4881
+ ValidationTemplate.API_URL = `${url}/${PREFIX}/validation`;
4882
+ ValidationTemplate.LIST_URL = `${ValidationTemplate.API_URL}/list`;
4883
+ ValidationTemplate.GET_URL = `${ValidationTemplate.API_URL}/get`;
4884
+ ValidationTemplate.CREATE_URL = `${ValidationTemplate.API_URL}/create`;
4885
+ ValidationTemplate.UPDATE_URL = `${ValidationTemplate.API_URL}/update`;
4886
+ ValidationTemplate.DELETE_URL = `${ValidationTemplate.API_URL}/remove`;
4887
+ }
4888
+ toDTO() {
4889
+ return Object.assign(Object.assign(Object.assign(Object.assign({}, super.toDTO()), { name: this.Name }), (this.ValidationRules && { validationRules: this.ValidationRules })), (this.Description && { description: this.Description }));
4890
+ }
4891
+ populateFromFormData(data) {
4892
+ return __awaiter(this, void 0, void 0, function* () {
4893
+ throw new _core_error__WEBPACK_IMPORTED_MODULE_0__.NeedToImplementError();
4894
+ });
4895
+ }
4896
+ populateFromDTO(dto) {
4897
+ const _super = Object.create(null, {
4898
+ populateFromDTO: { get: () => super.populateFromDTO }
4899
+ });
4900
+ return __awaiter(this, void 0, void 0, function* () {
4901
+ yield _super.populateFromDTO.call(this, dto);
4902
+ const validationTemplateDTO = dto;
4903
+ this.ValidationRules = validationTemplateDTO.validationRules;
4904
+ this.Name = validationTemplateDTO.name;
4905
+ this.Description = validationTemplateDTO.description;
4906
+ });
4907
+ }
4908
+ static listDBRecords() {
4909
+ return __awaiter(this, arguments, void 0, function* (pageNumber = 1, pageSize = 10, sortOrder = _core_type__WEBPACK_IMPORTED_MODULE_1__.SortOrder.DESC, vocabularyID) {
4910
+ (0,_sodasSDKClass__WEBPACK_IMPORTED_MODULE_4__.throwErrorIfAPIURLNotSetForStatic)(ValidationTemplate);
4911
+ try {
4912
+ const response = yield axios__WEBPACK_IMPORTED_MODULE_5__["default"].get(ValidationTemplate.LIST_URL, {
4913
+ params: {
4914
+ offset: (pageNumber - 1) * pageSize,
4915
+ limit: pageSize,
4916
+ ordered: sortOrder,
4917
+ vocabularyId: vocabularyID,
4918
+ },
4919
+ // headers,
4920
+ });
4921
+ return yield ValidationTemplate.listResponseToPaginatedResponse(response);
4922
+ }
4923
+ catch (error) {
4924
+ (0,_core_util__WEBPACK_IMPORTED_MODULE_2__.handleAxiosError)(error);
4925
+ }
4926
+ });
4927
+ }
4928
+ get name() {
4929
+ return this.Name;
4930
+ }
4931
+ set name(value) {
4932
+ this.Name = value;
4933
+ }
4934
+ get description() {
4935
+ return this.Description;
4936
+ }
4937
+ set description(value) {
4938
+ this.Description = value;
4939
+ }
4940
+ get validationRules() {
4941
+ return this.ValidationRules;
4942
+ }
4943
+ set validationRules(value) {
4944
+ this.ValidationRules = value;
4945
+ }
4946
+ static parseValidationRules(rawRules) {
4947
+ return rawRules.map((rule) => {
4948
+ const baseRule = {
4949
+ column: rule.column,
4950
+ name: rule.name,
4951
+ type: rule.type,
4952
+ };
4953
+ switch (rule.type) {
4954
+ case VALIDATION_TYPE.COMPLETENESS:
4955
+ return Object.assign(Object.assign({}, baseRule), { type: VALIDATION_TYPE.COMPLETENESS, min_completeness: rule.min_completeness, weight: rule.weight });
4956
+ case VALIDATION_TYPE.DATA_TYPE:
4957
+ return Object.assign(Object.assign({}, baseRule), { type: VALIDATION_TYPE.DATA_TYPE, expected_type: rule.expected_type, weight: rule.weight });
4958
+ case VALIDATION_TYPE.PATTERN:
4959
+ return Object.assign(Object.assign({}, baseRule), { type: VALIDATION_TYPE.PATTERN, pattern: rule.pattern, weight: rule.weight });
4960
+ case VALIDATION_TYPE.UNIQUENESS:
4961
+ return Object.assign(Object.assign({}, baseRule), { type: VALIDATION_TYPE.UNIQUENESS, weight: rule.weight });
4962
+ default:
4963
+ return baseRule;
4964
+ }
4965
+ });
4966
+ }
4967
+ ensureValidationRulesInitialized() {
4968
+ if (!this.ValidationRules) {
4969
+ this.ValidationRules = [];
4970
+ }
4971
+ }
4972
+ createRule(type) {
4973
+ this.ensureValidationRulesInitialized();
4974
+ let rule;
4975
+ const baseRule = {
4976
+ column: "",
4977
+ name: "",
4978
+ type,
4979
+ };
4980
+ switch (type) {
4981
+ case VALIDATION_TYPE.COMPLETENESS:
4982
+ rule = Object.assign(Object.assign({}, baseRule), { min_completeness: 0, weight: 0 });
4983
+ break;
4984
+ case VALIDATION_TYPE.DATA_TYPE:
4985
+ rule = Object.assign(Object.assign({}, baseRule), { expected_type: EXPECTED_TYPE.STRING, weight: 0 });
4986
+ break;
4987
+ case VALIDATION_TYPE.PATTERN:
4988
+ rule = Object.assign(Object.assign({}, baseRule), { pattern: "", weight: 0 });
4989
+ break;
4990
+ case VALIDATION_TYPE.UNIQUENESS:
4991
+ rule = Object.assign(Object.assign({}, baseRule), { weight: 0 });
4992
+ break;
4993
+ default:
4994
+ rule = baseRule;
4995
+ }
4996
+ this.ValidationRules.push(rule);
4997
+ return rule;
4998
+ }
4999
+ deleteRuleAt(index) {
5000
+ if (!this.ValidationRules) {
5001
+ return;
5002
+ }
5003
+ if (index < 0 || index >= this.ValidationRules.length) {
5004
+ return;
5005
+ }
5006
+ this.ValidationRules.splice(index, 1);
5007
+ }
5008
+ deleteRuleByTypeAt(type, index) {
5009
+ if (!this.ValidationRules) {
5010
+ return;
5011
+ }
5012
+ if (index < 0) {
5013
+ return;
5014
+ }
5015
+ let current = 0;
5016
+ for (let i = 0; i < this.ValidationRules.length; i++) {
5017
+ if (this.ValidationRules[i].type === type) {
5018
+ if (current === index) {
5019
+ this.ValidationRules.splice(i, 1);
5020
+ return;
5021
+ }
5022
+ current++;
5023
+ }
5024
+ }
5025
+ }
5026
+ static groupValidationRulesByColumn(rules) {
5027
+ return rules.reduce((acc, rule) => {
5028
+ const column = rule.column;
5029
+ if (!acc[column]) {
5030
+ acc[column] = [];
5031
+ }
5032
+ acc[column].push(rule);
5033
+ return acc;
5034
+ }, {});
5035
+ }
5036
+ static groupValidationRulesByType(rules) {
5037
+ return rules.reduce((acc, rule) => {
5038
+ const type = rule.type;
5039
+ if (!acc[type]) {
5040
+ acc[type] = [];
5041
+ }
5042
+ acc[type].push(rule);
5043
+ return acc;
5044
+ }, {});
5045
+ }
5046
+ /**
5047
+ * Parse escaped JSON string containing validation_rules to ValidationRule[]
5048
+ * @param escapedString - Escaped JSON string like "validation_rules\":[{\"column\":\"class_label\",...}]"
5049
+ * @returns Parsed ValidationRule array
5050
+ */
5051
+ static parseValidationRulesFromEscapedString(escapedString) {
5052
+ let processedString = escapedString.trim();
5053
+ // Remove surrounding quotes if present (e.g., '"{"validation_rules":...}"' -> '{"validation_rules":...}')
5054
+ // Check for both single and double quotes
5055
+ if (((processedString.startsWith('"') && processedString.endsWith('"')) ||
5056
+ (processedString.startsWith("'") && processedString.endsWith("'"))) &&
5057
+ processedString.length > 1) {
5058
+ processedString = processedString.slice(1, -1).trim();
5059
+ }
5060
+ // Unescape the string (replace \" with ")
5061
+ // Handle both \" and \\\" cases to avoid double-escaping issues
5062
+ let unescapedString = processedString;
5063
+ // First handle \\\" -> \"
5064
+ unescapedString = unescapedString.replace(/\\\\"/g, '\\"');
5065
+ // Then handle \" -> "
5066
+ unescapedString = unescapedString.replace(/\\"/g, '"');
5067
+ // Try to parse as JSON
5068
+ let parsed;
5069
+ try {
5070
+ // First try parsing directly
5071
+ parsed = JSON.parse(unescapedString);
5072
+ }
5073
+ catch (error) {
5074
+ // If parsing fails, try different approaches
5075
+ const trimmed = unescapedString.trim();
5076
+ // If it starts with "validation_rules" but is not wrapped in braces
5077
+ if (trimmed.startsWith('"validation_rules"') ||
5078
+ trimmed.startsWith("validation_rules")) {
5079
+ // Try wrapping in braces
5080
+ const wrapped = trimmed.startsWith('"')
5081
+ ? `{${trimmed}}`
5082
+ : `{"${trimmed}}`;
5083
+ try {
5084
+ parsed = JSON.parse(wrapped);
5085
+ }
5086
+ catch (e) {
5087
+ // If still fails, try without the leading quote
5088
+ const withoutQuote = trimmed.replace(/^"/, "");
5089
+ parsed = JSON.parse(`{"${withoutQuote}`);
5090
+ }
5091
+ }
5092
+ else if (trimmed.startsWith("{") && trimmed.endsWith("}")) {
5093
+ // Already looks like JSON object, try parsing again after trimming
5094
+ parsed = JSON.parse(trimmed);
5095
+ }
5096
+ else {
5097
+ throw error;
5098
+ }
5099
+ }
5100
+ // Extract validation_rules array
5101
+ let validationRules;
5102
+ // If it's already an array, use it directly
5103
+ if (Array.isArray(parsed)) {
5104
+ validationRules = parsed;
5105
+ }
5106
+ else if (parsed.validation_rules) {
5107
+ // If it's an object with validation_rules property
5108
+ validationRules = parsed.validation_rules;
5109
+ }
5110
+ else if (typeof parsed === "object") {
5111
+ // If it's an object but no validation_rules property, try to use it as is
5112
+ validationRules = parsed;
5113
+ }
5114
+ else {
5115
+ throw new Error("Invalid format: validation_rules not found");
5116
+ }
5117
+ // Ensure validationRules is an array
5118
+ if (!Array.isArray(validationRules)) {
5119
+ throw new Error("Invalid format: validation_rules must be an array");
5120
+ }
5121
+ const parsedRules = ValidationTemplate.parseValidationRules(validationRules);
5122
+ parsedRules._escapedString = escapedString;
5123
+ return parsedRules;
5124
+ }
5125
+ /**
5126
+ * Convert ValidationRule[] to escaped JSON string
5127
+ * @param rules - ValidationRule array to stringify
5128
+ * @returns Escaped JSON string with format: "{\"validation_rules\":[...]}"
5129
+ */
5130
+ static stringifyValidationRulesToEscapedString(rules) {
5131
+ // Convert ValidationRule[] to plain objects for JSON serialization
5132
+ const plainRules = rules.map((rule) => {
5133
+ const plainRule = {
5134
+ column: rule.column,
5135
+ name: rule.name,
5136
+ type: rule.type,
5137
+ };
5138
+ switch (rule.type) {
5139
+ case VALIDATION_TYPE.COMPLETENESS:
5140
+ const completenessRule = rule;
5141
+ return Object.assign(Object.assign({}, plainRule), { min_completeness: completenessRule.min_completeness, weight: completenessRule.weight });
5142
+ case VALIDATION_TYPE.DATA_TYPE:
5143
+ const dataTypeRule = rule;
5144
+ return Object.assign(Object.assign({}, plainRule), { expected_type: dataTypeRule.expected_type, weight: dataTypeRule.weight });
5145
+ case VALIDATION_TYPE.PATTERN:
5146
+ const patternRule = rule;
5147
+ return Object.assign(Object.assign({}, plainRule), { pattern: patternRule.pattern, weight: patternRule.weight });
5148
+ case VALIDATION_TYPE.UNIQUENESS:
5149
+ const uniquenessRule = rule;
5150
+ return Object.assign(Object.assign({}, plainRule), { weight: uniquenessRule.weight });
5151
+ default:
5152
+ return plainRule;
5153
+ }
5154
+ });
5155
+ // Create object with validation_rules property
5156
+ if (rules._escapedString) {
5157
+ return rules._escapedString;
5158
+ }
5159
+ const obj = { validation_rules: plainRules };
5160
+ const jsonString = JSON.stringify(obj);
5161
+ const escaped = jsonString.replace(/"/g, '\\"');
5162
+ return '"' + escaped + '"';
4693
5163
  }
4694
5164
  }
4695
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ArtifactFile);
5165
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ValidationTemplate);
4696
5166
 
4697
5167
 
4698
5168
  /***/ }),
@@ -4964,7 +5434,7 @@ __webpack_require__.r(__webpack_exports__);
4964
5434
  /* harmony import */ var _SODAS_SDK_CLASS_DCAT_distribution__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../SODAS_SDK_CLASS/DCAT/distribution */ "./lib/SODAS_SDK_CLASS/DCAT/distribution.ts");
4965
5435
  /* harmony import */ var _SODAS_SDK_CLASS_dictionary_term__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../SODAS_SDK_CLASS/dictionary/term */ "./lib/SODAS_SDK_CLASS/dictionary/term.ts");
4966
5436
  /* harmony import */ var _SODAS_SDK_CLASS_dictionary_vocabulary__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../SODAS_SDK_CLASS/dictionary/vocabulary */ "./lib/SODAS_SDK_CLASS/dictionary/vocabulary.ts");
4967
- /* harmony import */ var _SODAS_SDK_FILE_artifactFile__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../SODAS_SDK_FILE/artifactFile */ "./lib/SODAS_SDK_FILE/artifactFile.ts");
5437
+ /* harmony import */ var _SODAS_SDK_CLASS_template_validation__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../SODAS_SDK_CLASS/template/validation */ "./lib/SODAS_SDK_CLASS/template/validation.ts");
4968
5438
  /* harmony import */ var _SODAS_SDK_FILE_dataFile__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../SODAS_SDK_FILE/dataFile */ "./lib/SODAS_SDK_FILE/dataFile.ts");
4969
5439
  /* harmony import */ var _SODAS_SDK_FILE_thumbnailFile__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../SODAS_SDK_FILE/thumbnailFile */ "./lib/SODAS_SDK_FILE/thumbnailFile.ts");
4970
5440
  /* harmony import */ var _error__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./error */ "./lib/core/error.ts");
@@ -5054,9 +5524,9 @@ class Config {
5054
5524
  console.error("DATAHUB_API_URL not found in config");
5055
5525
  }
5056
5526
  if (this.governanceBaseUrl) {
5057
- _SODAS_SDK_FILE_artifactFile__WEBPACK_IMPORTED_MODULE_6__["default"].configureAPIURL(SLASH_DELETED_GOVERNANCE_PORTAL_API_URL);
5058
5527
  _SODAS_SDK_CLASS_dictionary_vocabulary__WEBPACK_IMPORTED_MODULE_5__["default"].configureAPIURL(SLASH_DELETED_GOVERNANCE_PORTAL_API_URL);
5059
5528
  _SODAS_SDK_CLASS_dictionary_term__WEBPACK_IMPORTED_MODULE_4__["default"].configureAPIURL(SLASH_DELETED_GOVERNANCE_PORTAL_API_URL);
5529
+ _SODAS_SDK_CLASS_template_validation__WEBPACK_IMPORTED_MODULE_6__["default"].configureAPIURL(SLASH_DELETED_GOVERNANCE_PORTAL_API_URL);
5060
5530
  }
5061
5531
  else {
5062
5532
  console.error("GOVERNANCE_API_URL not found in config");
@@ -5330,6 +5800,8 @@ __webpack_require__.r(__webpack_exports__);
5330
5800
  /* harmony import */ var _SODAS_SDK_CLASS_DCAT_distribution__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../SODAS_SDK_CLASS/DCAT/distribution */ "./lib/SODAS_SDK_CLASS/DCAT/distribution.ts");
5331
5801
  /* harmony import */ var _SODAS_SDK_CLASS_dictionary_term__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../SODAS_SDK_CLASS/dictionary/term */ "./lib/SODAS_SDK_CLASS/dictionary/term.ts");
5332
5802
  /* harmony import */ var _SODAS_SDK_CLASS_dictionary_vocabulary__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../SODAS_SDK_CLASS/dictionary/vocabulary */ "./lib/SODAS_SDK_CLASS/dictionary/vocabulary.ts");
5803
+ /* harmony import */ var _SODAS_SDK_CLASS_template_validation__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../SODAS_SDK_CLASS/template/validation */ "./lib/SODAS_SDK_CLASS/template/validation.ts");
5804
+
5333
5805
 
5334
5806
 
5335
5807
 
@@ -5345,6 +5817,7 @@ __webpack_require__.r(__webpack_exports__);
5345
5817
  function setGovernanceBearerToken(token) {
5346
5818
  _SODAS_SDK_CLASS_dictionary_vocabulary__WEBPACK_IMPORTED_MODULE_5__["default"].BEARER_TOKEN = token;
5347
5819
  _SODAS_SDK_CLASS_dictionary_term__WEBPACK_IMPORTED_MODULE_4__["default"].BEARER_TOKEN = token;
5820
+ _SODAS_SDK_CLASS_template_validation__WEBPACK_IMPORTED_MODULE_6__["default"].BEARER_TOKEN = token;
5348
5821
  }
5349
5822
  function setLegacyDatahubBearerToken(token) {
5350
5823
  _SODAS_SDK_CLASS_DCAT_dataset__WEBPACK_IMPORTED_MODULE_1__["default"].BEARER_TOKEN = token;