feat: isolates local api to local-only functions, converts it to ts generic for stronger typing
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import formatName from '../../../graphql/utilities/formatName';
|
||||
import access from '../../operations/access';
|
||||
import { Payload } from '../../..';
|
||||
import { Payload } from '../../../payload';
|
||||
|
||||
const formatConfigNames = (results, configs) => {
|
||||
const formattedResults = { ...results };
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import passport from 'passport';
|
||||
import AnonymousStrategy from 'passport-anonymous';
|
||||
import { Payload } from '../index';
|
||||
import { Payload } from '../payload';
|
||||
import jwtStrategy from './strategies/jwt';
|
||||
|
||||
function initAuth(ctx: Payload): void {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { PayloadRequest } from '../../../express/types';
|
||||
import forgotPassword, { Result } from '../forgotPassword';
|
||||
import { Payload } from '../../..';
|
||||
import { Payload } from '../../../payload';
|
||||
import { getDataLoader } from '../../../collections/dataloader';
|
||||
import i18n from '../../../translations/init';
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ import { Response } from 'express';
|
||||
import login, { Result } from '../login';
|
||||
import { PayloadRequest } from '../../../express/types';
|
||||
import { TypeWithID } from '../../../collections/config/types';
|
||||
import { Payload } from '../../..';
|
||||
import { Payload } from '../../../payload';
|
||||
import { getDataLoader } from '../../../collections/dataloader';
|
||||
import i18n from '../../../translations/init';
|
||||
|
||||
@@ -21,7 +21,7 @@ export type Options = {
|
||||
showHiddenFields?: boolean
|
||||
}
|
||||
|
||||
async function localLogin<T extends TypeWithID = any>(payload: Payload, options: Options): Promise<Result & { user: T}> {
|
||||
async function localLogin<T extends TypeWithID = any>(payload: Payload, options: Options): Promise<Result & { user: T }> {
|
||||
const {
|
||||
collection: collectionSlug,
|
||||
req = {} as PayloadRequest,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Payload } from '../../..';
|
||||
import { Payload } from '../../../payload';
|
||||
import resetPassword, { Result } from '../resetPassword';
|
||||
import { PayloadRequest } from '../../../express/types';
|
||||
import { getDataLoader } from '../../../collections/dataloader';
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { PayloadRequest } from '../../../express/types';
|
||||
import { Payload } from '../../..';
|
||||
import { Payload } from '../../../payload';
|
||||
import unlock from '../unlock';
|
||||
import { getDataLoader } from '../../../collections/dataloader';
|
||||
import i18n from '../../../translations/init';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Payload } from '../../../index';
|
||||
import { Payload } from '../../../payload';
|
||||
import verifyEmail from '../verifyEmail';
|
||||
|
||||
export type Options = {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Payload } from '..';
|
||||
import { Payload } from '../payload';
|
||||
import { PayloadRequest } from '../express/types';
|
||||
import { SanitizedConfig, EmailOptions } from '../config/types';
|
||||
import { Collection } from '../collections/config/types';
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import PassportAPIKey from 'passport-headerapikey';
|
||||
import crypto from 'crypto';
|
||||
import { PayloadRequest } from '../../express/types';
|
||||
import { Payload } from '../..';
|
||||
import { Payload } from '../../payload';
|
||||
import find from '../../collections/operations/find';
|
||||
|
||||
export default (payload: Payload, { Model, config }): PassportAPIKey => {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import url from 'url';
|
||||
import passportJwt, { StrategyOptions } from 'passport-jwt';
|
||||
import { Strategy as PassportStrategy } from 'passport-strategy';
|
||||
import { Payload } from '../..';
|
||||
import { Payload } from '../../payload';
|
||||
import getExtractJWT from '../getExtractJWT';
|
||||
|
||||
const JwtStrategy = passportJwt.Strategy;
|
||||
|
||||
@@ -2,7 +2,7 @@ import { Strategy } from 'passport';
|
||||
import { DeepRequired } from 'ts-essentials';
|
||||
import { PayloadRequest } from '../express/types';
|
||||
import { Where, PayloadMongooseDocument } from '../types';
|
||||
import { Payload } from '..';
|
||||
import { Payload } from '../payload';
|
||||
|
||||
export type Permission = {
|
||||
permission: boolean
|
||||
|
||||
@@ -28,7 +28,7 @@ import resetPassword from '../../auth/graphql/resolvers/resetPassword';
|
||||
import verifyEmail from '../../auth/graphql/resolvers/verifyEmail';
|
||||
import unlock from '../../auth/graphql/resolvers/unlock';
|
||||
import refresh from '../../auth/graphql/resolvers/refresh';
|
||||
import { Payload } from '../..';
|
||||
import { Payload } from '../../payload';
|
||||
import { Field, fieldAffectsData } from '../../fields/config/types';
|
||||
import buildObjectType, { ObjectTypeConfig } from '../../graphql/schema/buildObjectType';
|
||||
import buildWhereInputType from '../../graphql/schema/buildWhereInputType';
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { UploadedFile } from 'express-fileupload';
|
||||
import { Payload } from '../../..';
|
||||
import { Payload } from '../../../payload';
|
||||
import { PayloadRequest } from '../../../express/types';
|
||||
import { Document } from '../../../types';
|
||||
import getFileByPath from '../../../uploads/getFileByPath';
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { TypeWithID } from '../../config/types';
|
||||
import { Document } from '../../../types';
|
||||
import { PayloadRequest } from '../../../express/types';
|
||||
import { Payload } from '../../../index';
|
||||
import { Payload } from '../../../payload';
|
||||
import deleteOperation from '../delete';
|
||||
import { getDataLoader } from '../../dataloader';
|
||||
import i18n from '../../../translations/init';
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { TypeWithID } from '../../config/types';
|
||||
import { PaginatedDocs } from '../../../mongoose/types';
|
||||
import { Document, Where } from '../../../types';
|
||||
import { Payload } from '../../..';
|
||||
import { Payload } from '../../../payload';
|
||||
import { PayloadRequest } from '../../../express/types';
|
||||
import find from '../find';
|
||||
import { getDataLoader } from '../../dataloader';
|
||||
|
||||
@@ -2,7 +2,7 @@ import { TypeWithID } from '../../config/types';
|
||||
import { PayloadRequest } from '../../../express/types';
|
||||
import { Document } from '../../../types';
|
||||
import findByID from '../findByID';
|
||||
import { Payload } from '../../..';
|
||||
import { Payload } from '../../../payload';
|
||||
import { getDataLoader } from '../../dataloader';
|
||||
import i18n from '../../../translations/init';
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Payload } from '../../..';
|
||||
import { Payload } from '../../../payload';
|
||||
import { Document } from '../../../types';
|
||||
import { PayloadRequest } from '../../../express/types';
|
||||
import { TypeWithVersion } from '../../../versions/types';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Payload } from '../../..';
|
||||
import { Payload } from '../../../payload';
|
||||
import { Document, Where } from '../../../types';
|
||||
import { PaginatedDocs } from '../../../mongoose/types';
|
||||
import { TypeWithVersion } from '../../../versions/types';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Payload } from '../../..';
|
||||
import { Payload } from '../../../payload';
|
||||
import { PayloadRequest } from '../../../express/types';
|
||||
import { Document } from '../../../types';
|
||||
import { TypeWithVersion } from '../../../versions/types';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Payload } from '../../..';
|
||||
import { Payload } from '../../../payload';
|
||||
import { Document } from '../../../types';
|
||||
import getFileByPath from '../../../uploads/getFileByPath';
|
||||
import update from '../update';
|
||||
|
||||
@@ -9,7 +9,7 @@ import { ConnectOptions } from 'mongoose';
|
||||
import React from 'react';
|
||||
import { LoggerOptions } from 'pino';
|
||||
import type { InitOptions as i18nInitOptions } from 'i18next';
|
||||
import { Payload } from '..';
|
||||
import { Payload } from '../payload';
|
||||
import {
|
||||
AfterErrorHook,
|
||||
CollectionConfig,
|
||||
|
||||
@@ -3,7 +3,7 @@ import compression from 'compression';
|
||||
import history from 'connect-history-api-fallback';
|
||||
import path from 'path';
|
||||
import initWebpack from '../webpack/init';
|
||||
import { Payload } from '../index';
|
||||
import { Payload } from '../payload';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ import rateLimit from 'express-rate-limit';
|
||||
import localizationMiddleware from '../../localization/middleware';
|
||||
import authenticate from './authenticate';
|
||||
import identifyAPI from './identifyAPI';
|
||||
import { Payload } from '../..';
|
||||
import { Payload } from '../../payload';
|
||||
import { PayloadRequest } from '../types';
|
||||
import corsHeaders from './corsHeaders';
|
||||
import convertPayload from './convertPayload';
|
||||
|
||||
@@ -3,7 +3,7 @@ import passport from 'passport';
|
||||
import path from 'path';
|
||||
import getExecuteStaticAccess from '../auth/getExecuteStaticAccess';
|
||||
import authenticate from './middleware/authenticate';
|
||||
import { Payload } from '../index';
|
||||
import { Payload } from '../payload';
|
||||
import corsHeaders from './middleware/corsHeaders';
|
||||
|
||||
function initStatic(ctx: Payload): void {
|
||||
|
||||
@@ -2,7 +2,7 @@ import { Request } from 'express';
|
||||
import type { i18n as Ii18n, TFunction } from 'i18next';
|
||||
import DataLoader from 'dataloader';
|
||||
import { UploadedFile } from 'express-fileupload';
|
||||
import { Payload } from '../index';
|
||||
import { Payload } from '../payload';
|
||||
import { Collection } from '../collections/config/types';
|
||||
import { User } from '../auth/types';
|
||||
import { Document } from '../types';
|
||||
|
||||
@@ -9,7 +9,7 @@ import { PayloadRequest } from '../../express/types';
|
||||
import { ConditionalDateProps } from '../../admin/components/elements/DatePicker/types';
|
||||
import { Description } from '../../admin/components/forms/FieldDescription/types';
|
||||
import { User } from '../../auth';
|
||||
import { Payload } from '../..';
|
||||
import { Payload } from '../../payload';
|
||||
import { RowLabel } from '../../admin/components/forms/RowLabel/types';
|
||||
|
||||
export type FieldHookArgs<T extends TypeWithID = any, P = any, S = any> = {
|
||||
|
||||
@@ -9,7 +9,7 @@ import updateResolver from './resolvers/update';
|
||||
import findVersionByIDResolver from './resolvers/findVersionByID';
|
||||
import findVersionsResolver from './resolvers/findVersions';
|
||||
import restoreVersionResolver from './resolvers/restoreVersion';
|
||||
import { Payload } from '../..';
|
||||
import { Payload } from '../../payload';
|
||||
import buildObjectType from '../../graphql/schema/buildObjectType';
|
||||
import buildMutationInputType from '../../graphql/schema/buildMutationInputType';
|
||||
import buildWhereInputType from '../../graphql/schema/buildWhereInputType';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Payload } from '../../..';
|
||||
import { Payload } from '../../../payload';
|
||||
import { getDataLoader } from '../../../collections/dataloader';
|
||||
import { PayloadRequest } from '../../../express/types';
|
||||
import { Document } from '../../../types';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Payload } from '../../..';
|
||||
import { Payload } from '../../../payload';
|
||||
import { getDataLoader } from '../../../collections/dataloader';
|
||||
import { PayloadRequest } from '../../../express/types';
|
||||
import { Document } from '../../../types';
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { Document, Where } from '../../../types';
|
||||
import { PaginatedDocs } from '../../../mongoose/types';
|
||||
import { TypeWithVersion } from '../../../versions/types';
|
||||
import { Payload } from '../../..';
|
||||
import { Payload } from '../../../payload';
|
||||
import { PayloadRequest } from '../../../express/types';
|
||||
import findVersions from '../findVersions';
|
||||
import { getDataLoader } from '../../../collections/dataloader';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Payload } from '../../..';
|
||||
import { Payload } from '../../../payload';
|
||||
import { getDataLoader } from '../../../collections/dataloader';
|
||||
import { PayloadRequest } from '../../../express/types';
|
||||
import { Document } from '../../../types';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Payload } from '../../..';
|
||||
import { Payload } from '../../../payload';
|
||||
import { Document } from '../../../types';
|
||||
import { PayloadRequest } from '../../../express/types';
|
||||
import { TypeWithID } from '../../config/types';
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import graphQLPlayground from 'graphql-playground-middleware-express';
|
||||
import { Payload } from '../index';
|
||||
import { Payload } from '../payload';
|
||||
|
||||
function initPlayground(ctx: Payload): void {
|
||||
if ((!ctx.config.graphQL.disable && !ctx.config.graphQL.disablePlaygroundInProduction && process.env.NODE_ENV === 'production') || process.env.NODE_ENV !== 'production') {
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
import * as GraphQL from 'graphql';
|
||||
import { GraphQLObjectType, GraphQLSchema } from 'graphql';
|
||||
import queryComplexity, { fieldExtensionsEstimator, simpleEstimator } from 'graphql-query-complexity';
|
||||
import { Payload } from '..';
|
||||
import { Payload } from '../payload';
|
||||
import buildLocaleInputType from './schema/buildLocaleInputType';
|
||||
import buildFallbackLocaleInputType from './schema/buildFallbackLocaleInputType';
|
||||
import initCollections from '../collections/graphql/init';
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* eslint-disable no-param-reassign */
|
||||
import { Payload } from '../..';
|
||||
import { Payload } from '../../payload';
|
||||
import { Block } from '../../fields/config/types';
|
||||
import buildObjectType from './buildObjectType';
|
||||
import { toWords } from '../../utilities/formatLabels';
|
||||
|
||||
@@ -18,7 +18,7 @@ import formatName from '../utilities/formatName';
|
||||
import combineParentName from '../utilities/combineParentName';
|
||||
import { ArrayField, CodeField, JSONField, DateField, EmailField, Field, fieldAffectsData, GroupField, NumberField, PointField, RadioField, RelationshipField, RichTextField, RowField, SelectField, TextareaField, TextField, UploadField, CollapsibleField, TabsField, CheckboxField, BlockField, tabHasName } from '../../fields/config/types';
|
||||
import { toWords } from '../../utilities/formatLabels';
|
||||
import { Payload } from '../../index';
|
||||
import { Payload } from '../../payload';
|
||||
import { SanitizedCollectionConfig } from '../../collections/config/types';
|
||||
import { groupOrTabHasRequiredSubfield } from '../../utilities/groupOrTabHasRequiredSubfield';
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ import withNullableType from './withNullableType';
|
||||
import { toWords } from '../../utilities/formatLabels';
|
||||
import createRichTextRelationshipPromise from '../../fields/richText/richTextRelationshipPromise';
|
||||
import formatOptions from '../utilities/formatOptions';
|
||||
import { Payload } from '../..';
|
||||
import { Payload } from '../../payload';
|
||||
import buildWhereInputType from './buildWhereInputType';
|
||||
import buildBlockType from './buildBlockType';
|
||||
import isFieldNullable from './isFieldNullable';
|
||||
|
||||
@@ -5,7 +5,7 @@ import formatName from '../utilities/formatName';
|
||||
import { CollectionConfig, SanitizedCollectionConfig } from '../../collections/config/types';
|
||||
import { GlobalConfig, SanitizedGlobalConfig } from '../../globals/config/types';
|
||||
import { Field } from '../../fields/config/types';
|
||||
import { Payload } from '../..';
|
||||
import { Payload } from '../../payload';
|
||||
import { toWords } from '../../utilities/formatLabels';
|
||||
|
||||
type OperationType = 'create' | 'read' | 'update' | 'delete' | 'unlock' | 'readVersions';
|
||||
|
||||
19
src/index.ts
19
src/index.ts
@@ -2,12 +2,21 @@ import {
|
||||
InitOptions,
|
||||
} from './config/types';
|
||||
import { initHTTP } from './initHTTP';
|
||||
import { Payload, getPayload } from './payload';
|
||||
import { Payload } from './payload';
|
||||
|
||||
export { getPayload } from './payload';
|
||||
|
||||
require('isomorphic-fetch');
|
||||
|
||||
export const init = async <T = any>(options: InitOptions): Promise<Payload<T>> => {
|
||||
return initHTTP<T>(options);
|
||||
};
|
||||
export class PayloadHTTP extends Payload {
|
||||
async init<T = any>(options: InitOptions): Promise<Payload<T>> {
|
||||
const payload = await initHTTP<T>(options);
|
||||
Object.assign(this, payload);
|
||||
return payload;
|
||||
}
|
||||
}
|
||||
|
||||
export default getPayload;
|
||||
const payload = new PayloadHTTP();
|
||||
|
||||
export default payload;
|
||||
module.exports = payload;
|
||||
|
||||
102
src/initHTTP.ts
102
src/initHTTP.ts
@@ -23,62 +23,64 @@ import { Payload, getPayload } from './payload';
|
||||
export const initHTTP = async <T>(options: InitOptions): Promise<Payload<T>> => {
|
||||
const payload = await getPayload<T>(options);
|
||||
|
||||
payload.router = express.Router();
|
||||
payload.router.use(...expressMiddleware(payload));
|
||||
initAuth(payload);
|
||||
if (!options.local) {
|
||||
payload.router = express.Router();
|
||||
payload.router.use(...expressMiddleware(payload));
|
||||
initAuth(payload);
|
||||
|
||||
initCollectionsHTTP(payload);
|
||||
initGlobalsHTTP(payload);
|
||||
initCollectionsHTTP(payload);
|
||||
initGlobalsHTTP(payload);
|
||||
|
||||
options.express.use((req: PayloadRequest, res, next) => {
|
||||
req.payload = payload;
|
||||
next();
|
||||
});
|
||||
options.express.use((req: PayloadRequest, res, next) => {
|
||||
req.payload = payload;
|
||||
next();
|
||||
});
|
||||
|
||||
options.express.use((req: PayloadRequest, res: Response, next: NextFunction): void => {
|
||||
req.payloadDataLoader = getDataLoader(req);
|
||||
return next();
|
||||
});
|
||||
options.express.use((req: PayloadRequest, res: Response, next: NextFunction): void => {
|
||||
req.payloadDataLoader = getDataLoader(req);
|
||||
return next();
|
||||
});
|
||||
|
||||
payload.express = options.express;
|
||||
payload.express = options.express;
|
||||
|
||||
if (payload.config.rateLimit.trustProxy) {
|
||||
payload.express.set('trust proxy', 1);
|
||||
if (payload.config.rateLimit.trustProxy) {
|
||||
payload.express.set('trust proxy', 1);
|
||||
}
|
||||
|
||||
initAdmin(payload);
|
||||
initPreferences(payload);
|
||||
|
||||
payload.router.get('/access', access);
|
||||
|
||||
if (!payload.config.graphQL.disable) {
|
||||
payload.router.use(
|
||||
payload.config.routes.graphQL,
|
||||
(req, res, next): void => {
|
||||
if (req.method === 'OPTIONS') {
|
||||
res.sendStatus(204);
|
||||
} else {
|
||||
next();
|
||||
}
|
||||
},
|
||||
identifyAPI('GraphQL'),
|
||||
(req: PayloadRequest, res: Response) => graphQLHandler(req, res)(req, res),
|
||||
);
|
||||
initGraphQLPlayground(payload);
|
||||
}
|
||||
|
||||
mountEndpoints(options.express, payload.router, payload.config.endpoints);
|
||||
|
||||
// Bind router to API
|
||||
payload.express.use(payload.config.routes.api, payload.router);
|
||||
|
||||
// Enable static routes for all collections permitting upload
|
||||
initStatic(payload);
|
||||
|
||||
payload.errorHandler = errorHandler(payload.config, payload.logger);
|
||||
payload.router.use(payload.errorHandler);
|
||||
|
||||
payload.authenticate = authenticate(payload.config);
|
||||
}
|
||||
|
||||
initAdmin(payload);
|
||||
initPreferences(payload);
|
||||
|
||||
payload.router.get('/access', access);
|
||||
|
||||
if (!payload.config.graphQL.disable) {
|
||||
payload.router.use(
|
||||
payload.config.routes.graphQL,
|
||||
(req, res, next): void => {
|
||||
if (req.method === 'OPTIONS') {
|
||||
res.sendStatus(204);
|
||||
} else {
|
||||
next();
|
||||
}
|
||||
},
|
||||
identifyAPI('GraphQL'),
|
||||
(req: PayloadRequest, res: Response) => graphQLHandler(req, res)(req, res),
|
||||
);
|
||||
initGraphQLPlayground(payload);
|
||||
}
|
||||
|
||||
mountEndpoints(options.express, payload.router, payload.config.endpoints);
|
||||
|
||||
// Bind router to API
|
||||
payload.express.use(payload.config.routes.api, payload.router);
|
||||
|
||||
// Enable static routes for all collections permitting upload
|
||||
initStatic(payload);
|
||||
|
||||
payload.errorHandler = errorHandler(payload.config, payload.logger);
|
||||
payload.router.use(payload.errorHandler);
|
||||
|
||||
payload.authenticate = authenticate(payload.config);
|
||||
|
||||
return payload;
|
||||
};
|
||||
|
||||
@@ -9,7 +9,7 @@ import { DateTimeResolver } from 'graphql-scalars';
|
||||
import findOne from '../operations/findOne';
|
||||
import update from '../operations/update';
|
||||
import deleteOperation from '../operations/delete';
|
||||
import { Payload } from '../..';
|
||||
import { Payload } from '../../payload';
|
||||
|
||||
function initCollectionsGraphQL(payload: Payload): void {
|
||||
const valueType = GraphQLJSON;
|
||||
|
||||
@@ -2,7 +2,7 @@ import type { TFunction } from 'i18next';
|
||||
import { FileUploadError } from '../errors';
|
||||
import saveBufferToFile from './saveBufferToFile';
|
||||
import { FileToSave } from './types';
|
||||
import { Payload } from '..';
|
||||
import { Payload } from '../payload';
|
||||
|
||||
export const uploadFiles = async (payload: Payload, files: FileToSave[], t: TFunction): Promise<void> => {
|
||||
try {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { sendEvent } from '..';
|
||||
import { Payload } from '../../..';
|
||||
import { Payload } from '../../../payload';
|
||||
|
||||
export type ServerInitEvent = {
|
||||
type: 'server-init'
|
||||
|
||||
@@ -3,7 +3,7 @@ import Conf from 'conf';
|
||||
import { randomBytes } from 'crypto';
|
||||
import findUp from 'find-up';
|
||||
import fs from 'fs';
|
||||
import { Payload } from '../../index';
|
||||
import { Payload } from '../../payload';
|
||||
import { ServerInitEvent } from './events/serverInit';
|
||||
import { AdminInitEvent } from './events/adminInit';
|
||||
import { oneWayHash } from './oneWayHash';
|
||||
@@ -28,7 +28,7 @@ type Args = {
|
||||
event: TelemetryEvent
|
||||
}
|
||||
|
||||
export const sendEvent = async ({ payload, event } : Args): Promise<void> => {
|
||||
export const sendEvent = async ({ payload, event }: Args): Promise<void> => {
|
||||
if (payload.config.telemetry !== false) {
|
||||
try {
|
||||
const packageJSON = await getPackageJSON();
|
||||
@@ -49,7 +49,7 @@ export const sendEvent = async ({ payload, event } : Args): Promise<void> => {
|
||||
body: JSON.stringify({ ...baseEvent, ...event }),
|
||||
});
|
||||
} catch (_) {
|
||||
// Eat any errors in sending telemetry event
|
||||
// Eat any errors in sending telemetry event
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Payload } from '..';
|
||||
import { Payload } from '../payload';
|
||||
import { SanitizedCollectionConfig } from '../collections/config/types';
|
||||
import { SanitizedGlobalConfig } from '../globals/config/types';
|
||||
import { TypeWithVersion } from './types';
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { AccessResult } from '../../config/types';
|
||||
import { Where } from '../../types';
|
||||
import { Payload } from '../..';
|
||||
import { Payload } from '../../payload';
|
||||
import { PaginatedDocs } from '../../mongoose/types';
|
||||
import { Collection, CollectionModel, TypeWithID } from '../../collections/config/types';
|
||||
import { hasWhereAccessResult } from '../../auth';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Payload } from '../..';
|
||||
import { Payload } from '../../payload';
|
||||
import { docHasTimestamps, Where } from '../../types';
|
||||
import { hasWhereAccessResult } from '../../auth';
|
||||
import { AccessResult } from '../../config/types';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Payload } from '../..';
|
||||
import { Payload } from '../../payload';
|
||||
import { SanitizedCollectionConfig } from '../../collections/config/types';
|
||||
import { enforceMaxVersions } from '../enforceMaxVersions';
|
||||
import { PayloadRequest } from '../../express/types';
|
||||
@@ -46,7 +46,7 @@ export const saveCollectionDraft = async ({
|
||||
},
|
||||
{ new: true, lean: true },
|
||||
);
|
||||
// Otherwise, create a new one
|
||||
// Otherwise, create a new one
|
||||
} else {
|
||||
result = await VersionsModel.create({
|
||||
parent: id,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Payload } from '../..';
|
||||
import { Payload } from '../../payload';
|
||||
import { enforceMaxVersions } from '../enforceMaxVersions';
|
||||
import { SanitizedGlobalConfig } from '../../globals/config/types';
|
||||
|
||||
@@ -40,7 +40,7 @@ export const saveGlobalDraft = async ({
|
||||
},
|
||||
{ new: true, lean: true },
|
||||
);
|
||||
// Otherwise, create a new one
|
||||
// Otherwise, create a new one
|
||||
} else {
|
||||
result = await VersionsModel.create({
|
||||
version: dataAsDraft,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Payload } from '..';
|
||||
import { Payload } from '../payload';
|
||||
import { CollectionModel } from '../collections/config/types';
|
||||
|
||||
type Args = {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Payload } from '..';
|
||||
import { Payload } from '../payload';
|
||||
import { SanitizedCollectionConfig } from '../collections/config/types';
|
||||
import { enforceMaxVersions } from './enforceMaxVersions';
|
||||
import { PayloadRequest } from '../express/types';
|
||||
@@ -34,14 +34,14 @@ export const ensurePublishedCollectionVersion = async ({
|
||||
$gt: docWithLocales.updatedAt,
|
||||
},
|
||||
},
|
||||
{},
|
||||
{
|
||||
lean: true,
|
||||
leanWithId: true,
|
||||
sort: {
|
||||
updatedAt: 'desc',
|
||||
},
|
||||
});
|
||||
{},
|
||||
{
|
||||
lean: true,
|
||||
leanWithId: true,
|
||||
sort: {
|
||||
updatedAt: 'desc',
|
||||
},
|
||||
});
|
||||
|
||||
if (moreRecentDrafts?.length === 0) {
|
||||
const version = await afterRead({
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Payload } from '..';
|
||||
import { Payload } from '../payload';
|
||||
import { enforceMaxVersions } from './enforceMaxVersions';
|
||||
import { PayloadRequest } from '../express/types';
|
||||
import { SanitizedGlobalConfig } from '../globals/config/types';
|
||||
@@ -29,14 +29,14 @@ export const ensurePublishedGlobalVersion = async ({
|
||||
$gt: docWithLocales.updatedAt,
|
||||
},
|
||||
},
|
||||
{},
|
||||
{
|
||||
lean: true,
|
||||
leanWithId: true,
|
||||
sort: {
|
||||
updatedAt: 'desc',
|
||||
},
|
||||
});
|
||||
{},
|
||||
{
|
||||
lean: true,
|
||||
leanWithId: true,
|
||||
sort: {
|
||||
updatedAt: 'desc',
|
||||
},
|
||||
});
|
||||
|
||||
if (moreRecentDrafts?.length === 0) {
|
||||
const version = await afterRead({
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { Document } from '../types';
|
||||
import { Payload } from '..';
|
||||
import { Payload } from '../payload';
|
||||
import { Collection, TypeWithID } from '../collections/config/types';
|
||||
|
||||
type Args = {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Payload } from '..';
|
||||
import { Payload } from '../payload';
|
||||
import { SanitizedCollectionConfig } from '../collections/config/types';
|
||||
import { enforceMaxVersions } from './enforceMaxVersions';
|
||||
import { PayloadRequest } from '../express/types';
|
||||
@@ -33,14 +33,14 @@ export const saveCollectionVersion = async ({
|
||||
$gt: docWithLocales.updatedAt,
|
||||
},
|
||||
},
|
||||
{},
|
||||
{
|
||||
lean: true,
|
||||
leanWithId: true,
|
||||
sort: {
|
||||
updatedAt: 'desc',
|
||||
},
|
||||
});
|
||||
{},
|
||||
{
|
||||
lean: true,
|
||||
leanWithId: true,
|
||||
sort: {
|
||||
updatedAt: 'desc',
|
||||
},
|
||||
});
|
||||
|
||||
if (latestVersion) {
|
||||
// If the latest version is a draft, no need to re-save it
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Payload } from '..';
|
||||
import { Payload } from '../payload';
|
||||
import { enforceMaxVersions } from './enforceMaxVersions';
|
||||
import { PayloadRequest } from '../express/types';
|
||||
import { SanitizedGlobalConfig } from '../globals/config/types';
|
||||
@@ -28,14 +28,14 @@ export const saveGlobalVersion = async ({
|
||||
$gt: docWithLocales.updatedAt,
|
||||
},
|
||||
},
|
||||
{},
|
||||
{
|
||||
lean: true,
|
||||
leanWithId: true,
|
||||
sort: {
|
||||
updatedAt: 'desc',
|
||||
},
|
||||
});
|
||||
{},
|
||||
{
|
||||
lean: true,
|
||||
leanWithId: true,
|
||||
sort: {
|
||||
updatedAt: 'desc',
|
||||
},
|
||||
});
|
||||
|
||||
if (latestVersion) {
|
||||
// If the latest version is a draft, no need to re-save it
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
import { Request } from 'express';
|
||||
import { Strategy } from 'passport-strategy';
|
||||
import { Payload } from '../../../src';
|
||||
import { Payload } from '../../../src/payload';
|
||||
import { buildConfig } from '../../buildConfig';
|
||||
|
||||
export const slug = 'users';
|
||||
export const strategyName = 'test-local'
|
||||
export const strategyName = 'test-local';
|
||||
|
||||
export class CustomStrategy extends Strategy {
|
||||
|
||||
ctx: Payload;
|
||||
|
||||
constructor(ctx: Payload) {
|
||||
@@ -16,29 +15,29 @@ export class CustomStrategy extends Strategy {
|
||||
}
|
||||
|
||||
authenticate(req: Request, options?: any): void {
|
||||
if(!req.headers.code && !req.headers.secret) {
|
||||
if (!req.headers.code && !req.headers.secret) {
|
||||
return this.success(null);
|
||||
}
|
||||
this.ctx.find({
|
||||
collection: slug,
|
||||
where: {
|
||||
code: {
|
||||
equals: req.headers.code
|
||||
equals: req.headers.code,
|
||||
},
|
||||
secret: {
|
||||
equals: req.headers.secret
|
||||
}
|
||||
}
|
||||
equals: req.headers.secret,
|
||||
},
|
||||
},
|
||||
}).then((users) => {
|
||||
if(users.docs && users.docs.length) {
|
||||
if (users.docs && users.docs.length) {
|
||||
const user = users.docs[0];
|
||||
user.collection = slug;
|
||||
user._strategy = `${slug}-${strategyName}`;
|
||||
this.success(user)
|
||||
this.success(user);
|
||||
} else {
|
||||
this.error(null)
|
||||
this.error(null);
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -54,12 +53,12 @@ export default buildConfig({
|
||||
strategies: [
|
||||
{
|
||||
name: strategyName,
|
||||
strategy: (ctx) => new CustomStrategy(ctx)
|
||||
}
|
||||
]
|
||||
strategy: (ctx) => new CustomStrategy(ctx),
|
||||
},
|
||||
],
|
||||
},
|
||||
access: {
|
||||
create: () => true
|
||||
create: () => true,
|
||||
},
|
||||
fields: [
|
||||
{
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
|
||||
import express from 'express';
|
||||
import { v4 as uuid } from 'uuid';
|
||||
import { init as initPayload } from '../src';
|
||||
import payload from '../src';
|
||||
|
||||
const expressApp = express();
|
||||
|
||||
const startDev = async () => {
|
||||
const payload = await initPayload({
|
||||
await payload.init({
|
||||
secret: uuid(),
|
||||
mongoURL: process.env.MONGO_URL || 'mongodb://localhost/payload',
|
||||
express: expressApp,
|
||||
|
||||
@@ -40,7 +40,7 @@ export async function initPayloadTest(options: Options): Promise<{ serverURL: st
|
||||
initOptions.express = express();
|
||||
}
|
||||
|
||||
await payload.initAsync(initOptions);
|
||||
await payload.init(initOptions);
|
||||
|
||||
if (initOptions.express) {
|
||||
initOptions.express.listen(port);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Payload } from '../../../../src';
|
||||
import { Payload } from '../../../../src/payload';
|
||||
import { BeforeLoginHook, CollectionConfig } from '../../../../src/collections/config/types';
|
||||
import { AuthenticationError } from '../../../../src/errors';
|
||||
import { devUser, regularUser } from '../../../credentials';
|
||||
|
||||
Reference in New Issue
Block a user