sodas-sdk 1.3.11 → 1.4.1

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/dist/index.d.ts CHANGED
@@ -2,26 +2,29 @@ import DataService from "./SODAS_SDK_CLASS/DCAT/dataService";
2
2
  import Dataset from "./SODAS_SDK_CLASS/DCAT/dataset";
3
3
  import DatasetSeries from "./SODAS_SDK_CLASS/DCAT/datasetSeries";
4
4
  import Distribution from "./SODAS_SDK_CLASS/DCAT/distribution";
5
+ import ValidationTemplate from "./SODAS_SDK_CLASS/template/validation";
5
6
  import Config from "./core/auth";
6
7
  import { setGovernanceBearerToken, setLegacyDatahubBearerToken } from "./core/init";
7
- import { ArtifactType, IDType, IRIType, ProfileType, ResourceDescriptorRole, SortOrder, TemplateDetailFunctionality, asID, asIRI } from "./core/type";
8
+ import { ArtifactType, IDType, IRIType, ResourceDescriptorRole, SortOrder, TemplateDetailFunctionality, asID, asIRI } from "./core/type";
8
9
  import { BASIC_TYPE_VALUES, CONVERSION_VALUES, MEASURE_VALUES, ORIGIN_VALUES } from "./core/values";
9
- export { ArtifactType, BASIC_TYPE_VALUES, CONVERSION_VALUES, Config, DataService, Dataset, DatasetSeries, Distribution, IDType, IRIType, MEASURE_VALUES, ORIGIN_VALUES, ProfileType, ResourceDescriptorRole, SortOrder, TemplateDetailFunctionality, asID, asIRI, setGovernanceBearerToken, setLegacyDatahubBearerToken, };
10
+ export { ArtifactType, BASIC_TYPE_VALUES, CONVERSION_VALUES, Config, DataService, Dataset, DatasetSeries, Distribution, IDType, IRIType, MEASURE_VALUES, ORIGIN_VALUES, ResourceDescriptorRole, SortOrder, TemplateDetailFunctionality, ValidationTemplate, asID, asIRI, setGovernanceBearerToken, setLegacyDatahubBearerToken, };
10
11
  declare const sdk: {
11
12
  ArtifactType: typeof ArtifactType;
12
13
  BASIC_TYPE_VALUES: typeof BASIC_TYPE_VALUES;
13
14
  CONVERSION_VALUES: typeof CONVERSION_VALUES;
15
+ Config: typeof Config;
14
16
  DataService: typeof DataService;
15
17
  Dataset: typeof Dataset;
16
18
  DatasetSeries: typeof DatasetSeries;
17
19
  Distribution: typeof Distribution;
18
20
  MEASURE_VALUES: typeof MEASURE_VALUES;
19
21
  ORIGIN_VALUES: typeof ORIGIN_VALUES;
20
- ProfileType: typeof ProfileType;
21
22
  ResourceDescriptorRole: typeof ResourceDescriptorRole;
22
23
  SortOrder: typeof SortOrder;
23
24
  TemplateDetailFunctionality: typeof TemplateDetailFunctionality;
24
- Config: typeof Config;
25
+ ValidationTemplate: typeof ValidationTemplate;
26
+ asID: typeof asID;
27
+ asIRI: typeof asIRI;
25
28
  setGovernanceBearerToken: typeof setGovernanceBearerToken;
26
29
  setLegacyDatahubBearerToken: typeof setLegacyDatahubBearerToken;
27
30
  };
@@ -1977,6 +1977,30 @@ class Dataset extends _dcatResource__WEBPACK_IMPORTED_MODULE_4__["default"] {
1977
1977
  throw new _core_error__WEBPACK_IMPORTED_MODULE_0__.UnexpectedResponseFormatError(response);
1978
1978
  });
1979
1979
  }
1980
+ static getRDF(id_1) {
1981
+ return __awaiter(this, arguments, void 0, function* (id, depth = 1) {
1982
+ // @ts-ignore - static helper expects SODAS_SDK_CLASS constructor type
1983
+ (0,_sodasSDKClass__WEBPACK_IMPORTED_MODULE_3__.throwErrorIfAPIURLNotSetForStatic)(this);
1984
+ const url = `${Dataset.API_URL}/rdf`;
1985
+ let response;
1986
+ try {
1987
+ response = yield axios__WEBPACK_IMPORTED_MODULE_6__["default"].get(url, {
1988
+ headers: Object.assign({ Accept: "text/turtle" }, (Dataset.BEARER_TOKEN && {
1989
+ Authorization: `Bearer ${Dataset.BEARER_TOKEN}`,
1990
+ })),
1991
+ params: { id, depth },
1992
+ responseType: "text",
1993
+ });
1994
+ }
1995
+ catch (error) {
1996
+ (0,_core_util__WEBPACK_IMPORTED_MODULE_2__.handleAxiosError)(error);
1997
+ }
1998
+ if (typeof response.data === "string") {
1999
+ return response.data;
2000
+ }
2001
+ throw new _core_error__WEBPACK_IMPORTED_MODULE_0__.UnexpectedResponseFormatError(response);
2002
+ });
2003
+ }
1980
2004
  static searchDBRecords(searchKeyword_1) {
1981
2005
  return __awaiter(this, arguments, void 0, function* (searchKeyword, pageNumber = 1, pageSize = 10, sortOrder = _core_type__WEBPACK_IMPORTED_MODULE_1__.SortOrder.DESC) {
1982
2006
  if (!searchKeyword || !searchKeyword.trim()) {
@@ -2433,6 +2457,30 @@ class DatasetSeries extends _dcatResource__WEBPACK_IMPORTED_MODULE_5__["default"
2433
2457
  DatasetSeries.API_URL = `${url}/datasetseries`;
2434
2458
  DatasetSeries.LIST_URL = `${DatasetSeries.API_URL}/list`;
2435
2459
  }
2460
+ static getRDF(id_1) {
2461
+ return __awaiter(this, arguments, void 0, function* (id, depth = 1) {
2462
+ // @ts-ignore - static helper expects SODAS_SDK_CLASS constructor type
2463
+ (0,_sodasSDKClass__WEBPACK_IMPORTED_MODULE_3__.throwErrorIfAPIURLNotSetForStatic)(this);
2464
+ const url = `${DatasetSeries.API_URL}/rdf`;
2465
+ let response;
2466
+ try {
2467
+ response = yield axios__WEBPACK_IMPORTED_MODULE_6__["default"].get(url, {
2468
+ headers: Object.assign({ Accept: "text/turtle" }, (DatasetSeries.BEARER_TOKEN && {
2469
+ Authorization: `Bearer ${DatasetSeries.BEARER_TOKEN}`,
2470
+ })),
2471
+ params: { id, depth },
2472
+ responseType: "text",
2473
+ });
2474
+ }
2475
+ catch (error) {
2476
+ (0,_core_util__WEBPACK_IMPORTED_MODULE_2__.handleAxiosError)(error);
2477
+ }
2478
+ if (typeof response.data === "string") {
2479
+ return response.data;
2480
+ }
2481
+ throw new _core_error__WEBPACK_IMPORTED_MODULE_0__.UnexpectedResponseFormatError(response);
2482
+ });
2483
+ }
2436
2484
  static listUserDBRecords() {
2437
2485
  return __awaiter(this, arguments, void 0, function* (pageNumber = 1, pageSize = 10, sortOrder = _core_type__WEBPACK_IMPORTED_MODULE_1__.SortOrder.DESC) {
2438
2486
  // @ts-ignore - static helper expects SODAS_SDK_CLASS constructor type
@@ -4259,27 +4307,346 @@ class SODAS_SDK_CLASS {
4259
4307
 
4260
4308
  /***/ }),
4261
4309
 
4262
- /***/ "./lib/SODAS_SDK_FILE/artifactFile.ts":
4263
- /*!********************************************!*\
4264
- !*** ./lib/SODAS_SDK_FILE/artifactFile.ts ***!
4265
- \********************************************/
4310
+ /***/ "./lib/SODAS_SDK_CLASS/template/validation.ts":
4311
+ /*!****************************************************!*\
4312
+ !*** ./lib/SODAS_SDK_CLASS/template/validation.ts ***!
4313
+ \****************************************************/
4266
4314
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
4267
4315
 
4268
4316
  "use strict";
4269
4317
  __webpack_require__.r(__webpack_exports__);
4270
4318
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
4319
+ /* harmony export */ EXPECTED_TYPE: () => (/* binding */ EXPECTED_TYPE),
4320
+ /* harmony export */ VALIDATION_TYPE: () => (/* binding */ VALIDATION_TYPE),
4271
4321
  /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
4272
4322
  /* harmony export */ });
4273
- /* harmony import */ var _sodasSDKFile__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sodasSDKFile */ "./lib/SODAS_SDK_FILE/sodasSDKFile.ts");
4323
+ /* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! axios */ "./node_modules/axios/lib/axios.js");
4324
+ /* harmony import */ var _core_error__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../core/error */ "./lib/core/error.ts");
4325
+ /* harmony import */ var _core_type__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../core/type */ "./lib/core/type.ts");
4326
+ /* harmony import */ var _core_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../core/util */ "./lib/core/util.ts");
4327
+ /* harmony import */ var _governanceClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../governanceClass */ "./lib/SODAS_SDK_CLASS/governanceClass.ts");
4328
+ /* harmony import */ var _sodasSDKClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../sodasSDKClass */ "./lib/SODAS_SDK_CLASS/sodasSDKClass.ts");
4329
+ var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
4330
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4331
+ return new (P || (P = Promise))(function (resolve, reject) {
4332
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
4333
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
4334
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
4335
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
4336
+ });
4337
+ };
4338
+
4339
+
4340
+
4274
4341
 
4275
- class ArtifactFile extends _sodasSDKFile__WEBPACK_IMPORTED_MODULE_0__["default"] {
4342
+
4343
+
4344
+ var VALIDATION_TYPE;
4345
+ (function (VALIDATION_TYPE) {
4346
+ VALIDATION_TYPE["DATA_TYPE"] = "data_type";
4347
+ VALIDATION_TYPE["RANGE"] = "range";
4348
+ VALIDATION_TYPE["PATTERN"] = "pattern";
4349
+ VALIDATION_TYPE["UNIQUENESS"] = "uniqueness";
4350
+ VALIDATION_TYPE["COMPLETENESS"] = "completeness";
4351
+ VALIDATION_TYPE["LENGTH"] = "length";
4352
+ VALIDATION_TYPE["ALLOWED_VALUES"] = "allowed_values";
4353
+ VALIDATION_TYPE["OUTLIER"] = "outlier";
4354
+ VALIDATION_TYPE["STATISTICAL"] = "statistical";
4355
+ })(VALIDATION_TYPE || (VALIDATION_TYPE = {}));
4356
+ var EXPECTED_TYPE;
4357
+ (function (EXPECTED_TYPE) {
4358
+ EXPECTED_TYPE["NUMERIC"] = "numeric";
4359
+ EXPECTED_TYPE["STRING"] = "string";
4360
+ EXPECTED_TYPE["DATETIME"] = "datetime";
4361
+ })(EXPECTED_TYPE || (EXPECTED_TYPE = {}));
4362
+ class ValidationTemplate extends _governanceClass__WEBPACK_IMPORTED_MODULE_3__["default"] {
4276
4363
  static configureAPIURL(url) {
4277
- ArtifactFile.UPLOAD_URL = `${url}/api/v1/governance/open-reference-model/resource-descriptor/artifact/upload`;
4278
- ArtifactFile.REMOVE_URL = `${url}/api/v1/governance/open-reference-model/resource-descriptor/artifact/remove?id=`;
4279
- ArtifactFile.DOWNLOAD_URL = `${url}/artifacts`;
4364
+ const PREFIX = "api/v1/governance/template";
4365
+ ValidationTemplate.API_URL = `${url}/${PREFIX}/validation`;
4366
+ ValidationTemplate.LIST_URL = `${ValidationTemplate.API_URL}/list`;
4367
+ ValidationTemplate.GET_URL = `${ValidationTemplate.API_URL}/get`;
4368
+ ValidationTemplate.CREATE_URL = `${ValidationTemplate.API_URL}/create`;
4369
+ ValidationTemplate.UPDATE_URL = `${ValidationTemplate.API_URL}/update`;
4370
+ ValidationTemplate.DELETE_URL = `${ValidationTemplate.API_URL}/remove`;
4371
+ }
4372
+ toDTO() {
4373
+ return Object.assign(Object.assign(Object.assign(Object.assign({}, super.toDTO()), { name: this.Name }), (this.ValidationRules && { validationRules: this.ValidationRules })), (this.Description && { description: this.Description }));
4374
+ }
4375
+ populateFromFormData(data) {
4376
+ return __awaiter(this, void 0, void 0, function* () {
4377
+ throw new _core_error__WEBPACK_IMPORTED_MODULE_0__.NeedToImplementError();
4378
+ });
4379
+ }
4380
+ populateFromDTO(dto) {
4381
+ const _super = Object.create(null, {
4382
+ populateFromDTO: { get: () => super.populateFromDTO }
4383
+ });
4384
+ return __awaiter(this, void 0, void 0, function* () {
4385
+ yield _super.populateFromDTO.call(this, dto);
4386
+ const validationTemplateDTO = dto;
4387
+ this.ValidationRules = validationTemplateDTO.validationRules;
4388
+ this.Name = validationTemplateDTO.name;
4389
+ this.Description = validationTemplateDTO.description;
4390
+ });
4391
+ }
4392
+ static listDBRecords() {
4393
+ return __awaiter(this, arguments, void 0, function* (pageNumber = 1, pageSize = 10, sortOrder = _core_type__WEBPACK_IMPORTED_MODULE_1__.SortOrder.DESC, vocabularyID) {
4394
+ (0,_sodasSDKClass__WEBPACK_IMPORTED_MODULE_4__.throwErrorIfAPIURLNotSetForStatic)(ValidationTemplate);
4395
+ try {
4396
+ const response = yield axios__WEBPACK_IMPORTED_MODULE_5__["default"].get(ValidationTemplate.LIST_URL, {
4397
+ params: {
4398
+ offset: (pageNumber - 1) * pageSize,
4399
+ limit: pageSize,
4400
+ ordered: sortOrder,
4401
+ vocabularyId: vocabularyID,
4402
+ },
4403
+ // headers,
4404
+ });
4405
+ return yield ValidationTemplate.listResponseToPaginatedResponse(response);
4406
+ }
4407
+ catch (error) {
4408
+ (0,_core_util__WEBPACK_IMPORTED_MODULE_2__.handleAxiosError)(error);
4409
+ }
4410
+ });
4411
+ }
4412
+ get name() {
4413
+ return this.Name;
4414
+ }
4415
+ set name(value) {
4416
+ this.Name = value;
4417
+ }
4418
+ get description() {
4419
+ return this.Description;
4420
+ }
4421
+ set description(value) {
4422
+ this.Description = value;
4423
+ }
4424
+ get validationRules() {
4425
+ return this.ValidationRules;
4426
+ }
4427
+ set validationRules(value) {
4428
+ this.ValidationRules = value;
4429
+ }
4430
+ static parseValidationRules(rawRules) {
4431
+ return rawRules.map((rule) => {
4432
+ const baseRule = {
4433
+ column: rule.column,
4434
+ name: rule.name,
4435
+ type: rule.type,
4436
+ };
4437
+ switch (rule.type) {
4438
+ case VALIDATION_TYPE.COMPLETENESS:
4439
+ return Object.assign(Object.assign({}, baseRule), { type: VALIDATION_TYPE.COMPLETENESS, min_completeness: rule.min_completeness, weight: rule.weight });
4440
+ case VALIDATION_TYPE.DATA_TYPE:
4441
+ return Object.assign(Object.assign({}, baseRule), { type: VALIDATION_TYPE.DATA_TYPE, expected_type: rule.expected_type, weight: rule.weight });
4442
+ case VALIDATION_TYPE.PATTERN:
4443
+ return Object.assign(Object.assign({}, baseRule), { type: VALIDATION_TYPE.PATTERN, pattern: rule.pattern, weight: rule.weight });
4444
+ case VALIDATION_TYPE.UNIQUENESS:
4445
+ return Object.assign(Object.assign({}, baseRule), { type: VALIDATION_TYPE.UNIQUENESS, weight: rule.weight });
4446
+ default:
4447
+ return baseRule;
4448
+ }
4449
+ });
4450
+ }
4451
+ ensureValidationRulesInitialized() {
4452
+ if (!this.ValidationRules) {
4453
+ this.ValidationRules = [];
4454
+ }
4455
+ }
4456
+ createRule(type) {
4457
+ this.ensureValidationRulesInitialized();
4458
+ let rule;
4459
+ const baseRule = {
4460
+ column: "",
4461
+ name: "",
4462
+ type,
4463
+ };
4464
+ switch (type) {
4465
+ case VALIDATION_TYPE.COMPLETENESS:
4466
+ rule = Object.assign(Object.assign({}, baseRule), { min_completeness: 0, weight: 0 });
4467
+ break;
4468
+ case VALIDATION_TYPE.DATA_TYPE:
4469
+ rule = Object.assign(Object.assign({}, baseRule), { expected_type: EXPECTED_TYPE.STRING, weight: 0 });
4470
+ break;
4471
+ case VALIDATION_TYPE.PATTERN:
4472
+ rule = Object.assign(Object.assign({}, baseRule), { pattern: "", weight: 0 });
4473
+ break;
4474
+ case VALIDATION_TYPE.UNIQUENESS:
4475
+ rule = Object.assign(Object.assign({}, baseRule), { weight: 0 });
4476
+ break;
4477
+ default:
4478
+ rule = baseRule;
4479
+ }
4480
+ this.ValidationRules.push(rule);
4481
+ return rule;
4482
+ }
4483
+ deleteRuleAt(index) {
4484
+ if (!this.ValidationRules) {
4485
+ return;
4486
+ }
4487
+ if (index < 0 || index >= this.ValidationRules.length) {
4488
+ return;
4489
+ }
4490
+ this.ValidationRules.splice(index, 1);
4491
+ }
4492
+ deleteRuleByTypeAt(type, index) {
4493
+ if (!this.ValidationRules) {
4494
+ return;
4495
+ }
4496
+ if (index < 0) {
4497
+ return;
4498
+ }
4499
+ let current = 0;
4500
+ for (let i = 0; i < this.ValidationRules.length; i++) {
4501
+ if (this.ValidationRules[i].type === type) {
4502
+ if (current === index) {
4503
+ this.ValidationRules.splice(i, 1);
4504
+ return;
4505
+ }
4506
+ current++;
4507
+ }
4508
+ }
4509
+ }
4510
+ static groupValidationRulesByColumn(rules) {
4511
+ return rules.reduce((acc, rule) => {
4512
+ const column = rule.column;
4513
+ if (!acc[column]) {
4514
+ acc[column] = [];
4515
+ }
4516
+ acc[column].push(rule);
4517
+ return acc;
4518
+ }, {});
4519
+ }
4520
+ static groupValidationRulesByType(rules) {
4521
+ return rules.reduce((acc, rule) => {
4522
+ const type = rule.type;
4523
+ if (!acc[type]) {
4524
+ acc[type] = [];
4525
+ }
4526
+ acc[type].push(rule);
4527
+ return acc;
4528
+ }, {});
4529
+ }
4530
+ /**
4531
+ * Parse escaped JSON string containing validation_rules to ValidationRule[]
4532
+ * @param escapedString - Escaped JSON string like "validation_rules\":[{\"column\":\"class_label\",...}]"
4533
+ * @returns Parsed ValidationRule array
4534
+ */
4535
+ static parseValidationRulesFromEscapedString(escapedString) {
4536
+ let processedString = escapedString.trim();
4537
+ // Remove surrounding quotes if present (e.g., '"{"validation_rules":...}"' -> '{"validation_rules":...}')
4538
+ // Check for both single and double quotes
4539
+ if (((processedString.startsWith('"') && processedString.endsWith('"')) ||
4540
+ (processedString.startsWith("'") && processedString.endsWith("'"))) &&
4541
+ processedString.length > 1) {
4542
+ processedString = processedString.slice(1, -1).trim();
4543
+ }
4544
+ // Unescape the string (replace \" with ")
4545
+ // Handle both \" and \\\" cases to avoid double-escaping issues
4546
+ let unescapedString = processedString;
4547
+ // First handle \\\" -> \"
4548
+ unescapedString = unescapedString.replace(/\\\\"/g, '\\"');
4549
+ // Then handle \" -> "
4550
+ unescapedString = unescapedString.replace(/\\"/g, '"');
4551
+ // Try to parse as JSON
4552
+ let parsed;
4553
+ try {
4554
+ // First try parsing directly
4555
+ parsed = JSON.parse(unescapedString);
4556
+ }
4557
+ catch (error) {
4558
+ // If parsing fails, try different approaches
4559
+ const trimmed = unescapedString.trim();
4560
+ // If it starts with "validation_rules" but is not wrapped in braces
4561
+ if (trimmed.startsWith('"validation_rules"') ||
4562
+ trimmed.startsWith("validation_rules")) {
4563
+ // Try wrapping in braces
4564
+ const wrapped = trimmed.startsWith('"')
4565
+ ? `{${trimmed}}`
4566
+ : `{"${trimmed}}`;
4567
+ try {
4568
+ parsed = JSON.parse(wrapped);
4569
+ }
4570
+ catch (e) {
4571
+ // If still fails, try without the leading quote
4572
+ const withoutQuote = trimmed.replace(/^"/, "");
4573
+ parsed = JSON.parse(`{"${withoutQuote}`);
4574
+ }
4575
+ }
4576
+ else if (trimmed.startsWith("{") && trimmed.endsWith("}")) {
4577
+ // Already looks like JSON object, try parsing again after trimming
4578
+ parsed = JSON.parse(trimmed);
4579
+ }
4580
+ else {
4581
+ throw error;
4582
+ }
4583
+ }
4584
+ // Extract validation_rules array
4585
+ let validationRules;
4586
+ // If it's already an array, use it directly
4587
+ if (Array.isArray(parsed)) {
4588
+ validationRules = parsed;
4589
+ }
4590
+ else if (parsed.validation_rules) {
4591
+ // If it's an object with validation_rules property
4592
+ validationRules = parsed.validation_rules;
4593
+ }
4594
+ else if (typeof parsed === "object") {
4595
+ // If it's an object but no validation_rules property, try to use it as is
4596
+ validationRules = parsed;
4597
+ }
4598
+ else {
4599
+ throw new Error("Invalid format: validation_rules not found");
4600
+ }
4601
+ // Ensure validationRules is an array
4602
+ if (!Array.isArray(validationRules)) {
4603
+ throw new Error("Invalid format: validation_rules must be an array");
4604
+ }
4605
+ const parsedRules = ValidationTemplate.parseValidationRules(validationRules);
4606
+ parsedRules._escapedString = escapedString;
4607
+ return parsedRules;
4608
+ }
4609
+ /**
4610
+ * Convert ValidationRule[] to escaped JSON string
4611
+ * @param rules - ValidationRule array to stringify
4612
+ * @returns Escaped JSON string with format: "{\"validation_rules\":[...]}"
4613
+ */
4614
+ static stringifyValidationRulesToEscapedString(rules) {
4615
+ // Convert ValidationRule[] to plain objects for JSON serialization
4616
+ const plainRules = rules.map((rule) => {
4617
+ const plainRule = {
4618
+ column: rule.column,
4619
+ name: rule.name,
4620
+ type: rule.type,
4621
+ };
4622
+ switch (rule.type) {
4623
+ case VALIDATION_TYPE.COMPLETENESS:
4624
+ const completenessRule = rule;
4625
+ return Object.assign(Object.assign({}, plainRule), { min_completeness: completenessRule.min_completeness, weight: completenessRule.weight });
4626
+ case VALIDATION_TYPE.DATA_TYPE:
4627
+ const dataTypeRule = rule;
4628
+ return Object.assign(Object.assign({}, plainRule), { expected_type: dataTypeRule.expected_type, weight: dataTypeRule.weight });
4629
+ case VALIDATION_TYPE.PATTERN:
4630
+ const patternRule = rule;
4631
+ return Object.assign(Object.assign({}, plainRule), { pattern: patternRule.pattern, weight: patternRule.weight });
4632
+ case VALIDATION_TYPE.UNIQUENESS:
4633
+ const uniquenessRule = rule;
4634
+ return Object.assign(Object.assign({}, plainRule), { weight: uniquenessRule.weight });
4635
+ default:
4636
+ return plainRule;
4637
+ }
4638
+ });
4639
+ // Create object with validation_rules property
4640
+ if (rules._escapedString) {
4641
+ return rules._escapedString;
4642
+ }
4643
+ const obj = { validation_rules: plainRules };
4644
+ const jsonString = JSON.stringify(obj);
4645
+ const escaped = jsonString.replace(/"/g, '\\"');
4646
+ return '"' + escaped + '"';
4280
4647
  }
4281
4648
  }
4282
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ArtifactFile);
4649
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ValidationTemplate);
4283
4650
 
4284
4651
 
4285
4652
  /***/ }),
@@ -4555,7 +4922,7 @@ __webpack_require__.r(__webpack_exports__);
4555
4922
  /* 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");
4556
4923
  /* 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");
4557
4924
  /* 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");
4558
- /* harmony import */ var _SODAS_SDK_FILE_artifactFile__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../SODAS_SDK_FILE/artifactFile */ "./lib/SODAS_SDK_FILE/artifactFile.ts");
4925
+ /* 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");
4559
4926
  /* harmony import */ var _SODAS_SDK_FILE_dataFile__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../SODAS_SDK_FILE/dataFile */ "./lib/SODAS_SDK_FILE/dataFile.ts");
4560
4927
  /* harmony import */ var _SODAS_SDK_FILE_thumbnailFile__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../SODAS_SDK_FILE/thumbnailFile */ "./lib/SODAS_SDK_FILE/thumbnailFile.ts");
4561
4928
  /* harmony import */ var _error__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./error */ "./lib/core/error.ts");
@@ -4645,9 +5012,9 @@ class Config {
4645
5012
  console.error("DATAHUB_API_URL not found in config");
4646
5013
  }
4647
5014
  if (this.governanceBaseUrl) {
4648
- _SODAS_SDK_FILE_artifactFile__WEBPACK_IMPORTED_MODULE_6__["default"].configureAPIURL(SLASH_DELETED_GOVERNANCE_PORTAL_API_URL);
4649
5015
  _SODAS_SDK_CLASS_dictionary_vocabulary__WEBPACK_IMPORTED_MODULE_5__["default"].configureAPIURL(SLASH_DELETED_GOVERNANCE_PORTAL_API_URL);
4650
5016
  _SODAS_SDK_CLASS_dictionary_term__WEBPACK_IMPORTED_MODULE_4__["default"].configureAPIURL(SLASH_DELETED_GOVERNANCE_PORTAL_API_URL);
5017
+ _SODAS_SDK_CLASS_template_validation__WEBPACK_IMPORTED_MODULE_6__["default"].configureAPIURL(SLASH_DELETED_GOVERNANCE_PORTAL_API_URL);
4651
5018
  }
4652
5019
  else {
4653
5020
  console.error("GOVERNANCE_API_URL not found in config");
@@ -4923,6 +5290,8 @@ __webpack_require__.r(__webpack_exports__);
4923
5290
  /* 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");
4924
5291
  /* 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");
4925
5292
  /* 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");
5293
+ /* 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");
5294
+
4926
5295
 
4927
5296
 
4928
5297
 
@@ -4938,6 +5307,7 @@ __webpack_require__.r(__webpack_exports__);
4938
5307
  function setGovernanceBearerToken(token) {
4939
5308
  _SODAS_SDK_CLASS_dictionary_vocabulary__WEBPACK_IMPORTED_MODULE_5__["default"].BEARER_TOKEN = token;
4940
5309
  _SODAS_SDK_CLASS_dictionary_term__WEBPACK_IMPORTED_MODULE_4__["default"].BEARER_TOKEN = token;
5310
+ _SODAS_SDK_CLASS_template_validation__WEBPACK_IMPORTED_MODULE_6__["default"].BEARER_TOKEN = token;
4941
5311
  }
4942
5312
  function setLegacyDatahubBearerToken(token) {
4943
5313
  _SODAS_SDK_CLASS_DCAT_dataset__WEBPACK_IMPORTED_MODULE_1__["default"].BEARER_TOKEN = token;
@@ -4959,7 +5329,6 @@ function setLegacyDatahubBearerToken(token) {
4959
5329
  __webpack_require__.r(__webpack_exports__);
4960
5330
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
4961
5331
  /* harmony export */ ArtifactType: () => (/* binding */ ArtifactType),
4962
- /* harmony export */ ProfileType: () => (/* binding */ ProfileType),
4963
5332
  /* harmony export */ ResourceDescriptorRole: () => (/* binding */ ResourceDescriptorRole),
4964
5333
  /* harmony export */ SortOrder: () => (/* binding */ SortOrder),
4965
5334
  /* harmony export */ TemplateDetailFunctionality: () => (/* binding */ TemplateDetailFunctionality),
@@ -5029,11 +5398,6 @@ var ResourceDescriptorRole;
5029
5398
  ResourceDescriptorRole["SPECIFICATION"] = "specification";
5030
5399
  ResourceDescriptorRole["GUIDANCE"] = "guidance";
5031
5400
  })(ResourceDescriptorRole || (ResourceDescriptorRole = {}));
5032
- var ProfileType;
5033
- (function (ProfileType) {
5034
- ProfileType["DCAT"] = "dcat";
5035
- ProfileType["DATA"] = "data";
5036
- })(ProfileType || (ProfileType = {}));
5037
5401
  var ArtifactType;
5038
5402
  (function (ArtifactType) {
5039
5403
  ArtifactType["TEMPLATE"] = "template";
@@ -10195,34 +10559,35 @@ var __webpack_exports__ = {};
10195
10559
  \**********************/
10196
10560
  __webpack_require__.r(__webpack_exports__);
10197
10561
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
10198
- /* harmony export */ ArtifactType: () => (/* reexport safe */ _core_type__WEBPACK_IMPORTED_MODULE_6__.ArtifactType),
10199
- /* harmony export */ BASIC_TYPE_VALUES: () => (/* reexport safe */ _core_values__WEBPACK_IMPORTED_MODULE_7__.BASIC_TYPE_VALUES),
10200
- /* harmony export */ CONVERSION_VALUES: () => (/* reexport safe */ _core_values__WEBPACK_IMPORTED_MODULE_7__.CONVERSION_VALUES),
10201
- /* harmony export */ Config: () => (/* reexport safe */ _core_auth__WEBPACK_IMPORTED_MODULE_4__["default"]),
10562
+ /* harmony export */ ArtifactType: () => (/* reexport safe */ _core_type__WEBPACK_IMPORTED_MODULE_7__.ArtifactType),
10563
+ /* harmony export */ BASIC_TYPE_VALUES: () => (/* reexport safe */ _core_values__WEBPACK_IMPORTED_MODULE_8__.BASIC_TYPE_VALUES),
10564
+ /* harmony export */ CONVERSION_VALUES: () => (/* reexport safe */ _core_values__WEBPACK_IMPORTED_MODULE_8__.CONVERSION_VALUES),
10565
+ /* harmony export */ Config: () => (/* reexport safe */ _core_auth__WEBPACK_IMPORTED_MODULE_5__["default"]),
10202
10566
  /* harmony export */ DataService: () => (/* reexport safe */ _SODAS_SDK_CLASS_DCAT_dataService__WEBPACK_IMPORTED_MODULE_0__["default"]),
10203
10567
  /* harmony export */ Dataset: () => (/* reexport safe */ _SODAS_SDK_CLASS_DCAT_dataset__WEBPACK_IMPORTED_MODULE_1__["default"]),
10204
10568
  /* harmony export */ DatasetSeries: () => (/* reexport safe */ _SODAS_SDK_CLASS_DCAT_datasetSeries__WEBPACK_IMPORTED_MODULE_2__["default"]),
10205
10569
  /* harmony export */ Distribution: () => (/* reexport safe */ _SODAS_SDK_CLASS_DCAT_distribution__WEBPACK_IMPORTED_MODULE_3__["default"]),
10206
- /* harmony export */ MEASURE_VALUES: () => (/* reexport safe */ _core_values__WEBPACK_IMPORTED_MODULE_7__.MEASURE_VALUES),
10207
- /* harmony export */ ORIGIN_VALUES: () => (/* reexport safe */ _core_values__WEBPACK_IMPORTED_MODULE_7__.ORIGIN_VALUES),
10208
- /* harmony export */ ProfileType: () => (/* reexport safe */ _core_type__WEBPACK_IMPORTED_MODULE_6__.ProfileType),
10209
- /* harmony export */ ResourceDescriptorRole: () => (/* reexport safe */ _core_type__WEBPACK_IMPORTED_MODULE_6__.ResourceDescriptorRole),
10210
- /* harmony export */ SortOrder: () => (/* reexport safe */ _core_type__WEBPACK_IMPORTED_MODULE_6__.SortOrder),
10211
- /* harmony export */ TemplateDetailFunctionality: () => (/* reexport safe */ _core_type__WEBPACK_IMPORTED_MODULE_6__.TemplateDetailFunctionality),
10212
- /* harmony export */ asID: () => (/* reexport safe */ _core_type__WEBPACK_IMPORTED_MODULE_6__.asID),
10213
- /* harmony export */ asIRI: () => (/* reexport safe */ _core_type__WEBPACK_IMPORTED_MODULE_6__.asIRI),
10570
+ /* harmony export */ MEASURE_VALUES: () => (/* reexport safe */ _core_values__WEBPACK_IMPORTED_MODULE_8__.MEASURE_VALUES),
10571
+ /* harmony export */ ORIGIN_VALUES: () => (/* reexport safe */ _core_values__WEBPACK_IMPORTED_MODULE_8__.ORIGIN_VALUES),
10572
+ /* harmony export */ ResourceDescriptorRole: () => (/* reexport safe */ _core_type__WEBPACK_IMPORTED_MODULE_7__.ResourceDescriptorRole),
10573
+ /* harmony export */ SortOrder: () => (/* reexport safe */ _core_type__WEBPACK_IMPORTED_MODULE_7__.SortOrder),
10574
+ /* harmony export */ TemplateDetailFunctionality: () => (/* reexport safe */ _core_type__WEBPACK_IMPORTED_MODULE_7__.TemplateDetailFunctionality),
10575
+ /* harmony export */ ValidationTemplate: () => (/* reexport safe */ _SODAS_SDK_CLASS_template_validation__WEBPACK_IMPORTED_MODULE_4__["default"]),
10576
+ /* harmony export */ asID: () => (/* reexport safe */ _core_type__WEBPACK_IMPORTED_MODULE_7__.asID),
10577
+ /* harmony export */ asIRI: () => (/* reexport safe */ _core_type__WEBPACK_IMPORTED_MODULE_7__.asIRI),
10214
10578
  /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__),
10215
- /* harmony export */ setGovernanceBearerToken: () => (/* reexport safe */ _core_init__WEBPACK_IMPORTED_MODULE_5__.setGovernanceBearerToken),
10216
- /* harmony export */ setLegacyDatahubBearerToken: () => (/* reexport safe */ _core_init__WEBPACK_IMPORTED_MODULE_5__.setLegacyDatahubBearerToken)
10579
+ /* harmony export */ setGovernanceBearerToken: () => (/* reexport safe */ _core_init__WEBPACK_IMPORTED_MODULE_6__.setGovernanceBearerToken),
10580
+ /* harmony export */ setLegacyDatahubBearerToken: () => (/* reexport safe */ _core_init__WEBPACK_IMPORTED_MODULE_6__.setLegacyDatahubBearerToken)
10217
10581
  /* harmony export */ });
10218
10582
  /* harmony import */ var _SODAS_SDK_CLASS_DCAT_dataService__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SODAS_SDK_CLASS/DCAT/dataService */ "./lib/SODAS_SDK_CLASS/DCAT/dataService.ts");
10219
10583
  /* harmony import */ var _SODAS_SDK_CLASS_DCAT_dataset__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SODAS_SDK_CLASS/DCAT/dataset */ "./lib/SODAS_SDK_CLASS/DCAT/dataset.ts");
10220
10584
  /* harmony import */ var _SODAS_SDK_CLASS_DCAT_datasetSeries__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./SODAS_SDK_CLASS/DCAT/datasetSeries */ "./lib/SODAS_SDK_CLASS/DCAT/datasetSeries.ts");
10221
10585
  /* 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");
10222
- /* harmony import */ var _core_auth__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./core/auth */ "./lib/core/auth.ts");
10223
- /* harmony import */ var _core_init__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./core/init */ "./lib/core/init.ts");
10224
- /* harmony import */ var _core_type__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./core/type */ "./lib/core/type.ts");
10225
- /* harmony import */ var _core_values__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./core/values */ "./lib/core/values.ts");
10586
+ /* harmony import */ var _SODAS_SDK_CLASS_template_validation__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./SODAS_SDK_CLASS/template/validation */ "./lib/SODAS_SDK_CLASS/template/validation.ts");
10587
+ /* harmony import */ var _core_auth__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./core/auth */ "./lib/core/auth.ts");
10588
+ /* harmony import */ var _core_init__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./core/init */ "./lib/core/init.ts");
10589
+ /* harmony import */ var _core_type__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./core/type */ "./lib/core/type.ts");
10590
+ /* harmony import */ var _core_values__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./core/values */ "./lib/core/values.ts");
10226
10591
  // Import named functions first
10227
10592
 
10228
10593
 
@@ -10232,26 +10597,29 @@ __webpack_require__.r(__webpack_exports__);
10232
10597
 
10233
10598
 
10234
10599
 
10600
+
10235
10601
  // ✅ Named exports (For ES module compatibility)
10236
10602
 
10237
10603
  // ✅ Default export (For CommonJS compatibility)
10238
10604
  const sdk = {
10239
- ArtifactType: _core_type__WEBPACK_IMPORTED_MODULE_6__.ArtifactType,
10240
- BASIC_TYPE_VALUES: _core_values__WEBPACK_IMPORTED_MODULE_7__.BASIC_TYPE_VALUES,
10241
- CONVERSION_VALUES: _core_values__WEBPACK_IMPORTED_MODULE_7__.CONVERSION_VALUES,
10605
+ ArtifactType: _core_type__WEBPACK_IMPORTED_MODULE_7__.ArtifactType,
10606
+ BASIC_TYPE_VALUES: _core_values__WEBPACK_IMPORTED_MODULE_8__.BASIC_TYPE_VALUES,
10607
+ CONVERSION_VALUES: _core_values__WEBPACK_IMPORTED_MODULE_8__.CONVERSION_VALUES,
10608
+ Config: _core_auth__WEBPACK_IMPORTED_MODULE_5__["default"],
10242
10609
  DataService: _SODAS_SDK_CLASS_DCAT_dataService__WEBPACK_IMPORTED_MODULE_0__["default"],
10243
10610
  Dataset: _SODAS_SDK_CLASS_DCAT_dataset__WEBPACK_IMPORTED_MODULE_1__["default"],
10244
10611
  DatasetSeries: _SODAS_SDK_CLASS_DCAT_datasetSeries__WEBPACK_IMPORTED_MODULE_2__["default"],
10245
10612
  Distribution: _SODAS_SDK_CLASS_DCAT_distribution__WEBPACK_IMPORTED_MODULE_3__["default"],
10246
- MEASURE_VALUES: _core_values__WEBPACK_IMPORTED_MODULE_7__.MEASURE_VALUES,
10247
- ORIGIN_VALUES: _core_values__WEBPACK_IMPORTED_MODULE_7__.ORIGIN_VALUES,
10248
- ProfileType: _core_type__WEBPACK_IMPORTED_MODULE_6__.ProfileType,
10249
- ResourceDescriptorRole: _core_type__WEBPACK_IMPORTED_MODULE_6__.ResourceDescriptorRole,
10250
- SortOrder: _core_type__WEBPACK_IMPORTED_MODULE_6__.SortOrder,
10251
- TemplateDetailFunctionality: _core_type__WEBPACK_IMPORTED_MODULE_6__.TemplateDetailFunctionality,
10252
- Config: _core_auth__WEBPACK_IMPORTED_MODULE_4__["default"],
10253
- setGovernanceBearerToken: _core_init__WEBPACK_IMPORTED_MODULE_5__.setGovernanceBearerToken,
10254
- setLegacyDatahubBearerToken: _core_init__WEBPACK_IMPORTED_MODULE_5__.setLegacyDatahubBearerToken,
10613
+ MEASURE_VALUES: _core_values__WEBPACK_IMPORTED_MODULE_8__.MEASURE_VALUES,
10614
+ ORIGIN_VALUES: _core_values__WEBPACK_IMPORTED_MODULE_8__.ORIGIN_VALUES,
10615
+ ResourceDescriptorRole: _core_type__WEBPACK_IMPORTED_MODULE_7__.ResourceDescriptorRole,
10616
+ SortOrder: _core_type__WEBPACK_IMPORTED_MODULE_7__.SortOrder,
10617
+ TemplateDetailFunctionality: _core_type__WEBPACK_IMPORTED_MODULE_7__.TemplateDetailFunctionality,
10618
+ ValidationTemplate: _SODAS_SDK_CLASS_template_validation__WEBPACK_IMPORTED_MODULE_4__["default"],
10619
+ asID: _core_type__WEBPACK_IMPORTED_MODULE_7__.asID,
10620
+ asIRI: _core_type__WEBPACK_IMPORTED_MODULE_7__.asIRI,
10621
+ setGovernanceBearerToken: _core_init__WEBPACK_IMPORTED_MODULE_6__.setGovernanceBearerToken,
10622
+ setLegacyDatahubBearerToken: _core_init__WEBPACK_IMPORTED_MODULE_6__.setLegacyDatahubBearerToken,
10255
10623
  };
10256
10624
  // ✅ Ensures `require("sodas-sdk")` works in CommonJS
10257
10625
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (sdk);