UNPKG

@wepublish/api

Version:
191 lines 9.98 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.GraphQLPublicPageConnection = exports.GraphQLPublicPage = exports.GraphQLPageConnection = exports.GraphQLPage = exports.GraphQLPageRevision = exports.GraphQLPageInput = exports.GraphQLPublishedPageSort = exports.GraphQLPageSort = exports.GraphQLPublishedPageFilter = exports.GraphQLPageFilter = void 0; const graphql_1 = require("graphql"); const graphql_scalars_1 = require("graphql-scalars"); const image_1 = require("./image"); const page_1 = require("../db/page"); const slug_1 = require("./slug"); const common_1 = require("./common"); const blocks_1 = require("./blocks"); const utility_1 = require("../utility"); exports.GraphQLPageFilter = new graphql_1.GraphQLInputObjectType({ name: 'PageFilter', fields: { title: { type: graphql_1.GraphQLString }, draft: { type: graphql_1.GraphQLBoolean }, description: { type: graphql_1.GraphQLString }, publicationDateFrom: { type: common_1.GraphQLDateFilter }, publicationDateTo: { type: common_1.GraphQLDateFilter }, published: { type: graphql_1.GraphQLBoolean }, pending: { type: graphql_1.GraphQLBoolean }, tags: { type: new graphql_1.GraphQLList(new graphql_1.GraphQLNonNull(graphql_1.GraphQLString)) } } }); exports.GraphQLPublishedPageFilter = new graphql_1.GraphQLInputObjectType({ name: 'PublishedPageFilter', fields: { tags: { type: new graphql_1.GraphQLList(new graphql_1.GraphQLNonNull(graphql_1.GraphQLString)) } } }); exports.GraphQLPageSort = new graphql_1.GraphQLEnumType({ name: 'PageSort', values: { CREATED_AT: { value: page_1.PageSort.CreatedAt }, MODIFIED_AT: { value: page_1.PageSort.ModifiedAt }, PUBLISH_AT: { value: page_1.PageSort.PublishAt }, PUBLISHED_AT: { value: page_1.PageSort.PublishedAt }, UPDATED_AT: { value: page_1.PageSort.UpdatedAt } } }); exports.GraphQLPublishedPageSort = new graphql_1.GraphQLEnumType({ name: 'PublishedPageSort', values: { PUBLISHED_AT: { value: page_1.PageSort.PublishedAt }, UPDATED_AT: { value: page_1.PageSort.UpdatedAt } } }); exports.GraphQLPageInput = new graphql_1.GraphQLInputObjectType({ name: 'PageInput', fields: () => ({ slug: { type: new graphql_1.GraphQLNonNull(slug_1.GraphQLSlug) }, title: { type: new graphql_1.GraphQLNonNull(graphql_1.GraphQLString) }, description: { type: graphql_1.GraphQLString }, tags: { type: new graphql_1.GraphQLNonNull(new graphql_1.GraphQLList(new graphql_1.GraphQLNonNull(graphql_1.GraphQLString))) }, properties: { type: new graphql_1.GraphQLNonNull(new graphql_1.GraphQLList(new graphql_1.GraphQLNonNull(common_1.GraphQLMetadataPropertyInput))) }, imageID: { type: graphql_1.GraphQLID }, socialMediaTitle: { type: graphql_1.GraphQLString }, socialMediaDescription: { type: graphql_1.GraphQLString }, socialMediaImageID: { type: graphql_1.GraphQLID }, blocks: { type: new graphql_1.GraphQLNonNull(new graphql_1.GraphQLList(new graphql_1.GraphQLNonNull(blocks_1.GraphQLBlockInput))) } }) }); exports.GraphQLPageRevision = new graphql_1.GraphQLObjectType({ name: 'PageRevision', fields: () => ({ revision: { type: new graphql_1.GraphQLNonNull(graphql_1.GraphQLInt) }, createdAt: { type: new graphql_1.GraphQLNonNull(graphql_scalars_1.GraphQLDateTime) }, publishAt: { type: graphql_scalars_1.GraphQLDateTime }, updatedAt: { type: graphql_scalars_1.GraphQLDateTime }, publishedAt: { type: graphql_scalars_1.GraphQLDateTime }, slug: { type: slug_1.GraphQLSlug }, title: { type: graphql_1.GraphQLString }, description: { type: graphql_1.GraphQLString }, tags: { type: new graphql_1.GraphQLNonNull(new graphql_1.GraphQLList(new graphql_1.GraphQLNonNull(graphql_1.GraphQLString))) }, properties: { type: new graphql_1.GraphQLNonNull(new graphql_1.GraphQLList(new graphql_1.GraphQLNonNull(common_1.GraphQLMetadataProperty))) }, url: { type: new graphql_1.GraphQLNonNull(graphql_1.GraphQLString), resolve: (0, utility_1.createProxyingResolver)((pageRevision, args, { urlAdapter }, info) => { var _a; // The URLAdapter expects a public page to generate the public page URL. // The URL should never be created with values from the updatedAt and // publishedAt dates, but they are required by the method. return urlAdapter.getPublicPageURL(Object.assign(Object.assign({}, pageRevision), { id: ((_a = info === null || info === void 0 ? void 0 : info.variableValues) === null || _a === void 0 ? void 0 : _a.id) || 'ID-DOES-NOT-EXIST', updatedAt: new Date(), publishedAt: new Date() })); }) }, image: { type: image_1.GraphQLImage, resolve: (0, utility_1.createProxyingResolver)(({ imageID }, args, { loaders }) => { return imageID ? loaders.images.load(imageID) : null; }) }, socialMediaTitle: { type: graphql_1.GraphQLString }, socialMediaDescription: { type: graphql_1.GraphQLString }, socialMediaImage: { type: image_1.GraphQLImage, resolve: (0, utility_1.createProxyingResolver)(({ socialMediaImageID }, args, { loaders }) => { return socialMediaImageID ? loaders.images.load(socialMediaImageID) : null; }) }, blocks: { type: new graphql_1.GraphQLNonNull(new graphql_1.GraphQLList(new graphql_1.GraphQLNonNull(blocks_1.GraphQLBlock))) } }) }); exports.GraphQLPage = new graphql_1.GraphQLObjectType({ name: 'Page', fields: { id: { type: new graphql_1.GraphQLNonNull(graphql_1.GraphQLID) }, shared: { type: new graphql_1.GraphQLNonNull(graphql_1.GraphQLBoolean) }, createdAt: { type: new graphql_1.GraphQLNonNull(graphql_scalars_1.GraphQLDateTime) }, modifiedAt: { type: new graphql_1.GraphQLNonNull(graphql_scalars_1.GraphQLDateTime) }, draft: { type: exports.GraphQLPageRevision }, published: { type: exports.GraphQLPageRevision }, pending: { type: exports.GraphQLPageRevision }, latest: { type: new graphql_1.GraphQLNonNull(exports.GraphQLPageRevision), resolve: (0, utility_1.createProxyingResolver)(({ draft, pending, published }) => { var _a; return (_a = draft !== null && draft !== void 0 ? draft : pending) !== null && _a !== void 0 ? _a : published; }) } } // TODO: Implement page history // history: {type: new GraphQLNonNull(new GraphQLList(new GraphQLNonNull(GraphQLPageRevision)))} }); exports.GraphQLPageConnection = new graphql_1.GraphQLObjectType({ name: 'PageConnection', fields: { nodes: { type: new graphql_1.GraphQLNonNull(new graphql_1.GraphQLList(new graphql_1.GraphQLNonNull(exports.GraphQLPage))) }, pageInfo: { type: new graphql_1.GraphQLNonNull(common_1.GraphQLPageInfo) }, totalCount: { type: new graphql_1.GraphQLNonNull(graphql_1.GraphQLInt) } } }); exports.GraphQLPublicPage = new graphql_1.GraphQLObjectType({ name: 'Page', fields: () => ({ id: { type: new graphql_1.GraphQLNonNull(graphql_1.GraphQLID) }, updatedAt: { type: new graphql_1.GraphQLNonNull(graphql_scalars_1.GraphQLDateTime) }, publishedAt: { type: new graphql_1.GraphQLNonNull(graphql_scalars_1.GraphQLDateTime) }, slug: { type: new graphql_1.GraphQLNonNull(slug_1.GraphQLSlug) }, url: { type: new graphql_1.GraphQLNonNull(graphql_1.GraphQLString), resolve: (0, utility_1.createProxyingResolver)((page, _, { urlAdapter }) => { return urlAdapter.getPublicPageURL(page); }) }, title: { type: new graphql_1.GraphQLNonNull(graphql_1.GraphQLString) }, description: { type: graphql_1.GraphQLString }, tags: { type: new graphql_1.GraphQLNonNull(new graphql_1.GraphQLList(new graphql_1.GraphQLNonNull(graphql_1.GraphQLString))) }, properties: { type: new graphql_1.GraphQLNonNull(new graphql_1.GraphQLList(new graphql_1.GraphQLNonNull(common_1.GraphQLMetadataPropertyPublic))), resolve: ({ properties }) => { return properties.filter(property => property.public).map(({ key, value }) => ({ key, value })); } }, image: { type: image_1.GraphQLImage, resolve: (0, utility_1.createProxyingResolver)(({ imageID }, args, { loaders }) => { return imageID ? loaders.images.load(imageID) : null; }) }, socialMediaTitle: { type: graphql_1.GraphQLString }, socialMediaDescription: { type: graphql_1.GraphQLString }, socialMediaImage: { type: image_1.GraphQLImage, resolve: (0, utility_1.createProxyingResolver)(({ socialMediaImageID }, args, { loaders }) => { return socialMediaImageID ? loaders.images.load(socialMediaImageID) : null; }) }, blocks: { type: new graphql_1.GraphQLNonNull(new graphql_1.GraphQLList(new graphql_1.GraphQLNonNull(blocks_1.GraphQLPublicBlock))) } }) }); exports.GraphQLPublicPageConnection = new graphql_1.GraphQLObjectType({ name: 'PageConnection', fields: { nodes: { type: new graphql_1.GraphQLNonNull(new graphql_1.GraphQLList(new graphql_1.GraphQLNonNull(exports.GraphQLPublicPage))) }, pageInfo: { type: new graphql_1.GraphQLNonNull(common_1.GraphQLPageInfo) }, totalCount: { type: new graphql_1.GraphQLNonNull(graphql_1.GraphQLInt) } } }); //# sourceMappingURL=page.js.map