perf: reduce generated types for select by respecting interfaceName (#9870)

This PR can significantly reduce your `payload-types.ts` file if you
have sharable fields / blocks that use the `interfaceName` property.
Previously we didn't respect it for select types.

Before:
```ts
export interface Collection1Select<T extends boolean = true> {
  testing?: T;
  title?: T;
  meta?:
    | T
    | {
        title?: T;
        description?: T;
        id?: T;
      };
  blocks?:
    | T
    | {
        block1?:
          | T
          | {
              b1title?: T;
              b1description?: T;
              id?: T;
              blockName?: T;
            };
        block2?:
          | T
          | {
              b2title?: T;
              b2description?: T;
              id?: T;
              blockName?: T;
            };
      };
  updatedAt?: T;
  createdAt?: T;
}
```
After:
```ts
export interface Collection1Select<T extends boolean = true> {
  testing?: T;
  title?: T;
  meta?: T | SharedMetaArraySelect<T>;
  blocks?:
    | T
    | {
        block1?: T | SharedMetaBlockSelect<T>;
        block2?: T | AnotherSharedBlockSelect<T>;
      };
  updatedAt?: T;
  createdAt?: T;
}

/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "SharedMetaArray_select".
 */
export interface SharedMetaArraySelect<T extends boolean = true> {
  title?: T;
  description?: T;
  id?: T;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "SharedMetaBlock_select".
 */
export interface SharedMetaBlockSelect<T extends boolean = true> {
  b1title?: T;
  b1description?: T;
  id?: T;
  blockName?: T;
}
/**
 * This interface was referenced by `Config`'s JSON-Schema
 * via the `definition` "AnotherSharedBlock_select".
 */
export interface AnotherSharedBlockSelect<T extends boolean = true> {
  b2title?: T;
  b2description?: T;
  id?: T;
  blockName?: T;
}
```

Regenerated all the types in `/test`. The diff is noticeable for
`fields` -
https://github.com/payloadcms/payload/pull/9870/files#diff-95beaac24c72c7bd60933e325cdcd94a4c3630a1ce22fabad624ec80cc74fc8c
This commit is contained in:
Sasha
2024-12-16 17:22:17 +02:00
committed by GitHub
parent 727fba7b1c
commit 26a10ed071
7 changed files with 409 additions and 652 deletions

View File

@@ -178,6 +178,7 @@ export interface PayloadMigration {
export interface PostsSelect {
text?: boolean;
number?: boolean;
sharedGroup?: boolean | SharedGroup;
group?:
| boolean
| {
@@ -451,6 +452,7 @@ export interface PayloadMigration {
export interface PostsSelect<T extends boolean = true> {
text?: T;
number?: T;
sharedGroup?: T | SharedGroup<T>;
group?:
| T
| {

View File

@@ -35,8 +35,14 @@ export const addSelectGenericsToGeneratedTypes = ({
// add generic to the interface
newLine = line.replace(/(export interface\s+\w+)(\s*\{)/g, '$1<T extends boolean = true>$2')
} else {
newLine = line
// replace booleans with T on the line
newLine = line.replace(/(?<!\?)\bboolean\b/g, 'T')
.replace(/(?<!\?)\bboolean\b/g, 'T')
// replace interface names like CtaBlock to CtaBlock<T>
.replace(
/\b(\w+)\s*\|\s*(\w+)\b/g,
(_match, left, right) => `${left} | ${right}<${left}>`,
)
if (line === '}') {
isSelectTypeToken = false

View File

@@ -643,7 +643,13 @@ export function entityToJSONSchema(
}
}
export function fieldsToSelectJSONSchema({ fields }: { fields: FlattenedField[] }): JSONSchema4 {
export function fieldsToSelectJSONSchema({
fields,
interfaceNameDefinitions,
}: {
fields: FlattenedField[]
interfaceNameDefinitions: Map<string, JSONSchema4>
}): JSONSchema4 {
const schema: JSONSchema4 = {
type: 'object',
additionalProperties: false,
@@ -654,16 +660,32 @@ export function fieldsToSelectJSONSchema({ fields }: { fields: FlattenedField[]
switch (field.type) {
case 'array':
case 'group':
case 'tab':
case 'tab': {
let fieldSchema: JSONSchema4 = fieldsToSelectJSONSchema({
fields: field.flattenedFields,
interfaceNameDefinitions,
})
if (field.interfaceName) {
const definition = `${field.interfaceName}_select`
interfaceNameDefinitions.set(definition, fieldSchema)
fieldSchema = {
$ref: `#/definitions/${definition}`,
}
}
schema.properties[field.name] = {
oneOf: [
{
type: 'boolean',
},
fieldsToSelectJSONSchema({ fields: field.flattenedFields }),
fieldSchema,
],
}
break
}
case 'blocks': {
const blocksSchema: JSONSchema4 = {
@@ -673,12 +695,25 @@ export function fieldsToSelectJSONSchema({ fields }: { fields: FlattenedField[]
}
for (const block of field.blocks) {
let blockSchema = fieldsToSelectJSONSchema({
fields: block.flattenedFields,
interfaceNameDefinitions,
})
if (block.interfaceName) {
const definition = `${block.interfaceName}_select`
interfaceNameDefinitions.set(definition, blockSchema)
blockSchema = {
$ref: `#/definitions/${definition}`,
}
}
blocksSchema.properties[block.slug] = {
oneOf: [
{
type: 'boolean',
},
fieldsToSelectJSONSchema({ fields: block.flattenedFields }),
blockSchema,
],
}
}
@@ -900,7 +935,10 @@ export function configToJSONSchema(
defaultIDType,
collectionIDFieldTypes,
)
const select = fieldsToSelectJSONSchema({ fields: entity.flattenedFields })
const select = fieldsToSelectJSONSchema({
fields: entity.flattenedFields,
interfaceNameDefinitions,
})
if (type === 'global') {
select.properties.globalType = {

View File

@@ -35,7 +35,7 @@ export interface Config {
'payload-migrations': PayloadMigrationsSelect<false> | PayloadMigrationsSelect<true>;
};
db: {
defaultIDType: number;
defaultIDType: string;
};
globals: {};
globalsSelect: {};
@@ -135,7 +135,7 @@ export interface PublicUserAuthOperations {
* via the `definition` "users".
*/
export interface User {
id: number;
id: string;
adminOnlyField?: string | null;
roles: ('admin' | 'editor' | 'moderator' | 'user' | 'viewer')[];
namedSaveToJWT?: string | null;
@@ -175,7 +175,7 @@ export interface User {
* via the `definition` "partial-disable-locale-strategies".
*/
export interface PartialDisableLocaleStrategy {
id: number;
id: string;
updatedAt: string;
createdAt: string;
email: string;
@@ -192,7 +192,7 @@ export interface PartialDisableLocaleStrategy {
* via the `definition` "api-keys".
*/
export interface ApiKey {
id: number;
id: string;
updatedAt: string;
createdAt: string;
enableAPIKey?: boolean | null;
@@ -204,7 +204,7 @@ export interface ApiKey {
* via the `definition` "public-users".
*/
export interface PublicUser {
id: number;
id: string;
updatedAt: string;
createdAt: string;
email: string;
@@ -223,8 +223,8 @@ export interface PublicUser {
* via the `definition` "relationsCollection".
*/
export interface RelationsCollection {
id: number;
rel?: (number | null) | User;
id: string;
rel?: (string | null) | User;
text?: string | null;
updatedAt: string;
createdAt: string;
@@ -234,45 +234,45 @@ export interface RelationsCollection {
* via the `definition` "payload-locked-documents".
*/
export interface PayloadLockedDocument {
id: number;
id: string;
document?:
| ({
relationTo: 'users';
value: number | User;
value: string | User;
} | null)
| ({
relationTo: 'partial-disable-locale-strategies';
value: number | PartialDisableLocaleStrategy;
value: string | PartialDisableLocaleStrategy;
} | null)
| ({
relationTo: 'api-keys';
value: number | ApiKey;
value: string | ApiKey;
} | null)
| ({
relationTo: 'public-users';
value: number | PublicUser;
value: string | PublicUser;
} | null)
| ({
relationTo: 'relationsCollection';
value: number | RelationsCollection;
value: string | RelationsCollection;
} | null);
globalSlug?: string | null;
user:
| {
relationTo: 'users';
value: number | User;
value: string | User;
}
| {
relationTo: 'partial-disable-locale-strategies';
value: number | PartialDisableLocaleStrategy;
value: string | PartialDisableLocaleStrategy;
}
| {
relationTo: 'api-keys';
value: number | ApiKey;
value: string | ApiKey;
}
| {
relationTo: 'public-users';
value: number | PublicUser;
value: string | PublicUser;
};
updatedAt: string;
createdAt: string;
@@ -282,23 +282,23 @@ export interface PayloadLockedDocument {
* via the `definition` "payload-preferences".
*/
export interface PayloadPreference {
id: number;
id: string;
user:
| {
relationTo: 'users';
value: number | User;
value: string | User;
}
| {
relationTo: 'partial-disable-locale-strategies';
value: number | PartialDisableLocaleStrategy;
value: string | PartialDisableLocaleStrategy;
}
| {
relationTo: 'api-keys';
value: number | ApiKey;
value: string | ApiKey;
}
| {
relationTo: 'public-users';
value: number | PublicUser;
value: string | PublicUser;
};
key?: string | null;
value?:
@@ -318,7 +318,7 @@ export interface PayloadPreference {
* via the `definition` "payload-migrations".
*/
export interface PayloadMigration {
id: number;
id: string;
name?: string | null;
batch?: number | null;
updatedAt: string;

View File

@@ -11,6 +11,7 @@ export const getBlocksField = (prefix?: string): BlocksField => ({
blocks: [
{
slug: prefix ? `${prefix}Content` : 'content',
interfaceName: prefix ? `${prefix}ContentBlock` : 'ContentBlock',
fields: [
{
name: 'text',
@@ -26,6 +27,7 @@ export const getBlocksField = (prefix?: string): BlocksField => ({
},
{
slug: prefix ? `${prefix}Number` : 'number',
interfaceName: prefix ? `${prefix}NumberBlock` : 'NumberBlock',
fields: [
{
name: 'number',
@@ -36,6 +38,7 @@ export const getBlocksField = (prefix?: string): BlocksField => ({
},
{
slug: prefix ? `${prefix}SubBlocks` : 'subBlocks',
interfaceName: prefix ? `${prefix}SubBlocksBlock` : 'SubBlocksBlock',
fields: [
{
type: 'collapsible',
@@ -73,6 +76,7 @@ export const getBlocksField = (prefix?: string): BlocksField => ({
},
{
slug: prefix ? `${prefix}Tabs` : 'tabs',
interfaceName: prefix ? `${prefix}TabsBlock` : 'TabsBlock',
fields: [
{
type: 'tabs',

View File

@@ -514,241 +514,16 @@ export interface ArrayField {
*/
export interface BlockField {
id: string;
blocks: (
| {
text: string;
richText?:
| {
[k: string]: unknown;
}[]
| null;
id?: string | null;
blockName?: string | null;
blockType: 'content';
}
| {
number: number;
id?: string | null;
blockName?: string | null;
blockType: 'number';
}
| {
subBlocks?:
| (
| {
text: string;
id?: string | null;
blockName?: string | null;
blockType: 'text';
}
| {
number: number;
id?: string | null;
blockName?: string | null;
blockType: 'number';
}
)[]
| null;
id?: string | null;
blockName?: string | null;
blockType: 'subBlocks';
}
| {
textInCollapsible?: string | null;
textInRow?: string | null;
id?: string | null;
blockName?: string | null;
blockType: 'tabs';
}
)[];
duplicate: (
| {
text: string;
richText?:
| {
[k: string]: unknown;
}[]
| null;
id?: string | null;
blockName?: string | null;
blockType: 'content';
}
| {
number: number;
id?: string | null;
blockName?: string | null;
blockType: 'number';
}
| {
subBlocks?:
| (
| {
text: string;
id?: string | null;
blockName?: string | null;
blockType: 'text';
}
| {
number: number;
id?: string | null;
blockName?: string | null;
blockType: 'number';
}
)[]
| null;
id?: string | null;
blockName?: string | null;
blockType: 'subBlocks';
}
| {
textInCollapsible?: string | null;
textInRow?: string | null;
id?: string | null;
blockName?: string | null;
blockType: 'tabs';
}
)[];
blocks: (ContentBlock | NumberBlock | SubBlocksBlock | TabsBlock)[];
duplicate: (ContentBlock | NumberBlock | SubBlocksBlock | TabsBlock)[];
collapsedByDefaultBlocks: (
| {
text: string;
richText?:
| {
[k: string]: unknown;
}[]
| null;
id?: string | null;
blockName?: string | null;
blockType: 'localizedContent';
}
| {
number: number;
id?: string | null;
blockName?: string | null;
blockType: 'localizedNumber';
}
| {
subBlocks?:
| (
| {
text: string;
id?: string | null;
blockName?: string | null;
blockType: 'text';
}
| {
number: number;
id?: string | null;
blockName?: string | null;
blockType: 'number';
}
)[]
| null;
id?: string | null;
blockName?: string | null;
blockType: 'localizedSubBlocks';
}
| {
textInCollapsible?: string | null;
textInRow?: string | null;
id?: string | null;
blockName?: string | null;
blockType: 'localizedTabs';
}
)[];
disableSort: (
| {
text: string;
richText?:
| {
[k: string]: unknown;
}[]
| null;
id?: string | null;
blockName?: string | null;
blockType: 'localizedContent';
}
| {
number: number;
id?: string | null;
blockName?: string | null;
blockType: 'localizedNumber';
}
| {
subBlocks?:
| (
| {
text: string;
id?: string | null;
blockName?: string | null;
blockType: 'text';
}
| {
number: number;
id?: string | null;
blockName?: string | null;
blockType: 'number';
}
)[]
| null;
id?: string | null;
blockName?: string | null;
blockType: 'localizedSubBlocks';
}
| {
textInCollapsible?: string | null;
textInRow?: string | null;
id?: string | null;
blockName?: string | null;
blockType: 'localizedTabs';
}
)[];
localizedBlocks: (
| {
text: string;
richText?:
| {
[k: string]: unknown;
}[]
| null;
id?: string | null;
blockName?: string | null;
blockType: 'localizedContent';
}
| {
number: number;
id?: string | null;
blockName?: string | null;
blockType: 'localizedNumber';
}
| {
subBlocks?:
| (
| {
text: string;
id?: string | null;
blockName?: string | null;
blockType: 'text';
}
| {
number: number;
id?: string | null;
blockName?: string | null;
blockType: 'number';
}
)[]
| null;
id?: string | null;
blockName?: string | null;
blockType: 'localizedSubBlocks';
}
| {
textInCollapsible?: string | null;
textInRow?: string | null;
id?: string | null;
blockName?: string | null;
blockType: 'localizedTabs';
}
| LocalizedContentBlock
| LocalizedNumberBlock
| LocalizedSubBlocksBlock
| LocalizedTabsBlock
)[];
disableSort: (LocalizedContentBlock | LocalizedNumberBlock | LocalizedSubBlocksBlock | LocalizedTabsBlock)[];
localizedBlocks: (LocalizedContentBlock | LocalizedNumberBlock | LocalizedSubBlocksBlock | LocalizedTabsBlock)[];
i18nBlocks?:
| {
text?: string | null;
@@ -862,6 +637,128 @@ export interface BlockField {
updatedAt: string;
createdAt: string;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "ContentBlock".
*/
export interface ContentBlock {
text: string;
richText?:
| {
[k: string]: unknown;
}[]
| null;
id?: string | null;
blockName?: string | null;
blockType: 'content';
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "NumberBlock".
*/
export interface NumberBlock {
number: number;
id?: string | null;
blockName?: string | null;
blockType: 'number';
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "SubBlocksBlock".
*/
export interface SubBlocksBlock {
subBlocks?:
| (
| {
text: string;
id?: string | null;
blockName?: string | null;
blockType: 'text';
}
| {
number: number;
id?: string | null;
blockName?: string | null;
blockType: 'number';
}
)[]
| null;
id?: string | null;
blockName?: string | null;
blockType: 'subBlocks';
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "TabsBlock".
*/
export interface TabsBlock {
textInCollapsible?: string | null;
textInRow?: string | null;
id?: string | null;
blockName?: string | null;
blockType: 'tabs';
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "localizedContentBlock".
*/
export interface LocalizedContentBlock {
text: string;
richText?:
| {
[k: string]: unknown;
}[]
| null;
id?: string | null;
blockName?: string | null;
blockType: 'localizedContent';
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "localizedNumberBlock".
*/
export interface LocalizedNumberBlock {
number: number;
id?: string | null;
blockName?: string | null;
blockType: 'localizedNumber';
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "localizedSubBlocksBlock".
*/
export interface LocalizedSubBlocksBlock {
subBlocks?:
| (
| {
text: string;
id?: string | null;
blockName?: string | null;
blockType: 'text';
}
| {
number: number;
id?: string | null;
blockName?: string | null;
blockType: 'number';
}
)[]
| null;
id?: string | null;
blockName?: string | null;
blockType: 'localizedSubBlocks';
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "localizedTabsBlock".
*/
export interface LocalizedTabsBlock {
textInCollapsible?: string | null;
textInRow?: string | null;
id?: string | null;
blockName?: string | null;
blockType: 'localizedTabs';
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "text-fields".
@@ -1563,53 +1460,7 @@ export interface TabsField {
text: string;
id?: string | null;
}[];
blocks: (
| {
text: string;
richText?:
| {
[k: string]: unknown;
}[]
| null;
id?: string | null;
blockName?: string | null;
blockType: 'content';
}
| {
number: number;
id?: string | null;
blockName?: string | null;
blockType: 'number';
}
| {
subBlocks?:
| (
| {
text: string;
id?: string | null;
blockName?: string | null;
blockType: 'text';
}
| {
number: number;
id?: string | null;
blockName?: string | null;
blockType: 'number';
}
)[]
| null;
id?: string | null;
blockName?: string | null;
blockType: 'subBlocks';
}
| {
textInCollapsible?: string | null;
textInRow?: string | null;
id?: string | null;
blockName?: string | null;
blockType: 'tabs';
}
)[];
blocks: (ContentBlock | NumberBlock | SubBlocksBlock | TabsBlock)[];
group: {
number: number;
};
@@ -2200,257 +2051,42 @@ export interface BlockFieldsSelect<T extends boolean = true> {
blocks?:
| T
| {
content?:
| T
| {
text?: T;
richText?: T;
id?: T;
blockName?: T;
};
number?:
| T
| {
number?: T;
id?: T;
blockName?: T;
};
subBlocks?:
| T
| {
subBlocks?:
| T
| {
text?:
| T
| {
text?: T;
id?: T;
blockName?: T;
};
number?:
| T
| {
number?: T;
id?: T;
blockName?: T;
};
};
id?: T;
blockName?: T;
};
tabs?:
| T
| {
textInCollapsible?: T;
textInRow?: T;
id?: T;
blockName?: T;
};
content?: T | ContentBlockSelect<T>;
number?: T | NumberBlockSelect<T>;
subBlocks?: T | SubBlocksBlockSelect<T>;
tabs?: T | TabsBlockSelect<T>;
};
duplicate?:
| T
| {
content?:
| T
| {
text?: T;
richText?: T;
id?: T;
blockName?: T;
};
number?:
| T
| {
number?: T;
id?: T;
blockName?: T;
};
subBlocks?:
| T
| {
subBlocks?:
| T
| {
text?:
| T
| {
text?: T;
id?: T;
blockName?: T;
};
number?:
| T
| {
number?: T;
id?: T;
blockName?: T;
};
};
id?: T;
blockName?: T;
};
tabs?:
| T
| {
textInCollapsible?: T;
textInRow?: T;
id?: T;
blockName?: T;
};
content?: T | ContentBlockSelect<T>;
number?: T | NumberBlockSelect<T>;
subBlocks?: T | SubBlocksBlockSelect<T>;
tabs?: T | TabsBlockSelect<T>;
};
collapsedByDefaultBlocks?:
| T
| {
localizedContent?:
| T
| {
text?: T;
richText?: T;
id?: T;
blockName?: T;
};
localizedNumber?:
| T
| {
number?: T;
id?: T;
blockName?: T;
};
localizedSubBlocks?:
| T
| {
subBlocks?:
| T
| {
text?:
| T
| {
text?: T;
id?: T;
blockName?: T;
};
number?:
| T
| {
number?: T;
id?: T;
blockName?: T;
};
};
id?: T;
blockName?: T;
};
localizedTabs?:
| T
| {
textInCollapsible?: T;
textInRow?: T;
id?: T;
blockName?: T;
};
localizedContent?: T | LocalizedContentBlockSelect<T>;
localizedNumber?: T | LocalizedNumberBlockSelect<T>;
localizedSubBlocks?: T | LocalizedSubBlocksBlockSelect<T>;
localizedTabs?: T | LocalizedTabsBlockSelect<T>;
};
disableSort?:
| T
| {
localizedContent?:
| T
| {
text?: T;
richText?: T;
id?: T;
blockName?: T;
};
localizedNumber?:
| T
| {
number?: T;
id?: T;
blockName?: T;
};
localizedSubBlocks?:
| T
| {
subBlocks?:
| T
| {
text?:
| T
| {
text?: T;
id?: T;
blockName?: T;
};
number?:
| T
| {
number?: T;
id?: T;
blockName?: T;
};
};
id?: T;
blockName?: T;
};
localizedTabs?:
| T
| {
textInCollapsible?: T;
textInRow?: T;
id?: T;
blockName?: T;
};
localizedContent?: T | LocalizedContentBlockSelect<T>;
localizedNumber?: T | LocalizedNumberBlockSelect<T>;
localizedSubBlocks?: T | LocalizedSubBlocksBlockSelect<T>;
localizedTabs?: T | LocalizedTabsBlockSelect<T>;
};
localizedBlocks?:
| T
| {
localizedContent?:
| T
| {
text?: T;
richText?: T;
id?: T;
blockName?: T;
};
localizedNumber?:
| T
| {
number?: T;
id?: T;
blockName?: T;
};
localizedSubBlocks?:
| T
| {
subBlocks?:
| T
| {
text?:
| T
| {
text?: T;
id?: T;
blockName?: T;
};
number?:
| T
| {
number?: T;
id?: T;
blockName?: T;
};
};
id?: T;
blockName?: T;
};
localizedTabs?:
| T
| {
textInCollapsible?: T;
textInRow?: T;
id?: T;
blockName?: T;
};
localizedContent?: T | LocalizedContentBlockSelect<T>;
localizedNumber?: T | LocalizedNumberBlockSelect<T>;
localizedSubBlocks?: T | LocalizedSubBlocksBlockSelect<T>;
localizedTabs?: T | LocalizedTabsBlockSelect<T>;
};
i18nBlocks?:
| T
@@ -2588,6 +2224,116 @@ export interface BlockFieldsSelect<T extends boolean = true> {
updatedAt?: T;
createdAt?: T;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "ContentBlock_select".
*/
export interface ContentBlockSelect<T extends boolean = true> {
text?: T;
richText?: T;
id?: T;
blockName?: T;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "NumberBlock_select".
*/
export interface NumberBlockSelect<T extends boolean = true> {
number?: T;
id?: T;
blockName?: T;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "SubBlocksBlock_select".
*/
export interface SubBlocksBlockSelect<T extends boolean = true> {
subBlocks?:
| T
| {
text?:
| T
| {
text?: T;
id?: T;
blockName?: T;
};
number?:
| T
| {
number?: T;
id?: T;
blockName?: T;
};
};
id?: T;
blockName?: T;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "TabsBlock_select".
*/
export interface TabsBlockSelect<T extends boolean = true> {
textInCollapsible?: T;
textInRow?: T;
id?: T;
blockName?: T;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "localizedContentBlock_select".
*/
export interface LocalizedContentBlockSelect<T extends boolean = true> {
text?: T;
richText?: T;
id?: T;
blockName?: T;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "localizedNumberBlock_select".
*/
export interface LocalizedNumberBlockSelect<T extends boolean = true> {
number?: T;
id?: T;
blockName?: T;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "localizedSubBlocksBlock_select".
*/
export interface LocalizedSubBlocksBlockSelect<T extends boolean = true> {
subBlocks?:
| T
| {
text?:
| T
| {
text?: T;
id?: T;
blockName?: T;
};
number?:
| T
| {
number?: T;
id?: T;
blockName?: T;
};
};
id?: T;
blockName?: T;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "localizedTabsBlock_select".
*/
export interface LocalizedTabsBlockSelect<T extends boolean = true> {
textInCollapsible?: T;
textInRow?: T;
id?: T;
blockName?: T;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "checkbox-fields_select".
@@ -3145,53 +2891,10 @@ export interface TabsFieldsSelect<T extends boolean = true> {
blocks?:
| T
| {
content?:
| T
| {
text?: T;
richText?: T;
id?: T;
blockName?: T;
};
number?:
| T
| {
number?: T;
id?: T;
blockName?: T;
};
subBlocks?:
| T
| {
subBlocks?:
| T
| {
text?:
| T
| {
text?: T;
id?: T;
blockName?: T;
};
number?:
| T
| {
number?: T;
id?: T;
blockName?: T;
};
};
id?: T;
blockName?: T;
};
tabs?:
| T
| {
textInCollapsible?: T;
textInRow?: T;
id?: T;
blockName?: T;
};
content?: T | ContentBlockSelect<T>;
number?: T | NumberBlockSelect<T>;
subBlocks?: T | SubBlocksBlockSelect<T>;
tabs?: T | TabsBlockSelect<T>;
};
group?:
| T
@@ -3201,24 +2904,7 @@ export interface TabsFieldsSelect<T extends boolean = true> {
textInRow?: T;
numberInRow?: T;
json?: T;
tab?:
| T
| {
array?:
| T
| {
text?: T;
id?: T;
};
text?: T;
defaultValue?: T;
arrayInRow?:
| T
| {
textInArrayInRow?: T;
id?: T;
};
};
tab?: T | TabWithNameSelect<T>;
namedTabWithDefaultValue?:
| T
| {
@@ -3268,6 +2954,26 @@ export interface TabsFieldsSelect<T extends boolean = true> {
updatedAt?: T;
createdAt?: T;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "TabWithName_select".
*/
export interface TabWithNameSelect<T extends boolean = true> {
array?:
| T
| {
text?: T;
id?: T;
};
text?: T;
defaultValue?: T;
arrayInRow?:
| T
| {
textInArrayInRow?: T;
id?: T;
};
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "text-fields_select".

View File

@@ -229,67 +229,68 @@ export interface PayloadMigration {
export interface Collection1Select<T extends boolean = true> {
testing?: T;
title?: T;
meta?:
| T
| {
title?: T;
description?: T;
id?: T;
};
meta?: T | SharedMetaArraySelect<T>;
blocks?:
| T
| {
block1?:
| T
| {
b1title?: T;
b1description?: T;
id?: T;
blockName?: T;
};
block2?:
| T
| {
b2title?: T;
b2description?: T;
id?: T;
blockName?: T;
};
block1?: T | SharedMetaBlockSelect<T>;
block2?: T | AnotherSharedBlockSelect<T>;
};
updatedAt?: T;
createdAt?: T;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "collection2_select".
* via the `definition` "SharedMetaArray_select".
*/
export interface Collection2Select<T extends boolean = true> {
metaArray?:
| T
| {
export interface SharedMetaArraySelect<T extends boolean = true> {
title?: T;
description?: T;
id?: T;
};
metaGroup?:
| T
| {
title?: T;
description?: T;
};
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "SharedMetaBlock_select".
*/
export interface SharedMetaBlockSelect<T extends boolean = true> {
b1title?: T;
b1description?: T;
id?: T;
blockName?: T;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "AnotherSharedBlock_select".
*/
export interface AnotherSharedBlockSelect<T extends boolean = true> {
b2title?: T;
b2description?: T;
id?: T;
blockName?: T;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "collection2_select".
*/
export interface Collection2Select<T extends boolean = true> {
metaArray?: T | SharedMetaArraySelect<T>;
metaGroup?: T | SharedMetaSelect<T>;
nestedGroup?:
| T
| {
meta?:
| T
| {
title?: T;
description?: T;
};
meta?: T | SharedMetaSelect<T>;
};
updatedAt?: T;
createdAt?: T;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "SharedMeta_select".
*/
export interface SharedMetaSelect<T extends boolean = true> {
title?: T;
description?: T;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "no-graphql_select".