mirror of
https://github.com/flynx/pWiki.git
synced 2025-11-02 12:00:10 +00:00
bugfixes, tweaks and cleanup...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
a0aace804c
commit
f94aef1360
19
browser.js
19
browser.js
@ -34,7 +34,7 @@ module.store = {
|
||||
__proto__: basestore.MetaStore,
|
||||
//*/
|
||||
|
||||
next: { __proto__: basestore.BaseStore },
|
||||
next: { __proto__: basestore.MetaStore },
|
||||
}
|
||||
|
||||
module.setup =
|
||||
@ -62,6 +62,23 @@ Promise.all([
|
||||
store.update('@pouch', {
|
||||
__proto__: pouchdbstore.PouchDBStore,
|
||||
}),
|
||||
|
||||
// next testing...
|
||||
store.next.update('NextPage', {
|
||||
text: 'next page...',
|
||||
}),
|
||||
store.next.update('Next', {
|
||||
__proto__: localstoragestore.localStorageStore,
|
||||
__prefix__: '--pwiki-next:',
|
||||
data: localStorage,
|
||||
}),
|
||||
store.next.update('Next/Test', {
|
||||
text: 'next test..'
|
||||
}),
|
||||
// XXX not sure of we need this to work...
|
||||
store.next.update('System/NextTest', {
|
||||
text: 'next test..'
|
||||
}),
|
||||
])
|
||||
// XXX
|
||||
//typeof(Bootstrap) != 'undefined'
|
||||
|
||||
@ -292,7 +292,7 @@ module.BaseStore = {
|
||||
return res }, new Set())]
|
||||
.sortAs(order) }
|
||||
// direct search...
|
||||
return this.find(path) },
|
||||
return this.find(path, strict) },
|
||||
//
|
||||
// .resolve(<path>)
|
||||
// -> <path>
|
||||
@ -360,11 +360,11 @@ module.BaseStore = {
|
||||
// NOTE: p can match a non existing page at this point,
|
||||
// this can be the result of matching a/* in a a/b/c
|
||||
// and returning a a/b which can be undefined...
|
||||
return that.get(p) })
|
||||
return that.get(p, strict) })
|
||||
: (await this.__get__(path)
|
||||
// XXX NEXT
|
||||
?? ((this.next || {}).__get__
|
||||
&& this.next.__get__(path))) },
|
||||
&& this.next.get(path, strict))) },
|
||||
|
||||
//
|
||||
// Get metadata...
|
||||
@ -390,7 +390,8 @@ module.BaseStore = {
|
||||
// get...
|
||||
path = await this.exists(path)
|
||||
return path
|
||||
&& await this.__get__(path)
|
||||
&& (await this.__get__(path)
|
||||
?? await this.next.metadata(path))
|
||||
|| undefined },
|
||||
|
||||
// NOTE: deleting and updating only applies to explicit matching
|
||||
@ -523,6 +524,7 @@ module.BaseStore = {
|
||||
// be handled by nested stores.
|
||||
//
|
||||
|
||||
// XXX see inside...
|
||||
var metaProxy =
|
||||
function(name, pre, post){
|
||||
var func = async function(path, ...args){
|
||||
@ -530,13 +532,15 @@ function(name, pre, post){
|
||||
await pre.call(this, path, ...args)
|
||||
: path
|
||||
|
||||
var res
|
||||
var p = this.substore(path)
|
||||
if(p){
|
||||
// XXX can this be strict in all cases???
|
||||
var res = this.substores[p][name](
|
||||
path.slice(path.indexOf(p)+p.length),
|
||||
...args)
|
||||
} else {
|
||||
var res = object.parentCall(MetaStore[name], this, ...arguments) }
|
||||
...args) }
|
||||
res = res
|
||||
?? object.parentCall(MetaStore[name], this, ...arguments)
|
||||
|
||||
return post ?
|
||||
post.call(this, await res, path, ...args)
|
||||
@ -632,14 +636,28 @@ module.MetaStore = {
|
||||
function(res, path){
|
||||
var s = this.substore(path)
|
||||
return res == false ?
|
||||
res
|
||||
(this.next ?
|
||||
this.next.exists(path)
|
||||
: res)
|
||||
//res
|
||||
: s ?
|
||||
pwpath.join(s, res)
|
||||
: res }),
|
||||
get: metaProxy('get',
|
||||
async function(path){
|
||||
return this.resolve(path) }),
|
||||
get: async function(path, strict=false){
|
||||
path = await this.resolve(path)
|
||||
var res
|
||||
var p = this.substore(path)
|
||||
if(p){
|
||||
res = await this.substores[p].get(
|
||||
path.slice(path.indexOf(p)+p.length),
|
||||
true) }
|
||||
return res
|
||||
?? object.parentCall(MetaStore.get, this, ...arguments) },
|
||||
// XXX can't reach .next on get but will cheerfully mess things up
|
||||
// on set (creating a local page)...
|
||||
// ...should copy and merge...
|
||||
metadata: metaProxy('metadata'),
|
||||
// NOTE: we intentionally do not delegate to .next here...
|
||||
update: async function(path, data, mode='update'){
|
||||
data = data instanceof Promise ?
|
||||
await data
|
||||
|
||||
11
pwiki2.js
11
pwiki2.js
@ -1,7 +1,16 @@
|
||||
/**********************************************************************
|
||||
*
|
||||
*
|
||||
* XXX BUG: .get(..) does not seem to resolve to <store>.next...
|
||||
* XXX Q: substore shadowing vs. mixing???
|
||||
* should a substore completely shadow a .next stuff or should the
|
||||
* layers mix???
|
||||
* ...currently it's a bit of both, listing gets both but opening
|
||||
* does not see the shadowed pages...
|
||||
* .get(..) -- DONE
|
||||
* .metadata(..) --
|
||||
* .delete(..)
|
||||
* ...
|
||||
* XXX this broke "strict"...
|
||||
* XXX page search: make things invariant via .names
|
||||
* - if a page is in a system path and there are no alternatives
|
||||
* just return it and do not search.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user