solid-ui 2.4.30 → 2.4.31-13dc2247
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/805.solid-ui.min.js +1 -1
- package/dist/805.solid-ui.min.js.map +1 -1
- package/dist/solid-ui.js +6264 -2826
- package/dist/solid-ui.js.map +1 -1
- package/dist/solid-ui.min.js +1 -1
- package/dist/solid-ui.min.js.LICENSE.txt +1 -1
- package/dist/solid-ui.min.js.map +1 -1
- package/dist/vendors-node_modules_jsonld_lib_jsonld_js.solid-ui.js +1965 -1965
- package/dist/vendors-node_modules_jsonld_lib_jsonld_js.solid-ui.js.map +1 -1
- package/lib/chat/bookmarks.js +6 -7
- package/lib/chat/bookmarks.js.map +1 -1
- package/lib/chat/chatLogic.js +251 -66
- package/lib/chat/chatLogic.js.map +1 -1
- package/lib/chat/dateFolder.js +131 -126
- package/lib/chat/dateFolder.js.map +1 -1
- package/lib/chat/infinite.js +611 -416
- package/lib/chat/infinite.js.map +1 -1
- package/lib/chat/message.js +328 -191
- package/lib/chat/message.js.map +1 -1
- package/lib/chat/messageTools.js +462 -276
- package/lib/chat/messageTools.js.map +1 -1
- package/lib/chat/thread.js +299 -208
- package/lib/chat/thread.js.map +1 -1
- package/lib/login/login.d.ts.map +1 -1
- package/lib/login/login.js +14 -18
- package/lib/login/login.js.map +1 -1
- package/lib/media/media-capture.d.ts +2 -2
- package/lib/media/media-capture.d.ts.map +1 -1
- package/lib/media/media-capture.js +11 -15
- package/lib/media/media-capture.js.map +1 -1
- package/lib/pad.d.ts +2 -2
- package/lib/pad.d.ts.map +1 -1
- package/lib/pad.js +15 -39
- package/lib/pad.js.map +1 -1
- package/lib/participation.d.ts +7 -7
- package/lib/participation.d.ts.map +1 -1
- package/lib/participation.js +26 -24
- package/lib/participation.js.map +1 -1
- package/lib/preferences.js +4 -0
- package/lib/preferences.js.map +1 -1
- package/lib/style.js +93 -85
- package/lib/style.js.map +1 -1
- package/lib/styleConstants.js +35 -0
- package/lib/styleConstants.js.map +1 -0
- package/lib/tabs.d.ts +0 -125
- package/lib/tabs.d.ts.map +1 -1
- package/lib/tabs.js +15 -8
- package/lib/tabs.js.map +1 -1
- package/lib/utils/keyHelpers/accessData.d.ts +2 -2
- package/lib/utils/keyHelpers/accessData.d.ts.map +1 -1
- package/lib/utils/keyHelpers/accessData.js +59 -115
- package/lib/utils/keyHelpers/accessData.js.map +1 -1
- package/lib/utils/keyHelpers/otherHelpers.d.ts +3 -0
- package/lib/utils/keyHelpers/otherHelpers.d.ts.map +1 -0
- package/lib/utils/keyHelpers/otherHelpers.js +22 -0
- package/lib/utils/keyHelpers/otherHelpers.js.map +1 -0
- package/lib/versionInfo.js +3 -3
- package/lib/versionInfo.js.map +1 -1
- package/lib/widgets/dragAndDrop.js +11 -19
- package/lib/widgets/dragAndDrop.js.map +1 -1
- package/lib/widgets/error.d.ts.map +1 -1
- package/lib/widgets/error.js +9 -2
- package/lib/widgets/error.js.map +1 -1
- package/lib/widgets/forms/autocomplete/autocompletePicker.d.ts.map +1 -1
- package/lib/widgets/forms/autocomplete/autocompletePicker.js +2 -1
- package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +1 -1
- package/lib/widgets/forms/basic.d.ts.map +1 -1
- package/lib/widgets/forms/basic.js +5 -4
- package/lib/widgets/forms/basic.js.map +1 -1
- package/lib/widgets/forms/fieldParams.js +2 -2
- package/lib/widgets/forms/fieldParams.js.map +1 -1
- package/lib/widgets/forms.js +9 -8
- package/lib/widgets/forms.js.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chatLogic.js","names":["debug","_interopRequireWildcard","require","_dateFolder","_solidLogic","ns","$rdf","utils","_signature","_keys","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","_typeof","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","ChatChannel","exports","channel","options","_classCallCheck2","channelRoot","doc","dateFolder","DateFolder","div","_createClass2","key","value","_createMessage","_asyncToGenerator2","_regenerator","mark","_callee","text","wrap","_callee$","_context","prev","next","abrupt","updateMessage","stop","createMessage","_x","apply","arguments","_updateMessage","_this","oldMsg","length","undefined","deleteIt","_callee2","sts","now","timestamp","dateStamp","chatDocument","message","me","msg","oldMsgMaker","errMsg","privateKey","sig","_errMsg","_callee2$","_context2","Date","getTime","term","leafDocumentFromDate","store","sym","uri","authn","currentUser","getBlankMsg","id","any","foaf","push","st","mostRecentVersion","dct","schema","warn","alert","Error","wf","sioc","literal","content","created","maker","getPrivateKey","sent","signMsg","concat","SEC","lit","updater","update","t0","_x2","_deleteMessage","_callee3","_callee3$","_context3","deleteMessage","_x3","originalVersion","isDeleted","holds","isReplaced","isHidden","nick","person","s","label","_createIfNotExists","_x4","_createIfNotExists2","contentType","data","_callee4","response","_callee4$","_context4","fetcher","load","status","log","webOperation","t1","requested"],"sources":["../../src/chat/chatLogic.js"],"sourcesContent":["/**\n * Contains the [[ChatChannel]] class and logic for Solid Chat\n * @packageDocumentation\n */\n\nimport * as debug from '../debug'\nimport { DateFolder } from './dateFolder'\nimport { store, authn } from 'solid-logic'\nimport * as ns from '../ns'\nimport * as $rdf from 'rdflib' // pull in first avoid cross-refs\nimport * as utils from '../utils'\nimport { getBlankMsg, signMsg, SEC, verifySignature } from './signature'\nimport { getPrivateKey, getPublicKey } from './keys'\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 const msg = getBlankMsg()\n msg.id = message.uri\n if (oldMsg) { // edit message replaces old one\n const oldMsgMaker = store.any(oldMsg, ns.foaf('maker')) // may not be needed here, but needed on READ\n if (oldMsgMaker.uri === me.uri) {\n sts.push($rdf.st(mostRecentVersion(oldMsg), ns.dct('isReplacedBy'), message, chatDocument))\n if (deleteIt) { // we need to add a specific signature, else anyone can delete a msg ?\n sts.push($rdf.st(message, ns.schema('dateDeleted'), dateStamp, chatDocument))\n }\n } else {\n const errMsg = 'Error you cannot delete/edit a message from someone else : \\n' + oldMsgMaker.uri\n debug.warn(errMsg)\n alert(errMsg)\n throw new Error(errMsg)\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 msg.content = text\n\n sts.push(\n $rdf.st(message, ns.dct('created'), dateStamp, chatDocument)\n )\n msg.created = dateStamp.value\n if (me) {\n sts.push($rdf.st(message, ns.foaf('maker'), me, chatDocument))\n msg.maker = me.uri\n // privateKey the cached private key of me, cached in store\n const privateKey = await getPrivateKey(me) // me.uri)\n\n const sig = signMsg(msg, privateKey)\n sts.push($rdf.st(message, $rdf.sym(`${SEC}proofValue`), $rdf.lit(sig), chatDocument))\n }\n try {\n await store.updater.update([], sts)\n } catch (err) {\n const errMsg = 'Error saving chat message: ' + err\n debug.warn(errMsg)\n alert(errMsg)\n throw new Error(errMsg)\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 return response\n}\n// ends\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAKA,IAAAA,KAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AACA,IAAAG,EAAA,GAAAJ,uBAAA,CAAAC,OAAA;AACA,IAAAI,IAAA,GAAAL,uBAAA,CAAAC,OAAA;AACA,IAAAK,KAAA,GAAAN,uBAAA,CAAAC,OAAA;AACA,IAAAM,UAAA,GAAAN,OAAA;AACA,IAAAO,KAAA,GAAAP,OAAA;AAAoD,SAAAQ,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,yBAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAV,wBAAAU,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,gBAAAK,OAAA,CAAAL,CAAA,0BAAAA,CAAA,sBAAAA,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAc,CAAA,SAAAI,CAAA,GAAAR,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAI,CAAA,KAAAA,CAAA,CAAAX,GAAA,IAAAW,CAAA,CAAAC,GAAA,IAAAR,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAI,CAAA,IAAAV,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,cAAAR,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAgB,GAAA,CAAAnB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAZpD;AACA;AACA;AACA;AAM+B;AAK/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA,IASaY,WAAW,GAAAC,OAAA,CAAAD,WAAA;EACtB,SAAAA,YAAaE,OAAO,EAAEC,OAAO,EAAE;IAAA,IAAAC,gBAAA,mBAAAJ,WAAA;IAC7B,IAAI,CAACE,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACG,WAAW,GAAGH,OAAO,CAACI,GAAG,CAAC,CAAC;IAChC,IAAI,CAACH,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACI,UAAU,GAAG,IAAIC,sBAAU,CAAC,IAAI,CAACH,WAAW,EAAE,UAAU,CAAC;IAC9D,IAAI,CAACI,GAAG,GAAG,IAAI,EAAC;EAClB;;EAEA;AACF;EADE,IAAAC,aAAA,aAAAV,WAAA;IAAAW,GAAA;IAAAC,KAAA;MAAA,IAAAC,cAAA,OAAAC,kBAAA,2BAAAC,YAAA,YAAAC,IAAA,CAEA,SAAAC,QAAqBC,IAAI;QAAA,OAAAH,YAAA,YAAAI,IAAA,UAAAC,SAAAC,QAAA;UAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;YAAA;cAAA,OAAAF,QAAA,CAAAG,MAAA,WAChB,IAAI,CAACC,aAAa,CAACP,IAAI,CAAC;YAAA;YAAA;cAAA,OAAAG,QAAA,CAAAK,IAAA;UAAA;QAAA,GAAAT,OAAA;MAAA,CAChC;MAAA,SAAAU,cAAAC,EAAA;QAAA,OAAAf,cAAA,CAAAgB,KAAA,OAAAC,SAAA;MAAA;MAAA,OAAAH,aAAA;IAAA;IAED;AACF;AACA;AACA;IAHE;EAAA;IAAAhB,GAAA;IAAAC,KAAA;MAAA,IAAAmB,cAAA,OAAAjB,kBAAA,aAIA,UAAqBI,IAAI;QAAA,IAAAc,KAAA;QAAA,IAAEC,MAAM,GAAAH,SAAA,CAAAI,MAAA,QAAAJ,SAAA,QAAAK,SAAA,GAAAL,SAAA,MAAG,IAAI;QAAA,IAAEM,QAAQ,GAAAN,SAAA,CAAAI,MAAA,OAAAJ,SAAA,MAAAK,SAAA;QAAA,oBAAApB,YAAA,YAAAC,IAAA,UAAAqB,SAAA;UAAA,IAAAC,GAAA,EAAAC,GAAA,EAAAC,SAAA,EAAAC,SAAA,EAAAC,YAAA,EAAAC,OAAA,EAAAC,EAAA,EAAAC,GAAA,EAAAC,WAAA,EAAAC,MAAA,EAAAC,UAAA,EAAAC,GAAA,EAAAC,OAAA;UAAA,OAAAnC,YAAA,YAAAI,IAAA,UAAAgC,UAAAC,SAAA;YAAA,kBAAAA,SAAA,CAAA9B,IAAA,GAAA8B,SAAA,CAAA7B,IAAA;cAAA;gBAC1Ce,GAAG,GAAG,EAAE;gBACRC,GAAG,GAAG,IAAIc,IAAI,CAAC,CAAC;gBAChBb,SAAS,GAAG,EAAE,GAAGD,GAAG,CAACe,OAAO,CAAC,CAAC;gBAC9Bb,SAAS,GAAGlE,IAAI,CAACgF,IAAI,CAAChB,GAAG,CAAC;gBAC1BG,YAAY,GAAGT,MAAM,GAAGA,MAAM,CAAC3B,GAAG,CAAC,CAAC,GAAG0B,KAAI,CAACzB,UAAU,CAACiD,oBAAoB,CAACjB,GAAG,CAAC;gBAChFI,OAAO,GAAGc,iBAAK,CAACC,GAAG,CAAChB,YAAY,CAACiB,GAAG,GAAG,GAAG,GAAG,KAAK,GAAGnB,SAAS,CAAC,EACrE;gBAEMI,EAAE,GAAGgB,iBAAK,CAACC,WAAW,CAAC,CAAC,EAAC;gBAEzBhB,GAAG,GAAG,IAAAiB,sBAAW,EAAC,CAAC;gBACzBjB,GAAG,CAACkB,EAAE,GAAGpB,OAAO,CAACgB,GAAG;gBAAA,KAChB1B,MAAM;kBAAAmB,SAAA,CAAA7B,IAAA;kBAAA;gBAAA;gBAAI;gBACNuB,WAAW,GAAGW,iBAAK,CAACO,GAAG,CAAC/B,MAAM,EAAE3D,EAAE,CAAC2F,IAAI,CAAC,OAAO,CAAC,CAAC,EAAC;gBAAA,MACpDnB,WAAW,CAACa,GAAG,KAAKf,EAAE,CAACe,GAAG;kBAAAP,SAAA,CAAA7B,IAAA;kBAAA;gBAAA;gBAC5Be,GAAG,CAAC4B,IAAI,CAAC3F,IAAI,CAAC4F,EAAE,CAACC,iBAAiB,CAACnC,MAAM,CAAC,EAAE3D,EAAE,CAAC+F,GAAG,CAAC,cAAc,CAAC,EAAE1B,OAAO,EAAED,YAAY,CAAC,CAAC;gBAC3F,IAAIN,QAAQ,EAAE;kBAAE;kBACdE,GAAG,CAAC4B,IAAI,CAAC3F,IAAI,CAAC4F,EAAE,CAACxB,OAAO,EAAErE,EAAE,CAACgG,MAAM,CAAC,aAAa,CAAC,EAAE7B,SAAS,EAAEC,YAAY,CAAC,CAAC;gBAC/E;gBAACU,SAAA,CAAA7B,IAAA;gBAAA;cAAA;gBAEKwB,MAAM,GAAG,+DAA+D,GAAGD,WAAW,CAACa,GAAG;gBAChG1F,KAAK,CAACsG,IAAI,CAACxB,MAAM,CAAC;gBAClByB,KAAK,CAACzB,MAAM,CAAC;gBAAA,MACP,IAAI0B,KAAK,CAAC1B,MAAM,CAAC;cAAA;gBAAAK,SAAA,CAAA7B,IAAA;gBAAA;cAAA;gBAElB;gBACPe,GAAG,CAAC4B,IAAI,CAAC3F,IAAI,CAAC4F,EAAE,CAACnC,KAAI,CAAC9B,OAAO,EAAE5B,EAAE,CAACoG,EAAE,CAAC,SAAS,CAAC,EAAE/B,OAAO,EAAED,YAAY,CAAC,CAAC;cAAA;gBAE1EJ,GAAG,CAAC4B,IAAI,CACN3F,IAAI,CAAC4F,EAAE,CAACxB,OAAO,EAAErE,EAAE,CAACqG,IAAI,CAAC,SAAS,CAAC,EAAElB,iBAAK,CAACmB,OAAO,CAAC1D,IAAI,CAAC,EAAEwB,YAAY,CACxE,CAAC;gBACDG,GAAG,CAACgC,OAAO,GAAG3D,IAAI;gBAElBoB,GAAG,CAAC4B,IAAI,CACN3F,IAAI,CAAC4F,EAAE,CAACxB,OAAO,EAAErE,EAAE,CAAC+F,GAAG,CAAC,SAAS,CAAC,EAAE5B,SAAS,EAAEC,YAAY,CAC7D,CAAC;gBACDG,GAAG,CAACiC,OAAO,GAAGrC,SAAS,CAAC7B,KAAK;gBAAA,KACzBgC,EAAE;kBAAAQ,SAAA,CAAA7B,IAAA;kBAAA;gBAAA;gBACJe,GAAG,CAAC4B,IAAI,CAAC3F,IAAI,CAAC4F,EAAE,CAACxB,OAAO,EAAErE,EAAE,CAAC2F,IAAI,CAAC,OAAO,CAAC,EAAErB,EAAE,EAAEF,YAAY,CAAC,CAAC;gBAC9DG,GAAG,CAACkC,KAAK,GAAGnC,EAAE,CAACe,GAAG;gBAClB;gBAAAP,SAAA,CAAA7B,IAAA;gBAAA,OACyB,IAAAyD,mBAAa,EAACpC,EAAE,CAAC;cAAA;gBAApCI,UAAU,GAAAI,SAAA,CAAA6B,IAAA;gBAA2B;gBAErChC,GAAG,GAAG,IAAAiC,kBAAO,EAACrC,GAAG,EAAEG,UAAU,CAAC;gBACpCV,GAAG,CAAC4B,IAAI,CAAC3F,IAAI,CAAC4F,EAAE,CAACxB,OAAO,EAAEpE,IAAI,CAACmF,GAAG,IAAAyB,MAAA,CAAIC,cAAG,eAAY,CAAC,EAAE7G,IAAI,CAAC8G,GAAG,CAACpC,GAAG,CAAC,EAAEP,YAAY,CAAC,CAAC;cAAA;gBAAAU,SAAA,CAAA9B,IAAA;gBAAA8B,SAAA,CAAA7B,IAAA;gBAAA,OAG/EkC,iBAAK,CAAC6B,OAAO,CAACC,MAAM,CAAC,EAAE,EAAEjD,GAAG,CAAC;cAAA;gBAAAc,SAAA,CAAA7B,IAAA;gBAAA;cAAA;gBAAA6B,SAAA,CAAA9B,IAAA;gBAAA8B,SAAA,CAAAoC,EAAA,GAAApC,SAAA;gBAE7BL,OAAM,GAAG,6BAA6B,GAAAK,SAAA,CAAAoC,EAAM;gBAClDvH,KAAK,CAACsG,IAAI,CAACxB,OAAM,CAAC;gBAClByB,KAAK,CAACzB,OAAM,CAAC;gBAAA,MACP,IAAI0B,KAAK,CAAC1B,OAAM,CAAC;cAAA;gBAAA,OAAAK,SAAA,CAAA5B,MAAA,WAElBmB,OAAO;cAAA;cAAA;gBAAA,OAAAS,SAAA,CAAA1B,IAAA;YAAA;UAAA,GAAAW,QAAA;QAAA;MAAA,CACf;MAAA,SAAAZ,cAAAgE,GAAA;QAAA,OAAA1D,cAAA,CAAAF,KAAA,OAAAC,SAAA;MAAA;MAAA,OAAAL,aAAA;IAAA;IAED;AACF;AACA;AACA;IAHE;EAAA;IAAAd,GAAA;IAAAC,KAAA;MAAA,IAAA8E,cAAA,OAAA5E,kBAAA,2BAAAC,YAAA,YAAAC,IAAA,CAIA,SAAA2E,SAAqBhD,OAAO;QAAA,OAAA5B,YAAA,YAAAI,IAAA,UAAAyE,UAAAC,SAAA;UAAA,kBAAAA,SAAA,CAAAvE,IAAA,GAAAuE,SAAA,CAAAtE,IAAA;YAAA;cAAA,OAAAsE,SAAA,CAAArE,MAAA,WACnB,IAAI,CAACC,aAAa,CAAC,mBAAmB,EAAEkB,OAAO,EAAE,IAAI,CAAC;YAAA;YAAA;cAAA,OAAAkD,SAAA,CAAAnE,IAAA;UAAA;QAAA,GAAAiE,QAAA;MAAA,CAC9D;MAAA,SAAAG,cAAAC,GAAA;QAAA,OAAAL,cAAA,CAAA7D,KAAA,OAAAC,SAAA;MAAA;MAAA,OAAAgE,aAAA;IAAA;EAAA;EAAA,OAAA9F,WAAA;AAAA,KACD;AAEK,SAASgG,eAAeA,CAAErD,OAAO,EAAE;EACxC,IAAIE,GAAG,GAAGF,OAAO;EACjB,OAAOE,GAAG,EAAE;IACVF,OAAO,GAAGE,GAAG;IACbA,GAAG,GAAGY,iBAAK,CAACO,GAAG,CAAC,IAAI,EAAE1F,EAAE,CAAC+F,GAAG,CAAC,cAAc,CAAC,EAAE1B,OAAO,EAAEA,OAAO,CAACrC,GAAG,CAAC,CAAC,CAAC;EACvE;EACA,OAAOqC,OAAO;AAChB;AAEO,SAASyB,iBAAiBA,CAAEzB,OAAO,EAAE;EAC1C,IAAIE,GAAG,GAAGF,OAAO;EACjB,OAAOE,GAAG,EAAE;IACVF,OAAO,GAAGE,GAAG;IACbA,GAAG,GAAGY,iBAAK,CAACO,GAAG,CAACrB,OAAO,EAAErE,EAAE,CAAC+F,GAAG,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE1B,OAAO,CAACrC,GAAG,CAAC,CAAC,CAAC;EACvE;EACA,OAAOqC,OAAO;AAChB;AAEO,SAASsD,SAASA,CAAEtD,OAAO,EAAE;EAClC,OAAOc,iBAAK,CAACyC,KAAK,CAACvD,OAAO,EAAErE,EAAE,CAACgG,MAAM,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE3B,OAAO,CAACrC,GAAG,CAAC,CAAC,CAAC;AAC5E;AAEO,SAAS6F,UAAUA,CAAExD,OAAO,EAAE;EACnC,OAAOc,iBAAK,CAACyC,KAAK,CAACvD,OAAO,EAAErE,EAAE,CAAC+F,GAAG,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE1B,OAAO,CAACrC,GAAG,CAAC,CAAC,CAAC;AAC1E;AAEO,SAAS8F,QAAQA,CAAEzD,OAAO,EAAE;EACjC,OAAO,IAAI,CAACsD,SAAS,CAACtD,OAAO,CAAC,IAAI,IAAI,CAACwD,UAAU,CAACxD,OAAO,CAAC;AAC5D;;AAEA;;AAEO,SAAS0D,IAAIA,CAAEC,MAAM,EAAE;EAC5B,IAAMC,CAAC,GAAG9C,iBAAK,CAACO,GAAG,CAACsC,MAAM,EAAEhI,EAAE,CAAC2F,IAAI,CAAC,MAAM,CAAC,CAAC;EAC5C,IAAIsC,CAAC,EAAE,OAAO,EAAE,GAAGA,CAAC,CAAC3F,KAAK;EAC1B,OAAO,EAAE,GAAGpC,KAAK,CAACgI,KAAK,CAACF,MAAM,CAAC;AACjC;AAAC,SAEqBG,kBAAkBA,CAAAC,GAAA;EAAA,OAAAC,mBAAA,CAAA9E,KAAA,OAAAC,SAAA;AAAA,EA8BxC;AAAA,SAAA6E,oBAAA;EAAAA,mBAAA,OAAA7F,kBAAA,aA9BO,UAAmCR,GAAG;IAAA,IAAEsG,WAAW,GAAA9E,SAAA,CAAAI,MAAA,QAAAJ,SAAA,QAAAK,SAAA,GAAAL,SAAA,MAAG,aAAa;IAAA,IAAE+E,IAAI,GAAA/E,SAAA,CAAAI,MAAA,QAAAJ,SAAA,QAAAK,SAAA,GAAAL,SAAA,MAAG,EAAE;IAAA,oBAAAf,YAAA,YAAAC,IAAA,UAAA8F,SAAA;MAAA,IAAAC,QAAA;MAAA,OAAAhG,YAAA,YAAAI,IAAA,UAAA6F,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAA3F,IAAA,GAAA2F,SAAA,CAAA1F,IAAA;UAAA;YAAA0F,SAAA,CAAA3F,IAAA;YAAA2F,SAAA,CAAA1F,IAAA;YAAA,OAGhEkC,iBAAK,CAACyD,OAAO,CAACC,IAAI,CAAC7G,GAAG,CAAC;UAAA;YAAxCyG,QAAQ,GAAAE,SAAA,CAAAhC,IAAA;YAAAgC,SAAA,CAAA1F,IAAA;YAAA;UAAA;YAAA0F,SAAA,CAAA3F,IAAA;YAAA2F,SAAA,CAAAzB,EAAA,GAAAyB,SAAA;YAAA,MAEJA,SAAA,CAAAzB,EAAA,CAAIuB,QAAQ,CAACK,MAAM,KAAK,GAAG;cAAAH,SAAA,CAAA1F,IAAA;cAAA;YAAA;YAC7BtD,KAAK,CAACoJ,GAAG,CACP,wDAAwD,GAAG/G,GAC7D,CAAC;YAAA2G,SAAA,CAAA3F,IAAA;YAAA2F,SAAA,CAAA1F,IAAA;YAAA,OAEkBkC,iBAAK,CAACyD,OAAO,CAACI,YAAY,CAAC,KAAK,EAAEhH,GAAG,CAACqD,GAAG,EAAE;cAC1DkD,IAAI,EAAJA,IAAI;cACJD,WAAW,EAAXA;YACF,CAAC,CAAC;UAAA;YAHFG,QAAQ,GAAAE,SAAA,CAAAhC,IAAA;YAAAgC,SAAA,CAAA1F,IAAA;YAAA;UAAA;YAAA0F,SAAA,CAAA3F,IAAA;YAAA2F,SAAA,CAAAM,EAAA,GAAAN,SAAA;YAKRhJ,KAAK,CAACoJ,GAAG,CAAC,gCAAgC,GAAG/G,GAAG,GAAG,IAAI,GAAA2G,SAAA,CAAAM,EAAM,CAAC;YAAA,MAAAN,SAAA,CAAAM,EAAA;UAAA;YAGhE,OAAO9D,iBAAK,CAACyD,OAAO,CAACM,SAAS,CAAClH,GAAG,CAACqD,GAAG,CAAC,EAAC;YACxC;YAAA,OAAAsD,SAAA,CAAAzF,MAAA,WACOuF,QAAQ;UAAA;YAEf9I,KAAK,CAACoJ,GAAG,CACP,6CAA6C,GAAG/G,GAAG,GAAG,IAAI,GAAA2G,SAAA,CAAAzB,EAC5D,CAAC;YAAA,MAAAyB,SAAA,CAAAzB,EAAA;UAAA;YAAA,OAAAyB,SAAA,CAAAzF,MAAA,WAIEuF,QAAQ;UAAA;UAAA;YAAA,OAAAE,SAAA,CAAAvF,IAAA;QAAA;MAAA,GAAAoF,QAAA;IAAA;EAAA,CAChB;EAAA,OAAAH,mBAAA,CAAA9E,KAAA,OAAAC,SAAA;AAAA"}
|
|
1
|
+
{"version":3,"file":"chatLogic.js","names":["debug","_interopRequireWildcard","require","_dateFolder","_solidLogic","ns","$rdf","utils","_signature","_keys","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","_typeof","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","ChatChannel","exports","channel","options","_classCallCheck2","channelRoot","doc","dateFolder","DateFolder","div","_createClass2","key","value","_createMessage","_asyncToGenerator2","_regenerator","mark","_callee","text","wrap","_callee$","_context","prev","next","abrupt","updateMessage","stop","createMessage","_x","apply","arguments","_updateMessage","_this","oldMsg","length","undefined","deleteIt","thread","_callee2","sts","now","timestamp","dateStamp","chatDocument","message","me","msg","oldMsgMaker","oldMsgMostRecentVersion","oldMsgThread","errMsg","privateKey","sig","_errMsg","_callee2$","_context2","Date","getTime","term","leafDocumentFromDate","store","sym","uri","authn","currentUser","getBlankMsg","id","any","foaf","mostRecentVersion","sent","push","st","dct","sioc","schema","warn","alert","Error","wf","literal","content","created","maker","getPrivateKey","signMsg","concat","SEC","lit","sameTerm","updater","updateMany","t0","_x2","_deleteMessage","_callee3","_callee3$","_context3","deleteMessage","_x3","_createThread","_callee4","threadRoot","already","insert","_callee4$","_context4","each","filter","holds","rdf","update","createThread","_x4","allVersions","_x5","_allVersions","_callee5","versions","done","m","_callee5$","_context5","fetcher","load","unshift","originalVersion","_x6","_originalVersion","_callee6","_callee6$","_context6","error","_x7","_mostRecentVersion","_callee7","_callee7$","_context7","isDeleted","isReplaced","isHidden","nick","person","s","label","_createIfNotExists","_x8","_createIfNotExists2","contentType","data","_callee8","response","_callee8$","_context8","status","log","webOperation","t1","requested"],"sources":["../../src/chat/chatLogic.js"],"sourcesContent":["/**\n * Contains the [[ChatChannel]] class and logic for Solid Chat\n * @packageDocumentation\n */\n\nimport * as debug from '../debug'\nimport { DateFolder } from './dateFolder'\nimport { store, authn } from 'solid-logic'\nimport * as ns from '../ns'\nimport * as $rdf from 'rdflib' // pull in first avoid cross-refs\nimport * as utils from '../utils'\nimport { getBlankMsg, signMsg, SEC, verifySignature } from './signature'\nimport { getPrivateKey, getPublicKey } from './keys'\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, thread = null) {\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 const msg = getBlankMsg()\n msg.id = message.uri\n if (oldMsg) { // edit message replaces old one\n const oldMsgMaker = store.any(oldMsg, ns.foaf('maker')) // may not be needed here, but needed on READ\n if (oldMsgMaker.uri === me.uri) {\n const oldMsgMostRecentVersion = await mostRecentVersion(oldMsg)\n sts.push($rdf.st(oldMsgMostRecentVersion, ns.dct('isReplacedBy'), message, chatDocument))\n // if oldMsg has_reply => add has_reply to message\n const oldMsgThread = store.any(oldMsgMostRecentVersion, ns.sioc('has_reply'))\n if (oldMsgThread) {\n sts.push($rdf.st(message, ns.sioc('has_reply'), oldMsgThread, chatDocument))\n }\n if (deleteIt) { // we need to add a specific signature, else anyone can delete a msg ?\n sts.push($rdf.st(message, ns.schema('dateDeleted'), dateStamp, chatDocument))\n }\n } else {\n const errMsg = 'Error you cannot delete/edit a message from someone else : \\n' + oldMsgMaker.uri\n debug.warn(errMsg)\n alert(errMsg)\n throw new Error(errMsg)\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 msg.content = text\n\n sts.push(\n $rdf.st(message, ns.dct('created'), dateStamp, chatDocument)\n )\n msg.created = dateStamp.value\n if (me) {\n sts.push($rdf.st(message, ns.foaf('maker'), me, chatDocument))\n msg.maker = me.uri\n // privateKey the cached private key of me, cached in store\n const privateKey = await getPrivateKey(me) // me.uri)\n\n const sig = signMsg(msg, privateKey)\n sts.push($rdf.st(message, $rdf.sym(`${SEC}proofValue`), $rdf.lit(sig), chatDocument))\n }\n if (thread) {\n sts.push($rdf.st(thread, ns.sioc('has_member'), message, chatDocument))\n if (!thread.doc().sameTerm(message.doc())) {\n sts.push($rdf.st(thread, ns.sioc('has_member'), message, thread.doc()))\n }\n }\n try {\n await store.updater.updateMany([], sts)\n } catch (err) {\n const errMsg = 'Error saving chat message: ' + err\n debug.warn(errMsg)\n alert(errMsg)\n throw new Error(errMsg)\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\n // Create a new thread of replies to the thread root message\n // or return one which already exists\n\n async createThread (threadRoot) {\n const already = store.each(threadRoot, ns.sioc('has_reply'), null, threadRoot.doc())\n .filter(thread => store.holds(thread, ns.rdf('type'), ns.sioc('Thread'), thread.doc()))\n if (already.length > 0) return already[0]\n\n const thread = $rdf.sym(threadRoot.uri + '-thread')\n const insert = [\n $rdf.st(thread, ns.rdf('type'), ns.sioc('Thread'), thread.doc()),\n $rdf.st(threadRoot, ns.sioc('has_reply'), thread, thread.doc())\n ]\n await store.updater.update([], insert)\n return thread\n }\n} // class ChatChannel\n\n// ////////// Utility functions\n\n// Have to not loop forever if fed loops\nexport async function allVersions (message) {\n const versions = [message]\n const done = {}\n done[message.uri] = true\n let m = message\n while (true) { // earlier?\n const prev = store.any(null, ns.dct('isReplacedBy'), m, m.doc())\n if (!prev || done[prev.uri]) break\n await store.fetcher.load(prev)\n versions.unshift(prev)\n done[prev.uri] = true\n m = prev\n }\n m = message\n while (true) { // later?\n const next = store.any(m, ns.dct('isReplacedBy'), null, m.doc())\n if (!next || done[next.uri]) break\n versions.push(next)\n done[next.uri] = true\n m = next\n }\n return versions\n}\n\nexport async function originalVersion (message) {\n let msg = message\n const done = {}\n // done[message.uri] = true\n while (msg) {\n if (done[msg.uri]) {\n debug.error('originalVersion: verion loop' + message)\n return message\n }\n done[msg.uri] = true\n message = msg\n await store.fetcher.load(message)\n msg = store.any(null, ns.dct('isReplacedBy'), message, message.doc())\n }\n return message\n}\n\nexport async function mostRecentVersion (message) {\n let msg = message\n const done = {}\n while (msg) {\n if (done[msg.uri]) {\n debug.error('mostRecentVersion: verion loop' + message)\n return message\n }\n done[msg.uri] = true\n message = msg\n await store.fetcher.load(message)\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 return response\n}\n// ends\n"],"mappings":"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"}
|
package/lib/chat/dateFolder.js
CHANGED
|
@@ -6,10 +6,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
exports.DateFolder = void 0;
|
|
9
|
+
exports.emptyLeaf = emptyLeaf;
|
|
9
10
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
10
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
11
11
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
12
12
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
13
14
|
var debug = _interopRequireWildcard(require("../debug"));
|
|
14
15
|
var _solidLogic = require("solid-logic");
|
|
15
16
|
var ns = _interopRequireWildcard(require("../ns"));
|
|
@@ -22,9 +23,29 @@ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e;
|
|
|
22
23
|
*
|
|
23
24
|
*/
|
|
24
25
|
// pull in first avoid cross-refs
|
|
26
|
+
function emptyLeaf(_x) {
|
|
27
|
+
return _emptyLeaf.apply(this, arguments);
|
|
28
|
+
}
|
|
25
29
|
/**
|
|
26
30
|
* Track back through the YYYY/MM/DD tree to find the previous/next day
|
|
27
31
|
*/
|
|
32
|
+
function _emptyLeaf() {
|
|
33
|
+
_emptyLeaf = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(leafDocument) {
|
|
34
|
+
return _regenerator["default"].wrap(function _callee5$(_context5) {
|
|
35
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
36
|
+
case 0:
|
|
37
|
+
_context5.next = 2;
|
|
38
|
+
return _solidLogic.store.fetcher.load(leafDocument);
|
|
39
|
+
case 2:
|
|
40
|
+
return _context5.abrupt("return", !(_solidLogic.store.statementsMatching(null, ns.dct('created'), null, leafDocument).length > 0));
|
|
41
|
+
case 3:
|
|
42
|
+
case "end":
|
|
43
|
+
return _context5.stop();
|
|
44
|
+
}
|
|
45
|
+
}, _callee5);
|
|
46
|
+
}));
|
|
47
|
+
return _emptyLeaf.apply(this, arguments);
|
|
48
|
+
}
|
|
28
49
|
var DateFolder = exports.DateFolder = /*#__PURE__*/function () {
|
|
29
50
|
function DateFolder(rootThing, leafFileName, membershipProperty) {
|
|
30
51
|
(0, _classCallCheck2["default"])(this, DateFolder);
|
|
@@ -63,61 +84,22 @@ var DateFolder = exports.DateFolder = /*#__PURE__*/function () {
|
|
|
63
84
|
}, {
|
|
64
85
|
key: "loadPrevious",
|
|
65
86
|
value: function () {
|
|
66
|
-
var _loadPrevious = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function
|
|
67
|
-
var
|
|
68
|
-
return _regenerator["default"].wrap(function
|
|
69
|
-
while (1) switch (
|
|
87
|
+
var _loadPrevious = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(date, backwards) {
|
|
88
|
+
var previousPeriod, _previousPeriod, folder, found, leafDocument, nextDate;
|
|
89
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
90
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
70
91
|
case 0:
|
|
71
92
|
_previousPeriod = function _previousPeriod3() {
|
|
72
|
-
_previousPeriod = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function
|
|
73
|
-
var younger, suitable,
|
|
74
|
-
return _regenerator["default"].wrap(function
|
|
75
|
-
while (1) switch (
|
|
93
|
+
_previousPeriod = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(file, level) {
|
|
94
|
+
var younger, suitable, lastOrFirst, parent, siblings, _folder, uncle, cousins, result;
|
|
95
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
96
|
+
while (1) switch (_context.prev = _context.next) {
|
|
76
97
|
case 0:
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
case 0:
|
|
83
|
-
siblings = siblings.filter(suitable);
|
|
84
|
-
siblings.sort(); // chronological order
|
|
85
|
-
if (!backwards) siblings.reverse();
|
|
86
|
-
if (!(level !== 3)) {
|
|
87
|
-
_context.next = 5;
|
|
88
|
-
break;
|
|
89
|
-
}
|
|
90
|
-
return _context.abrupt("return", siblings.pop());
|
|
91
|
-
case 5:
|
|
92
|
-
if (!siblings.length) {
|
|
93
|
-
_context.next = 14;
|
|
94
|
-
break;
|
|
95
|
-
}
|
|
96
|
-
_folder2 = siblings.pop();
|
|
97
|
-
leafDocument = _solidLogic.store.sym(_folder2.uri + thisDateFolder.leafFileName);
|
|
98
|
-
_context.next = 10;
|
|
99
|
-
return _solidLogic.store.fetcher.load(leafDocument);
|
|
100
|
-
case 10:
|
|
101
|
-
if (!(_solidLogic.store.statementsMatching(null, ns.dct('created'), null, leafDocument).length > 0)) {
|
|
102
|
-
_context.next = 12;
|
|
103
|
-
break;
|
|
104
|
-
}
|
|
105
|
-
return _context.abrupt("return", _folder2);
|
|
106
|
-
case 12:
|
|
107
|
-
_context.next = 5;
|
|
108
|
-
break;
|
|
109
|
-
case 14:
|
|
110
|
-
return _context.abrupt("return", null);
|
|
111
|
-
case 15:
|
|
112
|
-
case "end":
|
|
113
|
-
return _context.stop();
|
|
114
|
-
}
|
|
115
|
-
}, _callee);
|
|
116
|
-
}));
|
|
117
|
-
return _lastNonEmpty.apply(this, arguments);
|
|
118
|
-
};
|
|
119
|
-
lastNonEmpty = function _lastNonEmpty2(_x5) {
|
|
120
|
-
return _lastNonEmpty.apply(this, arguments);
|
|
98
|
+
lastOrFirst = function _lastOrFirst(siblings) {
|
|
99
|
+
siblings = siblings.filter(suitable);
|
|
100
|
+
siblings.sort(); // chronological order
|
|
101
|
+
if (!backwards) siblings.reverse();
|
|
102
|
+
return siblings.pop(); // date folder
|
|
121
103
|
};
|
|
122
104
|
suitable = function _suitable(x) {
|
|
123
105
|
var tail = x.uri.slice(0, -1).split('/').slice(-1)[0];
|
|
@@ -127,98 +109,121 @@ var DateFolder = exports.DateFolder = /*#__PURE__*/function () {
|
|
|
127
109
|
younger = function _younger(x) {
|
|
128
110
|
if (backwards ? x.uri >= file.uri : x.uri <= file.uri) return false; // later than we want or same -- looking for different
|
|
129
111
|
return true;
|
|
130
|
-
};
|
|
112
|
+
};
|
|
113
|
+
// debug.log(' previousPeriod level' + level + ' file ' + file)
|
|
131
114
|
parent = file.dir();
|
|
132
|
-
|
|
133
|
-
|
|
115
|
+
_context.prev = 4;
|
|
116
|
+
_context.next = 7;
|
|
134
117
|
return _solidLogic.store.fetcher.load(parent);
|
|
135
|
-
case
|
|
118
|
+
case 7:
|
|
136
119
|
siblings = _solidLogic.store.each(parent, ns.ldp('contains'));
|
|
137
120
|
siblings = siblings.filter(younger);
|
|
138
|
-
|
|
139
|
-
return lastNonEmpty(siblings);
|
|
140
|
-
case 12:
|
|
141
|
-
_folder = _context2.sent;
|
|
121
|
+
_folder = lastOrFirst(siblings);
|
|
142
122
|
if (!_folder) {
|
|
143
|
-
|
|
123
|
+
_context.next = 12;
|
|
144
124
|
break;
|
|
145
125
|
}
|
|
146
|
-
return
|
|
147
|
-
case
|
|
148
|
-
|
|
126
|
+
return _context.abrupt("return", _folder);
|
|
127
|
+
case 12:
|
|
128
|
+
debug.log(' parent no suitable offspring ' + parent);
|
|
129
|
+
_context.next = 23;
|
|
149
130
|
break;
|
|
150
|
-
case
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
if (!(
|
|
154
|
-
|
|
131
|
+
case 15:
|
|
132
|
+
_context.prev = 15;
|
|
133
|
+
_context.t0 = _context["catch"](4);
|
|
134
|
+
if (!(_context.t0.response && _context.t0.response.status && _context.t0.response.status === 404)) {
|
|
135
|
+
_context.next = 21;
|
|
155
136
|
break;
|
|
156
137
|
}
|
|
157
138
|
debug.log('Error 404 for chat parent file ' + parent);
|
|
158
|
-
|
|
139
|
+
_context.next = 23;
|
|
159
140
|
break;
|
|
160
|
-
case
|
|
141
|
+
case 21:
|
|
161
142
|
debug.log('*** Error NON 404 for chat parent file ' + parent);
|
|
162
143
|
// statusTR.appendChild(widgets.errorMessageBlock(dom, err, 'pink'))
|
|
163
|
-
throw new Error("*** ".concat(
|
|
164
|
-
case
|
|
144
|
+
throw new Error("*** ".concat(_context.t0.message, " for chat folder ").concat(parent));
|
|
145
|
+
case 23:
|
|
165
146
|
if (!(level === 0)) {
|
|
166
|
-
|
|
147
|
+
_context.next = 26;
|
|
167
148
|
break;
|
|
168
149
|
}
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
150
|
+
debug.log('loadPrevious: returning as level is zero');
|
|
151
|
+
return _context.abrupt("return", null);
|
|
152
|
+
case 26:
|
|
153
|
+
_context.next = 28;
|
|
172
154
|
return previousPeriod(parent, level - 1);
|
|
173
|
-
case
|
|
174
|
-
uncle =
|
|
155
|
+
case 28:
|
|
156
|
+
uncle = _context.sent;
|
|
175
157
|
if (uncle) {
|
|
176
|
-
|
|
158
|
+
_context.next = 32;
|
|
177
159
|
break;
|
|
178
160
|
}
|
|
179
|
-
|
|
161
|
+
debug.log(' previousPeriod: nothing left before. ', parent);
|
|
162
|
+
return _context.abrupt("return", null);
|
|
180
163
|
case 32:
|
|
181
|
-
|
|
164
|
+
_context.next = 34;
|
|
182
165
|
return _solidLogic.store.fetcher.load(uncle);
|
|
183
166
|
case 34:
|
|
184
167
|
cousins = _solidLogic.store.each(uncle, ns.ldp('contains'));
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
return _context2.abrupt("return", result);
|
|
168
|
+
result = lastOrFirst(cousins);
|
|
169
|
+
debug.log(' previousPeriod: returning cousins at level ' + level, cousins);
|
|
170
|
+
debug.log(' previousPeriod: returning result at level ' + level, result);
|
|
171
|
+
return _context.abrupt("return", result);
|
|
190
172
|
case 39:
|
|
191
173
|
case "end":
|
|
192
|
-
return
|
|
174
|
+
return _context.stop();
|
|
193
175
|
}
|
|
194
|
-
},
|
|
176
|
+
}, _callee, null, [[4, 15]]);
|
|
195
177
|
}));
|
|
196
178
|
return _previousPeriod.apply(this, arguments);
|
|
197
179
|
};
|
|
198
|
-
previousPeriod = function _previousPeriod2(
|
|
180
|
+
previousPeriod = function _previousPeriod2(_x4, _x5) {
|
|
199
181
|
return _previousPeriod.apply(this, arguments);
|
|
200
|
-
};
|
|
201
|
-
thisDateFolder = this; // previousPeriod
|
|
182
|
+
}; // previousPeriod
|
|
202
183
|
folder = this.leafDocumentFromDate(date).dir();
|
|
203
|
-
|
|
184
|
+
case 3:
|
|
185
|
+
if (!true) {
|
|
186
|
+
_context2.next = 25;
|
|
187
|
+
break;
|
|
188
|
+
}
|
|
189
|
+
_context2.next = 6;
|
|
204
190
|
return previousPeriod(folder, 3);
|
|
205
191
|
case 6:
|
|
206
|
-
found =
|
|
192
|
+
found = _context2.sent;
|
|
207
193
|
if (!found) {
|
|
208
|
-
|
|
194
|
+
_context2.next = 22;
|
|
209
195
|
break;
|
|
210
196
|
}
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
return
|
|
215
|
-
case
|
|
197
|
+
leafDocument = _solidLogic.store.sym(found.uri + this.leafFileName);
|
|
198
|
+
nextDate = this.dateFromLeafDocument(leafDocument);
|
|
199
|
+
_context2.next = 12;
|
|
200
|
+
return emptyLeaf(leafDocument);
|
|
201
|
+
case 12:
|
|
202
|
+
if (_context2.sent) {
|
|
203
|
+
_context2.next = 16;
|
|
204
|
+
break;
|
|
205
|
+
}
|
|
206
|
+
return _context2.abrupt("return", nextDate);
|
|
207
|
+
case 16:
|
|
208
|
+
debug.log(' loadPrevious: skipping empty ' + leafDocument);
|
|
209
|
+
date = nextDate;
|
|
210
|
+
folder = this.leafDocumentFromDate(date).dir();
|
|
211
|
+
debug.log(' loadPrevious: moved back to ' + folder);
|
|
212
|
+
case 20:
|
|
213
|
+
_context2.next = 23;
|
|
214
|
+
break;
|
|
215
|
+
case 22:
|
|
216
|
+
return _context2.abrupt("return", null);
|
|
217
|
+
case 23:
|
|
218
|
+
_context2.next = 3;
|
|
219
|
+
break;
|
|
220
|
+
case 25:
|
|
216
221
|
case "end":
|
|
217
|
-
return
|
|
222
|
+
return _context2.stop();
|
|
218
223
|
}
|
|
219
|
-
},
|
|
224
|
+
}, _callee2, this);
|
|
220
225
|
}));
|
|
221
|
-
function loadPrevious(
|
|
226
|
+
function loadPrevious(_x2, _x3) {
|
|
222
227
|
return _loadPrevious.apply(this, arguments);
|
|
223
228
|
}
|
|
224
229
|
return loadPrevious;
|
|
@@ -226,16 +231,16 @@ var DateFolder = exports.DateFolder = /*#__PURE__*/function () {
|
|
|
226
231
|
}, {
|
|
227
232
|
key: "firstLeaf",
|
|
228
233
|
value: function () {
|
|
229
|
-
var _firstLeaf = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function
|
|
234
|
+
var _firstLeaf = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(backwards) {
|
|
230
235
|
var folderStore, folderFetcher, earliestSubfolder, _earliestSubfolder, y, month, d, leafDocument, leafObjects, msg, sortMe;
|
|
231
|
-
return _regenerator["default"].wrap(function
|
|
232
|
-
while (1) switch (
|
|
236
|
+
return _regenerator["default"].wrap(function _callee4$(_context4) {
|
|
237
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
233
238
|
case 0:
|
|
234
239
|
_earliestSubfolder = function _earliestSubfolder3() {
|
|
235
|
-
_earliestSubfolder = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function
|
|
240
|
+
_earliestSubfolder = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(parent) {
|
|
236
241
|
var suitable, kids;
|
|
237
|
-
return _regenerator["default"].wrap(function
|
|
238
|
-
while (1) switch (
|
|
242
|
+
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
243
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
239
244
|
case 0:
|
|
240
245
|
suitable = function _suitable2(x) {
|
|
241
246
|
var tail = x.uri.slice(0, -1).split('/').slice(-1)[0];
|
|
@@ -245,7 +250,7 @@ var DateFolder = exports.DateFolder = /*#__PURE__*/function () {
|
|
|
245
250
|
debug.log(' parent ' + parent);
|
|
246
251
|
delete folderFetcher.requested[parent.uri];
|
|
247
252
|
// try {
|
|
248
|
-
|
|
253
|
+
_context3.next = 5;
|
|
249
254
|
return folderFetcher.load(parent, {
|
|
250
255
|
force: true
|
|
251
256
|
});
|
|
@@ -256,19 +261,19 @@ var DateFolder = exports.DateFolder = /*#__PURE__*/function () {
|
|
|
256
261
|
kids = folderStore.each(parent, ns.ldp('contains'));
|
|
257
262
|
kids = kids.filter(suitable);
|
|
258
263
|
if (!(kids.length === 0)) {
|
|
259
|
-
|
|
264
|
+
_context3.next = 9;
|
|
260
265
|
break;
|
|
261
266
|
}
|
|
262
267
|
throw new Error(' @@@ No children to parent2 ' + parent);
|
|
263
268
|
case 9:
|
|
264
269
|
kids.sort();
|
|
265
270
|
if (backwards) kids.reverse();
|
|
266
|
-
return
|
|
271
|
+
return _context3.abrupt("return", kids[0]);
|
|
267
272
|
case 12:
|
|
268
273
|
case "end":
|
|
269
|
-
return
|
|
274
|
+
return _context3.stop();
|
|
270
275
|
}
|
|
271
|
-
},
|
|
276
|
+
}, _callee3);
|
|
272
277
|
}));
|
|
273
278
|
return _earliestSubfolder.apply(this, arguments);
|
|
274
279
|
};
|
|
@@ -278,25 +283,25 @@ var DateFolder = exports.DateFolder = /*#__PURE__*/function () {
|
|
|
278
283
|
// backwards -> last leafObject
|
|
279
284
|
folderStore = $rdf.graph();
|
|
280
285
|
folderFetcher = new $rdf.Fetcher(folderStore);
|
|
281
|
-
|
|
286
|
+
_context4.next = 6;
|
|
282
287
|
return earliestSubfolder(this.root.dir());
|
|
283
288
|
case 6:
|
|
284
|
-
y =
|
|
285
|
-
|
|
289
|
+
y = _context4.sent;
|
|
290
|
+
_context4.next = 9;
|
|
286
291
|
return earliestSubfolder(y);
|
|
287
292
|
case 9:
|
|
288
|
-
month =
|
|
289
|
-
|
|
293
|
+
month = _context4.sent;
|
|
294
|
+
_context4.next = 12;
|
|
290
295
|
return earliestSubfolder(month);
|
|
291
296
|
case 12:
|
|
292
|
-
d =
|
|
297
|
+
d = _context4.sent;
|
|
293
298
|
leafDocument = $rdf.sym(d.uri + 'chat.ttl');
|
|
294
|
-
|
|
299
|
+
_context4.next = 16;
|
|
295
300
|
return folderFetcher.load(leafDocument);
|
|
296
301
|
case 16:
|
|
297
302
|
leafObjects = folderStore.each(this.root, this.membershipProperty, null, leafDocument);
|
|
298
303
|
if (!(leafObjects.length === 0)) {
|
|
299
|
-
|
|
304
|
+
_context4.next = 21;
|
|
300
305
|
break;
|
|
301
306
|
}
|
|
302
307
|
msg = ' INCONSISTENCY -- no chat leafObject in file ' + leafDocument;
|
|
@@ -309,12 +314,12 @@ var DateFolder = exports.DateFolder = /*#__PURE__*/function () {
|
|
|
309
314
|
sortMe.sort();
|
|
310
315
|
if (backwards) sortMe.reverse();
|
|
311
316
|
debug.log((backwards ? 'Latest' : 'Earliest') + ' leafObject is ' + sortMe[0][1]);
|
|
312
|
-
return
|
|
317
|
+
return _context4.abrupt("return", sortMe[0][1]);
|
|
313
318
|
case 26:
|
|
314
319
|
case "end":
|
|
315
|
-
return
|
|
320
|
+
return _context4.stop();
|
|
316
321
|
}
|
|
317
|
-
},
|
|
322
|
+
}, _callee4, this);
|
|
318
323
|
}));
|
|
319
324
|
function firstLeaf(_x6) {
|
|
320
325
|
return _firstLeaf.apply(this, arguments);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dateFolder.js","names":["debug","_interopRequireWildcard","require","_solidLogic","ns","$rdf","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","_typeof","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","DateFolder","exports","rootThing","leafFileName","membershipProperty","_classCallCheck2","root","rootFolder","dir","wf","_createClass2","key","value","leafDocumentFromDate","date","isoDate","toISOString","path","split","replace","uri","store","sym","dateFromLeafDocument","doc","head","length","str","slice","Date","log","_loadPrevious","_asyncToGenerator2","_regenerator","mark","_callee3","backwards","thisDateFolder","previousPeriod","_previousPeriod","folder","found","wrap","_callee3$","_context3","prev","next","_previousPeriod3","_callee2","file","level","younger","suitable","lastNonEmpty","_lastNonEmpty","parent","siblings","_folder","uncle","cousins","result","_callee2$","_context2","_lastNonEmpty3","_callee","_folder2","leafDocument","_callee$","_context","filter","sort","reverse","abrupt","pop","fetcher","load","statementsMatching","dct","stop","apply","arguments","_lastNonEmpty2","_x5","_suitable","x","tail","includes","_younger","each","ldp","sent","t0","response","status","Error","concat","message","_previousPeriod2","_x3","_x4","loadPrevious","_x","_x2","_firstLeaf","_callee5","folderStore","folderFetcher","earliestSubfolder","_earliestSubfolder","y","month","d","leafObjects","msg","sortMe","_callee5$","_context5","_earliestSubfolder3","_callee4","kids","_callee4$","_context4","_suitable2","requested","force","_earliestSubfolder2","_x7","graph","Fetcher","trace","map","leafObject","any","firstLeaf","_x6"],"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 try {\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 } catch (err) {\n if (err.response && err.response.status && err.response.status === 404) {\n debug.log('Error 404 for chat parent file ' + parent)\n } else {\n debug.log('*** Error NON 404 for chat parent file ' + parent)\n // statusTR.appendChild(widgets.errorMessageBlock(dom, err, 'pink'))\n throw (new Error(`*** ${err.message} for chat folder ${parent}`))\n }\n }\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":["debug","_interopRequireWildcard","require","_solidLogic","ns","$rdf","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","_typeof","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","emptyLeaf","_x","_emptyLeaf","apply","arguments","_asyncToGenerator2","_regenerator","mark","_callee5","leafDocument","wrap","_callee5$","_context5","prev","next","store","fetcher","load","abrupt","statementsMatching","dct","length","stop","DateFolder","exports","rootThing","leafFileName","membershipProperty","_classCallCheck2","root","rootFolder","dir","wf","_createClass2","key","value","leafDocumentFromDate","date","isoDate","toISOString","path","split","replace","uri","sym","dateFromLeafDocument","doc","head","str","slice","Date","log","_loadPrevious","_callee2","backwards","previousPeriod","_previousPeriod","folder","found","nextDate","_callee2$","_context2","_previousPeriod3","_callee","file","level","younger","suitable","lastOrFirst","parent","siblings","_folder","uncle","cousins","result","_callee$","_context","_lastOrFirst","filter","sort","reverse","pop","_suitable","x","tail","includes","_younger","each","ldp","t0","response","status","Error","concat","message","sent","_previousPeriod2","_x4","_x5","loadPrevious","_x2","_x3","_firstLeaf","_callee4","folderStore","folderFetcher","earliestSubfolder","_earliestSubfolder","y","month","d","leafObjects","msg","sortMe","_callee4$","_context4","_earliestSubfolder3","_callee3","kids","_callee3$","_context3","_suitable2","requested","force","_earliestSubfolder2","_x7","graph","Fetcher","trace","map","leafObject","any","firstLeaf","_x6"],"sources":["../../src/chat/dateFolder.js"],"sourcesContent":["/**\n * Contains the [[DateFolder]] class\n * This tracks data stored in dated folders and sub-folders\n *\n */\nimport * as debug from '../debug'\nimport { store } from 'solid-logic'\nimport * as ns from '../ns'\nimport * as $rdf from 'rdflib' // pull in first avoid cross-refs\n\nexport async function emptyLeaf (leafDocument) {\n await store.fetcher.load(leafDocument)\n // files can have seealso links. skip ones with no leafObjects with a date\n return !(\n store.statementsMatching(null, ns.dct('created'), null, leafDocument)\n .length > 0\n )\n}\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 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 function lastOrFirst (siblings) {\n siblings = siblings.filter(suitable)\n siblings.sort() // chronological order\n if (!backwards) siblings.reverse()\n return siblings.pop() // date folder\n }\n // debug.log(' previousPeriod level' + level + ' file ' + file)\n const parent = file.dir()\n try {\n await store.fetcher.load(parent)\n let siblings = store.each(parent, ns.ldp('contains'))\n siblings = siblings.filter(younger)\n const folder = lastOrFirst(siblings)\n if (folder) return folder\n debug.log(' parent no suitable offspring ' + parent)\n } catch (err) {\n if (err.response && err.response.status && err.response.status === 404) {\n debug.log('Error 404 for chat parent file ' + parent)\n } else {\n debug.log('*** Error NON 404 for chat parent file ' + parent)\n // statusTR.appendChild(widgets.errorMessageBlock(dom, err, 'pink'))\n throw (new Error(`*** ${err.message} for chat folder ${parent}`))\n }\n }\n if (level === 0) {\n debug.log('loadPrevious: returning as level is zero')\n return null // 3:day, 2:month, 1: year 0: no\n }\n\n const uncle = await previousPeriod(parent, level - 1)\n if (!uncle) {\n debug.log(' previousPeriod: nothing left before. ', parent)\n return null // reached first ever\n }\n await store.fetcher.load(uncle)\n const cousins = store.each(uncle, ns.ldp('contains'))\n const result = lastOrFirst(cousins)\n debug.log(' previousPeriod: returning cousins at level ' + level, cousins)\n debug.log(' previousPeriod: returning result at level ' + level, result)\n\n return result\n } // previousPeriod\n\n let folder = this.leafDocumentFromDate(date).dir()\n while (true) {\n const found = await previousPeriod(folder, 3)\n if (found) {\n const leafDocument = store.sym(found.uri + this.leafFileName)\n const nextDate = this.dateFromLeafDocument(leafDocument)\n if (!await emptyLeaf(leafDocument)) {\n return nextDate\n } else {\n debug.log(' loadPrevious: skipping empty ' + leafDocument)\n date = nextDate\n folder = this.leafDocumentFromDate(date).dir()\n debug.log(' loadPrevious: moved back to ' + folder)\n }\n } else {\n return null // no more left\n }\n }\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":";;;;;;;;;;;;;AAKA,IAAAA,KAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,EAAA,GAAAH,uBAAA,CAAAC,OAAA;AACA,IAAAG,IAAA,GAAAJ,uBAAA,CAAAC,OAAA;AAA8B,SAAAI,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,yBAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAN,wBAAAM,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,gBAAAK,OAAA,CAAAL,CAAA,0BAAAA,CAAA,sBAAAA,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAc,CAAA,SAAAI,CAAA,GAAAR,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAI,CAAA,KAAAA,CAAA,CAAAX,GAAA,IAAAW,CAAA,CAAAC,GAAA,IAAAR,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAI,CAAA,IAAAV,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,cAAAR,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAgB,GAAA,CAAAnB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAR9B;AACA;AACA;AACA;AACA;AAI+B;AAAA,SAETY,SAASA,CAAAC,EAAA;EAAA,OAAAC,UAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAS/B;AACA;AACA;AAFA,SAAAF,WAAA;EAAAA,UAAA,OAAAG,kBAAA,2BAAAC,YAAA,YAAAC,IAAA,CATO,SAAAC,SAA0BC,YAAY;IAAA,OAAAH,YAAA,YAAAI,IAAA,UAAAC,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAAC,IAAA,GAAAD,SAAA,CAAAE,IAAA;QAAA;UAAAF,SAAA,CAAAE,IAAA;UAAA,OACrCC,iBAAK,CAACC,OAAO,CAACC,IAAI,CAACR,YAAY,CAAC;QAAA;UAAA,OAAAG,SAAA,CAAAM,MAAA,WAE/B,EACLH,iBAAK,CAACI,kBAAkB,CAAC,IAAI,EAAE1C,EAAE,CAAC2C,GAAG,CAAC,SAAS,CAAC,EAAE,IAAI,EAAEX,YAAY,CAAC,CAClEY,MAAM,GAAG,CAAC,CACd;QAAA;QAAA;UAAA,OAAAT,SAAA,CAAAU,IAAA;MAAA;IAAA,GAAAd,QAAA;EAAA,CACF;EAAA,OAAAN,UAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAAA,IAKYmB,UAAU,GAAAC,OAAA,CAAAD,UAAA;EACrB,SAAAA,WAAaE,SAAS,EAAEC,YAAY,EAAEC,kBAAkB,EAAE;IAAA,IAAAC,gBAAA,mBAAAL,UAAA;IACxD,IAAI,CAACM,IAAI,GAAGJ,SAAS;IACrB,IAAI,CAACK,UAAU,GAAGL,SAAS,CAACM,GAAG,CAAC,CAAC;IACjC,IAAI,CAACL,YAAY,GAAGA,YAAY,IAAI,WAAW,EAAC;IAChD,IAAI,CAACC,kBAAkB,GAAGA,kBAAkB,IAAIlD,EAAE,CAACuD,EAAE,CAAC,YAAY,CAAC;EACrE;;EAEA;AACF;AACA;EAFE,IAAAC,aAAA,aAAAV,UAAA;IAAAW,GAAA;IAAAC,KAAA,EAGA,SAAAC,qBAAsBC,IAAI,EAAE;MAC1B;MACA,IAAMC,OAAO,GAAGD,IAAI,CAACE,WAAW,CAAC,CAAC,EAAC;MACnC,IAAIC,IAAI,GAAGF,OAAO,CAACG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAACC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,EAAC;MACpDF,IAAI,GAAG,IAAI,CAACX,IAAI,CAACE,GAAG,CAAC,CAAC,CAACY,GAAG,GAAGH,IAAI,GAAG,GAAG,GAAG,IAAI,CAACd,YAAY;MAC3D,OAAOX,iBAAK,CAAC6B,GAAG,CAACJ,IAAI,CAAC;IACxB;;IAEA;AACF;EADE;IAAAN,GAAA;IAAAC,KAAA,EAEA,SAAAU,qBAAsBC,GAAG,EAAE;MACzB,IAAMC,IAAI,GAAG,IAAI,CAACjB,UAAU,CAACa,GAAG,CAACtB,MAAM;MACvC,IAAM2B,GAAG,GAAGF,GAAG,CAACH,GAAG,CAACM,KAAK,CAACF,IAAI,EAAEA,IAAI,GAAG,EAAE,CAAC,CAACL,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;MAC9D;MACA,IAAML,IAAI,GAAG,IAAIa,IAAI,CAACF,GAAG,CAAC,EAAC;MAC3B;MACA3E,KAAK,CAAC8E,GAAG,CAAC,WAAW,GAAGL,GAAG,GAAG,GAAG,GAAGT,IAAI,CAACE,WAAW,CAAC,CAAC,CAAC;MACvD,OAAOF,IAAI;IACb;EAAC;IAAAH,GAAA;IAAAC,KAAA;MAAA,IAAAiB,aAAA,OAAA/C,kBAAA,2BAAAC,YAAA,YAAAC,IAAA,CAED,SAAA8C,SAAoBhB,IAAI,EAAEiB,SAAS;QAAA,IAClBC,cAAc,EAAAC,eAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAjD,YAAA,EAAAkD,QAAA;QAAA,OAAArD,YAAA,YAAAI,IAAA,UAAAkD,UAAAC,SAAA;UAAA,kBAAAA,SAAA,CAAAhD,IAAA,GAAAgD,SAAA,CAAA/C,IAAA;YAAA;cAAA0C,eAAA,YAAAM,iBAAA;gBAAAN,eAAA,OAAAnD,kBAAA,2BAAAC,YAAA,YAAAC,IAAA,CAA7B,SAAAwD,QAA+BC,IAAI,EAAEC,KAAK;kBAAA,IAC/BC,OAAO,EAIPC,QAAQ,EASRC,WAAW,EAAAC,MAAA,EAAAC,QAAA,EAAAC,OAAA,EAAAC,KAAA,EAAAC,OAAA,EAAAC,MAAA;kBAAA,OAAApE,YAAA,YAAAI,IAAA,UAAAiE,SAAAC,QAAA;oBAAA,kBAAAA,QAAA,CAAA/D,IAAA,GAAA+D,QAAA,CAAA9D,IAAA;sBAAA;wBAAXsD,WAAW,YAAAS,aAAEP,QAAQ,EAAE;0BAC9BA,QAAQ,GAAGA,QAAQ,CAACQ,MAAM,CAACX,QAAQ,CAAC;0BACpCG,QAAQ,CAACS,IAAI,CAAC,CAAC,EAAC;0BAChB,IAAI,CAACzB,SAAS,EAAEgB,QAAQ,CAACU,OAAO,CAAC,CAAC;0BAClC,OAAOV,QAAQ,CAACW,GAAG,CAAC,CAAC,EAAC;wBACxB,CAAC;wBAdQd,QAAQ,YAAAe,UAAEC,CAAC,EAAE;0BACpB,IAAMC,IAAI,GAAGD,CAAC,CAACxC,GAAG,CACfM,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CACZR,KAAK,CAAC,GAAG,CAAC,CACVQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;0BACf,IAAI,CAAC,YAAY,CAACoC,QAAQ,CAACD,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK,EAAC;0BAClD,OAAO,IAAI;wBACb,CAAC;wBAXQlB,OAAO,YAAAoB,SAAEH,CAAC,EAAE;0BACnB,IAAI7B,SAAS,GAAG6B,CAAC,CAACxC,GAAG,IAAIqB,IAAI,CAACrB,GAAG,GAAGwC,CAAC,CAACxC,GAAG,IAAIqB,IAAI,CAACrB,GAAG,EAAE,OAAO,KAAK,EAAC;0BACpE,OAAO,IAAI;wBACb,CAAC;wBAgBD;wBACM0B,MAAM,GAAGL,IAAI,CAACjC,GAAG,CAAC,CAAC;wBAAA6C,QAAA,CAAA/D,IAAA;wBAAA+D,QAAA,CAAA9D,IAAA;wBAAA,OAEjBC,iBAAK,CAACC,OAAO,CAACC,IAAI,CAACoD,MAAM,CAAC;sBAAA;wBAC5BC,QAAQ,GAAGvD,iBAAK,CAACwE,IAAI,CAAClB,MAAM,EAAE5F,EAAE,CAAC+G,GAAG,CAAC,UAAU,CAAC,CAAC;wBACrDlB,QAAQ,GAAGA,QAAQ,CAACQ,MAAM,CAACZ,OAAO,CAAC;wBAC7BT,OAAM,GAAGW,WAAW,CAACE,QAAQ,CAAC;wBAAA,KAChCb,OAAM;0BAAAmB,QAAA,CAAA9D,IAAA;0BAAA;wBAAA;wBAAA,OAAA8D,QAAA,CAAA1D,MAAA,WAASuC,OAAM;sBAAA;wBACzBpF,KAAK,CAAC8E,GAAG,CAAC,gCAAgC,GAAGkB,MAAM,CAAC;wBAAAO,QAAA,CAAA9D,IAAA;wBAAA;sBAAA;wBAAA8D,QAAA,CAAA/D,IAAA;wBAAA+D,QAAA,CAAAa,EAAA,GAAAb,QAAA;wBAAA,MAEhDA,QAAA,CAAAa,EAAA,CAAIC,QAAQ,IAAId,QAAA,CAAAa,EAAA,CAAIC,QAAQ,CAACC,MAAM,IAAIf,QAAA,CAAAa,EAAA,CAAIC,QAAQ,CAACC,MAAM,KAAK,GAAG;0BAAAf,QAAA,CAAA9D,IAAA;0BAAA;wBAAA;wBACpEzC,KAAK,CAAC8E,GAAG,CAAC,iCAAiC,GAAGkB,MAAM,CAAC;wBAAAO,QAAA,CAAA9D,IAAA;wBAAA;sBAAA;wBAErDzC,KAAK,CAAC8E,GAAG,CAAC,yCAAyC,GAAGkB,MAAM,CAAC;wBAC7D;wBAAA,MACO,IAAIuB,KAAK,QAAAC,MAAA,CAAQjB,QAAA,CAAAa,EAAA,CAAIK,OAAO,uBAAAD,MAAA,CAAoBxB,MAAM,CAAE,CAAC;sBAAA;wBAAA,MAGhEJ,KAAK,KAAK,CAAC;0BAAAW,QAAA,CAAA9D,IAAA;0BAAA;wBAAA;wBACbzC,KAAK,CAAC8E,GAAG,CAAC,2CAA2C,CAAC;wBAAA,OAAAyB,QAAA,CAAA1D,MAAA,WAC/C,IAAI;sBAAA;wBAAA0D,QAAA,CAAA9D,IAAA;wBAAA,OAGOyC,cAAc,CAACc,MAAM,EAAEJ,KAAK,GAAG,CAAC,CAAC;sBAAA;wBAA/CO,KAAK,GAAAI,QAAA,CAAAmB,IAAA;wBAAA,IACNvB,KAAK;0BAAAI,QAAA,CAAA9D,IAAA;0BAAA;wBAAA;wBACRzC,KAAK,CAAC8E,GAAG,CAAC,0CAA0C,EAAEkB,MAAM,CAAC;wBAAA,OAAAO,QAAA,CAAA1D,MAAA,WACtD,IAAI;sBAAA;wBAAA0D,QAAA,CAAA9D,IAAA;wBAAA,OAEPC,iBAAK,CAACC,OAAO,CAACC,IAAI,CAACuD,KAAK,CAAC;sBAAA;wBACzBC,OAAO,GAAG1D,iBAAK,CAACwE,IAAI,CAACf,KAAK,EAAE/F,EAAE,CAAC+G,GAAG,CAAC,UAAU,CAAC,CAAC;wBAC/Cd,MAAM,GAAGN,WAAW,CAACK,OAAO,CAAC;wBACnCpG,KAAK,CAAC8E,GAAG,CAAC,gDAAgD,GAAGc,KAAK,EAAEQ,OAAO,CAAC;wBAC5EpG,KAAK,CAAC8E,GAAG,CAAC,+CAA+C,GAAGc,KAAK,EAAES,MAAM,CAAC;wBAAA,OAAAE,QAAA,CAAA1D,MAAA,WAEnEwD,MAAM;sBAAA;sBAAA;wBAAA,OAAAE,QAAA,CAAAtD,IAAA;oBAAA;kBAAA,GAAAyC,OAAA;gBAAA,CACd;gBAAA,OAAAP,eAAA,CAAArD,KAAA,OAAAC,SAAA;cAAA;cAvDcmD,cAAc,YAAAyC,iBAAAC,GAAA,EAAAC,GAAA;gBAAA,OAAA1C,eAAA,CAAArD,KAAA,OAAAC,SAAA;cAAA,GAuD3B;cAEEqD,MAAM,GAAG,IAAI,CAACrB,oBAAoB,CAACC,IAAI,CAAC,CAACN,GAAG,CAAC,CAAC;YAAA;cAAA,KAC3C,IAAI;gBAAA8B,SAAA,CAAA/C,IAAA;gBAAA;cAAA;cAAA+C,SAAA,CAAA/C,IAAA;cAAA,OACWyC,cAAc,CAACE,MAAM,EAAE,CAAC,CAAC;YAAA;cAAvCC,KAAK,GAAAG,SAAA,CAAAkC,IAAA;cAAA,KACPrC,KAAK;gBAAAG,SAAA,CAAA/C,IAAA;gBAAA;cAAA;cACDL,YAAY,GAAGM,iBAAK,CAAC6B,GAAG,CAACc,KAAK,CAACf,GAAG,GAAG,IAAI,CAACjB,YAAY,CAAC;cACvDiC,QAAQ,GAAG,IAAI,CAACd,oBAAoB,CAACpC,YAAY,CAAC;cAAAoD,SAAA,CAAA/C,IAAA;cAAA,OAC7Cd,SAAS,CAACS,YAAY,CAAC;YAAA;cAAA,IAAAoD,SAAA,CAAAkC,IAAA;gBAAAlC,SAAA,CAAA/C,IAAA;gBAAA;cAAA;cAAA,OAAA+C,SAAA,CAAA3C,MAAA,WACzByC,QAAQ;YAAA;cAEftF,KAAK,CAAC8E,GAAG,CAAC,iCAAiC,GAAG1C,YAAY,CAAC;cAC3D4B,IAAI,GAAGsB,QAAQ;cACfF,MAAM,GAAG,IAAI,CAACrB,oBAAoB,CAACC,IAAI,CAAC,CAACN,GAAG,CAAC,CAAC;cAC9C1D,KAAK,CAAC8E,GAAG,CAAC,kCAAkC,GAAGM,MAAM,CAAC;YAAA;cAAAI,SAAA,CAAA/C,IAAA;cAAA;YAAA;cAAA,OAAA+C,SAAA,CAAA3C,MAAA,WAGjD,IAAI;YAAA;cAAA2C,SAAA,CAAA/C,IAAA;cAAA;YAAA;YAAA;cAAA,OAAA+C,SAAA,CAAAvC,IAAA;UAAA;QAAA,GAAA+B,QAAA;MAAA,CAGhB;MAAA,SAAA8C,aAAAC,GAAA,EAAAC,GAAA;QAAA,OAAAjD,aAAA,CAAAjD,KAAA,OAAAC,SAAA;MAAA;MAAA,OAAA+F,YAAA;IAAA,IAAC;EAAA;IAAAjE,GAAA;IAAAC,KAAA;MAAA,IAAAmE,UAAA,OAAAjG,kBAAA,2BAAAC,YAAA,YAAAC,IAAA,CAEF,SAAAgG,SAAiBjD,SAAS;QAAA,IAAAkD,WAAA,EAAAC,aAAA,EAITC,iBAAiB,EAAAC,kBAAA,EAAAC,CAAA,EAAAC,KAAA,EAAAC,CAAA,EAAArG,YAAA,EAAAsG,WAAA,EAAAC,GAAA,EAAAC,MAAA;QAAA,OAAA3G,YAAA,YAAAI,IAAA,UAAAwG,UAAAC,SAAA;UAAA,kBAAAA,SAAA,CAAAtG,IAAA,GAAAsG,SAAA,CAAArG,IAAA;YAAA;cAAA6F,kBAAA,YAAAS,oBAAA;gBAAAT,kBAAA,OAAAtG,kBAAA,2BAAAC,YAAA,YAAAC,IAAA,CAAhC,SAAA8G,SAAkChD,MAAM;kBAAA,IAC7BF,QAAQ,EAAAmD,IAAA;kBAAA,OAAAhH,YAAA,YAAAI,IAAA,UAAA6G,UAAAC,SAAA;oBAAA,kBAAAA,SAAA,CAAA3G,IAAA,GAAA2G,SAAA,CAAA1G,IAAA;sBAAA;wBAARqD,QAAQ,YAAAsD,WAAEtC,CAAC,EAAE;0BACpB,IAAMC,IAAI,GAAGD,CAAC,CAACxC,GAAG,CACfM,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CACZR,KAAK,CAAC,GAAG,CAAC,CACVQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;0BACf,IAAI,CAAC,YAAY,CAACoC,QAAQ,CAACD,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK,EAAC;0BAClD,OAAO,IAAI;wBACb,CAAC;wBACD/G,KAAK,CAAC8E,GAAG,CAAC,qBAAqB,GAAGkB,MAAM,CAAC;wBACzC,OAAOoC,aAAa,CAACiB,SAAS,CAACrD,MAAM,CAAC1B,GAAG,CAAC;wBAC1C;wBAAA6E,SAAA,CAAA1G,IAAA;wBAAA,OACM2F,aAAa,CAACxF,IAAI,CAACoD,MAAM,EAAE;0BAAEsD,KAAK,EAAE;wBAAK,CAAC,CAAC;sBAAA;wBAAC;wBAClD;wBACA;wBAEIL,IAAI,GAAGd,WAAW,CAACjB,IAAI,CAAClB,MAAM,EAAE5F,EAAE,CAAC+G,GAAG,CAAC,UAAU,CAAC,CAAC;wBACvD8B,IAAI,GAAGA,IAAI,CAACxC,MAAM,CAACX,QAAQ,CAAC;wBAAA,MACxBmD,IAAI,CAACjG,MAAM,KAAK,CAAC;0BAAAmG,SAAA,CAAA1G,IAAA;0BAAA;wBAAA;wBAAA,MACb,IAAI8E,KAAK,CAAC,uCAAuC,GAAGvB,MAAM,CAAC;sBAAA;wBAGnEiD,IAAI,CAACvC,IAAI,CAAC,CAAC;wBACX,IAAIzB,SAAS,EAAEgE,IAAI,CAACtC,OAAO,CAAC,CAAC;wBAAA,OAAAwC,SAAA,CAAAtG,MAAA,WACtBoG,IAAI,CAAC,CAAC,CAAC;sBAAA;sBAAA;wBAAA,OAAAE,SAAA,CAAAlG,IAAA;oBAAA;kBAAA,GAAA+F,QAAA;gBAAA,CACf;gBAAA,OAAAV,kBAAA,CAAAxG,KAAA,OAAAC,SAAA;cAAA;cAzBcsG,iBAAiB,YAAAkB,oBAAAC,GAAA;gBAAA,OAAAlB,kBAAA,CAAAxG,KAAA,OAAAC,SAAA;cAAA;cAHhC;cACMoG,WAAW,GAAG9H,IAAI,CAACoJ,KAAK,CAAC,CAAC;cAC1BrB,aAAa,GAAG,IAAI/H,IAAI,CAACqJ,OAAO,CAACvB,WAAW,CAAC;cAAAW,SAAA,CAAArG,IAAA;cAAA,OA2BnC4F,iBAAiB,CAAC,IAAI,CAAC7E,IAAI,CAACE,GAAG,CAAC,CAAC,CAAC;YAAA;cAA5C6E,CAAC,GAAAO,SAAA,CAAApB,IAAA;cAAAoB,SAAA,CAAArG,IAAA;cAAA,OACa4F,iBAAiB,CAACE,CAAC,CAAC;YAAA;cAAlCC,KAAK,GAAAM,SAAA,CAAApB,IAAA;cAAAoB,SAAA,CAAArG,IAAA;cAAA,OACK4F,iBAAiB,CAACG,KAAK,CAAC;YAAA;cAAlCC,CAAC,GAAAK,SAAA,CAAApB,IAAA;cACDtF,YAAY,GAAG/B,IAAI,CAACkE,GAAG,CAACkE,CAAC,CAACnE,GAAG,GAAG,UAAU,CAAC;cAAAwE,SAAA,CAAArG,IAAA;cAAA,OAC3C2F,aAAa,CAACxF,IAAI,CAACR,YAAY,CAAC;YAAA;cAChCsG,WAAW,GAAGP,WAAW,CAACjB,IAAI,CAClC,IAAI,CAAC1D,IAAI,EACT,IAAI,CAACF,kBAAkB,EACvB,IAAI,EACJlB,YACF,CAAC;cAAA,MACGsG,WAAW,CAAC1F,MAAM,KAAK,CAAC;gBAAA8F,SAAA,CAAArG,IAAA;gBAAA;cAAA;cACpBkG,GAAG,GACP,gDAAgD,GAAGvG,YAAY;cACjEpC,KAAK,CAAC2J,KAAK,CAAChB,GAAG,CAAC;cAAA,MACV,IAAIpB,KAAK,CAACoB,GAAG,CAAC;YAAA;cAEhBC,MAAM,GAAGF,WAAW,CAACkB,GAAG,CAAC,UAAAC,UAAU;gBAAA,OAAI,CAC3C1B,WAAW,CAAC2B,GAAG,CAACD,UAAU,EAAEzJ,EAAE,CAAC2C,GAAG,CAAC,SAAS,CAAC,CAAC,EAC9C8G,UAAU,CACX;cAAA,EAAC;cACFjB,MAAM,CAAClC,IAAI,CAAC,CAAC;cACb,IAAIzB,SAAS,EAAE2D,MAAM,CAACjC,OAAO,CAAC,CAAC;cAC/B3G,KAAK,CAAC8E,GAAG,CACP,CAACG,SAAS,GAAG,QAAQ,GAAG,UAAU,IAAI,iBAAiB,GAAG2D,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CACvE,CAAC;cAAA,OAAAE,SAAA,CAAAjG,MAAA,WACM+F,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAAA;YAAA;cAAA,OAAAE,SAAA,CAAA7F,IAAA;UAAA;QAAA,GAAAiF,QAAA;MAAA,CACpB;MAAA,SAAA6B,UAAAC,GAAA;QAAA,OAAA/B,UAAA,CAAAnG,KAAA,OAAAC,SAAA;MAAA;MAAA,OAAAgI,SAAA;IAAA,IAAC;EAAA;EAAA,OAAA7G,UAAA;AAAA,KACF"}
|