Quellcode durchsuchen

auto commit

app
jfinn vor 3 Jahren
Ursprung
Commit
ddb4ed8f8a
1 geänderte Dateien mit 325 neuen und 0 gelöschten Zeilen
  1. 325
    0
      mdev/dev_sto.native.js

+ 325
- 0
mdev/dev_sto.native.js Datei anzeigen

@@ -0,0 +1,325 @@
1
+
2
+var NS = {
3
+	// set_msg:"update_query"
4
+	UPDATE_QUERY:"set_msg",
5
+	// UPDATE_QUERY:"update_query",
6
+	JOIN_DB:"connect_jdb",
7
+	// JOIN_DB:"update_query",
8
+}
9
+function pfnf(o){
10
+	return  function(resolve, reject){
11
+		o.resolve=resolve
12
+		o.reject=reject
13
+		// clog(arguments)
14
+	}
15
+}
16
+
17
+
18
+class Proxy_Factory {
19
+
20
+	constructor(o,n="dflt",base_n="dflt",full_n="dflt-dflt",socket_name=""){
21
+		this.db = o
22
+		this.n = n
23
+		this.socket_name = socket_name
24
+		this.base_n = base_n
25
+		this.full_n = full_n
26
+
27
+		this.hidden_props = ["add_proxy","_set","walker","walker_start","prxy","_sett","_sett2"]
28
+		this._pub_cb =[]
29
+		this.__prx = true
30
+		this.SymPrx = Symbol("SymPrx")
31
+		clog("mx Proxy_Factory")
32
+
33
+
34
+		// clog("pfx",{o,n,that:this})
35
+	}
36
+
37
+
38
+	constructor_x(){
39
+		// o,n="dflt",base_n="dflt",full_n="dflt-dflt",socket_name=""
40
+		// this.constructor_m(...arguments)
41
+		clog("Proxy_Factory constructor")
42
+		Proxy_Factory.prototype.constructor_m.call(this,...arguments)
43
+	}
44
+			mx1(){
45
+		clog(("mx1: Proxy_Factory"))
46
+	}
47
+
48
+
49
+	init(o){
50
+		// dlog("BP",this,this.baseProp,this.__proto__.baseProp,window.baseProp)
51
+		// clog("pfx init",{o,that:this})
52
+		this.root = o
53
+	}
54
+	sync(o){
55
+		this.root = jc(o.root)
56
+		o._pub_cb.push(this._set_recv.bind(this))
57
+	}
58
+	get prxy(){
59
+		return this
60
+	}
61
+
62
+	_set(o,k,v,prx,a0){
63
+		this.obj[k]=prx
64
+	}
65
+
66
+	_sett(o,k,v,prx,a0){
67
+		dlog("_SETT",this,arguments)
68
+	}
69
+	_sett2(o,k,v,prx,a0){
70
+		dlog("_SETT2",this,arguments)
71
+	}
72
+
73
+	set_pub(obj, prop, val,receiver){
74
+		// dlog("qia_pub",obj, prop, val,receiver)
75
+		// dlog("qia_pub2",this.n,obj.__path_arr, prop, jx(val))
76
+		this._set_pub(obj.__path_arr, prop, jx(val))
77
+
78
+	}
79
+	// dev_glob.fns.tmp_send
80
+
81
+	_connect_db(){
82
+			/*
83
+		dev_glob.fns.tmp_send({
84
+				"key":"connect_jdb",
85
+				// ,
86
+				init_obj:this.db,
87
+				"payload":{},
88
+				db_id:this.db_conn.db_id,
89
+		},this.socket_name)
90
+		//	*/
91
+			this._wssto_send({
92
+				// "key":"connect_jdb",
93
+				"key":NS.JOIN_DB,
94
+				// ,
95
+				tx:["abc",,2],
96
+				init_obj:this.db,
97
+				"payload":{},
98
+			})
99
+	}
100
+
101
+
102
+	get db_conn(){
103
+		return {db_id:{n:this.n,base_n:this.base_n,full_n:this.full_n},socket_name:this.socket_name}
104
+	}
105
+	// _req_sync(){}
106
+	_wssto_send(o){
107
+		clog("wssto: m0")
108
+		if (!o.wssto_key){
109
+			o.wssto_key = o.key
110
+			o.key = "wssto"
111
+		}
112
+		// o.key = "_wssto_" + o.key
113
+		this.send(o)
114
+	}
115
+	send(o){
116
+		dev_glob.fns.tmp_send({
117
+				db_id:this.db_conn.db_id,
118
+				...o,
119
+				},this.socket_name)
120
+	}
121
+	send_raw(){
122
+		clog("DBQ")
123
+	}
124
+
125
+	_set_pub(path,key,val){
126
+		var k,v
127
+
128
+		clog("dev_sto","_set_pub")
129
+					 /*
130
+			tmsgx({
131
+				"type":"set_msg",
132
+				"payload":{path,key,val},
133
+			},"code")
134
+			//		*/
135
+			//
136
+			this._wssto_send({
137
+				// "type":"set_msg",
138
+				"type":NS.UPDATE_QUERY,
139
+				"key":NS.UPDATE_QUERY,
140
+				"payload":{path,key,val},
141
+			})
142
+			/*
143
+			dev_glob.fns.tmp_send({
144
+
145
+			// tmsgx3({
146
+			// })
147
+				"type":"set_msg",
148
+				"key":"set_msg",
149
+				db_id:this.db_conn.db_id,
150
+				// "payload":{path,key,val,db_id:{n:this.n,base_n:this.base_n}},},this.socket_name
151
+				"payload":{path,key,val},},this.socket_name
152
+				// window.tmsgx_to || {}
153
+			// {to:"nl4qbyiz61z-mce1@specplot.com/FlUkwrLs"},
154
+			// {to:"maf@conference.i.specplot.com/0695c1e4"},
155
+			// {},
156
+			)
157
+			*/
158
+		for (v of this._pub_cb){
159
+			v(path,key,val)
160
+
161
+		}
162
+	}
163
+
164
+	_set_recv(path,prop,val){
165
+		// return
166
+		var p = path
167
+		var nprop = deep_prop_v0(this.root,p)
168
+		clog("_set_recv:",nprop)
169
+		var dpth = nprop.__dpth
170
+		if (tlu[typeof(val)]){
171
+		nprop._set(nprop,prop,val,val)
172
+		} else {
173
+		nprop._set(nprop,prop,val,new Proxy(val,this))
174
+		nprop[prop].add_proxy(nprop,prop,val,dpth+1)
175
+		}
176
+		// var tf = {}
177
+		// this.walker(nprop[prop],tf,dpth+2)
178
+		this.walker(nprop[prop],{},dpth+2)
179
+	}
180
+
181
+	set(obj, prop, val,receiver){
182
+		// dlog("prx_db set ",this,obj, prop, val,receiver,val.__prx)
183
+		// clog("prx_db set ",{that:this,obj, prop, val,receiver},val.__prx)
184
+		// clog("prx_db set ",obj.__path_arr)
185
+		if (obj[prop] === val){
186
+			return Reflect.set(...arguments)
187
+		}
188
+
189
+		this.set_pub(obj, prop, val,receiver)
190
+		this.event_proc("set")
191
+
192
+		if ("__prx" == prop){
193
+			this.__prx=val
194
+			return this.__prx
195
+		}
196
+
197
+		if (typeof(val) === "object" && val != null && !(val.__prx)){
198
+			var ret = Reflect.set(...arguments)
199
+			this.set_obj(obj, prop, val,receiver)
200
+			return ret
201
+		}
202
+
203
+		return Reflect.set(...arguments)
204
+	}
205
+	get(obj, prop,receiver){
206
+		// dlog("prx_db get ...",prop==isProxy,this,obj, prop,receiver)
207
+		if (this.hidden_props.includes(prop)){
208
+			switch (prop){
209
+				case "add_proxy":
210
+				return this.add_proxy.bind(this)
211
+			break;
212
+				case "prxy":
213
+				return this
214
+				case "_set":
215
+				// dlog("_SET")
216
+				// return this._set.bind({this})
217
+				return this._set.bind({that:this,obj, prop,receiver})
218
+				case "_sett":
219
+				return this._sett.bind({that:this,obj, prop,receiver})
220
+				case "_sett2":
221
+				return this._sett2.bind({that:this})
222
+				case "walker_start":
223
+				return this.walker_start
224
+				case "walker":
225
+				return this.walker
226
+			break;
227
+			}
228
+		}
229
+
230
+		if (isProxy == prop){ return true }
231
+		if ("__prx" == prop){ return this.__prx }
232
+
233
+		return Reflect.get(...arguments)
234
+	}
235
+	add_proxy(o,k,v,dpth){
236
+		// clog("~add_proxy~",o,k,v,dpth)
237
+		// clog("~add_proxy~",o.__prx,o,k,v,dpth,xpath)
238
+		var xpath = o.__path
239
+		var apath = o.__path_arr
240
+		this.event_proc("add_proxy")
241
+		if (!apath){
242
+			apath=[]
243
+		}
244
+
245
+		if (!xpath){
246
+			xpath="ROOT!"
247
+		}
248
+
249
+		Object.defineProperty(v,"__path_arr",Object.assign({value:apath.concat(k),},this.baseProp))
250
+		Object.defineProperty(v,"__path",Object.assign({value:xpath+":"+k,},this.baseProp))
251
+		Object.defineProperty(v,"__dpth",Object.assign({value:dpth,},this.baseProp))
252
+		// Object.defineProperty(v,"__dbg",Object.assign({value:{},},this.baseProp))
253
+
254
+	}
255
+	set_obj(obj, prop, val,receiver){
256
+		var dpth = obj.__dpth
257
+		var tf = {}
258
+		this.walker(receiver,tf,dpth)
259
+	}
260
+
261
+	walker(o,tfo,dpth=0){
262
+		// dlog("qia WALK",this)
263
+		if (dpth > 7){
264
+			console.error("MAX DEPTH")
265
+			return
266
+		}
267
+		var k,v
268
+		var tf
269
+			for ([k,v] of Object.entries(o)){
270
+				tf = type_info(v)
271
+				if (tf.deep_not_prx){
272
+					o._set(o,k,v,new Proxy(v,this.prxy))
273
+					o[k].add_proxy(o,k,v,dpth)
274
+				this.walker(o[k],tf,dpth+1)
275
+				}
276
+			}
277
+	}
278
+	walker_start(o,dpth){
279
+		var tf = type_info(o)
280
+		o.add_proxy({},[],o,-1)
281
+		this.walker(o,tf,0)
282
+	}
283
+	event_proc(e){}
284
+}
285
+
286
+	class Proxy_Permissions extends Proxy_Factory {
287
+		// constructor_m(a,a1){
288
+		constructor(a,a1){
289
+			clog("mx Proxy_Permissions")
290
+			super(...arguments)
291
+		}
292
+	constructor_x(){
293
+		// o,n="dflt",base_n="dflt",full_n="dflt-dflt",socket_name=""
294
+			super.constructor_x(...arguments)
295
+		this.constructor_m(...arguments)
296
+		// Proxy_Permissions.prototype.constructor_m.call(this,...arguments)
297
+		// this.prototype.constructor_m.call(this,...arguments)
298
+	}
299
+		mx1(){
300
+		clog(("mx1: Proxy_Permissions"))
301
+	}
302
+
303
+
304
+		set(obj, prop, val,receiver){
305
+			// clog("PRX_PERM",obj.__path_arr,prop)
306
+			var k,v
307
+			var r
308
+			var matched
309
+			var fp = obj.__path_arr.concat(prop)
310
+			for ([k,v] of Object.entries(permissions_def)){
311
+				matched = arr_match(v.m,fp)
312
+				if (matched){
313
+					r = v.fn({that:this,obj, prop, val,receiver},{fp,k,v}) || {}
314
+				}
315
+				// if (r.return)
316
+			}
317
+			// case
318
+			// if (obj.__path_arr && obj.__path_arr.length){}
319
+			return super.set(obj, prop, val,receiver)
320
+		}
321
+		_set(){
322
+			// clog("Proxy_Permissions _set")
323
+			super._set(...arguments)
324
+		}
325
+	}

Laden…
Abbrechen
Speichern