feature: deployment, deps update & more

This commit is contained in:
Benno Tielen 2024-09-06 15:02:33 +02:00
parent f645c01ac0
commit 0c7c64f7fc
24 changed files with 1722 additions and 2298 deletions

1
.dockerignore Normal file
View file

@ -0,0 +1 @@
/node_modules

File diff suppressed because one or more lines are too long

View file

@ -1,6 +0,0 @@
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
"--install.ignore-engines" true
yarn-path ".yarn/releases/yarn-1.22.22.cjs"

View file

@ -1,3 +1 @@
nodeLinker: node-modules
yarnPath: .yarn/releases/yarn-4.4.0.cjs

View file

@ -1,69 +1,8 @@
# From https://github.com/vercel/next.js/blob/canary/examples/with-docker/Dockerfile
FROM node:18-alpine AS base
# Install dependencies only when needed
FROM base AS deps
# Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed.
FROM node:21-alpine
RUN apk add --no-cache libc6-compat
WORKDIR /app
# Install dependencies based on the preferred package manager
COPY package.json yarn.lock* package-lock.json* pnpm-lock.yaml* ./
RUN \
if [ -f yarn.lock ]; then yarn --frozen-lockfile; \
elif [ -f package-lock.json ]; then npm ci; \
elif [ -f pnpm-lock.yaml ]; then corepack enable pnpm && pnpm i --frozen-lockfile; \
else echo "Lockfile not found." && exit 1; \
fi
# Rebuild the source code only when needed
FROM base AS builder
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
# Next.js collects completely anonymous telemetry data about general usage.
# Learn more here: https://nextjs.org/telemetry
# Uncomment the following line in case you want to disable telemetry during the build.
# ENV NEXT_TELEMETRY_DISABLED 1
RUN \
if [ -f yarn.lock ]; then yarn run build; \
elif [ -f package-lock.json ]; then npm run build; \
elif [ -f pnpm-lock.yaml ]; then corepack enable pnpm && pnpm run build; \
else echo "Lockfile not found." && exit 1; \
fi
# Production image, copy all the files and run next
FROM base AS runner
WORKDIR /app
ENV NODE_ENV production
# Uncomment the following line in case you want to disable telemetry during runtime.
# ENV NEXT_TELEMETRY_DISABLED 1
RUN addgroup --system --gid 1001 nodejs
RUN adduser --system --uid 1001 nextjs
COPY --from=builder /app/public ./public
# Set the correct permission for prerender cache
RUN mkdir .next
RUN chown nextjs:nodejs .next
# Automatically leverage output traces to reduce image size
# https://nextjs.org/docs/advanced-features/output-file-tracing
COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
USER nextjs
RUN yarn set version stable
RUN yarn install --frozen-lockfile
EXPOSE 3000
ENV PORT 3000
# server.js is created by next build from the standalone output
# https://nextjs.org/docs/pages/api-reference/next-config-js/output
CMD HOSTNAME="0.0.0.0" node server.js
CMD yarn dev

70
Dockerfile-old Normal file
View file

@ -0,0 +1,70 @@
# From https://github.com/vercel/next.js/blob/canary/examples/with-docker/Dockerfile
FROM node:21-alpine AS base
# Install dependencies only when needed
FROM base AS deps
# Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed.
RUN apk add --no-cache libc6-compat
WORKDIR /app
# Install dependencies based on the preferred package manager
COPY package.json .yarnrc.yml yarn.lock* package-lock.json* pnpm-lock.yaml* ./
RUN yarn set version stable
RUN \
if [ -f yarn.lock ]; then yarn --frozen-lockfile; \
elif [ -f package-lock.json ]; then npm ci; \
elif [ -f pnpm-lock.yaml ]; then corepack enable pnpm && pnpm i --frozen-lockfile; \
else echo "Lockfile not found." && exit 1; \
fi
# Rebuild the source code only when needed
FROM base AS builder
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
# Next.js collects completely anonymous telemetry data about general usage.
# Learn more here: https://nextjs.org/telemetry
# Uncomment the following line in case you want to disable telemetry during the build.
# ENV NEXT_TELEMETRY_DISABLED 1
RUN \
if [ -f yarn.lock ]; then yarn run build; \
elif [ -f package-lock.json ]; then npm run build; \
elif [ -f pnpm-lock.yaml ]; then corepack enable pnpm && pnpm run build; \
else echo "Lockfile not found." && exit 1; \
fi
# Production image, copy all the files and run next
FROM base AS runner
WORKDIR /app
ENV NODE_ENV production
# Uncomment the following line in case you want to disable telemetry during runtime.
# ENV NEXT_TELEMETRY_DISABLED 1
RUN addgroup --system --gid 1001 nodejs
RUN adduser --system --uid 1001 nextjs
COPY --from=builder /app/public ./public
# Set the correct permission for prerender cache
RUN mkdir .next
RUN chown nextjs:nodejs .next
# Automatically leverage output traces to reduce image size
# https://nextjs.org/docs/advanced-features/output-file-tracing
COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
USER nextjs
EXPOSE 3000
ENV PORT 3000
# server.js is created by next build from the standalone output
# https://nextjs.org/docs/pages/api-reference/next-config-js/output
CMD HOSTNAME="0.0.0.0" node server.js

View file

@ -3,6 +3,11 @@ import { withPayload } from '@payloadcms/next/withPayload'
/** @type {import('next').NextConfig} */
const nextConfig = {
// Your Next.js config here
eslint: {
// Warning: This allows production builds to successfully complete even if
// your project has ESLint errors.
ignoreDuringBuilds: true,
},
}
export default withPayload(nextConfig)

View file

@ -16,18 +16,18 @@
"build-storybook": "storybook build"
},
"dependencies": {
"@payloadcms/db-mongodb": "beta",
"@payloadcms/next": "beta",
"@payloadcms/plugin-cloud": "beta",
"@payloadcms/richtext-lexical": "beta",
"@payloadcms/db-mongodb": "3.0.0-beta.99",
"@payloadcms/next": "3.0.0-beta.99",
"@payloadcms/plugin-cloud": "3.0.0-beta.99",
"@payloadcms/richtext-lexical": "3.0.0-beta.99",
"classnames": "^2.5.1",
"cross-env": "^7.0.3",
"graphql": "^16.8.1",
"mapbox-gl": "^3.5.2",
"next": "15.0.0-canary.123",
"payload": "beta",
"react": "^19.0.0-rc-6230622a1a-20240610",
"react-dom": "^19.0.0-rc-6230622a1a-20240610",
"payload": "3.0.0-beta.99",
"react": "19.0.0-rc-f65ac7bd-20240826",
"react-dom": "19.0.0-rc-f65ac7bd-20240826",
"sharp": "0.32.6"
},
"devDependencies": {
@ -65,5 +65,5 @@
"@types/react": "npm:types-react@19.0.0-rc.0",
"@types/react-dom": "npm:types-react-dom@19.0.0-rc.0"
},
"packageManager": "yarn@4.4.0"
"packageManager": "yarn@4.4.1"
}

View file

@ -4,6 +4,7 @@ import type { Metadata } from 'next'
import config from '@payload-config'
/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */
import { NotFoundPage, generatePageMetadata } from '@payloadcms/next/views'
import { importMap } from '../importMap'
type Args = {
params: {
@ -14,13 +15,10 @@ type Args = {
}
}
export const generateMetadata = ({
params,
searchParams,
}: Args): Promise<Metadata> =>
export const generateMetadata = ({ params, searchParams }: Args): Promise<Metadata> =>
generatePageMetadata({ config, params, searchParams })
const NotFound = ({ params, searchParams }: Args) =>
NotFoundPage({ config, params, searchParams })
NotFoundPage({ config, params, searchParams, importMap })
export default NotFound

View file

@ -4,6 +4,7 @@ import type { Metadata } from 'next'
import config from '@payload-config'
/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */
import { RootPage, generatePageMetadata } from '@payloadcms/next/views'
import { importMap } from '../importMap'
type Args = {
params: {
@ -14,13 +15,10 @@ type Args = {
}
}
export const generateMetadata = ({
params,
searchParams,
}: Args): Promise<Metadata> =>
export const generateMetadata = ({ params, searchParams }: Args): Promise<Metadata> =>
generatePageMetadata({ config, params, searchParams })
const Page = ({ params, searchParams }: Args) =>
RootPage({ config, params, searchParams })
RootPage({ config, params, searchParams, importMap })
export default Page

View file

@ -0,0 +1 @@
export const importMap = {}

View file

@ -1,13 +1,7 @@
/* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. */
/* DO NOT MODIFY it because it could be re-written at any time. */
import config from '@payload-config'
import {
REST_DELETE,
REST_GET,
REST_OPTIONS,
REST_PATCH,
REST_POST,
} from '@payloadcms/next/routes'
import { REST_DELETE, REST_GET, REST_OPTIONS, REST_PATCH, REST_POST } from '@payloadcms/next/routes'
export const GET = REST_GET(config)
export const POST = REST_POST(config)

View file

@ -6,13 +6,16 @@ import { RootLayout } from '@payloadcms/next/layouts'
import React from 'react'
import './custom.scss'
import { importMap } from './admin/importMap'
type Args = {
children: React.ReactNode
}
const Layout = ({ children }: Args) => (
<RootLayout config={configPromise}>{children}</RootLayout>
<RootLayout importMap={importMap} config={configPromise}>
{children}
</RootLayout>
)
export default Layout

View file

@ -51,7 +51,7 @@ export default async function Home() {
and: [
{
date: {
greater_than_equal: today.toISOString().substring(0, 10),
greater_than_equal: today.toISOString(),
},
},
{
@ -71,7 +71,7 @@ export default async function Home() {
<>
<BannerWithMenu nextMass={nextMass.docs[0]} />
<div className={styles.mass}>
<h2>Kommen Sie vorbei, in unsere Heilige Messe!</h2>
<h2>Kommen Sie zu unserer Heiligen Messe vorbei!</h2>
<div className={styles.table}>
{worshipByDate.map(([date, worships]) => (

View file

@ -0,0 +1,43 @@
import { CollectionConfig } from 'payload'
import { isAdminOrEmployee } from '@/collections/access/admin'
export const Announcements: CollectionConfig = {
slug: 'vermeldungen',
labels: {
singular: {
de: 'Vermeldung'
},
plural: {
de: 'Vermeldungen'
}
},
fields: [
{
name: 'date',
type: 'date',
required: true,
label: {
de: 'Datum'
}
},
{
name: 'parish',
type: "relationship",
relationTo: 'parish',
required: true,
hasMany: true,
label: {
de: "Gemeinde"
},
admin: {
allowCreate: false
}
},
],
access: {
read: () => true,
create: isAdminOrEmployee(),
update: isAdminOrEmployee(),
delete: isAdminOrEmployee(),
}
}

64
src/collections/Blog.ts Normal file
View file

@ -0,0 +1,64 @@
import { CollectionConfig } from 'payload'
import { isAdminOrEmployee } from '@/collections/access/admin'
export const Blog: CollectionConfig = {
slug: 'blog',
labels: {
singular: {
de: 'Blogpost'
},
plural: {
de: 'Blog'
}
},
fields: [
{
name: 'photo',
type: 'upload',
relationTo: 'media',
},
{
name: 'title',
type: 'text',
required: true,
label: {
de: "Titel"
}
},
{
name: 'parish',
type: 'relationship',
relationTo: 'parish',
hasMany: true,
label: {
de: "Gemeinde"
}
},
{
name: 'isHighlight',
type: 'checkbox',
required: true,
label: {
de: "Highlight"
},
defaultValue: false
},
{
name: 'text',
type: 'richText',
required: true,
label: {
de: "Post"
}
}
],
admin: {
useAsTitle: 'title'
},
access: {
read: () => true,
create: isAdminOrEmployee(),
update: isAdminOrEmployee(),
delete: isAdminOrEmployee(),
}
}

93
src/collections/Pages.ts Normal file
View file

@ -0,0 +1,93 @@
import { Block, CollectionConfig } from 'payload'
import { isAdmin, isAdminOrEmployee } from '@/collections/access/admin'
const Content: Block = {
slug: 'content',
fields: [
{
name: 'content',
type: 'richText',
required: true
}
]
}
const Title: Block = {
slug: 'title',
fields: [
{
name: 'title',
type: 'text',
required: true,
},
]
}
const Testimony: Block = {
slug: 'testimony',
labels: {
singular: {
de: 'Zeugnis'
},
plural: {
de: 'Zeugnisse'
}
},
fields: [
{
name: 'testimony',
type: 'relationship',
relationTo: 'testimony',
required: true
}
]
}
export const Pages: CollectionConfig = {
slug: 'page',
labels: {
singular: {
de: 'Seite'
},
plural: {
de: "Seiten"
},
},
fields: [
{
name: "title",
type: "text",
required: true,
label: {
de: "Titel"
}
},
{
name: 'slug',
type: 'text',
required: true,
label: {
de: "Slug"
}
},
{
name: 'content',
type: 'blocks',
required: true,
blocks: [
Content,
Title,
Testimony
]
}
],
admin: {
useAsTitle: "title"
},
access: {
read: () => true,
create: isAdminOrEmployee(),
update: isAdminOrEmployee(),
delete: isAdmin(),
}
}

View file

@ -20,6 +20,14 @@ export const Parish: CollectionConfig = {
type: 'text',
required: true,
},
{
name: 'slug',
label: {
de: 'URL slug',
},
type: 'text',
required: true
},
{
name: 'churches',
label: {
@ -41,7 +49,6 @@ export const Parish: CollectionConfig = {
type: 'relationship',
relationTo: 'employees',
hasMany: true,
required: true,
},
{
name: 'contact',

39
src/collections/Tweets.ts Normal file
View file

@ -0,0 +1,39 @@
import { CollectionConfig } from 'payload'
import { isAdminOrEmployee } from '@/collections/access/admin'
export const Tweets: CollectionConfig = {
slug: 'tweet',
labels: {
singular: {
de: "Kurznachricht"
},
plural: {
de: "Kurznachrichten"
}
},
fields: [
{
name: 'parish',
type: 'relationship',
relationTo: 'parish',
hasMany: true,
label: {
de: "Gemeinde"
}
},
{
name: 'text',
type: 'textarea',
required: true,
label: {
de: "Nachricht"
}
}
],
access: {
read: () => true,
create: isAdminOrEmployee(),
update: isAdminOrEmployee(),
delete: isAdminOrEmployee(),
}
}

View file

@ -4,6 +4,7 @@ import MenuIcon from './menu.svg'
import Image from 'next/image'
import { Worship } from '@/payload-types'
import { MenuBaseLayer } from '@/components/MenuBaseLayer/MenuBaseLayer'
import classNames from 'classnames'
type MenuProps = {
starClick?: () => void
@ -12,7 +13,7 @@ type MenuProps = {
export const Menu = (props: MenuProps) => {
return (
<nav className={styles.nav}>
<nav className={classNames(styles.nav, {[styles.white]: typeof props.starClick !== 'undefined'})}>
<MenuBaseLayer />
<div className={styles.navMobile}>
<Image src={MenuIcon} width={25} height={25} alt={'Menu'} />

View file

@ -8,6 +8,10 @@
margin-bottom: 2.5em;
}
.white {
color: #eeeeee;
}
.navMobile {
display: none;
}

View file

@ -8,241 +8,342 @@
export interface Config {
auth: {
users: UserAuthOperations
}
users: UserAuthOperations;
};
collections: {
parish: Parish
church: Church
worship: Worship
event: Event
group: Group
employees: Employee
testimony: Testimony
users: User
media: Media
'payload-preferences': PayloadPreference
'payload-migrations': PayloadMigration
}
parish: Parish;
church: Church;
worship: Worship;
vermeldungen: Vermeldungen;
blog: Blog;
tweet: Tweet;
event: Event;
group: Group;
employees: Employee;
testimony: Testimony;
page: Page;
users: User;
media: Media;
'payload-preferences': PayloadPreference;
'payload-migrations': PayloadMigration;
};
db: {
defaultIDType: string
}
globals: {}
locale: null
defaultIDType: string;
};
globals: {};
locale: null;
user: User & {
collection: 'users'
}
collection: 'users';
};
}
export interface UserAuthOperations {
forgotPassword: {
email: string
password: string
}
email: string;
password: string;
};
login: {
email: string
password: string
}
email: string;
password: string;
};
registerFirstUser: {
email: string
password: string
}
email: string;
password: string;
};
unlock: {
email: string
password: string
}
email: string;
password: string;
};
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "parish".
*/
export interface Parish {
id: string
name: string
churches: (string | Church)[]
employees: (string | Employee)[]
contact: string
title: string
description: string
photo?: string | Media | null
updatedAt: string
createdAt: string
id: string;
name: string;
slug: string;
churches: (string | Church)[];
employees?: (string | Employee)[] | null;
contact: string;
title: string;
description: string;
photo?: (string | null) | Media;
updatedAt: string;
createdAt: string;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "church".
*/
export interface Church {
id: string
name: string
address: string
updatedAt: string
createdAt: string
id: string;
name: string;
address: string;
updatedAt: string;
createdAt: string;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "employees".
*/
export interface Employee {
id: string
photo?: string | Media | null
name: string
occupation: string
email?: string | null
telephone?: string | null
updatedAt: string
createdAt: string
id: string;
photo?: (string | null) | Media;
name: string;
occupation: string;
email?: string | null;
telephone?: string | null;
updatedAt: string;
createdAt: string;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "media".
*/
export interface Media {
id: string
alt: string
updatedAt: string
createdAt: string
url?: string | null
thumbnailURL?: string | null
filename?: string | null
mimeType?: string | null
filesize?: number | null
width?: number | null
height?: number | null
focalX?: number | null
focalY?: number | null
id: string;
alt: string;
updatedAt: string;
createdAt: string;
url?: string | null;
thumbnailURL?: string | null;
filename?: string | null;
mimeType?: string | null;
filesize?: number | null;
width?: number | null;
height?: number | null;
focalX?: number | null;
focalY?: number | null;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "worship".
*/
export interface Worship {
id: string
date: string
location: string | Church
type: 'MASS' | 'FAMILY' | 'WORD'
cancelled: boolean
title?: string | null
description?: string | null
updatedAt: string
createdAt: string
id: string;
date: string;
location: string | Church;
type: 'MASS' | 'FAMILY' | 'WORD';
cancelled: boolean;
title?: string | null;
description?: string | null;
updatedAt: string;
createdAt: string;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "vermeldungen".
*/
export interface Vermeldungen {
id: string;
date: string;
parish: (string | Parish)[];
updatedAt: string;
createdAt: string;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "blog".
*/
export interface Blog {
id: string;
photo?: (string | null) | Media;
title: string;
parish?: (string | Parish)[] | null;
isHighlight: boolean;
text: {
root: {
type: string;
children: {
type: string;
version: number;
[k: string]: unknown;
}[];
direction: ('ltr' | 'rtl') | null;
format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '';
indent: number;
version: number;
};
[k: string]: unknown;
};
updatedAt: string;
createdAt: string;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "tweet".
*/
export interface Tweet {
id: string;
parish?: (string | Parish)[] | null;
text: string;
updatedAt: string;
createdAt: string;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "event".
*/
export interface Event {
id: string
photo?: string | Media | null
title: string
datum: string
parish?: (string | Parish)[] | null
group?: (string | null) | Group
shortDescription: string
id: string;
photo?: (string | null) | Media;
title: string;
datum: string;
parish?: (string | Parish)[] | null;
group?: (string | null) | Group;
shortDescription: string;
description: {
root: {
type: string
type: string;
children: {
type: string
version: number
[k: string]: unknown
}[]
direction: ('ltr' | 'rtl') | null
format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | ''
indent: number
version: number
}
[k: string]: unknown
}
cancelled: boolean
updatedAt: string
createdAt: string
type: string;
version: number;
[k: string]: unknown;
}[];
direction: ('ltr' | 'rtl') | null;
format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '';
indent: number;
version: number;
};
[k: string]: unknown;
};
cancelled: boolean;
updatedAt: string;
createdAt: string;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "group".
*/
export interface Group {
id: string
photo?: string | Media | null
name: string
description: string
updatedAt: string
createdAt: string
id: string;
photo?: (string | null) | Media;
name: string;
description: string;
updatedAt: string;
createdAt: string;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "testimony".
*/
export interface Testimony {
id: string
testimony: string
name: string
occupation?: string | null
category: 'EUCHARIST'
updatedAt: string
createdAt: string
id: string;
testimony: string;
name: string;
occupation?: string | null;
category: 'EUCHARIST';
updatedAt: string;
createdAt: string;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "page".
*/
export interface Page {
id: string;
title: string;
slug: string;
content: (
| {
content: {
root: {
type: string;
children: {
type: string;
version: number;
[k: string]: unknown;
}[];
direction: ('ltr' | 'rtl') | null;
format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '';
indent: number;
version: number;
};
[k: string]: unknown;
};
id?: string | null;
blockName?: string | null;
blockType: 'content';
}
| {
title: string;
id?: string | null;
blockName?: string | null;
blockType: 'title';
}
| {
testimony: string | Testimony;
id?: string | null;
blockName?: string | null;
blockType: 'testimony';
}
)[];
updatedAt: string;
createdAt: string;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "users".
*/
export interface User {
id: string
name: string
roles: 'user' | 'employee' | 'admin'
groups?: (string | Group)[] | null
updatedAt: string
createdAt: string
email: string
resetPasswordToken?: string | null
resetPasswordExpiration?: string | null
salt?: string | null
hash?: string | null
loginAttempts?: number | null
lockUntil?: string | null
password?: string | null
id: string;
name: string;
roles: 'user' | 'employee' | 'admin';
groups?: (string | Group)[] | null;
updatedAt: string;
createdAt: string;
email: string;
resetPasswordToken?: string | null;
resetPasswordExpiration?: string | null;
salt?: string | null;
hash?: string | null;
loginAttempts?: number | null;
lockUntil?: string | null;
password?: string | null;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "payload-preferences".
*/
export interface PayloadPreference {
id: string
id: string;
user: {
relationTo: 'users'
value: string | User
}
key?: string | null
relationTo: 'users';
value: string | User;
};
key?: string | null;
value?:
| {
[k: string]: unknown
[k: string]: unknown;
}
| unknown[]
| string
| number
| boolean
| null
updatedAt: string
createdAt: string
| null;
updatedAt: string;
createdAt: string;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "payload-migrations".
*/
export interface PayloadMigration {
id: string
name?: string | null
batch?: number | null
updatedAt: string
createdAt: string
id: string;
name?: string | null;
batch?: number | null;
updatedAt: string;
createdAt: string;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "auth".
*/
export interface Auth {
[k: string]: unknown
[k: string]: unknown;
}
declare module 'payload' {
export interface GeneratedTypes extends Config {}
}

View file

@ -16,6 +16,10 @@ import { Parish } from '@/collections/Parish'
import { Employees } from '@/collections/Employees'
import { Groups } from '@/collections/Groups'
import { Events } from '@/collections/Events'
import { Announcements } from '@/collections/Announcements'
import { Blog } from '@/collections/Blog'
import { Tweets } from '@/collections/Tweets'
import { Pages } from '@/collections/Pages'
const filename = fileURLToPath(import.meta.url)
const dirname = path.dirname(filename)
@ -28,10 +32,14 @@ export default buildConfig({
Parish,
Churches,
Worship,
Announcements,
Blog,
Tweets,
Events,
Groups,
Employees,
Testimony,
Pages,
Users,
Media,
],

2244
yarn.lock

File diff suppressed because it is too large Load diff