123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323 |
-
-
-
-
-
- function* keyVal(obj){
- for (let en in obj){
- yield [en,obj[en]]
- }
- }
-
- function* keyVal2(obj){
- let ctr = 0
- for (let en in obj){
- yield [ctr++,en,obj[en]]
- }
- }
-
- _deep_walk = {}
- _deep_walk.mx_ = 15000
- _deep_walk.mx_depth = 8
- // _deep_walk.mx_depth = 6
- _deep_walk.cnt = 0
- _deep_walk.depth = 0
- _deep_walk.skip_walk = 1
- _deep_walk.k = new Set()
- _deep_walk.stops = new Set()
-
- _deep_walk.m = new Map()
-
- _deep_walk_dflt = {
- path:[],
- paths:[],
- names:[],
- }
-
- // kvt(APP.store.getState())
-
-
- function kvt(o,path=[],d=0) {
- // clog(":",d,path.join("."))
- _deep_walk.st ? clog(d,path.join(".")) :1
-
- if (o.skip_walk){
- clog("skip_walk",d ,_deep_walk.cnt)
- _deep_walk.st = 1
- return
- } else if(_deep_walk.cnt > _deep_walk.mx_) {
- clog("_deep_walk.cnt > _deep_walk.mx_")
- return
- } else if (d > _deep_walk.mx_depth){
- clog("d > _deep_walk.mx_depth",_deep_walk.cnt,d)
- return
- }
- // _deep_walk.cnt += 1
-
- var k,v
- var new_obj
- var ometa
- var breadth_first = []
- for ([k,v] of keyVal(o)){
- _deep_walk.cnt += 1
- // clog("cntx",_deep_walk.cnt)
- if(_deep_walk.cnt > _deep_walk.mx_) {
- clog("_deep_walk.cnt > _deep_walk.mx_ 1")
- return
- }
- if (k.includes("handler")){
- clog(d,_deep_walk.cnt,[...path,k].join("."))
- }
- // clog(_deep_walk.cnt,k)
-
- // if (typeof(v) != "object" && typeof(v) != "function"){
-
-
-
- /*
-
- if (typeof(v) != "object" || ( v && v.nodeName)){
- // _deep_walk.k.add(typeof(v) === undefined ? "_undefined" : typeof(v) )
- _deep_walk.stops.add( typeof(v) )
-
- // return
- continue
- }
- */
-
-
-
-
-
-
-
-
- // _deep_walk.cnt += 1
- // new_obj = _deep_walk.m.has(o)
- new_obj = _deep_walk.m.setD(v,jc(_deep_walk_dflt))
- ometa = _deep_walk.m.get(v)
- ometa.names.push(k)
- ometa.paths.push([...path,k])
-
- _deep_walk.k.add(k === undefined ? "_undefined" : k )
-
-
- if (typeof(v) != "object" || ( v && v.nodeName)){
- // _deep_walk.k.add(typeof(v) === undefined ? "_undefined" : typeof(v) )
- _deep_walk.stops.add( typeof(v) )
-
- // return
- continue
- }
-
-
-
-
- if (new_obj && typeof(v) == "object" && v){
- breadth_first.push(k)
-
- // kvt(v,[...path,k],d+1)
- }
-
- }
- for ([k,v] of keyVal(o)){
- // clog("cntx2",_deep_walk.cnt)
- if(_deep_walk.cnt > _deep_walk.mx_) {
- clog("_deep_walk.cnt > _deep_walk.mx_ 2")
- return
- }
-
- if (breadth_first.includes(k)){
- kvt(v,[...path,k],d+1)
-
- }
-
- }
-
-
- if (!d){
- clog("FIN!")
- }
-
- }
-
-
-
-
-
- function kvt00(o,path=[],d=0) {
- // clog(":",d,path.join("."))
- _deep_walk.st ? clog(d,path.join(".")) :1
-
- if (o.skip_walk){
- clog("skip_walk",d ,_deep_walk.cnt)
- _deep_walk.st = 1
- return
- } else if(_deep_walk.cnt > _deep_walk.mx_) {
- clog("_deep_walk.cnt > _deep_walk.mx_")
- return
- } else if (d > _deep_walk.mx_depth){
- clog("d > _deep_walk.mx_depth")
- return
- }
- // _deep_walk.cnt += 1
-
- var k,v
- var new_obj
- var ometa
- var breadth_first = []
- for ([k,v] of keyVal(o)){
- _deep_walk.cnt += 1
- clog("cntx",_deep_walk.cnt)
- if(_deep_walk.cnt > _deep_walk.mx_) {
- clog("_deep_walk.cnt > _deep_walk.mx_ 1")
- return
- }
- if (k.includes("handler")){
- clog(d,_deep_walk.cnt,[...path,k].join("."))
- }
- // clog(_deep_walk.cnt,k)
-
- // if (typeof(v) != "object" && typeof(v) != "function"){
- if (typeof(v) != "object" || ( v && v.nodeName)){
- // _deep_walk.k.add(typeof(v) === undefined ? "_undefined" : typeof(v) )
- _deep_walk.stops.add( typeof(v) )
-
- // return
- continue
- }
- // _deep_walk.cnt += 1
- // new_obj = _deep_walk.m.has(o)
- new_obj = _deep_walk.m.setD(v,jc(_deep_walk_dflt))
- ometa = _deep_walk.m.get(v)
- ometa.names.push(k)
- ometa.paths.push([...path,k])
-
- _deep_walk.k.add(k === undefined ? "_undefined" : k )
- if (new_obj && typeof(v) == "object" && v){
- breadth_first.push(k)
-
- // kvt(v,[...path,k],d+1)
- }
-
- }
- for ([k,v] of keyVal(o)){
- clog("cntx2",_deep_walk.cnt)
- if(_deep_walk.cnt > _deep_walk.mx_) {
- clog("_deep_walk.cnt > _deep_walk.mx_ 2")
- return
- }
-
- if (breadth_first.includes(k)){
- kvt(v,[...path,k],d+1)
-
- }
-
- }
-
-
- if (!d){
- clog("FIN!")
- }
-
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- function kvt0(o,path=[],d=0) {
- // clog(":",d,path.join("."))
-
- if (o.skip_walk){
- clog("skip_walk")
- return
- } else if(_deep_walk.cnt > _deep_walk.mx_) {
- clog("_deep_walk.cnt > _deep_walk.mx_")
- return
- } else if (d > _deep_walk.mx_depth){
- clog("d > _deep_walk.mx_depth")
- return
- }
- // _deep_walk.cnt += 1
-
- var k,v
- var new_obj
- var ometa
- // var
- for ([k,v] of keyVal(o)){
- if (k.includes("handler")){
- clog(d,_deep_walk.cnt,[...path,k].join("."))
- }
- // clog(_deep_walk.cnt,k)
-
- // if (typeof(v) != "object" && typeof(v) != "function"){
- if (typeof(v) != "object" || ( v && v.nodeName)){
- // _deep_walk.k.add(typeof(v) === undefined ? "_undefined" : typeof(v) )
- _deep_walk.stops.add( typeof(v) )
-
- // return
- continue
- }
- _deep_walk.cnt += 1
- // new_obj = _deep_walk.m.has(o)
- new_obj = _deep_walk.m.setD(v,jc(_deep_walk_dflt))
- ometa = _deep_walk.m.get(v)
- ometa.names.push(k)
- ometa.paths.push([...path,k])
-
- _deep_walk.k.add(k === undefined ? "_undefined" : k )
- if (new_obj && typeof(v) == "object" && v){
-
- kvt0(v,[...path,k],d+1)
- }
-
- }
- if (!d){
- clog("FIN!")
- }
-
- }
-
-
-
-
-
-
-
-
-
-
- function lmap(m){
- var k,v
- var cnt
- var cnt_mx
- cnt_mx = 6000
- var ret = {
- types:new Set(),
- }
- cnt = 0
- for ([k,v] of m){
- cnt += 1
- // clog(cnt,k,v)
- ret.types.add(typeof(k))
- if (cnt > cnt_mx){
- clog("RET")
-
- return
- }
- }
- ret.cnt = cnt
- ret.cnt_mx = cnt_mx
- // clog()
- return ret
- }
|