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.
@@ -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 = [];
@@ -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",
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.14.54",
57
+ "esbuild": "~0.17.3",
58
58
  "esbuild-plugin-ifdef": "^1.0.1",
59
- "eslint": "^8.31.0",
59
+ "eslint": "^8.32.0",
60
60
  "eslint-config-gbv": "^1.0.4",
61
- "glob": "^8.0.3",
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": "~0.26.1",
70
+ "axios": "^1.2.3",
71
71
  "flexsearch": "~0.6.32",
72
72
  "jskos-tools": "^1.0.28",
73
73
  "localforage": "^1.10.0",