solid-ui 2.4.22-d52421dc → 2.4.22-d6a4e62e

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.
Files changed (63) hide show
  1. package/dist/main.js +9579 -9553
  2. package/dist/main.js.map +1 -1
  3. package/lib/acl/access-controller.js +14 -9
  4. package/lib/acl/access-controller.js.map +1 -1
  5. package/lib/acl/access-groups.js +15 -10
  6. package/lib/acl/access-groups.js.map +1 -1
  7. package/lib/acl/acl-control.js +13 -9
  8. package/lib/acl/acl-control.js.map +1 -1
  9. package/lib/acl/acl.js +11 -7
  10. package/lib/acl/acl.js.map +1 -1
  11. package/lib/acl/add-agent-buttons.js +18 -13
  12. package/lib/acl/add-agent-buttons.js.map +1 -1
  13. package/lib/chat/bookmarks.js +21 -18
  14. package/lib/chat/bookmarks.js.map +1 -1
  15. package/lib/chat/chatLogic.js +15 -9
  16. package/lib/chat/chatLogic.js.map +1 -1
  17. package/lib/chat/dateFolder.js +17 -12
  18. package/lib/chat/dateFolder.js.map +1 -1
  19. package/lib/chat/infinite.js +37 -29
  20. package/lib/chat/infinite.js.map +1 -1
  21. package/lib/chat/message.js +14 -14
  22. package/lib/chat/message.js.map +1 -1
  23. package/lib/chat/messageTools.js +23 -10
  24. package/lib/chat/messageTools.js.map +1 -1
  25. package/lib/chat/thread.js +9 -4
  26. package/lib/chat/thread.js.map +1 -1
  27. package/lib/footer/index.js +10 -8
  28. package/lib/footer/index.js.map +1 -1
  29. package/lib/header/index.js +17 -9
  30. package/lib/header/index.js.map +1 -1
  31. package/lib/iconBase.js +3 -2
  32. package/lib/iconBase.js.map +1 -1
  33. package/lib/login/login.d.ts +9 -8
  34. package/lib/login/login.d.ts.map +1 -1
  35. package/lib/login/login.js +303 -313
  36. package/lib/login/login.js.map +1 -1
  37. package/lib/media/media-capture.js +20 -4
  38. package/lib/media/media-capture.js.map +1 -1
  39. package/lib/tabs.d.ts.map +1 -1
  40. package/lib/tabs.js +21 -18
  41. package/lib/tabs.js.map +1 -1
  42. package/lib/utils/headerFooterHelpers.js +7 -5
  43. package/lib/utils/headerFooterHelpers.js.map +1 -1
  44. package/lib/versionInfo.d.ts +9 -9
  45. package/lib/versionInfo.js +13 -13
  46. package/lib/versionInfo.js.map +1 -1
  47. package/lib/widgets/error.d.ts +0 -12
  48. package/lib/widgets/error.d.ts.map +1 -1
  49. package/lib/widgets/error.js +5 -0
  50. package/lib/widgets/error.js.map +1 -1
  51. package/lib/widgets/forms/autocomplete/autocompleteBar.js +15 -17
  52. package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +1 -1
  53. package/lib/widgets/forms/autocomplete/autocompleteField.js +8 -5
  54. package/lib/widgets/forms/autocomplete/autocompleteField.js.map +1 -1
  55. package/lib/widgets/forms/autocomplete/autocompletePicker.js +19 -21
  56. package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +1 -1
  57. package/lib/widgets/forms/autocomplete/language.js +15 -8
  58. package/lib/widgets/forms/autocomplete/language.js.map +1 -1
  59. package/lib/widgets/forms/autocomplete/publicData.js +27 -22
  60. package/lib/widgets/forms/autocomplete/publicData.js.map +1 -1
  61. package/lib/widgets/forms.js +270 -27
  62. package/lib/widgets/forms.js.map +1 -1
  63. package/package.json +46 -44
@@ -2,7 +2,7 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
- var _typeof3 = require("@babel/runtime/helpers/typeof");
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
6
 
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: true
@@ -14,7 +14,7 @@ exports.getPreferredLanguages = getPreferredLanguages;
14
14
  exports.getPreferredLanguagesFor = getPreferredLanguagesFor;
15
15
  exports.languageCodeURIBase = void 0;
16
16
 
17
- var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
17
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
18
18
 
19
19
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
20
20
 
@@ -26,10 +26,17 @@ var ns = _interopRequireWildcard(require("../../../ns"));
26
26
 
27
27
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
28
28
 
29
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof3(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
29
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
30
30
 
31
- function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return generator._invoke = function (innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; }(innerFn, self, context), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == (0, _typeof2["default"])(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; this._invoke = function (method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); }; } function maybeInvokeDelegate(delegate, context) { var method = delegate.iterator[context.method]; if (undefined === method) { if (context.delegate = null, "throw" === context.method) { if (delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method)) return ContinueSentinel; context.method = "throw", context.arg = new TypeError("The iterator does not provide a 'throw' method"); } return ContinueSentinel; } var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) { if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; } return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, define(Gp, "constructor", GeneratorFunctionPrototype), define(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (object) { var keys = []; for (var key in object) { keys.push(key); } return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) { "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); } }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
31
+ /* Logic to access public data stores
32
+ *
33
+ * including filtering resut by natural language etc
34
+ * See https://solidos.solidcommunity.net/public/2021/01%20Building%20Solid%20Apps%20which%20use%20Public%20Data.html
35
+ */
32
36
 
37
+ /* eslint-disable no-console */
38
+ // import * as logic from '../index'
39
+ // import { authn } from '../../../authn/index'
33
40
  var languageCodeURIBase = 'https://www.w3.org/ns/iana/language-code/'; /// @@ unsupported on the web (2021)
34
41
 
35
42
  exports.languageCodeURIBase = languageCodeURIBase;
@@ -53,11 +60,11 @@ function getPreferredLanguagesFor(_x) {
53
60
 
54
61
 
55
62
  function _getPreferredLanguagesFor() {
56
- _getPreferredLanguagesFor = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(person) {
63
+ _getPreferredLanguagesFor = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(person) {
57
64
  var _store$fetcher;
58
65
 
59
66
  var doc, list, languageCodeArray;
60
- return _regeneratorRuntime().wrap(function _callee$(_context) {
67
+ return _regenerator["default"].wrap(function _callee$(_context) {
61
68
  while (1) {
62
69
  switch (_context.prev = _context.next) {
63
70
  case 0:
@@ -126,9 +133,9 @@ function getPreferredLanguages() {
126
133
 
127
134
 
128
135
  function _getPreferredLanguages() {
129
- _getPreferredLanguages = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
136
+ _getPreferredLanguages = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
130
137
  var me, solidLanguagePrefs;
131
- return _regeneratorRuntime().wrap(function _callee2$(_context2) {
138
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
132
139
  while (1) {
133
140
  switch (_context2.prev = _context2.next) {
134
141
  case 0:
@@ -1 +1 @@
1
- {"version":3,"file":"language.js","names":["languageCodeURIBase","defaultPreferredLanguages","addDefaults","array","concat","filter","code","includes","getPreferredLanguagesFor","person","doc","store","fetcher","load","list","any","ns","schema","languageCodeArray","elements","forEach","item","lang","solid","console","warn","value","startsWith","error","slice","length","push","log","join","getPreferredLanguages","authn","currentUser","me","solidLanguagePrefs","navigator","languages","map","longForm","split","language","filterByLanguage","bindings","languagePrefs","uris","binding","uri","subject","languagePrefs2","reverse","slimmed","u","sortMe","name","index","indexOf","pair","sort","debug"],"sources":["../../../../src/widgets/forms/autocomplete/language.ts"],"sourcesContent":["/* Logic to access public data stores\n*\n* including filtering resut by natural language etc\n* See https://solidos.solidcommunity.net/public/2021/01%20Building%20Solid%20Apps%20which%20use%20Public%20Data.html\n*/\n/* eslint-disable no-console */\nimport * as debug from '../../../debug'\n// import * as logic from '../index'\n// import { authn } from '../../../authn/index'\nimport { authn, store } from 'solid-logic'\nimport * as ns from '../../../ns'\nimport { Collection, NamedNode, Node } from 'rdflib'\n// import { Binding } from '../widgets/forms/autocomplete/publicData'\n// import { nativeNameForLanguageCode, englishNameForLanguageCode } from './nativeNameForLanguageCode'\n\n// const { currentUser } = logic.authn\n\nexport interface Binding {\n subject: Node;\n name?: Node\n location?: Node\n coordinates?: Node\n}\n\nexport const languageCodeURIBase = 'https://www.w3.org/ns/iana/language-code/' /// @@ unsupported on the web (2021)\n\nexport const defaultPreferredLanguages = ['en', 'fr', 'de', 'it', 'ar']\n\nexport function addDefaults (array) {\n if (!array) array = []\n return array.concat(defaultPreferredLanguages.filter(code => !array.includes(code)))\n}\n\nexport async function getPreferredLanguagesFor (person: NamedNode) {\n const doc = person.doc()\n await store.fetcher?.load(doc)\n const list = store.any(person, ns.schema('knowsLanguage'), null, doc) as Collection | undefined\n if (!list) {\n // console.log(`User ${person} has not set their languages in their profile.`)\n return defaultPreferredLanguages\n }\n const languageCodeArray: string[] = []\n list.elements.forEach(item => {\n // console.log('@@ item ' + item)\n const lang = store.any(item as any, ns.solid('publicId'), null, doc)\n if (!lang) {\n console.warn('getPreferredLanguages: No publiID of language.')\n return\n }\n if (!lang.value.startsWith(languageCodeURIBase)) {\n console.error(`What should be a language code ${lang.value} does not start with ${languageCodeURIBase}`)\n return\n }\n const code = lang.value.slice(languageCodeURIBase.length)\n languageCodeArray.push(code)\n })\n\n if (languageCodeArray.length > 0) {\n console.log(` User knows languages with codes: \"${languageCodeArray.join(',')}\"`)\n return addDefaults(languageCodeArray)\n }\n return null\n}\n/* Get the preferred langauges for the user\n *\n * Either from solid preferences or browser preferences or default\n */\nexport async function getPreferredLanguages () {\n // In future: cache in the login session for speed, but get from profile and private prefs\n // We append the defaults so if someone's first choice is not available they don't get something very obscure\n // See https://github.com/solidos/solidos/issues/42\n const me = await authn.currentUser() as NamedNode\n if (me) { // If logged in\n const solidLanguagePrefs = await getPreferredLanguagesFor(me)\n if (solidLanguagePrefs) return solidLanguagePrefs\n }\n if (typeof navigator !== 'undefined') { // use browser settings\n if (navigator.languages) {\n return addDefaults(navigator.languages.map(longForm => longForm.split('-')[0]))\n }\n if (navigator.language) {\n return addDefaults([navigator.language.split('-')[0]])\n }\n }\n return defaultPreferredLanguages\n}\n\n/* From an array of bindings with a names for each row,\n * remove dupliacte names for the same thing, leaving the user's\n * preferred language version\n*/\n\nexport function filterByLanguage (bindings, languagePrefs) {\n const uris = {}\n bindings.forEach(binding => { // Organize names by their subject\n const uri = binding.subject.value\n uris[uri] = uris[uri] || []\n uris[uri].push(binding)\n })\n\n const languagePrefs2 = languagePrefs || defaultPreferredLanguages\n languagePrefs2.reverse() // Preferred last\n\n const slimmed = ([] as Array<Binding>)\n // console.log(` @@ {languagePrefs2 ${languagePrefs2}`)\n for (const u in uris) { // needs hasOwnProperty ?\n const bindings = uris[u]\n const sortMe = bindings.map(binding => {\n const lang = binding.name['xml:lang']\n const index = languagePrefs2.indexOf(lang)\n const pair = [index, binding]\n // console.log(` @@ lang: ${lang}, index: ${index}`)\n return pair\n })\n sortMe.sort() // best at th ebottom\n sortMe.reverse() // best at the top\n // console.debug('@@ sortMe:', sortMe)\n slimmed.push((sortMe[0][1] as any))\n } // map u\n debug.log(` Filter by language: ${bindings.length} -> ${slimmed.length}`)\n return slimmed\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"language.js","names":["languageCodeURIBase","defaultPreferredLanguages","addDefaults","array","concat","filter","code","includes","getPreferredLanguagesFor","person","doc","store","fetcher","load","list","any","ns","schema","languageCodeArray","elements","forEach","item","lang","solid","console","warn","value","startsWith","error","slice","length","push","log","join","getPreferredLanguages","authn","currentUser","me","solidLanguagePrefs","navigator","languages","map","longForm","split","language","filterByLanguage","bindings","languagePrefs","uris","binding","uri","subject","languagePrefs2","reverse","slimmed","u","sortMe","name","index","indexOf","pair","sort","debug"],"sources":["../../../../src/widgets/forms/autocomplete/language.ts"],"sourcesContent":["/* Logic to access public data stores\n*\n* including filtering resut by natural language etc\n* See https://solidos.solidcommunity.net/public/2021/01%20Building%20Solid%20Apps%20which%20use%20Public%20Data.html\n*/\n/* eslint-disable no-console */\nimport * as debug from '../../../debug'\n// import * as logic from '../index'\n// import { authn } from '../../../authn/index'\nimport { authn, store } from 'solid-logic'\nimport * as ns from '../../../ns'\nimport { Collection, NamedNode, Node } from 'rdflib'\n// import { Binding } from '../widgets/forms/autocomplete/publicData'\n// import { nativeNameForLanguageCode, englishNameForLanguageCode } from './nativeNameForLanguageCode'\n\n// const { currentUser } = logic.authn\n\nexport interface Binding {\n subject: Node;\n name?: Node\n location?: Node\n coordinates?: Node\n}\n\nexport const languageCodeURIBase = 'https://www.w3.org/ns/iana/language-code/' /// @@ unsupported on the web (2021)\n\nexport const defaultPreferredLanguages = ['en', 'fr', 'de', 'it', 'ar']\n\nexport function addDefaults (array) {\n if (!array) array = []\n return array.concat(defaultPreferredLanguages.filter(code => !array.includes(code)))\n}\n\nexport async function getPreferredLanguagesFor (person: NamedNode) {\n const doc = person.doc()\n await store.fetcher?.load(doc)\n const list = store.any(person, ns.schema('knowsLanguage'), null, doc) as Collection | undefined\n if (!list) {\n // console.log(`User ${person} has not set their languages in their profile.`)\n return defaultPreferredLanguages\n }\n const languageCodeArray: string[] = []\n list.elements.forEach(item => {\n // console.log('@@ item ' + item)\n const lang = store.any(item as any, ns.solid('publicId'), null, doc)\n if (!lang) {\n console.warn('getPreferredLanguages: No publiID of language.')\n return\n }\n if (!lang.value.startsWith(languageCodeURIBase)) {\n console.error(`What should be a language code ${lang.value} does not start with ${languageCodeURIBase}`)\n return\n }\n const code = lang.value.slice(languageCodeURIBase.length)\n languageCodeArray.push(code)\n })\n\n if (languageCodeArray.length > 0) {\n console.log(` User knows languages with codes: \"${languageCodeArray.join(',')}\"`)\n return addDefaults(languageCodeArray)\n }\n return null\n}\n/* Get the preferred langauges for the user\n *\n * Either from solid preferences or browser preferences or default\n */\nexport async function getPreferredLanguages () {\n // In future: cache in the login session for speed, but get from profile and private prefs\n // We append the defaults so if someone's first choice is not available they don't get something very obscure\n // See https://github.com/solidos/solidos/issues/42\n const me = await authn.currentUser() as NamedNode\n if (me) { // If logged in\n const solidLanguagePrefs = await getPreferredLanguagesFor(me)\n if (solidLanguagePrefs) return solidLanguagePrefs\n }\n if (typeof navigator !== 'undefined') { // use browser settings\n if (navigator.languages) {\n return addDefaults(navigator.languages.map(longForm => longForm.split('-')[0]))\n }\n if (navigator.language) {\n return addDefaults([navigator.language.split('-')[0]])\n }\n }\n return defaultPreferredLanguages\n}\n\n/* From an array of bindings with a names for each row,\n * remove dupliacte names for the same thing, leaving the user's\n * preferred language version\n*/\n\nexport function filterByLanguage (bindings, languagePrefs) {\n const uris = {}\n bindings.forEach(binding => { // Organize names by their subject\n const uri = binding.subject.value\n uris[uri] = uris[uri] || []\n uris[uri].push(binding)\n })\n\n const languagePrefs2 = languagePrefs || defaultPreferredLanguages\n languagePrefs2.reverse() // Preferred last\n\n const slimmed = ([] as Array<Binding>)\n // console.log(` @@ {languagePrefs2 ${languagePrefs2}`)\n for (const u in uris) { // needs hasOwnProperty ?\n const bindings = uris[u]\n const sortMe = bindings.map(binding => {\n const lang = binding.name['xml:lang']\n const index = languagePrefs2.indexOf(lang)\n const pair = [index, binding]\n // console.log(` @@ lang: ${lang}, index: ${index}`)\n return pair\n })\n sortMe.sort() // best at th ebottom\n sortMe.reverse() // best at the top\n // console.debug('@@ sortMe:', sortMe)\n slimmed.push((sortMe[0][1] as any))\n } // map u\n debug.log(` Filter by language: ${bindings.length} -> ${slimmed.length}`)\n return slimmed\n}\n"],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
- var _typeof3 = require("@babel/runtime/helpers/typeof");
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
6
 
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: true
@@ -24,7 +24,7 @@ exports.queryPublicDataConstruct = queryPublicDataConstruct;
24
24
  exports.queryPublicDataSelect = queryPublicDataSelect;
25
25
  exports.wikidataParameters = exports.wikidataOutgoingClassMap = exports.wikidataIncomingClassMap = exports.wikidataClasses = exports.variableNameToPredicateMap = void 0;
26
26
 
27
- var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
27
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
28
28
 
29
29
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
30
30
 
@@ -40,10 +40,15 @@ var _language = require("./language");
40
40
 
41
41
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
42
42
 
43
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof3(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
43
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
44
44
 
45
- function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return generator._invoke = function (innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; }(innerFn, self, context), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == (0, _typeof2["default"])(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; this._invoke = function (method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); }; } function maybeInvokeDelegate(delegate, context) { var method = delegate.iterator[context.method]; if (undefined === method) { if (context.delegate = null, "throw" === context.method) { if (delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method)) return ContinueSentinel; context.method = "throw", context.arg = new TypeError("The iterator does not provide a 'throw' method"); } return ContinueSentinel; } var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) { if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; } return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, define(Gp, "constructor", GeneratorFunctionPrototype), define(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (object) { var keys = []; for (var key in object) { keys.push(key); } return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) { "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); } }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
45
+ /* Logic to access public data stores
46
+ *
47
+ * including filtering resut by natural language etc
48
+ * See https://solidos.solidcommunity.net/public/2021/01%20Building%20Solid%20Apps%20which%20use%20Public%20Data.html
49
+ */
46
50
 
51
+ /* eslint-disable no-console */
47
52
  var AUTOCOMPLETE_LIMIT = 200; // How many to get from server
48
53
  // With 3000 we could exceed the wikidata timeout
49
54
 
@@ -284,11 +289,11 @@ function queryESCODataByName(_x, _x2, _x3) {
284
289
 
285
290
 
286
291
  function _queryESCODataByName() {
287
- _queryESCODataByName = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(filter, theClass, queryTarget) {
292
+ _queryESCODataByName = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(filter, theClass, queryTarget) {
288
293
  var _store$fetcher;
289
294
 
290
295
  var limit, queryURI, response, text, json;
291
- return _regeneratorRuntime().wrap(function _callee$(_context) {
296
+ return _regenerator["default"].wrap(function _callee$(_context) {
292
297
  while (1) {
293
298
  switch (_context.prev = _context.next) {
294
299
  case 0:
@@ -354,10 +359,10 @@ function queryPublicDataByName(_x4, _x5, _x6, _x7) {
354
359
 
355
360
 
356
361
  function _queryPublicDataByName() {
357
- _queryPublicDataByName = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(filter, theClass, languages, queryTarget) {
362
+ _queryPublicDataByName = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(filter, theClass, languages, queryTarget) {
358
363
  var substituteStrings, languagePrefs, language, sparql, queryURI, response, _store$fetcher2, text, text2, json, bindings;
359
364
 
360
- return _regeneratorRuntime().wrap(function _callee2$(_context2) {
365
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
361
366
  while (1) {
362
367
  switch (_context2.prev = _context2.next) {
363
368
  case 0:
@@ -487,11 +492,11 @@ function queryPublicDataSelect(_x8, _x9) {
487
492
 
488
493
 
489
494
  function _queryPublicDataSelect() {
490
- _queryPublicDataSelect = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(sparql, queryTarget) {
495
+ _queryPublicDataSelect = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(sparql, queryTarget) {
491
496
  var _store$fetcher3;
492
497
 
493
498
  var myUrlWithParams, queryURI, headers, options, response, text, text2, json, bindings;
494
- return _regeneratorRuntime().wrap(function _callee3$(_context3) {
499
+ return _regenerator["default"].wrap(function _callee3$(_context3) {
495
500
  while (1) {
496
501
  switch (_context3.prev = _context3.next) {
497
502
  case 0:
@@ -550,11 +555,11 @@ function queryPublicDataConstruct(_x10, _x11, _x12) {
550
555
  }
551
556
 
552
557
  function _queryPublicDataConstruct() {
553
- _queryPublicDataConstruct = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(sparql, pubicId, queryTarget) {
558
+ _queryPublicDataConstruct = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(sparql, pubicId, queryTarget) {
554
559
  var _store$fetcher4;
555
560
 
556
561
  var myUrlWithParams, queryURI, headers, options, response, text, report;
557
- return _regeneratorRuntime().wrap(function _callee4$(_context4) {
562
+ return _regenerator["default"].wrap(function _callee4$(_context4) {
558
563
  while (1) {
559
564
  switch (_context4.prev = _context4.next) {
560
565
  case 0:
@@ -614,9 +619,9 @@ function loadPublicDataThing(_x13, _x14, _x15) {
614
619
  }
615
620
 
616
621
  function _loadPublicDataThing() {
617
- _loadPublicDataThing = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(kb, subject, publicDataID) {
622
+ _loadPublicDataThing = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(kb, subject, publicDataID) {
618
623
  var iDToFetch, headers;
619
- return _regeneratorRuntime().wrap(function _callee5$(_context5) {
624
+ return _regenerator["default"].wrap(function _callee5$(_context5) {
620
625
  while (1) {
621
626
  switch (_context5.prev = _context5.next) {
622
627
  case 0:
@@ -664,9 +669,9 @@ function getWikidataDetails(_x16, _x17, _x18) {
664
669
  }
665
670
 
666
671
  function _getWikidataDetails() {
667
- _getWikidataDetails = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6(kb, solidSubject, publicDataID) {
672
+ _getWikidataDetails = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6(kb, solidSubject, publicDataID) {
668
673
  var subjRegexp, sparql;
669
- return _regeneratorRuntime().wrap(function _callee6$(_context6) {
674
+ return _regenerator["default"].wrap(function _callee6$(_context6) {
670
675
  while (1) {
671
676
  switch (_context6.prev = _context6.next) {
672
677
  case 0:
@@ -693,9 +698,9 @@ function getWikidataDetailsOld(_x19, _x20, _x21) {
693
698
  }
694
699
 
695
700
  function _getWikidataDetailsOld() {
696
- _getWikidataDetailsOld = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regeneratorRuntime().mark(function _callee7(kb, solidSubject, publicDataID) {
701
+ _getWikidataDetailsOld = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7(kb, solidSubject, publicDataID) {
697
702
  var sparql, bindings;
698
- return _regeneratorRuntime().wrap(function _callee7$(_context7) {
703
+ return _regenerator["default"].wrap(function _callee7$(_context7) {
699
704
  while (1) {
700
705
  switch (_context7.prev = _context7.next) {
701
706
  case 0:
@@ -722,9 +727,9 @@ function getWikidataLocation(_x22, _x23, _x24) {
722
727
  }
723
728
 
724
729
  function _getWikidataLocation() {
725
- _getWikidataLocation = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regeneratorRuntime().mark(function _callee8(kb, solidSubject, publicDataID) {
730
+ _getWikidataLocation = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee8(kb, solidSubject, publicDataID) {
726
731
  var sparql, bindings;
727
- return _regeneratorRuntime().wrap(function _callee8$(_context8) {
732
+ return _regenerator["default"].wrap(function _callee8$(_context8) {
728
733
  while (1) {
729
734
  switch (_context8.prev = _context8.next) {
730
735
  case 0:
@@ -753,9 +758,9 @@ function getDbpediaDetails(_x25, _x26, _x27) {
753
758
  }
754
759
 
755
760
  function _getDbpediaDetails() {
756
- _getDbpediaDetails = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regeneratorRuntime().mark(function _callee9(kb, solidSubject, publicDataID) {
761
+ _getDbpediaDetails = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee9(kb, solidSubject, publicDataID) {
757
762
  var sparql, bindings;
758
- return _regeneratorRuntime().wrap(function _callee9$(_context9) {
763
+ return _regenerator["default"].wrap(function _callee9$(_context9) {
759
764
  while (1) {
760
765
  switch (_context9.prev = _context9.next) {
761
766
  case 0:
@@ -1 +1 @@
1
- {"version":3,"file":"publicData.js","names":["AUTOCOMPLETE_LIMIT","subjectRegexp","wikidataClasses","Corporation","EducationalOrganization","GovernmentOrganization","MedicalOrganization","MusicGroup","NGO","Occupation","Project","ResearchOrganization","SportsOrganization","instituteDetailsWikidataQuery","fetcherOptionsJsonPublicData","credentials","headers","Headers","Accept","escoParameters","label","logo","store","sym","searchByNameURI","dbpediaParameters","searchByNameQuery","endpoint","dbPediaTypeMap","AcademicInsitution","wikidataOutgoingClassMap","Enterprise","Business","CharitableOrganization","Insitute","wikidataParameters","limit","insitituteDetailsQuery","wikidataIncomingClassMap","ns","schema","variableNameToPredicateMap","targetClass","rdf","sealImage","shortName","foaf","subsidiary","city","vcard","state","country","homepage","lat","bindingToTerm","item","typ","type","toLowerCase","value","Literal","Error","loadFromBindings","kb","solidSubject","bindings","doc","predMap","results","debug","log","forEach","binding","key","result","combined","JSON","stringify","Set","add","values","parse","obj","language","datatype","warn","regexp","match","exec","float","xsd","latitude","longitude","pred","ESCOResultToBindings","json","_embedded","map","name","title","uri","subject","queryESCODataByName","filter","theClass","queryTarget","queryURI","replace","toNT","fetcher","webOperation","response","text","responseText","slice","length","fixWikidataJSON","str","syntaxProblem","indexOf","goodness","lastIndexOf","queryPublicDataByName","languages","substituteStrings","template","u1","getPreferredLanguages","defaultPreferredLanguages","languagePrefs","sparql","queryPublicDataSelect","status","text2","alert","myUrlWithParams","URL","searchParams","append","href","options","queryPublicDataConstruct","pubicId","report","loadPublicDataThing","publicDataID","startsWith","getDbpediaDetails","getWikidataDetails","iDToFetch","load","subjRegexp","getWikidataDetailsOld","getWikidataLocation"],"sources":["../../../../src/widgets/forms/autocomplete/publicData.ts"],"sourcesContent":["/* Logic to access public data stores\n*\n* including filtering resut by natural language etc\n* See https://solidos.solidcommunity.net/public/2021/01%20Building%20Solid%20Apps%20which%20use%20Public%20Data.html\n*/\n/* eslint-disable no-console */\nimport { Literal, NamedNode, parse } from 'rdflib'\nimport { store } from 'solid-logic'\nimport * as debug from '../../../debug'\nimport * as ns from '../../../ns'\nimport { defaultPreferredLanguages, getPreferredLanguages } from './language'\n\nexport const AUTOCOMPLETE_LIMIT = 200 // How many to get from server\n// With 3000 we could exceed the wikidata timeout\n\nconst subjectRegexp = /\\$\\(subject\\)/g\n\ninterface Term {\n type: string;\n value: string\n}\n\nexport interface Binding {\n subject: Term;\n name?: Term\n location?: Term\n coordinates?: Term\n}\n\ntype Bindings = Binding[]\n\nexport type QueryParameters =\n{ label: string;\n limit?: number;\n logo?: NamedNode;\n searchByNameQuery?: string;\n searchByNameURI?: string;\n insitituteDetailsQuery?: string;\n endpoint?: string;\n objectURIBase?: NamedNode;\n targetClass?: NamedNode,\n}\n\n// Schema.org seems to suggest NGOs are non-profit and Corporaions are for-profit\n// but doesn't have explicit classes\nexport const wikidataClasses = {\n Corporation: 'http://www.wikidata.org/entity/Q6881511', // Enterprise is for-profit\n EducationalOrganization: 'http://www.wikidata.org/entity/Q178706', // insitution\n GovernmentOrganization: 'http://www.wikidata.org/entity/Q327333', // government agency\n MedicalOrganization: 'http://www.wikidata.org/entity/Q4287745',\n MusicGroup: 'http://www.wikidata.org/entity/Q32178211', // music organization\n NGO: 'http://www.wikidata.org/entity/Q163740', // nonprofit organization @@\n Occupation: 'http://www.wikidata.org/entity/Q28640', // Profession\n // Organization: 'http://www.wikidata.org/entity/Q43229',\n Project: 'http://www.wikidata.org/entity/Q170584',\n ResearchOrganization: 'http://www.wikidata.org/entity/Q31855',\n SportsOrganization: 'http://www.wikidata.org/entity/Q4438121'\n}\n\nexport const instituteDetailsWikidataQuery = `prefix vcard: <http://www.w3.org/2006/vcard/ns#>\nCONSTRUCT\n{ wd:Q49108 vcard:fn ?itemLabel.\nwd:Q49108 rdf:type ?klass. ?klass rdfs:label ?klassLabel; rdfs:comment ?klassDescription .\nwd:Q49108 schema:logo ?logo;\n schema:image ?image;\n schema:logo ?sealImage;\n schema:subOrganization ?subsidiary .\n ?subsidiary rdfs:label ?subsidiaryLabel .\n ?supersidiary schema:subOrganization wd:Q49108 .\n ?supersidiary rdfs:label ?supersidiaryLabel .\n wd:Q49108 schema:location ?location .\n ?location schema:elevation ?elevation .\n ?location wdt:P131 ?region . ?region rdfs:label ?regionLabel .\n ?location wdt:P625 ?coordinates .\n ?location schema:country ?country . ?country rdfs:label ?countryLabel .\n}\nWHERE\n{ optional {wd:Q49108 rdfs:label ?itemLabel} .\n optional {wd:Q49108 wdt:P154 ?logo .}\n optional {wd:Q49108 wdt:P31 ?klass .}\n optional {wd:Q49108 wdt:P158 ?sealImage .}\n optional {wd:Q49108 wdt:P18 ?image .}\n\n optional { wd:Q49108 wdt:P355 ?subsidiary . }\n optional { ?supersidiary wdt:P355 wd:Q49108. }\n\n optional { wd:Q49108 wdt:P276 ?location .\n\n optional { ?location schema:eleveation ?elevation }\n optional { ?location wdt:P131 ?region }\n optional { ?location wdt:P625 ?coordinates }\n optional { ?location wdt:P17 ?country }\n }\n SERVICE wikibase:label { bd:serviceParam wikibase:language \"fr,en,de,it\". }\n}`\n\nexport const fetcherOptionsJsonPublicData = {\n credentials: 'omit' as 'include' | 'omit' | undefined, // try to avoid CORS problems. Data is public so no auth\n headers: new Headers({ Accept: 'application/json' })\n}\n\nexport const escoParameters:QueryParameters = {\n label: 'ESCO',\n logo: store.sym('https://ec.europa.eu/esco/portal/static_resource2/images/logo/logo_en.gif'),\n searchByNameURI: 'https://ec.europa.eu/esco/api/search?language=$(language)&type=occupation&text=$(name)'\n // endpoint: undefined\n // returnFormat: 'ESCO',\n // targetClass: {}\n}\n\nexport const dbpediaParameters:QueryParameters = {\n label: 'DBPedia',\n logo: store.sym('https://upload.wikimedia.org/wikipedia/commons/thumb/7/73/DBpediaLogo.svg/263px-DBpediaLogo.svg.png'),\n searchByNameQuery: `select distinct ?subject, ?name where {\n ?subject a $(targetClass); rdfs:label ?name\n FILTER regex(?name, \"$(name)\", \"i\")\n } LIMIT $(limit)`,\n endpoint: 'https://dbpedia.org/sparql/'\n}\n\nexport const dbPediaTypeMap = { AcademicInsitution: 'http://umbel.org/umbel/rc/EducationalOrganization' }\n\nexport const wikidataOutgoingClassMap = {\n AcademicInsitution: 'http://www.wikidata.org/entity/Q4671277',\n Enterprise: 'http://www.wikidata.org/entity/Q6881511',\n Business: 'http://www.wikidata.org/entity/Q4830453',\n NGO: 'http://www.wikidata.org/entity/Q79913',\n CharitableOrganization: 'http://www.wikidata.org/entity/Q708676',\n Insitute: 'http://www.wikidata.org/entity/Q1664720'\n}\n\nexport const wikidataParameters = {\n label: 'WikiData',\n limit: 3000, // Need a high one as very many items, and many languages\n logo: store.sym('https://www.wikimedia.org/static/images/project-logos/wikidatawiki.png'),\n endpoint: 'https://query.wikidata.org/sparql',\n searchByNameQuery: `SELECT ?subject ?name\n WHERE {\n ?klass wdt:P279* $(targetClass) .\n ?subject wdt:P31 ?klass .\n ?subject rdfs:label ?name.\n FILTER regex(?name, \"$(name)\", \"i\")\n } LIMIT $(limit) `, // was SERVICE wikibase:label { bd:serviceParam wikibase:language \"[AUTO_LANGUAGE],en\" }\n\n insitituteDetailsQuery: `CONSTRUCT\n{ wd:Q49108 schema:name ?itemLabel;\n schema:logo ?logo;\n schema:logo ?sealImage;\n schema:subOrganization ?subsidiary .\n ?subsidiary schema:name ?subsidiaryLabel .\n}\nWHERE\n{\n wd:Q49108 # rdfs:label ?itemLabel ;\n wdt:P154 ?logo;\n wdt:P158 ?sealImage ;\n wdt:P355 ?subsidiary .\n # ?subsidiary rdfs:label ?subsidiaryLabel .\n\n SERVICE wikibase:label { bd:serviceParam wikibase:language \"[AUTO_LANGUAGE], fr\". }\n}`\n}\n\nexport const wikidataIncomingClassMap = {\n 'http://www.wikidata.org/entity/Q15936437': ns.schema('CollegeOrUniversity'), // research university\n 'http://www.wikidata.org/entity/Q1664720': ns.schema('EducationalOrganization'), // insitute @@\n 'http://www.wikidata.org/entity/Q43229': ns.schema('Organization'), // research university\n 'http://www.wikidata.org/entity/Q3918': ns.schema('CollegeOrUniversity'), // university\n 'http://www.wikidata.org/entity/Q170584': ns.schema('Project'), // university\n 'http://www.wikidata.org/entity/Q327333': ns.schema('GovernmentOrganization'), // govt agency\n 'http://www.wikidata.org/entity/Q2221906': ns.schema('Place'), // geographic location\n 'http://www.wikidata.org/entity/Q167037': ns.schema('Corporation') // Corporation\n\n}\nexport const variableNameToPredicateMap = { // allow other mappings to be added in theory hence var\n // wikidata:\n targetClass: ns.rdf('type'),\n // logo: ns.schema('logo'),\n sealImage: ns.schema('logo'),\n // image: ns.schema('image'), defaults to shema\n shortName: ns.foaf('nick'),\n subsidiary: ns.schema('subOrganization'),\n // dbpedia - :\n city: ns.vcard('locality'),\n state: ns.vcard('region'),\n country: ns.vcard('country-name'),\n homepage: ns.foaf('homepage'),\n lat: ns.schema('latitude'),\n long: ns.schema('longitude')\n}\n\nexport function bindingToTerm (item) {\n const typ = item.type.toLowerCase()\n if (typ === 'uri' || typ === 'iri') {\n return store.sym(item.value)\n } else if (typ === 'literal') {\n if (item['xml:lang']) {\n return new Literal(item.value, item['xml:lang'])\n } else {\n return new Literal(item.value)\n }\n } else {\n throw new Error(`bindingToTerm: Unexpected type \"${item.type}\" in sparql binding}`)\n }\n}\n\nexport function loadFromBindings (kb, solidSubject:NamedNode, bindings, doc, predMap = variableNameToPredicateMap) {\n const results = {}\n debug.log(`loadFromBindings: subject: ${solidSubject}`)\n debug.log(` doc: ${doc}`)\n bindings.forEach(binding => {\n for (const key in binding) {\n const result = binding[key]\n const combined = JSON.stringify(result) // ( result.type, result.value )\n results[key] = results[key] || new Set()\n results[key].add(combined) // remove duplicates\n }\n })\n for (const key in results) {\n const values = results[key]\n debug.log(` results ${key} -> ${values}`)\n values.forEach(combined => {\n const result = JSON.parse(combined)\n const { type, value } = result\n let obj\n if (type === 'uri') {\n obj = kb.sym(value)\n } else if (type === 'literal') {\n obj = new Literal(value, result.language, result.datatype)\n } else {\n throw new Error(`loadFromBindings: unexpected type: ${type}`)\n }\n if (key === 'type') {\n if (wikidataIncomingClassMap[value]) {\n obj = wikidataIncomingClassMap[value]\n } else {\n debug.warn('Unmapped Wikidata Class: ' + value)\n }\n } else if (key === 'coordinates') {\n // const latlong = value // Like 'Point(-71.106111111 42.375)'\n debug.log(' @@@ hey a point: ' + value)\n // const regexp = /.*\\(([-0-9\\.-]*) ([-0-9\\.-]*)\\)/\n const regexp = /.*\\(([-0-9.-]*) ([-0-9.-]*)\\)/\n const match = regexp.exec(value)\n if (match) {\n const float = ns.xsd('float')\n const latitude = new Literal(match[1], null, float)\n const longitude = new Literal(match[2], null, float)\n kb.add(solidSubject, ns.schema('longitude'), longitude, doc)\n kb.add(solidSubject, ns.schema('latitude'), latitude, doc)\n } else {\n debug.log('Bad coordinates syntax: ' + value)\n }\n } else {\n const pred = predMap[key] || ns.schema(key) // fallback to just using schema.org\n kb.add(solidSubject, pred, obj, doc) // @@ deal with non-string and objects\n debug.log(` public data ${pred} ${obj}.`)\n }\n })\n }\n}\n\n/* ESCO sopecific\n*/\nexport function ESCOResultToBindings (json: Object): Bindings {\n const results = (json as any)._embedded.results // Array\n const bindings = results.map(result => {\n const name = result.title\n const uri = result.uri // like http://data.europa.eu/esco/occupation/57af9090-55b4-4911-b2d0-86db01c00b02\n return { name: { value: name, type: 'literal' }, subject: { type: 'IRI', value: uri } } // simulate SPARQL bindings\n })\n return bindings\n}\n\n/* Query all entities of given class and partially matching name\n*/\nexport async function queryESCODataByName (filter: string, theClass:NamedNode, queryTarget: QueryParameters): Promise<Bindings> {\n if (!queryTarget.searchByNameURI) throw new Error('Missing queryTarget.searchByNameURI on queryESCODataByName')\n const limit = queryTarget.limit || AUTOCOMPLETE_LIMIT\n const queryURI = queryTarget.searchByNameURI\n .replace('$(name)', filter)\n .replace('$(limit)', '' + limit)\n .replace('$(targetClass)', theClass.toNT())\n debug.log('Querying ESCO data - uri: ' + queryURI)\n\n const response = await store.fetcher?.webOperation('GET', queryURI, fetcherOptionsJsonPublicData)\n const text = response?.responseText || ''\n debug.log(' Query result text' + text.slice(0, 500) + '...')\n if (text.length === 0) throw new Error('Wot no text back from ESCO query ' + queryURI)\n const json = JSON.parse(text)\n // console.log('Whole JSON return object', json)\n debug.log(' ESCO Query result JSON' + JSON.stringify(json, null, 4).slice(0, 500) + '...')\n return ESCOResultToBindings(json)\n}\n\n/* Cope ithe syntax probelm in wikidata timeout responses\n*\n* Wikidata bug: https://phabricator.wikimedia.org/T283962\n* This will not be needed whn that WDQS bug fixed.\n* This is aptured in https://github.com/solidos/solid-ui/issues/403\n*/\nfunction fixWikidataJSON (str) {\n const syntaxProblem = str.indexOf('SPARQL-QUERY')\n if (syntaxProblem < 0) return str\n // console.log('@@ fixWikidataJSON FIXING')\n debug.warn(' ### Fixing JSON with wikidata error code injection ' + str.slice(syntaxProblem, syntaxProblem + 200))\n const goodness = str.lastIndexOf('}, {')\n return str.slice(0, goodness) + ' } ] } } ' // Close binding, array, bindings, results, root object\n}\n/* Query all entities of given class and partially matching name\n*/\nexport async function queryPublicDataByName (\n filter: string,\n theClass:NamedNode,\n languages: Array<string>,\n queryTarget: QueryParameters): Promise<Bindings> {\n function substituteStrings (template: string):string {\n const limit = queryTarget.limit || AUTOCOMPLETE_LIMIT\n const u1 = template.replace('$(name)', filter)\n .replace('$(limit)', '' + limit)\n .replace('$(language)', language)\n return u1.replace('$(targetClass)', theClass.toNT())\n }\n\n if (!theClass) {\n throw new Error('queryPublicDataByName: No class provided')\n }\n\n const languagePrefs = await getPreferredLanguages() || defaultPreferredLanguages\n const language = languagePrefs[0] || 'en'\n if (queryTarget.searchByNameQuery) {\n const sparql = substituteStrings(queryTarget.searchByNameQuery)\n debug.log('Querying public data - sparql: ' + sparql)\n return queryPublicDataSelect(sparql, queryTarget)\n } else if (queryTarget.searchByNameURI) { // not sparql - random API\n const queryURI = substituteStrings(queryTarget.searchByNameURI)\n let response\n try {\n response = await store.fetcher?.webOperation('GET', queryURI, fetcherOptionsJsonPublicData)\n } catch (err) {\n throw new Error(`Exception when trying to fetch ${queryURI} \\n ${err}`)\n }\n const text = response.responseText || '' // ts\n if (response.status !== 200) {\n throw new Error(`HTTP error status ${response.status} trying to fetch ${queryURI} `)\n }\n debug.log(' Query result text' + text.slice(0, 500) + '...')\n if (text.length === 0) throw new Error('queryPublicDataByName: No text back from public data query ' + queryURI)\n const text2 = fixWikidataJSON(text) // Kludge: strip of interrupting error message\n const json = JSON.parse(text2)\n debug.log(' API Query result JSON' + JSON.stringify(json, null, 4).slice(0, 500) + '...')\n if ((json as any)._embedded) {\n debug.log(' Looks like ESCO')\n const bindings = ESCOResultToBindings(json)\n return bindings\n } else {\n alert('Code me: unrecognized API return format')\n throw new Error(`*** Need to add code to parse unrecognized API JSON return\\n${JSON.stringify(json, null, 4)}`)\n }\n } else {\n throw new Error('Query source must have either rest API or SPARQL endpoint.')\n }\n}\n\n/* Query a database using SPARQL SELECT\n*/\nexport async function queryPublicDataSelect (sparql: string, queryTarget: QueryParameters): Promise<Bindings> {\n if (!queryTarget.endpoint) throw new Error('Missing queryTarget.endpoint required for queryPublicDataSelect')\n const myUrlWithParams = new URL(queryTarget.endpoint)\n myUrlWithParams.searchParams.append('query', sparql)\n const queryURI = myUrlWithParams.href\n debug.log(' queryPublicDataSelect uri: ' + queryURI)\n const headers = new Headers()\n headers.append('Accept', 'application/json')\n const options = {\n credentials: 'omit' as 'include' | 'omit' | undefined, // CORS - as we know it is public\n headers\n }\n\n const response = await store.fetcher?.webOperation('GET', queryURI, options)\n\n const text = response?.responseText || ''\n if (text.length === 0) throw new Error('No text back from query ' + queryURI)\n const text2 = fixWikidataJSON(text)\n const json = JSON.parse(text2)\n debug.log(' Query result JSON' + JSON.stringify(json, null, 4).slice(0, 100) + '...')\n const bindings = json.results.bindings\n return bindings\n}\n\n/* Load from a database using SPARQL CONSTRUCT\n*/\nexport async function queryPublicDataConstruct (sparql: string, pubicId: NamedNode, queryTarget: QueryParameters): Promise<void> {\n debug.log('queryPublicDataConstruct: sparql:', sparql)\n if (!queryTarget.endpoint) throw new Error('Missing queryTarget.endpoint required for queryPublicDataConstruct')\n const myUrlWithParams = new URL(queryTarget.endpoint)\n myUrlWithParams.searchParams.append('query', sparql)\n const queryURI = myUrlWithParams.href\n debug.log(' queryPublicDataConstruct uri: ' + queryURI)\n const headers = new Headers()\n headers.append('Accept', 'text/turtle')\n const options = {\n credentials: 'omit' as 'include' | 'omit' | undefined, // CORS // @tsc pain\n headers // ({ Accept: 'text/turtle' } as Headers)\n }\n const response = await store.fetcher?.webOperation('GET', queryURI, options)\n const text = response?.responseText || 'No response text?'\n const report = text.length > 500 ? text.slice(0, 200) + ' ... ' + text.slice(-200) : text\n debug.log(' queryPublicDataConstruct result text:' + report)\n if (text.length === 0) throw new Error('queryPublicDataConstruct: No text back from construct query:' + queryURI)\n parse(text, store, pubicId.uri, 'text/turtle')\n}\n\nexport async function loadPublicDataThing (kb, subject: NamedNode, publicDataID: NamedNode) {\n if (publicDataID.uri.startsWith('https://dbpedia.org/resource/')) {\n return getDbpediaDetails(kb, subject, publicDataID)\n } else if (publicDataID.uri.match(/^https?:\\/\\/www\\.wikidata\\.org\\/entity\\/.*/)) {\n // const QId = publicDataID.uri.split('/')[4]\n // const dataURI = `http://www.wikidata.org/wiki/Special:EntityData/${QId}.ttl`\n // In fact loading the data URI gives much too much irrelevant data, from wikidata, so we do a query.\n await getWikidataDetails(kb, subject, publicDataID)\n // await getWikidataLocation(kb, subject, publicDataID) -- should get that in the details query now\n } else {\n const iDToFetch = publicDataID.uri.startsWith('http:')\n ? kb.sym('https:' + publicDataID.uri.slice(5))\n : publicDataID\n const headers = new Headers()\n headers.append('Accept', 'text/turtle')\n return kb.fetcher.load(iDToFetch, {\n credentials: 'omit' as 'include' | 'omit' | undefined,\n headers\n })\n }\n}\n\nexport async function getWikidataDetails (kb, solidSubject:NamedNode, publicDataID:NamedNode) {\n const subjRegexp = /wd:Q49108/g\n const sparql = instituteDetailsWikidataQuery.replace(subjRegexp, publicDataID.toNT())\n await queryPublicDataConstruct(sparql, publicDataID, wikidataParameters)\n debug.log('getWikidataDetails: loaded.', publicDataID)\n}\n\nexport async function getWikidataDetailsOld (kb, solidSubject:NamedNode, publicDataID:NamedNode) {\n const sparql = `select distinct * where {\n optional { $(subject) wdt:P31 ?targetClass } # instance of\n optional { $(subject) wdt:P154 ?logo }\n optional { $(subject) wdt:P158 ?sealImage }\n# optional { $(subject) wdt:P159 ?headquartersLocation }\n\noptional { $(subject) wdt:P17 ?country }\noptional { $(subject) wdt:P18 ?image }\noptional { $(subject) wdt:P1813 ?shortName }\n\noptional { $(subject) wdt:P355 ?subsidiary }\n# SERVICE wikibase:label { bd:serviceParam wikibase:language \"fr,en,de,it\" }\n}`\n .replace(subjectRegexp, publicDataID.toNT())\n const bindings = await queryPublicDataSelect(sparql, wikidataParameters)\n loadFromBindings(kb, publicDataID, bindings, publicDataID.doc()) // arg2 was solidSubject\n}\n\nexport async function getWikidataLocation (kb, solidSubject:NamedNode, publicDataID:NamedNode) {\n const sparql = `select distinct * where {\n\n $(subject) wdt:P276 ?location .\n\n optional { ?location wdt:P2044 ?elevation }\n optional { ?location wdt:P131 ?region }\n optional { ?location wdt:P625 ?coordinates }\noptional { ?location wdt:P17 ?country }\n\n# SERVICE wikibase:label { bd:serviceParam wikibase:language \"fr,en,de,it\" }\n}`.replace(subjectRegexp, publicDataID.toNT())\n debug.log(' location query sparql:' + sparql)\n const bindings = await queryPublicDataSelect(sparql, wikidataParameters)\n debug.log(' location query bindings:', bindings)\n loadFromBindings(kb, publicDataID, bindings, publicDataID.doc()) // was solidSubject\n}\n\nexport async function getDbpediaDetails (kb, solidSubject:NamedNode, publicDataID:NamedNode) {\n// Note below the string form of the named node with <> works in SPARQL\n const sparql = `select distinct ?city, ?state, ?country, ?homepage, ?logo, ?lat, ?long, WHERE {\n OPTIONAL { <${publicDataID}> <http://dbpedia.org/ontology/city> ?city }\n OPTIONAL { ${publicDataID} <http://dbpedia.org/ontology/state> ?state }\n OPTIONAL { ${publicDataID} <http://dbpedia.org/ontology/country> ?country }\n OPTIONAL { ${publicDataID} foaf:homepage ?homepage }\n OPTIONAL { ${publicDataID} foaf:lat ?lat; foaf:long ?long }\n OPTIONAL { ${publicDataID} <http://dbpedia.org/ontology/country> ?country }\n }`\n const bindings = await queryPublicDataSelect(sparql, dbpediaParameters)\n loadFromBindings(kb, publicDataID, bindings, publicDataID.doc())\n debug.log('Finished getDbpediaDetails.')\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"publicData.js","names":["AUTOCOMPLETE_LIMIT","subjectRegexp","wikidataClasses","Corporation","EducationalOrganization","GovernmentOrganization","MedicalOrganization","MusicGroup","NGO","Occupation","Project","ResearchOrganization","SportsOrganization","instituteDetailsWikidataQuery","fetcherOptionsJsonPublicData","credentials","headers","Headers","Accept","escoParameters","label","logo","store","sym","searchByNameURI","dbpediaParameters","searchByNameQuery","endpoint","dbPediaTypeMap","AcademicInsitution","wikidataOutgoingClassMap","Enterprise","Business","CharitableOrganization","Insitute","wikidataParameters","limit","insitituteDetailsQuery","wikidataIncomingClassMap","ns","schema","variableNameToPredicateMap","targetClass","rdf","sealImage","shortName","foaf","subsidiary","city","vcard","state","country","homepage","lat","bindingToTerm","item","typ","type","toLowerCase","value","Literal","Error","loadFromBindings","kb","solidSubject","bindings","doc","predMap","results","debug","log","forEach","binding","key","result","combined","JSON","stringify","Set","add","values","parse","obj","language","datatype","warn","regexp","match","exec","float","xsd","latitude","longitude","pred","ESCOResultToBindings","json","_embedded","map","name","title","uri","subject","queryESCODataByName","filter","theClass","queryTarget","queryURI","replace","toNT","fetcher","webOperation","response","text","responseText","slice","length","fixWikidataJSON","str","syntaxProblem","indexOf","goodness","lastIndexOf","queryPublicDataByName","languages","substituteStrings","template","u1","getPreferredLanguages","defaultPreferredLanguages","languagePrefs","sparql","queryPublicDataSelect","status","text2","alert","myUrlWithParams","URL","searchParams","append","href","options","queryPublicDataConstruct","pubicId","report","loadPublicDataThing","publicDataID","startsWith","getDbpediaDetails","getWikidataDetails","iDToFetch","load","subjRegexp","getWikidataDetailsOld","getWikidataLocation"],"sources":["../../../../src/widgets/forms/autocomplete/publicData.ts"],"sourcesContent":["/* Logic to access public data stores\n*\n* including filtering resut by natural language etc\n* See https://solidos.solidcommunity.net/public/2021/01%20Building%20Solid%20Apps%20which%20use%20Public%20Data.html\n*/\n/* eslint-disable no-console */\nimport { Literal, NamedNode, parse } from 'rdflib'\nimport { store } from 'solid-logic'\nimport * as debug from '../../../debug'\nimport * as ns from '../../../ns'\nimport { defaultPreferredLanguages, getPreferredLanguages } from './language'\n\nexport const AUTOCOMPLETE_LIMIT = 200 // How many to get from server\n// With 3000 we could exceed the wikidata timeout\n\nconst subjectRegexp = /\\$\\(subject\\)/g\n\ninterface Term {\n type: string;\n value: string\n}\n\nexport interface Binding {\n subject: Term;\n name?: Term\n location?: Term\n coordinates?: Term\n}\n\ntype Bindings = Binding[]\n\nexport type QueryParameters =\n{ label: string;\n limit?: number;\n logo?: NamedNode;\n searchByNameQuery?: string;\n searchByNameURI?: string;\n insitituteDetailsQuery?: string;\n endpoint?: string;\n objectURIBase?: NamedNode;\n targetClass?: NamedNode,\n}\n\n// Schema.org seems to suggest NGOs are non-profit and Corporaions are for-profit\n// but doesn't have explicit classes\nexport const wikidataClasses = {\n Corporation: 'http://www.wikidata.org/entity/Q6881511', // Enterprise is for-profit\n EducationalOrganization: 'http://www.wikidata.org/entity/Q178706', // insitution\n GovernmentOrganization: 'http://www.wikidata.org/entity/Q327333', // government agency\n MedicalOrganization: 'http://www.wikidata.org/entity/Q4287745',\n MusicGroup: 'http://www.wikidata.org/entity/Q32178211', // music organization\n NGO: 'http://www.wikidata.org/entity/Q163740', // nonprofit organization @@\n Occupation: 'http://www.wikidata.org/entity/Q28640', // Profession\n // Organization: 'http://www.wikidata.org/entity/Q43229',\n Project: 'http://www.wikidata.org/entity/Q170584',\n ResearchOrganization: 'http://www.wikidata.org/entity/Q31855',\n SportsOrganization: 'http://www.wikidata.org/entity/Q4438121'\n}\n\nexport const instituteDetailsWikidataQuery = `prefix vcard: <http://www.w3.org/2006/vcard/ns#>\nCONSTRUCT\n{ wd:Q49108 vcard:fn ?itemLabel.\nwd:Q49108 rdf:type ?klass. ?klass rdfs:label ?klassLabel; rdfs:comment ?klassDescription .\nwd:Q49108 schema:logo ?logo;\n schema:image ?image;\n schema:logo ?sealImage;\n schema:subOrganization ?subsidiary .\n ?subsidiary rdfs:label ?subsidiaryLabel .\n ?supersidiary schema:subOrganization wd:Q49108 .\n ?supersidiary rdfs:label ?supersidiaryLabel .\n wd:Q49108 schema:location ?location .\n ?location schema:elevation ?elevation .\n ?location wdt:P131 ?region . ?region rdfs:label ?regionLabel .\n ?location wdt:P625 ?coordinates .\n ?location schema:country ?country . ?country rdfs:label ?countryLabel .\n}\nWHERE\n{ optional {wd:Q49108 rdfs:label ?itemLabel} .\n optional {wd:Q49108 wdt:P154 ?logo .}\n optional {wd:Q49108 wdt:P31 ?klass .}\n optional {wd:Q49108 wdt:P158 ?sealImage .}\n optional {wd:Q49108 wdt:P18 ?image .}\n\n optional { wd:Q49108 wdt:P355 ?subsidiary . }\n optional { ?supersidiary wdt:P355 wd:Q49108. }\n\n optional { wd:Q49108 wdt:P276 ?location .\n\n optional { ?location schema:eleveation ?elevation }\n optional { ?location wdt:P131 ?region }\n optional { ?location wdt:P625 ?coordinates }\n optional { ?location wdt:P17 ?country }\n }\n SERVICE wikibase:label { bd:serviceParam wikibase:language \"fr,en,de,it\". }\n}`\n\nexport const fetcherOptionsJsonPublicData = {\n credentials: 'omit' as 'include' | 'omit' | undefined, // try to avoid CORS problems. Data is public so no auth\n headers: new Headers({ Accept: 'application/json' })\n}\n\nexport const escoParameters:QueryParameters = {\n label: 'ESCO',\n logo: store.sym('https://ec.europa.eu/esco/portal/static_resource2/images/logo/logo_en.gif'),\n searchByNameURI: 'https://ec.europa.eu/esco/api/search?language=$(language)&type=occupation&text=$(name)'\n // endpoint: undefined\n // returnFormat: 'ESCO',\n // targetClass: {}\n}\n\nexport const dbpediaParameters:QueryParameters = {\n label: 'DBPedia',\n logo: store.sym('https://upload.wikimedia.org/wikipedia/commons/thumb/7/73/DBpediaLogo.svg/263px-DBpediaLogo.svg.png'),\n searchByNameQuery: `select distinct ?subject, ?name where {\n ?subject a $(targetClass); rdfs:label ?name\n FILTER regex(?name, \"$(name)\", \"i\")\n } LIMIT $(limit)`,\n endpoint: 'https://dbpedia.org/sparql/'\n}\n\nexport const dbPediaTypeMap = { AcademicInsitution: 'http://umbel.org/umbel/rc/EducationalOrganization' }\n\nexport const wikidataOutgoingClassMap = {\n AcademicInsitution: 'http://www.wikidata.org/entity/Q4671277',\n Enterprise: 'http://www.wikidata.org/entity/Q6881511',\n Business: 'http://www.wikidata.org/entity/Q4830453',\n NGO: 'http://www.wikidata.org/entity/Q79913',\n CharitableOrganization: 'http://www.wikidata.org/entity/Q708676',\n Insitute: 'http://www.wikidata.org/entity/Q1664720'\n}\n\nexport const wikidataParameters = {\n label: 'WikiData',\n limit: 3000, // Need a high one as very many items, and many languages\n logo: store.sym('https://www.wikimedia.org/static/images/project-logos/wikidatawiki.png'),\n endpoint: 'https://query.wikidata.org/sparql',\n searchByNameQuery: `SELECT ?subject ?name\n WHERE {\n ?klass wdt:P279* $(targetClass) .\n ?subject wdt:P31 ?klass .\n ?subject rdfs:label ?name.\n FILTER regex(?name, \"$(name)\", \"i\")\n } LIMIT $(limit) `, // was SERVICE wikibase:label { bd:serviceParam wikibase:language \"[AUTO_LANGUAGE],en\" }\n\n insitituteDetailsQuery: `CONSTRUCT\n{ wd:Q49108 schema:name ?itemLabel;\n schema:logo ?logo;\n schema:logo ?sealImage;\n schema:subOrganization ?subsidiary .\n ?subsidiary schema:name ?subsidiaryLabel .\n}\nWHERE\n{\n wd:Q49108 # rdfs:label ?itemLabel ;\n wdt:P154 ?logo;\n wdt:P158 ?sealImage ;\n wdt:P355 ?subsidiary .\n # ?subsidiary rdfs:label ?subsidiaryLabel .\n\n SERVICE wikibase:label { bd:serviceParam wikibase:language \"[AUTO_LANGUAGE], fr\". }\n}`\n}\n\nexport const wikidataIncomingClassMap = {\n 'http://www.wikidata.org/entity/Q15936437': ns.schema('CollegeOrUniversity'), // research university\n 'http://www.wikidata.org/entity/Q1664720': ns.schema('EducationalOrganization'), // insitute @@\n 'http://www.wikidata.org/entity/Q43229': ns.schema('Organization'), // research university\n 'http://www.wikidata.org/entity/Q3918': ns.schema('CollegeOrUniversity'), // university\n 'http://www.wikidata.org/entity/Q170584': ns.schema('Project'), // university\n 'http://www.wikidata.org/entity/Q327333': ns.schema('GovernmentOrganization'), // govt agency\n 'http://www.wikidata.org/entity/Q2221906': ns.schema('Place'), // geographic location\n 'http://www.wikidata.org/entity/Q167037': ns.schema('Corporation') // Corporation\n\n}\nexport const variableNameToPredicateMap = { // allow other mappings to be added in theory hence var\n // wikidata:\n targetClass: ns.rdf('type'),\n // logo: ns.schema('logo'),\n sealImage: ns.schema('logo'),\n // image: ns.schema('image'), defaults to shema\n shortName: ns.foaf('nick'),\n subsidiary: ns.schema('subOrganization'),\n // dbpedia - :\n city: ns.vcard('locality'),\n state: ns.vcard('region'),\n country: ns.vcard('country-name'),\n homepage: ns.foaf('homepage'),\n lat: ns.schema('latitude'),\n long: ns.schema('longitude')\n}\n\nexport function bindingToTerm (item) {\n const typ = item.type.toLowerCase()\n if (typ === 'uri' || typ === 'iri') {\n return store.sym(item.value)\n } else if (typ === 'literal') {\n if (item['xml:lang']) {\n return new Literal(item.value, item['xml:lang'])\n } else {\n return new Literal(item.value)\n }\n } else {\n throw new Error(`bindingToTerm: Unexpected type \"${item.type}\" in sparql binding}`)\n }\n}\n\nexport function loadFromBindings (kb, solidSubject:NamedNode, bindings, doc, predMap = variableNameToPredicateMap) {\n const results = {}\n debug.log(`loadFromBindings: subject: ${solidSubject}`)\n debug.log(` doc: ${doc}`)\n bindings.forEach(binding => {\n for (const key in binding) {\n const result = binding[key]\n const combined = JSON.stringify(result) // ( result.type, result.value )\n results[key] = results[key] || new Set()\n results[key].add(combined) // remove duplicates\n }\n })\n for (const key in results) {\n const values = results[key]\n debug.log(` results ${key} -> ${values}`)\n values.forEach(combined => {\n const result = JSON.parse(combined)\n const { type, value } = result\n let obj\n if (type === 'uri') {\n obj = kb.sym(value)\n } else if (type === 'literal') {\n obj = new Literal(value, result.language, result.datatype)\n } else {\n throw new Error(`loadFromBindings: unexpected type: ${type}`)\n }\n if (key === 'type') {\n if (wikidataIncomingClassMap[value]) {\n obj = wikidataIncomingClassMap[value]\n } else {\n debug.warn('Unmapped Wikidata Class: ' + value)\n }\n } else if (key === 'coordinates') {\n // const latlong = value // Like 'Point(-71.106111111 42.375)'\n debug.log(' @@@ hey a point: ' + value)\n // const regexp = /.*\\(([-0-9\\.-]*) ([-0-9\\.-]*)\\)/\n const regexp = /.*\\(([-0-9.-]*) ([-0-9.-]*)\\)/\n const match = regexp.exec(value)\n if (match) {\n const float = ns.xsd('float')\n const latitude = new Literal(match[1], null, float)\n const longitude = new Literal(match[2], null, float)\n kb.add(solidSubject, ns.schema('longitude'), longitude, doc)\n kb.add(solidSubject, ns.schema('latitude'), latitude, doc)\n } else {\n debug.log('Bad coordinates syntax: ' + value)\n }\n } else {\n const pred = predMap[key] || ns.schema(key) // fallback to just using schema.org\n kb.add(solidSubject, pred, obj, doc) // @@ deal with non-string and objects\n debug.log(` public data ${pred} ${obj}.`)\n }\n })\n }\n}\n\n/* ESCO sopecific\n*/\nexport function ESCOResultToBindings (json: Object): Bindings {\n const results = (json as any)._embedded.results // Array\n const bindings = results.map(result => {\n const name = result.title\n const uri = result.uri // like http://data.europa.eu/esco/occupation/57af9090-55b4-4911-b2d0-86db01c00b02\n return { name: { value: name, type: 'literal' }, subject: { type: 'IRI', value: uri } } // simulate SPARQL bindings\n })\n return bindings\n}\n\n/* Query all entities of given class and partially matching name\n*/\nexport async function queryESCODataByName (filter: string, theClass:NamedNode, queryTarget: QueryParameters): Promise<Bindings> {\n if (!queryTarget.searchByNameURI) throw new Error('Missing queryTarget.searchByNameURI on queryESCODataByName')\n const limit = queryTarget.limit || AUTOCOMPLETE_LIMIT\n const queryURI = queryTarget.searchByNameURI\n .replace('$(name)', filter)\n .replace('$(limit)', '' + limit)\n .replace('$(targetClass)', theClass.toNT())\n debug.log('Querying ESCO data - uri: ' + queryURI)\n\n const response = await store.fetcher?.webOperation('GET', queryURI, fetcherOptionsJsonPublicData)\n const text = response?.responseText || ''\n debug.log(' Query result text' + text.slice(0, 500) + '...')\n if (text.length === 0) throw new Error('Wot no text back from ESCO query ' + queryURI)\n const json = JSON.parse(text)\n // console.log('Whole JSON return object', json)\n debug.log(' ESCO Query result JSON' + JSON.stringify(json, null, 4).slice(0, 500) + '...')\n return ESCOResultToBindings(json)\n}\n\n/* Cope ithe syntax probelm in wikidata timeout responses\n*\n* Wikidata bug: https://phabricator.wikimedia.org/T283962\n* This will not be needed whn that WDQS bug fixed.\n* This is aptured in https://github.com/solidos/solid-ui/issues/403\n*/\nfunction fixWikidataJSON (str) {\n const syntaxProblem = str.indexOf('SPARQL-QUERY')\n if (syntaxProblem < 0) return str\n // console.log('@@ fixWikidataJSON FIXING')\n debug.warn(' ### Fixing JSON with wikidata error code injection ' + str.slice(syntaxProblem, syntaxProblem + 200))\n const goodness = str.lastIndexOf('}, {')\n return str.slice(0, goodness) + ' } ] } } ' // Close binding, array, bindings, results, root object\n}\n/* Query all entities of given class and partially matching name\n*/\nexport async function queryPublicDataByName (\n filter: string,\n theClass:NamedNode,\n languages: Array<string>,\n queryTarget: QueryParameters): Promise<Bindings> {\n function substituteStrings (template: string):string {\n const limit = queryTarget.limit || AUTOCOMPLETE_LIMIT\n const u1 = template.replace('$(name)', filter)\n .replace('$(limit)', '' + limit)\n .replace('$(language)', language)\n return u1.replace('$(targetClass)', theClass.toNT())\n }\n\n if (!theClass) {\n throw new Error('queryPublicDataByName: No class provided')\n }\n\n const languagePrefs = await getPreferredLanguages() || defaultPreferredLanguages\n const language = languagePrefs[0] || 'en'\n if (queryTarget.searchByNameQuery) {\n const sparql = substituteStrings(queryTarget.searchByNameQuery)\n debug.log('Querying public data - sparql: ' + sparql)\n return queryPublicDataSelect(sparql, queryTarget)\n } else if (queryTarget.searchByNameURI) { // not sparql - random API\n const queryURI = substituteStrings(queryTarget.searchByNameURI)\n let response\n try {\n response = await store.fetcher?.webOperation('GET', queryURI, fetcherOptionsJsonPublicData)\n } catch (err) {\n throw new Error(`Exception when trying to fetch ${queryURI} \\n ${err}`)\n }\n const text = response.responseText || '' // ts\n if (response.status !== 200) {\n throw new Error(`HTTP error status ${response.status} trying to fetch ${queryURI} `)\n }\n debug.log(' Query result text' + text.slice(0, 500) + '...')\n if (text.length === 0) throw new Error('queryPublicDataByName: No text back from public data query ' + queryURI)\n const text2 = fixWikidataJSON(text) // Kludge: strip of interrupting error message\n const json = JSON.parse(text2)\n debug.log(' API Query result JSON' + JSON.stringify(json, null, 4).slice(0, 500) + '...')\n if ((json as any)._embedded) {\n debug.log(' Looks like ESCO')\n const bindings = ESCOResultToBindings(json)\n return bindings\n } else {\n alert('Code me: unrecognized API return format')\n throw new Error(`*** Need to add code to parse unrecognized API JSON return\\n${JSON.stringify(json, null, 4)}`)\n }\n } else {\n throw new Error('Query source must have either rest API or SPARQL endpoint.')\n }\n}\n\n/* Query a database using SPARQL SELECT\n*/\nexport async function queryPublicDataSelect (sparql: string, queryTarget: QueryParameters): Promise<Bindings> {\n if (!queryTarget.endpoint) throw new Error('Missing queryTarget.endpoint required for queryPublicDataSelect')\n const myUrlWithParams = new URL(queryTarget.endpoint)\n myUrlWithParams.searchParams.append('query', sparql)\n const queryURI = myUrlWithParams.href\n debug.log(' queryPublicDataSelect uri: ' + queryURI)\n const headers = new Headers()\n headers.append('Accept', 'application/json')\n const options = {\n credentials: 'omit' as 'include' | 'omit' | undefined, // CORS - as we know it is public\n headers\n }\n\n const response = await store.fetcher?.webOperation('GET', queryURI, options)\n\n const text = response?.responseText || ''\n if (text.length === 0) throw new Error('No text back from query ' + queryURI)\n const text2 = fixWikidataJSON(text)\n const json = JSON.parse(text2)\n debug.log(' Query result JSON' + JSON.stringify(json, null, 4).slice(0, 100) + '...')\n const bindings = json.results.bindings\n return bindings\n}\n\n/* Load from a database using SPARQL CONSTRUCT\n*/\nexport async function queryPublicDataConstruct (sparql: string, pubicId: NamedNode, queryTarget: QueryParameters): Promise<void> {\n debug.log('queryPublicDataConstruct: sparql:', sparql)\n if (!queryTarget.endpoint) throw new Error('Missing queryTarget.endpoint required for queryPublicDataConstruct')\n const myUrlWithParams = new URL(queryTarget.endpoint)\n myUrlWithParams.searchParams.append('query', sparql)\n const queryURI = myUrlWithParams.href\n debug.log(' queryPublicDataConstruct uri: ' + queryURI)\n const headers = new Headers()\n headers.append('Accept', 'text/turtle')\n const options = {\n credentials: 'omit' as 'include' | 'omit' | undefined, // CORS // @tsc pain\n headers // ({ Accept: 'text/turtle' } as Headers)\n }\n const response = await store.fetcher?.webOperation('GET', queryURI, options)\n const text = response?.responseText || 'No response text?'\n const report = text.length > 500 ? text.slice(0, 200) + ' ... ' + text.slice(-200) : text\n debug.log(' queryPublicDataConstruct result text:' + report)\n if (text.length === 0) throw new Error('queryPublicDataConstruct: No text back from construct query:' + queryURI)\n parse(text, store, pubicId.uri, 'text/turtle')\n}\n\nexport async function loadPublicDataThing (kb, subject: NamedNode, publicDataID: NamedNode) {\n if (publicDataID.uri.startsWith('https://dbpedia.org/resource/')) {\n return getDbpediaDetails(kb, subject, publicDataID)\n } else if (publicDataID.uri.match(/^https?:\\/\\/www\\.wikidata\\.org\\/entity\\/.*/)) {\n // const QId = publicDataID.uri.split('/')[4]\n // const dataURI = `http://www.wikidata.org/wiki/Special:EntityData/${QId}.ttl`\n // In fact loading the data URI gives much too much irrelevant data, from wikidata, so we do a query.\n await getWikidataDetails(kb, subject, publicDataID)\n // await getWikidataLocation(kb, subject, publicDataID) -- should get that in the details query now\n } else {\n const iDToFetch = publicDataID.uri.startsWith('http:')\n ? kb.sym('https:' + publicDataID.uri.slice(5))\n : publicDataID\n const headers = new Headers()\n headers.append('Accept', 'text/turtle')\n return kb.fetcher.load(iDToFetch, {\n credentials: 'omit' as 'include' | 'omit' | undefined,\n headers\n })\n }\n}\n\nexport async function getWikidataDetails (kb, solidSubject:NamedNode, publicDataID:NamedNode) {\n const subjRegexp = /wd:Q49108/g\n const sparql = instituteDetailsWikidataQuery.replace(subjRegexp, publicDataID.toNT())\n await queryPublicDataConstruct(sparql, publicDataID, wikidataParameters)\n debug.log('getWikidataDetails: loaded.', publicDataID)\n}\n\nexport async function getWikidataDetailsOld (kb, solidSubject:NamedNode, publicDataID:NamedNode) {\n const sparql = `select distinct * where {\n optional { $(subject) wdt:P31 ?targetClass } # instance of\n optional { $(subject) wdt:P154 ?logo }\n optional { $(subject) wdt:P158 ?sealImage }\n# optional { $(subject) wdt:P159 ?headquartersLocation }\n\noptional { $(subject) wdt:P17 ?country }\noptional { $(subject) wdt:P18 ?image }\noptional { $(subject) wdt:P1813 ?shortName }\n\noptional { $(subject) wdt:P355 ?subsidiary }\n# SERVICE wikibase:label { bd:serviceParam wikibase:language \"fr,en,de,it\" }\n}`\n .replace(subjectRegexp, publicDataID.toNT())\n const bindings = await queryPublicDataSelect(sparql, wikidataParameters)\n loadFromBindings(kb, publicDataID, bindings, publicDataID.doc()) // arg2 was solidSubject\n}\n\nexport async function getWikidataLocation (kb, solidSubject:NamedNode, publicDataID:NamedNode) {\n const sparql = `select distinct * where {\n\n $(subject) wdt:P276 ?location .\n\n optional { ?location wdt:P2044 ?elevation }\n optional { ?location wdt:P131 ?region }\n optional { ?location wdt:P625 ?coordinates }\noptional { ?location wdt:P17 ?country }\n\n# SERVICE wikibase:label { bd:serviceParam wikibase:language \"fr,en,de,it\" }\n}`.replace(subjectRegexp, publicDataID.toNT())\n debug.log(' location query sparql:' + sparql)\n const bindings = await queryPublicDataSelect(sparql, wikidataParameters)\n debug.log(' location query bindings:', bindings)\n loadFromBindings(kb, publicDataID, bindings, publicDataID.doc()) // was solidSubject\n}\n\nexport async function getDbpediaDetails (kb, solidSubject:NamedNode, publicDataID:NamedNode) {\n// Note below the string form of the named node with <> works in SPARQL\n const sparql = `select distinct ?city, ?state, ?country, ?homepage, ?logo, ?lat, ?long, WHERE {\n OPTIONAL { <${publicDataID}> <http://dbpedia.org/ontology/city> ?city }\n OPTIONAL { ${publicDataID} <http://dbpedia.org/ontology/state> ?state }\n OPTIONAL { ${publicDataID} <http://dbpedia.org/ontology/country> ?country }\n OPTIONAL { ${publicDataID} foaf:homepage ?homepage }\n OPTIONAL { ${publicDataID} foaf:lat ?lat; foaf:long ?long }\n OPTIONAL { ${publicDataID} <http://dbpedia.org/ontology/country> ?country }\n }`\n const bindings = await queryPublicDataSelect(sparql, dbpediaParameters)\n loadFromBindings(kb, publicDataID, bindings, publicDataID.doc())\n debug.log('Finished getDbpediaDetails.')\n}\n"],"mappings":"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"}