solid-ui 2.4.14-bbf45639-641e6c97 → 2.4.15-alpha

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 (259) hide show
  1. package/LICENSE.md +0 -0
  2. package/README.md +0 -0
  3. package/lib/acl/access-controller.d.ts +0 -0
  4. package/lib/acl/access-controller.d.ts.map +0 -0
  5. package/lib/acl/access-controller.js +0 -0
  6. package/lib/acl/access-controller.js.map +0 -0
  7. package/lib/acl/access-groups.d.ts +0 -0
  8. package/lib/acl/access-groups.d.ts.map +0 -0
  9. package/lib/acl/access-groups.js +0 -0
  10. package/lib/acl/access-groups.js.map +0 -0
  11. package/lib/acl/acl-control.d.ts +0 -0
  12. package/lib/acl/acl-control.d.ts.map +0 -0
  13. package/lib/acl/acl-control.js +0 -0
  14. package/lib/acl/acl-control.js.map +0 -0
  15. package/lib/acl/acl.d.ts +0 -0
  16. package/lib/acl/acl.d.ts.map +0 -0
  17. package/lib/acl/acl.js +0 -0
  18. package/lib/acl/acl.js.map +0 -0
  19. package/lib/acl/add-agent-buttons.d.ts +0 -0
  20. package/lib/acl/add-agent-buttons.d.ts.map +0 -0
  21. package/lib/acl/add-agent-buttons.js +0 -0
  22. package/lib/acl/add-agent-buttons.js.map +0 -0
  23. package/lib/acl/index.d.ts +0 -0
  24. package/lib/acl/index.d.ts.map +0 -0
  25. package/lib/acl/index.js +0 -0
  26. package/lib/acl/index.js.map +0 -0
  27. package/lib/acl/styles.d.ts +0 -0
  28. package/lib/acl/styles.d.ts.map +0 -0
  29. package/lib/acl/styles.js +0 -0
  30. package/lib/acl/styles.js.map +0 -0
  31. package/lib/acl/types.d.ts +0 -0
  32. package/lib/acl/types.d.ts.map +0 -0
  33. package/lib/acl/types.js +0 -0
  34. package/lib/acl/types.js.map +0 -0
  35. package/lib/authn/authSession.d.ts +0 -0
  36. package/lib/authn/authSession.d.ts.map +0 -0
  37. package/lib/authn/authSession.js +0 -0
  38. package/lib/authn/authSession.js.map +0 -0
  39. package/lib/authn/authn.d.ts +0 -0
  40. package/lib/authn/authn.d.ts.map +0 -0
  41. package/lib/authn/authn.js +0 -0
  42. package/lib/authn/authn.js.map +0 -0
  43. package/lib/authn/config-default.js +0 -0
  44. package/lib/authn/config-default.js.map +0 -0
  45. package/lib/authn/index.d.ts +0 -0
  46. package/lib/authn/index.d.ts.map +0 -0
  47. package/lib/authn/index.js +0 -0
  48. package/lib/authn/index.js.map +0 -0
  49. package/lib/authn/signup.js +0 -0
  50. package/lib/authn/signup.js.map +0 -0
  51. package/lib/authn/types.d.ts +0 -0
  52. package/lib/authn/types.d.ts.map +0 -0
  53. package/lib/authn/types.js +0 -0
  54. package/lib/authn/types.js.map +0 -0
  55. package/lib/chat/bookmarks.js +14 -13
  56. package/lib/chat/bookmarks.js.map +1 -1
  57. package/lib/chat/chatLogic.js +340 -0
  58. package/lib/chat/chatLogic.js.map +1 -0
  59. package/lib/chat/dateFolder.js +12 -12
  60. package/lib/chat/dateFolder.js.map +1 -1
  61. package/lib/chat/infinite.js +285 -665
  62. package/lib/chat/infinite.js.map +1 -1
  63. package/lib/chat/message.js +445 -71
  64. package/lib/chat/message.js.map +1 -1
  65. package/lib/chat/messageTools.js +165 -103
  66. package/lib/chat/messageTools.js.map +1 -1
  67. package/lib/chat/thread.js +162 -32
  68. package/lib/chat/thread.js.map +1 -1
  69. package/lib/create/create.d.ts +0 -0
  70. package/lib/create/create.d.ts.map +0 -0
  71. package/lib/create/create.js +0 -0
  72. package/lib/create/create.js.map +0 -0
  73. package/lib/create/index.d.ts +0 -0
  74. package/lib/create/index.d.ts.map +0 -0
  75. package/lib/create/index.js +0 -0
  76. package/lib/create/index.js.map +0 -0
  77. package/lib/create/types.d.ts +0 -0
  78. package/lib/create/types.d.ts.map +0 -0
  79. package/lib/create/types.js +0 -0
  80. package/lib/create/types.js.map +0 -0
  81. package/lib/debug.d.ts +0 -0
  82. package/lib/debug.d.ts.map +0 -0
  83. package/lib/debug.js +0 -0
  84. package/lib/debug.js.map +0 -0
  85. package/lib/folders.js +0 -0
  86. package/lib/folders.js.map +0 -0
  87. package/lib/footer/index.d.ts +0 -0
  88. package/lib/footer/index.d.ts.map +0 -0
  89. package/lib/footer/index.js +0 -0
  90. package/lib/footer/index.js.map +0 -0
  91. package/lib/footer/styleMap.d.ts +0 -0
  92. package/lib/footer/styleMap.d.ts.map +0 -0
  93. package/lib/footer/styleMap.js +0 -0
  94. package/lib/footer/styleMap.js.map +0 -0
  95. package/lib/header/empty-profile.d.ts +0 -0
  96. package/lib/header/empty-profile.d.ts.map +0 -0
  97. package/lib/header/empty-profile.js +0 -0
  98. package/lib/header/empty-profile.js.map +0 -0
  99. package/lib/header/index.d.ts +0 -0
  100. package/lib/header/index.d.ts.map +0 -0
  101. package/lib/header/index.js +0 -0
  102. package/lib/header/index.js.map +0 -0
  103. package/lib/header/styleMap.d.ts +0 -0
  104. package/lib/header/styleMap.d.ts.map +0 -0
  105. package/lib/header/styleMap.js +0 -0
  106. package/lib/header/styleMap.js.map +0 -0
  107. package/lib/iconBase.d.ts +0 -0
  108. package/lib/iconBase.d.ts.map +0 -0
  109. package/lib/iconBase.js +0 -0
  110. package/lib/iconBase.js.map +0 -0
  111. package/lib/icons/solid_logo.d.ts +0 -0
  112. package/lib/icons/solid_logo.d.ts.map +0 -0
  113. package/lib/icons/solid_logo.js +0 -0
  114. package/lib/icons/solid_logo.js.map +0 -0
  115. package/lib/index.d.ts +0 -0
  116. package/lib/index.d.ts.map +0 -0
  117. package/lib/index.js +0 -0
  118. package/lib/index.js.map +0 -0
  119. package/lib/jss/index.d.ts +0 -0
  120. package/lib/jss/index.d.ts.map +0 -0
  121. package/lib/jss/index.js +0 -0
  122. package/lib/jss/index.js.map +0 -0
  123. package/lib/log.d.ts +0 -0
  124. package/lib/log.d.ts.map +0 -0
  125. package/lib/log.js +0 -0
  126. package/lib/log.js.map +0 -0
  127. package/lib/logic.d.ts +0 -0
  128. package/lib/logic.d.ts.map +0 -0
  129. package/lib/logic.js +0 -0
  130. package/lib/logic.js.map +0 -0
  131. package/lib/matrix/index.d.ts +0 -0
  132. package/lib/matrix/index.d.ts.map +0 -0
  133. package/lib/matrix/index.js +0 -0
  134. package/lib/matrix/index.js.map +0 -0
  135. package/lib/matrix/matrix.d.ts +0 -0
  136. package/lib/matrix/matrix.d.ts.map +0 -0
  137. package/lib/matrix/matrix.js +0 -0
  138. package/lib/matrix/matrix.js.map +0 -0
  139. package/lib/matrix/types.d.ts +0 -0
  140. package/lib/matrix/types.d.ts.map +0 -0
  141. package/lib/matrix/types.js +0 -0
  142. package/lib/matrix/types.js.map +0 -0
  143. package/lib/media/index.d.ts +0 -0
  144. package/lib/media/index.d.ts.map +0 -0
  145. package/lib/media/index.js +0 -0
  146. package/lib/media/index.js.map +0 -0
  147. package/lib/media/media-capture.d.ts +0 -0
  148. package/lib/media/media-capture.d.ts.map +0 -0
  149. package/lib/media/media-capture.js +0 -0
  150. package/lib/media/media-capture.js.map +0 -0
  151. package/lib/messageArea.js +0 -0
  152. package/lib/messageArea.js.map +0 -0
  153. package/lib/noun_Camera_1618446_000000.js +0 -0
  154. package/lib/noun_Camera_1618446_000000.js.map +0 -0
  155. package/lib/ns.js +0 -0
  156. package/lib/ns.js.map +0 -0
  157. package/lib/pad.d.ts +0 -0
  158. package/lib/pad.d.ts.map +0 -0
  159. package/lib/pad.js +0 -0
  160. package/lib/pad.js.map +0 -0
  161. package/lib/participation.d.ts +0 -0
  162. package/lib/participation.d.ts.map +0 -0
  163. package/lib/participation.js +0 -0
  164. package/lib/participation.js.map +0 -0
  165. package/lib/preferences.js +0 -0
  166. package/lib/preferences.js.map +0 -0
  167. package/lib/stories/decorators.js +0 -0
  168. package/lib/stories/decorators.js.map +0 -0
  169. package/lib/style.js +0 -0
  170. package/lib/style.js.map +0 -0
  171. package/lib/table.js +0 -0
  172. package/lib/table.js.map +0 -0
  173. package/lib/tabs.d.ts +0 -0
  174. package/lib/tabs.d.ts.map +0 -0
  175. package/lib/tabs.js +0 -0
  176. package/lib/tabs.js.map +0 -0
  177. package/lib/typings.d.js +0 -0
  178. package/lib/typings.d.js.map +0 -0
  179. package/lib/utils/headerFooterHelpers.d.ts +0 -0
  180. package/lib/utils/headerFooterHelpers.d.ts.map +0 -0
  181. package/lib/utils/headerFooterHelpers.js +0 -0
  182. package/lib/utils/headerFooterHelpers.js.map +0 -0
  183. package/lib/utils/index.js +0 -0
  184. package/lib/utils/index.js.map +0 -0
  185. package/lib/utils/label.d.ts +0 -0
  186. package/lib/utils/label.d.ts.map +0 -0
  187. package/lib/utils/label.js +0 -0
  188. package/lib/utils/label.js.map +0 -0
  189. package/lib/versionInfo.d.ts +0 -0
  190. package/lib/versionInfo.d.ts.map +0 -0
  191. package/lib/versionInfo.js +10 -10
  192. package/lib/versionInfo.js.map +1 -1
  193. package/lib/webpack-bundle.js +1408 -993
  194. package/lib/webpack-bundle.js.map +1 -1
  195. package/lib/widgets/buttons/iconLinks.d.ts +0 -0
  196. package/lib/widgets/buttons/iconLinks.d.ts.map +0 -0
  197. package/lib/widgets/buttons/iconLinks.js +0 -0
  198. package/lib/widgets/buttons/iconLinks.js.map +0 -0
  199. package/lib/widgets/buttons.d.ts +0 -0
  200. package/lib/widgets/buttons.d.ts.map +1 -1
  201. package/lib/widgets/buttons.js +8 -1
  202. package/lib/widgets/buttons.js.map +1 -1
  203. package/lib/widgets/dragAndDrop.js +0 -0
  204. package/lib/widgets/dragAndDrop.js.map +0 -0
  205. package/lib/widgets/error.d.ts +0 -0
  206. package/lib/widgets/error.d.ts.map +0 -0
  207. package/lib/widgets/error.js +0 -0
  208. package/lib/widgets/error.js.map +0 -0
  209. package/lib/widgets/forms/autocomplete/autocompleteBar.d.ts +0 -0
  210. package/lib/widgets/forms/autocomplete/autocompleteBar.d.ts.map +0 -0
  211. package/lib/widgets/forms/autocomplete/autocompleteBar.js +0 -0
  212. package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +0 -0
  213. package/lib/widgets/forms/autocomplete/autocompleteField.d.ts +0 -0
  214. package/lib/widgets/forms/autocomplete/autocompleteField.d.ts.map +0 -0
  215. package/lib/widgets/forms/autocomplete/autocompleteField.js +0 -0
  216. package/lib/widgets/forms/autocomplete/autocompleteField.js.map +0 -0
  217. package/lib/widgets/forms/autocomplete/autocompletePicker.d.ts +0 -0
  218. package/lib/widgets/forms/autocomplete/autocompletePicker.d.ts.map +0 -0
  219. package/lib/widgets/forms/autocomplete/autocompletePicker.js +0 -0
  220. package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +0 -0
  221. package/lib/widgets/forms/autocomplete/language.d.ts +0 -0
  222. package/lib/widgets/forms/autocomplete/language.d.ts.map +0 -0
  223. package/lib/widgets/forms/autocomplete/language.js +0 -0
  224. package/lib/widgets/forms/autocomplete/language.js.map +0 -0
  225. package/lib/widgets/forms/autocomplete/publicData.d.ts +0 -0
  226. package/lib/widgets/forms/autocomplete/publicData.d.ts.map +0 -0
  227. package/lib/widgets/forms/autocomplete/publicData.js +0 -0
  228. package/lib/widgets/forms/autocomplete/publicData.js.map +0 -0
  229. package/lib/widgets/forms/basic.d.ts +0 -0
  230. package/lib/widgets/forms/basic.d.ts.map +0 -0
  231. package/lib/widgets/forms/basic.js +0 -0
  232. package/lib/widgets/forms/basic.js.map +0 -0
  233. package/lib/widgets/forms/comment.d.ts +0 -0
  234. package/lib/widgets/forms/comment.d.ts.map +0 -0
  235. package/lib/widgets/forms/comment.js +0 -0
  236. package/lib/widgets/forms/comment.js.map +0 -0
  237. package/lib/widgets/forms/fieldFunction.d.ts +0 -0
  238. package/lib/widgets/forms/fieldFunction.d.ts.map +0 -0
  239. package/lib/widgets/forms/fieldFunction.js +0 -0
  240. package/lib/widgets/forms/fieldFunction.js.map +0 -0
  241. package/lib/widgets/forms/fieldParams.d.ts +0 -0
  242. package/lib/widgets/forms/fieldParams.d.ts.map +0 -0
  243. package/lib/widgets/forms/fieldParams.js +0 -0
  244. package/lib/widgets/forms/fieldParams.js.map +0 -0
  245. package/lib/widgets/forms/formStyle.d.ts +0 -0
  246. package/lib/widgets/forms/formStyle.d.ts.map +0 -0
  247. package/lib/widgets/forms/formStyle.js +0 -0
  248. package/lib/widgets/forms/formStyle.js.map +0 -0
  249. package/lib/widgets/forms.js +0 -0
  250. package/lib/widgets/forms.js.map +0 -0
  251. package/lib/widgets/index.js +0 -0
  252. package/lib/widgets/index.js.map +0 -0
  253. package/lib/widgets/peoplePicker.js +0 -0
  254. package/lib/widgets/peoplePicker.js.map +0 -0
  255. package/lib/widgets/widgetHelpers.d.ts +0 -0
  256. package/lib/widgets/widgetHelpers.d.ts.map +0 -0
  257. package/lib/widgets/widgetHelpers.js +0 -0
  258. package/lib/widgets/widgetHelpers.js.map +0 -0
  259. package/package.json +3 -3
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/chat/chatLogic.js"],"names":["ChatChannel","channel","options","channelRoot","doc","dateFolder","DateFolder","div","text","updateMessage","oldMsg","deleteIt","sts","now","Date","timestamp","getTime","dateStamp","$rdf","term","chatDocument","leafDocumentFromDate","message","store","sym","uri","me","authn","currentUser","push","st","mostRecentVersion","ns","dct","schema","wf","sioc","literal","foaf","updater","update","msg","debug","warn","alert","Error","originalVersion","any","isDeleted","holds","isReplaced","isHidden","nick","person","s","value","utils","label","_createIfNotExists","contentType","data","fetcher","load","response","status","log","webOperation","requested"],"mappings":"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","sourcesContent":["/**\n * Contains the [[ChatChannel]] class and logic for Solid Chat\n * @packageDocumentation\n */\n\nimport * as debug from '../debug'\nimport { authn } from '../authn/index'\nimport { DateFolder } from './dateFolder'\nimport { store } from '../logic'\nimport * as ns from '../ns'\nimport * as $rdf from 'rdflib' // pull in first avoid cross-refs\nimport * as utils from '../utils'\n\n/* The Solid logic for a 'LongChat'\n*/\n/**\n * Common code for a chat (discussion area of messages about something)\n * This version runs over a series of files for different time periods\n *\n * Parameters for the whole chat like its title are stored on\n * index.ttl#this and the chats messages are stored in YYYY/MM/DD/chat.ttl\n *\n */\n\nexport class ChatChannel {\n constructor (channel, options) {\n this.channel = channel\n this.channelRoot = channel.doc()\n this.options = options\n this.dateFolder = new DateFolder(this.channelRoot, 'chat.ttl')\n this.div = null // : HTMLElement\n }\n\n /* Store a new message in the web,\n */\n async createMessage (text) {\n return this.updateMessage(text)\n }\n\n /* Store a new message in the web,\n as a replacement for an existing one.\n The old one iis left, and the two are linked\n */\n async updateMessage (text, oldMsg = null, deleteIt) {\n const sts = []\n const now = new Date()\n const timestamp = '' + now.getTime()\n const dateStamp = $rdf.term(now)\n const chatDocument = oldMsg ? oldMsg.doc() : this.dateFolder.leafDocumentFromDate(now)\n const message = store.sym(chatDocument.uri + '#' + 'Msg' + timestamp)\n // const content = store.literal(text)\n\n const me = authn.currentUser() // If already logged on\n\n if (oldMsg) { // edit message replaces old one\n sts.push($rdf.st(mostRecentVersion(oldMsg), ns.dct('isReplacedBy'), message, chatDocument))\n if (deleteIt) {\n sts.push($rdf.st(message, ns.schema('dateDeleted'), dateStamp, chatDocument))\n }\n } else { // link new message to channel\n sts.push($rdf.st(this.channel, ns.wf('message'), message, chatDocument))\n }\n sts.push(\n $rdf.st(message, ns.sioc('content'), store.literal(text), chatDocument)\n )\n sts.push(\n $rdf.st(message, ns.dct('created'), dateStamp, chatDocument)\n )\n if (me) {\n sts.push($rdf.st(message, ns.foaf('maker'), me, chatDocument))\n }\n try {\n await store.updater.update([], sts)\n } catch (err) {\n const msg = 'Error saving chat message: ' + err\n debug.warn(msg)\n alert(msg)\n throw new Error(msg)\n }\n return message\n }\n\n /* Mark a message as deleted\n * Wee add a new version of the message,m witha deletion flag (deletion date)\n * so that the deletion can be revoked by adding another non-deleted update\n */\n async deleteMessage (message) {\n return this.updateMessage('(message deleted)', message, true)\n }\n} // class ChatChannel\n\nexport function originalVersion (message) {\n let msg = message\n while (msg) {\n message = msg\n msg = store.any(null, ns.dct('isReplacedBy'), message, message.doc())\n }\n return message\n}\n\nexport function mostRecentVersion (message) {\n let msg = message\n while (msg) {\n message = msg\n msg = store.any(message, ns.dct('isReplacedBy'), null, message.doc())\n }\n return message\n}\n\nexport function isDeleted (message) {\n return store.holds(message, ns.schema('dateDeleted'), null, message.doc())\n}\n\nexport function isReplaced (message) {\n return store.holds(message, ns.dct('isReplacedBy'), null, message.doc())\n}\n\nexport function isHidden (message) {\n return this.isDeleted(message) || this.isReplaced(message)\n}\n\n// A Nickname for a person\n\nexport function nick (person) {\n const s = store.any(person, ns.foaf('nick'))\n if (s) return '' + s.value\n return '' + utils.label(person)\n}\n\nexport async function _createIfNotExists (doc, contentType = 'text/turtle', data = '') {\n let response\n try {\n response = await store.fetcher.load(doc)\n } catch (err) {\n if (err.response.status === 404) {\n debug.log(\n 'createIfNotExists: doc does NOT exist, will create... ' + doc\n )\n try {\n response = await store.fetcher.webOperation('PUT', doc.uri, {\n data,\n contentType\n })\n } catch (err) {\n debug.log('createIfNotExists doc FAILED: ' + doc + ': ' + err)\n throw err\n }\n delete store.fetcher.requested[doc.uri] // delete cached 404 error\n // debug.log('createIfNotExists doc created ok ' + doc)\n return response\n } else {\n debug.log(\n 'createIfNotExists doc load error NOT 404: ' + doc + ': ' + err\n )\n throw err\n }\n }\n // debug.log('createIfNotExists: doc exists, all good: ' + doc)\n return response\n}\n// ends\n"],"file":"chatLogic.js"}
@@ -31,14 +31,14 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
31
31
 
32
32
  /**
33
33
  * Contains the [[DateFolder]] class
34
- * @packageDocumentation
34
+ * This tracks data stored in dated folders and sub-folders
35
+ *
35
36
  */
36
37
  // pull in first avoid cross-refs
37
- var kb = _logic.store;
38
+
38
39
  /**
39
40
  * Track back through the YYYY/MM/DD tree to find the previous/next day
40
41
  */
41
-
42
42
  var DateFolder = /*#__PURE__*/function () {
43
43
  function DateFolder(rootThing, leafFileName, membershipProperty) {
44
44
  (0, _classCallCheck2["default"])(this, DateFolder);
@@ -62,7 +62,7 @@ var DateFolder = /*#__PURE__*/function () {
62
62
  var path = isoDate.split('T')[0].replace(/-/g, '/'); // Like "2018/05/07"
63
63
 
64
64
  path = this.root.dir().uri + path + '/' + this.leafFileName;
65
- return kb.sym(path);
65
+ return _logic.store.sym(path);
66
66
  }
67
67
  /* Generate a date object from the leaf file name
68
68
  */
@@ -124,12 +124,12 @@ var DateFolder = /*#__PURE__*/function () {
124
124
  }
125
125
 
126
126
  _folder = siblings.pop();
127
- leafDocument = kb.sym(_folder.uri + thisDateFolder.leafFileName);
127
+ leafDocument = _logic.store.sym(_folder.uri + thisDateFolder.leafFileName);
128
128
  _context.next = 10;
129
- return kb.fetcher.load(leafDocument);
129
+ return _logic.store.fetcher.load(leafDocument);
130
130
 
131
131
  case 10:
132
- if (!(kb.statementsMatching(null, ns.dct('created'), null, leafDocument).length > 0)) {
132
+ if (!(_logic.store.statementsMatching(null, ns.dct('created'), null, leafDocument).length > 0)) {
133
133
  _context.next = 12;
134
134
  break;
135
135
  }
@@ -173,10 +173,10 @@ var DateFolder = /*#__PURE__*/function () {
173
173
  // debug.log(' previousPeriod level' + level + ' file ' + file)
174
174
  parent = file.dir();
175
175
  _context2.next = 7;
176
- return kb.fetcher.load(parent);
176
+ return _logic.store.fetcher.load(parent);
177
177
 
178
178
  case 7:
179
- siblings = kb.each(parent, ns.ldp('contains'));
179
+ siblings = _logic.store.each(parent, ns.ldp('contains'));
180
180
  siblings = siblings.filter(younger);
181
181
  _context2.next = 11;
182
182
  return lastNonEmpty(siblings);
@@ -215,10 +215,10 @@ var DateFolder = /*#__PURE__*/function () {
215
215
 
216
216
  case 21:
217
217
  _context2.next = 23;
218
- return kb.fetcher.load(uncle);
218
+ return _logic.store.fetcher.load(uncle);
219
219
 
220
220
  case 23:
221
- cousins = kb.each(uncle, ns.ldp('contains'));
221
+ cousins = _logic.store.each(uncle, ns.ldp('contains'));
222
222
  _context2.next = 26;
223
223
  return lastNonEmpty(cousins);
224
224
 
@@ -254,7 +254,7 @@ var DateFolder = /*#__PURE__*/function () {
254
254
  break;
255
255
  }
256
256
 
257
- doc = kb.sym(found.uri + this.leafFileName);
257
+ doc = _logic.store.sym(found.uri + this.leafFileName);
258
258
  return _context3.abrupt("return", this.dateFromLeafDocument(doc));
259
259
 
260
260
  case 10:
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/chat/dateFolder.js"],"names":["kb","store","DateFolder","rootThing","leafFileName","membershipProperty","root","rootFolder","dir","ns","wf","date","isoDate","toISOString","path","split","replace","uri","sym","doc","head","length","str","slice","Date","debug","log","backwards","previousPeriod","file","level","younger","suitable","lastNonEmpty","siblings","filter","sort","reverse","pop","folder","leafDocument","thisDateFolder","fetcher","load","statementsMatching","dct","x","tail","includes","parent","each","ldp","uncle","cousins","result","leafDocumentFromDate","found","dateFromLeafDocument","earliestSubfolder","folderFetcher","requested","force","kids","folderStore","Error","$rdf","graph","Fetcher","y","month","d","leafObjects","msg","trace","sortMe","map","leafObject","any"],"mappings":"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","sourcesContent":["/**\n * Contains the [[DateFolder]] class\n * @packageDocumentation\n */\n\nimport * as debug from '../debug'\nimport { store } from '../logic'\n\nimport * as ns from '../ns'\nimport * as $rdf from 'rdflib' // pull in first avoid cross-refs\n\nconst kb = store\n\n/**\n * Track back through the YYYY/MM/DD tree to find the previous/next day\n */\nexport class DateFolder {\n constructor (rootThing, leafFileName, membershipProperty) {\n this.root = rootThing\n this.rootFolder = rootThing.dir()\n this.leafFileName = leafFileName || 'index.ttl' // typically chat.ttl\n this.membershipProperty = membershipProperty || ns.wf('leafObject')\n }\n\n /* Generate the leaf document (rdf object) from date\n * @returns: <NamedNode> - document\n */\n leafDocumentFromDate (date) {\n // debug.log('incoming date: ' + date)\n const isoDate = date.toISOString() // Like \"2018-05-07T17:42:46.576Z\"\n let path = isoDate.split('T')[0].replace(/-/g, '/') // Like \"2018/05/07\"\n path = this.root.dir().uri + path + '/' + this.leafFileName\n return kb.sym(path)\n }\n\n /* Generate a date object from the leaf file name\n */\n dateFromLeafDocument (doc) {\n const head = this.rootFolder.uri.length\n const str = doc.uri.slice(head, head + 10).replace(/\\//g, '-')\n // let date = new Date(str + 'Z') // GMT - but fails in FF - invalid format :-(\n const date = new Date(str) // not explicitly UTC but is assumed so in spec\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse\n debug.log('Date for ' + doc + ':' + date.toISOString())\n return date\n }\n\n async loadPrevious (date, backwards) {\n const thisDateFolder = this\n async function previousPeriod (file, level) {\n function younger (x) {\n if (backwards ? x.uri >= file.uri : x.uri <= file.uri) return false // later than we want or same -- looking for different\n return true\n }\n function suitable (x) {\n const tail = x.uri\n .slice(0, -1)\n .split('/')\n .slice(-1)[0]\n if (!'0123456789'.includes(tail[0])) return false // not numeric\n return true\n }\n\n async function lastNonEmpty (siblings) {\n siblings = siblings.filter(suitable)\n siblings.sort() // chronological order\n if (!backwards) siblings.reverse()\n if (level !== 3) return siblings.pop() // only length chck final leverl\n while (siblings.length) {\n const folder = siblings.pop()\n const leafDocument = kb.sym(folder.uri + thisDateFolder.leafFileName)\n await kb.fetcher.load(leafDocument)\n // files can have seealso links. skip ones with no leafObjects with a date\n if (\n kb.statementsMatching(null, ns.dct('created'), null, leafDocument)\n .length > 0\n ) {\n return folder\n }\n }\n return null\n }\n // debug.log(' previousPeriod level' + level + ' file ' + file)\n const parent = file.dir()\n await kb.fetcher.load(parent)\n let siblings = kb.each(parent, ns.ldp('contains'))\n siblings = siblings.filter(younger)\n const folder = await lastNonEmpty(siblings)\n if (folder) return folder\n\n if (level === 0) return null // 3:day, 2:month, 1: year 0: no\n\n const uncle = await previousPeriod(parent, level - 1)\n if (!uncle) return null // reached first ever\n await kb.fetcher.load(uncle)\n const cousins = kb.each(uncle, ns.ldp('contains'))\n const result = await lastNonEmpty(cousins)\n return result\n } // previousPeriod\n\n const folder = this.leafDocumentFromDate(date).dir()\n const found = await previousPeriod(folder, 3)\n if (found) {\n const doc = kb.sym(found.uri + this.leafFileName)\n return this.dateFromLeafDocument(doc)\n }\n return null\n } // loadPrevious\n\n async firstLeaf (backwards) {\n // backwards -> last leafObject\n const folderStore = $rdf.graph()\n const folderFetcher = new $rdf.Fetcher(folderStore)\n async function earliestSubfolder (parent) {\n function suitable (x) {\n const tail = x.uri\n .slice(0, -1)\n .split('/')\n .slice(-1)[0]\n if (!'0123456789'.includes(tail[0])) return false // not numeric\n return true\n }\n debug.log(' parent ' + parent)\n delete folderFetcher.requested[parent.uri]\n // try {\n await folderFetcher.load(parent, { force: true }) // Force fetch as will have changed\n // }catch (err) {\n // }\n\n let kids = folderStore.each(parent, ns.ldp('contains'))\n kids = kids.filter(suitable)\n if (kids.length === 0) {\n throw new Error(' @@@ No children to parent2 ' + parent)\n }\n\n kids.sort()\n if (backwards) kids.reverse()\n return kids[0]\n }\n const y = await earliestSubfolder(this.root.dir())\n const month = await earliestSubfolder(y)\n const d = await earliestSubfolder(month)\n const leafDocument = $rdf.sym(d.uri + 'chat.ttl')\n await folderFetcher.load(leafDocument)\n const leafObjects = folderStore.each(\n this.root,\n this.membershipProperty,\n null,\n leafDocument\n )\n if (leafObjects.length === 0) {\n const msg =\n ' INCONSISTENCY -- no chat leafObject in file ' + leafDocument\n debug.trace(msg)\n throw new Error(msg)\n }\n const sortMe = leafObjects.map(leafObject => [\n folderStore.any(leafObject, ns.dct('created')),\n leafObject\n ])\n sortMe.sort()\n if (backwards) sortMe.reverse()\n debug.log(\n (backwards ? 'Latest' : 'Earliest') + ' leafObject is ' + sortMe[0][1]\n )\n return sortMe[0][1]\n } // firstleafObject\n} // class\n"],"file":"dateFolder.js"}
1
+ {"version":3,"sources":["../../src/chat/dateFolder.js"],"names":["DateFolder","rootThing","leafFileName","membershipProperty","root","rootFolder","dir","ns","wf","date","isoDate","toISOString","path","split","replace","uri","store","sym","doc","head","length","str","slice","Date","debug","log","backwards","previousPeriod","file","level","younger","suitable","lastNonEmpty","siblings","filter","sort","reverse","pop","folder","leafDocument","thisDateFolder","fetcher","load","statementsMatching","dct","x","tail","includes","parent","each","ldp","uncle","cousins","result","leafDocumentFromDate","found","dateFromLeafDocument","earliestSubfolder","folderFetcher","requested","force","kids","folderStore","Error","$rdf","graph","Fetcher","y","month","d","leafObjects","msg","trace","sortMe","map","leafObject","any"],"mappings":"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","sourcesContent":["/**\n * Contains the [[DateFolder]] class\n * This tracks data stored in dated folders and sub-folders\n *\n */\n\nimport * as debug from '../debug'\nimport { store } from '../logic'\n\nimport * as ns from '../ns'\nimport * as $rdf from 'rdflib' // pull in first avoid cross-refs\n\n/**\n * Track back through the YYYY/MM/DD tree to find the previous/next day\n */\nexport class DateFolder {\n constructor (rootThing, leafFileName, membershipProperty) {\n this.root = rootThing\n this.rootFolder = rootThing.dir()\n this.leafFileName = leafFileName || 'index.ttl' // typically chat.ttl\n this.membershipProperty = membershipProperty || ns.wf('leafObject')\n }\n\n /* Generate the leaf document (rdf object) from date\n * @returns: <NamedNode> - document\n */\n leafDocumentFromDate (date) {\n // debug.log('incoming date: ' + date)\n const isoDate = date.toISOString() // Like \"2018-05-07T17:42:46.576Z\"\n let path = isoDate.split('T')[0].replace(/-/g, '/') // Like \"2018/05/07\"\n path = this.root.dir().uri + path + '/' + this.leafFileName\n return store.sym(path)\n }\n\n /* Generate a date object from the leaf file name\n */\n dateFromLeafDocument (doc) {\n const head = this.rootFolder.uri.length\n const str = doc.uri.slice(head, head + 10).replace(/\\//g, '-')\n // let date = new Date(str + 'Z') // GMT - but fails in FF - invalid format :-(\n const date = new Date(str) // not explicitly UTC but is assumed so in spec\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse\n debug.log('Date for ' + doc + ':' + date.toISOString())\n return date\n }\n\n async loadPrevious (date, backwards) {\n const thisDateFolder = this\n async function previousPeriod (file, level) {\n function younger (x) {\n if (backwards ? x.uri >= file.uri : x.uri <= file.uri) return false // later than we want or same -- looking for different\n return true\n }\n function suitable (x) {\n const tail = x.uri\n .slice(0, -1)\n .split('/')\n .slice(-1)[0]\n if (!'0123456789'.includes(tail[0])) return false // not numeric\n return true\n }\n\n async function lastNonEmpty (siblings) {\n siblings = siblings.filter(suitable)\n siblings.sort() // chronological order\n if (!backwards) siblings.reverse()\n if (level !== 3) return siblings.pop() // only length chck final leverl\n while (siblings.length) {\n const folder = siblings.pop()\n const leafDocument = store.sym(folder.uri + thisDateFolder.leafFileName)\n await store.fetcher.load(leafDocument)\n // files can have seealso links. skip ones with no leafObjects with a date\n if (\n store.statementsMatching(null, ns.dct('created'), null, leafDocument)\n .length > 0\n ) {\n return folder\n }\n }\n return null\n }\n // debug.log(' previousPeriod level' + level + ' file ' + file)\n const parent = file.dir()\n await store.fetcher.load(parent)\n let siblings = store.each(parent, ns.ldp('contains'))\n siblings = siblings.filter(younger)\n const folder = await lastNonEmpty(siblings)\n if (folder) return folder\n\n if (level === 0) return null // 3:day, 2:month, 1: year 0: no\n\n const uncle = await previousPeriod(parent, level - 1)\n if (!uncle) return null // reached first ever\n await store.fetcher.load(uncle)\n const cousins = store.each(uncle, ns.ldp('contains'))\n const result = await lastNonEmpty(cousins)\n return result\n } // previousPeriod\n\n const folder = this.leafDocumentFromDate(date).dir()\n const found = await previousPeriod(folder, 3)\n if (found) {\n const doc = store.sym(found.uri + this.leafFileName)\n return this.dateFromLeafDocument(doc)\n }\n return null\n } // loadPrevious\n\n async firstLeaf (backwards) {\n // backwards -> last leafObject\n const folderStore = $rdf.graph()\n const folderFetcher = new $rdf.Fetcher(folderStore)\n async function earliestSubfolder (parent) {\n function suitable (x) {\n const tail = x.uri\n .slice(0, -1)\n .split('/')\n .slice(-1)[0]\n if (!'0123456789'.includes(tail[0])) return false // not numeric\n return true\n }\n debug.log(' parent ' + parent)\n delete folderFetcher.requested[parent.uri]\n // try {\n await folderFetcher.load(parent, { force: true }) // Force fetch as will have changed\n // }catch (err) {\n // }\n\n let kids = folderStore.each(parent, ns.ldp('contains'))\n kids = kids.filter(suitable)\n if (kids.length === 0) {\n throw new Error(' @@@ No children to parent2 ' + parent)\n }\n\n kids.sort()\n if (backwards) kids.reverse()\n return kids[0]\n }\n const y = await earliestSubfolder(this.root.dir())\n const month = await earliestSubfolder(y)\n const d = await earliestSubfolder(month)\n const leafDocument = $rdf.sym(d.uri + 'chat.ttl')\n await folderFetcher.load(leafDocument)\n const leafObjects = folderStore.each(\n this.root,\n this.membershipProperty,\n null,\n leafDocument\n )\n if (leafObjects.length === 0) {\n const msg =\n ' INCONSISTENCY -- no chat leafObject in file ' + leafDocument\n debug.trace(msg)\n throw new Error(msg)\n }\n const sortMe = leafObjects.map(leafObject => [\n folderStore.any(leafObject, ns.dct('created')),\n leafObject\n ])\n sortMe.sort()\n if (backwards) sortMe.reverse()\n debug.log(\n (backwards ? 'Latest' : 'Earliest') + ' leafObject is ' + sortMe[0][1]\n )\n return sortMe[0][1]\n } // firstleafObject\n} // class\n"],"file":"dateFolder.js"}