cocoda-sdk 3.3.3 → 3.3.4
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 +809 -0
- package/dist/cocoda-sdk.js +16 -11
- package/dist/cocoda-sdk.js.LICENSES.txt +177 -3
- package/dist/cocoda-sdk.js.map +4 -4
- package/dist/esm/errors/index.js +22 -0
- package/dist/esm/lib/CocodaSDK.js +99 -0
- package/dist/esm/providers/base-provider.js +88 -0
- package/dist/esm/providers/concept-api-provider.js +108 -0
- package/dist/esm/providers/label-search-suggestion-provider.js +39 -0
- package/dist/esm/providers/loc-api-provider.js +58 -0
- package/dist/esm/providers/local-mappings-provider.js +57 -0
- package/dist/esm/providers/mappings-api-provider.js +116 -0
- package/dist/esm/providers/mycore-provider.js +42 -0
- package/dist/esm/providers/occurrences-api-provider.js +32 -0
- package/dist/esm/providers/reconciliation-api-provider.js +21 -0
- package/dist/esm/providers/skohub-provider.js +26 -0
- package/dist/esm/providers/skosmos-api-provider.js +89 -0
- package/dist/esm/utils/index.js +8 -0
- package/package.json +5 -5
|
@@ -4,6 +4,9 @@ import * as _ from "../utils/lodash.js";
|
|
|
4
4
|
import * as errors from "../errors/index.js";
|
|
5
5
|
import { listOfCapabilities } from "../utils/index.js";
|
|
6
6
|
class SkosmosApiProvider extends BaseProvider {
|
|
7
|
+
/**
|
|
8
|
+
* @private
|
|
9
|
+
*/
|
|
7
10
|
_prepare() {
|
|
8
11
|
this.has.schemes = true;
|
|
9
12
|
this.has.top = true;
|
|
@@ -18,6 +21,14 @@ class SkosmosApiProvider extends BaseProvider {
|
|
|
18
21
|
this.has[c] = false;
|
|
19
22
|
});
|
|
20
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* Used by `registryForScheme` (see src/lib/CocodaSDK.js) to determine a provider config for a concept schceme.
|
|
26
|
+
*
|
|
27
|
+
* @param {Object} options
|
|
28
|
+
* @param {Object} options.url API URL for BARTOC instance
|
|
29
|
+
* @param {Object} options.scheme scheme for which the config is requested
|
|
30
|
+
* @returns {Object} provider configuration
|
|
31
|
+
*/
|
|
21
32
|
static _registryConfigForBartocApiConfig({ url, scheme } = {}) {
|
|
22
33
|
if (!url || !scheme) {
|
|
23
34
|
return null;
|
|
@@ -32,9 +43,15 @@ class SkosmosApiProvider extends BaseProvider {
|
|
|
32
43
|
config.schemes = [scheme];
|
|
33
44
|
return config;
|
|
34
45
|
}
|
|
46
|
+
/**
|
|
47
|
+
* @private
|
|
48
|
+
*/
|
|
35
49
|
get _language() {
|
|
36
50
|
return this.languages[0] || this._defaultLanguages[0] || "en";
|
|
37
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* @private
|
|
54
|
+
*/
|
|
38
55
|
_getApiUrl(scheme, endpoint, params) {
|
|
39
56
|
const VOCID = scheme && scheme.VOCID || _.get(this.schemes.find((s) => jskos.compare(s, scheme)), "VOCID");
|
|
40
57
|
if (!VOCID) {
|
|
@@ -48,6 +65,9 @@ class SkosmosApiProvider extends BaseProvider {
|
|
|
48
65
|
const paramString = Object.keys(params).map((k) => `${k}=${encodeURIComponent(params[k])}`).join("&");
|
|
49
66
|
return `${this._api.api}${VOCID}${endpoint}${paramString ? "?" + paramString : ""}`;
|
|
50
67
|
}
|
|
68
|
+
/**
|
|
69
|
+
* @private
|
|
70
|
+
*/
|
|
51
71
|
_getDataUrl(concept, { addFormatParameter = true } = {}) {
|
|
52
72
|
const scheme = _.get(concept, "inScheme[0]");
|
|
53
73
|
if (!concept || !concept.uri) {
|
|
@@ -55,6 +75,11 @@ class SkosmosApiProvider extends BaseProvider {
|
|
|
55
75
|
}
|
|
56
76
|
return this._getApiUrl(scheme, "/data", addFormatParameter ? { format: "application/json" } : {});
|
|
57
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* Returns the main vocabulary URI by requesting the scheme info and saving it in a cache.
|
|
80
|
+
*
|
|
81
|
+
* @private
|
|
82
|
+
*/
|
|
58
83
|
async _getSchemeUri(scheme) {
|
|
59
84
|
this._approvedSchemes = this._approvedSchemes || [];
|
|
60
85
|
this._rejectedSchemes = this._rejectedSchemes || [];
|
|
@@ -85,6 +110,9 @@ class SkosmosApiProvider extends BaseProvider {
|
|
|
85
110
|
return null;
|
|
86
111
|
}
|
|
87
112
|
}
|
|
113
|
+
/**
|
|
114
|
+
* @private
|
|
115
|
+
*/
|
|
88
116
|
_toJskosConcept(skosmosConcept, { concept, scheme, result, language } = {}) {
|
|
89
117
|
if (!skosmosConcept) {
|
|
90
118
|
return null;
|
|
@@ -157,6 +185,12 @@ class SkosmosApiProvider extends BaseProvider {
|
|
|
157
185
|
}
|
|
158
186
|
return concept;
|
|
159
187
|
}
|
|
188
|
+
/**
|
|
189
|
+
* Returns all concept schemes.
|
|
190
|
+
*
|
|
191
|
+
* @param {Object} config
|
|
192
|
+
* @returns {Object[]} array of JSKOS concept scheme objects
|
|
193
|
+
*/
|
|
160
194
|
async getSchemes({ ...config }) {
|
|
161
195
|
const schemes = [];
|
|
162
196
|
for (let scheme of this.schemes || []) {
|
|
@@ -182,6 +216,13 @@ class SkosmosApiProvider extends BaseProvider {
|
|
|
182
216
|
}
|
|
183
217
|
return schemes;
|
|
184
218
|
}
|
|
219
|
+
/**
|
|
220
|
+
* Returns top concepts.
|
|
221
|
+
*
|
|
222
|
+
* @param {Object} config
|
|
223
|
+
* @param {Object} config.scheme concept scheme
|
|
224
|
+
* @returns {Object[]} array of JSKOS concept scheme objects
|
|
225
|
+
*/
|
|
185
226
|
async getTop({ scheme, ...config }) {
|
|
186
227
|
const url = this._getApiUrl(scheme, "/topConcepts");
|
|
187
228
|
const schemeUri = await this._getSchemeUri(scheme);
|
|
@@ -205,6 +246,13 @@ class SkosmosApiProvider extends BaseProvider {
|
|
|
205
246
|
}
|
|
206
247
|
return concepts;
|
|
207
248
|
}
|
|
249
|
+
/**
|
|
250
|
+
* Returns details for a list of concepts.
|
|
251
|
+
*
|
|
252
|
+
* @param {Object} config
|
|
253
|
+
* @param {Object[]} config.concepts list of concept objects to load
|
|
254
|
+
* @returns {Object[]} array of JSKOS concept objects
|
|
255
|
+
*/
|
|
208
256
|
async getConcepts({ concepts, ...config }) {
|
|
209
257
|
if (!_.isArray(concepts)) {
|
|
210
258
|
concepts = [concepts];
|
|
@@ -244,6 +292,13 @@ class SkosmosApiProvider extends BaseProvider {
|
|
|
244
292
|
}
|
|
245
293
|
return newConcepts;
|
|
246
294
|
}
|
|
295
|
+
/**
|
|
296
|
+
* Returns narrower concepts for a concept.
|
|
297
|
+
*
|
|
298
|
+
* @param {Object} config
|
|
299
|
+
* @param {Object} config.concept concept object
|
|
300
|
+
* @returns {Object[]} array of JSKOS concept objects
|
|
301
|
+
*/
|
|
247
302
|
async getNarrower({ concept, ...config }) {
|
|
248
303
|
if (!concept || !concept.uri) {
|
|
249
304
|
throw new errors.InvalidOrMissingParameterError({ parameter: "concept" });
|
|
@@ -259,6 +314,13 @@ class SkosmosApiProvider extends BaseProvider {
|
|
|
259
314
|
const concepts = (response.narrower || []).map((c) => this._toJskosConcept(c, { scheme }));
|
|
260
315
|
return concepts;
|
|
261
316
|
}
|
|
317
|
+
/**
|
|
318
|
+
* Returns ancestor concepts for a concept.
|
|
319
|
+
*
|
|
320
|
+
* @param {Object} config
|
|
321
|
+
* @param {Object} config.concept concept object
|
|
322
|
+
* @returns {Object[]} array of JSKOS concept objects
|
|
323
|
+
*/
|
|
262
324
|
async getAncestors({ concept, ...config }) {
|
|
263
325
|
if (!concept || !concept.uri) {
|
|
264
326
|
throw new errors.InvalidOrMissingParameterError({ parameter: "concept" });
|
|
@@ -283,6 +345,16 @@ class SkosmosApiProvider extends BaseProvider {
|
|
|
283
345
|
const concepts = ancestors.map((c) => this._toJskosConcept(c, { scheme })).filter((c) => c.uri != concept.uri);
|
|
284
346
|
return concepts;
|
|
285
347
|
}
|
|
348
|
+
/**
|
|
349
|
+
* Returns suggestion result in OpenSearch Suggest Format.
|
|
350
|
+
*
|
|
351
|
+
* @param {Object} config
|
|
352
|
+
* @param {string} config.search search string
|
|
353
|
+
* @param {Object} [config.scheme] concept scheme to search in
|
|
354
|
+
* @param {number} [config.limit=100] maximum number of search results (default might be overridden by registry)
|
|
355
|
+
* @param {string[]} [config.types=[]] list of type URIs
|
|
356
|
+
* @returns {Array} result in OpenSearch Suggest Format
|
|
357
|
+
*/
|
|
286
358
|
async suggest(config) {
|
|
287
359
|
config._raw = true;
|
|
288
360
|
const concepts = await this.search(config);
|
|
@@ -301,6 +373,16 @@ class SkosmosApiProvider extends BaseProvider {
|
|
|
301
373
|
}
|
|
302
374
|
return result;
|
|
303
375
|
}
|
|
376
|
+
/**
|
|
377
|
+
* Returns concept search results.
|
|
378
|
+
*
|
|
379
|
+
* @param {Object} config
|
|
380
|
+
* @param {string} config.search search string
|
|
381
|
+
* @param {Object} [config.scheme] concept scheme to search in
|
|
382
|
+
* @param {number} [config.limit=100] maximum number of search results (default might be overridden by registry)
|
|
383
|
+
* @param {string[]} [config.types=[]] list of type URIs
|
|
384
|
+
* @returns {Array} array of JSKOS concept objects
|
|
385
|
+
*/
|
|
304
386
|
async search({ search, scheme, limit, types = [], ...config }) {
|
|
305
387
|
const url = this._getApiUrl(scheme, "/search");
|
|
306
388
|
_.set(config, "params.query", `${search}*`);
|
|
@@ -315,6 +397,13 @@ class SkosmosApiProvider extends BaseProvider {
|
|
|
315
397
|
const concepts = (response.results || []).map((c) => this._toJskosConcept(c, { scheme }));
|
|
316
398
|
return concepts;
|
|
317
399
|
}
|
|
400
|
+
/**
|
|
401
|
+
* Returns a list of types.
|
|
402
|
+
*
|
|
403
|
+
* @param {Object} config
|
|
404
|
+
* @param {Object} [config.scheme] concept scheme to load types for
|
|
405
|
+
* @returns {Object[]} array of JSKOS type objects
|
|
406
|
+
*/
|
|
318
407
|
async getTypes({ scheme, ...config }) {
|
|
319
408
|
const url = this._getApiUrl(scheme, "/types");
|
|
320
409
|
const types = [];
|
package/dist/esm/utils/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
const requestMethods = [
|
|
2
|
+
// General
|
|
2
3
|
{
|
|
3
4
|
method: "getRegistries",
|
|
4
5
|
fallback: [],
|
|
@@ -37,6 +38,7 @@ const requestMethods = [
|
|
|
37
38
|
fallback: [],
|
|
38
39
|
type: "Occurrences"
|
|
39
40
|
},
|
|
41
|
+
// Concepts
|
|
40
42
|
{
|
|
41
43
|
method: "getTop",
|
|
42
44
|
fallback: [],
|
|
@@ -62,6 +64,7 @@ const requestMethods = [
|
|
|
62
64
|
fallback: [],
|
|
63
65
|
type: "Concepts"
|
|
64
66
|
},
|
|
67
|
+
// Mappings
|
|
65
68
|
{
|
|
66
69
|
method: "getMapping",
|
|
67
70
|
fallback: null,
|
|
@@ -100,6 +103,11 @@ const requestMethods = [
|
|
|
100
103
|
method: "deleteMappings",
|
|
101
104
|
fallback: []
|
|
102
105
|
},
|
|
106
|
+
// Annotations
|
|
107
|
+
// {
|
|
108
|
+
// method: "getAnnotation",
|
|
109
|
+
// fallback: "",
|
|
110
|
+
// },
|
|
103
111
|
{
|
|
104
112
|
method: "getAnnotations",
|
|
105
113
|
fallback: [],
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cocoda-sdk",
|
|
3
|
-
"version": "3.3.
|
|
3
|
+
"version": "3.3.4",
|
|
4
4
|
"description": "SDK for Cocoda",
|
|
5
5
|
"main": "dist/cjs/index.cjs",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -54,11 +54,11 @@
|
|
|
54
54
|
"devDependencies": {
|
|
55
55
|
"axios-mock-adapter": "^1.21.2",
|
|
56
56
|
"better-docs": "^2.7.2",
|
|
57
|
-
"esbuild": "~0.
|
|
57
|
+
"esbuild": "~0.17.3",
|
|
58
58
|
"esbuild-plugin-ifdef": "^1.0.1",
|
|
59
|
-
"eslint": "^8.
|
|
59
|
+
"eslint": "^8.32.0",
|
|
60
60
|
"eslint-config-gbv": "^1.0.4",
|
|
61
|
-
"glob": "^8.0
|
|
61
|
+
"glob": "^8.1.0",
|
|
62
62
|
"jsdoc": "^3.6.11",
|
|
63
63
|
"license-checker": "^25.0.1",
|
|
64
64
|
"lint-staged": "^13.1.0",
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
"pre-commit": "^1.2.2"
|
|
68
68
|
},
|
|
69
69
|
"dependencies": {
|
|
70
|
-
"axios": "
|
|
70
|
+
"axios": "^1.2.3",
|
|
71
71
|
"flexsearch": "~0.6.32",
|
|
72
72
|
"jskos-tools": "^1.0.28",
|
|
73
73
|
"localforage": "^1.10.0",
|