gatsby-source-ttlive
Version:
Gatsby source plugin to source nodes from TT-Live data
46 lines (39 loc) • 11.6 kB
JavaScript
;var A=Object.defineProperty,ae=Object.defineProperties,se=Object.getOwnPropertyDescriptor,ie=Object.getOwnPropertyDescriptors,le=Object.getOwnPropertyNames,$=Object.getOwnPropertySymbols;var F=Object.prototype.hasOwnProperty,ue=Object.prototype.propertyIsEnumerable;var w=(e,t,n)=>t in e?A(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,g=(e,t)=>{for(var n in t||(t={}))F.call(t,n)&&w(e,n,t[n]);if($)for(var n of $(t))ue.call(t,n)&&w(e,n,t[n]);return e},f=(e,t)=>ae(e,ie(t));var ce=(e,t)=>{for(var n in t)A(e,n,{get:t[n],enumerable:!0})},me=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of le(t))!F.call(e,o)&&o!==n&&A(e,o,{get:()=>t[o],enumerable:!(r=se(t,o))||r.enumerable});return e};var de=e=>me(A({},"__esModule",{value:!0}),e);var d=(e,t,n)=>new Promise((r,o)=>{var a=l=>{try{u(n.next(l))}catch(c){o(c)}},s=l=>{try{u(n.throw(l))}catch(c){o(c)}},u=l=>l.done?r(l.value):Promise.resolve(l.value).then(a,s);u((n=n.apply(e,t)).next())});var Fe={};ce(Fe,{createResolvers:()=>ne,createSchemaCustomization:()=>_,sourceNodes:()=>te});module.exports=de(Fe);var _=({actions:e})=>{let{createTypes:t}=e;t([`
type Fixture implements Node {
id: ID!
date: Date
link: String
homeTeam: Team @link
guestTeam: Team @link
league: League @link
result: [Int]
}
type PlayerScore implements Node {
won: Int
lost: Int
gamesPlayed: Int
pk1Diff: [Int]
pk2Diff: [Int]
pk3Diff: [Int]
pk4Diff: [Int]
}
type Club implements Node {
teams: [Team] @link(by: "club.id", from: "id")
logo: ClubLogosJson @link(by: "clubId", from: "id")
}
type Group implements Node {
leagues: [League] @link(by: "group.id", from: "id")
}
type Team implements Node {
league: League @link
club: Club @link
fixtures: [Fixture]
}
type League implements Node {
association: Association @link
group: Group @link
}
type ClubLogosJson implements Node {
club: Club @link(by: "id", from: "clubId")
}
`])};var S=require("gatsby-core-utils");var E=r=>d(null,[r],function*({associations:e,createNode:t,createNodeId:n}){e.forEach(o=>{t(pe({association:o,createNodeId:n}))})});function pe({association:e,createNodeId:t}){let n=t(`Association${e.id}`),r=JSON.stringify(e);return f(g({},e),{id:n,originalId:e.id,parent:null,children:[],internal:{type:"Association",content:r,contentDigest:(0,S.createContentDigest)(e)}})}var G=require("gatsby-core-utils");var R=({groups:e,createNode:t,createNodeId:n})=>{e.forEach(r=>{t(ge({group:r,createNodeId:n}))})};function ge({group:e,createNodeId:t}){let n=t(`Group${e.name}`);e.leagues___NODE=e.leagueIds.map(a=>t(`League${a}`)),delete e.leagueIds;let r=JSON.stringify(e);return f(g({},e),{id:n,parent:null,children:[],internal:{type:"Group",content:r,contentDigest:(0,G.createContentDigest)(e)}})}var O=require("gatsby-core-utils"),z=({clubs:e,createNode:t,createNodeId:n})=>{e.forEach(r=>{t(fe({club:r,createNodeId:n}))})};function fe({club:e,createNodeId:t}){let n=t(`Club${e.name}`),r=JSON.stringify(e);return Object.assign({},e,{id:n,parent:null,children:[],internal:{type:"Club",content:r,contentDigest:(0,O.createContentDigest)(e)}})}var M=require("gatsby-core-utils");var J=({league:e,groupName:t,createNode:n,createNodeId:r})=>{n(ye({league:e,groupName:t,createNodeId:r}))};function ye({league:e,groupName:t,createNodeId:n}){let r=n(`League${e.id}`);e.association=n(`Association${e.associationId}`),delete e.associationId,e.group=n(`Group${t}`);let o=JSON.stringify(e);return f(g({},e),{id:r,ogiginalId:e.id,parent:null,children:[],internal:{type:"League",content:o,contentDigest:(0,M.createContentDigest)(e)}})}var X=require("gatsby-core-utils"),v=({fixtures:e,createNode:t,createNodeId:n})=>{e.forEach(r=>{t(Ne({fixture:r,createNodeId:n}))})};function Ne({fixture:e,createNodeId:t}){let n=t(`Fixture${e.nr}-${e.date}-${e.link}`);e.homeTeam=t(`Team${e.homeTeamId}`),delete e.homeTeamId,e.guestTeam=t(`Team${e.guestTeamId}`),delete e.guestTeamId,e.league=t(`League${e.leagueId}`),delete e.leagueId;let r=JSON.stringify(e);return Object.assign({},e,{id:n,parent:null,children:[],internal:{type:"Fixture",content:r,contentDigest:(0,X.createContentDigest)(e)}})}var K=require("gatsby-core-utils");var j=({teams:e,fixtures:t,createNode:n,createNodeId:r})=>{e.forEach(o=>{let a=be({team:o,createNodeId:r,fixtures:t});n(a)})};function be({team:e,createNodeId:t,fixtures:n}){let r=t(`Team${e.id}`);e.playersFirstHalf=e.playersFirstHalf?e.playersFirstHalf.map(s=>({player___NODE:t(`Player${s.id}`)})):[],e.playersSecondHalf=e.playersSecondHalf?e.playersSecondHalf.map(s=>({player___NODE:t(`Player${s.id}`)})):[],e.fixtures=n?n.filter(s=>s.homeTeam___NODE===r||s.guestTeam___NODE===r).map(s=>t(`Fixture${s.nr}-${s.date}-${s.link}`)):[],e.league=t(`League${e.leagueId}`),delete e.leagueId,e.club=t(`Club${e.clubName}`),delete e.clubName,delete e.clubShortName;let o=JSON.stringify(e);return f(g({},e),{originalId:e.id,id:r,parent:null,children:[],internal:{type:"Team",content:o,contentDigest:(0,K.createContentDigest)(e)}})}var T=require("gatsby-core-utils");var V=({players:e,createNode:t,createNodeId:n})=>{e.forEach(r=>{let o=Ie({player:r,createNodeId:n,createNode:t});t(o)})};function Ie({player:e,createNodeId:t,createNode:n}){let r=t(`Player${e.id}`);e.scores___NODE=e.scores.map(s=>{let u=he({playerScore:s,createNodeId:t});return n(u),u.id}),delete e.scores;let o=JSON.stringify(e);return f(g({},e),{originalId:e.id,id:r,parent:null,children:[],internal:{type:"Player",content:o,contentDigest:(0,T.createContentDigest)(e)}})}function he({playerScore:e,createNodeId:t}){let n=t(`PlayerScore${e.playerId}${e.position}${e.teamId}${e.isSecondHalf}`);e.team___NODE=t(`Team${e.teamId}`),delete e.teamId,e.player___NODE=t(`Player${e.playerId}`),delete e.playerId;let r=JSON.stringify(e);return f(g({},e),{id:n,parent:null,children:[],internal:{type:"PlayerScore",content:r,contentDigest:(0,T.createContentDigest)(e)}})}var q=require("fast-xml-parser");function I(e){return d(this,null,function*(){try{let n=yield(yield fetch(e)).text();return new q.XMLParser({htmlEntities:!0}).parse(n)}catch(t){throw console.log("Error fetching or parsing XML:",t),t}})}var Pe=397,De=`https://app.web4sport.de/ajax/tischtennis/staffeln.ashx?VerbandID=${Pe}`;function U(){return d(this,null,function*(){let e=yield Ae();return xe(e)})}function Ae(){return d(this,null,function*(){var e,t;try{let n=yield I(De);return(t=(e=n==null?void 0:n.root)==null?void 0:e.gruppe)!=null?t:[]}catch(n){throw console.error("Error fetching groups data:",n),n}})}function xe(e){return e.map(({title:t,staffeln:n})=>{let r=Array.isArray(n.staffel)?n.staffel.map(o=>o.id).reverse():[n.staffel.id];return{name:t,leagueIds:r||[]}})}function b(e){if(!e||e==="Vorbericht")return null;let t=[...e.replace(/\s|kl/g,"").split(":").map(n=>parseInt(n))];return t&&t.length===2?t:null}var Z=(e,t,n)=>{let r=t==null?void 0:t.map(a=>W(e,a,!0)),o=n==null?void 0:n.map(a=>W(e,a,!1));return[...r!=null?r:[],...o!=null?o:[]]};function W(e,t,n=null){let{Nr:r,Datum:o,HeimTeamID:a,GastTeamID:s,Ergebnis:u,Kennzeichnung:l,Link:c}=t;return{leagueId:e,nr:r,isFirstHalf:n,date:o,homeTeamId:a,guestTeamId:s,result:u?b(u):null,note:l,link:c}}function C(e,t,n=!1){let{ID:r,Position:o,Spielername:a,Teilnahme:s,PK1:u,PK2:l,PK3:c,PK4:m,GesamtPlus:i,GesamtMinus:p,Attribute:y,LivePZ:N}=e;return{id:r,name:a,scores:[{playerId:r,teamId:t,position:o,isSecondHalf:n,gamesPlayed:s!=null?s:0,pk1Diff:u?b(u):null,pk2Diff:l?b(l):null,pk3Diff:c?b(c):null,pk4Diff:m?b(m):null,won:i!=null?i:0,lost:p!=null?p:0,attributes:y!=null?y:null,score:N||null}]}}var B=(e,t,n)=>t?Array.isArray(t)?t.map((r,o)=>{var a;return Q(e,r,(a=n==null?void 0:n[o])!=null?a:null)}):[Q(e,t,n!=null?n:null)]:[];function Q(e,t,n){var L,k;let{TeamID:r,TeamName:o,TeamNameKurz:a,Tabelle:{Platz:s,Spiele:u,Siege:l,Unentschieden:c,Niederlagen:m,SaetzeDif:i,SpielePlus:p,SpieleMinus:y,SpieleDif:N,PunktePlus:h,PunkteMinus:re,PunkteDif:oe},Bilanz:P}=t,D=n==null?void 0:n.Bilanz;return{id:r,leagueId:e,clubName:Y(o),clubShortName:Y(a),name:o,shortName:a,position:s,gamesPlayed:u,won:l,drawn:c,lost:m,matchesWon:p,matchesLost:y,matchesDiff:N,setsDiff:i,pointsWon:h,pointsLost:re,pointsDiff:oe,playersFirstHalf:((L=P==null?void 0:P.Spieler)==null?void 0:L.length)>0?P.Spieler.map(x=>C(x,r)):[],playersSecondHalf:((k=D==null?void 0:D.Spieler)==null?void 0:k.length)>0?D.Spieler.map(x=>C(x,r,!0)):[]}}var Te=/ M{0,3}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/;function Y(e){return e.replace(Te,"")}function H(e){return d(this,null,function*(){var u,l;let{leagueData:n,teamsData:r,fixturesData:o}=yield Ce(e),a=null;return n?Le(n,r,(u=a==null?void 0:a.teamsData)!=null?u:null,o,(l=a==null?void 0:a.fixturesData)!=null?l:null):null})}function Ce(e,t=!1){return d(this,null,function*(){var r,o,a,s,u,l,c,m;let n=`https://app.web4sport.de/Ajax/Tischtennis/Staffel_Komplett.aspx?StaffelID=${e}&PlanRunde=${t?2:1}&SpielerRunde=${t?2:1}`;try{let i=yield I(n);if(i!=null&&i.error)throw new Error(`Error fetching league data: ${i.error}`);return(r=i==null?void 0:i.data)!=null&&r.Staffel?{leagueData:i.data.Staffel,teamsData:(s=(a=(o=i==null?void 0:i.data)==null?void 0:o.Teams)==null?void 0:a.Mannschaft)!=null?s:null,fixturesData:(m=(c=(l=(u=i==null?void 0:i.data)==null?void 0:u.Spielplan)==null?void 0:l.Runde)==null?void 0:c.Spiel)!=null?m:null}:{leagueData:null,teamsData:null,fixturesData:null}}catch(i){throw console.error("Error fetching league data:",i),i}})}function Le(e,t,n,r,o){let{StaffelID:a,VerbandID:s,StaffelName:u,StaffelKurz:l}=e,c=a;return{id:c,associationId:s,name:u,shortName:l,teams:B(c,t,n),fixtures:Z(c,r,o)}}var ke="https://app.web4sport.de/ajax/Verband.ashx";function ee(){return d(this,null,function*(){let e=yield $e();return we(e)})}function $e(){return d(this,null,function*(){var e,t;try{let n=yield I(ke);return(t=(e=n==null?void 0:n.data)==null?void 0:e.verband)!=null?t:[]}catch(n){throw console.error("Error fetching groups data:",n),n}})}function we(e){return e.map(({id:t,name:n,logo:r,sportart_id:o})=>({id:t,name:n,sportCategoryId:o,logo:r}))}var te=(r,o)=>d(null,[r,o],function*({actions:e,createNodeId:t},n){let{createNode:a}=e;delete n.plugins;let s=yield U(),u=yield ee(),l=[],c=[];for(let m of s)for(let i of m.leagueIds){let p=yield H(i);if(!p){console.warn(`No league data found for League with ID ${i}`);continue}J({league:p,groupName:m.name,createNode:a,createNodeId:t});let y=p.fixtures;v({fixtures:y,createNode:a,createNodeId:t}),l=[...l,...p.teams.map(N=>({name:N.clubName,shortName:N.clubShortName}))],c=p.teams.reduce((N,h)=>[...N,...h.playersFirstHalf,...h.playersSecondHalf],c),j({teams:p.teams,fixtures:y,createNode:a,createNodeId:t})}l=[...new Map(l.map(m=>[m.shortName,m])).values()],z({clubs:l,createNode:a,createNodeId:t}),c=c.reduce((m,i)=>{let p=m.find(y=>y.id===i.id);return p?p.scores=[...p.scores,...i.scores]:m.push(i),m},[]),E({associations:u,createNode:a,createNodeId:t}),V({players:c,createNode:a,createNodeId:t}),R({groups:s,createNode:a,createNodeId:t})});var ne=({createResolvers:e})=>{e({Team:{fixtures:{type:["Fixture"],resolve:(t,n,r)=>d(null,null,function*(){let{entries:o}=yield r.nodeModel.findAll({query:{filter:{homeTeam:{id:{eq:t.id}}}},type:"Fixture"}),{entries:a}=yield r.nodeModel.findAll({query:{filter:{guestTeam:{id:{eq:t.id}}}},type:"Fixture"});return o.mergeSorted(a,(s,u)=>s.date>u.date?1:-1)})}}})};0&&(module.exports={createResolvers,createSchemaCustomization,sourceNodes});