cocoda-sdk 3.4.6 → 3.4.8
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/cjs/index.cjs +165 -13
- package/dist/cocoda-sdk.js +9 -7
- package/dist/cocoda-sdk.js.LICENSES.txt +3 -3
- package/dist/cocoda-sdk.js.map +4 -4
- package/dist/esm/providers/base-provider.js +2 -1
- package/dist/esm/providers/index.js +2 -0
- package/dist/esm/providers/label-search-suggestion-provider.js +2 -1
- package/dist/esm/providers/lobid-api-provider.js +4 -0
- package/dist/esm/providers/mycore-provider.js +2 -1
- package/dist/esm/providers/not-api-provider.js +146 -0
- package/package.json +10 -10
package/dist/cjs/index.cjs
CHANGED
|
@@ -38,6 +38,7 @@ __export(src_exports, {
|
|
|
38
38
|
LocalMappingsProvider: () => LocalMappingsProvider,
|
|
39
39
|
MappingsApiProvider: () => MappingsApiProvider,
|
|
40
40
|
MyCoReProvider: () => MyCoReProvider,
|
|
41
|
+
NoTApiProvider: () => NoTApiProvider,
|
|
41
42
|
OccurrencesApiProvider: () => OccurrencesApiProvider,
|
|
42
43
|
ReconciliationApiProvider: () => ReconciliationApiProvider,
|
|
43
44
|
SkohubProvider: () => SkohubProvider,
|
|
@@ -121,7 +122,7 @@ var InvalidProviderError = class extends CDKError {
|
|
|
121
122
|
};
|
|
122
123
|
|
|
123
124
|
// src/lib/CocodaSDK.js
|
|
124
|
-
var
|
|
125
|
+
var import_axios5 = __toESM(require("axios"), 1);
|
|
125
126
|
|
|
126
127
|
// src/utils/lodash.js
|
|
127
128
|
var import_get = __toESM(require("lodash/get.js"), 1);
|
|
@@ -141,7 +142,7 @@ var import_omit = __toESM(require("lodash/omit.js"), 1);
|
|
|
141
142
|
var import_concat = __toESM(require("lodash/concat.js"), 1);
|
|
142
143
|
|
|
143
144
|
// src/lib/CocodaSDK.js
|
|
144
|
-
var
|
|
145
|
+
var import_jskos_tools14 = __toESM(require("jskos-tools"), 1);
|
|
145
146
|
|
|
146
147
|
// src/providers/index.js
|
|
147
148
|
var providers_exports = {};
|
|
@@ -154,6 +155,7 @@ __export(providers_exports, {
|
|
|
154
155
|
LocalMappingsProvider: () => LocalMappingsProvider,
|
|
155
156
|
MappingsApiProvider: () => MappingsApiProvider,
|
|
156
157
|
MyCoReProvider: () => MyCoReProvider,
|
|
158
|
+
NoTApiProvider: () => NoTApiProvider,
|
|
157
159
|
OccurrencesApiProvider: () => OccurrencesApiProvider,
|
|
158
160
|
ReconciliationApiProvider: () => ReconciliationApiProvider,
|
|
159
161
|
SkohubProvider: () => SkohubProvider,
|
|
@@ -423,8 +425,9 @@ var BaseProvider = class {
|
|
|
423
425
|
const statusCode = import_get.default(error, "response.status");
|
|
424
426
|
if (this._retryConfig.methods.includes(method) && this._retryConfig.statusCodes.includes(statusCode) && count < this._retryConfig.count) {
|
|
425
427
|
error.config._retryCount = count + 1;
|
|
426
|
-
if (error.config.data)
|
|
428
|
+
if (error.config.data) {
|
|
427
429
|
error.config.data = JSON.parse(error.config.data);
|
|
430
|
+
}
|
|
428
431
|
return new Promise((resolve, reject) => {
|
|
429
432
|
setTimeout(() => {
|
|
430
433
|
this.axios(error.config).then(resolve).catch(reject);
|
|
@@ -2549,8 +2552,9 @@ var LabelSearchSuggestionProvider = class extends BaseProvider {
|
|
|
2549
2552
|
fallbackToUri: false,
|
|
2550
2553
|
language
|
|
2551
2554
|
});
|
|
2552
|
-
if (!label2)
|
|
2555
|
+
if (!label2) {
|
|
2553
2556
|
continue;
|
|
2557
|
+
}
|
|
2554
2558
|
results = await this._getResults({ ...config, label: label2, targetScheme, limit });
|
|
2555
2559
|
if (results.length) {
|
|
2556
2560
|
break;
|
|
@@ -3645,6 +3649,9 @@ function toJSKOS(data3) {
|
|
|
3645
3649
|
if (data3.variantName) {
|
|
3646
3650
|
concept.altLabel = { de: data3.variantName };
|
|
3647
3651
|
}
|
|
3652
|
+
if (data3.usingInstructions?.length) {
|
|
3653
|
+
concept.scopeNote = { de: data3.usingInstructions };
|
|
3654
|
+
}
|
|
3648
3655
|
concept.type = data3.type.map((type) => gndTypeScheme.uriFromNotation(type)).filter(Boolean);
|
|
3649
3656
|
concept.broader = [];
|
|
3650
3657
|
broaderProps.forEach((prop) => {
|
|
@@ -3793,6 +3800,7 @@ var LobidApiProvider = class extends BaseProvider {
|
|
|
3793
3800
|
}
|
|
3794
3801
|
};
|
|
3795
3802
|
LobidApiProvider.providerName = "LobidApi";
|
|
3803
|
+
LobidApiProvider.providerType = "http://bartoc.org/api-type/lobid-gnd";
|
|
3796
3804
|
|
|
3797
3805
|
// src/providers/mycore-provider.js
|
|
3798
3806
|
var import_jskos_tools12 = __toESM(require("jskos-tools"), 1);
|
|
@@ -3895,8 +3903,9 @@ var MyCoReProvider = class extends BaseProvider {
|
|
|
3895
3903
|
* Helper function that replaces `narrower` key with [null] if it has values. Use this before returning concepts.
|
|
3896
3904
|
*/
|
|
3897
3905
|
_removeNarrower(concept) {
|
|
3898
|
-
if (!concept)
|
|
3906
|
+
if (!concept) {
|
|
3899
3907
|
return concept;
|
|
3908
|
+
}
|
|
3900
3909
|
return Object.assign({}, concept, { narrower: concept.narrower && concept.narrower.length ? [null] : [] });
|
|
3901
3910
|
}
|
|
3902
3911
|
/**
|
|
@@ -4047,6 +4056,148 @@ var MyCoReProvider = class extends BaseProvider {
|
|
|
4047
4056
|
MyCoReProvider.providerName = "MyCoRe";
|
|
4048
4057
|
MyCoReProvider.providerType = "http://bartoc.org/api-type/mycore";
|
|
4049
4058
|
|
|
4059
|
+
// src/providers/not-api-provider.js
|
|
4060
|
+
var import_axios4 = __toESM(require("axios"), 1);
|
|
4061
|
+
var import_jskos_tools13 = __toESM(require("jskos-tools"), 1);
|
|
4062
|
+
var cache3 = {
|
|
4063
|
+
schemes: []
|
|
4064
|
+
};
|
|
4065
|
+
var NoTApiProvider = class extends BaseProvider {
|
|
4066
|
+
_prepare() {
|
|
4067
|
+
this.has.schemes = true;
|
|
4068
|
+
this.has.top = false;
|
|
4069
|
+
this.has.data = true;
|
|
4070
|
+
this.has.concepts = true;
|
|
4071
|
+
this.has.narrower = false;
|
|
4072
|
+
this.has.ancestors = false;
|
|
4073
|
+
this.has.suggest = true;
|
|
4074
|
+
this.has.search = true;
|
|
4075
|
+
listOfCapabilities.filter((c) => !this.has[c]).forEach((c) => {
|
|
4076
|
+
this.has[c] = false;
|
|
4077
|
+
});
|
|
4078
|
+
}
|
|
4079
|
+
/**
|
|
4080
|
+
* Used by `registryForScheme` (see src/lib/CocodaSDK.js) to determine a provider config for a concept schceme.
|
|
4081
|
+
*
|
|
4082
|
+
* @param {Object} options
|
|
4083
|
+
* @param {Object} options.url API URL for server
|
|
4084
|
+
* @returns {Object} provider configuration
|
|
4085
|
+
*/
|
|
4086
|
+
static _registryConfigForBartocApiConfig({ url } = {}) {
|
|
4087
|
+
if (!url) {
|
|
4088
|
+
return null;
|
|
4089
|
+
}
|
|
4090
|
+
return {
|
|
4091
|
+
api: url
|
|
4092
|
+
};
|
|
4093
|
+
}
|
|
4094
|
+
async getSchemes() {
|
|
4095
|
+
if (!cache3.schemes.length) {
|
|
4096
|
+
const result = await import_axios4.default.post(this._api.api, {
|
|
4097
|
+
query: "query sources { sources { name uri description alternateName } }",
|
|
4098
|
+
operationName: "sources"
|
|
4099
|
+
});
|
|
4100
|
+
const schemes = result?.data?.data?.sources || [];
|
|
4101
|
+
if (schemes.length) {
|
|
4102
|
+
cache3.schemes = schemes.map((scheme) => {
|
|
4103
|
+
const jskos15 = {
|
|
4104
|
+
uri: scheme.uri,
|
|
4105
|
+
prefLabel: { und: scheme.name }
|
|
4106
|
+
};
|
|
4107
|
+
if (scheme.desciption) {
|
|
4108
|
+
jskos15.description = { und: [scheme.description] };
|
|
4109
|
+
}
|
|
4110
|
+
if (scheme.alternateName) {
|
|
4111
|
+
jskos15.notation = [scheme.alternateName];
|
|
4112
|
+
}
|
|
4113
|
+
return jskos15;
|
|
4114
|
+
});
|
|
4115
|
+
} else {
|
|
4116
|
+
return [];
|
|
4117
|
+
}
|
|
4118
|
+
}
|
|
4119
|
+
return cache3.schemes;
|
|
4120
|
+
}
|
|
4121
|
+
// async getTop() {
|
|
4122
|
+
// }
|
|
4123
|
+
async getConcepts({ concepts }) {
|
|
4124
|
+
if (!concepts) {
|
|
4125
|
+
throw new InvalidOrMissingParameterError({ parameter: "concepts" });
|
|
4126
|
+
}
|
|
4127
|
+
if (!Array.isArray(concepts)) {
|
|
4128
|
+
concepts = [concepts];
|
|
4129
|
+
}
|
|
4130
|
+
const result = await import_axios4.default.post(this._api.api, {
|
|
4131
|
+
query: `query { lookup( uris: [${concepts.map((c) => `"${c.uri}"`)}], ) { uri source { ... on Source { uri } } result { ... on Term { uri prefLabel scopeNote altLabel broader { uri } narrower { uri } } } } }`
|
|
4132
|
+
});
|
|
4133
|
+
return (result.data?.data?.lookup || []).map((entry) => {
|
|
4134
|
+
const concept = {
|
|
4135
|
+
uri: entry.uri,
|
|
4136
|
+
inScheme: [cache3.schemes.find((scheme) => import_jskos_tools13.default.compare(scheme, { uri: entry.source.uri }))]
|
|
4137
|
+
};
|
|
4138
|
+
if (entry.result?.prefLabel?.[0]) {
|
|
4139
|
+
concept.prefLabel = { und: entry.result.prefLabel[0] };
|
|
4140
|
+
}
|
|
4141
|
+
if (entry.result?.altLabel?.[0]) {
|
|
4142
|
+
concept.altLabel = { und: entry.result.altLabel };
|
|
4143
|
+
}
|
|
4144
|
+
if (entry.result?.scopeNote?.[0]) {
|
|
4145
|
+
concept.scopeNote = { und: entry.result.scopeNote };
|
|
4146
|
+
}
|
|
4147
|
+
if (entry.result?.broader?.length) {
|
|
4148
|
+
concept.broader = entry.result.broader;
|
|
4149
|
+
}
|
|
4150
|
+
if (entry.result?.narrower?.length) {
|
|
4151
|
+
concept.narrower = entry.result.narrower;
|
|
4152
|
+
}
|
|
4153
|
+
return concept;
|
|
4154
|
+
});
|
|
4155
|
+
}
|
|
4156
|
+
// async getNarrower({ concept }) {
|
|
4157
|
+
// }
|
|
4158
|
+
// async getAncestors({ concept }) {
|
|
4159
|
+
// }
|
|
4160
|
+
async suggest(config) {
|
|
4161
|
+
const search = config.search;
|
|
4162
|
+
const results = await this.search(config);
|
|
4163
|
+
return [
|
|
4164
|
+
search,
|
|
4165
|
+
results.map((r) => import_jskos_tools13.default.prefLabel(r, { fallbackToUri: false })),
|
|
4166
|
+
[],
|
|
4167
|
+
results.map((r) => r.uri)
|
|
4168
|
+
];
|
|
4169
|
+
}
|
|
4170
|
+
async search({ scheme, search }) {
|
|
4171
|
+
if (!search) {
|
|
4172
|
+
throw new InvalidOrMissingParameterError({ parameter: "search" });
|
|
4173
|
+
}
|
|
4174
|
+
if (!scheme || !import_jskos_tools13.default.isContainedIn(scheme, cache3.schemes)) {
|
|
4175
|
+
throw new InvalidOrMissingParameterError({ parameter: "scheme" });
|
|
4176
|
+
}
|
|
4177
|
+
const result = await import_axios4.default.post(this._api.api, {
|
|
4178
|
+
query: `query { terms( sources: ["${scheme.uri}"] query: "${search}" ) { source { uri } result { ... on Terms { terms { uri prefLabel scopeNote } } } }}`
|
|
4179
|
+
});
|
|
4180
|
+
return (result.data?.data?.terms?.[0]?.result?.terms || []).map((concept) => {
|
|
4181
|
+
const jskos15 = {
|
|
4182
|
+
uri: concept.uri,
|
|
4183
|
+
inScheme: [scheme]
|
|
4184
|
+
};
|
|
4185
|
+
if (concept.prefLabel?.[0]) {
|
|
4186
|
+
jskos15.prefLabel = { und: concept.prefLabel[0] };
|
|
4187
|
+
}
|
|
4188
|
+
if (concept.altLabel?.[0]) {
|
|
4189
|
+
jskos15.altLabel = { und: concept.altLabel };
|
|
4190
|
+
}
|
|
4191
|
+
if (concept.scopeNote?.[0]) {
|
|
4192
|
+
jskos15.scopeNote = { und: concept.scopeNote[0] };
|
|
4193
|
+
}
|
|
4194
|
+
return jskos15;
|
|
4195
|
+
});
|
|
4196
|
+
}
|
|
4197
|
+
};
|
|
4198
|
+
NoTApiProvider.providerName = "NoTApi";
|
|
4199
|
+
NoTApiProvider.providerType = "http://bartoc.org/api-type/noterms";
|
|
4200
|
+
|
|
4050
4201
|
// src/lib/CocodaSDK.js
|
|
4051
4202
|
var providers = {
|
|
4052
4203
|
[BaseProvider.providerName]: BaseProvider,
|
|
@@ -4075,7 +4226,7 @@ var CocodaSDK = class {
|
|
|
4075
4226
|
*/
|
|
4076
4227
|
constructor(config) {
|
|
4077
4228
|
this.config = config;
|
|
4078
|
-
this.axios =
|
|
4229
|
+
this.axios = import_axios5.default.create();
|
|
4079
4230
|
}
|
|
4080
4231
|
/**
|
|
4081
4232
|
* Method to set the configuration.
|
|
@@ -4331,7 +4482,7 @@ var CocodaSDK = class {
|
|
|
4331
4482
|
scheme._registry = registry;
|
|
4332
4483
|
scheme.__DETAILSLOADED__ = 1;
|
|
4333
4484
|
scheme.type = scheme.type || ["http://www.w3.org/2004/02/skos/core#ConceptScheme"];
|
|
4334
|
-
let otherScheme = schemes.find((s) =>
|
|
4485
|
+
let otherScheme = schemes.find((s) => import_jskos_tools14.default.compare(s, scheme)), prio, otherPrio, override = false;
|
|
4335
4486
|
if (otherScheme) {
|
|
4336
4487
|
prio = this.config.registries.indexOf(registry);
|
|
4337
4488
|
if (prio != -1) {
|
|
@@ -4353,19 +4504,19 @@ var CocodaSDK = class {
|
|
|
4353
4504
|
}
|
|
4354
4505
|
if (!otherScheme || override) {
|
|
4355
4506
|
if (override) {
|
|
4356
|
-
let otherSchemeIndex = schemes.findIndex((s) =>
|
|
4507
|
+
let otherSchemeIndex = schemes.findIndex((s) => import_jskos_tools14.default.compare(s, otherScheme));
|
|
4357
4508
|
if (otherSchemeIndex != -1) {
|
|
4358
4509
|
schemes.splice(otherSchemeIndex, 1);
|
|
4359
4510
|
}
|
|
4360
|
-
scheme =
|
|
4511
|
+
scheme = import_jskos_tools14.default.merge(scheme, import_omit.default(otherScheme, ["concepts", "topConcepts"]), { mergeUris: true, skipPaths: ["_registry"] });
|
|
4361
4512
|
}
|
|
4362
4513
|
scheme._registry = registry;
|
|
4363
4514
|
schemes.push(scheme);
|
|
4364
4515
|
} else {
|
|
4365
|
-
const index = schemes.findIndex((s) =>
|
|
4516
|
+
const index = schemes.findIndex((s) => import_jskos_tools14.default.compare(s, scheme));
|
|
4366
4517
|
if (index != -1) {
|
|
4367
4518
|
const otherSchemeRegistry = schemes[index]._registry;
|
|
4368
|
-
schemes[index] =
|
|
4519
|
+
schemes[index] = import_jskos_tools14.default.merge(schemes[index], import_omit.default(scheme, ["concepts", "topConcepts"]), { mergeUris: true, skipPaths: ["_registry"] });
|
|
4369
4520
|
schemes[index]._registry = otherSchemeRegistry;
|
|
4370
4521
|
}
|
|
4371
4522
|
}
|
|
@@ -4387,7 +4538,7 @@ var CocodaSDK = class {
|
|
|
4387
4538
|
scheme._registry = newRegistry;
|
|
4388
4539
|
}
|
|
4389
4540
|
});
|
|
4390
|
-
return
|
|
4541
|
+
return import_jskos_tools14.default.sortSchemes(schemes.filter(Boolean));
|
|
4391
4542
|
}
|
|
4392
4543
|
registryForScheme(scheme) {
|
|
4393
4544
|
let registry = scheme._registry;
|
|
@@ -4398,7 +4549,7 @@ var CocodaSDK = class {
|
|
|
4398
4549
|
const url = config.url;
|
|
4399
4550
|
if (registryCache[url]) {
|
|
4400
4551
|
const registry2 = registryCache[url];
|
|
4401
|
-
if (Array.isArray(registry2._jskos.schemes) && !
|
|
4552
|
+
if (Array.isArray(registry2._jskos.schemes) && !import_jskos_tools14.default.isContainedIn(scheme, registry2._jskos.schemes)) {
|
|
4402
4553
|
registry2._jskos.schemes.push(scheme);
|
|
4403
4554
|
}
|
|
4404
4555
|
return registry2;
|
|
@@ -4449,6 +4600,7 @@ function addAllProviders(_cdk) {
|
|
|
4449
4600
|
LocalMappingsProvider,
|
|
4450
4601
|
MappingsApiProvider,
|
|
4451
4602
|
MyCoReProvider,
|
|
4603
|
+
NoTApiProvider,
|
|
4452
4604
|
OccurrencesApiProvider,
|
|
4453
4605
|
ReconciliationApiProvider,
|
|
4454
4606
|
SkohubProvider,
|