mirror of
				https://github.com/flynx/pWiki.git
				synced 2025-11-04 04:50:09 +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,
 | 
						__proto__: basestore.MetaStore,
 | 
				
			||||||
	//*/
 | 
						//*/
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	next: { __proto__: basestore.BaseStore },
 | 
						next: { __proto__: basestore.MetaStore },
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
module.setup = 
 | 
					module.setup = 
 | 
				
			||||||
@ -62,6 +62,23 @@ Promise.all([
 | 
				
			|||||||
	store.update('@pouch', {
 | 
						store.update('@pouch', {
 | 
				
			||||||
		__proto__: pouchdbstore.PouchDBStore,
 | 
							__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
 | 
					// XXX
 | 
				
			||||||
//typeof(Bootstrap) != 'undefined'
 | 
					//typeof(Bootstrap) != 'undefined'
 | 
				
			||||||
 | 
				
			|||||||
@ -292,7 +292,7 @@ module.BaseStore = {
 | 
				
			|||||||
						return res }, new Set())]
 | 
											return res }, new Set())]
 | 
				
			||||||
			   .sortAs(order) }
 | 
								   .sortAs(order) }
 | 
				
			||||||
		// direct search...
 | 
							// direct search...
 | 
				
			||||||
		return this.find(path) },
 | 
							return this.find(path, strict) },
 | 
				
			||||||
	//
 | 
						//
 | 
				
			||||||
	// 	.resolve(<path>)
 | 
						// 	.resolve(<path>)
 | 
				
			||||||
	// 		-> <path>
 | 
						// 		-> <path>
 | 
				
			||||||
@ -360,11 +360,11 @@ module.BaseStore = {
 | 
				
			|||||||
					// NOTE: p can match a non existing page at this point, 
 | 
										// NOTE: p can match a non existing page at this point, 
 | 
				
			||||||
					// 		this can be the result of matching a/* in a a/b/c
 | 
										// 		this can be the result of matching a/* in a a/b/c
 | 
				
			||||||
					// 		and returning a a/b which can be undefined...
 | 
										// 		and returning a a/b which can be undefined...
 | 
				
			||||||
					return that.get(p) })
 | 
										return that.get(p, strict) })
 | 
				
			||||||
			: (await this.__get__(path) 
 | 
								: (await this.__get__(path) 
 | 
				
			||||||
				// XXX NEXT
 | 
									// XXX NEXT
 | 
				
			||||||
				?? ((this.next || {}).__get__ 
 | 
									?? ((this.next || {}).__get__ 
 | 
				
			||||||
					&& this.next.__get__(path))) },
 | 
										&& this.next.get(path, strict))) },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	//
 | 
						//
 | 
				
			||||||
	// 	Get metadata...
 | 
						// 	Get metadata...
 | 
				
			||||||
@ -390,7 +390,8 @@ module.BaseStore = {
 | 
				
			|||||||
		// get...
 | 
							// get...
 | 
				
			||||||
		path = await this.exists(path)
 | 
							path = await this.exists(path)
 | 
				
			||||||
		return path 
 | 
							return path 
 | 
				
			||||||
			&& await this.__get__(path) 
 | 
								&& (await this.__get__(path) 
 | 
				
			||||||
 | 
									?? await this.next.metadata(path))
 | 
				
			||||||
			|| undefined },
 | 
								|| undefined },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// NOTE: deleting and updating only applies to explicit matching 
 | 
						// NOTE: deleting and updating only applies to explicit matching 
 | 
				
			||||||
@ -523,6 +524,7 @@ module.BaseStore = {
 | 
				
			|||||||
// be handled by nested stores.
 | 
					// be handled by nested stores.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// XXX see inside...
 | 
				
			||||||
var metaProxy = 
 | 
					var metaProxy = 
 | 
				
			||||||
function(name, pre, post){
 | 
					function(name, pre, post){
 | 
				
			||||||
	var func = async function(path, ...args){
 | 
						var func = async function(path, ...args){
 | 
				
			||||||
@ -530,13 +532,15 @@ function(name, pre, post){
 | 
				
			|||||||
			await pre.call(this, path, ...args)
 | 
								await pre.call(this, path, ...args)
 | 
				
			||||||
			: path
 | 
								: path
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							var res
 | 
				
			||||||
		var p = this.substore(path)
 | 
							var p = this.substore(path)
 | 
				
			||||||
		if(p){
 | 
							if(p){
 | 
				
			||||||
 | 
								// XXX can this be strict in all cases???
 | 
				
			||||||
			var res = this.substores[p][name](
 | 
								var res = this.substores[p][name](
 | 
				
			||||||
				path.slice(path.indexOf(p)+p.length),
 | 
									path.slice(path.indexOf(p)+p.length),
 | 
				
			||||||
				...args) 
 | 
									...args) }
 | 
				
			||||||
		} else {
 | 
							res = res 
 | 
				
			||||||
			var res = object.parentCall(MetaStore[name], this, ...arguments) } 
 | 
								?? object.parentCall(MetaStore[name], this, ...arguments)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		return post ?
 | 
							return post ?
 | 
				
			||||||
			post.call(this, await res, path, ...args)
 | 
								post.call(this, await res, path, ...args)
 | 
				
			||||||
@ -632,14 +636,28 @@ module.MetaStore = {
 | 
				
			|||||||
		function(res, path){
 | 
							function(res, path){
 | 
				
			||||||
			var s = this.substore(path)
 | 
								var s = this.substore(path)
 | 
				
			||||||
			return res == false ?
 | 
								return res == false ?
 | 
				
			||||||
					res
 | 
										(this.next ?
 | 
				
			||||||
 | 
											this.next.exists(path)
 | 
				
			||||||
 | 
											: res)
 | 
				
			||||||
 | 
										//res
 | 
				
			||||||
				: s ?
 | 
									: s ?
 | 
				
			||||||
					pwpath.join(s, res)
 | 
										pwpath.join(s, res)
 | 
				
			||||||
				: res }), 
 | 
									: res }), 
 | 
				
			||||||
	get: metaProxy('get',
 | 
						get: async function(path, strict=false){
 | 
				
			||||||
		async function(path){
 | 
							path = await this.resolve(path) 
 | 
				
			||||||
			return 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'),
 | 
						metadata: metaProxy('metadata'),
 | 
				
			||||||
 | 
						// NOTE: we intentionally do not delegate to .next here...
 | 
				
			||||||
	update: async function(path, data, mode='update'){
 | 
						update: async function(path, data, mode='update'){
 | 
				
			||||||
		data = data instanceof Promise ?
 | 
							data = data instanceof Promise ?
 | 
				
			||||||
			await data
 | 
								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
 | 
					* XXX page search: make things invariant via .names
 | 
				
			||||||
* 			- if a page is in a system path and there are no alternatives 
 | 
					* 			- if a page is in a system path and there are no alternatives 
 | 
				
			||||||
* 				just return it and do not search.
 | 
					* 				just return it and do not search.
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user