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.
- package/LICENSE.md +0 -0
- package/README.md +0 -0
- package/lib/acl/access-controller.d.ts +0 -0
- package/lib/acl/access-controller.d.ts.map +0 -0
- package/lib/acl/access-controller.js +0 -0
- package/lib/acl/access-controller.js.map +0 -0
- package/lib/acl/access-groups.d.ts +0 -0
- package/lib/acl/access-groups.d.ts.map +0 -0
- package/lib/acl/access-groups.js +0 -0
- package/lib/acl/access-groups.js.map +0 -0
- package/lib/acl/acl-control.d.ts +0 -0
- package/lib/acl/acl-control.d.ts.map +0 -0
- package/lib/acl/acl-control.js +0 -0
- package/lib/acl/acl-control.js.map +0 -0
- package/lib/acl/acl.d.ts +0 -0
- package/lib/acl/acl.d.ts.map +0 -0
- package/lib/acl/acl.js +0 -0
- package/lib/acl/acl.js.map +0 -0
- package/lib/acl/add-agent-buttons.d.ts +0 -0
- package/lib/acl/add-agent-buttons.d.ts.map +0 -0
- package/lib/acl/add-agent-buttons.js +0 -0
- package/lib/acl/add-agent-buttons.js.map +0 -0
- package/lib/acl/index.d.ts +0 -0
- package/lib/acl/index.d.ts.map +0 -0
- package/lib/acl/index.js +0 -0
- package/lib/acl/index.js.map +0 -0
- package/lib/acl/styles.d.ts +0 -0
- package/lib/acl/styles.d.ts.map +0 -0
- package/lib/acl/styles.js +0 -0
- package/lib/acl/styles.js.map +0 -0
- package/lib/acl/types.d.ts +0 -0
- package/lib/acl/types.d.ts.map +0 -0
- package/lib/acl/types.js +0 -0
- package/lib/acl/types.js.map +0 -0
- package/lib/authn/authSession.d.ts +0 -0
- package/lib/authn/authSession.d.ts.map +0 -0
- package/lib/authn/authSession.js +0 -0
- package/lib/authn/authSession.js.map +0 -0
- package/lib/authn/authn.d.ts +0 -0
- package/lib/authn/authn.d.ts.map +0 -0
- package/lib/authn/authn.js +0 -0
- package/lib/authn/authn.js.map +0 -0
- package/lib/authn/config-default.js +0 -0
- package/lib/authn/config-default.js.map +0 -0
- package/lib/authn/index.d.ts +0 -0
- package/lib/authn/index.d.ts.map +0 -0
- package/lib/authn/index.js +0 -0
- package/lib/authn/index.js.map +0 -0
- package/lib/authn/signup.js +0 -0
- package/lib/authn/signup.js.map +0 -0
- package/lib/authn/types.d.ts +0 -0
- package/lib/authn/types.d.ts.map +0 -0
- package/lib/authn/types.js +0 -0
- package/lib/authn/types.js.map +0 -0
- package/lib/chat/bookmarks.js +14 -13
- package/lib/chat/bookmarks.js.map +1 -1
- package/lib/chat/chatLogic.js +340 -0
- package/lib/chat/chatLogic.js.map +1 -0
- package/lib/chat/dateFolder.js +12 -12
- package/lib/chat/dateFolder.js.map +1 -1
- package/lib/chat/infinite.js +285 -665
- package/lib/chat/infinite.js.map +1 -1
- package/lib/chat/message.js +445 -71
- package/lib/chat/message.js.map +1 -1
- package/lib/chat/messageTools.js +165 -103
- package/lib/chat/messageTools.js.map +1 -1
- package/lib/chat/thread.js +162 -32
- package/lib/chat/thread.js.map +1 -1
- package/lib/create/create.d.ts +0 -0
- package/lib/create/create.d.ts.map +0 -0
- package/lib/create/create.js +0 -0
- package/lib/create/create.js.map +0 -0
- package/lib/create/index.d.ts +0 -0
- package/lib/create/index.d.ts.map +0 -0
- package/lib/create/index.js +0 -0
- package/lib/create/index.js.map +0 -0
- package/lib/create/types.d.ts +0 -0
- package/lib/create/types.d.ts.map +0 -0
- package/lib/create/types.js +0 -0
- package/lib/create/types.js.map +0 -0
- package/lib/debug.d.ts +0 -0
- package/lib/debug.d.ts.map +0 -0
- package/lib/debug.js +0 -0
- package/lib/debug.js.map +0 -0
- package/lib/folders.js +0 -0
- package/lib/folders.js.map +0 -0
- package/lib/footer/index.d.ts +0 -0
- package/lib/footer/index.d.ts.map +0 -0
- package/lib/footer/index.js +0 -0
- package/lib/footer/index.js.map +0 -0
- package/lib/footer/styleMap.d.ts +0 -0
- package/lib/footer/styleMap.d.ts.map +0 -0
- package/lib/footer/styleMap.js +0 -0
- package/lib/footer/styleMap.js.map +0 -0
- package/lib/header/empty-profile.d.ts +0 -0
- package/lib/header/empty-profile.d.ts.map +0 -0
- package/lib/header/empty-profile.js +0 -0
- package/lib/header/empty-profile.js.map +0 -0
- package/lib/header/index.d.ts +0 -0
- package/lib/header/index.d.ts.map +0 -0
- package/lib/header/index.js +0 -0
- package/lib/header/index.js.map +0 -0
- package/lib/header/styleMap.d.ts +0 -0
- package/lib/header/styleMap.d.ts.map +0 -0
- package/lib/header/styleMap.js +0 -0
- package/lib/header/styleMap.js.map +0 -0
- package/lib/iconBase.d.ts +0 -0
- package/lib/iconBase.d.ts.map +0 -0
- package/lib/iconBase.js +0 -0
- package/lib/iconBase.js.map +0 -0
- package/lib/icons/solid_logo.d.ts +0 -0
- package/lib/icons/solid_logo.d.ts.map +0 -0
- package/lib/icons/solid_logo.js +0 -0
- package/lib/icons/solid_logo.js.map +0 -0
- package/lib/index.d.ts +0 -0
- package/lib/index.d.ts.map +0 -0
- package/lib/index.js +0 -0
- package/lib/index.js.map +0 -0
- package/lib/jss/index.d.ts +0 -0
- package/lib/jss/index.d.ts.map +0 -0
- package/lib/jss/index.js +0 -0
- package/lib/jss/index.js.map +0 -0
- package/lib/log.d.ts +0 -0
- package/lib/log.d.ts.map +0 -0
- package/lib/log.js +0 -0
- package/lib/log.js.map +0 -0
- package/lib/logic.d.ts +0 -0
- package/lib/logic.d.ts.map +0 -0
- package/lib/logic.js +0 -0
- package/lib/logic.js.map +0 -0
- package/lib/matrix/index.d.ts +0 -0
- package/lib/matrix/index.d.ts.map +0 -0
- package/lib/matrix/index.js +0 -0
- package/lib/matrix/index.js.map +0 -0
- package/lib/matrix/matrix.d.ts +0 -0
- package/lib/matrix/matrix.d.ts.map +0 -0
- package/lib/matrix/matrix.js +0 -0
- package/lib/matrix/matrix.js.map +0 -0
- package/lib/matrix/types.d.ts +0 -0
- package/lib/matrix/types.d.ts.map +0 -0
- package/lib/matrix/types.js +0 -0
- package/lib/matrix/types.js.map +0 -0
- package/lib/media/index.d.ts +0 -0
- package/lib/media/index.d.ts.map +0 -0
- package/lib/media/index.js +0 -0
- package/lib/media/index.js.map +0 -0
- package/lib/media/media-capture.d.ts +0 -0
- package/lib/media/media-capture.d.ts.map +0 -0
- package/lib/media/media-capture.js +0 -0
- package/lib/media/media-capture.js.map +0 -0
- package/lib/messageArea.js +0 -0
- package/lib/messageArea.js.map +0 -0
- package/lib/noun_Camera_1618446_000000.js +0 -0
- package/lib/noun_Camera_1618446_000000.js.map +0 -0
- package/lib/ns.js +0 -0
- package/lib/ns.js.map +0 -0
- package/lib/pad.d.ts +0 -0
- package/lib/pad.d.ts.map +0 -0
- package/lib/pad.js +0 -0
- package/lib/pad.js.map +0 -0
- package/lib/participation.d.ts +0 -0
- package/lib/participation.d.ts.map +0 -0
- package/lib/participation.js +0 -0
- package/lib/participation.js.map +0 -0
- package/lib/preferences.js +0 -0
- package/lib/preferences.js.map +0 -0
- package/lib/stories/decorators.js +0 -0
- package/lib/stories/decorators.js.map +0 -0
- package/lib/style.js +0 -0
- package/lib/style.js.map +0 -0
- package/lib/table.js +0 -0
- package/lib/table.js.map +0 -0
- package/lib/tabs.d.ts +0 -0
- package/lib/tabs.d.ts.map +0 -0
- package/lib/tabs.js +0 -0
- package/lib/tabs.js.map +0 -0
- package/lib/typings.d.js +0 -0
- package/lib/typings.d.js.map +0 -0
- package/lib/utils/headerFooterHelpers.d.ts +0 -0
- package/lib/utils/headerFooterHelpers.d.ts.map +0 -0
- package/lib/utils/headerFooterHelpers.js +0 -0
- package/lib/utils/headerFooterHelpers.js.map +0 -0
- package/lib/utils/index.js +0 -0
- package/lib/utils/index.js.map +0 -0
- package/lib/utils/label.d.ts +0 -0
- package/lib/utils/label.d.ts.map +0 -0
- package/lib/utils/label.js +0 -0
- package/lib/utils/label.js.map +0 -0
- package/lib/versionInfo.d.ts +0 -0
- package/lib/versionInfo.d.ts.map +0 -0
- package/lib/versionInfo.js +10 -10
- package/lib/versionInfo.js.map +1 -1
- package/lib/webpack-bundle.js +1408 -993
- package/lib/webpack-bundle.js.map +1 -1
- package/lib/widgets/buttons/iconLinks.d.ts +0 -0
- package/lib/widgets/buttons/iconLinks.d.ts.map +0 -0
- package/lib/widgets/buttons/iconLinks.js +0 -0
- package/lib/widgets/buttons/iconLinks.js.map +0 -0
- package/lib/widgets/buttons.d.ts +0 -0
- package/lib/widgets/buttons.d.ts.map +1 -1
- package/lib/widgets/buttons.js +8 -1
- package/lib/widgets/buttons.js.map +1 -1
- package/lib/widgets/dragAndDrop.js +0 -0
- package/lib/widgets/dragAndDrop.js.map +0 -0
- package/lib/widgets/error.d.ts +0 -0
- package/lib/widgets/error.d.ts.map +0 -0
- package/lib/widgets/error.js +0 -0
- package/lib/widgets/error.js.map +0 -0
- package/lib/widgets/forms/autocomplete/autocompleteBar.d.ts +0 -0
- package/lib/widgets/forms/autocomplete/autocompleteBar.d.ts.map +0 -0
- package/lib/widgets/forms/autocomplete/autocompleteBar.js +0 -0
- package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +0 -0
- package/lib/widgets/forms/autocomplete/autocompleteField.d.ts +0 -0
- package/lib/widgets/forms/autocomplete/autocompleteField.d.ts.map +0 -0
- package/lib/widgets/forms/autocomplete/autocompleteField.js +0 -0
- package/lib/widgets/forms/autocomplete/autocompleteField.js.map +0 -0
- package/lib/widgets/forms/autocomplete/autocompletePicker.d.ts +0 -0
- package/lib/widgets/forms/autocomplete/autocompletePicker.d.ts.map +0 -0
- package/lib/widgets/forms/autocomplete/autocompletePicker.js +0 -0
- package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +0 -0
- package/lib/widgets/forms/autocomplete/language.d.ts +0 -0
- package/lib/widgets/forms/autocomplete/language.d.ts.map +0 -0
- package/lib/widgets/forms/autocomplete/language.js +0 -0
- package/lib/widgets/forms/autocomplete/language.js.map +0 -0
- package/lib/widgets/forms/autocomplete/publicData.d.ts +0 -0
- package/lib/widgets/forms/autocomplete/publicData.d.ts.map +0 -0
- package/lib/widgets/forms/autocomplete/publicData.js +0 -0
- package/lib/widgets/forms/autocomplete/publicData.js.map +0 -0
- package/lib/widgets/forms/basic.d.ts +0 -0
- package/lib/widgets/forms/basic.d.ts.map +0 -0
- package/lib/widgets/forms/basic.js +0 -0
- package/lib/widgets/forms/basic.js.map +0 -0
- package/lib/widgets/forms/comment.d.ts +0 -0
- package/lib/widgets/forms/comment.d.ts.map +0 -0
- package/lib/widgets/forms/comment.js +0 -0
- package/lib/widgets/forms/comment.js.map +0 -0
- package/lib/widgets/forms/fieldFunction.d.ts +0 -0
- package/lib/widgets/forms/fieldFunction.d.ts.map +0 -0
- package/lib/widgets/forms/fieldFunction.js +0 -0
- package/lib/widgets/forms/fieldFunction.js.map +0 -0
- package/lib/widgets/forms/fieldParams.d.ts +0 -0
- package/lib/widgets/forms/fieldParams.d.ts.map +0 -0
- package/lib/widgets/forms/fieldParams.js +0 -0
- package/lib/widgets/forms/fieldParams.js.map +0 -0
- package/lib/widgets/forms/formStyle.d.ts +0 -0
- package/lib/widgets/forms/formStyle.d.ts.map +0 -0
- package/lib/widgets/forms/formStyle.js +0 -0
- package/lib/widgets/forms/formStyle.js.map +0 -0
- package/lib/widgets/forms.js +0 -0
- package/lib/widgets/forms.js.map +0 -0
- package/lib/widgets/index.js +0 -0
- package/lib/widgets/index.js.map +0 -0
- package/lib/widgets/peoplePicker.js +0 -0
- package/lib/widgets/peoplePicker.js.map +0 -0
- package/lib/widgets/widgetHelpers.d.ts +0 -0
- package/lib/widgets/widgetHelpers.d.ts.map +0 -0
- package/lib/widgets/widgetHelpers.js +0 -0
- package/lib/widgets/widgetHelpers.js.map +0 -0
- 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"}
|
package/lib/chat/dateFolder.js
CHANGED
|
@@ -31,14 +31,14 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
31
31
|
|
|
32
32
|
/**
|
|
33
33
|
* Contains the [[DateFolder]] class
|
|
34
|
-
*
|
|
34
|
+
* This tracks data stored in dated folders and sub-folders
|
|
35
|
+
*
|
|
35
36
|
*/
|
|
36
37
|
// pull in first avoid cross-refs
|
|
37
|
-
|
|
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
|
|
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 =
|
|
127
|
+
leafDocument = _logic.store.sym(_folder.uri + thisDateFolder.leafFileName);
|
|
128
128
|
_context.next = 10;
|
|
129
|
-
return
|
|
129
|
+
return _logic.store.fetcher.load(leafDocument);
|
|
130
130
|
|
|
131
131
|
case 10:
|
|
132
|
-
if (!(
|
|
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
|
|
176
|
+
return _logic.store.fetcher.load(parent);
|
|
177
177
|
|
|
178
178
|
case 7:
|
|
179
|
-
siblings =
|
|
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
|
|
218
|
+
return _logic.store.fetcher.load(uncle);
|
|
219
219
|
|
|
220
220
|
case 23:
|
|
221
|
-
cousins =
|
|
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 =
|
|
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"}
|