solid-ui 2.4.23 → 2.4.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/main.js +2159 -5039
- package/dist/main.js.map +1 -1
- package/lib/acl/access-controller.js +4 -67
- package/lib/acl/access-controller.js.map +1 -1
- package/lib/acl/access-groups.js +59 -137
- package/lib/acl/access-groups.js.map +1 -1
- package/lib/acl/acl-control.js +14 -54
- package/lib/acl/acl-control.js.map +1 -1
- package/lib/acl/acl.js +32 -107
- package/lib/acl/acl.js.map +1 -1
- package/lib/acl/add-agent-buttons.js +0 -92
- package/lib/acl/add-agent-buttons.js.map +1 -1
- package/lib/acl/index.js +1 -3
- package/lib/acl/index.js.map +1 -1
- package/lib/acl/styles.js +1 -2
- package/lib/acl/styles.js.map +1 -1
- package/lib/chat/bookmarks.js +8 -80
- package/lib/chat/bookmarks.js.map +1 -1
- package/lib/chat/chatLogic.js +109 -180
- package/lib/chat/chatLogic.js.map +1 -1
- package/lib/chat/dateFolder.js +6 -91
- package/lib/chat/dateFolder.js.map +1 -1
- package/lib/chat/infinite.js +33 -185
- package/lib/chat/infinite.js.map +1 -1
- package/lib/chat/message.js +37 -150
- package/lib/chat/message.js.map +1 -1
- package/lib/chat/messageTools.js +23 -96
- package/lib/chat/messageTools.js.map +1 -1
- package/lib/chat/thread.js +33 -91
- package/lib/chat/thread.js.map +1 -1
- package/lib/create/create.js +19 -51
- package/lib/create/create.js.map +1 -1
- package/lib/create/index.js +0 -2
- package/lib/create/index.js.map +1 -1
- package/lib/debug.js +0 -8
- package/lib/debug.js.map +1 -1
- package/lib/folders.js +4 -27
- package/lib/folders.js.map +1 -1
- package/lib/footer/index.js +2 -24
- package/lib/footer/index.js.map +1 -1
- package/lib/footer/styleMap.js.map +1 -1
- package/lib/header/empty-profile.js.map +1 -1
- package/lib/header/index.js +3 -72
- package/lib/header/index.js.map +1 -1
- package/lib/header/styleMap.js +4 -3
- package/lib/header/styleMap.js.map +1 -1
- package/lib/iconBase.js +3 -4
- package/lib/iconBase.js.map +1 -1
- package/lib/index.js +5 -46
- package/lib/index.js.map +1 -1
- package/lib/jss/index.js +3 -9
- package/lib/jss/index.js.map +1 -1
- package/lib/log.js +15 -51
- package/lib/log.js.map +1 -1
- package/lib/login/login.js +74 -303
- package/lib/login/login.js.map +1 -1
- package/lib/matrix/index.js +0 -2
- package/lib/matrix/index.js.map +1 -1
- package/lib/matrix/matrix.js +7 -55
- package/lib/matrix/matrix.js.map +1 -1
- package/lib/media/index.js +0 -2
- package/lib/media/index.js.map +1 -1
- package/lib/media/media-capture.js +13 -33
- package/lib/media/media-capture.js.map +1 -1
- package/lib/messageArea.js +23 -64
- package/lib/messageArea.js.map +1 -1
- package/lib/noun_Camera_1618446_000000.js.map +1 -1
- package/lib/ns.js +5 -7
- package/lib/ns.js.map +1 -1
- package/lib/pad.js +48 -234
- package/lib/pad.js.map +1 -1
- package/lib/participation.js +10 -65
- package/lib/participation.js.map +1 -1
- package/lib/preferences.js +21 -42
- package/lib/preferences.js.map +1 -1
- package/lib/signup/config-default.js +1 -8
- package/lib/signup/config-default.js.map +1 -1
- package/lib/signup/signup.js +6 -13
- package/lib/signup/signup.js.map +1 -1
- package/lib/stories/decorators.js +0 -2
- package/lib/stories/decorators.js.map +1 -1
- package/lib/style.js +8 -5
- package/lib/style.js.map +1 -1
- package/lib/style_multiSelect.js +1 -5
- package/lib/style_multiSelect.js.map +1 -1
- package/lib/table.js +309 -322
- package/lib/table.js.map +1 -1
- package/lib/tabs.js +20 -100
- package/lib/tabs.js.map +1 -1
- package/lib/utils/headerFooterHelpers.js +4 -52
- package/lib/utils/headerFooterHelpers.js.map +1 -1
- package/lib/utils/index.js +41 -135
- package/lib/utils/index.js.map +1 -1
- package/lib/utils/label.js +13 -34
- package/lib/utils/label.js.map +1 -1
- package/lib/versionInfo.js +4 -4
- package/lib/versionInfo.js.map +1 -1
- package/lib/widgets/buttons/iconLinks.js +0 -8
- package/lib/widgets/buttons/iconLinks.js.map +1 -1
- package/lib/widgets/buttons.js +115 -291
- package/lib/widgets/buttons.js.map +1 -1
- package/lib/widgets/dragAndDrop.js +12 -41
- package/lib/widgets/dragAndDrop.js.map +1 -1
- package/lib/widgets/error.js +3 -9
- package/lib/widgets/error.js.map +1 -1
- package/lib/widgets/forms/autocomplete/autocompleteBar.js +8 -71
- package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +1 -1
- package/lib/widgets/forms/autocomplete/autocompleteField.js +13 -65
- package/lib/widgets/forms/autocomplete/autocompleteField.js.map +1 -1
- package/lib/widgets/forms/autocomplete/autocompletePicker.js +15 -107
- package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +1 -1
- package/lib/widgets/forms/autocomplete/language.js +6 -55
- package/lib/widgets/forms/autocomplete/language.js.map +1 -1
- package/lib/widgets/forms/autocomplete/publicData.js +12 -131
- package/lib/widgets/forms/autocomplete/publicData.js.map +1 -1
- package/lib/widgets/forms/basic.js +12 -55
- package/lib/widgets/forms/basic.js.map +1 -1
- package/lib/widgets/forms/comment.js +1 -15
- package/lib/widgets/forms/comment.js.map +1 -1
- package/lib/widgets/forms/fieldFunction.js +3 -16
- package/lib/widgets/forms/fieldFunction.js.map +1 -1
- package/lib/widgets/forms/fieldParams.js +0 -12
- package/lib/widgets/forms/fieldParams.js.map +1 -1
- package/lib/widgets/forms/formStyle.js +1 -14
- package/lib/widgets/forms/formStyle.js.map +1 -1
- package/lib/widgets/forms.js +70 -474
- package/lib/widgets/forms.js.map +1 -1
- package/lib/widgets/index.js +0 -21
- package/lib/widgets/index.js.map +1 -1
- package/lib/widgets/multiSelect.js +48 -171
- package/lib/widgets/multiSelect.js.map +1 -1
- package/lib/widgets/peoplePicker.js +20 -90
- package/lib/widgets/peoplePicker.js.map +1 -1
- package/lib/widgets/widgetHelpers.js +2 -9
- package/lib/widgets/widgetHelpers.js.map +1 -1
- package/package.json +28 -28
package/lib/chat/dateFolder.js
CHANGED
|
@@ -1,41 +1,27 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
-
|
|
7
5
|
Object.defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
10
8
|
exports.DateFolder = void 0;
|
|
11
|
-
|
|
12
9
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
13
|
-
|
|
14
10
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
15
|
-
|
|
16
11
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
17
|
-
|
|
18
12
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
19
|
-
|
|
20
13
|
var debug = _interopRequireWildcard(require("../debug"));
|
|
21
|
-
|
|
22
14
|
var _solidLogic = require("solid-logic");
|
|
23
|
-
|
|
24
15
|
var ns = _interopRequireWildcard(require("../ns"));
|
|
25
|
-
|
|
26
16
|
var $rdf = _interopRequireWildcard(require("rdflib"));
|
|
27
|
-
|
|
28
17
|
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); }
|
|
29
|
-
|
|
30
18
|
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; }
|
|
31
|
-
|
|
32
19
|
/**
|
|
33
20
|
* Contains the [[DateFolder]] class
|
|
34
21
|
* This tracks data stored in dated folders and sub-folders
|
|
35
22
|
*
|
|
36
23
|
*/
|
|
37
24
|
// pull in first avoid cross-refs
|
|
38
|
-
|
|
39
25
|
/**
|
|
40
26
|
* Track back through the YYYY/MM/DD tree to find the previous/next day
|
|
41
27
|
*/
|
|
@@ -45,37 +31,32 @@ var DateFolder = /*#__PURE__*/function () {
|
|
|
45
31
|
this.root = rootThing;
|
|
46
32
|
this.rootFolder = rootThing.dir();
|
|
47
33
|
this.leafFileName = leafFileName || 'index.ttl'; // typically chat.ttl
|
|
48
|
-
|
|
49
34
|
this.membershipProperty = membershipProperty || ns.wf('leafObject');
|
|
50
35
|
}
|
|
36
|
+
|
|
51
37
|
/* Generate the leaf document (rdf object) from date
|
|
52
38
|
* @returns: <NamedNode> - document
|
|
53
39
|
*/
|
|
54
|
-
|
|
55
|
-
|
|
56
40
|
(0, _createClass2["default"])(DateFolder, [{
|
|
57
41
|
key: "leafDocumentFromDate",
|
|
58
42
|
value: function leafDocumentFromDate(date) {
|
|
59
43
|
// debug.log('incoming date: ' + date)
|
|
60
44
|
var isoDate = date.toISOString(); // Like "2018-05-07T17:42:46.576Z"
|
|
61
|
-
|
|
62
45
|
var path = isoDate.split('T')[0].replace(/-/g, '/'); // Like "2018/05/07"
|
|
63
|
-
|
|
64
46
|
path = this.root.dir().uri + path + '/' + this.leafFileName;
|
|
65
47
|
return _solidLogic.store.sym(path);
|
|
66
48
|
}
|
|
49
|
+
|
|
67
50
|
/* Generate a date object from the leaf file name
|
|
68
51
|
*/
|
|
69
|
-
|
|
70
52
|
}, {
|
|
71
53
|
key: "dateFromLeafDocument",
|
|
72
54
|
value: function dateFromLeafDocument(doc) {
|
|
73
55
|
var head = this.rootFolder.uri.length;
|
|
74
|
-
var str = doc.uri.slice(head, head + 10).replace(/\//g, '-');
|
|
75
|
-
|
|
56
|
+
var str = doc.uri.slice(head, head + 10).replace(/\//g, '-');
|
|
57
|
+
// let date = new Date(str + 'Z') // GMT - but fails in FF - invalid format :-(
|
|
76
58
|
var date = new Date(str); // not explicitly UTC but is assumed so in spec
|
|
77
59
|
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse
|
|
78
|
-
|
|
79
60
|
debug.log('Date for ' + doc + ':' + date.toISOString());
|
|
80
61
|
return date;
|
|
81
62
|
}
|
|
@@ -84,7 +65,6 @@ var DateFolder = /*#__PURE__*/function () {
|
|
|
84
65
|
value: function () {
|
|
85
66
|
var _loadPrevious = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(date, backwards) {
|
|
86
67
|
var thisDateFolder, previousPeriod, _previousPeriod, folder, found, doc;
|
|
87
|
-
|
|
88
68
|
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
89
69
|
while (1) {
|
|
90
70
|
switch (_context3.prev = _context3.next) {
|
|
@@ -92,7 +72,6 @@ var DateFolder = /*#__PURE__*/function () {
|
|
|
92
72
|
_previousPeriod = function _previousPeriod3() {
|
|
93
73
|
_previousPeriod = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(file, level) {
|
|
94
74
|
var younger, suitable, lastNonEmpty, _lastNonEmpty, parent, siblings, folder, uncle, cousins, result;
|
|
95
|
-
|
|
96
75
|
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
97
76
|
while (1) {
|
|
98
77
|
switch (_context2.prev = _context2.next) {
|
|
@@ -100,49 +79,38 @@ var DateFolder = /*#__PURE__*/function () {
|
|
|
100
79
|
_lastNonEmpty = function _lastNonEmpty3() {
|
|
101
80
|
_lastNonEmpty = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(siblings) {
|
|
102
81
|
var _folder, leafDocument;
|
|
103
|
-
|
|
104
82
|
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
105
83
|
while (1) {
|
|
106
84
|
switch (_context.prev = _context.next) {
|
|
107
85
|
case 0:
|
|
108
86
|
siblings = siblings.filter(suitable);
|
|
109
87
|
siblings.sort(); // chronological order
|
|
110
|
-
|
|
111
88
|
if (!backwards) siblings.reverse();
|
|
112
|
-
|
|
113
89
|
if (!(level !== 3)) {
|
|
114
90
|
_context.next = 5;
|
|
115
91
|
break;
|
|
116
92
|
}
|
|
117
|
-
|
|
118
93
|
return _context.abrupt("return", siblings.pop());
|
|
119
|
-
|
|
120
94
|
case 5:
|
|
121
95
|
if (!siblings.length) {
|
|
122
96
|
_context.next = 14;
|
|
123
97
|
break;
|
|
124
98
|
}
|
|
125
|
-
|
|
126
99
|
_folder = siblings.pop();
|
|
127
100
|
leafDocument = _solidLogic.store.sym(_folder.uri + thisDateFolder.leafFileName);
|
|
128
101
|
_context.next = 10;
|
|
129
102
|
return _solidLogic.store.fetcher.load(leafDocument);
|
|
130
|
-
|
|
131
103
|
case 10:
|
|
132
104
|
if (!(_solidLogic.store.statementsMatching(null, ns.dct('created'), null, leafDocument).length > 0)) {
|
|
133
105
|
_context.next = 12;
|
|
134
106
|
break;
|
|
135
107
|
}
|
|
136
|
-
|
|
137
108
|
return _context.abrupt("return", _folder);
|
|
138
|
-
|
|
139
109
|
case 12:
|
|
140
110
|
_context.next = 5;
|
|
141
111
|
break;
|
|
142
|
-
|
|
143
112
|
case 14:
|
|
144
113
|
return _context.abrupt("return", null);
|
|
145
|
-
|
|
146
114
|
case 15:
|
|
147
115
|
case "end":
|
|
148
116
|
return _context.stop();
|
|
@@ -152,80 +120,60 @@ var DateFolder = /*#__PURE__*/function () {
|
|
|
152
120
|
}));
|
|
153
121
|
return _lastNonEmpty.apply(this, arguments);
|
|
154
122
|
};
|
|
155
|
-
|
|
156
123
|
lastNonEmpty = function _lastNonEmpty2(_x5) {
|
|
157
124
|
return _lastNonEmpty.apply(this, arguments);
|
|
158
125
|
};
|
|
159
|
-
|
|
160
126
|
suitable = function _suitable(x) {
|
|
161
127
|
var tail = x.uri.slice(0, -1).split('/').slice(-1)[0];
|
|
162
128
|
if (!'0123456789'.includes(tail[0])) return false; // not numeric
|
|
163
|
-
|
|
164
129
|
return true;
|
|
165
130
|
};
|
|
166
|
-
|
|
167
131
|
younger = function _younger(x) {
|
|
168
132
|
if (backwards ? x.uri >= file.uri : x.uri <= file.uri) return false; // later than we want or same -- looking for different
|
|
169
|
-
|
|
170
133
|
return true;
|
|
171
134
|
};
|
|
172
|
-
|
|
173
135
|
// debug.log(' previousPeriod level' + level + ' file ' + file)
|
|
174
136
|
parent = file.dir();
|
|
175
137
|
_context2.next = 7;
|
|
176
138
|
return _solidLogic.store.fetcher.load(parent);
|
|
177
|
-
|
|
178
139
|
case 7:
|
|
179
140
|
siblings = _solidLogic.store.each(parent, ns.ldp('contains'));
|
|
180
141
|
siblings = siblings.filter(younger);
|
|
181
142
|
_context2.next = 11;
|
|
182
143
|
return lastNonEmpty(siblings);
|
|
183
|
-
|
|
184
144
|
case 11:
|
|
185
145
|
folder = _context2.sent;
|
|
186
|
-
|
|
187
146
|
if (!folder) {
|
|
188
147
|
_context2.next = 14;
|
|
189
148
|
break;
|
|
190
149
|
}
|
|
191
|
-
|
|
192
150
|
return _context2.abrupt("return", folder);
|
|
193
|
-
|
|
194
151
|
case 14:
|
|
195
152
|
if (!(level === 0)) {
|
|
196
153
|
_context2.next = 16;
|
|
197
154
|
break;
|
|
198
155
|
}
|
|
199
|
-
|
|
200
156
|
return _context2.abrupt("return", null);
|
|
201
|
-
|
|
202
157
|
case 16:
|
|
203
158
|
_context2.next = 18;
|
|
204
159
|
return previousPeriod(parent, level - 1);
|
|
205
|
-
|
|
206
160
|
case 18:
|
|
207
161
|
uncle = _context2.sent;
|
|
208
|
-
|
|
209
162
|
if (uncle) {
|
|
210
163
|
_context2.next = 21;
|
|
211
164
|
break;
|
|
212
165
|
}
|
|
213
|
-
|
|
214
166
|
return _context2.abrupt("return", null);
|
|
215
|
-
|
|
216
167
|
case 21:
|
|
217
168
|
_context2.next = 23;
|
|
218
169
|
return _solidLogic.store.fetcher.load(uncle);
|
|
219
|
-
|
|
220
170
|
case 23:
|
|
221
171
|
cousins = _solidLogic.store.each(uncle, ns.ldp('contains'));
|
|
222
172
|
_context2.next = 26;
|
|
223
173
|
return lastNonEmpty(cousins);
|
|
224
|
-
|
|
225
174
|
case 26:
|
|
226
175
|
result = _context2.sent;
|
|
227
176
|
return _context2.abrupt("return", result);
|
|
228
|
-
|
|
229
177
|
case 28:
|
|
230
178
|
case "end":
|
|
231
179
|
return _context2.stop();
|
|
@@ -235,31 +183,24 @@ var DateFolder = /*#__PURE__*/function () {
|
|
|
235
183
|
}));
|
|
236
184
|
return _previousPeriod.apply(this, arguments);
|
|
237
185
|
};
|
|
238
|
-
|
|
239
186
|
previousPeriod = function _previousPeriod2(_x3, _x4) {
|
|
240
187
|
return _previousPeriod.apply(this, arguments);
|
|
241
188
|
};
|
|
242
|
-
|
|
243
189
|
thisDateFolder = this;
|
|
244
190
|
// previousPeriod
|
|
245
191
|
folder = this.leafDocumentFromDate(date).dir();
|
|
246
192
|
_context3.next = 6;
|
|
247
193
|
return previousPeriod(folder, 3);
|
|
248
|
-
|
|
249
194
|
case 6:
|
|
250
195
|
found = _context3.sent;
|
|
251
|
-
|
|
252
196
|
if (!found) {
|
|
253
197
|
_context3.next = 10;
|
|
254
198
|
break;
|
|
255
199
|
}
|
|
256
|
-
|
|
257
200
|
doc = _solidLogic.store.sym(found.uri + this.leafFileName);
|
|
258
201
|
return _context3.abrupt("return", this.dateFromLeafDocument(doc));
|
|
259
|
-
|
|
260
202
|
case 10:
|
|
261
203
|
return _context3.abrupt("return", null);
|
|
262
|
-
|
|
263
204
|
case 11:
|
|
264
205
|
case "end":
|
|
265
206
|
return _context3.stop();
|
|
@@ -267,20 +208,16 @@ var DateFolder = /*#__PURE__*/function () {
|
|
|
267
208
|
}
|
|
268
209
|
}, _callee3, this);
|
|
269
210
|
}));
|
|
270
|
-
|
|
271
211
|
function loadPrevious(_x, _x2) {
|
|
272
212
|
return _loadPrevious.apply(this, arguments);
|
|
273
213
|
}
|
|
274
|
-
|
|
275
214
|
return loadPrevious;
|
|
276
215
|
}() // loadPrevious
|
|
277
|
-
|
|
278
216
|
}, {
|
|
279
217
|
key: "firstLeaf",
|
|
280
218
|
value: function () {
|
|
281
219
|
var _firstLeaf = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(backwards) {
|
|
282
220
|
var folderStore, folderFetcher, earliestSubfolder, _earliestSubfolder, y, month, d, leafDocument, leafObjects, msg, sortMe;
|
|
283
|
-
|
|
284
221
|
return _regenerator["default"].wrap(function _callee5$(_context5) {
|
|
285
222
|
while (1) {
|
|
286
223
|
switch (_context5.prev = _context5.next) {
|
|
@@ -295,37 +232,30 @@ var DateFolder = /*#__PURE__*/function () {
|
|
|
295
232
|
suitable = function _suitable2(x) {
|
|
296
233
|
var tail = x.uri.slice(0, -1).split('/').slice(-1)[0];
|
|
297
234
|
if (!'0123456789'.includes(tail[0])) return false; // not numeric
|
|
298
|
-
|
|
299
235
|
return true;
|
|
300
236
|
};
|
|
301
|
-
|
|
302
237
|
debug.log(' parent ' + parent);
|
|
303
|
-
delete folderFetcher.requested[parent.uri];
|
|
304
|
-
|
|
238
|
+
delete folderFetcher.requested[parent.uri];
|
|
239
|
+
// try {
|
|
305
240
|
_context4.next = 5;
|
|
306
241
|
return folderFetcher.load(parent, {
|
|
307
242
|
force: true
|
|
308
243
|
});
|
|
309
|
-
|
|
310
244
|
case 5:
|
|
311
245
|
// Force fetch as will have changed
|
|
312
246
|
// }catch (err) {
|
|
313
247
|
// }
|
|
314
248
|
kids = folderStore.each(parent, ns.ldp('contains'));
|
|
315
249
|
kids = kids.filter(suitable);
|
|
316
|
-
|
|
317
250
|
if (!(kids.length === 0)) {
|
|
318
251
|
_context4.next = 9;
|
|
319
252
|
break;
|
|
320
253
|
}
|
|
321
|
-
|
|
322
254
|
throw new Error(' @@@ No children to parent2 ' + parent);
|
|
323
|
-
|
|
324
255
|
case 9:
|
|
325
256
|
kids.sort();
|
|
326
257
|
if (backwards) kids.reverse();
|
|
327
258
|
return _context4.abrupt("return", kids[0]);
|
|
328
|
-
|
|
329
259
|
case 12:
|
|
330
260
|
case "end":
|
|
331
261
|
return _context4.stop();
|
|
@@ -335,45 +265,36 @@ var DateFolder = /*#__PURE__*/function () {
|
|
|
335
265
|
}));
|
|
336
266
|
return _earliestSubfolder.apply(this, arguments);
|
|
337
267
|
};
|
|
338
|
-
|
|
339
268
|
earliestSubfolder = function _earliestSubfolder2(_x7) {
|
|
340
269
|
return _earliestSubfolder.apply(this, arguments);
|
|
341
270
|
};
|
|
342
|
-
|
|
343
271
|
// backwards -> last leafObject
|
|
344
272
|
folderStore = $rdf.graph();
|
|
345
273
|
folderFetcher = new $rdf.Fetcher(folderStore);
|
|
346
274
|
_context5.next = 6;
|
|
347
275
|
return earliestSubfolder(this.root.dir());
|
|
348
|
-
|
|
349
276
|
case 6:
|
|
350
277
|
y = _context5.sent;
|
|
351
278
|
_context5.next = 9;
|
|
352
279
|
return earliestSubfolder(y);
|
|
353
|
-
|
|
354
280
|
case 9:
|
|
355
281
|
month = _context5.sent;
|
|
356
282
|
_context5.next = 12;
|
|
357
283
|
return earliestSubfolder(month);
|
|
358
|
-
|
|
359
284
|
case 12:
|
|
360
285
|
d = _context5.sent;
|
|
361
286
|
leafDocument = $rdf.sym(d.uri + 'chat.ttl');
|
|
362
287
|
_context5.next = 16;
|
|
363
288
|
return folderFetcher.load(leafDocument);
|
|
364
|
-
|
|
365
289
|
case 16:
|
|
366
290
|
leafObjects = folderStore.each(this.root, this.membershipProperty, null, leafDocument);
|
|
367
|
-
|
|
368
291
|
if (!(leafObjects.length === 0)) {
|
|
369
292
|
_context5.next = 21;
|
|
370
293
|
break;
|
|
371
294
|
}
|
|
372
|
-
|
|
373
295
|
msg = ' INCONSISTENCY -- no chat leafObject in file ' + leafDocument;
|
|
374
296
|
debug.trace(msg);
|
|
375
297
|
throw new Error(msg);
|
|
376
|
-
|
|
377
298
|
case 21:
|
|
378
299
|
sortMe = leafObjects.map(function (leafObject) {
|
|
379
300
|
return [folderStore.any(leafObject, ns.dct('created')), leafObject];
|
|
@@ -382,7 +303,6 @@ var DateFolder = /*#__PURE__*/function () {
|
|
|
382
303
|
if (backwards) sortMe.reverse();
|
|
383
304
|
debug.log((backwards ? 'Latest' : 'Earliest') + ' leafObject is ' + sortMe[0][1]);
|
|
384
305
|
return _context5.abrupt("return", sortMe[0][1]);
|
|
385
|
-
|
|
386
306
|
case 26:
|
|
387
307
|
case "end":
|
|
388
308
|
return _context5.stop();
|
|
@@ -390,18 +310,13 @@ var DateFolder = /*#__PURE__*/function () {
|
|
|
390
310
|
}
|
|
391
311
|
}, _callee5, this);
|
|
392
312
|
}));
|
|
393
|
-
|
|
394
313
|
function firstLeaf(_x6) {
|
|
395
314
|
return _firstLeaf.apply(this, arguments);
|
|
396
315
|
}
|
|
397
|
-
|
|
398
316
|
return firstLeaf;
|
|
399
317
|
}() // firstleafObject
|
|
400
|
-
|
|
401
318
|
}]);
|
|
402
319
|
return DateFolder;
|
|
403
320
|
}(); // class
|
|
404
|
-
|
|
405
|
-
|
|
406
321
|
exports.DateFolder = DateFolder;
|
|
407
322
|
//# sourceMappingURL=dateFolder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"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"],"sources":["../../src/chat/dateFolder.js"],"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 'solid-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"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"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"],"sources":["../../src/chat/dateFolder.js"],"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 'solid-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"],"mappings":"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"}
|