UNPKG

gatsby-source-ttlive

Version:

Gatsby source plugin to source nodes from TT-Live data

47 lines (40 loc) 11.7 kB
"use strict";var x=Object.defineProperty,ie=Object.defineProperties,le=Object.getOwnPropertyDescriptor,ue=Object.getOwnPropertyDescriptors,ce=Object.getOwnPropertyNames,k=Object.getOwnPropertySymbols;var _=Object.prototype.hasOwnProperty,me=Object.prototype.propertyIsEnumerable;var $=(e,t,n)=>t in e?x(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,g=(e,t)=>{for(var n in t||(t={}))_.call(t,n)&&$(e,n,t[n]);if(k)for(var n of k(t))me.call(t,n)&&$(e,n,t[n]);return e},f=(e,t)=>ie(e,ue(t));var de=(e,t)=>{for(var n in t)x(e,n,{get:t[n],enumerable:!0})},pe=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of ce(t))!_.call(e,o)&&o!==n&&x(e,o,{get:()=>t[o],enumerable:!(r=le(t,o))||r.enumerable});return e};var ge=e=>pe(x({},"__esModule",{value:!0}),e);var d=(e,t,n)=>new Promise((r,o)=>{var s=l=>{try{u(n.next(l))}catch(c){o(c)}},a=l=>{try{u(n.throw(l))}catch(c){o(c)}},u=l=>l.done?r(l.value):Promise.resolve(l.value).then(s,a);u((n=n.apply(e,t)).next())});var Fe={};de(Fe,{createResolvers:()=>oe,createSchemaCustomization:()=>S,sourceNodes:()=>re});module.exports=ge(Fe);var S=({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 position: String 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 E=require("gatsby-core-utils");var F=r=>d(null,[r],function*({associations:e,createNode:t,createNodeId:n}){e.forEach(o=>{t(fe({association:o,createNodeId:n}))})});function fe({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,E.createContentDigest)(e)}})}var R=require("gatsby-core-utils");var G=({groups:e,createNode:t,createNodeId:n})=>{e.forEach(r=>{t(ye({group:r,createNodeId:n}))})};function ye({group:e,createNodeId:t}){let n=t(`Group${e.name}`);e.leagues___NODE=e.leagueIds.map(s=>t(`League${s}`)),delete e.leagueIds;let r=JSON.stringify(e);return f(g({},e),{id:n,parent:null,children:[],internal:{type:"Group",content:r,contentDigest:(0,R.createContentDigest)(e)}})}var O=require("gatsby-core-utils"),z=({clubs:e,createNode:t,createNodeId:n})=>{e.forEach(r=>{t(Ne({club:r,createNodeId:n}))})};function Ne({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(be({league:e,groupName:t,createNodeId:r}))};function be({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(he({fixture:r,createNodeId:n}))})};function he({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 s=Ie({team:o,createNodeId:r,fixtures:t});n(s)})};function Ie({team:e,createNodeId:t,fixtures:n}){let r=t(`Team${e.id}`);e.playersFirstHalf=e.playersFirstHalf?e.playersFirstHalf.map(a=>({player___NODE:t(`Player${a.id}`)})):[],e.playersSecondHalf=e.playersSecondHalf?e.playersSecondHalf.map(a=>({player___NODE:t(`Player${a.id}`)})):[],e.fixtures=n?n.filter(a=>a.homeTeam___NODE===r||a.guestTeam___NODE===r).map(a=>t(`Fixture${a.nr}-${a.date}-${a.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=Pe({player:r,createNodeId:n,createNode:t});t(o)})};function Pe({player:e,createNodeId:t,createNode:n}){let r=t(`Player${e.id}`);e.scores___NODE=e.scores.map(a=>{let u=De({playerScore:a,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 De({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 h(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 xe=397,Ae=`https://app.web4sport.de/ajax/tischtennis/staffeln.ashx?VerbandID=${xe}`;function U(){return d(this,null,function*(){let e=yield Te();return Ce(e)})}function Te(){return d(this,null,function*(){var e,t;try{let n=yield h(Ae);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 Ce(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||[]}})}var Le=new Date,we=Le.getMonth(),W=we<8;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 Q=(e,t,n)=>{let r=t==null?void 0:t.map(s=>Y(e,s,!0)),o=n==null?void 0:n.map(s=>Y(e,s,!1));return[...r!=null?r:[],...o!=null?o:[]]};function Y(e,t,n=null){let{Nr:r,Datum:o,HeimTeamID:s,GastTeamID:a,Ergebnis:u,Kennzeichnung:l,Link:c}=t;return{leagueId:e,nr:r,isFirstHalf:n,date:o,homeTeamId:s,guestTeamId:a,result:u?b(u):null,note:l,link:c}}function C(e,t,n=!1){let{ID:r,Position:o,Spielername:s,Teilnahme:a,PK1:u,PK2:l,PK3:c,PK4:m,GesamtPlus:i,GesamtMinus:p,Attribute:y,LivePZ:N}=e;return{id:r,name:s,scores:[{playerId:r,teamId:t,position:typeof o=="string"?o:o.toString(),isSecondHalf:n,gamesPlayed:a!=null?a: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 H=(e,t,n)=>t?Array.isArray(t)?t.map((r,o)=>{var s;return Z(e,r,(s=n==null?void 0:n[o])!=null?s:null)}):[Z(e,t,n!=null?n:null)]:[];function Z(e,t,n){var L,w;let{TeamID:r,TeamName:o,TeamNameKurz:s,Tabelle:{Platz:a,Spiele:u,Siege:l,Unentschieden:c,Niederlagen:m,SaetzeDif:i,SpielePlus:p,SpieleMinus:y,SpieleDif:N,PunktePlus:I,PunkteMinus:se,PunkteDif:ae},Bilanz:P}=t,D=n==null?void 0:n.Bilanz;return{id:r,leagueId:e,clubName:B(o),clubShortName:B(s),name:o,shortName:s,position:a,gamesPlayed:u,won:l,drawn:c,lost:m,matchesWon:p,matchesLost:y,matchesDiff:N,setsDiff:i,pointsWon:I,pointsLost:se,pointsDiff:ae,playersFirstHalf:((L=P==null?void 0:P.Spieler)==null?void 0:L.length)>0?P.Spieler.map(A=>C(A,r)):[],playersSecondHalf:((w=D==null?void 0:D.Spieler)==null?void 0:w.length)>0?D.Spieler.map(A=>C(A,r,!0)):[]}}var ke=/ M{0,3}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/;function B(e){return e.replace(ke,"")}function te(e){return d(this,null,function*(){var u,l;let t=W,{leagueData:n,teamsData:r,fixturesData:o}=yield ee(e),s=t?yield ee(e,!0):null;return n?$e(n,r,(u=s==null?void 0:s.teamsData)!=null?u:null,o,(l=s==null?void 0:s.fixturesData)!=null?l:null):null})}function ee(e,t=!1){return d(this,null,function*(){var r,o,s,a,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 h(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:(a=(s=(o=i==null?void 0:i.data)==null?void 0:o.Teams)==null?void 0:s.Mannschaft)!=null?a: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 $e(e,t,n,r,o){let{StaffelID:s,VerbandID:a,StaffelName:u,StaffelKurz:l}=e,c=s;return{id:c,associationId:a,name:u,shortName:l,teams:H(c,t,n),fixtures:Q(c,r,o)}}var _e="https://app.web4sport.de/ajax/Verband.ashx";function ne(){return d(this,null,function*(){let e=yield Se();return Ee(e)})}function Se(){return d(this,null,function*(){var e,t;try{let n=yield h(_e);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 Ee(e){return e.map(({id:t,name:n,logo:r,sportart_id:o})=>({id:t,name:n,sportCategoryId:o,logo:r}))}var re=(r,o)=>d(null,[r,o],function*({actions:e,createNodeId:t},n){let{createNode:s}=e;delete n.plugins;let a=yield U(),u=yield ne(),l=[],c=[];for(let m of a)for(let i of m.leagueIds){let p=yield te(i);if(!p){console.warn(`No league data found for League with ID ${i}`);continue}J({league:p,groupName:m.name,createNode:s,createNodeId:t});let y=p.fixtures;v({fixtures:y,createNode:s,createNodeId:t}),l=[...l,...p.teams.map(N=>({name:N.clubName,shortName:N.clubShortName}))],c=p.teams.reduce((N,I)=>[...N,...I.playersFirstHalf,...I.playersSecondHalf],c),j({teams:p.teams,fixtures:y,createNode:s,createNodeId:t})}l=[...new Map(l.map(m=>[m.shortName,m])).values()],z({clubs:l,createNode:s,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},[]),F({associations:u,createNode:s,createNodeId:t}),V({players:c,createNode:s,createNodeId:t}),G({groups:a,createNode:s,createNodeId:t})});var oe=({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:s}=yield r.nodeModel.findAll({query:{filter:{guestTeam:{id:{eq:t.id}}}},type:"Fixture"});return o.mergeSorted(s,(a,u)=>a.date>u.date?1:-1)})}}})};0&&(module.exports={createResolvers,createSchemaCustomization,sourceNodes});