epubavocado
Version:
I am an EPUB object model aspiring to be standards compliant.
47 lines (37 loc) • 1.18 kB
JavaScript
/* eslint-disable */
const { readFileSync } = require('fs')
const { join } = require('path')
const express = require('express')
const { graphqlHTTP } = require('express-graphql')
const { buildASTSchema } = require('graphql')
const { loadFilesSync } = require('@graphql-tools/load-files')
const { mergeTypeDefs } = require('@graphql-tools/merge')
const xmldom = require('xmldom')
const { Package, Container } = require('../../lib/cjs/mod.js')
const typesArray = loadFilesSync(join(__dirname, 'types/**/*.graphql'))
const containerXML = new xmldom.DOMParser().parseFromString(
readFileSync(join(__dirname, '../data/container.xml'), 'utf-8'),
)
const packageXML = new xmldom.DOMParser().parseFromString(
readFileSync(join(__dirname, '../data/package.opf'), 'utf-8'),
)
var schema = buildASTSchema(mergeTypeDefs(typesArray))
var root = {
container: () => {
return new Container(containerXML)
},
package: () => {
return new Package(packageXML)
},
}
var app = express()
app.use(
'/',
graphqlHTTP({
schema: schema,
rootValue: root,
graphiql: true,
}),
)
app.listen(4000)
console.log('Running a GraphQL API server at http://localhost:4000/')