chore: dynamically uses generated types via tsconfig paths
This commit is contained in:
@@ -57,6 +57,7 @@ module.exports = {
|
|||||||
{
|
{
|
||||||
ignore: [
|
ignore: [
|
||||||
'payload-config',
|
'payload-config',
|
||||||
|
'payload/generated-types',
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import { PayloadRequest } from '../../express/types';
|
|||||||
|
|
||||||
export type Result = {
|
export type Result = {
|
||||||
token: string
|
token: string
|
||||||
user: UserDocument
|
user: Record<string, unknown>
|
||||||
}
|
}
|
||||||
|
|
||||||
export type Arguments = {
|
export type Arguments = {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { BaseConfig } from '../../../config/types';
|
import { Config as SchemaConfig } from 'payload/generated-types';
|
||||||
import { PayloadRequest } from '../../../express/types';
|
import { PayloadRequest } from '../../../express/types';
|
||||||
import { Collection } from '../../config/types';
|
import { Collection } from '../../config/types';
|
||||||
import findByID from '../../operations/findByID';
|
import findByID from '../../operations/findByID';
|
||||||
@@ -15,7 +15,7 @@ export type Resolver<T> = (_: unknown, args: {
|
|||||||
}
|
}
|
||||||
) => Promise<T>
|
) => Promise<T>
|
||||||
|
|
||||||
export default function findByIDResolver<T extends keyof BaseConfig['collections']>(collection: Collection): Resolver<BaseConfig['collections'][T]> {
|
export default function findByIDResolver<T extends keyof SchemaConfig['collections']>(collection: Collection): Resolver<SchemaConfig['collections'][T]> {
|
||||||
return async function resolver(_, args, context) {
|
return async function resolver(_, args, context) {
|
||||||
const { req } = context;
|
const { req } = context;
|
||||||
if (args.locale) req.locale = args.locale;
|
if (args.locale) req.locale = args.locale;
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
/* eslint-disable no-param-reassign */
|
/* eslint-disable no-param-reassign */
|
||||||
import { Response } from 'express';
|
import { Response } from 'express';
|
||||||
|
import { Config as SchemaConfig } from 'payload/generated-types';
|
||||||
import { Collection } from '../../config/types';
|
import { Collection } from '../../config/types';
|
||||||
import update from '../../operations/update';
|
import update from '../../operations/update';
|
||||||
import { PayloadRequest } from '../../../express/types';
|
import { PayloadRequest } from '../../../express/types';
|
||||||
import { BaseConfig } from '../../../config/types';
|
|
||||||
|
|
||||||
export type Resolver<Config extends BaseConfig, Slug extends keyof BaseConfig['collections']> = (_: unknown, args: {
|
export type Resolver<TSlug extends keyof SchemaConfig['collections']> = (_: unknown, args: {
|
||||||
id: string | number
|
id: string | number
|
||||||
data: Config['collections'][Slug]
|
data: SchemaConfig['collections'][TSlug]
|
||||||
locale?: string
|
locale?: string
|
||||||
draft: boolean
|
draft: boolean
|
||||||
autosave: boolean
|
autosave: boolean
|
||||||
@@ -16,11 +16,11 @@ export type Resolver<Config extends BaseConfig, Slug extends keyof BaseConfig['c
|
|||||||
req: PayloadRequest,
|
req: PayloadRequest,
|
||||||
res: Response
|
res: Response
|
||||||
}
|
}
|
||||||
) => Promise<Config['collections'][Slug]>
|
) => Promise<SchemaConfig['collections'][TSlug]>
|
||||||
|
|
||||||
export default function updateResolver<Config extends BaseConfig, Slug extends keyof BaseConfig['collections']>(
|
export default function updateResolver<TSlug extends keyof SchemaConfig['collections']>(
|
||||||
collection: Collection,
|
collection: Collection,
|
||||||
): Resolver<Config, Slug> {
|
): Resolver<TSlug> {
|
||||||
async function resolver(_, args, context) {
|
async function resolver(_, args, context) {
|
||||||
if (args.locale) context.req.locale = args.locale;
|
if (args.locale) context.req.locale = args.locale;
|
||||||
if (args.fallbackLocale) context.req.fallbackLocale = args.fallbackLocale;
|
if (args.fallbackLocale) context.req.fallbackLocale = args.fallbackLocale;
|
||||||
@@ -35,7 +35,7 @@ export default function updateResolver<Config extends BaseConfig, Slug extends k
|
|||||||
autosave: args.autosave,
|
autosave: args.autosave,
|
||||||
};
|
};
|
||||||
|
|
||||||
const result = await update<Config, Slug>(options);
|
const result = await update<TSlug>(options);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { BaseConfig } from '../../../config/types';
|
import { Config as GeneratedTypes } from 'payload/generated-types';
|
||||||
import { PayloadRequest } from '../../../express/types';
|
import { PayloadRequest } from '../../../express/types';
|
||||||
import { Document } from '../../../types';
|
import { Document } from '../../../types';
|
||||||
import findByID from '../findByID';
|
import findByID from '../findByID';
|
||||||
@@ -6,7 +6,7 @@ import { Payload } from '../../../payload';
|
|||||||
import { getDataLoader } from '../../dataloader';
|
import { getDataLoader } from '../../dataloader';
|
||||||
import i18n from '../../../translations/init';
|
import i18n from '../../../translations/init';
|
||||||
|
|
||||||
export type Options<T extends keyof BaseConfig['collections']> = {
|
export type Options<T extends keyof GeneratedTypes['collections']> = {
|
||||||
collection: T
|
collection: T
|
||||||
id: string
|
id: string
|
||||||
depth?: number
|
depth?: number
|
||||||
@@ -21,7 +21,7 @@ export type Options<T extends keyof BaseConfig['collections']> = {
|
|||||||
draft?: boolean
|
draft?: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
export default async function findByIDLocal<T extends keyof BaseConfig['collections']>(payload: Payload<BaseConfig>, options: Options<T>): Promise<BaseConfig['collections'][T]> {
|
export default async function findByIDLocal<T extends keyof GeneratedTypes['collections']>(payload: Payload, options: Options<T>): Promise<GeneratedTypes['collections'][T]> {
|
||||||
const {
|
const {
|
||||||
collection: collectionSlug,
|
collection: collectionSlug,
|
||||||
depth,
|
depth,
|
||||||
@@ -51,7 +51,7 @@ export default async function findByIDLocal<T extends keyof BaseConfig['collecti
|
|||||||
if (!req.t) req.t = req.i18n.t;
|
if (!req.t) req.t = req.i18n.t;
|
||||||
if (!req.payloadDataLoader) req.payloadDataLoader = getDataLoader(req);
|
if (!req.payloadDataLoader) req.payloadDataLoader = getDataLoader(req);
|
||||||
|
|
||||||
return findByID<BaseConfig['collections'][T]>({
|
return findByID<GeneratedTypes['collections'][T]>({
|
||||||
depth,
|
depth,
|
||||||
currentDepth,
|
currentDepth,
|
||||||
id,
|
id,
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import { Config as SchemaConfig } from 'payload/generated-types';
|
||||||
import { Payload } from '../../../payload';
|
import { Payload } from '../../../payload';
|
||||||
import { Document } from '../../../types';
|
import { Document } from '../../../types';
|
||||||
import getFileByPath from '../../../uploads/getFileByPath';
|
import getFileByPath from '../../../uploads/getFileByPath';
|
||||||
@@ -6,12 +7,11 @@ import { PayloadRequest } from '../../../express/types';
|
|||||||
import { getDataLoader } from '../../dataloader';
|
import { getDataLoader } from '../../dataloader';
|
||||||
import { File } from '../../../uploads/types';
|
import { File } from '../../../uploads/types';
|
||||||
import i18nInit from '../../../translations/init';
|
import i18nInit from '../../../translations/init';
|
||||||
import { BaseConfig } from '../../../config/types';
|
|
||||||
|
|
||||||
export type Options<Config extends BaseConfig, Slug extends keyof BaseConfig['collections']> = {
|
export type Options<TSlug extends keyof SchemaConfig['collections']> = {
|
||||||
collection: Slug
|
collection: TSlug
|
||||||
id: string | number
|
id: string | number
|
||||||
data: Config['collections'][Slug]
|
data: SchemaConfig['collections'][TSlug]
|
||||||
depth?: number
|
depth?: number
|
||||||
locale?: string
|
locale?: string
|
||||||
fallbackLocale?: string
|
fallbackLocale?: string
|
||||||
@@ -25,10 +25,10 @@ export type Options<Config extends BaseConfig, Slug extends keyof BaseConfig['co
|
|||||||
autosave?: boolean
|
autosave?: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
export default async function updateLocal<Config extends BaseConfig, Slug extends keyof BaseConfig['collections']>(
|
export default async function updateLocal<TSlug extends keyof SchemaConfig['collections']>(
|
||||||
payload: Payload<BaseConfig>,
|
payload: Payload,
|
||||||
options: Options<Config, Slug>,
|
options: Options<TSlug>,
|
||||||
): Promise<Config['collections'][Slug]> {
|
): Promise<SchemaConfig['collections'][TSlug]> {
|
||||||
const {
|
const {
|
||||||
collection: collectionSlug,
|
collection: collectionSlug,
|
||||||
depth,
|
depth,
|
||||||
@@ -79,5 +79,5 @@ export default async function updateLocal<Config extends BaseConfig, Slug extend
|
|||||||
req,
|
req,
|
||||||
};
|
};
|
||||||
|
|
||||||
return update<Config, Slug>(args);
|
return update<TSlug>(args);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import httpStatus from 'http-status';
|
import httpStatus from 'http-status';
|
||||||
import { BaseConfig } from '../../config/types';
|
import { Config as SchemaConfig } from 'payload/generated-types';
|
||||||
import { Where, Document } from '../../types';
|
import { Where, Document } from '../../types';
|
||||||
import { Collection } from '../config/types';
|
import { Collection } from '../config/types';
|
||||||
import sanitizeInternalFields from '../../utilities/sanitizeInternalFields';
|
import sanitizeInternalFields from '../../utilities/sanitizeInternalFields';
|
||||||
@@ -19,7 +19,7 @@ import { afterRead } from '../../fields/hooks/afterRead';
|
|||||||
import { generateFileData } from '../../uploads/generateFileData';
|
import { generateFileData } from '../../uploads/generateFileData';
|
||||||
import { getLatestCollectionVersion } from '../../versions/getLatestCollectionVersion';
|
import { getLatestCollectionVersion } from '../../versions/getLatestCollectionVersion';
|
||||||
|
|
||||||
export type Arguments<T extends { [field: string]: unknown }> = {
|
export type Arguments<T extends { [field: string | number | symbol]: unknown }> = {
|
||||||
collection: Collection
|
collection: Collection
|
||||||
req: PayloadRequest
|
req: PayloadRequest
|
||||||
id: string | number
|
id: string | number
|
||||||
@@ -33,9 +33,9 @@ export type Arguments<T extends { [field: string]: unknown }> = {
|
|||||||
autosave?: boolean
|
autosave?: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
async function update<Config extends BaseConfig, Slug extends keyof BaseConfig['collections']>(
|
async function update<TSlug extends keyof SchemaConfig['collections']>(
|
||||||
incomingArgs: Arguments<Config['collections'][Slug]>,
|
incomingArgs: Arguments<SchemaConfig['collections'][TSlug]>,
|
||||||
): Promise<Config['collections'][Slug]> {
|
): Promise<SchemaConfig['collections'][TSlug]> {
|
||||||
let args = incomingArgs;
|
let args = incomingArgs;
|
||||||
|
|
||||||
// /////////////////////////////////////
|
// /////////////////////////////////////
|
||||||
@@ -150,7 +150,7 @@ async function update<Config extends BaseConfig, Slug extends keyof BaseConfig['
|
|||||||
// beforeValidate - Fields
|
// beforeValidate - Fields
|
||||||
// /////////////////////////////////////
|
// /////////////////////////////////////
|
||||||
|
|
||||||
data = await beforeValidate<Config['collections'][Slug]>({
|
data = await beforeValidate<SchemaConfig['collections'][TSlug]>({
|
||||||
data,
|
data,
|
||||||
doc: originalDoc,
|
doc: originalDoc,
|
||||||
entityConfig: collectionConfig,
|
entityConfig: collectionConfig,
|
||||||
@@ -202,7 +202,7 @@ async function update<Config extends BaseConfig, Slug extends keyof BaseConfig['
|
|||||||
// beforeChange - Fields
|
// beforeChange - Fields
|
||||||
// /////////////////////////////////////
|
// /////////////////////////////////////
|
||||||
|
|
||||||
let result = await beforeChange<Config['collections'][Slug]>({
|
let result = await beforeChange<SchemaConfig['collections'][TSlug]>({
|
||||||
data,
|
data,
|
||||||
doc: originalDoc,
|
doc: originalDoc,
|
||||||
docWithLocales,
|
docWithLocales,
|
||||||
@@ -253,7 +253,7 @@ async function update<Config extends BaseConfig, Slug extends keyof BaseConfig['
|
|||||||
id,
|
id,
|
||||||
});
|
});
|
||||||
|
|
||||||
result = await saveCollectionDraft<Config['collections'][Slug]>({
|
result = await saveCollectionDraft<SchemaConfig['collections'][TSlug]>({
|
||||||
payload,
|
payload,
|
||||||
config: collectionConfig,
|
config: collectionConfig,
|
||||||
req,
|
req,
|
||||||
@@ -285,7 +285,7 @@ async function update<Config extends BaseConfig, Slug extends keyof BaseConfig['
|
|||||||
result = JSON.parse(resultString);
|
result = JSON.parse(resultString);
|
||||||
}
|
}
|
||||||
|
|
||||||
result = sanitizeInternalFields<Config['collections'][Slug]>(result);
|
result = sanitizeInternalFields<SchemaConfig['collections'][TSlug]>(result);
|
||||||
|
|
||||||
// /////////////////////////////////////
|
// /////////////////////////////////////
|
||||||
// afterRead - Fields
|
// afterRead - Fields
|
||||||
@@ -317,7 +317,7 @@ async function update<Config extends BaseConfig, Slug extends keyof BaseConfig['
|
|||||||
// afterChange - Fields
|
// afterChange - Fields
|
||||||
// /////////////////////////////////////
|
// /////////////////////////////////////
|
||||||
|
|
||||||
result = await afterChange<Config['collections'][Slug]>({
|
result = await afterChange<SchemaConfig['collections'][TSlug]>({
|
||||||
data,
|
data,
|
||||||
doc: result,
|
doc: result,
|
||||||
previousDoc: originalDoc,
|
previousDoc: originalDoc,
|
||||||
|
|||||||
@@ -20,15 +20,6 @@ import { PayloadRequest } from '../express/types';
|
|||||||
import { Where } from '../types';
|
import { Where } from '../types';
|
||||||
import { User } from '../auth/types';
|
import { User } from '../auth/types';
|
||||||
|
|
||||||
export interface BaseConfig {
|
|
||||||
collections: {
|
|
||||||
[slug: string | number | symbol]: Record<string, unknown>
|
|
||||||
}
|
|
||||||
globals: {
|
|
||||||
[slug: string | number | symbol]: Record<string, unknown>
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
type Email = {
|
type Email = {
|
||||||
fromName: string;
|
fromName: string;
|
||||||
fromAddress: string;
|
fromAddress: string;
|
||||||
@@ -109,7 +100,7 @@ export type InitOptions = {
|
|||||||
/**
|
/**
|
||||||
* A function that is called immediately following startup that receives the Payload instance as it's only argument.
|
* A function that is called immediately following startup that receives the Payload instance as it's only argument.
|
||||||
*/
|
*/
|
||||||
onInit?: <C extends BaseConfig = any>(payload: Payload<C>) => Promise<void> | void;
|
onInit?: (payload: Payload) => Promise<void> | void;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Specify options for the built-in Pino logger that Payload uses for internal logging.
|
* Specify options for the built-in Pino logger that Payload uses for internal logging.
|
||||||
@@ -541,7 +532,7 @@ export type Config = {
|
|||||||
/** Send anonymous telemetry data about general usage. */
|
/** Send anonymous telemetry data about general usage. */
|
||||||
telemetry?: boolean;
|
telemetry?: boolean;
|
||||||
/** A function that is called immediately following startup that receives the Payload instance as its only argument. */
|
/** A function that is called immediately following startup that receives the Payload instance as its only argument. */
|
||||||
onInit?: <C extends BaseConfig = any>(payload: Payload<C>) => Promise<void> | void;
|
onInit?: (payload: Payload) => Promise<void> | void;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type SanitizedConfig = Omit<
|
export type SanitizedConfig = Omit<
|
||||||
|
|||||||
12
src/generated-types.ts
Normal file
12
src/generated-types.ts
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
// This is a stub for Payload's generated types.
|
||||||
|
// It will not be used.
|
||||||
|
// Instead, configure a path within your `tsconfig.json`'s `compilerOptions.paths` to point to your generated types.
|
||||||
|
|
||||||
|
export type Config = {
|
||||||
|
collections: {
|
||||||
|
[slug: string | number | symbol]: Record<string, unknown>
|
||||||
|
}
|
||||||
|
globals: {
|
||||||
|
[slug: string | number | symbol]: Record<string, unknown>
|
||||||
|
}
|
||||||
|
}
|
||||||
10
src/index.ts
10
src/index.ts
@@ -1,17 +1,17 @@
|
|||||||
|
import { Config as GeneratedTypes } from 'payload/generated-types';
|
||||||
import {
|
import {
|
||||||
BaseConfig,
|
|
||||||
InitOptions,
|
InitOptions,
|
||||||
} from './config/types';
|
} from './config/types';
|
||||||
import { initHTTP } from './initHTTP';
|
import { initHTTP } from './initHTTP';
|
||||||
import { Payload } from './payload';
|
import { Payload, BasePayload } from './payload';
|
||||||
|
|
||||||
export { getPayload } from './payload';
|
export { getPayload } from './payload';
|
||||||
|
|
||||||
require('isomorphic-fetch');
|
require('isomorphic-fetch');
|
||||||
|
|
||||||
export class PayloadHTTP extends Payload {
|
export class PayloadHTTP extends BasePayload<GeneratedTypes> {
|
||||||
async init<T extends BaseConfig = any>(options: InitOptions): Promise<Payload<T>> {
|
async init(options: InitOptions): Promise<Payload> {
|
||||||
const payload = await initHTTP<T>(options);
|
const payload = await initHTTP(options);
|
||||||
Object.assign(this, payload);
|
Object.assign(this, payload);
|
||||||
return payload;
|
return payload;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
/* eslint-disable no-param-reassign */
|
/* eslint-disable no-param-reassign */
|
||||||
import express, { NextFunction, Response } from 'express';
|
import express, { NextFunction, Response } from 'express';
|
||||||
import { BaseConfig, InitOptions } from './config/types';
|
import { Config as GeneratedTypes } from 'payload/generated-types';
|
||||||
|
import { InitOptions } from './config/types';
|
||||||
|
|
||||||
import authenticate from './express/middleware/authenticate';
|
import authenticate from './express/middleware/authenticate';
|
||||||
import expressMiddleware from './express/middleware';
|
import expressMiddleware from './express/middleware';
|
||||||
@@ -20,8 +21,8 @@ import { getDataLoader } from './collections/dataloader';
|
|||||||
import mountEndpoints from './express/mountEndpoints';
|
import mountEndpoints from './express/mountEndpoints';
|
||||||
import { Payload, getPayload } from './payload';
|
import { Payload, getPayload } from './payload';
|
||||||
|
|
||||||
export const initHTTP = async <T extends BaseConfig>(options: InitOptions): Promise<Payload<T>> => {
|
export const initHTTP = async (options: InitOptions): Promise<Payload> => {
|
||||||
const payload = await getPayload<T>(options);
|
const payload = await getPayload(options);
|
||||||
|
|
||||||
if (!options.local) {
|
if (!options.local) {
|
||||||
payload.router = express.Router();
|
payload.router = express.Router();
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import { GraphQLError, GraphQLFormattedError, GraphQLSchema } from 'graphql';
|
|||||||
import crypto from 'crypto';
|
import crypto from 'crypto';
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
import mongoose from 'mongoose';
|
import mongoose from 'mongoose';
|
||||||
|
import { Config as GeneratedTypes } from 'payload/generated-types';
|
||||||
import {
|
import {
|
||||||
TypeWithID,
|
TypeWithID,
|
||||||
Collection,
|
Collection,
|
||||||
@@ -13,7 +14,6 @@ import {
|
|||||||
SanitizedConfig,
|
SanitizedConfig,
|
||||||
EmailOptions,
|
EmailOptions,
|
||||||
InitOptions,
|
InitOptions,
|
||||||
BaseConfig,
|
|
||||||
} from './config/types';
|
} from './config/types';
|
||||||
import { TypeWithVersion } from './versions/types';
|
import { TypeWithVersion } from './versions/types';
|
||||||
import { PaginatedDocs } from './mongoose/types';
|
import { PaginatedDocs } from './mongoose/types';
|
||||||
@@ -65,7 +65,7 @@ import findConfig from './config/find';
|
|||||||
/**
|
/**
|
||||||
* @description Payload
|
* @description Payload
|
||||||
*/
|
*/
|
||||||
export class Payload<Config extends BaseConfig = any> {
|
export class BasePayload<TGeneratedTypes extends GeneratedTypes> {
|
||||||
config: SanitizedConfig;
|
config: SanitizedConfig;
|
||||||
|
|
||||||
collections: {
|
collections: {
|
||||||
@@ -139,7 +139,7 @@ export class Payload<Config extends BaseConfig = any> {
|
|||||||
* @description Initializes Payload
|
* @description Initializes Payload
|
||||||
* @param options
|
* @param options
|
||||||
*/
|
*/
|
||||||
async init(options: InitOptions): Promise<Payload<Config>> {
|
async init(options: InitOptions): Promise<Payload> {
|
||||||
this.logger = Logger('payload', options.loggerOptions);
|
this.logger = Logger('payload', options.loggerOptions);
|
||||||
this.mongoURL = options.mongoURL;
|
this.mongoURL = options.mongoURL;
|
||||||
|
|
||||||
@@ -272,7 +272,7 @@ export class Payload<Config extends BaseConfig = any> {
|
|||||||
* @returns document with specified ID
|
* @returns document with specified ID
|
||||||
*/
|
*/
|
||||||
|
|
||||||
findByID = async <T extends keyof Config['collections']>(options: FindByIDOptions<T>): Promise<Config['collections'][T]> => {
|
findByID = async <T extends keyof TGeneratedTypes['collections']>(options: FindByIDOptions<T>): Promise<TGeneratedTypes['collections'][T]> => {
|
||||||
const { findByID } = localOperations;
|
const { findByID } = localOperations;
|
||||||
return findByID<T>(this, options);
|
return findByID<T>(this, options);
|
||||||
}
|
}
|
||||||
@@ -282,9 +282,9 @@ export class Payload<Config extends BaseConfig = any> {
|
|||||||
* @param options
|
* @param options
|
||||||
* @returns Updated document
|
* @returns Updated document
|
||||||
*/
|
*/
|
||||||
update = async <T extends keyof Config['collections']>(options: UpdateOptions<Config, T>): Promise<Config['collections'][T]> => {
|
update = async <T extends keyof TGeneratedTypes['collections']>(options: UpdateOptions<T>): Promise<TGeneratedTypes['collections'][T]> => {
|
||||||
const { update } = localOperations;
|
const { update } = localOperations;
|
||||||
return update<Config, T>(this, options);
|
return update<T>(this, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
delete = async <T extends TypeWithID = any>(options: DeleteOptions): Promise<T> => {
|
delete = async <T extends TypeWithID = any>(options: DeleteOptions): Promise<T> => {
|
||||||
@@ -348,20 +348,22 @@ export class Payload<Config extends BaseConfig = any> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let cached = global.payload;
|
export type Payload = BasePayload<GeneratedTypes>
|
||||||
|
|
||||||
|
let cached = global._payload;
|
||||||
|
|
||||||
if (!cached) {
|
if (!cached) {
|
||||||
// eslint-disable-next-line no-multi-assign
|
// eslint-disable-next-line no-multi-assign
|
||||||
cached = global.payload = { payload: null, promise: null };
|
cached = global._payload = { payload: null, promise: null };
|
||||||
}
|
}
|
||||||
|
|
||||||
export const getPayload = async <T extends BaseConfig>(options: InitOptions): Promise<Payload<T>> => {
|
export const getPayload = async (options: InitOptions): Promise<Payload> => {
|
||||||
if (cached.payload) {
|
if (cached.payload) {
|
||||||
return cached.payload;
|
return cached.payload;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!cached.promise) {
|
if (!cached.promise) {
|
||||||
cached.promise = new Payload<T>().init(options);
|
cached.promise = new BasePayload<GeneratedTypes>().init(options);
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -23,6 +23,8 @@ import JSONFields, { jsonDoc } from './collections/JSON';
|
|||||||
import RelationshipFields from './collections/Relationship';
|
import RelationshipFields from './collections/Relationship';
|
||||||
import RadioFields, { radiosDoc } from './collections/Radio';
|
import RadioFields, { radiosDoc } from './collections/Radio';
|
||||||
import Uploads2 from './collections/Upload2';
|
import Uploads2 from './collections/Upload2';
|
||||||
|
import { Payload } from '../../src/payload';
|
||||||
|
import { Config } from './payload-types';
|
||||||
|
|
||||||
export default buildConfig({
|
export default buildConfig({
|
||||||
admin: {
|
admin: {
|
||||||
@@ -63,7 +65,7 @@ export default buildConfig({
|
|||||||
locales: ['en', 'es'],
|
locales: ['en', 'es'],
|
||||||
fallback: true,
|
fallback: true,
|
||||||
},
|
},
|
||||||
onInit: async (payload) => {
|
onInit: async (payload: Payload<Config>) => {
|
||||||
await payload.create({
|
await payload.create({
|
||||||
collection: 'users',
|
collection: 'users',
|
||||||
data: {
|
data: {
|
||||||
@@ -102,8 +104,8 @@ export default buildConfig({
|
|||||||
...uploadsDoc,
|
...uploadsDoc,
|
||||||
media: createdPNGDoc.id,
|
media: createdPNGDoc.id,
|
||||||
},
|
},
|
||||||
file: jpgFile
|
file: jpgFile,
|
||||||
});
|
});
|
||||||
|
|
||||||
const richTextDocWithRelId = JSON.parse(JSON.stringify(richTextDoc).replace('{{ARRAY_DOC_ID}}', createdArrayDoc.id));
|
const richTextDocWithRelId = JSON.parse(JSON.stringify(richTextDoc).replace('{{ARRAY_DOC_ID}}', createdArrayDoc.id));
|
||||||
const richTextDocWithRelationship = { ...richTextDocWithRelId };
|
const richTextDocWithRelationship = { ...richTextDocWithRelId };
|
||||||
@@ -128,5 +130,16 @@ export default buildConfig({
|
|||||||
blocksDocWithRichText.localizedBlocks[0].richText = richTextDocWithRelationship.richText;
|
blocksDocWithRichText.localizedBlocks[0].richText = richTextDocWithRelationship.richText;
|
||||||
|
|
||||||
await payload.create({ collection: 'block-fields', data: blocksDocWithRichText });
|
await payload.create({ collection: 'block-fields', data: blocksDocWithRichText });
|
||||||
|
|
||||||
|
const arrayField = await payload.findByID({
|
||||||
|
collection: 'array-fields',
|
||||||
|
id: 'test',
|
||||||
|
});
|
||||||
|
|
||||||
|
const updatedArray = await payload.update({
|
||||||
|
collection: 'array-fields',
|
||||||
|
data: arrayField,
|
||||||
|
id: 'test',
|
||||||
|
});
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -15,6 +15,9 @@
|
|||||||
"strict": false, /* Enable all strict type-checking options. */
|
"strict": false, /* Enable all strict type-checking options. */
|
||||||
"moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */
|
"moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */
|
||||||
"paths": {
|
"paths": {
|
||||||
|
"payload/generated-types": [
|
||||||
|
"./src/generated-types.ts",
|
||||||
|
],
|
||||||
"payload/config": [
|
"payload/config": [
|
||||||
"./src/config/types.ts"
|
"./src/config/types.ts"
|
||||||
],
|
],
|
||||||
|
|||||||
Reference in New Issue
Block a user