sodas-sdk 1.3.11 → 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.
- package/dist/SODAS_SDK_CLASS/DCAT/dataset.d.ts +1 -0
- package/dist/SODAS_SDK_CLASS/DCAT/datasetSeries.d.ts +1 -0
- package/dist/SODAS_SDK_CLASS/template/validation.d.ts +83 -0
- package/dist/__tests__/SODAS_SDK_CLASS/DCAT/dataset/rdf.medium.test.d.ts +1 -0
- package/dist/__tests__/SODAS_SDK_CLASS/DCAT/datasetSeries/rdf.medium.test.d.ts +1 -0
- package/dist/__tests__/SODAS_SDK_CLASS/template/validation/CRUD.medium.test.d.ts +1 -0
- package/dist/__tests__/SODAS_SDK_CLASS/template/validation/LIST.big.test.d.ts +1 -0
- package/dist/__tests__/SODAS_SDK_CLASS/template/validation/escape.small.test.d.ts +1 -0
- package/dist/__tests__/SODAS_SDK_CLASS/template/validation/group.small.test.d.ts +1 -0
- package/dist/__tests__/SODAS_SDK_CLASS/template/validation/manageRules.small.test.d.ts +1 -0
- package/dist/__tests__/SODAS_SDK_CLASS/template/validation/parse.small.test.d.ts +1 -0
- package/dist/__tests__/utility/validation.d.ts +6 -0
- package/dist/index.browser.js +382 -12
- package/dist/index.browser.js.map +1 -1
- package/dist/index.legacy.browser.js +382 -12
- package/dist/index.legacy.browser.js.map +1 -1
- package/dist/index.legacy.node.cjs +382 -12
- package/dist/index.legacy.node.cjs.map +1 -1
- package/dist/index.node.js +382 -12
- package/dist/index.node.js.map +1 -1
- package/package.json +1 -1
- package/dist/SODAS_SDK_FILE/artifactFile.d.ts +0 -8
package/dist/index.node.js
CHANGED
|
@@ -5542,6 +5542,30 @@ class Dataset extends _dcatResource__WEBPACK_IMPORTED_MODULE_4__["default"] {
|
|
|
5542
5542
|
throw new _core_error__WEBPACK_IMPORTED_MODULE_0__.UnexpectedResponseFormatError(response);
|
|
5543
5543
|
});
|
|
5544
5544
|
}
|
|
5545
|
+
static getRDF(id_1) {
|
|
5546
|
+
return __awaiter(this, arguments, void 0, function* (id, depth = 1) {
|
|
5547
|
+
// @ts-ignore - static helper expects SODAS_SDK_CLASS constructor type
|
|
5548
|
+
(0,_sodasSDKClass__WEBPACK_IMPORTED_MODULE_3__.throwErrorIfAPIURLNotSetForStatic)(this);
|
|
5549
|
+
const url = `${Dataset.API_URL}/rdf`;
|
|
5550
|
+
let response;
|
|
5551
|
+
try {
|
|
5552
|
+
response = yield axios__WEBPACK_IMPORTED_MODULE_6__["default"].get(url, {
|
|
5553
|
+
headers: Object.assign({ Accept: "text/turtle" }, (Dataset.BEARER_TOKEN && {
|
|
5554
|
+
Authorization: `Bearer ${Dataset.BEARER_TOKEN}`,
|
|
5555
|
+
})),
|
|
5556
|
+
params: { id, depth },
|
|
5557
|
+
responseType: "text",
|
|
5558
|
+
});
|
|
5559
|
+
}
|
|
5560
|
+
catch (error) {
|
|
5561
|
+
(0,_core_util__WEBPACK_IMPORTED_MODULE_2__.handleAxiosError)(error);
|
|
5562
|
+
}
|
|
5563
|
+
if (typeof response.data === "string") {
|
|
5564
|
+
return response.data;
|
|
5565
|
+
}
|
|
5566
|
+
throw new _core_error__WEBPACK_IMPORTED_MODULE_0__.UnexpectedResponseFormatError(response);
|
|
5567
|
+
});
|
|
5568
|
+
}
|
|
5545
5569
|
static searchDBRecords(searchKeyword_1) {
|
|
5546
5570
|
return __awaiter(this, arguments, void 0, function* (searchKeyword, pageNumber = 1, pageSize = 10, sortOrder = _core_type__WEBPACK_IMPORTED_MODULE_1__.SortOrder.DESC) {
|
|
5547
5571
|
if (!searchKeyword || !searchKeyword.trim()) {
|
|
@@ -5997,6 +6021,30 @@ class DatasetSeries extends _dcatResource__WEBPACK_IMPORTED_MODULE_5__["default"
|
|
|
5997
6021
|
DatasetSeries.API_URL = `${url}/datasetseries`;
|
|
5998
6022
|
DatasetSeries.LIST_URL = `${DatasetSeries.API_URL}/list`;
|
|
5999
6023
|
}
|
|
6024
|
+
static getRDF(id_1) {
|
|
6025
|
+
return __awaiter(this, arguments, void 0, function* (id, depth = 1) {
|
|
6026
|
+
// @ts-ignore - static helper expects SODAS_SDK_CLASS constructor type
|
|
6027
|
+
(0,_sodasSDKClass__WEBPACK_IMPORTED_MODULE_3__.throwErrorIfAPIURLNotSetForStatic)(this);
|
|
6028
|
+
const url = `${DatasetSeries.API_URL}/rdf`;
|
|
6029
|
+
let response;
|
|
6030
|
+
try {
|
|
6031
|
+
response = yield axios__WEBPACK_IMPORTED_MODULE_6__["default"].get(url, {
|
|
6032
|
+
headers: Object.assign({ Accept: "text/turtle" }, (DatasetSeries.BEARER_TOKEN && {
|
|
6033
|
+
Authorization: `Bearer ${DatasetSeries.BEARER_TOKEN}`,
|
|
6034
|
+
})),
|
|
6035
|
+
params: { id, depth },
|
|
6036
|
+
responseType: "text",
|
|
6037
|
+
});
|
|
6038
|
+
}
|
|
6039
|
+
catch (error) {
|
|
6040
|
+
(0,_core_util__WEBPACK_IMPORTED_MODULE_2__.handleAxiosError)(error);
|
|
6041
|
+
}
|
|
6042
|
+
if (typeof response.data === "string") {
|
|
6043
|
+
return response.data;
|
|
6044
|
+
}
|
|
6045
|
+
throw new _core_error__WEBPACK_IMPORTED_MODULE_0__.UnexpectedResponseFormatError(response);
|
|
6046
|
+
});
|
|
6047
|
+
}
|
|
6000
6048
|
static listUserDBRecords() {
|
|
6001
6049
|
return __awaiter(this, arguments, void 0, function* (pageNumber = 1, pageSize = 10, sortOrder = _core_type__WEBPACK_IMPORTED_MODULE_1__.SortOrder.DESC) {
|
|
6002
6050
|
// @ts-ignore - static helper expects SODAS_SDK_CLASS constructor type
|
|
@@ -7815,26 +7863,345 @@ class SODAS_SDK_CLASS {
|
|
|
7815
7863
|
|
|
7816
7864
|
/***/ }),
|
|
7817
7865
|
|
|
7818
|
-
/***/ "./lib/
|
|
7819
|
-
|
|
7820
|
-
!*** ./lib/
|
|
7821
|
-
|
|
7866
|
+
/***/ "./lib/SODAS_SDK_CLASS/template/validation.ts":
|
|
7867
|
+
/*!****************************************************!*\
|
|
7868
|
+
!*** ./lib/SODAS_SDK_CLASS/template/validation.ts ***!
|
|
7869
|
+
\****************************************************/
|
|
7822
7870
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
7823
7871
|
|
|
7824
7872
|
__webpack_require__.r(__webpack_exports__);
|
|
7825
7873
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
7874
|
+
/* harmony export */ EXPECTED_TYPE: () => (/* binding */ EXPECTED_TYPE),
|
|
7875
|
+
/* harmony export */ VALIDATION_TYPE: () => (/* binding */ VALIDATION_TYPE),
|
|
7826
7876
|
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
7827
7877
|
/* harmony export */ });
|
|
7828
|
-
/* harmony import */ var
|
|
7878
|
+
/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! axios */ "./node_modules/axios/lib/axios.js");
|
|
7879
|
+
/* harmony import */ var _core_error__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../core/error */ "./lib/core/error.ts");
|
|
7880
|
+
/* harmony import */ var _core_type__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../core/type */ "./lib/core/type.ts");
|
|
7881
|
+
/* harmony import */ var _core_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../core/util */ "./lib/core/util.ts");
|
|
7882
|
+
/* harmony import */ var _governanceClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../governanceClass */ "./lib/SODAS_SDK_CLASS/governanceClass.ts");
|
|
7883
|
+
/* harmony import */ var _sodasSDKClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../sodasSDKClass */ "./lib/SODAS_SDK_CLASS/sodasSDKClass.ts");
|
|
7884
|
+
var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
7885
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
7886
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
7887
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
7888
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7889
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7890
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
7891
|
+
});
|
|
7892
|
+
};
|
|
7893
|
+
|
|
7894
|
+
|
|
7895
|
+
|
|
7829
7896
|
|
|
7830
|
-
|
|
7897
|
+
|
|
7898
|
+
|
|
7899
|
+
var VALIDATION_TYPE;
|
|
7900
|
+
(function (VALIDATION_TYPE) {
|
|
7901
|
+
VALIDATION_TYPE["DATA_TYPE"] = "data_type";
|
|
7902
|
+
VALIDATION_TYPE["RANGE"] = "range";
|
|
7903
|
+
VALIDATION_TYPE["PATTERN"] = "pattern";
|
|
7904
|
+
VALIDATION_TYPE["UNIQUENESS"] = "uniqueness";
|
|
7905
|
+
VALIDATION_TYPE["COMPLETENESS"] = "completeness";
|
|
7906
|
+
VALIDATION_TYPE["LENGTH"] = "length";
|
|
7907
|
+
VALIDATION_TYPE["ALLOWED_VALUES"] = "allowed_values";
|
|
7908
|
+
VALIDATION_TYPE["OUTLIER"] = "outlier";
|
|
7909
|
+
VALIDATION_TYPE["STATISTICAL"] = "statistical";
|
|
7910
|
+
})(VALIDATION_TYPE || (VALIDATION_TYPE = {}));
|
|
7911
|
+
var EXPECTED_TYPE;
|
|
7912
|
+
(function (EXPECTED_TYPE) {
|
|
7913
|
+
EXPECTED_TYPE["NUMERIC"] = "numeric";
|
|
7914
|
+
EXPECTED_TYPE["STRING"] = "string";
|
|
7915
|
+
EXPECTED_TYPE["DATETIME"] = "datetime";
|
|
7916
|
+
})(EXPECTED_TYPE || (EXPECTED_TYPE = {}));
|
|
7917
|
+
class ValidationTemplate extends _governanceClass__WEBPACK_IMPORTED_MODULE_3__["default"] {
|
|
7831
7918
|
static configureAPIURL(url) {
|
|
7832
|
-
|
|
7833
|
-
|
|
7834
|
-
|
|
7919
|
+
const PREFIX = "api/v1/governance/template";
|
|
7920
|
+
ValidationTemplate.API_URL = `${url}/${PREFIX}/validation`;
|
|
7921
|
+
ValidationTemplate.LIST_URL = `${ValidationTemplate.API_URL}/list`;
|
|
7922
|
+
ValidationTemplate.GET_URL = `${ValidationTemplate.API_URL}/get`;
|
|
7923
|
+
ValidationTemplate.CREATE_URL = `${ValidationTemplate.API_URL}/create`;
|
|
7924
|
+
ValidationTemplate.UPDATE_URL = `${ValidationTemplate.API_URL}/update`;
|
|
7925
|
+
ValidationTemplate.DELETE_URL = `${ValidationTemplate.API_URL}/remove`;
|
|
7926
|
+
}
|
|
7927
|
+
toDTO() {
|
|
7928
|
+
return Object.assign(Object.assign(Object.assign(Object.assign({}, super.toDTO()), { name: this.Name }), (this.ValidationRules && { validationRules: this.ValidationRules })), (this.Description && { description: this.Description }));
|
|
7929
|
+
}
|
|
7930
|
+
populateFromFormData(data) {
|
|
7931
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
7932
|
+
throw new _core_error__WEBPACK_IMPORTED_MODULE_0__.NeedToImplementError();
|
|
7933
|
+
});
|
|
7934
|
+
}
|
|
7935
|
+
populateFromDTO(dto) {
|
|
7936
|
+
const _super = Object.create(null, {
|
|
7937
|
+
populateFromDTO: { get: () => super.populateFromDTO }
|
|
7938
|
+
});
|
|
7939
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
7940
|
+
yield _super.populateFromDTO.call(this, dto);
|
|
7941
|
+
const validationTemplateDTO = dto;
|
|
7942
|
+
this.ValidationRules = validationTemplateDTO.validationRules;
|
|
7943
|
+
this.Name = validationTemplateDTO.name;
|
|
7944
|
+
this.Description = validationTemplateDTO.description;
|
|
7945
|
+
});
|
|
7946
|
+
}
|
|
7947
|
+
static listDBRecords() {
|
|
7948
|
+
return __awaiter(this, arguments, void 0, function* (pageNumber = 1, pageSize = 10, sortOrder = _core_type__WEBPACK_IMPORTED_MODULE_1__.SortOrder.DESC, vocabularyID) {
|
|
7949
|
+
(0,_sodasSDKClass__WEBPACK_IMPORTED_MODULE_4__.throwErrorIfAPIURLNotSetForStatic)(ValidationTemplate);
|
|
7950
|
+
try {
|
|
7951
|
+
const response = yield axios__WEBPACK_IMPORTED_MODULE_5__["default"].get(ValidationTemplate.LIST_URL, {
|
|
7952
|
+
params: {
|
|
7953
|
+
offset: (pageNumber - 1) * pageSize,
|
|
7954
|
+
limit: pageSize,
|
|
7955
|
+
ordered: sortOrder,
|
|
7956
|
+
vocabularyId: vocabularyID,
|
|
7957
|
+
},
|
|
7958
|
+
// headers,
|
|
7959
|
+
});
|
|
7960
|
+
return yield ValidationTemplate.listResponseToPaginatedResponse(response);
|
|
7961
|
+
}
|
|
7962
|
+
catch (error) {
|
|
7963
|
+
(0,_core_util__WEBPACK_IMPORTED_MODULE_2__.handleAxiosError)(error);
|
|
7964
|
+
}
|
|
7965
|
+
});
|
|
7966
|
+
}
|
|
7967
|
+
get name() {
|
|
7968
|
+
return this.Name;
|
|
7969
|
+
}
|
|
7970
|
+
set name(value) {
|
|
7971
|
+
this.Name = value;
|
|
7972
|
+
}
|
|
7973
|
+
get description() {
|
|
7974
|
+
return this.Description;
|
|
7975
|
+
}
|
|
7976
|
+
set description(value) {
|
|
7977
|
+
this.Description = value;
|
|
7978
|
+
}
|
|
7979
|
+
get validationRules() {
|
|
7980
|
+
return this.ValidationRules;
|
|
7981
|
+
}
|
|
7982
|
+
set validationRules(value) {
|
|
7983
|
+
this.ValidationRules = value;
|
|
7984
|
+
}
|
|
7985
|
+
static parseValidationRules(rawRules) {
|
|
7986
|
+
return rawRules.map((rule) => {
|
|
7987
|
+
const baseRule = {
|
|
7988
|
+
column: rule.column,
|
|
7989
|
+
name: rule.name,
|
|
7990
|
+
type: rule.type,
|
|
7991
|
+
};
|
|
7992
|
+
switch (rule.type) {
|
|
7993
|
+
case VALIDATION_TYPE.COMPLETENESS:
|
|
7994
|
+
return Object.assign(Object.assign({}, baseRule), { type: VALIDATION_TYPE.COMPLETENESS, min_completeness: rule.min_completeness, weight: rule.weight });
|
|
7995
|
+
case VALIDATION_TYPE.DATA_TYPE:
|
|
7996
|
+
return Object.assign(Object.assign({}, baseRule), { type: VALIDATION_TYPE.DATA_TYPE, expected_type: rule.expected_type, weight: rule.weight });
|
|
7997
|
+
case VALIDATION_TYPE.PATTERN:
|
|
7998
|
+
return Object.assign(Object.assign({}, baseRule), { type: VALIDATION_TYPE.PATTERN, pattern: rule.pattern, weight: rule.weight });
|
|
7999
|
+
case VALIDATION_TYPE.UNIQUENESS:
|
|
8000
|
+
return Object.assign(Object.assign({}, baseRule), { type: VALIDATION_TYPE.UNIQUENESS, weight: rule.weight });
|
|
8001
|
+
default:
|
|
8002
|
+
return baseRule;
|
|
8003
|
+
}
|
|
8004
|
+
});
|
|
8005
|
+
}
|
|
8006
|
+
ensureValidationRulesInitialized() {
|
|
8007
|
+
if (!this.ValidationRules) {
|
|
8008
|
+
this.ValidationRules = [];
|
|
8009
|
+
}
|
|
8010
|
+
}
|
|
8011
|
+
createRule(type) {
|
|
8012
|
+
this.ensureValidationRulesInitialized();
|
|
8013
|
+
let rule;
|
|
8014
|
+
const baseRule = {
|
|
8015
|
+
column: "",
|
|
8016
|
+
name: "",
|
|
8017
|
+
type,
|
|
8018
|
+
};
|
|
8019
|
+
switch (type) {
|
|
8020
|
+
case VALIDATION_TYPE.COMPLETENESS:
|
|
8021
|
+
rule = Object.assign(Object.assign({}, baseRule), { min_completeness: 0, weight: 0 });
|
|
8022
|
+
break;
|
|
8023
|
+
case VALIDATION_TYPE.DATA_TYPE:
|
|
8024
|
+
rule = Object.assign(Object.assign({}, baseRule), { expected_type: EXPECTED_TYPE.STRING, weight: 0 });
|
|
8025
|
+
break;
|
|
8026
|
+
case VALIDATION_TYPE.PATTERN:
|
|
8027
|
+
rule = Object.assign(Object.assign({}, baseRule), { pattern: "", weight: 0 });
|
|
8028
|
+
break;
|
|
8029
|
+
case VALIDATION_TYPE.UNIQUENESS:
|
|
8030
|
+
rule = Object.assign(Object.assign({}, baseRule), { weight: 0 });
|
|
8031
|
+
break;
|
|
8032
|
+
default:
|
|
8033
|
+
rule = baseRule;
|
|
8034
|
+
}
|
|
8035
|
+
this.ValidationRules.push(rule);
|
|
8036
|
+
return rule;
|
|
8037
|
+
}
|
|
8038
|
+
deleteRuleAt(index) {
|
|
8039
|
+
if (!this.ValidationRules) {
|
|
8040
|
+
return;
|
|
8041
|
+
}
|
|
8042
|
+
if (index < 0 || index >= this.ValidationRules.length) {
|
|
8043
|
+
return;
|
|
8044
|
+
}
|
|
8045
|
+
this.ValidationRules.splice(index, 1);
|
|
8046
|
+
}
|
|
8047
|
+
deleteRuleByTypeAt(type, index) {
|
|
8048
|
+
if (!this.ValidationRules) {
|
|
8049
|
+
return;
|
|
8050
|
+
}
|
|
8051
|
+
if (index < 0) {
|
|
8052
|
+
return;
|
|
8053
|
+
}
|
|
8054
|
+
let current = 0;
|
|
8055
|
+
for (let i = 0; i < this.ValidationRules.length; i++) {
|
|
8056
|
+
if (this.ValidationRules[i].type === type) {
|
|
8057
|
+
if (current === index) {
|
|
8058
|
+
this.ValidationRules.splice(i, 1);
|
|
8059
|
+
return;
|
|
8060
|
+
}
|
|
8061
|
+
current++;
|
|
8062
|
+
}
|
|
8063
|
+
}
|
|
8064
|
+
}
|
|
8065
|
+
static groupValidationRulesByColumn(rules) {
|
|
8066
|
+
return rules.reduce((acc, rule) => {
|
|
8067
|
+
const column = rule.column;
|
|
8068
|
+
if (!acc[column]) {
|
|
8069
|
+
acc[column] = [];
|
|
8070
|
+
}
|
|
8071
|
+
acc[column].push(rule);
|
|
8072
|
+
return acc;
|
|
8073
|
+
}, {});
|
|
8074
|
+
}
|
|
8075
|
+
static groupValidationRulesByType(rules) {
|
|
8076
|
+
return rules.reduce((acc, rule) => {
|
|
8077
|
+
const type = rule.type;
|
|
8078
|
+
if (!acc[type]) {
|
|
8079
|
+
acc[type] = [];
|
|
8080
|
+
}
|
|
8081
|
+
acc[type].push(rule);
|
|
8082
|
+
return acc;
|
|
8083
|
+
}, {});
|
|
8084
|
+
}
|
|
8085
|
+
/**
|
|
8086
|
+
* Parse escaped JSON string containing validation_rules to ValidationRule[]
|
|
8087
|
+
* @param escapedString - Escaped JSON string like "validation_rules\":[{\"column\":\"class_label\",...}]"
|
|
8088
|
+
* @returns Parsed ValidationRule array
|
|
8089
|
+
*/
|
|
8090
|
+
static parseValidationRulesFromEscapedString(escapedString) {
|
|
8091
|
+
let processedString = escapedString.trim();
|
|
8092
|
+
// Remove surrounding quotes if present (e.g., '"{"validation_rules":...}"' -> '{"validation_rules":...}')
|
|
8093
|
+
// Check for both single and double quotes
|
|
8094
|
+
if (((processedString.startsWith('"') && processedString.endsWith('"')) ||
|
|
8095
|
+
(processedString.startsWith("'") && processedString.endsWith("'"))) &&
|
|
8096
|
+
processedString.length > 1) {
|
|
8097
|
+
processedString = processedString.slice(1, -1).trim();
|
|
8098
|
+
}
|
|
8099
|
+
// Unescape the string (replace \" with ")
|
|
8100
|
+
// Handle both \" and \\\" cases to avoid double-escaping issues
|
|
8101
|
+
let unescapedString = processedString;
|
|
8102
|
+
// First handle \\\" -> \"
|
|
8103
|
+
unescapedString = unescapedString.replace(/\\\\"/g, '\\"');
|
|
8104
|
+
// Then handle \" -> "
|
|
8105
|
+
unescapedString = unescapedString.replace(/\\"/g, '"');
|
|
8106
|
+
// Try to parse as JSON
|
|
8107
|
+
let parsed;
|
|
8108
|
+
try {
|
|
8109
|
+
// First try parsing directly
|
|
8110
|
+
parsed = JSON.parse(unescapedString);
|
|
8111
|
+
}
|
|
8112
|
+
catch (error) {
|
|
8113
|
+
// If parsing fails, try different approaches
|
|
8114
|
+
const trimmed = unescapedString.trim();
|
|
8115
|
+
// If it starts with "validation_rules" but is not wrapped in braces
|
|
8116
|
+
if (trimmed.startsWith('"validation_rules"') ||
|
|
8117
|
+
trimmed.startsWith("validation_rules")) {
|
|
8118
|
+
// Try wrapping in braces
|
|
8119
|
+
const wrapped = trimmed.startsWith('"')
|
|
8120
|
+
? `{${trimmed}}`
|
|
8121
|
+
: `{"${trimmed}}`;
|
|
8122
|
+
try {
|
|
8123
|
+
parsed = JSON.parse(wrapped);
|
|
8124
|
+
}
|
|
8125
|
+
catch (e) {
|
|
8126
|
+
// If still fails, try without the leading quote
|
|
8127
|
+
const withoutQuote = trimmed.replace(/^"/, "");
|
|
8128
|
+
parsed = JSON.parse(`{"${withoutQuote}`);
|
|
8129
|
+
}
|
|
8130
|
+
}
|
|
8131
|
+
else if (trimmed.startsWith("{") && trimmed.endsWith("}")) {
|
|
8132
|
+
// Already looks like JSON object, try parsing again after trimming
|
|
8133
|
+
parsed = JSON.parse(trimmed);
|
|
8134
|
+
}
|
|
8135
|
+
else {
|
|
8136
|
+
throw error;
|
|
8137
|
+
}
|
|
8138
|
+
}
|
|
8139
|
+
// Extract validation_rules array
|
|
8140
|
+
let validationRules;
|
|
8141
|
+
// If it's already an array, use it directly
|
|
8142
|
+
if (Array.isArray(parsed)) {
|
|
8143
|
+
validationRules = parsed;
|
|
8144
|
+
}
|
|
8145
|
+
else if (parsed.validation_rules) {
|
|
8146
|
+
// If it's an object with validation_rules property
|
|
8147
|
+
validationRules = parsed.validation_rules;
|
|
8148
|
+
}
|
|
8149
|
+
else if (typeof parsed === "object") {
|
|
8150
|
+
// If it's an object but no validation_rules property, try to use it as is
|
|
8151
|
+
validationRules = parsed;
|
|
8152
|
+
}
|
|
8153
|
+
else {
|
|
8154
|
+
throw new Error("Invalid format: validation_rules not found");
|
|
8155
|
+
}
|
|
8156
|
+
// Ensure validationRules is an array
|
|
8157
|
+
if (!Array.isArray(validationRules)) {
|
|
8158
|
+
throw new Error("Invalid format: validation_rules must be an array");
|
|
8159
|
+
}
|
|
8160
|
+
const parsedRules = ValidationTemplate.parseValidationRules(validationRules);
|
|
8161
|
+
parsedRules._escapedString = escapedString;
|
|
8162
|
+
return parsedRules;
|
|
8163
|
+
}
|
|
8164
|
+
/**
|
|
8165
|
+
* Convert ValidationRule[] to escaped JSON string
|
|
8166
|
+
* @param rules - ValidationRule array to stringify
|
|
8167
|
+
* @returns Escaped JSON string with format: "{\"validation_rules\":[...]}"
|
|
8168
|
+
*/
|
|
8169
|
+
static stringifyValidationRulesToEscapedString(rules) {
|
|
8170
|
+
// Convert ValidationRule[] to plain objects for JSON serialization
|
|
8171
|
+
const plainRules = rules.map((rule) => {
|
|
8172
|
+
const plainRule = {
|
|
8173
|
+
column: rule.column,
|
|
8174
|
+
name: rule.name,
|
|
8175
|
+
type: rule.type,
|
|
8176
|
+
};
|
|
8177
|
+
switch (rule.type) {
|
|
8178
|
+
case VALIDATION_TYPE.COMPLETENESS:
|
|
8179
|
+
const completenessRule = rule;
|
|
8180
|
+
return Object.assign(Object.assign({}, plainRule), { min_completeness: completenessRule.min_completeness, weight: completenessRule.weight });
|
|
8181
|
+
case VALIDATION_TYPE.DATA_TYPE:
|
|
8182
|
+
const dataTypeRule = rule;
|
|
8183
|
+
return Object.assign(Object.assign({}, plainRule), { expected_type: dataTypeRule.expected_type, weight: dataTypeRule.weight });
|
|
8184
|
+
case VALIDATION_TYPE.PATTERN:
|
|
8185
|
+
const patternRule = rule;
|
|
8186
|
+
return Object.assign(Object.assign({}, plainRule), { pattern: patternRule.pattern, weight: patternRule.weight });
|
|
8187
|
+
case VALIDATION_TYPE.UNIQUENESS:
|
|
8188
|
+
const uniquenessRule = rule;
|
|
8189
|
+
return Object.assign(Object.assign({}, plainRule), { weight: uniquenessRule.weight });
|
|
8190
|
+
default:
|
|
8191
|
+
return plainRule;
|
|
8192
|
+
}
|
|
8193
|
+
});
|
|
8194
|
+
// Create object with validation_rules property
|
|
8195
|
+
if (rules._escapedString) {
|
|
8196
|
+
return rules._escapedString;
|
|
8197
|
+
}
|
|
8198
|
+
const obj = { validation_rules: plainRules };
|
|
8199
|
+
const jsonString = JSON.stringify(obj);
|
|
8200
|
+
const escaped = jsonString.replace(/"/g, '\\"');
|
|
8201
|
+
return '"' + escaped + '"';
|
|
7835
8202
|
}
|
|
7836
8203
|
}
|
|
7837
|
-
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (
|
|
8204
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ValidationTemplate);
|
|
7838
8205
|
|
|
7839
8206
|
|
|
7840
8207
|
/***/ }),
|
|
@@ -8106,7 +8473,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
8106
8473
|
/* 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");
|
|
8107
8474
|
/* 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");
|
|
8108
8475
|
/* 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");
|
|
8109
|
-
/* harmony import */ var
|
|
8476
|
+
/* 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");
|
|
8110
8477
|
/* harmony import */ var _SODAS_SDK_FILE_dataFile__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../SODAS_SDK_FILE/dataFile */ "./lib/SODAS_SDK_FILE/dataFile.ts");
|
|
8111
8478
|
/* harmony import */ var _SODAS_SDK_FILE_thumbnailFile__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../SODAS_SDK_FILE/thumbnailFile */ "./lib/SODAS_SDK_FILE/thumbnailFile.ts");
|
|
8112
8479
|
/* harmony import */ var _error__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./error */ "./lib/core/error.ts");
|
|
@@ -8196,9 +8563,9 @@ class Config {
|
|
|
8196
8563
|
console.error("DATAHUB_API_URL not found in config");
|
|
8197
8564
|
}
|
|
8198
8565
|
if (this.governanceBaseUrl) {
|
|
8199
|
-
_SODAS_SDK_FILE_artifactFile__WEBPACK_IMPORTED_MODULE_6__["default"].configureAPIURL(SLASH_DELETED_GOVERNANCE_PORTAL_API_URL);
|
|
8200
8566
|
_SODAS_SDK_CLASS_dictionary_vocabulary__WEBPACK_IMPORTED_MODULE_5__["default"].configureAPIURL(SLASH_DELETED_GOVERNANCE_PORTAL_API_URL);
|
|
8201
8567
|
_SODAS_SDK_CLASS_dictionary_term__WEBPACK_IMPORTED_MODULE_4__["default"].configureAPIURL(SLASH_DELETED_GOVERNANCE_PORTAL_API_URL);
|
|
8568
|
+
_SODAS_SDK_CLASS_template_validation__WEBPACK_IMPORTED_MODULE_6__["default"].configureAPIURL(SLASH_DELETED_GOVERNANCE_PORTAL_API_URL);
|
|
8202
8569
|
}
|
|
8203
8570
|
else {
|
|
8204
8571
|
console.error("GOVERNANCE_API_URL not found in config");
|
|
@@ -8472,6 +8839,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
8472
8839
|
/* 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");
|
|
8473
8840
|
/* 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");
|
|
8474
8841
|
/* 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");
|
|
8842
|
+
/* 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");
|
|
8843
|
+
|
|
8475
8844
|
|
|
8476
8845
|
|
|
8477
8846
|
|
|
@@ -8487,6 +8856,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
8487
8856
|
function setGovernanceBearerToken(token) {
|
|
8488
8857
|
_SODAS_SDK_CLASS_dictionary_vocabulary__WEBPACK_IMPORTED_MODULE_5__["default"].BEARER_TOKEN = token;
|
|
8489
8858
|
_SODAS_SDK_CLASS_dictionary_term__WEBPACK_IMPORTED_MODULE_4__["default"].BEARER_TOKEN = token;
|
|
8859
|
+
_SODAS_SDK_CLASS_template_validation__WEBPACK_IMPORTED_MODULE_6__["default"].BEARER_TOKEN = token;
|
|
8490
8860
|
}
|
|
8491
8861
|
function setLegacyDatahubBearerToken(token) {
|
|
8492
8862
|
_SODAS_SDK_CLASS_DCAT_dataset__WEBPACK_IMPORTED_MODULE_1__["default"].BEARER_TOKEN = token;
|