enables typescript intellisense in buildConfig
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
import { Access, Hook } from '../../config/types';
|
||||
import { Field } from '../../fields/config/types';
|
||||
|
||||
export type Collection = {
|
||||
slug: string;
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
import { PayloadConfig } from '../types';
|
||||
import { Config } from './types';
|
||||
import sanitize from './sanitize';
|
||||
import validate from './validate';
|
||||
|
||||
const buildConfig = (config: PayloadConfig) => {
|
||||
export default function buildConfig(config: Config): Config {
|
||||
const validated = validate(config);
|
||||
const sanitized = sanitize(validated);
|
||||
|
||||
return sanitized;
|
||||
};
|
||||
|
||||
module.exports = buildConfig;
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { Express } from 'express';
|
||||
import { CSSProperties } from 'react';
|
||||
import { Transporter } from 'nodemailer';
|
||||
import SMTPConnection from 'nodemailer/lib/smtp-connection';
|
||||
import { Collection } from '../collections/config/types';
|
||||
import { Global } from '../globals/config/types';
|
||||
|
||||
type MockEmailTransport = {
|
||||
transport?: 'mock';
|
||||
@@ -67,6 +67,11 @@ export type Config = {
|
||||
graphQL?: string;
|
||||
graphQLPlayground?: string;
|
||||
};
|
||||
express: {
|
||||
json: {
|
||||
limit?: number
|
||||
}
|
||||
},
|
||||
email?: EmailOptions;
|
||||
local?: boolean;
|
||||
defaultDepth?: number;
|
||||
|
||||
@@ -3,9 +3,9 @@ import * as configSchema from './schema.json';
|
||||
import * as collectionSchema from '../collections/config/schema.json';
|
||||
|
||||
import InvalidSchema from '../errors/InvalidSchema';
|
||||
import { PayloadConfig } from './types';
|
||||
import { Config } from './types';
|
||||
|
||||
const validateSchema = (config: PayloadConfig): PayloadConfig => {
|
||||
const validateSchema = (config: Config): Config => {
|
||||
const ajv = new Ajv({ useDefaults: true });
|
||||
const validate = ajv.addSchema(collectionSchema, '../collections/config/schema.json').compile(configSchema);
|
||||
const valid = validate(config);
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
import nodemailer, { TestAccount, Transporter } from 'nodemailer';
|
||||
import { PayloadEmailOptions } from '../types';
|
||||
import nodemailer from 'nodemailer';
|
||||
import { EmailOptions } from '../config/types';
|
||||
import { MockEmailHandler } from './types';
|
||||
|
||||
const mockEmailHandler = async (emailConfig: PayloadEmailOptions): Promise<MockEmailHandler> => {
|
||||
const mockEmailHandler = async (emailConfig: EmailOptions): Promise<MockEmailHandler> => {
|
||||
const testAccount = await nodemailer.createTestAccount();
|
||||
|
||||
const smtpOptions = {
|
||||
...emailConfig,
|
||||
host: "smtp.ethereal.email",
|
||||
host: 'smtp.ethereal.email',
|
||||
port: 587,
|
||||
secure: false,
|
||||
fromName: emailConfig.fromName || "Payload CMS",
|
||||
fromAddress: emailConfig.fromAddress || "info@payloadcms.com",
|
||||
fromName: emailConfig.fromName || 'Payload CMS',
|
||||
fromAddress: emailConfig.fromAddress || 'info@payloadcms.com',
|
||||
auth: {
|
||||
user: testAccount.user,
|
||||
pass: testAccount.pass,
|
||||
|
||||
@@ -2,6 +2,13 @@ import { TestAccount, Transporter } from 'nodemailer';
|
||||
import Mail from 'nodemailer/lib/mailer';
|
||||
import SMTPConnection from 'nodemailer/lib/smtp-connection';
|
||||
|
||||
export type Message = {
|
||||
from: string
|
||||
to: string
|
||||
subject: string
|
||||
html: string
|
||||
}
|
||||
|
||||
export type BuildEmailResult = Promise<{
|
||||
transport: Mail,
|
||||
transportOptions?: SMTPConnection.Options,
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
import { Access } from '../../config/types';
|
||||
import { Field } from '../../fields/config/types';
|
||||
|
||||
export type Global = {
|
||||
slug: string;
|
||||
label: string;
|
||||
access?: {
|
||||
create?: Access;
|
||||
read?: Access;
|
||||
update?: Access;
|
||||
delete?: Access;
|
||||
admin?: Access;
|
||||
};
|
||||
fields: Field[];
|
||||
};
|
||||
|
||||
@@ -40,7 +40,7 @@ import performFieldOperations from './fields/performFieldOperations';
|
||||
import localOperations from './collections/operations/local';
|
||||
import localGlobalOperations from './globals/operations/local';
|
||||
import { encrypt, decrypt } from './auth/crypto';
|
||||
import { MockEmailHandler, BuildEmailResult } from './email/types';
|
||||
import { MockEmailHandler, BuildEmailResult, Message } from './email/types';
|
||||
|
||||
require('isomorphic-fetch');
|
||||
|
||||
@@ -201,7 +201,7 @@ class Payload {
|
||||
if (typeof options.onInit === 'function') options.onInit();
|
||||
}
|
||||
|
||||
async sendEmail(message: string) {
|
||||
async sendEmail(message: Message) {
|
||||
const email = await this.email;
|
||||
const result = email.transport.sendMail(message);
|
||||
return result;
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
import { DuplicateCollection } from '../errors';
|
||||
import { Collection } from '../collections/config/types';
|
||||
|
||||
const getDuplicates = (arr) => arr.filter((item, index) => arr.indexOf(item) !== index);
|
||||
|
||||
const checkDuplicateCollections = (collections) => {
|
||||
const checkDuplicateCollections = (collections: Collection[]): void => {
|
||||
const duplicateSlugs = getDuplicates(collections.map((c) => c.slug));
|
||||
if (duplicateSlugs.length > 0) {
|
||||
throw new DuplicateCollection('slug', duplicateSlugs);
|
||||
|
||||
Reference in New Issue
Block a user