@froomle/frontend-sdk 0.0.1-alpha.0

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.
@@ -0,0 +1,139 @@
1
+ /**
2
+ * Auto-generated version file. Do not edit manually.
3
+ */
4
+ declare class Version {
5
+ static CURRENT: string
6
+ }
7
+
8
+ declare interface Recommendations {
9
+ request_id: string
10
+ user_group: string
11
+ user_id: string
12
+ device_id: string
13
+ lists(): RecommendationList[]
14
+ }
15
+
16
+ declare interface RecommendationList {
17
+ limit: number
18
+ list_key: string
19
+ list_name: string
20
+ list_size: number
21
+ items: RecommendationItem[]
22
+ }
23
+
24
+ declare interface RecommendationItem {
25
+ get(key: string): any
26
+ Id: string
27
+ RequestId: string
28
+ UserGroup: string
29
+ }
30
+
31
+ declare class SimpleFuture<T> {
32
+ constructor()
33
+ protected _callback: (arg0: T) => void
34
+ protected _result: null | T
35
+ protected _isFinished: boolean
36
+ trigger(data: T): void
37
+ then(callback: ((arg0: T) => void)): void
38
+ }
39
+
40
+ declare class RecoBackendV2 {
41
+ constructor()
42
+ protected static _environment: null | string
43
+ protected static _device_id: null | string
44
+ protected static _user_id: null | string
45
+ protected static _consent: number
46
+ protected static _req_domain: string
47
+ protected static _page_visit: null | string
48
+ protected static _page_view: null | string
49
+ protected static _requestUri(): string
50
+ protected static noConsentBody(): any
51
+ protected static buildRequestBody(lists: {
52
+ limit: number,
53
+ list_name: string,
54
+ list_size: number
55
+ }[]): any
56
+ protected static _requestRecos(lists: {
57
+ limit: number,
58
+ list_name: string,
59
+ list_size: number
60
+ }[]): SimpleFuture<Recommendations>
61
+ static getRawRecommendations(lists: {
62
+ limit: number,
63
+ list_name: string,
64
+ list_size: number
65
+ }[]): SimpleFuture<Recommendations>
66
+ static setConsent(consent: number): void
67
+ static setPageVisit(page: string): void
68
+ static setEnvironment(env: string): void
69
+ static setDeviceId(id: string): void
70
+ static setUserId(id: string): void
71
+ static setRequestDomain(domain: string): void
72
+ static setPageView(page: string): void
73
+ static getRequestDomain(): string
74
+ static getEnvironment(): null | string
75
+ static getPageVisit(): null | string
76
+ static getUserId(): null | string
77
+ static getDeviceId(): null | string
78
+ static getPageView(): null | string
79
+ }
80
+
81
+ declare class FroomleSdk {
82
+ protected static _env_set: boolean
83
+ protected static _page_visit_set: boolean
84
+ protected static _page_view_set: boolean
85
+ protected static registered: boolean
86
+ protected static register(): void
87
+ static setEnvironment(env: string): void
88
+ static setDeviceId(id: string): void
89
+ static setUserId(id: string): void
90
+ static setConsent(consent: number): void
91
+ static setPageView(page: string): void
92
+ static setPageVisit(page: string): void
93
+ static setRequestDomain(domain: string): void
94
+ static getRawRecommendations(lists: {
95
+ limit: number,
96
+ list_name: string,
97
+ list_size: number
98
+ }[]): SimpleFuture<Recommendations>
99
+ static getVersion(): string
100
+ }
101
+
102
+ declare class FroomleDomTree {
103
+ constructor()
104
+ protected root: any
105
+ createElement(tag: string): any
106
+ querySelectorAll(selector: string): any[]
107
+ getRoot(): any
108
+ toString(): string
109
+ static run(): void
110
+ static fromHtml(html: string): FroomleDomTree
111
+ static fromDocument(): FroomleDomTree
112
+ }
113
+
114
+ declare class DomDomDom {
115
+ constructor()
116
+ protected static currentItems: string[]
117
+ protected static _fillRecoTargets(parent: any): SimpleFuture<boolean>
118
+ protected static _fillParameters(element: any, reco: RecommendationItem, requestId: string): void
119
+ protected static _orderElements(tree: FroomleDomTree): SimpleFuture<boolean>
120
+ static domInit(tree?: null | FroomleDomTree): void
121
+ static fillElementRecos(el: HTMLElement): void
122
+ static runFromHtml(input: string): string
123
+ }
124
+
125
+ declare const setFroomleUserId: typeof FroomleSdk.setUserId;
126
+ declare const getFroomleUserId: typeof RecoBackendV2.getUserId;
127
+ declare const setFroomleEnvironment: typeof FroomleSdk.setEnvironment;
128
+ declare const getFroomleEnvironment: typeof RecoBackendV2.getEnvironment;
129
+ declare function getRecommendationItem(): Promise<never>;
130
+ declare function preloadRecommendations(): Promise<void>;
131
+ declare function getRecommendations(): Promise<never[]>;
132
+ declare function _getRecoQueue(): never[];
133
+ declare function _getAllItemsFromCache(): never[];
134
+ declare function _getRecommendedItemsCache(): never[];
135
+ declare function _getRawRecommendationCache(): never[];
136
+ declare function reset(): Promise<void>;
137
+ declare function weirdReco(): void;
138
+
139
+ export { DomDomDom, FroomleDomTree, FroomleSdk, RecoBackendV2, type RecommendationItem, type RecommendationList, type Recommendations, Version, _getAllItemsFromCache, _getRawRecommendationCache, _getRecoQueue, _getRecommendedItemsCache, getFroomleEnvironment, getFroomleUserId, getRecommendationItem, getRecommendations, preloadRecommendations, reset, setFroomleEnvironment, setFroomleUserId, weirdReco };
@@ -0,0 +1,6 @@
1
+ var s=class E{static global(e){return E.globals[e]?E.globals[e]:E.globals[e]={}}static createStatic(e,t,r){let l=null;Object.defineProperty(e,t,{enumerable:!0,get:function(){return r!=null&&(l=r(),r=null),l},set:function(n){r!=null&&(l=r(),r=null),l=n}})}static iterator(e){if(Array.isArray(e)){let t=e;return function(){return E.mkIter(t)}}else return typeof e.iterator=="function"?e.iterator.bind(e):e.iterator}static getIterator(e){return Array.isArray(e)?E.mkIter(e):e.iterator()}static mkIter(e){return new he(e)}static extend(e){function t(){this[E.new].apply(this,arguments)}return Object.setPrototypeOf(t.prototype,e.prototype),t}static inherits(e,t){t==null&&(t=!1);function r(){t&&e&&r[E.init]&&r[E.init](),this[E.new].apply(this,arguments)}return t?r[E.init]=()=>{let l=e();l[E.init]&&l[E.init](),Object.setPrototypeOf(r.prototype,l.prototype),r[E.init]=void 0}:e&&e[E.init]?(t=!0,r[E.init]=()=>{e[E.init]&&e[E.init](),Object.setPrototypeOf(r.prototype,e.prototype),r[E.init]=void 0}):e&&Object.setPrototypeOf(r.prototype,e.prototype),r}static bind(e,t){if(t==null)return null;t.__id__==null&&(t.__id__=E.fid++);let r=null;return e.hx__closures__==null?e.hx__closures__={}:r=e.hx__closures__[t.__id__],r==null&&(r=t.bind(e),e.hx__closures__[t.__id__]=r),r}static get __name__(){return"genes.Register"}get __class__(){return E}};s.$global=typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:void 0;s.globals={};s.new=Symbol();s.init=Symbol();s.fid=0;var he=s.global("$hxClasses")["genes._Register.ArrayIterator"]=class $e extends s.inherits(){[s.new](e){this.current=0,this.array=e}hasNext(){return this.current<this.array.length}next(){return this.array[this.current++]}static get __name__(){return"genes._Register.ArrayIterator"}get __class__(){return $e}};he.prototype.array=null;he.prototype.current=null;var We=s.$global,Ee=s.global("$hxClasses").Version=class Ie{static get __name__(){return"Version"}get __class__(){return Ie}};Ee.CURRENT="0.0.1";var Ze=s.$global,le=function(){};le.__isInterface__=!0;var ne=function(){};ne.__isInterface__=!0;var ie=function(){};ie.__isInterface__=!0;var st=s.$global,oe=s.global("$hxClasses")["haxe.ValueException"]=class ke extends s.inherits(()=>C,!0){[s.new](e,t,r){super[s.new](String(e),t,r),this.value=e}unwrap(){return this.value}static get __name__(){return"haxe.ValueException"}static get __super__(){return C}get __class__(){return ke}};oe.prototype.value=null;var ot=s.$global,C=s.global("$hxClasses")["haxe.Exception"]=class Z extends s.inherits(()=>Error,!0){[s.new](e,t,r){Error.call(this,e),this.message=e,this.__previousException=t,this.__nativeException=r!=null?r:this}unwrap(){return this.__nativeException}get_native(){return this.__nativeException}static caught(e){return e instanceof Z?e:e instanceof Error?new Z(e.message,null,e):new oe(e,null,e)}static thrown(e){return e instanceof Z?e.get_native():e instanceof Error?e:new oe(e)}static get __name__(){return"haxe.Exception"}static get __super__(){return Error}get __class__(){return Z}};C.prototype.native=null;C.prototype.__skipStack=null;C.prototype.__nativeException=null;C.prototype.__previousException=null;var ct=s.$global,de=s.global("$hxClasses")["js.Browser"]=class Se{static get supported(){return this.get_supported()}static get_supported(){return typeof window!="undefined"&&typeof window.location!="undefined"?typeof window.location.protocol=="string":!1}static createXMLHttpRequest(){if(typeof XMLHttpRequest!="undefined")return new XMLHttpRequest;if(typeof ActiveXObject!="undefined")return new"ActiveXObject"("Microsoft.XMLHTTP");throw C.thrown("Unable to create XMLHttpRequest object.")}static get __name__(){return"js.Browser"}get __class__(){return Se}};var pt=s.$global,A=s.global("$hxEnums")["haxe.io.Error"]={__ename__:"haxe.io.Error",Blocked:{_hx_name:"Blocked",_hx_index:0,__enum__:"haxe.io.Error"},Overflow:{_hx_name:"Overflow",_hx_index:1,__enum__:"haxe.io.Error"},OutsideBounds:{_hx_name:"OutsideBounds",_hx_index:2,__enum__:"haxe.io.Error"},Custom:Object.assign(E=>({_hx_index:3,__enum__:"haxe.io.Error",e:E}),{_hx_name:"Custom",__params__:["e"]})};A.__constructs__=[A.Blocked,A.Overflow,A.OutsideBounds,A.Custom];A.__empty_constructs__=[A.Blocked,A.Overflow,A.OutsideBounds];var ft=s.$global,O=s.global("$hxEnums")["haxe.io.Encoding"]={__ename__:"haxe.io.Encoding",UTF8:{_hx_name:"UTF8",_hx_index:0,__enum__:"haxe.io.Encoding"},RawNative:{_hx_name:"RawNative",_hx_index:1,__enum__:"haxe.io.Encoding"}};O.__constructs__=[O.UTF8,O.RawNative];O.__empty_constructs__=[O.UTF8,O.RawNative];var vt=s.$global,K=s.global("$hxClasses")["haxe.io.Bytes"]=class fe extends s.inherits(){[s.new](e){this.length=e.byteLength,this.b=new Uint8Array(e),this.b.bufferValue=e,e.hxBytes=this,e.bytes=this.b}getString(e,t,r){if(e<0||t<0||e+t>this.length)throw C.thrown(A.OutsideBounds);r==null&&(r=O.UTF8);let l="",n=this.b,o=e,i=e+t;switch(r._hx_index){case 0:let d=e>0;for(;o<i;){let m=n[o++];if(m<128){if(m==0)break;l+=String.fromCodePoint(m)}else if(m<224){let u=(m&63)<<6|n[o++]&127;l+=String.fromCodePoint(u)}else if(m<240){let u=n[o++],a=(m&31)<<12|(u&127)<<6|n[o++]&127;l+=String.fromCodePoint(a)}else{let u=n[o++],a=n[o++],g=(m&15)<<18|(u&127)<<12|(a&127)<<6|n[o++]&127;l+=String.fromCodePoint(g)}}break;case 1:for(;o<i;){let m=n[o++]|n[o++]<<8;l+=String.fromCodePoint(m)}break}return l}static ofData(e){let t=e.hxBytes;return t!=null?t:new fe(e)}static get __name__(){return"haxe.io.Bytes"}get __class__(){return fe}};K.prototype.length=null;K.prototype.b=null;var kt=s.$global,H=s.global("$hxClasses")["haxe.http.HttpBase"]=class Ce extends s.inherits(){[s.new](e){this.url=e,this.headers=[],this.params=[],this.emptyOnData=s.bind(this,this.onData)}get responseData(){return this.get_responseData()}setHeader(e,t){let r=0,l=this.headers.length;for(;r<l;){let n=r++;if(this.headers[n].name==e){this.headers[n]={name:e,value:t};return}}this.headers.push({name:e,value:t})}setPostData(e){this.postData=e,this.postBytes=null}onData(e){}onBytes(e){}onError(e){}onStatus(e){}hasOnData(){return s.bind(this,this.onData)!=this.emptyOnData}success(e){this.responseBytes=e,this.responseAsString=null,this.hasOnData()&&this.onData(this.get_responseData()),this.onBytes(this.responseBytes)}get_responseData(){return this.responseAsString==null&&this.responseBytes!=null&&(this.responseAsString=this.responseBytes.getString(0,this.responseBytes.length,O.UTF8)),this.responseAsString}static get __name__(){return"haxe.http.HttpBase"}get __class__(){return Ce}};H.prototype.url=null;H.prototype.responseBytes=null;H.prototype.responseAsString=null;H.prototype.postData=null;H.prototype.postBytes=null;H.prototype.headers=null;H.prototype.params=null;H.prototype.emptyOnData=null;var Dt=s.$global,ae=s.global("$hxClasses")["haxe.iterators.MapKeyValueIterator"]=class De extends s.inherits(){[s.new](e){this.map=e,this.keys=e.keys()}hasNext(){return this.keys.hasNext()}next(){let e=this.keys.next();return{value:this.map.get(e),key:e}}static get __name__(){return"haxe.iterators.MapKeyValueIterator"}get __class__(){return De}};ae.prototype.map=null;ae.prototype.keys=null;var qt=s.$global,xe=function(){};xe.__isInterface__=!0;var Ht=s.$global,ye=s.global("$hxClasses")["js.Boot"]=class ee{static __string_rec(e,t){if(e==null)return"null";if(t.length>=5)return"<...>";let r=typeof e;switch(r=="function"&&(e.__name__||e.__ename__)&&(r="object"),r){case"function":return"<function>";case"object":if(e.__enum__){let m=s.global("$hxEnums")[e.__enum__].__constructs__[e._hx_index],u=m._hx_name;return m.__params__?(t=t+" ",u+"("+(function(a){var g;let I=[];{let _=0,c=m.__params__;for(;_<c.length;){let w=c[_];_=_+1,I.push(ee.__string_rec(e[w],t))}}return g=I,g})(this).join(",")+")"):u}if(e instanceof Array){let d="[";t+=" ";let m=0,u=e.length;for(;m<u;){let a=m++;d+=(a>0?",":"")+ee.__string_rec(e[a],t)}return d+="]",d}let l;try{l=e.toString}catch{return"???"}if(l!=null&&l!=Object.toString&&typeof l=="function"){let d=e.toString();if(d!="[object Object]")return d}let n=`{
2
+ `;t+=" ";let o=e.hasOwnProperty!=null,i=null;for(i in e)o&&!e.hasOwnProperty(i)||i=="prototype"||i=="__class__"||i=="__super__"||i=="__interfaces__"||i=="__properties__"||(n.length!=2&&(n+=`,
3
+ `),n+=t+i+" : "+ee.__string_rec(e[i],t));return t=t.substring(1),n+=`
4
+ `+t+"}",n;break;case"string":return e;default:return String(e)}}static get __name__(){return"js.Boot"}get __class__(){return ee}};ye.__toStr={}.toString;var Lt=s.$global,f=s.global("$hxClasses").Std=class Pe{static string(e){return ye.__string_rec(e,"")}static parseInt(e){let t=parseInt(e);return isNaN(t)?null:t}static get __name__(){return"Std"}get __class__(){return Pe}};String.__name__=!0,Array.__name__=!0;var jt=s.$global,ue=s.global("$hxClasses")["genes.util.EsMap"]=class te extends s.inherits(){[s.new](){this.inst=new Map}set(e,t){this.inst.set(e,t)}get(e){return this.inst.get(e)}remove(e){return this.inst.delete(e)}exists(e){return this.inst.has(e)}keys(){return te.adaptIterator(this.inst.keys())}iterator(){return te.adaptIterator(this.inst.values())}toString(){let e=[],t=te.adaptIterator(this.inst.keys());for(;t.hasNext();){let r=t.next();e.push(""+f.string(r)+" => "+f.string(this.inst.get(r)))}return"{"+e.join(", ")+"}"}clear(){this.inst.clear()}static adaptIterator(e){let t,r,l=function(){let n=e.next();t=n.value,r=n.done};return{hasNext:function(){return r==null&&l(),!r},next:function(){r==null&&l();let n=t;return l(),n}}}static get __name__(){return"genes.util.EsMap"}get __class__(){return te}};ue.prototype.inst=null;var Wt=s.$global,Be=s.global("$hxClasses")["haxe.ds.StringMap"]=class be extends s.inherits(ue){[s.new](){super[s.new]()}copy(){let e=new be;return e.inst=new Map(this.inst),e}keyValueIterator(){return new ae(this)}static get __name__(){return"haxe.ds.StringMap"}static get __interfaces__(){return[xe]}static get __super__(){return ue}get __class__(){return be}};var Zt=s.$global,B=s.global("$hxClasses").HxOverrides=class qe{static cca(e,t){let r=e.charCodeAt(t);if(r==r)return r}static substr(e,t,r){if(r==null)r=e.length;else if(r<0)if(t==0)r=e.length+r;else return"";return e.substr(t,r)}static now(){return Date.now()}static get __name__(){return"HxOverrides"}get __class__(){return qe}};typeof performance!="undefined"&&typeof performance.now=="function"&&(B.now=performance.now.bind(performance));var sr=s.$global,j=s.global("$hxClasses").StringTools=class _e{static isSpace(e,t){let r=B.cca(e,t);return r>8&&r<14?!0:r==32}static ltrim(e){let t=e.length,r=0;for(;r<t&&_e.isSpace(e,r);)++r;return r>0?B.substr(e,r,t-r):e}static rtrim(e){let t=e.length,r=0;for(;r<t&&_e.isSpace(e,t-r-1);)++r;return r>0?B.substr(e,0,t-r):e}static replace(e,t,r){return e.split(t).join(r)}static get __name__(){return"StringTools"}get __class__(){return _e}};var ir=s.$global,Ve=s.global("$hxClasses").Lambda=class Ae{static exists(e,t){let r=s.getIterator(e);for(;r.hasNext();){let l=r.next();if(t(l))return!0}return!1}static get __name__(){return"Lambda"}get __class__(){return Ae}};var gr=s.$global,re=s.global("$hxClasses").EReg=class He extends s.inherits(){[s.new](e,t){this.r=new RegExp(e,t.split("u").join(""))}match(e){return this.r.global&&(this.r.lastIndex=0),this.r.m=this.r.exec(e),this.r.s=e,this.r.m!=null}matched(e){if(this.r.m!=null&&e>=0&&e<this.r.m.length)return this.r.m[e];throw C.thrown("EReg::matched")}matchedPos(){if(this.r.m==null)throw C.thrown("No string matched");return{pos:this.r.m.index,len:this.r.m[0].length}}matchSub(e,t,r){if(r==null&&(r=-1),this.r.global){this.r.lastIndex=t,this.r.m=this.r.exec(r<0?e:B.substr(e,0,t+r));let l=this.r.m!=null;return l&&(this.r.s=e),l}else{let l=this.match(r<0?B.substr(e,t,null):B.substr(e,t,r));return l&&(this.r.s=e,this.r.m.index+=t),l}}map(e,t){let r=0,l="";do{if(r>=e.length)break;if(!this.matchSub(e,r)){l+=f.string(B.substr(e,r,null));break}let n=this.matchedPos();l+=f.string(B.substr(e,r,n.pos-r)),l+=f.string(t(this)),n.len==0?(l+=f.string(B.substr(e,n.pos,1)),r=n.pos+1):r=n.pos+n.len}while(this.r.global);return!this.r.global&&r>0&&r<e.length&&(l+=f.string(B.substr(e,r,null))),l}static get __name__(){return"EReg"}get __class__(){return He}};re.prototype.r=null;var $r=s.$global,G=s.global("$hxClasses")["haxe.http.HttpJs"]=class Fe extends s.inherits(H){[s.new](e){this.async=!0,this.withCredentials=!1,super[s.new](e)}request(e){this.responseAsString=null,this.responseBytes=null,this.responseHeaders=null;let t=this.req=de.createXMLHttpRequest(),r=this,l=function(u){if(t.readyState!=4)return;let a;try{a=t.status}catch{a=null}if(a==0&&de.get_supported()&&s.$global.location!=null){let g=s.$global.location.protocol.toLowerCase();new re("^(?:about|app|app-storage|.+-extension|file|res|widget):$","").match(g)&&(a=t.response!=null?200:404)}if(a==null&&(a=null),a!=null&&r.onStatus(a),a!=null&&a>=200&&a<400){r.req=null;let g=t.getAllResponseHeaders().split(`\r
5
+ `),I=[],_=0,c=g;for(;_<c.length;){let R=c[_];++_,R!=""&&I.push(R)}g=I;let w=new Be;r.responseHeaders=w;let y=0;for(;y<g.length;){let R=g[y];++y;let D=R.split(": "),V=D.shift(),b=D.length==1?D[0]:D.join(": ");b=j.ltrim(j.rtrim(b)),r.responseHeaders.inst.set(V,b)}r.success(K.ofData(t.response))}else if(a==null||a==0&&t.response==null)r.req=null,r.onError("Failed to connect or resolve host");else if(a==null){r.req=null;let g=t.response!=null?K.ofData(t.response):null;r.responseBytes=g,r.onError("Http Error #"+t.status)}else switch(a){case 12007:r.req=null,r.onError("Unknown host");break;case 12029:r.req=null,r.onError("Failed to connect to host");break;default:r.req=null;let g=t.response!=null?K.ofData(t.response):null;r.responseBytes=g,r.onError("Http Error #"+t.status)}};this.async&&(t.onreadystatechange=l);let n,o=this.postData,i=this.postBytes;if(o==null)if(i==null)n=null;else{let u=i;n=new Blob([u.b.bufferValue])}else i==null?n=o:n=null;if(n!=null)e=!0;else{let u=0,a=this.params;for(;u<a.length;){let g=a[u];++u,n==null?n="":n=(n==null?"null":f.string(n))+"&";let I=g.name,_=(n==null?"null":f.string(n))+encodeURIComponent(I)+"=",c=g.value;n=_+encodeURIComponent(c)}}try{if(e)t.open("POST",this.url,this.async);else if(n!=null){let u=this.url.split("?").length<=1;t.open("GET",this.url+(u?"?":"&")+(n==null?"null":f.string(n)),this.async),n=null}else t.open("GET",this.url,this.async);t.responseType="arraybuffer"}catch(u){let a=C.caught(u).unwrap();this.req=null,this.onError(a.toString());return}t.withCredentials=this.withCredentials,!Ve.exists(this.headers,function(u){return u.name=="Content-Type"})&&e&&this.postData==null&&t.setRequestHeader("Content-Type","application/x-www-form-urlencoded");let d=0,m=this.headers;for(;d<m.length;){let u=m[d];++d,t.setRequestHeader(u.name,u.value)}t.send(n),this.async||l(null)}static get __name__(){return"haxe.http.HttpJs"}static get __super__(){return H}get __class__(){return Fe}};G.prototype.async=null;G.prototype.withCredentials=null;G.prototype.responseHeaders=null;G.prototype.req=null;var kr=s.$global,U=s.global("$hxClasses").SimpleFuture=class Oe extends s.inherits(){[s.new](){this._isFinished=!1}trigger(e){this._result=e,this._isFinished=!0,this._callback!=null&&this._callback(this._result)}then(e){this._callback=e,this._isFinished&&e(this._result)}static get __name__(){return"SimpleFuture"}get __class__(){return Oe}};U.prototype._callback=null;U.prototype._result=null;U.prototype._isFinished=null;var Dr=s.$global,$=s.global("$hxClasses").Reflect=class Te{static field(e,t){try{return e[t]}catch{return null}}static getProperty(e,t){let r;if(e==null)return null;{let l;return e.__properties__?(r=e.__properties__["get_"+t],l=r):l=!1,l?e[r]():e[t]}}static setProperty(e,t,r){let l,n;e.__properties__?(l=e.__properties__["set_"+t],n=l):n=!1,n?e[l](r):e[t]=r}static fields(e){let t=[];if(e!=null){let l=Object.prototype.hasOwnProperty;for(var r in e)r!="__id__"&&r!="hx__closures__"&&l.call(e,r)&&t.push(r)}return t}static get __name__(){return"Reflect"}get __class__(){return Te}};var Tr=s.$global,p=s.global("$hxClasses")["internal.RecoBackendV2"]=class x extends s.inherits(){[s.new](){}static _requestUri(){return"https://"+x._req_domain+"/api/"+x._environment+"/recommendations/requests"}static noConsentBody(){return{device_id:"no-consent",user_group:"no-consent",version:"no-consent"}}static buildRequestBody(e){let t={lists:e,page_type:x._page_visit!=null?x._page_visit:x._page_view,channel:"www-desktop"};if(x._consent==0){let r=x.noConsentBody(),l=0,n=$.fields(r);for(;l<n.length;){let o=n[l];++l,t[o]=$.field(r,o)}}else x._user_id!=null?t.user_id=x._user_id:t.device_id=x._device_id;return t}static _requestRecos(e){let t=new U,r=null;s.$global.console.log(x._requestUri());let l=new G(x._requestUri());l.setHeader("Content-Type","application/json"),l.setPostData(JSON.stringify(x.buildRequestBody(e))),l.onError=function(i){throw C.thrown("HTTP Request Error: "+i)},l.onStatus=function(i){if(i<200||i>=300)throw C.thrown("HTTP Status Error: "+i)};try{l.request(!1)}catch(i){let d=C.caught(i).unwrap();throw C.thrown("Failed to execute synchronous request: "+f.string(d))}let n=function(i){let d=JSON.parse(i);s.$global.console.log(f.string(d));let m=W.fromRequestData(d);s.$global.console.log("got recommendations parsed"),t.trigger(m)},o=l.get_responseData();return o!=null?n(o):l.onData=n,t}static getRawRecommendations(e){return x._requestRecos(e)}static setConsent(e){e>2&&(e=2),x._consent=e}static setPageVisit(e){x._page_visit=e}static setEnvironment(e){x._environment=e}static setDeviceId(e){x._device_id=e}static setUserId(e){x._user_id=e}static setRequestDomain(e){x._req_domain=e}static setPageView(e){x._page_view=e}static getRequestDomain(){return x._req_domain}static getEnvironment(){return x._environment}static getPageVisit(){return x._page_visit}static getUserId(){return x._user_id}static getDeviceId(){return x._device_id}static getPageView(){return x._page_view}static get __name__(){return"internal.RecoBackendV2"}get __class__(){return x}};p._environment=null;p._device_id=null;p._user_id=null;p._consent=0;p._req_domain="europe-west1.froomle.com";p._page_visit=null;p._page_view=null;var ze=function(){};ze.__isInterface__=!0;var Xe=function(){};Xe.__isInterface__=!0;var W=s.global("$hxClasses")["internal._RecommendationsInternal"]=class we extends s.inherits(){[s.new](e,t,r,l,n){this.request_id=t,this.user_group=r,this.device_id=e,this.user_id=l,this._lists=n}items(){let e=[],t=0,r=this._lists;for(;t<r.length;){let l=r[t];++t;let n=0,o=l.items;for(;n<o.length;){let i=o[n];++n,e.push(i)}}return e}lists(){return this._lists}getItemsByListName(e){let t=0,r=this._lists;for(;t<r.length;){let l=r[t];if(++t,l.list_name==e)return l}return null}static fromRequestData(e){let t=$.getProperty(e,"lists");s.$global.console.log("lists: "+f.string(t)),s.$global.console.log("data: "+f.string(e));let r=[],l=0;for(;l<t.length;){let n=t[l];++l;let o=$.getProperty(n,"items"),i=[],d=0;for(;d<o.length;){let u=o[d];++d,i.push(new se(u))}let m=new Q({limit:$.getProperty(n,"limit"),list_key:$.getProperty(n,"list_key"),list_name:$.getProperty(n,"list_name"),list_size:$.getProperty(n,"list_size"),items:i});r.push(m)}return new we($.getProperty(e,"device_id"),$.getProperty(e,"request_id"),$.getProperty(e,"user_group"),$.getProperty(e,"user_id"),r)}static get __name__(){return"internal._RecommendationsInternal"}static get __interfaces__(){return[le]}get __class__(){return we}};W.prototype.request_id=null;W.prototype.user_group=null;W.prototype.user_id=null;W.prototype.device_id=null;W.prototype._lists=null;var Q=s.global("$hxClasses")["internal._RecommendationsListInternal"]=class Le extends s.inherits(){[s.new](e){this.items=e.items,this.limit=e.limit,this.list_key=e.list_key,this.list_name=e.list_name,this.list_size=e.list_size}static get __name__(){return"internal._RecommendationsListInternal"}static get __interfaces__(){return[ne]}get __class__(){return Le}};Q.prototype.limit=null;Q.prototype.list_key=null;Q.prototype.list_name=null;Q.prototype.list_size=null;Q.prototype.items=null;var se=s.global("$hxClasses")["internal._RecommendationItemInternal"]=class Ue extends s.inherits(){[s.new](e){this._data={},this.Id=$.getProperty(e,"item_id"),this.RequestId=$.getProperty(e,"request_id"),this.UserGroup=$.getProperty(e,"user_group");let t=0,r=$.fields(e);for(;t<r.length;){let l=r[t];++t,this._data[l]=$.field(e,l)}}get(e){return this._data[e]}static get __name__(){return"internal._RecommendationItemInternal"}static get __interfaces__(){return[ie]}get __class__(){return Ue}};se.prototype.Id=null;se.prototype.RequestId=null;se.prototype.UserGroup=null;se.prototype._data=null;var P=s.global("$hxClasses")["internal._RecoBackendV2.RecoBackendV2_Fields_"]=class Re{static getRawRecommendations(e){return p.getRawRecommendations(e)}static setConsent(e){p.setConsent(e)}static setPageVisit(e){p.setPageVisit(e)}static setEnvironment(e){p.setEnvironment(e)}static setDeviceId(e){p.setDeviceId(e)}static setUserId(e){p.setUserId(e)}static setRequestDomain(e){p.setRequestDomain(e)}static setPageView(e){p.setPageView(e)}static getConsent(){Re.getConsent()}static getPageVisit(){p.getPageVisit()}static getEnvironment(){p.getEnvironment()}static getDeviceId(){p.getDeviceId()}static getUserId(){p.getUserId()}static getPageView(){p.getPageView()}static get __name__(){return"internal._RecoBackendV2.RecoBackendV2_Fields_"}get __class__(){return Re}},Lr=P.getRawRecommendations,Ur=P.setConsent,Mr=P.setPageVisit,Nr=P.setEnvironment,jr=P.setDeviceId,zr=P.setUserId,Xr=P.setRequestDomain,Jr=P.setPageView,Kr=P.getConsent,Gr=P.getPageVisit,Wr=P.getEnvironment,Qr=P.getDeviceId,Yr=P.getUserId,Zr=P.getPageView;var ss=s.$global,M=s.global("$hxClasses").FroomleSdk=class q{static register(){q.registered||q._env_set&&(!q._page_visit_set&&!q._page_view_set||(q.registered=!0))}static setEnvironment(e){p.setEnvironment(e),q._env_set=!0,q.register()}static setDeviceId(e){p.setDeviceId(e)}static setUserId(e){p.setUserId(e)}static setConsent(e){p.setConsent(e)}static setPageView(e){p.setPageView(e),q._page_view_set=!0,q.register()}static setPageVisit(e){p.setPageVisit(e),q._page_visit_set=!0,q.register()}static setRequestDomain(e){p.setRequestDomain(e)}static getRawRecommendations(e){return p.getRawRecommendations(e)}static getVersion(){return"0.0.1"}static get __name__(){return"FroomleSdk"}get __class__(){return q}};M._env_set=!1;M._page_visit_set=!1;M._page_view_set=!1;M.registered=!1;var is=s.$global,ge=s.global("$hxClasses")["internal.domHandler.FroomleDomTree"]=class ce extends s.inherits(){[s.new](){}createElement(e){return window.document.createElement(e)}querySelectorAll(e){let t=this.root,r=[],l=t.querySelectorAll(e),n=0,o=l.length;for(;n<o;){let i=n++;r.push(l.item(i))}return r}getRoot(){return this.root}toString(){return this.root.outerHTML}static run(){}static fromHtml(e){return new ce}static fromDocument(){let e=new ce;return e.root=window.document,e}static get __name__(){return"internal.domHandler.FroomleDomTree"}get __class__(){return ce}};ge.prototype.root=null;var us=s.$global,T=s.global("$hxClasses")["internal._ADomNode.ADomNode"]=class ve{static _new(e){return e}static fromElement(e){return e}static create(e,t){return window.document.createElement(t)}static replaceChild(e,t,r){e.replaceChild(t,r)}static get attributes(){return this.get_attributes()}static get_attributes(e){let t=e,r=[],l=0,n=t.attributes.length;for(;l<n;){let o=l++,i=t.attributes.item(o);r.push({name:i.name,value:i.value})}return r}static addChild(e,t){e.appendChild(t)}static removeChild(e,t){e.removeChild(t)}static getAttribute(e,t){return e.getAttribute(t)}static setAttribute(e,t,r){e.setAttribute(t,r)}static getText(e){return e.textContent}static setText(e,t){e.textContent=t}static get children(){return this.get_children()}static get_children(e){let t=[],l=e.children,n=0,o=l.length;for(;n<o;){let i=n++;t.push(l[i])}return t}static querySelectorAll(e,t){let r=e,l=[],n=r.querySelectorAll(t),o=0,i=n.length;for(;o<i;){let d=o++;l.push(n.item(d))}return l}static getFilterKeyValue(e){let t=0,r=ve.get_attributes(e);for(;t<r.length;){let l=r[t];if(++t,l.name.startsWith("data-froomle-reco-filter-"))return{key:l.name.substring(25),value:l.value}}return{key:null,value:null}}static get __name__(){return"internal._ADomNode.ADomNode_Impl_"}get __class__(){return ve}};var ws=s.$global,Je=s.global("$hxClasses")["internal.domHandler.DomDomDom"]=class z extends s.inherits(){[s.new](){}static _fillRecoTargets(e){let t=new U;if(e==null)return t.trigger(!1),t;s.$global.console.log("filling recos");let r=[],l=e,n=[],o=l.querySelectorAll("*"),i=0,d=o.length;for(;i<d;){let h=i++;n.push(o.item(h))}let m=n;s.$global.console.log(m.length+" amount of elements");let u=0;for(;u<m.length;){let h=m[u];++u;let S=0,v=T.get_attributes(h);for(;S<v.length;){let N=v[S];++S,N.name=="data-froomle-reco"&&r.push(h)}}s.$global.console.log("amount of targets: "+(r.length==null?"null":""+r.length));let a=[],g=0;for(;g<r.length;){let h=r[g];++g,h.getAttribute("data-froomle-request-id")==null&&(h.getAttribute("data-froomle-id")==null||h.getAttribute("data-froomle-id")=="")&&a.push(h)}if(s.$global.console.log("filtered: "+f.string(a)),s.$global.console.log("filtered targets length "+a.length),a.length<1)return new U;let I=[],_=[],c="",w="",y="",R=[],D=function(){let h={list_name:c,list_size:R.length,limit:R.length};w!=null&&$.setProperty(h,w,y),I.push(h),_.push(R),s.$global.console.log("pushed a list with name:"+c+"filter_key: "+(w==null?"null":""+w)+" and value "+(y==null?"null":""+y)),s.$global.console.log("had length "+h.list_size)},V=function(h,S,v,N){c=h,w=S,y=v,R=[N]},b=0;for(;b<a.length;){let h=a[b];++b;let S=h.getAttribute("data-froomle-reco"),v=T.getFilterKeyValue(h);if(c==""){V(S,v.key,v.value,h);continue}else if(S==c&&v.key==w&&v.value==y){R.push(h);continue}else{D(),V(S,v.key,v.value,h);continue}}c!=""&&D();let k=P.getRawRecommendations(I);return s.$global.console.log("should have recos"),k.then(function(h){let S=0,v=h.lists();for(;S<v.length;){let N=v[S],F=S++,L=N,J=L.items.length!=_[F].length,Y=0,me=L.items;for(;Y<me.length;){let pe=me[Y],Ne=Y++,je=pe;z._fillParameters(_[F][Ne],je,h.request_id)}}t.trigger(!0)}),t}static _fillParameters(e,t,r){let l=function(g,I,_,c){c==null&&(c="");let w=function(y,R,D){D==null&&(D="fgh");try{R=new re("\\\\[(\\\\w+)\\\\]","g").map(R,function(v){return"."+v.matched(1)}),R=j.replace(R,"[","."),R=j.replace(R,"]",""),B.cca(R,0)==46&&(R=B.substr(R,1,null));let b=R.split("."),k=y.get(b[0]),h=1,S=b.length;for(;h<S;){let v=h++;if(k==null)return null;k instanceof Array&&f.parseInt(b[v])!=null?k=k[f.parseInt(b[v])]:k=$.field(k,b[v])}return k}catch{return D}};try{let y=w(t,_,c);I=="inner"?g.textContent=y:g.setAttribute(I,y)}catch{}};e.setAttribute("data-froomle-id",t.Id),e.setAttribute("data-froomle-request-id",r);let n=e,o=[],i=n.querySelectorAll("*"),d=0,m=i.length;for(;d<m;){let g=d++;o.push(i.item(g))}let u=o,a=0;for(;a<u.length;){let g=u[a];++a;let I=0,_=T.get_attributes(g);for(;I<_.length;){let c=_[I];if(++I,c.name.startsWith("data-froomle-param-")){let w=j.replace(c.name,"data-froomle-param-",""),y=c.value;l(g,w,y)}}}}static _orderElements(e){let t=function(_,c,w){let y=[],R=T.get_children(_),D=0;for(;D<R.length;){let k=R[D];if(++D,k.getAttribute("data-froomle-ordervalue")!=null){y.push(k);let S=T.create(e,"span");S.setAttribute("data-froomle-tmp-node",""),T.replaceChild(_,S,k)}}let V=[],b=0;for(;b<y.length;){let k=y[b];++b,V.push(k.getAttribute("data-froomle-ordervalue"))}return{el:_,key:c,values:V,orderChildren:y,list_name:w}},r=new U,l=e.getRoot(),n=[],o=l.querySelectorAll("*"),i=0,d=o.length;for(;i<d;){let _=i++;n.push(o.item(_))}let m=n,u=[],a=0;for(;a<m.length;){let _=m[a];++a;let c=0,w=T.get_attributes(_);for(;c<w.length;){let y=w[c];++c,y.name.startsWith("data-froomle-order-")&&u.push(t(_,y.name.substring(19),y.value))}}if(u.length<1)return r.trigger(!1),r;let g=[],I=0;for(;I<u.length;){let _=u[I];++I;let c={list_name:_.list_name,limit:_.values.length,list_size:_.values.length},w={};$.setProperty(w,_.key,_.values),$.setProperty(c,"order",w),g.push(c)}return P.getRawRecommendations(g).then(function(_){s.$global.console.log("got order recos"),s.$global.console.log(f.string(_));let c=0,w=_.lists();for(;c<w.length;){let y=w[c],D=c++,V=y,b=u[D];b.el.setAttribute("data-froomle-request-id",_.request_id),s.$global.console.log("children "+f.string(b.orderChildren));let k=[],h=0,S=V.items;for(;h<S.length;){let X=S[h];++h;let F=X.get(b.key);s.$global.console.log("looking for value "+F+" for key "+b.key),s.$global.console.log("item was "+f.string(X));let L=0,J=b.values;for(;L<J.length;){let Y=J[L],pe=L++;if(F==Y){s.$global.console.log("found matching value "+F),k.push(b.orderChildren[pe]);break}}}s.$global.console.log("sorted items "+f.string(k));let v=0,N=k.length;for(;v<N;){let X=v++;s.$global.console.log("replacing in section "+f.string(b.el.innerHTML)+" the item "+f.string(k[X]));let F=0,L=T.get_children(b.el);for(;F<L.length;){let J=L[F];if(++F,J.getAttribute("data-froomle-tmp-node")==""){T.replaceChild(b.el,k[X],J);break}}}s.$global.console.log("done replacing for section "+f.string(b.el.innerHTML)),s.$global.console.log("sorted items "+f.string(k))}r.trigger(!0)}),r}static domInit(e){z._orderElements(e).then(function(t){z._fillRecoTargets(e.getRoot())})}static fillElementRecos(e){z._fillRecoTargets(e)}static runFromHtml(e){let t=ge.fromHtml(e);return z.domInit(t),t.toString()}static get __name__(){return"internal.domHandler.DomDomDom"}get __class__(){return z}};var $s=s.$global;var As=M.setUserId,Hs=p.getUserId,Fs=M.setEnvironment,Os=p.getEnvironment,Ts=async()=>{throw new Error("Not implemented in V2")},Ls=async()=>{console.warn("preloadRecommendations not implemented")},Us=async()=>[],Ms=()=>[],Ns=()=>[],js=()=>[],zs=()=>[],Xs=async()=>{},Js=()=>{};export{Je as DomDomDom,ge as FroomleDomTree,M as FroomleSdk,p as RecoBackendV2,ie as RecommendationItem,ne as RecommendationList,le as Recommendations,Ee as Version,Ns as _getAllItemsFromCache,zs as _getRawRecommendationCache,Ms as _getRecoQueue,js as _getRecommendedItemsCache,Os as getFroomleEnvironment,Hs as getFroomleUserId,Ts as getRecommendationItem,Us as getRecommendations,Ls as preloadRecommendations,Xs as reset,Fs as setFroomleEnvironment,As as setFroomleUserId,Js as weirdReco};
6
+ //# sourceMappingURL=testing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/js/generated/genes/Register.js","../../src/js/generated/Version.js","../../src/js/generated/Recommendations.js","../../src/js/generated/haxe/ValueException.js","../../src/js/generated/haxe/Exception.js","../../src/js/generated/js/Browser.js","../../src/js/generated/haxe/io/Error.js","../../src/js/generated/haxe/io/Encoding.js","../../src/js/generated/haxe/io/Bytes.js","../../src/js/generated/haxe/http/HttpBase.js","../../src/js/generated/haxe/iterators/MapKeyValueIterator.js","../../src/js/generated/haxe/Constraints.js","../../src/js/generated/js/Boot.js","../../src/js/generated/Std.js","../../src/js/generated/genes/util/EsMap.js","../../src/js/generated/haxe/ds/StringMap.js","../../src/js/generated/HxOverrides.js","../../src/js/generated/StringTools.js","../../src/js/generated/Lambda.js","../../src/js/generated/EReg.js","../../src/js/generated/haxe/http/HttpJs.js","../../src/js/generated/SimpleFuture.js","../../src/js/generated/Reflect.js","../../src/js/generated/internal/RecoBackendV2.js","../../src/js/generated/FroomleSdk.js","../../src/js/generated/internal/domHandler/FroomleDomTree.js","../../src/js/generated/internal/ADomNode.js","../../src/js/generated/internal/domHandler/DomDomDom.js","../../src/js/generated/index.js","../../src/js/testing.js"],"sourcesContent":["\nexport class Register {\n\tstatic global(name) {\n\t\tif (Register.globals[name]) {\n\t\t\treturn Register.globals[name];\n\t\t} else {\n\t\t\treturn Register.globals[name] = {};\n\t\t};\n\t}\n\tstatic createStatic(obj, name, get) {\n\t\tlet value = null;\n\t\tObject.defineProperty(obj, name, {\"enumerable\": true, \"get\": function () {\n\t\t\tif (get != null) {\n\t\t\t\tvalue = get();\n\t\t\t\tget = null;\n\t\t\t};\n\t\t\treturn value;\n\t\t}, \"set\": function (v) {\n\t\t\tif (get != null) {\n\t\t\t\tvalue = get();\n\t\t\t\tget = null;\n\t\t\t};\n\t\t\tvalue = v;\n\t\t}});\n\t}\n\tstatic iterator(a) {\n\t\tif (!Array.isArray(a)) {\n\t\t\treturn typeof a.iterator === \"function\" ? a.iterator.bind(a) : a.iterator;\n\t\t} else {\n\t\t\tlet a1 = a;\n\t\t\treturn function () {\n\t\t\t\treturn Register.mkIter(a1);\n\t\t\t};\n\t\t};\n\t}\n\tstatic getIterator(a) {\n\t\tif (!Array.isArray(a)) {\n\t\t\treturn a.iterator();\n\t\t} else {\n\t\t\treturn Register.mkIter(a);\n\t\t};\n\t}\n\tstatic mkIter(a) {\n\t\treturn new ArrayIterator(a);\n\t}\n\tstatic extend(superClass) {\n\t\t\r\n function res() {\r\n this[Register.new].apply(this, arguments)\r\n }\r\n Object.setPrototypeOf(res.prototype, superClass.prototype)\r\n return res\r\n ;\n\t}\n\tstatic inherits(resolve, defer) {\n\t\tif (defer == null) {\n\t\t\tdefer = false;\n\t\t};\n\t\t\r\n function res() {\r\n if (defer && resolve && res[Register.init]) res[Register.init]()\r\n this[Register.new].apply(this, arguments)\r\n }\r\n if (!defer) {\r\n if (resolve && resolve[Register.init]) {\r\n defer = true\r\n res[Register.init] = () => {\r\n if (resolve[Register.init]) resolve[Register.init]()\r\n Object.setPrototypeOf(res.prototype, resolve.prototype)\r\n res[Register.init] = undefined\r\n } \r\n } else if (resolve) {\r\n Object.setPrototypeOf(res.prototype, resolve.prototype)\r\n }\r\n } else {\r\n res[Register.init] = () => {\r\n const superClass = resolve()\r\n if (superClass[Register.init]) superClass[Register.init]()\r\n Object.setPrototypeOf(res.prototype, superClass.prototype)\r\n res[Register.init] = undefined\r\n } \r\n }\r\n return res\r\n ;\n\t}\n\tstatic bind(o, m) {\n\t\tif (m == null) {\n\t\t\treturn null;\n\t\t};\n\t\tif (m.__id__ == null) {\n\t\t\tm.__id__ = Register.fid++;\n\t\t};\n\t\tlet f = null;\n\t\tif (o.hx__closures__ == null) {\n\t\t\to.hx__closures__ = {};\n\t\t} else {\n\t\t\tf = o.hx__closures__[m.__id__];\n\t\t};\n\t\tif (f == null) {\n\t\t\tf = m.bind(o);\n\t\t\to.hx__closures__[m.__id__] = f;\n\t\t};\n\t\treturn f;\n\t}\n\tstatic get __name__() {\n\t\treturn \"genes.Register\"\n\t}\n\tget __class__() {\n\t\treturn Register\n\t}\n}\n\n\nRegister.$global = typeof window != \"undefined\" ? window : typeof global != \"undefined\" ? global : typeof self != \"undefined\" ? self : undefined\nRegister.globals = {}\nRegister[\"new\"] = Symbol()\nRegister.init = Symbol()\nRegister.fid = 0\nexport const ArrayIterator = Register.global(\"$hxClasses\")[\"genes._Register.ArrayIterator\"] = \nclass ArrayIterator extends Register.inherits() {\n\t[Register.new](array) {\n\t\tthis.current = 0;\n\t\tthis.array = array;\n\t}\n\thasNext() {\n\t\treturn this.current < this.array.length;\n\t}\n\tnext() {\n\t\treturn this.array[this.current++];\n\t}\n\tstatic get __name__() {\n\t\treturn \"genes._Register.ArrayIterator\"\n\t}\n\tget __class__() {\n\t\treturn ArrayIterator\n\t}\n}\nArrayIterator.prototype.array = null;\nArrayIterator.prototype.current = null;\n\n","import {Register} from \"./genes/Register.js\"\n\nconst $global = Register.$global\n\n/**\n* Auto-generated version file. Do not edit manually.\n*/\nexport const Version = Register.global(\"$hxClasses\")[\"Version\"] = \nclass Version {\n\tstatic get __name__() {\n\t\treturn \"Version\"\n\t}\n\tget __class__() {\n\t\treturn Version\n\t}\n}\n\n\nVersion.CURRENT = \"0.0.1\"","import {Register} from \"./genes/Register.js\"\n\nconst $global = Register.$global\n\nexport const Recommendations = function() {};\nRecommendations.__isInterface__ = true;\n\nexport const RecommendationList = function() {};\nRecommendationList.__isInterface__ = true;\n\nexport const RecommendationItem = function() {};\nRecommendationItem.__isInterface__ = true;\n","import {Exception} from \"./Exception.js\"\nimport {Register} from \"../genes/Register.js\"\n\nconst $global = Register.$global\n\n/**\nAn exception containing arbitrary value.\n\nThis class is automatically used for throwing values, which don't extend `haxe.Exception`\nor native exception type.\nFor example:\n```haxe\nthrow \"Terrible error\";\n```\nwill be compiled to\n```haxe\nthrow new ValueException(\"Terrible error\");\n```\n*/\nexport const ValueException = Register.global(\"$hxClasses\")[\"haxe.ValueException\"] = \nclass ValueException extends Register.inherits(() => Exception, true) {\n\t[Register.new](value, previous, $native) {\n\t\tsuper[Register.new](String(value), previous, $native);\n\t\tthis.value = value;\n\t}\n\t\n\t/**\n\tExtract an originally thrown value.\n\t\n\tThis method must return the same value on subsequent calls.\n\tUsed internally for catching non-native exceptions.\n\tDo _not_ override unless you know what you are doing.\n\t*/\n\tunwrap() {\n\t\treturn this.value;\n\t}\n\tstatic get __name__() {\n\t\treturn \"haxe.ValueException\"\n\t}\n\tstatic get __super__() {\n\t\treturn Exception\n\t}\n\tget __class__() {\n\t\treturn ValueException\n\t}\n}\nValueException.prototype.value = null;\n\n","import {ValueException} from \"./ValueException.js\"\nimport {Register} from \"../genes/Register.js\"\n\nconst $global = Register.$global\n\n/**\nBase class for exceptions.\n\nIf this class (or derivatives) is used to catch an exception, then\n`haxe.CallStack.exceptionStack()` will not return a stack for the exception\ncaught. Use `haxe.Exception.stack` property instead:\n```haxe\ntry {\nthrowSomething();\n} catch(e:Exception) {\ntrace(e.stack);\n}\n```\n\nCustom exceptions should extend this class:\n```haxe\nclass MyException extends haxe.Exception {}\n//...\nthrow new MyException('terrible exception');\n```\n\n`haxe.Exception` is also a wildcard type to catch any exception:\n```haxe\ntry {\nthrow 'Catch me!';\n} catch(e:haxe.Exception) {\ntrace(e.message); // Output: Catch me!\n}\n```\n\nTo rethrow an exception just throw it again.\nHaxe will try to rethrow an original native exception whenever possible.\n```haxe\ntry {\nvar a:Array<Int> = null;\na.push(1); // generates target-specific null-pointer exception\n} catch(e:haxe.Exception) {\nthrow e; // rethrows native exception instead of haxe.Exception\n}\n```\n*/\nexport const Exception = Register.global(\"$hxClasses\")[\"haxe.Exception\"] = \nclass Exception extends Register.inherits(() => Error, true) {\n\t[Register.new](message, previous, $native) {\n\t\tError.call(this, message);\n\t\tthis.message = message;\n\t\tthis.__previousException = previous;\n\t\tthis.__nativeException = ($native != null) ? $native : this;\n\t}\n\tunwrap() {\n\t\treturn this.__nativeException;\n\t}\n\tget_native() {\n\t\treturn this.__nativeException;\n\t}\n\tstatic caught(value) {\n\t\tif (((value) instanceof Exception)) {\n\t\t\treturn value;\n\t\t} else if (((value) instanceof Error)) {\n\t\t\treturn new Exception(value.message, null, value);\n\t\t} else {\n\t\t\treturn new ValueException(value, null, value);\n\t\t};\n\t}\n\tstatic thrown(value) {\n\t\tif (((value) instanceof Exception)) {\n\t\t\treturn value.get_native();\n\t\t} else if (((value) instanceof Error)) {\n\t\t\treturn value;\n\t\t} else {\n\t\t\tlet e = new ValueException(value);\n\t\t\treturn e;\n\t\t};\n\t}\n\tstatic get __name__() {\n\t\treturn \"haxe.Exception\"\n\t}\n\tstatic get __super__() {\n\t\treturn Error\n\t}\n\tget __class__() {\n\t\treturn Exception\n\t}\n}\nException.prototype.native = null;\nException.prototype.__skipStack = null;\nException.prototype.__nativeException = null;\nException.prototype.__previousException = null;\n\n","import {Exception} from \"../haxe/Exception.js\"\nimport {Register} from \"../genes/Register.js\"\n\nconst $global = Register.$global\n\nexport const Browser = Register.global(\"$hxClasses\")[\"js.Browser\"] = \nclass Browser {\n\tstatic get supported() {\n\t\treturn this.get_supported()\n\t}\n\tstatic get_supported() {\n\t\tif (typeof(window) != \"undefined\" && typeof(window.location) != \"undefined\") {\n\t\t\treturn typeof(window.location.protocol) == \"string\";\n\t\t} else {\n\t\t\treturn false;\n\t\t};\n\t}\n\t\n\t/**\n\t* Creates an XMLHttpRequest, with a fallback to ActiveXObject for ancient versions of Internet\n\t* Explorer.\n\t*/\n\tstatic createXMLHttpRequest() {\n\t\tif (typeof XMLHttpRequest != \"undefined\") {\n\t\t\treturn new XMLHttpRequest();\n\t\t};\n\t\tif (typeof ActiveXObject != \"undefined\") {\n\t\t\treturn new \"ActiveXObject\"(\"Microsoft.XMLHTTP\");\n\t\t};\n\t\tthrow Exception.thrown(\"Unable to create XMLHttpRequest object.\");\n\t}\n\tstatic get __name__() {\n\t\treturn \"js.Browser\"\n\t}\n\tget __class__() {\n\t\treturn Browser\n\t}\n}\n\n","import {Register} from \"../../genes/Register.js\"\n\nconst $global = Register.$global\n\n/**\nThe possible IO errors that can occur\n*/\nexport const Error = \nRegister.global(\"$hxEnums\")[\"haxe.io.Error\"] = \n{\n\t__ename__: \"haxe.io.Error\",\n\t\n\t/**\n\tThe IO is set into nonblocking mode and some data cannot be read or written\n\t*/\n\tBlocked: {_hx_name: \"Blocked\", _hx_index: 0, __enum__: \"haxe.io.Error\"},\n\t/**\n\tAn integer value is outside its allowed range\n\t*/\n\tOverflow: {_hx_name: \"Overflow\", _hx_index: 1, __enum__: \"haxe.io.Error\"},\n\t/**\n\tAn operation on Bytes is outside of its valid range\n\t*/\n\tOutsideBounds: {_hx_name: \"OutsideBounds\", _hx_index: 2, __enum__: \"haxe.io.Error\"},\n\t/**\n\tOther errors\n\t*/\n\tCustom: Object.assign((e) => ({_hx_index: 3, __enum__: \"haxe.io.Error\", \"e\": e}), {_hx_name: \"Custom\", __params__: [\"e\"]})\n}\nError.__constructs__ = [Error.Blocked, Error.Overflow, Error.OutsideBounds, Error.Custom]\nError.__empty_constructs__ = [Error.Blocked, Error.Overflow, Error.OutsideBounds]\n","import {Register} from \"../../genes/Register.js\"\n\nconst $global = Register.$global\n\n/**\nString binary encoding supported by Haxe I/O\n*/\nexport const Encoding = \nRegister.global(\"$hxEnums\")[\"haxe.io.Encoding\"] = \n{\n\t__ename__: \"haxe.io.Encoding\",\n\t\n\tUTF8: {_hx_name: \"UTF8\", _hx_index: 0, __enum__: \"haxe.io.Encoding\"},\n\t/**\n\tOutput the string the way the platform represent it in memory. This is the most efficient but is platform-specific\n\t*/\n\tRawNative: {_hx_name: \"RawNative\", _hx_index: 1, __enum__: \"haxe.io.Encoding\"}\n}\nEncoding.__constructs__ = [Encoding.UTF8, Encoding.RawNative]\nEncoding.__empty_constructs__ = [Encoding.UTF8, Encoding.RawNative]\n","import {Error as Error__1} from \"./Error.js\"\nimport {Encoding} from \"./Encoding.js\"\nimport {Exception} from \"../Exception.js\"\nimport {Register} from \"../../genes/Register.js\"\n\nconst $global = Register.$global\n\nexport const Bytes = Register.global(\"$hxClasses\")[\"haxe.io.Bytes\"] = \nclass Bytes extends Register.inherits() {\n\t[Register.new](data) {\n\t\tthis.length = data.byteLength;\n\t\tthis.b = new Uint8Array(data);\n\t\tthis.b.bufferValue = data;\n\t\tdata.hxBytes = this;\n\t\tdata.bytes = this.b;\n\t}\n\t\n\t/**\n\tReturns the `len`-bytes long string stored at the given position `pos`,\n\tinterpreted with the given `encoding` (UTF-8 by default).\n\t*/\n\tgetString(pos, len, encoding) {\n\t\tif (pos < 0 || len < 0 || pos + len > this.length) {\n\t\t\tthrow Exception.thrown(Error__1.OutsideBounds);\n\t\t};\n\t\tif (encoding == null) {\n\t\t\tencoding = Encoding.UTF8;\n\t\t};\n\t\tlet s = \"\";\n\t\tlet b = this.b;\n\t\tlet i = pos;\n\t\tlet max = pos + len;\n\t\tswitch (encoding._hx_index) {\n\t\t\tcase 0:\n\t\t\t\tlet debug = pos > 0;\n\t\t\t\twhile (i < max) {\n\t\t\t\t\tlet c = b[i++];\n\t\t\t\t\tif (c < 128) {\n\t\t\t\t\t\tif (c == 0) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t};\n\t\t\t\t\t\ts += String.fromCodePoint(c);\n\t\t\t\t\t} else if (c < 224) {\n\t\t\t\t\t\tlet code = (c & 63) << 6 | b[i++] & 127;\n\t\t\t\t\t\ts += String.fromCodePoint(code);\n\t\t\t\t\t} else if (c < 240) {\n\t\t\t\t\t\tlet c2 = b[i++];\n\t\t\t\t\t\tlet code = (c & 31) << 12 | (c2 & 127) << 6 | b[i++] & 127;\n\t\t\t\t\t\ts += String.fromCodePoint(code);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlet c2 = b[i++];\n\t\t\t\t\t\tlet c3 = b[i++];\n\t\t\t\t\t\tlet u = (c & 15) << 18 | (c2 & 127) << 12 | (c3 & 127) << 6 | b[i++] & 127;\n\t\t\t\t\t\ts += String.fromCodePoint(u);\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t\tbreak\n\t\t\tcase 1:\n\t\t\t\twhile (i < max) {\n\t\t\t\t\tlet c = b[i++] | b[i++] << 8;\n\t\t\t\t\ts += String.fromCodePoint(c);\n\t\t\t\t};\n\t\t\t\tbreak\n\t\t\t\n\t\t};\n\t\treturn s;\n\t}\n\t\n\t/**\n\tReturns the `Bytes` representation of the given `BytesData`.\n\t*/\n\tstatic ofData(b) {\n\t\tlet hb = b.hxBytes;\n\t\tif (hb != null) {\n\t\t\treturn hb;\n\t\t};\n\t\treturn new Bytes(b);\n\t}\n\tstatic get __name__() {\n\t\treturn \"haxe.io.Bytes\"\n\t}\n\tget __class__() {\n\t\treturn Bytes\n\t}\n}\nBytes.prototype.length = null;\nBytes.prototype.b = null;\n\n","import {Encoding} from \"../io/Encoding.js\"\nimport {Register} from \"../../genes/Register.js\"\n\nconst $global = Register.$global\n\n/**\nThis class can be used to handle Http requests consistently across\nplatforms. There are two intended usages:\n\n- call `haxe.Http.requestUrl(url)` and receive the result as a `String`\n(only available on `sys` targets)\n- create a `new haxe.Http(url)`, register your callbacks for `onData`,\n`onError` and `onStatus`, then call `request()`.\n*/\nexport const HttpBase = Register.global(\"$hxClasses\")[\"haxe.http.HttpBase\"] = \nclass HttpBase extends Register.inherits() {\n\t[Register.new](url) {\n\t\tthis.url = url;\n\t\tthis.headers = [];\n\t\tthis.params = [];\n\t\tthis.emptyOnData = Register.bind(this, this.onData);\n\t}\n\tget responseData() {\n\t\treturn this.get_responseData()\n\t}\n\t\n\t/**\n\tSets the header identified as `name` to value `value`.\n\t\n\tIf `name` or `value` are null, the result is unspecified.\n\t\n\tThis method provides a fluent interface.\n\t*/\n\tsetHeader(name, value) {\n\t\tlet _g = 0;\n\t\tlet _g1 = this.headers.length;\n\t\twhile (_g < _g1) {\n\t\t\tlet i = _g++;\n\t\t\tif (this.headers[i].name == name) {\n\t\t\t\tthis.headers[i] = {\"name\": name, \"value\": value};\n\t\t\t\treturn;\n\t\t\t};\n\t\t};\n\t\tthis.headers.push({\"name\": name, \"value\": value});\n\t}\n\t\n\t/**\n\tSets the post data of `this` Http request to `data` string.\n\t\n\tThere can only be one post data per request. Subsequent calls to\n\tthis method or to `setPostBytes()` overwrite the previously set value.\n\t\n\tIf `data` is null, the post data is considered to be absent.\n\t\n\tThis method provides a fluent interface.\n\t*/\n\tsetPostData(data) {\n\t\tthis.postData = data;\n\t\tthis.postBytes = null;\n\t}\n\t\n\t/**\n\tThis method is called upon a successful request, with `data` containing\n\tthe result String.\n\t\n\tThe intended usage is to bind it to a custom function:\n\t`httpInstance.onData = function(data) { // handle result }`\n\t*/\n\tonData(data) {\n\t}\n\t\n\t/**\n\tThis method is called upon a successful request, with `data` containing\n\tthe result String.\n\t\n\tThe intended usage is to bind it to a custom function:\n\t`httpInstance.onBytes = function(data) { // handle result }`\n\t*/\n\tonBytes(data) {\n\t}\n\t\n\t/**\n\tThis method is called upon a request error, with `msg` containing the\n\terror description.\n\t\n\tThe intended usage is to bind it to a custom function:\n\t`httpInstance.onError = function(msg) { // handle error }`\n\t*/\n\tonError(msg) {\n\t}\n\t\n\t/**\n\tThis method is called upon a Http status change, with `status` being the\n\tnew status.\n\t\n\tThe intended usage is to bind it to a custom function:\n\t`httpInstance.onStatus = function(status) { // handle status }`\n\t*/\n\tonStatus(status) {\n\t}\n\t\n\t/**\n\tOverride this if extending `haxe.Http` with overriding `onData`\n\t*/\n\thasOnData() {\n\t\treturn Register.bind(this, this.onData) != this.emptyOnData;\n\t}\n\tsuccess(data) {\n\t\tthis.responseBytes = data;\n\t\tthis.responseAsString = null;\n\t\tif (this.hasOnData()) {\n\t\t\tthis.onData(this.get_responseData());\n\t\t};\n\t\tthis.onBytes(this.responseBytes);\n\t}\n\tget_responseData() {\n\t\tif (this.responseAsString == null && this.responseBytes != null) {\n\t\t\tthis.responseAsString = this.responseBytes.getString(0, this.responseBytes.length, Encoding.UTF8);\n\t\t};\n\t\treturn this.responseAsString;\n\t}\n\tstatic get __name__() {\n\t\treturn \"haxe.http.HttpBase\"\n\t}\n\tget __class__() {\n\t\treturn HttpBase\n\t}\n}\nHttpBase.prototype.url = null;\nHttpBase.prototype.responseBytes = null;\nHttpBase.prototype.responseAsString = null;\nHttpBase.prototype.postData = null;\nHttpBase.prototype.postBytes = null;\nHttpBase.prototype.headers = null;\nHttpBase.prototype.params = null;\nHttpBase.prototype.emptyOnData = null;\n\n","import {Register} from \"../../genes/Register.js\"\n\nconst $global = Register.$global\n\n/**\nThis Key/Value iterator can be used to iterate across maps.\n*/\nexport const MapKeyValueIterator = Register.global(\"$hxClasses\")[\"haxe.iterators.MapKeyValueIterator\"] = \nclass MapKeyValueIterator extends Register.inherits() {\n\t[Register.new](map) {\n\t\tthis.map = map;\n\t\tthis.keys = map.keys();\n\t}\n\t\n\t/**\n\tSee `Iterator.hasNext`\n\t*/\n\thasNext() {\n\t\treturn this.keys.hasNext();\n\t}\n\t\n\t/**\n\tSee `Iterator.next`\n\t*/\n\tnext() {\n\t\tlet key = this.keys.next();\n\t\treturn {\"value\": this.map.get(key), \"key\": key};\n\t}\n\tstatic get __name__() {\n\t\treturn \"haxe.iterators.MapKeyValueIterator\"\n\t}\n\tget __class__() {\n\t\treturn MapKeyValueIterator\n\t}\n}\nMapKeyValueIterator.prototype.map = null;\nMapKeyValueIterator.prototype.keys = null;\n\n","import {Register} from \"../genes/Register.js\"\n\nconst $global = Register.$global\n\nexport const IMap = function() {};\nIMap.__isInterface__ = true;\n","import {Register} from \"../genes/Register.js\"\n\nconst $global = Register.$global\n\nexport const Boot = Register.global(\"$hxClasses\")[\"js.Boot\"] = \nclass Boot {\n\tstatic __string_rec(o, s) {\n\t\tif (o == null) {\n\t\t\treturn \"null\";\n\t\t};\n\t\tif (s.length >= 5) {\n\t\t\treturn \"<...>\";\n\t\t};\n\t\tlet t = typeof(o);\n\t\tif (t == \"function\" && (o.__name__ || o.__ename__)) {\n\t\t\tt = \"object\";\n\t\t};\n\t\tswitch (t) {\n\t\t\tcase \"function\":\n\t\t\t\treturn \"<function>\";\n\t\t\t\tbreak\n\t\t\tcase \"object\":\n\t\t\t\tif (o.__enum__) {\n\t\t\t\t\tlet e = Register.global(\"$hxEnums\")[o.__enum__];\n\t\t\t\t\tlet con = e.__constructs__[o._hx_index];\n\t\t\t\t\tlet n = con._hx_name;\n\t\t\t\t\tif (con.__params__) {\n\t\t\t\t\t\ts = s + \"\\t\";\n\t\t\t\t\t\treturn n + \"(\" + ((function($this) {var $r0\n\t\t\t\t\t\t\tlet _g = [];\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlet _g1 = 0;\n\t\t\t\t\t\t\t\tlet _g2 = con.__params__;\n\t\t\t\t\t\t\t\twhile (true) {\n\t\t\t\t\t\t\t\t\tif (!(_g1 < _g2.length)) {\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\tlet p = _g2[_g1];\n\t\t\t\t\t\t\t\t\t_g1 = _g1 + 1;\n\t\t\t\t\t\t\t\t\t_g.push(Boot.__string_rec(o[p], s));\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t$r0 = _g\n\t\t\t\t\t\t\treturn $r0})(this)).join(\",\") + \")\";\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn n;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t\tif (((o) instanceof Array)) {\n\t\t\t\t\tlet str = \"[\";\n\t\t\t\t\ts += \"\\t\";\n\t\t\t\t\tlet _g = 0;\n\t\t\t\t\tlet _g1 = o.length;\n\t\t\t\t\twhile (_g < _g1) {\n\t\t\t\t\t\tlet i = _g++;\n\t\t\t\t\t\tstr += ((i > 0) ? \",\" : \"\") + Boot.__string_rec(o[i], s);\n\t\t\t\t\t};\n\t\t\t\t\tstr += \"]\";\n\t\t\t\t\treturn str;\n\t\t\t\t};\n\t\t\t\tlet tostr;\n\t\t\t\ttry {\n\t\t\t\t\ttostr = o.toString;\n\t\t\t\t}catch (_g) {\n\t\t\t\t\treturn \"???\";\n\t\t\t\t};\n\t\t\t\tif (tostr != null && tostr != Object.toString && typeof(tostr) == \"function\") {\n\t\t\t\t\tlet s2 = o.toString();\n\t\t\t\t\tif (s2 != \"[object Object]\") {\n\t\t\t\t\t\treturn s2;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t\tlet str = \"{\\n\";\n\t\t\t\ts += \"\\t\";\n\t\t\t\tlet hasp = o.hasOwnProperty != null;\n\t\t\t\tlet k = null;\n\t\t\t\tfor( k in o ) {;\n\t\t\t\tif (hasp && !o.hasOwnProperty(k)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t};\n\t\t\t\tif (k == \"prototype\" || k == \"__class__\" || k == \"__super__\" || k == \"__interfaces__\" || k == \"__properties__\") {\n\t\t\t\t\tcontinue;\n\t\t\t\t};\n\t\t\t\tif (str.length != 2) {\n\t\t\t\t\tstr += \", \\n\";\n\t\t\t\t};\n\t\t\t\tstr += s + k + \" : \" + Boot.__string_rec(o[k], s);\n\t\t\t\t};\n\t\t\t\ts = s.substring(1);\n\t\t\t\tstr += \"\\n\" + s + \"}\";\n\t\t\t\treturn str;\n\t\t\t\tbreak\n\t\t\tcase \"string\":\n\t\t\t\treturn o;\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\treturn String(o);\n\t\t\t\n\t\t};\n\t}\n\tstatic get __name__() {\n\t\treturn \"js.Boot\"\n\t}\n\tget __class__() {\n\t\treturn Boot\n\t}\n}\n\n\n;Boot.__toStr = ({}).toString\n","import {Boot} from \"./js/Boot.js\"\nimport {Register} from \"./genes/Register.js\"\n\nconst $global = Register.$global\n\n/**\nThe Std class provides standard methods for manipulating basic types.\n*/\nexport const Std = Register.global(\"$hxClasses\")[\"Std\"] = \nclass Std {\n\t\n\t/**\n\tConverts any value to a String.\n\t\n\tIf `s` is of `String`, `Int`, `Float` or `Bool`, its value is returned.\n\t\n\tIf `s` is an instance of a class and that class or one of its parent classes has\n\ta `toString` method, that method is called. If no such method is present, the result\n\tis unspecified.\n\t\n\tIf `s` is an enum constructor without argument, the constructor's name is returned. If\n\targuments exists, the constructor's name followed by the String representations of\n\tthe arguments is returned.\n\t\n\tIf `s` is a structure, the field names along with their values are returned. The field order\n\tand the operator separating field names and values are unspecified.\n\t\n\tIf s is null, \"null\" is returned.\n\t*/\n\tstatic string(s) {\n\t\treturn Boot.__string_rec(s, \"\");\n\t}\n\t\n\t/**\n\tConverts a `String` to an `Int`.\n\t\n\tLeading whitespaces are ignored.\n\t\n\t`x` may optionally start with a + or - to denote a postive or negative value respectively.\n\t\n\tIf the optional sign is followed 0x or 0X, hexadecimal notation is recognized where the following\n\tdigits may contain 0-9 and A-F. Both the prefix and digits are case insensitive.\n\t\n\tOtherwise `x` is read as decimal number with 0-9 being allowed characters. Octal and binary\n\tnotations are not supported.\n\t\n\tParsing continues until an invalid character is detected, in which case the result up to\n\tthat point is returned. Scientific notation is not supported. That is `Std.parseInt('10e2')` produces `10`.\n\t\n\tIf `x` is `null`, the result is `null`.\n\tIf `x` cannot be parsed as integer or is empty, the result is `null`.\n\t\n\tIf `x` starts with a hexadecimal prefix which is not followed by at least one valid hexadecimal\n\tdigit, the result is unspecified.\n\t*/\n\tstatic parseInt(x) {\n\t\tlet v = parseInt(x);\n\t\tif ((isNaN)(v)) {\n\t\t\treturn null;\n\t\t};\n\t\treturn v;\n\t}\n\tstatic get __name__() {\n\t\treturn \"Std\"\n\t}\n\tget __class__() {\n\t\treturn Std\n\t}\n}\n\n\n;{\n\tString.__name__ = true;\n\tArray.__name__ = true;\n}\n","import {Register} from \"../Register.js\"\nimport {Std} from \"../../Std.js\"\n\nconst $global = Register.$global\n\nexport const EsMap = Register.global(\"$hxClasses\")[\"genes.util.EsMap\"] = \nclass EsMap extends Register.inherits() {\n\t[Register.new]() {\n\t\tthis.inst = new Map();\n\t}\n\tset(key, value) {\n\t\tthis.inst.set(key, value);\n\t}\n\tget(key) {\n\t\treturn this.inst.get(key);\n\t}\n\tremove(key) {\n\t\treturn this.inst[\"delete\"](key);\n\t}\n\texists(key) {\n\t\treturn this.inst.has(key);\n\t}\n\tkeys() {\n\t\treturn EsMap.adaptIterator(this.inst.keys());\n\t}\n\titerator() {\n\t\treturn EsMap.adaptIterator(this.inst.values());\n\t}\n\ttoString() {\n\t\tlet _g = [];\n\t\tlet key = EsMap.adaptIterator(this.inst.keys());\n\t\twhile (key.hasNext()) {\n\t\t\tlet key1 = key.next();\n\t\t\t_g.push(\"\" + Std.string(key1) + \" => \" + Std.string(this.inst.get(key1)));\n\t\t};\n\t\treturn \"{\" + _g.join(\", \") + \"}\";\n\t}\n\tclear() {\n\t\tthis.inst.clear();\n\t}\n\tstatic adaptIterator(from) {\n\t\tlet value;\n\t\tlet done;\n\t\tlet queue = function () {\n\t\t\tlet data = from.next();\n\t\t\tvalue = data.value;\n\t\t\tdone = data.done;\n\t\t};\n\t\treturn {\"hasNext\": function () {\n\t\t\tif (done == null) {\n\t\t\t\tqueue();\n\t\t\t};\n\t\t\treturn !done;\n\t\t}, \"next\": function () {\n\t\t\tif (done == null) {\n\t\t\t\tqueue();\n\t\t\t};\n\t\t\tlet pending = value;\n\t\t\tqueue();\n\t\t\treturn pending;\n\t\t}};\n\t}\n\tstatic get __name__() {\n\t\treturn \"genes.util.EsMap\"\n\t}\n\tget __class__() {\n\t\treturn EsMap\n\t}\n}\nEsMap.prototype.inst = null;\n\n","import {MapKeyValueIterator} from \"../iterators/MapKeyValueIterator.js\"\nimport {IMap} from \"../Constraints.js\"\nimport {EsMap} from \"../../genes/util/EsMap.js\"\nimport {Register} from \"../../genes/Register.js\"\n\nconst $global = Register.$global\n\nexport const StringMap = Register.global(\"$hxClasses\")[\"haxe.ds.StringMap\"] = \nclass StringMap extends Register.inherits(EsMap) {\n\t[Register.new]() {\n\t\tsuper[Register.new]();\n\t}\n\tcopy() {\n\t\tlet copied = new StringMap();\n\t\tcopied.inst = new Map(this.inst);\n\t\treturn copied;\n\t}\n\tkeyValueIterator() {\n\t\treturn new MapKeyValueIterator(this);\n\t}\n\tstatic get __name__() {\n\t\treturn \"haxe.ds.StringMap\"\n\t}\n\tstatic get __interfaces__() {\n\t\treturn [IMap]\n\t}\n\tstatic get __super__() {\n\t\treturn EsMap\n\t}\n\tget __class__() {\n\t\treturn StringMap\n\t}\n}\n\n","import {Register} from \"./genes/Register.js\"\n\nconst $global = Register.$global\n\nexport const HxOverrides = Register.global(\"$hxClasses\")[\"HxOverrides\"] = \nclass HxOverrides {\n\tstatic cca(s, index) {\n\t\tlet x = s.charCodeAt(index);\n\t\tif (x != x) {\n\t\t\treturn undefined;\n\t\t};\n\t\treturn x;\n\t}\n\tstatic substr(s, pos, len) {\n\t\tif (len == null) {\n\t\t\tlen = s.length;\n\t\t} else if (len < 0) {\n\t\t\tif (pos == 0) {\n\t\t\t\tlen = s.length + len;\n\t\t\t} else {\n\t\t\t\treturn \"\";\n\t\t\t};\n\t\t};\n\t\treturn s.substr(pos, len);\n\t}\n\tstatic now() {\n\t\treturn Date.now();\n\t}\n\tstatic get __name__() {\n\t\treturn \"HxOverrides\"\n\t}\n\tget __class__() {\n\t\treturn HxOverrides\n\t}\n}\n\n\n;((typeof(performance) != \"undefined\") ? typeof(performance.now) == \"function\" : false) ? HxOverrides.now = performance.now.bind(performance) : null\n","import {Register} from \"./genes/Register.js\"\nimport {HxOverrides} from \"./HxOverrides.js\"\n\nconst $global = Register.$global\n\n/**\nThis class provides advanced methods on Strings. It is ideally used with\n`using StringTools` and then acts as an [extension](https://haxe.org/manual/lf-static-extension.html)\nto the `String` class.\n\nIf the first argument to any of the methods is null, the result is\nunspecified.\n*/\nexport const StringTools = Register.global(\"$hxClasses\")[\"StringTools\"] = \nclass StringTools {\n\t\n\t/**\n\tTells if the character in the string `s` at position `pos` is a space.\n\t\n\tA character is considered to be a space character if its character code\n\tis 9,10,11,12,13 or 32.\n\t\n\tIf `s` is the empty String `\"\"`, or if pos is not a valid position within\n\t`s`, the result is false.\n\t*/\n\tstatic isSpace(s, pos) {\n\t\tlet c = HxOverrides.cca(s, pos);\n\t\tif (!(c > 8 && c < 14)) {\n\t\t\treturn c == 32;\n\t\t} else {\n\t\t\treturn true;\n\t\t};\n\t}\n\t\n\t/**\n\tRemoves leading space characters of `s`.\n\t\n\tThis function internally calls `isSpace()` to decide which characters to\n\tremove.\n\t\n\tIf `s` is the empty String `\"\"` or consists only of space characters, the\n\tresult is the empty String `\"\"`.\n\t*/\n\tstatic ltrim(s) {\n\t\tlet l = s.length;\n\t\tlet r = 0;\n\t\twhile (r < l && StringTools.isSpace(s, r)) ++r;\n\t\tif (r > 0) {\n\t\t\treturn HxOverrides.substr(s, r, l - r);\n\t\t} else {\n\t\t\treturn s;\n\t\t};\n\t}\n\t\n\t/**\n\tRemoves trailing space characters of `s`.\n\t\n\tThis function internally calls `isSpace()` to decide which characters to\n\tremove.\n\t\n\tIf `s` is the empty String `\"\"` or consists only of space characters, the\n\tresult is the empty String `\"\"`.\n\t*/\n\tstatic rtrim(s) {\n\t\tlet l = s.length;\n\t\tlet r = 0;\n\t\twhile (r < l && StringTools.isSpace(s, l - r - 1)) ++r;\n\t\tif (r > 0) {\n\t\t\treturn HxOverrides.substr(s, 0, l - r);\n\t\t} else {\n\t\t\treturn s;\n\t\t};\n\t}\n\t\n\t/**\n\tReplace all occurrences of the String `sub` in the String `s` by the\n\tString `by`.\n\t\n\tIf `sub` is the empty String `\"\"`, `by` is inserted after each character\n\tof `s` except the last one. If `by` is also the empty String `\"\"`, `s`\n\tremains unchanged.\n\t\n\tIf `sub` or `by` are null, the result is unspecified.\n\t*/\n\tstatic replace(s, sub, by) {\n\t\treturn s.split(sub).join(by);\n\t}\n\tstatic get __name__() {\n\t\treturn \"StringTools\"\n\t}\n\tget __class__() {\n\t\treturn StringTools\n\t}\n}\n\n","import {Register} from \"./genes/Register.js\"\n\nconst $global = Register.$global\n\n/**\nThe `Lambda` class is a collection of methods to support functional\nprogramming. It is ideally used with `using Lambda` and then acts as an\nextension to Iterable types.\n\nOn static platforms, working with the Iterable structure might be slower\nthan performing the operations directly on known types, such as Array and\nList.\n\nIf the first argument to any of the methods is null, the result is\nunspecified.\n\n@see https://haxe.org/manual/std-Lambda.html\n*/\nexport const Lambda = Register.global(\"$hxClasses\")[\"Lambda\"] = \nclass Lambda {\n\t\n\t/**\n\tTells if `it` contains an element for which `f` is true.\n\t\n\tThis function returns true as soon as an element is found for which a\n\tcall to `f` returns true.\n\t\n\tIf no such element is found, the result is false.\n\t\n\tIf `f` is null, the result is unspecified.\n\t*/\n\tstatic exists(it, f) {\n\t\tlet x = Register.getIterator(it);\n\t\twhile (x.hasNext()) {\n\t\t\tlet x1 = x.next();\n\t\t\tif (f(x1)) {\n\t\t\t\treturn true;\n\t\t\t};\n\t\t};\n\t\treturn false;\n\t}\n\tstatic get __name__() {\n\t\treturn \"Lambda\"\n\t}\n\tget __class__() {\n\t\treturn Lambda\n\t}\n}\n\n","import {Exception} from \"./haxe/Exception.js\"\nimport {Register} from \"./genes/Register.js\"\nimport {Std} from \"./Std.js\"\nimport {HxOverrides} from \"./HxOverrides.js\"\n\nconst $global = Register.$global\n\n/**\nThe EReg class represents regular expressions.\n\nWhile basic usage and patterns consistently work across platforms, some more\ncomplex operations may yield different results. This is a necessary trade-\noff to retain a certain level of performance.\n\nEReg instances can be created by calling the constructor, or with the\nspecial syntax `~/pattern/modifier`\n\nEReg instances maintain an internal state, which is affected by several of\nits methods.\n\nA detailed explanation of the supported operations is available at\n<https://haxe.org/manual/std-regex.html>\n*/\nexport const EReg = Register.global(\"$hxClasses\")[\"EReg\"] = \nclass EReg extends Register.inherits() {\n\t[Register.new](r, opt) {\n\t\tthis.r = new RegExp(r, opt.split(\"u\").join(\"\"));\n\t}\n\t\n\t/**\n\tTells if `this` regular expression matches String `s`.\n\t\n\tThis method modifies the internal state.\n\t\n\tIf `s` is `null`, the result is unspecified.\n\t*/\n\tmatch(s) {\n\t\tif (this.r.global) {\n\t\t\tthis.r.lastIndex = 0;\n\t\t};\n\t\tthis.r.m = this.r.exec(s);\n\t\tthis.r.s = s;\n\t\treturn this.r.m != null;\n\t}\n\t\n\t/**\n\tReturns the matched sub-group `n` of `this` EReg.\n\t\n\tThis method should only be called after `this.match` or\n\t`this.matchSub`, and then operates on the String of that operation.\n\t\n\tThe index `n` corresponds to the n-th set of parentheses in the pattern\n\tof `this` EReg. If no such sub-group exists, the result is unspecified.\n\t\n\tIf `n` equals 0, the whole matched substring is returned.\n\t*/\n\tmatched(n) {\n\t\tif (this.r.m != null && n >= 0 && n < this.r.m.length) {\n\t\t\treturn this.r.m[n];\n\t\t} else {\n\t\t\tthrow Exception.thrown(\"EReg::matched\");\n\t\t};\n\t}\n\t\n\t/**\n\tReturns the position and length of the last matched substring, within\n\tthe String which was last used as argument to `this.match` or\n\t`this.matchSub`.\n\t\n\tIf the most recent call to `this.match` or `this.matchSub` did not\n\tmatch anything, the result is unspecified.\n\t\n\tIf the global g modifier was in place for the matching, the position and\n\tlength of the leftmost substring is returned.\n\t*/\n\tmatchedPos() {\n\t\tif (this.r.m == null) {\n\t\t\tthrow Exception.thrown(\"No string matched\");\n\t\t};\n\t\treturn {\"pos\": this.r.m.index, \"len\": this.r.m[0].length};\n\t}\n\t\n\t/**\n\tTells if `this` regular expression matches a substring of String `s`.\n\t\n\tThis function expects `pos` and `len` to describe a valid substring of\n\t`s`, or else the result is unspecified. To get more robust behavior,\n\t`this.match(s.substr(pos,len))` can be used instead.\n\t\n\tThis method modifies the internal state.\n\t\n\tIf `s` is null, the result is unspecified.\n\t*/\n\tmatchSub(s, pos, len) {\n\t\tif (len == null) {\n\t\t\tlen = -1;\n\t\t};\n\t\tif (this.r.global) {\n\t\t\tthis.r.lastIndex = pos;\n\t\t\tthis.r.m = this.r.exec((len < 0) ? s : HxOverrides.substr(s, 0, pos + len));\n\t\t\tlet b = this.r.m != null;\n\t\t\tif (b) {\n\t\t\t\tthis.r.s = s;\n\t\t\t};\n\t\t\treturn b;\n\t\t} else {\n\t\t\tlet b = this.match((len < 0) ? HxOverrides.substr(s, pos, null) : HxOverrides.substr(s, pos, len));\n\t\t\tif (b) {\n\t\t\t\tthis.r.s = s;\n\t\t\t\tthis.r.m.index += pos;\n\t\t\t};\n\t\t\treturn b;\n\t\t};\n\t}\n\t\n\t/**\n\tCalls the function `f` for the substring of `s` which `this` EReg matches\n\tand replaces that substring with the result of `f` call.\n\t\n\tThe `f` function takes `this` EReg object as its first argument and should\n\treturn a replacement string for the substring matched.\n\t\n\tIf `this` EReg does not match any substring, the result is `s`.\n\t\n\tBy default, this method replaces only the first matched substring. If\n\tthe global g modifier is in place, all matched substrings are replaced.\n\t\n\tIf `s` or `f` are null, the result is unspecified.\n\t*/\n\tmap(s, f) {\n\t\tlet offset = 0;\n\t\tlet buf_b = \"\";\n\t\tdo {\n\t\t\t{\n\t\t\t\tif (offset >= s.length) {\n\t\t\t\t\tbreak;\n\t\t\t\t} else if (!this.matchSub(s, offset)) {\n\t\t\t\t\tbuf_b += Std.string(HxOverrides.substr(s, offset, null));\n\t\t\t\t\tbreak;\n\t\t\t\t};\n\t\t\t\tlet p = this.matchedPos();\n\t\t\t\tbuf_b += Std.string(HxOverrides.substr(s, offset, p.pos - offset));\n\t\t\t\tbuf_b += Std.string(f(this));\n\t\t\t\tif (p.len == 0) {\n\t\t\t\t\tbuf_b += Std.string(HxOverrides.substr(s, p.pos, 1));\n\t\t\t\t\toffset = p.pos + 1;\n\t\t\t\t} else {\n\t\t\t\t\toffset = p.pos + p.len;\n\t\t\t\t};\n\t\t\t}\n\t\t} while (this.r.global);\n\t\tif (!this.r.global && offset > 0 && offset < s.length) {\n\t\t\tbuf_b += Std.string(HxOverrides.substr(s, offset, null));\n\t\t};\n\t\treturn buf_b;\n\t}\n\tstatic get __name__() {\n\t\treturn \"EReg\"\n\t}\n\tget __class__() {\n\t\treturn EReg\n\t}\n}\nEReg.prototype.r = null;\n\n","import {Browser} from \"../../js/Browser.js\"\nimport {Bytes} from \"../io/Bytes.js\"\nimport {HttpBase} from \"./HttpBase.js\"\nimport {StringMap} from \"../ds/StringMap.js\"\nimport {Exception} from \"../Exception.js\"\nimport {Register} from \"../../genes/Register.js\"\nimport {StringTools} from \"../../StringTools.js\"\nimport {Std} from \"../../Std.js\"\nimport {Lambda} from \"../../Lambda.js\"\nimport {EReg} from \"../../EReg.js\"\n\nconst $global = Register.$global\n\nexport const HttpJs = Register.global(\"$hxClasses\")[\"haxe.http.HttpJs\"] = \nclass HttpJs extends Register.inherits(HttpBase) {\n\t[Register.new](url) {\n\t\tthis.async = true;\n\t\tthis.withCredentials = false;\n\t\tsuper[Register.new](url);\n\t}\n\trequest(post) {\n\t\tthis.responseAsString = null;\n\t\tthis.responseBytes = null;\n\t\tthis.responseHeaders = null;\n\t\tlet r = this.req = Browser.createXMLHttpRequest();\n\t\tlet _gthis = this;\n\t\tlet onreadystatechange = function (_) {\n\t\t\tif (r.readyState != 4) {\n\t\t\t\treturn;\n\t\t\t};\n\t\t\tlet s;\n\t\t\ttry {\n\t\t\t\ts = r.status;\n\t\t\t}catch (_g) {\n\t\t\t\ts = null;\n\t\t\t};\n\t\t\tif (s == 0 && Browser.get_supported() && Register.$global.location != null) {\n\t\t\t\tlet protocol = Register.$global.location.protocol.toLowerCase();\n\t\t\t\tlet rlocalProtocol = new EReg(\"^(?:about|app|app-storage|.+-extension|file|res|widget):$\", \"\");\n\t\t\t\tlet isLocal = rlocalProtocol.match(protocol);\n\t\t\t\tif (isLocal) {\n\t\t\t\t\ts = (r.response != null) ? 200 : 404;\n\t\t\t\t};\n\t\t\t};\n\t\t\tif (s == undefined) {\n\t\t\t\ts = null;\n\t\t\t};\n\t\t\tif (s != null) {\n\t\t\t\t_gthis.onStatus(s);\n\t\t\t};\n\t\t\tif (s != null && s >= 200 && s < 400) {\n\t\t\t\t_gthis.req = null;\n\t\t\t\tlet headers = r.getAllResponseHeaders().split(\"\\r\\n\");\n\t\t\t\tlet _g = [];\n\t\t\t\tlet _g1 = 0;\n\t\t\t\tlet _g2 = headers;\n\t\t\t\twhile (_g1 < _g2.length) {\n\t\t\t\t\tlet v = _g2[_g1];\n\t\t\t\t\t++_g1;\n\t\t\t\t\tif (v != \"\") {\n\t\t\t\t\t\t_g.push(v);\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t\theaders = _g;\n\t\t\t\tlet onreadystatechange = new StringMap();\n\t\t\t\t_gthis.responseHeaders = onreadystatechange;\n\t\t\t\tlet _g3 = 0;\n\t\t\t\twhile (_g3 < headers.length) {\n\t\t\t\t\tlet hline = headers[_g3];\n\t\t\t\t\t++_g3;\n\t\t\t\t\tlet a = hline.split(\": \");\n\t\t\t\t\tlet hname = a.shift();\n\t\t\t\t\tlet hval = (a.length == 1) ? a[0] : a.join(\": \");\n\t\t\t\t\thval = StringTools.ltrim(StringTools.rtrim(hval));\n\t\t\t\t\t_gthis.responseHeaders.inst.set(hname, hval);\n\t\t\t\t};\n\t\t\t\t_gthis.success(Bytes.ofData(r.response));\n\t\t\t} else if (s == null || s == 0 && r.response == null) {\n\t\t\t\t_gthis.req = null;\n\t\t\t\t_gthis.onError(\"Failed to connect or resolve host\");\n\t\t\t} else if (s == null) {\n\t\t\t\t_gthis.req = null;\n\t\t\t\tlet onreadystatechange = (r.response != null) ? Bytes.ofData(r.response) : null;\n\t\t\t\t_gthis.responseBytes = onreadystatechange;\n\t\t\t\t_gthis.onError(\"Http Error #\" + r.status);\n\t\t\t} else {\n\t\t\t\tswitch (s) {\n\t\t\t\t\tcase 12007:\n\t\t\t\t\t\t_gthis.req = null;\n\t\t\t\t\t\t_gthis.onError(\"Unknown host\");\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 12029:\n\t\t\t\t\t\t_gthis.req = null;\n\t\t\t\t\t\t_gthis.onError(\"Failed to connect to host\");\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t_gthis.req = null;\n\t\t\t\t\tlet onreadystatechange = (r.response != null) ? Bytes.ofData(r.response) : null;\n\t\t\t\t\t_gthis.responseBytes = onreadystatechange;\n\t\t\t\t\t_gthis.onError(\"Http Error #\" + r.status);\n\t\t\t\t\t\n\t\t\t\t};\n\t\t\t};\n\t\t};\n\t\tif (this.async) {\n\t\t\tr.onreadystatechange = onreadystatechange;\n\t\t};\n\t\tlet uri;\n\t\tlet _g = this.postData;\n\t\tlet _g1 = this.postBytes;\n\t\tif (_g == null) {\n\t\t\tif (_g1 == null) {\n\t\t\t\turi = null;\n\t\t\t} else {\n\t\t\t\tlet bytes = _g1;\n\t\t\t\turi = new Blob([bytes.b.bufferValue]);\n\t\t\t};\n\t\t} else if (_g1 == null) {\n\t\t\tlet str = _g;\n\t\t\turi = str;\n\t\t} else {\n\t\t\turi = null;\n\t\t};\n\t\tif (uri != null) {\n\t\t\tpost = true;\n\t\t} else {\n\t\t\tlet _g = 0;\n\t\t\tlet _g1 = this.params;\n\t\t\twhile (_g < _g1.length) {\n\t\t\t\tlet p = _g1[_g];\n\t\t\t\t++_g;\n\t\t\t\tif (uri == null) {\n\t\t\t\t\turi = \"\";\n\t\t\t\t} else {\n\t\t\t\t\turi = ((uri == null) ? \"null\" : Std.string(uri)) + \"&\";\n\t\t\t\t};\n\t\t\t\tlet s = p.name;\n\t\t\t\tlet uri1 = ((uri == null) ? \"null\" : Std.string(uri)) + encodeURIComponent(s) + \"=\";\n\t\t\t\tlet s1 = p.value;\n\t\t\t\turi = uri1 + encodeURIComponent(s1);\n\t\t\t};\n\t\t};\n\t\ttry {\n\t\t\tif (post) {\n\t\t\t\tr.open(\"POST\", this.url, this.async);\n\t\t\t} else if (uri != null) {\n\t\t\t\tlet question = this.url.split(\"?\").length <= 1;\n\t\t\t\tr.open(\"GET\", this.url + ((question) ? \"?\" : \"&\") + ((uri == null) ? \"null\" : Std.string(uri)), this.async);\n\t\t\t\turi = null;\n\t\t\t} else {\n\t\t\t\tr.open(\"GET\", this.url, this.async);\n\t\t\t};\n\t\t\tr.responseType = \"arraybuffer\";\n\t\t}catch (_g) {\n\t\t\tlet e = Exception.caught(_g).unwrap();\n\t\t\tthis.req = null;\n\t\t\tthis.onError(e.toString());\n\t\t\treturn;\n\t\t};\n\t\tr.withCredentials = this.withCredentials;\n\t\tif (!Lambda.exists(this.headers, function (h) {\n\t\t\treturn h.name == \"Content-Type\";\n\t\t}) && post && this.postData == null) {\n\t\t\tr.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\n\t\t};\n\t\tlet _g2 = 0;\n\t\tlet _g3 = this.headers;\n\t\twhile (_g2 < _g3.length) {\n\t\t\tlet h = _g3[_g2];\n\t\t\t++_g2;\n\t\t\tr.setRequestHeader(h.name, h.value);\n\t\t};\n\t\tr.send(uri);\n\t\tif (!this.async) {\n\t\t\tonreadystatechange(null);\n\t\t};\n\t}\n\tstatic get __name__() {\n\t\treturn \"haxe.http.HttpJs\"\n\t}\n\tstatic get __super__() {\n\t\treturn HttpBase\n\t}\n\tget __class__() {\n\t\treturn HttpJs\n\t}\n}\nHttpJs.prototype.async = null;\nHttpJs.prototype.withCredentials = null;\nHttpJs.prototype.responseHeaders = null;\nHttpJs.prototype.req = null;\n\n","import {Register} from \"./genes/Register.js\"\n\nconst $global = Register.$global\n\nexport const SimpleFuture = Register.global(\"$hxClasses\")[\"SimpleFuture\"] = \nclass SimpleFuture extends Register.inherits() {\n\t[Register.new]() {\n\t\tthis._isFinished = false;\n\t}\n\ttrigger(data) {\n\t\tthis._result = data;\n\t\tthis._isFinished = true;\n\t\tif (this._callback != null) {\n\t\t\tthis._callback(this._result);\n\t\t};\n\t}\n\tthen(callback) {\n\t\tthis._callback = callback;\n\t\tif (this._isFinished) {\n\t\t\tcallback(this._result);\n\t\t};\n\t}\n\tstatic get __name__() {\n\t\treturn \"SimpleFuture\"\n\t}\n\tget __class__() {\n\t\treturn SimpleFuture\n\t}\n}\nSimpleFuture.prototype._callback = null;\nSimpleFuture.prototype._result = null;\nSimpleFuture.prototype._isFinished = null;\n\n","import {Register} from \"./genes/Register.js\"\n\nconst $global = Register.$global\n\n/**\nThe Reflect API is a way to manipulate values dynamically through an\nabstract interface in an untyped manner. Use with care.\n\n@see https://haxe.org/manual/std-reflection.html\n*/\nexport const Reflect = Register.global(\"$hxClasses\")[\"Reflect\"] = \nclass Reflect {\n\t\n\t/**\n\tReturns the value of the field named `field` on object `o`.\n\t\n\tIf `o` is not an object or has no field named `field`, the result is\n\tnull.\n\t\n\tIf the field is defined as a property, its accessors are ignored. Refer\n\tto `Reflect.getProperty` for a function supporting property accessors.\n\t\n\tIf `field` is null, the result is unspecified.\n\t*/\n\tstatic field(o, field) {\n\t\ttry {\n\t\t\treturn o[field];\n\t\t}catch (_g) {\n\t\t\treturn null;\n\t\t};\n\t}\n\t\n\t/**\n\tReturns the value of the field named `field` on object `o`, taking\n\tproperty getter functions into account.\n\t\n\tIf the field is not a property, this function behaves like\n\t`Reflect.field`, but might be slower.\n\t\n\tIf `o` or `field` are null, the result is unspecified.\n\t*/\n\tstatic getProperty(o, field) {\n\t\tlet tmp;\n\t\tif (o == null) {\n\t\t\treturn null;\n\t\t} else {\n\t\t\tlet tmp1;\n\t\t\tif (o.__properties__) {\n\t\t\t\ttmp = o.__properties__[\"get_\" + field];\n\t\t\t\ttmp1 = tmp;\n\t\t\t} else {\n\t\t\t\ttmp1 = false;\n\t\t\t};\n\t\t\tif (tmp1) {\n\t\t\t\treturn o[tmp]();\n\t\t\t} else {\n\t\t\t\treturn o[field];\n\t\t\t};\n\t\t};\n\t}\n\t\n\t/**\n\tSets the field named `field` of object `o` to value `value`, taking\n\tproperty setter functions into account.\n\t\n\tIf the field is not a property, this function behaves like\n\t`Reflect.setField`, but might be slower.\n\t\n\tIf `field` is null, the result is unspecified.\n\t*/\n\tstatic setProperty(o, field, value) {\n\t\tlet tmp;\n\t\tlet tmp1;\n\t\tif (o.__properties__) {\n\t\t\ttmp = o.__properties__[\"set_\" + field];\n\t\t\ttmp1 = tmp;\n\t\t} else {\n\t\t\ttmp1 = false;\n\t\t};\n\t\tif (tmp1) {\n\t\t\to[tmp](value);\n\t\t} else {\n\t\t\to[field] = value;\n\t\t};\n\t}\n\t\n\t/**\n\tReturns the fields of structure `o`.\n\t\n\tThis method is only guaranteed to work on anonymous structures. Refer to\n\t`Type.getInstanceFields` for a function supporting class instances.\n\t\n\tIf `o` is null, the result is unspecified.\n\t*/\n\tstatic fields(o) {\n\t\tlet a = [];\n\t\tif (o != null) {\n\t\t\tlet hasOwnProperty = Object.prototype.hasOwnProperty;\n\t\t\tfor( var f in o ) {;\n\t\t\tif (f != \"__id__\" && f != \"hx__closures__\" && hasOwnProperty.call(o, f)) {\n\t\t\t\ta.push(f);\n\t\t\t};\n\t\t\t};\n\t\t};\n\t\treturn a;\n\t}\n\tstatic get __name__() {\n\t\treturn \"Reflect\"\n\t}\n\tget __class__() {\n\t\treturn Reflect\n\t}\n}\n\n","import {HttpJs} from \"../haxe/http/HttpJs.js\"\nimport {Exception} from \"../haxe/Exception.js\"\nimport {Register} from \"../genes/Register.js\"\nimport {Std} from \"../Std.js\"\nimport {SimpleFuture} from \"../SimpleFuture.js\"\nimport {Reflect as Reflect__1} from \"../Reflect.js\"\nimport {Recommendations, RecommendationList, RecommendationItem} from \"../Recommendations.js\"\n\nconst $global = Register.$global\n\nexport const RecoBackendV2 = Register.global(\"$hxClasses\")[\"internal.RecoBackendV2\"] = \nclass RecoBackendV2 extends Register.inherits() {\n\t[Register.new]() {\n\t}\n\tstatic _requestUri() {\n\t\treturn \"https://\" + RecoBackendV2._req_domain + \"/api/\" + RecoBackendV2._environment + \"/recommendations/requests\";\n\t}\n\tstatic noConsentBody() {\n\t\treturn {\"device_id\": \"no-consent\", \"user_group\": \"no-consent\", \"version\": \"no-consent\"};\n\t}\n\tstatic buildRequestBody(lists) {\n\t\tlet body = {\"lists\": lists, \"page_type\": (RecoBackendV2._page_visit != null) ? RecoBackendV2._page_visit : RecoBackendV2._page_view, \"channel\": \"www-desktop\"};\n\t\tif (RecoBackendV2._consent == 0) {\n\t\t\tlet a = RecoBackendV2.noConsentBody();\n\t\t\tlet _g = 0;\n\t\t\tlet _g1 = Reflect__1.fields(a);\n\t\t\twhile (_g < _g1.length) {\n\t\t\t\tlet field = _g1[_g];\n\t\t\t\t++_g;\n\t\t\t\tbody[field] = Reflect__1.field(a, field);\n\t\t\t};\n\t\t} else if (RecoBackendV2._user_id != null) {\n\t\t\tbody[\"user_id\"] = RecoBackendV2._user_id;\n\t\t} else {\n\t\t\tbody[\"device_id\"] = RecoBackendV2._device_id;\n\t\t};\n\t\treturn body;\n\t}\n\tstatic _requestRecos(lists) {\n\t\tlet future = new SimpleFuture();\n\t\tlet responseBody = null;\n\t\tRegister.$global.console.log(RecoBackendV2._requestUri());\n\t\tlet req = new HttpJs(RecoBackendV2._requestUri());\n\t\treq.setHeader(\"Content-Type\", \"application/json\");\n\t\treq.setPostData(JSON.stringify(RecoBackendV2.buildRequestBody(lists)));\n\t\treq.onError = function (msg) {\n\t\t\tthrow Exception.thrown(\"HTTP Request Error: \" + msg);\n\t\t};\n\t\treq.onStatus = function (status) {\n\t\t\tif (status < 200 || status >= 300) {\n\t\t\t\tthrow Exception.thrown(\"HTTP Status Error: \" + status);\n\t\t\t};\n\t\t};\n\t\ttry {\n\t\t\treq.request(false);\n\t\t}catch (_g) {\n\t\t\tlet e = Exception.caught(_g).unwrap();\n\t\t\tthrow Exception.thrown(\"Failed to execute synchronous request: \" + Std.string(e));\n\t\t};\n\t\tlet handleReturnBody = function (body) {\n\t\t\tlet parsed = JSON.parse(body);\n\t\t\tRegister.$global.console.log(Std.string(parsed));\n\t\t\tlet recos = _RecommendationsInternal.fromRequestData(parsed);\n\t\t\tRegister.$global.console.log(\"got recommendations parsed\");\n\t\t\tfuture.trigger(recos);\n\t\t};\n\t\tlet data = req.get_responseData();\n\t\tif (data != null) {\n\t\t\thandleReturnBody(data);\n\t\t} else {\n\t\t\treq.onData = handleReturnBody;\n\t\t};\n\t\treturn future;\n\t}\n\tstatic getRawRecommendations(lists) {\n\t\treturn RecoBackendV2._requestRecos(lists);\n\t}\n\tstatic setConsent(consent) {\n\t\tif (consent > 2) {\n\t\t\tconsent = 2;\n\t\t};\n\t\tRecoBackendV2._consent = consent;\n\t}\n\tstatic setPageVisit(page) {\n\t\tRecoBackendV2._page_visit = page;\n\t}\n\tstatic setEnvironment(env) {\n\t\tRecoBackendV2._environment = env;\n\t}\n\tstatic setDeviceId(id) {\n\t\tRecoBackendV2._device_id = id;\n\t}\n\tstatic setUserId(id) {\n\t\tRecoBackendV2._user_id = id;\n\t}\n\tstatic setRequestDomain(domain) {\n\t\tRecoBackendV2._req_domain = domain;\n\t}\n\tstatic setPageView(page) {\n\t\tRecoBackendV2._page_view = page;\n\t}\n\tstatic getRequestDomain() {\n\t\treturn RecoBackendV2._req_domain;\n\t}\n\tstatic getEnvironment() {\n\t\treturn RecoBackendV2._environment;\n\t}\n\tstatic getPageVisit() {\n\t\treturn RecoBackendV2._page_visit;\n\t}\n\tstatic getUserId() {\n\t\treturn RecoBackendV2._user_id;\n\t}\n\tstatic getDeviceId() {\n\t\treturn RecoBackendV2._device_id;\n\t}\n\tstatic getPageView() {\n\t\treturn RecoBackendV2._page_view;\n\t}\n\tstatic get __name__() {\n\t\treturn \"internal.RecoBackendV2\"\n\t}\n\tget __class__() {\n\t\treturn RecoBackendV2\n\t}\n}\n\n\nRecoBackendV2._environment = null\nRecoBackendV2._device_id = null\nRecoBackendV2._user_id = null\nRecoBackendV2._consent = 0\nRecoBackendV2._req_domain = \"europe-west1.froomle.com\"\nRecoBackendV2._page_visit = null\nRecoBackendV2._page_view = null\nexport const ListNameRequestData = function() {};\nListNameRequestData.__isInterface__ = true;\n\nexport const Lishdjskf = function() {};\nLishdjskf.__isInterface__ = true;\n\nexport const _RecommendationsInternal = Register.global(\"$hxClasses\")[\"internal._RecommendationsInternal\"] = \nclass _RecommendationsInternal extends Register.inherits() {\n\t[Register.new](device_id, request_id, user_group, user_id, lst) {\n\t\tthis.request_id = request_id;\n\t\tthis.user_group = user_group;\n\t\tthis.device_id = device_id;\n\t\tthis.user_id = user_id;\n\t\tthis._lists = lst;\n\t}\n\titems() {\n\t\tlet _g = [];\n\t\tlet _g1 = 0;\n\t\tlet _g2 = this._lists;\n\t\twhile (_g1 < _g2.length) {\n\t\t\tlet l = _g2[_g1];\n\t\t\t++_g1;\n\t\t\tlet _g3 = 0;\n\t\t\tlet _g4 = l.items;\n\t\t\twhile (_g3 < _g4.length) {\n\t\t\t\tlet item = _g4[_g3];\n\t\t\t\t++_g3;\n\t\t\t\t_g.push(item);\n\t\t\t};\n\t\t};\n\t\treturn _g;\n\t}\n\tlists() {\n\t\treturn this._lists;\n\t}\n\tgetItemsByListName(list_name) {\n\t\tlet _g = 0;\n\t\tlet _g1 = this._lists;\n\t\twhile (_g < _g1.length) {\n\t\t\tlet list = _g1[_g];\n\t\t\t++_g;\n\t\t\tif (list.list_name == list_name) {\n\t\t\t\treturn list;\n\t\t\t};\n\t\t};\n\t\treturn null;\n\t}\n\tstatic fromRequestData(data) {\n\t\tlet lists = Reflect__1.getProperty(data, \"lists\");\n\t\tRegister.$global.console.log(\"lists: \" + Std.string(lists));\n\t\tRegister.$global.console.log(\"data: \" + Std.string(data));\n\t\tlet builtLists = [];\n\t\tlet _g = 0;\n\t\twhile (_g < lists.length) {\n\t\t\tlet list = lists[_g];\n\t\t\t++_g;\n\t\t\tlet itemsData = Reflect__1.getProperty(list, \"items\");\n\t\t\tlet builtItems = [];\n\t\t\tlet _g1 = 0;\n\t\t\twhile (_g1 < itemsData.length) {\n\t\t\t\tlet item = itemsData[_g1];\n\t\t\t\t++_g1;\n\t\t\t\tbuiltItems.push(new _RecommendationItemInternal(item));\n\t\t\t};\n\t\t\tlet recoList = new _RecommendationsListInternal({\"limit\": Reflect__1.getProperty(list, \"limit\"), \"list_key\": Reflect__1.getProperty(list, \"list_key\"), \"list_name\": Reflect__1.getProperty(list, \"list_name\"), \"list_size\": Reflect__1.getProperty(list, \"list_size\"), \"items\": builtItems});\n\t\t\tbuiltLists.push(recoList);\n\t\t};\n\t\treturn new _RecommendationsInternal(Reflect__1.getProperty(data, \"device_id\"), Reflect__1.getProperty(data, \"request_id\"), Reflect__1.getProperty(data, \"user_group\"), Reflect__1.getProperty(data, \"user_id\"), builtLists);\n\t}\n\tstatic get __name__() {\n\t\treturn \"internal._RecommendationsInternal\"\n\t}\n\tstatic get __interfaces__() {\n\t\treturn [Recommendations]\n\t}\n\tget __class__() {\n\t\treturn _RecommendationsInternal\n\t}\n}\n_RecommendationsInternal.prototype.request_id = null;\n_RecommendationsInternal.prototype.user_group = null;\n_RecommendationsInternal.prototype.user_id = null;\n_RecommendationsInternal.prototype.device_id = null;\n_RecommendationsInternal.prototype._lists = null;\n\n\nexport const _RecommendationsListInternal = Register.global(\"$hxClasses\")[\"internal._RecommendationsListInternal\"] = \nclass _RecommendationsListInternal extends Register.inherits() {\n\t[Register.new](data) {\n\t\tthis.items = data.items;\n\t\tthis.limit = data.limit;\n\t\tthis.list_key = data.list_key;\n\t\tthis.list_name = data.list_name;\n\t\tthis.list_size = data.list_size;\n\t}\n\tstatic get __name__() {\n\t\treturn \"internal._RecommendationsListInternal\"\n\t}\n\tstatic get __interfaces__() {\n\t\treturn [RecommendationList]\n\t}\n\tget __class__() {\n\t\treturn _RecommendationsListInternal\n\t}\n}\n_RecommendationsListInternal.prototype.limit = null;\n_RecommendationsListInternal.prototype.list_key = null;\n_RecommendationsListInternal.prototype.list_name = null;\n_RecommendationsListInternal.prototype.list_size = null;\n_RecommendationsListInternal.prototype.items = null;\n\n\nexport const _RecommendationItemInternal = Register.global(\"$hxClasses\")[\"internal._RecommendationItemInternal\"] = \nclass _RecommendationItemInternal extends Register.inherits() {\n\t[Register.new](data) {\n\t\tthis._data = {};\n\t\tthis.Id = Reflect__1.getProperty(data, \"item_id\");\n\t\tthis.RequestId = Reflect__1.getProperty(data, \"request_id\");\n\t\tthis.UserGroup = Reflect__1.getProperty(data, \"user_group\");\n\t\tlet _g = 0;\n\t\tlet _g1 = Reflect__1.fields(data);\n\t\twhile (_g < _g1.length) {\n\t\t\tlet field = _g1[_g];\n\t\t\t++_g;\n\t\t\tthis._data[field] = Reflect__1.field(data, field);\n\t\t};\n\t}\n\tget(key) {\n\t\treturn this._data[key];\n\t}\n\tstatic get __name__() {\n\t\treturn \"internal._RecommendationItemInternal\"\n\t}\n\tstatic get __interfaces__() {\n\t\treturn [RecommendationItem]\n\t}\n\tget __class__() {\n\t\treturn _RecommendationItemInternal\n\t}\n}\n_RecommendationItemInternal.prototype.Id = null;\n_RecommendationItemInternal.prototype.RequestId = null;\n_RecommendationItemInternal.prototype.UserGroup = null;\n_RecommendationItemInternal.prototype._data = null;\n\n\nexport const RecoBackendV2_Fields_ = Register.global(\"$hxClasses\")[\"internal._RecoBackendV2.RecoBackendV2_Fields_\"] = \nclass RecoBackendV2_Fields_ {\n\tstatic getRawRecommendations(lists) {\n\t\treturn RecoBackendV2.getRawRecommendations(lists);\n\t}\n\tstatic setConsent(consent) {\n\t\tRecoBackendV2.setConsent(consent);\n\t}\n\tstatic setPageVisit(page) {\n\t\tRecoBackendV2.setPageVisit(page);\n\t}\n\tstatic setEnvironment(env) {\n\t\tRecoBackendV2.setEnvironment(env);\n\t}\n\tstatic setDeviceId(id) {\n\t\tRecoBackendV2.setDeviceId(id);\n\t}\n\tstatic setUserId(id) {\n\t\tRecoBackendV2.setUserId(id);\n\t}\n\tstatic setRequestDomain(domain) {\n\t\tRecoBackendV2.setRequestDomain(domain);\n\t}\n\tstatic setPageView(page) {\n\t\tRecoBackendV2.setPageView(page);\n\t}\n\tstatic getConsent() {\n\t\tRecoBackendV2_Fields_.getConsent();\n\t}\n\tstatic getPageVisit() {\n\t\tRecoBackendV2.getPageVisit();\n\t}\n\tstatic getEnvironment() {\n\t\tRecoBackendV2.getEnvironment();\n\t}\n\tstatic getDeviceId() {\n\t\tRecoBackendV2.getDeviceId();\n\t}\n\tstatic getUserId() {\n\t\tRecoBackendV2.getUserId();\n\t}\n\tstatic getPageView() {\n\t\tRecoBackendV2.getPageView();\n\t}\n\tstatic get __name__() {\n\t\treturn \"internal._RecoBackendV2.RecoBackendV2_Fields_\"\n\t}\n\tget __class__() {\n\t\treturn RecoBackendV2_Fields_\n\t}\n}\n\n\nexport const getRawRecommendations = RecoBackendV2_Fields_.getRawRecommendations\nexport const setConsent = RecoBackendV2_Fields_.setConsent\nexport const setPageVisit = RecoBackendV2_Fields_.setPageVisit\nexport const setEnvironment = RecoBackendV2_Fields_.setEnvironment\nexport const setDeviceId = RecoBackendV2_Fields_.setDeviceId\nexport const setUserId = RecoBackendV2_Fields_.setUserId\nexport const setRequestDomain = RecoBackendV2_Fields_.setRequestDomain\nexport const setPageView = RecoBackendV2_Fields_.setPageView\nexport const getConsent = RecoBackendV2_Fields_.getConsent\nexport const getPageVisit = RecoBackendV2_Fields_.getPageVisit\nexport const getEnvironment = RecoBackendV2_Fields_.getEnvironment\nexport const getDeviceId = RecoBackendV2_Fields_.getDeviceId\nexport const getUserId = RecoBackendV2_Fields_.getUserId\nexport const getPageView = RecoBackendV2_Fields_.getPageView\n","import {RecoBackendV2} from \"./internal/RecoBackendV2.js\"\nimport {Register} from \"./genes/Register.js\"\n\nconst $global = Register.$global\n\nexport const FroomleSdk = Register.global(\"$hxClasses\")[\"FroomleSdk\"] = \nclass FroomleSdk {\n\tstatic register() {\n\t\tif (FroomleSdk.registered) {\n\t\t\treturn;\n\t\t};\n\t\tif (!FroomleSdk._env_set) {\n\t\t\treturn;\n\t\t};\n\t\tif (!FroomleSdk._page_visit_set && !FroomleSdk._page_view_set) {\n\t\t\treturn;\n\t\t};\n\t\tFroomleSdk.registered = true;\n\t}\n\tstatic setEnvironment(env) {\n\t\tRecoBackendV2.setEnvironment(env);\n\t\tFroomleSdk._env_set = true;\n\t\tFroomleSdk.register();\n\t}\n\tstatic setDeviceId(id) {\n\t\tRecoBackendV2.setDeviceId(id);\n\t}\n\tstatic setUserId(id) {\n\t\tRecoBackendV2.setUserId(id);\n\t}\n\tstatic setConsent(consent) {\n\t\tRecoBackendV2.setConsent(consent);\n\t}\n\tstatic setPageView(page) {\n\t\tRecoBackendV2.setPageView(page);\n\t\tFroomleSdk._page_view_set = true;\n\t\tFroomleSdk.register();\n\t}\n\tstatic setPageVisit(page) {\n\t\tRecoBackendV2.setPageVisit(page);\n\t\tFroomleSdk._page_visit_set = true;\n\t\tFroomleSdk.register();\n\t}\n\tstatic setRequestDomain(domain) {\n\t\tRecoBackendV2.setRequestDomain(domain);\n\t}\n\tstatic getRawRecommendations(lists) {\n\t\treturn RecoBackendV2.getRawRecommendations(lists);\n\t}\n\tstatic getVersion() {\n\t\treturn \"0.0.1\";\n\t}\n\tstatic get __name__() {\n\t\treturn \"FroomleSdk\"\n\t}\n\tget __class__() {\n\t\treturn FroomleSdk\n\t}\n}\n\n\nFroomleSdk._env_set = false\nFroomleSdk._page_visit_set = false\nFroomleSdk._page_view_set = false\nFroomleSdk.registered = false","import {Register} from \"../../genes/Register.js\"\n\nconst $global = Register.$global\n\nexport const FroomleDomTree = Register.global(\"$hxClasses\")[\"internal.domHandler.FroomleDomTree\"] = \nclass FroomleDomTree extends Register.inherits() {\n\t[Register.new]() {\n\t}\n\tcreateElement(tag) {\n\t\tlet el = window.document.createElement(tag);\n\t\treturn el;\n\t}\n\tquerySelectorAll(selector) {\n\t\tlet el = this.root;\n\t\tlet out = [];\n\t\tlet list = el.querySelectorAll(selector);\n\t\tlet _g = 0;\n\t\tlet _g1 = list.length;\n\t\twhile (_g < _g1) {\n\t\t\tlet i = _g++;\n\t\t\tout.push(list.item(i));\n\t\t};\n\t\treturn out;\n\t}\n\tgetRoot() {\n\t\treturn this.root;\n\t}\n\ttoString() {\n\t\tlet el = this.root;\n\t\treturn el.outerHTML;\n\t}\n\tstatic run() {\n\t}\n\tstatic fromHtml(html) {\n\t\treturn new FroomleDomTree();\n\t}\n\tstatic fromDocument() {\n\t\tlet tree = new FroomleDomTree();\n\t\ttree.root = window.document;\n\t\treturn tree;\n\t}\n\tstatic get __name__() {\n\t\treturn \"internal.domHandler.FroomleDomTree\"\n\t}\n\tget __class__() {\n\t\treturn FroomleDomTree\n\t}\n}\nFroomleDomTree.prototype.root = null;\n\n","import {Register} from \"../genes/Register.js\"\n\nconst $global = Register.$global\n\nexport const ADomNode = Register.global(\"$hxClasses\")[\"internal._ADomNode.ADomNode\"] = \nclass ADomNode {\n\tstatic _new(el) {\n\t\treturn el;\n\t}\n\tstatic fromElement(el) {\n\t\treturn el;\n\t}\n\tstatic create(tree, tag) {\n\t\treturn window.document.createElement(tag);\n\t}\n\tstatic replaceChild(this1, newChild, oldChild) {\n\t\tthis1.replaceChild(newChild, oldChild);\n\t}\n\tstatic get attributes() {\n\t\treturn this.get_attributes()\n\t}\n\tstatic get_attributes(this1) {\n\t\tlet el = this1;\n\t\tlet out = [];\n\t\tlet _g = 0;\n\t\tlet _g1 = el.attributes.length;\n\t\twhile (_g < _g1) {\n\t\t\tlet i = _g++;\n\t\t\tlet attr = el.attributes.item(i);\n\t\t\tout.push({\"name\": attr.name, \"value\": attr.value});\n\t\t};\n\t\treturn out;\n\t}\n\tstatic addChild(this1, child) {\n\t\tthis1.appendChild(child);\n\t}\n\tstatic removeChild(this1, child) {\n\t\tthis1.removeChild(child);\n\t}\n\tstatic getAttribute(this1, name) {\n\t\treturn this1.getAttribute(name);\n\t}\n\tstatic setAttribute(this1, name, value) {\n\t\tthis1.setAttribute(name, value);\n\t}\n\tstatic getText(this1) {\n\t\treturn this1.textContent;\n\t}\n\tstatic setText(this1, v) {\n\t\tthis1.textContent = v;\n\t}\n\tstatic get children() {\n\t\treturn this.get_children()\n\t}\n\tstatic get_children(this1) {\n\t\tlet result = [];\n\t\tlet el = this1;\n\t\tlet nodelist = el.children;\n\t\tlet _g = 0;\n\t\tlet _g1 = nodelist.length;\n\t\twhile (_g < _g1) {\n\t\t\tlet i = _g++;\n\t\t\tresult.push(nodelist[i]);\n\t\t};\n\t\treturn result;\n\t}\n\tstatic querySelectorAll(this1, selector) {\n\t\tlet el = this1;\n\t\tlet out = [];\n\t\tlet list = el.querySelectorAll(selector);\n\t\tlet _g = 0;\n\t\tlet _g1 = list.length;\n\t\twhile (_g < _g1) {\n\t\t\tlet i = _g++;\n\t\t\tout.push(list.item(i));\n\t\t};\n\t\treturn out;\n\t}\n\tstatic getFilterKeyValue(this1) {\n\t\tlet _g = 0;\n\t\tlet _g1 = ADomNode.get_attributes(this1);\n\t\twhile (_g < _g1.length) {\n\t\t\tlet attr = _g1[_g];\n\t\t\t++_g;\n\t\t\tif (attr.name.startsWith(\"data-froomle-reco-filter-\")) {\n\t\t\t\treturn {\"key\": attr.name.substring(25), \"value\": attr.value};\n\t\t\t};\n\t\t};\n\t\treturn {\"key\": null, \"value\": null};\n\t}\n\tstatic get __name__() {\n\t\treturn \"internal._ADomNode.ADomNode_Impl_\"\n\t}\n\tget __class__() {\n\t\treturn ADomNode\n\t}\n}\n\n","import {FroomleDomTree} from \"./FroomleDomTree.js\"\nimport {RecoBackendV2_Fields_} from \"../RecoBackendV2.js\"\nimport {ADomNode} from \"../ADomNode.js\"\nimport {Register} from \"../../genes/Register.js\"\nimport {StringTools} from \"../../StringTools.js\"\nimport {Std} from \"../../Std.js\"\nimport {SimpleFuture} from \"../../SimpleFuture.js\"\nimport {Reflect as Reflect__1} from \"../../Reflect.js\"\nimport {HxOverrides} from \"../../HxOverrides.js\"\nimport {EReg} from \"../../EReg.js\"\n\nconst $global = Register.$global\n\nexport const DomDomDom = Register.global(\"$hxClasses\")[\"internal.domHandler.DomDomDom\"] = \nclass DomDomDom extends Register.inherits() {\n\t[Register.new]() {\n\t}\n\tstatic _fillRecoTargets(parent) {\n\t\tlet future = new SimpleFuture();\n\t\tif (parent == null) {\n\t\t\tfuture.trigger(false);\n\t\t\treturn future;\n\t\t};\n\t\tRegister.$global.console.log(\"filling recos\");\n\t\tlet targets = [];\n\t\tlet el = parent;\n\t\tlet out = [];\n\t\tlet list = el.querySelectorAll(\"*\");\n\t\tlet _g = 0;\n\t\tlet _g1 = list.length;\n\t\twhile (_g < _g1) {\n\t\t\tlet i = _g++;\n\t\t\tout.push(list.item(i));\n\t\t};\n\t\tlet allElements = out;\n\t\tRegister.$global.console.log(allElements.length + \" amount of elements\");\n\t\tlet _g2 = 0;\n\t\twhile (_g2 < allElements.length) {\n\t\t\tlet el = allElements[_g2];\n\t\t\t++_g2;\n\t\t\tlet _g = 0;\n\t\t\tlet _g1 = ADomNode.get_attributes(el);\n\t\t\twhile (_g < _g1.length) {\n\t\t\t\tlet attr = _g1[_g];\n\t\t\t\t++_g;\n\t\t\t\tif (attr.name == \"data-froomle-reco\") {\n\t\t\t\t\ttargets.push(el);\n\t\t\t\t};\n\t\t\t};\n\t\t};\n\t\tRegister.$global.console.log(\"amount of targets: \" + ((targets.length == null) ? \"null\" : \"\" + targets.length));\n\t\tlet targets_filtered = [];\n\t\tlet _g3 = 0;\n\t\twhile (_g3 < targets.length) {\n\t\t\tlet target = targets[_g3];\n\t\t\t++_g3;\n\t\t\tif (target.getAttribute(\"data-froomle-request-id\") == null && (target.getAttribute(\"data-froomle-id\") == null || target.getAttribute(\"data-froomle-id\") == \"\")) {\n\t\t\t\ttargets_filtered.push(target);\n\t\t\t};\n\t\t};\n\t\tRegister.$global.console.log(\"filtered: \" + Std.string(targets_filtered));\n\t\tRegister.$global.console.log(\"filtered targets length \" + targets_filtered.length);\n\t\tif (targets_filtered.length < 1) {\n\t\t\treturn new SimpleFuture();\n\t\t};\n\t\tlet listsR = [];\n\t\tlet listsNodes = [];\n\t\tlet tmp_list_name = \"\";\n\t\tlet tmp_filter_key = \"\";\n\t\tlet tmp_filter_value = \"\";\n\t\tlet tmp_current_node_list = [];\n\t\tlet pushListToLists = function () {\n\t\t\tlet list = {\"list_name\": tmp_list_name, \"list_size\": tmp_current_node_list.length, \"limit\": tmp_current_node_list.length};\n\t\t\tif (tmp_filter_key != null) {\n\t\t\t\tReflect__1.setProperty(list, tmp_filter_key, tmp_filter_value);\n\t\t\t};\n\t\t\tlistsR.push(list);\n\t\t\tlistsNodes.push(tmp_current_node_list);\n\t\t\tRegister.$global.console.log(\"pushed a list with name:\" + tmp_list_name + \"filter_key: \" + ((tmp_filter_key == null) ? \"null\" : \"\" + tmp_filter_key) + \" and value \" + ((tmp_filter_value == null) ? \"null\" : \"\" + tmp_filter_value));\n\t\t\tRegister.$global.console.log(\"had length \" + list.list_size);\n\t\t};\n\t\tlet setNewListValues = function (list_name, filter_key, filter_value, first_node) {\n\t\t\ttmp_list_name = list_name;\n\t\t\ttmp_filter_key = filter_key;\n\t\t\ttmp_filter_value = filter_value;\n\t\t\ttmp_current_node_list = [first_node];\n\t\t};\n\t\tlet _g4 = 0;\n\t\twhile (_g4 < targets_filtered.length) {\n\t\t\tlet target = targets_filtered[_g4];\n\t\t\t++_g4;\n\t\t\tlet reco_list_key = target.getAttribute(\"data-froomle-reco\");\n\t\t\tlet key_value = ADomNode.getFilterKeyValue(target);\n\t\t\tif (tmp_list_name == \"\") {\n\t\t\t\tsetNewListValues(reco_list_key, key_value.key, key_value.value, target);\n\t\t\t\tcontinue;\n\t\t\t} else if (reco_list_key == tmp_list_name && key_value.key == tmp_filter_key && key_value.value == tmp_filter_value) {\n\t\t\t\ttmp_current_node_list.push(target);\n\t\t\t\tcontinue;\n\t\t\t} else {\n\t\t\t\tpushListToLists();\n\t\t\t\tsetNewListValues(reco_list_key, key_value.key, key_value.value, target);\n\t\t\t\tcontinue;\n\t\t\t};\n\t\t};\n\t\tif (tmp_list_name != \"\") {\n\t\t\tpushListToLists();\n\t\t};\n\t\tlet recos = RecoBackendV2_Fields_.getRawRecommendations(listsR);\n\t\tRegister.$global.console.log(\"should have recos\");\n\t\trecos.then(function (recommendations) {\n\t\t\tlet _g_current = 0;\n\t\t\tlet _g_array = recommendations.lists();\n\t\t\twhile (_g_current < _g_array.length) {\n\t\t\t\tlet _g_value = _g_array[_g_current];\n\t\t\t\tlet _g_key = _g_current++;\n\t\t\t\tlet index = _g_key;\n\t\t\t\tlet list = _g_value;\n\t\t\t\tlet tmp = list.items.length != listsNodes[index].length;\n\t\t\t\tlet _g_current1 = 0;\n\t\t\t\tlet _g_array1 = list.items;\n\t\t\t\twhile (_g_current1 < _g_array1.length) {\n\t\t\t\t\tlet _g_value = _g_array1[_g_current1];\n\t\t\t\t\tlet _g_key = _g_current1++;\n\t\t\t\t\tlet itemIndex = _g_key;\n\t\t\t\t\tlet listItem = _g_value;\n\t\t\t\t\tDomDomDom._fillParameters(listsNodes[index][itemIndex], listItem, recommendations.request_id);\n\t\t\t\t};\n\t\t\t};\n\t\t\tfuture.trigger(true);\n\t\t});\n\t\treturn future;\n\t}\n\tstatic _fillParameters(element, reco, requestId) {\n\t\tlet fillParam = function (atr_el, param_key, reco_key, defaultValue) {\n\t\t\tif (defaultValue == null) {\n\t\t\t\tdefaultValue = \"\";\n\t\t\t};\n\t\t\tlet getAttrByPath = function (obj, path, defaultValue) {\n\t\t\t\tif (defaultValue == null) {\n\t\t\t\t\tdefaultValue = \"fgh\";\n\t\t\t\t};\n\t\t\t\ttry {\n\t\t\t\t\tlet ereg = new EReg(\"\\\\\\\\[(\\\\\\\\w+)\\\\\\\\]\", \"g\");\n\t\t\t\t\tpath = ereg.map(path, function (r) {\n\t\t\t\t\t\treturn \".\" + r.matched(1);\n\t\t\t\t\t});\n\t\t\t\t\tpath = StringTools.replace(path, \"[\", \".\");\n\t\t\t\t\tpath = StringTools.replace(path, \"]\", \"\");\n\t\t\t\t\tif (HxOverrides.cca(path, 0) == 46) {\n\t\t\t\t\t\tpath = HxOverrides.substr(path, 1, null);\n\t\t\t\t\t};\n\t\t\t\t\tlet parts = path.split(\".\");\n\t\t\t\t\tlet acc = obj.get(parts[0]);\n\t\t\t\t\tlet _g = 1;\n\t\t\t\t\tlet _g1 = parts.length;\n\t\t\t\t\twhile (_g < _g1) {\n\t\t\t\t\t\tlet i = _g++;\n\t\t\t\t\t\tif (acc == null) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (((acc) instanceof Array) && Std.parseInt(parts[i]) != null) {\n\t\t\t\t\t\t\tacc = acc[Std.parseInt(parts[i])];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tacc = Reflect__1.field(acc, parts[i]);\n\t\t\t\t\t\t};\n\t\t\t\t\t};\n\t\t\t\t\treturn acc;\n\t\t\t\t}catch (_g) {\n\t\t\t\t\treturn defaultValue;\n\t\t\t\t};\n\t\t\t};\n\t\t\ttry {\n\t\t\t\tlet value = getAttrByPath(reco, reco_key, defaultValue);\n\t\t\t\tif (param_key == \"inner\") {\n\t\t\t\t\tatr_el.textContent = value;\n\t\t\t\t} else {\n\t\t\t\t\tatr_el.setAttribute(param_key, value);\n\t\t\t\t};\n\t\t\t}catch (_g) {\n\t\t\t};\n\t\t};\n\t\telement.setAttribute(\"data-froomle-id\", reco.Id);\n\t\telement.setAttribute(\"data-froomle-request-id\", requestId);\n\t\tlet el = element;\n\t\tlet out = [];\n\t\tlet list = el.querySelectorAll(\"*\");\n\t\tlet _g = 0;\n\t\tlet _g1 = list.length;\n\t\twhile (_g < _g1) {\n\t\t\tlet i = _g++;\n\t\t\tout.push(list.item(i));\n\t\t};\n\t\tlet allElements = out;\n\t\tlet _g2 = 0;\n\t\twhile (_g2 < allElements.length) {\n\t\t\tlet el = allElements[_g2];\n\t\t\t++_g2;\n\t\t\tlet _g = 0;\n\t\t\tlet _g1 = ADomNode.get_attributes(el);\n\t\t\twhile (_g < _g1.length) {\n\t\t\t\tlet attr = _g1[_g];\n\t\t\t\t++_g;\n\t\t\t\tif (attr.name.startsWith(\"data-froomle-param-\")) {\n\t\t\t\t\tlet param_key = StringTools.replace(attr.name, \"data-froomle-param-\", \"\");\n\t\t\t\t\tlet reco_key = attr.value;\n\t\t\t\t\tfillParam(el, param_key, reco_key);\n\t\t\t\t};\n\t\t\t};\n\t\t};\n\t}\n\tstatic _orderElements(tree) {\n\t\tlet extractOrderSection = function (el, key, list_name) {\n\t\t\tlet orderChildren = [];\n\t\t\tlet children = ADomNode.get_children(el);\n\t\t\tlet _g = 0;\n\t\t\twhile (_g < children.length) {\n\t\t\t\tlet child = children[_g];\n\t\t\t\t++_g;\n\t\t\t\tlet attr_value = child.getAttribute(\"data-froomle-ordervalue\");\n\t\t\t\tif (attr_value != null) {\n\t\t\t\t\torderChildren.push(child);\n\t\t\t\t\tlet newEl = ADomNode.create(tree, \"span\");\n\t\t\t\t\tnewEl.setAttribute(\"data-froomle-tmp-node\", \"\");\n\t\t\t\t\tADomNode.replaceChild(el, newEl, child);\n\t\t\t\t};\n\t\t\t};\n\t\t\tlet categories = [];\n\t\t\tlet _g1 = 0;\n\t\t\twhile (_g1 < orderChildren.length) {\n\t\t\t\tlet orderEl = orderChildren[_g1];\n\t\t\t\t++_g1;\n\t\t\t\tcategories.push(orderEl.getAttribute(\"data-froomle-ordervalue\"));\n\t\t\t};\n\t\t\treturn {\"el\": el, \"key\": key, \"values\": categories, \"orderChildren\": orderChildren, \"list_name\": list_name};\n\t\t};\n\t\tlet promise = new SimpleFuture();\n\t\tlet el = tree.getRoot();\n\t\tlet out = [];\n\t\tlet list = el.querySelectorAll(\"*\");\n\t\tlet _g = 0;\n\t\tlet _g1 = list.length;\n\t\twhile (_g < _g1) {\n\t\t\tlet i = _g++;\n\t\t\tout.push(list.item(i));\n\t\t};\n\t\tlet allElements = out;\n\t\tlet sections = [];\n\t\tlet _g2 = 0;\n\t\twhile (_g2 < allElements.length) {\n\t\t\tlet el = allElements[_g2];\n\t\t\t++_g2;\n\t\t\tlet _g = 0;\n\t\t\tlet _g1 = ADomNode.get_attributes(el);\n\t\t\twhile (_g < _g1.length) {\n\t\t\t\tlet attr = _g1[_g];\n\t\t\t\t++_g;\n\t\t\t\tif (attr.name.startsWith(\"data-froomle-order-\")) {\n\t\t\t\t\tsections.push(extractOrderSection(el, attr.name.substring(19), attr.value));\n\t\t\t\t};\n\t\t\t};\n\t\t};\n\t\tif (sections.length < 1) {\n\t\t\tpromise.trigger(false);\n\t\t\treturn promise;\n\t\t};\n\t\tlet lists = [];\n\t\tlet _g3 = 0;\n\t\twhile (_g3 < sections.length) {\n\t\t\tlet section = sections[_g3];\n\t\t\t++_g3;\n\t\t\tlet list = {\"list_name\": section.list_name, \"limit\": section.values.length, \"list_size\": section.values.length};\n\t\t\tlet order = {};\n\t\t\tReflect__1.setProperty(order, section.key, section.values);\n\t\t\tReflect__1.setProperty(list, \"order\", order);\n\t\t\tlists.push(list);\n\t\t};\n\t\tRecoBackendV2_Fields_.getRawRecommendations(lists).then(function (recos) {\n\t\t\tRegister.$global.console.log(\"got order recos\");\n\t\t\tRegister.$global.console.log(Std.string(recos));\n\t\t\tlet _g_current = 0;\n\t\t\tlet _g_array = recos.lists();\n\t\t\twhile (_g_current < _g_array.length) {\n\t\t\t\tlet _g_value = _g_array[_g_current];\n\t\t\t\tlet _g_key = _g_current++;\n\t\t\t\tlet index = _g_key;\n\t\t\t\tlet list = _g_value;\n\t\t\t\tlet section = sections[index];\n\t\t\t\tsection.el.setAttribute(\"data-froomle-request-id\", recos.request_id);\n\t\t\t\tRegister.$global.console.log(\"children \" + Std.string(section.orderChildren));\n\t\t\t\tlet sortedItems = [];\n\t\t\t\tlet _g = 0;\n\t\t\t\tlet _g1 = list.items;\n\t\t\t\twhile (_g < _g1.length) {\n\t\t\t\t\tlet item = _g1[_g];\n\t\t\t\t\t++_g;\n\t\t\t\t\tlet value = item.get(section.key);\n\t\t\t\t\tRegister.$global.console.log(\"looking for value \" + value + \" for key \" + section.key);\n\t\t\t\t\tRegister.$global.console.log(\"item was \" + Std.string(item));\n\t\t\t\t\tlet _g_current = 0;\n\t\t\t\t\tlet _g_array = section.values;\n\t\t\t\t\twhile (_g_current < _g_array.length) {\n\t\t\t\t\t\tlet _g_value = _g_array[_g_current];\n\t\t\t\t\t\tlet _g_key = _g_current++;\n\t\t\t\t\t\tlet orderItemindex = _g_key;\n\t\t\t\t\t\tlet orderItem = _g_value;\n\t\t\t\t\t\tif (value == orderItem) {\n\t\t\t\t\t\t\tRegister.$global.console.log(\"found matching value \" + value);\n\t\t\t\t\t\t\tsortedItems.push(section.orderChildren[orderItemindex]);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t};\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t\tRegister.$global.console.log(\"sorted items \" + Std.string(sortedItems));\n\t\t\t\tlet _g2 = 0;\n\t\t\t\tlet _g3 = sortedItems.length;\n\t\t\t\twhile (_g2 < _g3) {\n\t\t\t\t\tlet i = _g2++;\n\t\t\t\t\tRegister.$global.console.log(\"replacing in section \" + Std.string(section.el.innerHTML) + \" the item \" + Std.string(sortedItems[i]));\n\t\t\t\t\tlet _g = 0;\n\t\t\t\t\tlet _g1 = ADomNode.get_children(section.el);\n\t\t\t\t\twhile (_g < _g1.length) {\n\t\t\t\t\t\tlet tmpChild = _g1[_g];\n\t\t\t\t\t\t++_g;\n\t\t\t\t\t\tif (tmpChild.getAttribute(\"data-froomle-tmp-node\") == \"\") {\n\t\t\t\t\t\t\tADomNode.replaceChild(section.el, sortedItems[i], tmpChild);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t};\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t\tRegister.$global.console.log(\"done replacing for section \" + Std.string(section.el.innerHTML));\n\t\t\t\tRegister.$global.console.log(\"sorted items \" + Std.string(sortedItems));\n\t\t\t};\n\t\t\tpromise.trigger(true);\n\t\t});\n\t\treturn promise;\n\t}\n\tstatic domInit(tree) {\n\t\tDomDomDom._orderElements(tree).then(function (bol) {\n\t\t\tDomDomDom._fillRecoTargets(tree.getRoot());\n\t\t});\n\t}\n\tstatic fillElementRecos(el) {\n\t\tDomDomDom._fillRecoTargets(el);\n\t}\n\tstatic runFromHtml(input) {\n\t\tlet tree = FroomleDomTree.fromHtml(input);\n\t\tDomDomDom.domInit(tree);\n\t\treturn tree.toString();\n\t}\n\tstatic get __name__() {\n\t\treturn \"internal.domHandler.DomDomDom\"\n\t}\n\tget __class__() {\n\t\treturn DomDomDom\n\t}\n}\n\n","import {Register} from \"./genes/Register.js\"\n\nconst $global = Register.$global\n\nexport {Version} from \"./Version.js\"\nexport {Recommendations} from \"./Recommendations.js\"\nexport {RecommendationList} from \"./Recommendations.js\"\nexport {RecommendationItem} from \"./Recommendations.js\"\nexport {RecoBackendV2} from \"./internal/RecoBackendV2.js\"\nexport {FroomleSdk} from \"./FroomleSdk.js\"\nexport {FroomleDomTree} from \"./internal/domHandler/FroomleDomTree.js\"\nexport {DomDomDom} from \"./internal/domHandler/DomDomDom.js\"","import { FroomleSdk, RecoBackendV2 } from \"./generated/index.js\";\n\n// Aliases to match old test API\nexport const setFroomleUserId = FroomleSdk.setUserId;\nexport const getFroomleUserId = RecoBackendV2.getUserId;\nexport const setFroomleEnvironment = FroomleSdk.setEnvironment;\nexport const getFroomleEnvironment = RecoBackendV2.getEnvironment;\n\n// These seem to be missing or changed in V2\nexport const getRecommendationItem = async () => { throw new Error(\"Not implemented in V2\"); };\nexport const preloadRecommendations = async () => { console.warn(\"preloadRecommendations not implemented\"); };\nexport const getRecommendations = async () => { return []; }; // Stub\n\n// Internals missing in V2\nexport const _getRecoQueue = () => [];\nexport const _getAllItemsFromCache = () => [];\nexport const _getRecommendedItemsCache = () => [];\nexport const _getRawRecommendationCache = () => [];\nexport const reset = async () => {};\nexport const weirdReco = () => {};\n\nexport * from \"./generated/index.js\";\n"],"mappings":"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","names":["Register","_Register","name","obj","get","value","v","a","a1","ArrayIterator","superClass","res","resolve","defer","o","m","f","array","$global","Register","Version","$global","Register","Recommendations","RecommendationList","RecommendationItem","$global","Register","ValueException","Exception","value","previous","$native","$global","Register","Exception","message","previous","$native","value","ValueException","$global","Register","Browser","Exception","$global","Register","Error","e","$global","Register","Encoding","$global","Register","Bytes","data","pos","len","encoding","Exception","Error","Encoding","s","b","i","max","debug","c","code","c2","c3","u","hb","$global","Register","HttpBase","url","name","value","_g","_g1","i","data","msg","status","Encoding","$global","Register","MapKeyValueIterator","map","key","$global","Register","IMap","$global","Register","Boot","o","s","t","con","n","$this","$r0","_g","_g1","_g2","p","str","i","tostr","s2","hasp","k","$global","Register","Std","s","Boot","x","v","$global","Register","EsMap","key","value","_g","key1","Std","from","done","queue","data","pending","$global","Register","StringMap","EsMap","copied","MapKeyValueIterator","IMap","$global","Register","HxOverrides","s","index","x","pos","len","$global","Register","StringTools","s","pos","c","HxOverrides","l","sub","by","$global","Register","Lambda","it","f","x","x1","$global","Register","EReg","r","opt","s","n","Exception","pos","len","HxOverrides","b","f","offset","buf_b","Std","p","$global","Register","HttpJs","HttpBase","url","post","r","Browser","_gthis","onreadystatechange","_","s","protocol","EReg","headers","_g","_g1","_g2","v","StringMap","_g3","hline","a","hname","hval","StringTools","Bytes","uri","bytes","p","Std","uri1","s1","question","e","Exception","Lambda","h","$global","Register","SimpleFuture","data","callback","$global","Register","Reflect","o","field","tmp","tmp1","value","a","hasOwnProperty","f","$global","Register","RecoBackendV2","lists","body","a","_g","_g1","Reflect","field","future","SimpleFuture","responseBody","req","HttpJs","msg","Exception","status","e","Std","handleReturnBody","parsed","recos","_RecommendationsInternal","data","consent","page","env","id","domain","ListNameRequestData","Lishdjskf","device_id","request_id","user_group","user_id","lst","_g2","_g3","_g4","item","list_name","list","builtLists","itemsData","builtItems","_RecommendationItemInternal","recoList","_RecommendationsListInternal","Recommendations","RecommendationList","key","RecommendationItem","RecoBackendV2_Fields_","getRawRecommendations","setConsent","setPageVisit","setEnvironment","setDeviceId","setUserId","setRequestDomain","setPageView","getConsent","getPageVisit","getEnvironment","getDeviceId","getUserId","getPageView","$global","Register","FroomleSdk","env","RecoBackendV2","id","consent","page","domain","lists","$global","Register","FroomleDomTree","tag","selector","el","out","list","_g","_g1","html","tree","$global","Register","ADomNode","el","tree","tag","this1","newChild","oldChild","out","_g","_g1","i","attr","child","name","value","v","result","nodelist","selector","list","$global","Register","DomDomDom","parent","future","SimpleFuture","targets","el","out","list","_g","_g1","i","allElements","_g2","ADomNode","attr","targets_filtered","_g3","target","Std","listsR","listsNodes","tmp_list_name","tmp_filter_key","tmp_filter_value","tmp_current_node_list","pushListToLists","Reflect","setNewListValues","list_name","filter_key","filter_value","first_node","_g4","reco_list_key","key_value","recos","RecoBackendV2_Fields_","recommendations","_g_current","_g_array","_g_value","index","tmp","_g_current1","_g_array1","itemIndex","listItem","element","reco","requestId","fillParam","atr_el","param_key","reco_key","defaultValue","getAttrByPath","obj","path","EReg","r","StringTools","HxOverrides","parts","acc","value","tree","extractOrderSection","key","orderChildren","children","child","newEl","categories","orderEl","promise","sections","lists","section","order","sortedItems","item","orderItemindex","tmpChild","bol","input","FroomleDomTree","$global","Register","setFroomleUserId","FroomleSdk","getFroomleUserId","RecoBackendV2","setFroomleEnvironment","getFroomleEnvironment","getRecommendationItem","preloadRecommendations","getRecommendations","_getRecoQueue","_getAllItemsFromCache","_getRecommendedItemsCache","_getRawRecommendationCache","reset","weirdReco"]}
package/package.json ADDED
@@ -0,0 +1,64 @@
1
+ {
2
+ "name": "@froomle/frontend-sdk",
3
+ "version": "0.0.1-alpha.0",
4
+ "description": "Froomle frontend SDK",
5
+ "type": "module",
6
+ "main": "./dist/index.cjs",
7
+ "module": "./dist/index.js",
8
+ "react-native": "./dist/index.js",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "react-native": "./dist/index.js",
13
+ "import": "./dist/index.js",
14
+ "require": "./dist/index.cjs",
15
+ "default": "./dist/index.js"
16
+ },
17
+ "./testing": {
18
+ "types": "./dist/testing/testing.d.ts",
19
+ "import": "./dist/testing/testing.js",
20
+ "require": "./dist/testing/testing.cjs"
21
+ },
22
+ "./react": {
23
+ "types": "./dist/react/react.main.d.ts",
24
+ "import": "./dist/react/react.main.js",
25
+ "require": "./dist/react/react.main.cjs",
26
+ "default": "./dist/react/react.main.js"
27
+ }
28
+ },
29
+ "types": "dist/index.d.ts",
30
+ "unpkg": "dist/index.global.js",
31
+ "jsdelivr": "dist/index.global.js",
32
+ "sideEffects": false,
33
+ "files": [
34
+ "dist",
35
+ "README.md",
36
+ "LICENSE"
37
+ ],
38
+ "scripts": {
39
+ "prepublishOnly": "npm run build",
40
+ "test": "npx playwright test",
41
+ "type-check": "tsc --noEmit",
42
+ "buildn": "node build.js",
43
+ "build": "tsup"
44
+ },
45
+ "engines": {
46
+ "node": ">=16.0.0"
47
+ },
48
+ "devDependencies": {
49
+ "shx": "^0.4.0",
50
+ "tsup": "^8.5.0",
51
+ "typescript": "^5.9.3"
52
+ },
53
+ "keywords": [
54
+ "sdk",
55
+ "frontend",
56
+ "froomle"
57
+ ],
58
+ "dependencies": {
59
+ "@playwright/test": "^1.57.0",
60
+ "@types/react": "^19.2.2",
61
+ "react": "^19.2.0",
62
+ "react-dom": "^19.2.0"
63
+ }
64
+ }