@payloadcms/drizzle 3.23.0 → 3.24.0-canary.10637cd

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/schema/traverseFields.ts"],"sourcesContent":["import type { FlattenedField } from 'payload'\n\nimport { InvalidConfiguration } from 'payload'\nimport { fieldAffectsData, fieldIsVirtual, optionIsObject } from 'payload/shared'\nimport toSnakeCase from 'to-snake-case'\n\nimport type {\n DrizzleAdapter,\n IDType,\n RawColumn,\n RawForeignKey,\n RawIndex,\n RawRelation,\n RelationMap,\n SetColumnID,\n} from '../types.js'\n\nimport { createTableName } from '../createTableName.js'\nimport { buildIndexName } from '../utilities/buildIndexName.js'\nimport { hasLocalesTable } from '../utilities/hasLocalesTable.js'\nimport { validateExistingBlockIsIdentical } from '../utilities/validateExistingBlockIsIdentical.js'\nimport { buildTable } from './build.js'\nimport { idToUUID } from './idToUUID.js'\nimport { withDefault } from './withDefault.js'\n\ntype Args = {\n adapter: DrizzleAdapter\n columnPrefix?: string\n columns: Record<string, RawColumn>\n disableNotNull: boolean\n disableRelsTableUnique?: boolean\n disableUnique?: boolean\n fieldPrefix?: string\n fields: FlattenedField[]\n forceLocalized?: boolean\n indexes: Record<string, RawIndex>\n localesColumns: Record<string, RawColumn>\n localesIndexes: Record<string, RawIndex>\n newTableName: string\n parentTableName: string\n relationships: Set<string>\n relationsToBuild: RelationMap\n rootRelationsToBuild?: RelationMap\n rootTableIDColType: IDType\n rootTableName: string\n setColumnID: SetColumnID\n uniqueRelationships: Set<string>\n versions: boolean\n /**\n * Tracks whether or not this table is built\n * from the result of a localized array or block field at some point\n */\n withinLocalizedArrayOrBlock?: boolean\n}\n\ntype Result = {\n hasLocalizedField: boolean\n hasLocalizedManyNumberField: boolean\n hasLocalizedManyTextField: boolean\n hasLocalizedRelationshipField: boolean\n hasManyNumberField: 'index' | boolean\n hasManyTextField: 'index' | boolean\n}\n\nexport const traverseFields = ({\n adapter,\n columnPrefix,\n columns,\n disableNotNull,\n disableRelsTableUnique,\n disableUnique = false,\n fieldPrefix,\n fields,\n forceLocalized,\n indexes,\n localesColumns,\n localesIndexes,\n newTableName,\n parentTableName,\n relationships,\n relationsToBuild,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n setColumnID,\n uniqueRelationships,\n versions,\n withinLocalizedArrayOrBlock,\n}: Args): Result => {\n const throwValidationError = true\n let hasLocalizedField = false\n let hasLocalizedRelationshipField = false\n let hasManyTextField: 'index' | boolean = false\n let hasLocalizedManyTextField = false\n let hasManyNumberField: 'index' | boolean = false\n let hasLocalizedManyNumberField = false\n\n let parentIDColType: IDType = 'integer'\n\n const idColumn = columns.id\n\n if (idColumn && ['numeric', 'text', 'uuid', 'varchar'].includes(idColumn.type)) {\n parentIDColType = idColumn.type as IDType\n }\n\n fields.forEach((field) => {\n if ('name' in field && field.name === 'id') {\n return\n }\n if (fieldIsVirtual(field)) {\n return\n }\n\n let targetTable = columns\n let targetIndexes = indexes\n\n const columnName = `${columnPrefix || ''}${field.name[0] === '_' ? '_' : ''}${toSnakeCase(\n field.name,\n )}`\n const fieldName = `${fieldPrefix?.replace('.', '_') || ''}${field.name}`\n\n // If field is localized,\n // add the column to the locale table instead of main table\n if (\n adapter.payload.config.localization &&\n (field.localized || forceLocalized) &&\n field.type !== 'array' &&\n field.type !== 'blocks' &&\n (('hasMany' in field && field.hasMany !== true) || !('hasMany' in field))\n ) {\n hasLocalizedField = true\n targetTable = localesColumns\n targetIndexes = localesIndexes\n }\n\n if (\n (field.unique || field.index || ['relationship', 'upload'].includes(field.type)) &&\n !['array', 'blocks', 'group'].includes(field.type) &&\n !('hasMany' in field && field.hasMany === true) &&\n !('relationTo' in field && Array.isArray(field.relationTo))\n ) {\n const unique = disableUnique !== true && field.unique\n if (unique) {\n const constraintValue = `${fieldPrefix || ''}${field.name}`\n if (!adapter.fieldConstraints?.[rootTableName]) {\n adapter.fieldConstraints[rootTableName] = {}\n }\n adapter.fieldConstraints[rootTableName][`${columnName}_idx`] = constraintValue\n }\n\n const indexName = buildIndexName({ name: `${newTableName}_${columnName}`, adapter })\n\n targetIndexes[indexName] = {\n name: indexName,\n on: field.localized ? [fieldName, '_locale'] : fieldName,\n unique,\n }\n }\n\n switch (field.type) {\n case 'array': {\n const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull\n\n const arrayTableName = createTableName({\n adapter,\n config: field,\n parentTableName: newTableName,\n prefix: `${newTableName}_`,\n throwValidationError,\n versionsCustomName: versions,\n })\n\n const baseColumns: Record<string, RawColumn> = {\n _order: {\n name: '_order',\n type: 'integer',\n notNull: true,\n },\n _parentID: {\n name: '_parent_id',\n type: parentIDColType,\n notNull: true,\n },\n }\n\n const baseIndexes: Record<string, RawIndex> = {\n _orderIdx: {\n name: `${arrayTableName}_order_idx`,\n on: ['_order'],\n },\n _parentIDIdx: {\n name: `${arrayTableName}_parent_id_idx`,\n on: '_parentID',\n },\n }\n\n const baseForeignKeys: Record<string, RawForeignKey> = {\n _parentIDFk: {\n name: `${arrayTableName}_parent_id_fk`,\n columns: ['_parentID'],\n foreignColumns: [\n {\n name: 'id',\n table: parentTableName,\n },\n ],\n onDelete: 'cascade',\n },\n }\n\n const isLocalized =\n Boolean(field.localized && adapter.payload.config.localization) ||\n withinLocalizedArrayOrBlock ||\n forceLocalized\n\n if (isLocalized) {\n baseColumns._locale = {\n name: '_locale',\n type: 'enum',\n locale: true,\n notNull: true,\n }\n\n baseIndexes._localeIdx = {\n name: `${arrayTableName}_locale_idx`,\n on: '_locale',\n }\n }\n\n const {\n hasLocalizedManyNumberField: subHasLocalizedManyNumberField,\n hasLocalizedManyTextField: subHasLocalizedManyTextField,\n hasLocalizedRelationshipField: subHasLocalizedRelationshipField,\n hasManyNumberField: subHasManyNumberField,\n hasManyTextField: subHasManyTextField,\n relationsToBuild: subRelationsToBuild,\n } = buildTable({\n adapter,\n baseColumns,\n baseForeignKeys,\n baseIndexes,\n disableNotNull: disableNotNullFromHere,\n disableRelsTableUnique: true,\n disableUnique,\n fields: disableUnique ? idToUUID(field.flattenedFields) : field.flattenedFields,\n rootRelationships: relationships,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n rootUniqueRelationships: uniqueRelationships,\n setColumnID,\n tableName: arrayTableName,\n versions,\n withinLocalizedArrayOrBlock: isLocalized,\n })\n\n if (subHasLocalizedManyNumberField) {\n hasLocalizedManyNumberField = subHasLocalizedManyNumberField\n }\n\n if (subHasLocalizedRelationshipField) {\n hasLocalizedRelationshipField = subHasLocalizedRelationshipField\n }\n\n if (subHasLocalizedManyTextField) {\n hasLocalizedManyTextField = subHasLocalizedManyTextField\n }\n\n if (subHasManyTextField) {\n if (!hasManyTextField || subHasManyTextField === 'index') {\n hasManyTextField = subHasManyTextField\n }\n }\n if (subHasManyNumberField) {\n if (!hasManyNumberField || subHasManyNumberField === 'index') {\n hasManyNumberField = subHasManyNumberField\n }\n }\n\n relationsToBuild.set(fieldName, {\n type: 'many',\n // arrays have their own localized table, independent of the base table.\n localized: false,\n target: arrayTableName,\n })\n\n const arrayRelations: Record<string, RawRelation> = {\n _parentID: {\n type: 'one',\n fields: [\n {\n name: '_parentID',\n table: arrayTableName,\n },\n ],\n references: ['id'],\n relationName: fieldName,\n to: parentTableName,\n },\n }\n\n if (hasLocalesTable(field.fields)) {\n arrayRelations._locales = {\n type: 'many',\n relationName: '_locales',\n to: `${arrayTableName}${adapter.localesSuffix}`,\n }\n }\n\n subRelationsToBuild.forEach(({ type, localized, target }, key) => {\n if (type === 'one') {\n const arrayWithLocalized = localized\n ? `${arrayTableName}${adapter.localesSuffix}`\n : arrayTableName\n\n arrayRelations[key] = {\n type: 'one',\n fields: [\n {\n name: key,\n table: arrayWithLocalized,\n },\n ],\n references: ['id'],\n relationName: key,\n to: target,\n }\n }\n\n if (type === 'many') {\n arrayRelations[key] = {\n type: 'many',\n relationName: key,\n to: target,\n }\n }\n })\n\n adapter.rawRelations[arrayTableName] = arrayRelations\n\n break\n }\n case 'blocks': {\n const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull\n\n field.blocks.forEach((block) => {\n const blockTableName = createTableName({\n adapter,\n config: block,\n parentTableName: rootTableName,\n prefix: `${rootTableName}_blocks_`,\n throwValidationError,\n versionsCustomName: versions,\n })\n if (!adapter.rawTables[blockTableName]) {\n const baseColumns: Record<string, RawColumn> = {\n _order: {\n name: '_order',\n type: 'integer',\n notNull: true,\n },\n _parentID: {\n name: '_parent_id',\n type: rootTableIDColType,\n notNull: true,\n },\n _path: {\n name: '_path',\n type: 'text',\n notNull: true,\n },\n }\n\n const baseIndexes: Record<string, RawIndex> = {\n _orderIdx: {\n name: `${blockTableName}_order_idx`,\n on: '_order',\n },\n _parentIDIdx: {\n name: `${blockTableName}_parent_id_idx`,\n on: ['_parentID'],\n },\n _pathIdx: {\n name: `${blockTableName}_path_idx`,\n on: '_path',\n },\n }\n\n const baseForeignKeys: Record<string, RawForeignKey> = {\n _parentIdFk: {\n name: `${blockTableName}_parent_id_fk`,\n columns: ['_parentID'],\n foreignColumns: [\n {\n name: 'id',\n table: rootTableName,\n },\n ],\n onDelete: 'cascade',\n },\n }\n\n const isLocalized =\n Boolean(field.localized && adapter.payload.config.localization) ||\n withinLocalizedArrayOrBlock ||\n forceLocalized\n\n if (isLocalized) {\n baseColumns._locale = {\n name: '_locale',\n type: 'enum',\n locale: true,\n notNull: true,\n }\n\n baseIndexes._localeIdx = {\n name: `${blockTableName}_locale_idx`,\n on: '_locale',\n }\n }\n\n const {\n hasLocalizedManyNumberField: subHasLocalizedManyNumberField,\n hasLocalizedManyTextField: subHasLocalizedManyTextField,\n hasLocalizedRelationshipField: subHasLocalizedRelationshipField,\n hasManyNumberField: subHasManyNumberField,\n hasManyTextField: subHasManyTextField,\n relationsToBuild: subRelationsToBuild,\n } = buildTable({\n adapter,\n baseColumns,\n baseForeignKeys,\n baseIndexes,\n disableNotNull: disableNotNullFromHere,\n disableRelsTableUnique: true,\n disableUnique,\n fields: disableUnique ? idToUUID(block.flattenedFields) : block.flattenedFields,\n rootRelationships: relationships,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n rootUniqueRelationships: uniqueRelationships,\n setColumnID,\n tableName: blockTableName,\n versions,\n withinLocalizedArrayOrBlock: isLocalized,\n })\n\n if (subHasLocalizedManyNumberField) {\n hasLocalizedManyNumberField = subHasLocalizedManyNumberField\n }\n\n if (subHasLocalizedRelationshipField) {\n hasLocalizedRelationshipField = subHasLocalizedRelationshipField\n }\n\n if (subHasLocalizedManyTextField) {\n hasLocalizedManyTextField = subHasLocalizedManyTextField\n }\n\n if (subHasManyTextField) {\n if (!hasManyTextField || subHasManyTextField === 'index') {\n hasManyTextField = subHasManyTextField\n }\n }\n\n if (subHasManyNumberField) {\n if (!hasManyNumberField || subHasManyNumberField === 'index') {\n hasManyNumberField = subHasManyNumberField\n }\n }\n\n const blockRelations: Record<string, RawRelation> = {\n _parentID: {\n type: 'one',\n fields: [\n {\n name: '_parentID',\n table: blockTableName,\n },\n ],\n references: ['id'],\n relationName: `_blocks_${block.slug}`,\n to: rootTableName,\n },\n }\n\n if (hasLocalesTable(block.fields)) {\n blockRelations._locales = {\n type: 'many',\n relationName: '_locales',\n to: `${blockTableName}${adapter.localesSuffix}`,\n }\n }\n\n subRelationsToBuild.forEach(({ type, localized, target }, key) => {\n if (type === 'one') {\n const blockWithLocalized = localized\n ? `${blockTableName}${adapter.localesSuffix}`\n : blockTableName\n\n blockRelations[key] = {\n type: 'one',\n fields: [\n {\n name: key,\n table: blockWithLocalized,\n },\n ],\n references: ['id'],\n relationName: key,\n to: target,\n }\n }\n\n if (type === 'many') {\n blockRelations[key] = {\n type: 'many',\n relationName: key,\n to: target,\n }\n }\n })\n\n adapter.rawRelations[blockTableName] = blockRelations\n } else if (process.env.NODE_ENV !== 'production' && !versions) {\n validateExistingBlockIsIdentical({\n block,\n localized: field.localized,\n rootTableName,\n table: adapter.rawTables[blockTableName],\n tableLocales: adapter.rawTables[`${blockTableName}${adapter.localesSuffix}`],\n })\n }\n // blocks relationships are defined from the collection or globals table down to the block, bypassing any subBlocks\n rootRelationsToBuild.set(`_blocks_${block.slug}`, {\n type: 'many',\n // blocks are not localized on the parent table\n localized: false,\n target: blockTableName,\n })\n })\n\n break\n }\n case 'checkbox': {\n targetTable[fieldName] = withDefault(\n {\n name: columnName,\n type: 'boolean',\n },\n field,\n )\n\n break\n }\n\n case 'code':\n case 'email':\n case 'textarea': {\n targetTable[fieldName] = withDefault(\n {\n name: columnName,\n type: 'varchar',\n },\n field,\n )\n\n break\n }\n\n case 'date': {\n targetTable[fieldName] = withDefault(\n {\n name: columnName,\n type: 'timestamp',\n mode: 'string',\n precision: 3,\n withTimezone: true,\n },\n field,\n )\n\n break\n }\n\n case 'group':\n case 'tab': {\n const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull\n\n const {\n hasLocalizedField: groupHasLocalizedField,\n hasLocalizedManyNumberField: groupHasLocalizedManyNumberField,\n hasLocalizedManyTextField: groupHasLocalizedManyTextField,\n hasLocalizedRelationshipField: groupHasLocalizedRelationshipField,\n hasManyNumberField: groupHasManyNumberField,\n hasManyTextField: groupHasManyTextField,\n } = traverseFields({\n adapter,\n columnPrefix: `${columnName}_`,\n columns,\n disableNotNull: disableNotNullFromHere,\n disableUnique,\n fieldPrefix: `${fieldName}.`,\n fields: field.flattenedFields,\n forceLocalized: field.localized,\n indexes,\n localesColumns,\n localesIndexes,\n newTableName: `${parentTableName}_${columnName}`,\n parentTableName,\n relationships,\n relationsToBuild,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n setColumnID,\n uniqueRelationships,\n versions,\n withinLocalizedArrayOrBlock: withinLocalizedArrayOrBlock || field.localized,\n })\n\n if (groupHasLocalizedField) {\n hasLocalizedField = true\n }\n if (groupHasLocalizedRelationshipField) {\n hasLocalizedRelationshipField = true\n }\n if (groupHasManyTextField) {\n hasManyTextField = true\n }\n if (groupHasLocalizedManyTextField) {\n hasLocalizedManyTextField = true\n }\n if (groupHasManyNumberField) {\n hasManyNumberField = true\n }\n if (groupHasLocalizedManyNumberField) {\n hasLocalizedManyNumberField = true\n }\n break\n }\n\n case 'json':\n case 'richText': {\n targetTable[fieldName] = withDefault(\n {\n name: columnName,\n type: 'jsonb',\n },\n field,\n )\n\n break\n }\n\n case 'number': {\n if (field.hasMany) {\n const isLocalized =\n Boolean(field.localized && adapter.payload.config.localization) ||\n withinLocalizedArrayOrBlock ||\n forceLocalized\n\n if (isLocalized) {\n hasLocalizedManyNumberField = true\n }\n\n if (field.index) {\n hasManyNumberField = 'index'\n } else if (!hasManyNumberField) {\n hasManyNumberField = true\n }\n\n if (field.unique) {\n throw new InvalidConfiguration(\n 'Unique is not supported in Postgres for hasMany number fields.',\n )\n }\n } else {\n targetTable[fieldName] = withDefault(\n {\n name: columnName,\n type: 'numeric',\n },\n field,\n )\n }\n\n break\n }\n\n case 'point': {\n targetTable[fieldName] = withDefault(\n {\n name: columnName,\n type: 'geometry',\n },\n field,\n )\n\n break\n }\n\n case 'radio':\n case 'select': {\n const enumName = createTableName({\n adapter,\n config: field,\n parentTableName: newTableName,\n prefix: `enum_${newTableName}_`,\n target: 'enumName',\n throwValidationError,\n })\n\n const options = field.options.map((option) => {\n if (optionIsObject(option)) {\n return option.value\n }\n\n return option\n })\n\n if (field.type === 'select' && field.hasMany) {\n const selectTableName = createTableName({\n adapter,\n config: field,\n parentTableName: newTableName,\n prefix: `${newTableName}_`,\n throwValidationError,\n versionsCustomName: versions,\n })\n\n const baseColumns: Record<string, RawColumn> = {\n order: {\n name: 'order',\n type: 'integer',\n notNull: true,\n },\n parent: {\n name: 'parent_id',\n type: parentIDColType,\n notNull: true,\n },\n value: {\n name: 'value',\n type: 'enum',\n enumName: createTableName({\n adapter,\n config: field,\n parentTableName: newTableName,\n prefix: `enum_${newTableName}_`,\n target: 'enumName',\n throwValidationError,\n }),\n options,\n },\n }\n\n const baseIndexes: Record<string, RawIndex> = {\n orderIdx: {\n name: `${selectTableName}_order_idx`,\n on: 'order',\n },\n parentIdx: {\n name: `${selectTableName}_parent_idx`,\n on: 'parent',\n },\n }\n\n const baseForeignKeys: Record<string, RawForeignKey> = {\n parentFk: {\n name: `${selectTableName}_parent_fk`,\n columns: ['parent'],\n foreignColumns: [\n {\n name: 'id',\n table: parentTableName,\n },\n ],\n onDelete: 'cascade',\n },\n }\n\n const isLocalized =\n Boolean(field.localized && adapter.payload.config.localization) ||\n withinLocalizedArrayOrBlock ||\n forceLocalized\n\n if (isLocalized) {\n baseColumns.locale = {\n name: 'locale',\n type: 'enum',\n locale: true,\n notNull: true,\n }\n\n baseIndexes.localeIdx = {\n name: `${selectTableName}_locale_idx`,\n on: 'locale',\n }\n }\n\n if (field.index) {\n baseIndexes.value = {\n name: `${selectTableName}_value_idx`,\n on: 'value',\n }\n }\n\n buildTable({\n adapter,\n baseColumns,\n baseForeignKeys,\n baseIndexes,\n disableNotNull,\n disableUnique,\n fields: [],\n rootTableName,\n setColumnID,\n tableName: selectTableName,\n versions,\n })\n\n relationsToBuild.set(fieldName, {\n type: 'many',\n // selects have their own localized table, independent of the base table.\n localized: false,\n target: selectTableName,\n })\n\n adapter.rawRelations[selectTableName] = {\n parent: {\n type: 'one',\n fields: [\n {\n name: 'parent',\n table: selectTableName,\n },\n ],\n references: ['id'],\n relationName: fieldName,\n to: parentTableName,\n },\n }\n } else {\n targetTable[fieldName] = withDefault(\n {\n name: columnName,\n type: 'enum',\n enumName,\n options,\n },\n field,\n )\n }\n break\n }\n\n case 'relationship':\n case 'upload':\n if (Array.isArray(field.relationTo)) {\n field.relationTo.forEach((relation) => {\n relationships.add(relation)\n if (field.unique && !disableUnique && !disableRelsTableUnique) {\n uniqueRelationships.add(relation)\n }\n })\n } else if (field.hasMany) {\n relationships.add(field.relationTo)\n if (field.unique && !disableUnique && !disableRelsTableUnique) {\n uniqueRelationships.add(field.relationTo)\n }\n } else {\n // simple relationships get a column on the targetTable with a foreign key to the relationTo table\n const relationshipConfig = adapter.payload.collections[field.relationTo].config\n\n const tableName = adapter.tableNameMap.get(toSnakeCase(field.relationTo))\n\n // get the id type of the related collection\n let colType: IDType = adapter.idType === 'uuid' ? 'uuid' : 'integer'\n const relatedCollectionCustomID = relationshipConfig.fields.find(\n (field) => fieldAffectsData(field) && field.name === 'id',\n )\n if (relatedCollectionCustomID?.type === 'number') {\n colType = 'numeric'\n }\n if (relatedCollectionCustomID?.type === 'text') {\n colType = 'varchar'\n }\n\n // make the foreign key column for relationship using the correct id column type\n targetTable[fieldName] = {\n name: `${columnName}_id`,\n type: colType,\n reference: {\n name: 'id',\n onDelete: 'set null',\n table: tableName,\n },\n }\n\n // add relationship to table\n relationsToBuild.set(fieldName, {\n type: 'one',\n localized: adapter.payload.config.localization && (field.localized || forceLocalized),\n target: tableName,\n })\n\n // add notNull when not required\n if (!disableNotNull && field.required && !field.admin?.condition) {\n targetTable[fieldName].notNull = true\n }\n break\n }\n\n if (\n Boolean(field.localized && adapter.payload.config.localization) ||\n withinLocalizedArrayOrBlock\n ) {\n hasLocalizedRelationshipField = true\n }\n\n break\n\n case 'text': {\n if (field.hasMany) {\n const isLocalized =\n Boolean(field.localized && adapter.payload.config.localization) ||\n withinLocalizedArrayOrBlock ||\n forceLocalized\n\n if (isLocalized) {\n hasLocalizedManyTextField = true\n }\n\n if (field.index) {\n hasManyTextField = 'index'\n } else if (!hasManyTextField) {\n hasManyTextField = true\n }\n\n if (field.unique) {\n throw new InvalidConfiguration(\n 'Unique is not supported in Postgres for hasMany text fields.',\n )\n }\n } else {\n targetTable[fieldName] = withDefault(\n {\n name: columnName,\n type: 'varchar',\n },\n field,\n )\n }\n break\n }\n\n default:\n break\n }\n\n const condition = field.admin && field.admin.condition\n\n if (\n !disableNotNull &&\n targetTable[fieldName] &&\n 'required' in field &&\n field.required &&\n !condition\n ) {\n targetTable[fieldName].notNull = true\n }\n })\n\n return {\n hasLocalizedField,\n hasLocalizedManyNumberField,\n hasLocalizedManyTextField,\n hasLocalizedRelationshipField,\n hasManyNumberField,\n hasManyTextField,\n }\n}\n"],"names":["InvalidConfiguration","fieldAffectsData","fieldIsVirtual","optionIsObject","toSnakeCase","createTableName","buildIndexName","hasLocalesTable","validateExistingBlockIsIdentical","buildTable","idToUUID","withDefault","traverseFields","adapter","columnPrefix","columns","disableNotNull","disableRelsTableUnique","disableUnique","fieldPrefix","fields","forceLocalized","indexes","localesColumns","localesIndexes","newTableName","parentTableName","relationships","relationsToBuild","rootRelationsToBuild","rootTableIDColType","rootTableName","setColumnID","uniqueRelationships","versions","withinLocalizedArrayOrBlock","throwValidationError","hasLocalizedField","hasLocalizedRelationshipField","hasManyTextField","hasLocalizedManyTextField","hasManyNumberField","hasLocalizedManyNumberField","parentIDColType","idColumn","id","includes","type","forEach","field","name","targetTable","targetIndexes","columnName","fieldName","replace","payload","config","localization","localized","hasMany","unique","index","Array","isArray","relationTo","constraintValue","fieldConstraints","indexName","on","disableNotNullFromHere","Boolean","admin","condition","arrayTableName","prefix","versionsCustomName","baseColumns","_order","notNull","_parentID","baseIndexes","_orderIdx","_parentIDIdx","baseForeignKeys","_parentIDFk","foreignColumns","table","onDelete","isLocalized","_locale","locale","_localeIdx","subHasLocalizedManyNumberField","subHasLocalizedManyTextField","subHasLocalizedRelationshipField","subHasManyNumberField","subHasManyTextField","subRelationsToBuild","flattenedFields","rootRelationships","rootUniqueRelationships","tableName","set","target","arrayRelations","references","relationName","to","_locales","localesSuffix","key","arrayWithLocalized","rawRelations","blocks","block","blockTableName","rawTables","_path","_pathIdx","_parentIdFk","blockRelations","slug","blockWithLocalized","process","env","NODE_ENV","tableLocales","mode","precision","withTimezone","groupHasLocalizedField","groupHasLocalizedManyNumberField","groupHasLocalizedManyTextField","groupHasLocalizedRelationshipField","groupHasManyNumberField","groupHasManyTextField","enumName","options","map","option","value","selectTableName","order","parent","orderIdx","parentIdx","parentFk","localeIdx","relation","add","relationshipConfig","collections","tableNameMap","get","colType","idType","relatedCollectionCustomID","find","reference","required"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/schema/traverseFields.ts"],"sourcesContent":["import type { FlattenedField } from 'payload'\n\nimport { InvalidConfiguration } from 'payload'\nimport { fieldAffectsData, fieldIsVirtual, optionIsObject } from 'payload/shared'\nimport toSnakeCase from 'to-snake-case'\n\nimport type {\n DrizzleAdapter,\n IDType,\n RawColumn,\n RawForeignKey,\n RawIndex,\n RawRelation,\n RelationMap,\n SetColumnID,\n} from '../types.js'\n\nimport { createTableName } from '../createTableName.js'\nimport { buildIndexName } from '../utilities/buildIndexName.js'\nimport { hasLocalesTable } from '../utilities/hasLocalesTable.js'\nimport { validateExistingBlockIsIdentical } from '../utilities/validateExistingBlockIsIdentical.js'\nimport { buildTable } from './build.js'\nimport { idToUUID } from './idToUUID.js'\nimport { withDefault } from './withDefault.js'\n\ntype Args = {\n adapter: DrizzleAdapter\n columnPrefix?: string\n columns: Record<string, RawColumn>\n disableNotNull: boolean\n disableRelsTableUnique?: boolean\n disableUnique?: boolean\n fieldPrefix?: string\n fields: FlattenedField[]\n forceLocalized?: boolean\n indexes: Record<string, RawIndex>\n localesColumns: Record<string, RawColumn>\n localesIndexes: Record<string, RawIndex>\n newTableName: string\n parentTableName: string\n relationships: Set<string>\n relationsToBuild: RelationMap\n rootRelationsToBuild?: RelationMap\n rootTableIDColType: IDType\n rootTableName: string\n setColumnID: SetColumnID\n uniqueRelationships: Set<string>\n versions: boolean\n /**\n * Tracks whether or not this table is built\n * from the result of a localized array or block field at some point\n */\n withinLocalizedArrayOrBlock?: boolean\n}\n\ntype Result = {\n hasLocalizedField: boolean\n hasLocalizedManyNumberField: boolean\n hasLocalizedManyTextField: boolean\n hasLocalizedRelationshipField: boolean\n hasManyNumberField: 'index' | boolean\n hasManyTextField: 'index' | boolean\n}\n\nexport const traverseFields = ({\n adapter,\n columnPrefix,\n columns,\n disableNotNull,\n disableRelsTableUnique,\n disableUnique = false,\n fieldPrefix,\n fields,\n forceLocalized,\n indexes,\n localesColumns,\n localesIndexes,\n newTableName,\n parentTableName,\n relationships,\n relationsToBuild,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n setColumnID,\n uniqueRelationships,\n versions,\n withinLocalizedArrayOrBlock,\n}: Args): Result => {\n const throwValidationError = true\n let hasLocalizedField = false\n let hasLocalizedRelationshipField = false\n let hasManyTextField: 'index' | boolean = false\n let hasLocalizedManyTextField = false\n let hasManyNumberField: 'index' | boolean = false\n let hasLocalizedManyNumberField = false\n\n let parentIDColType: IDType = 'integer'\n\n const idColumn = columns.id\n\n if (idColumn && ['numeric', 'text', 'uuid', 'varchar'].includes(idColumn.type)) {\n parentIDColType = idColumn.type as IDType\n }\n\n fields.forEach((field) => {\n if ('name' in field && field.name === 'id') {\n return\n }\n if (fieldIsVirtual(field)) {\n return\n }\n\n let targetTable = columns\n let targetIndexes = indexes\n\n const columnName = `${columnPrefix || ''}${field.name[0] === '_' ? '_' : ''}${toSnakeCase(\n field.name,\n )}`\n const fieldName = `${fieldPrefix?.replace('.', '_') || ''}${field.name}`\n\n // If field is localized,\n // add the column to the locale table instead of main table\n if (\n adapter.payload.config.localization &&\n (field.localized || forceLocalized) &&\n field.type !== 'array' &&\n field.type !== 'blocks' &&\n (('hasMany' in field && field.hasMany !== true) || !('hasMany' in field))\n ) {\n hasLocalizedField = true\n targetTable = localesColumns\n targetIndexes = localesIndexes\n }\n\n if (\n (field.unique || field.index || ['relationship', 'upload'].includes(field.type)) &&\n !['array', 'blocks', 'group'].includes(field.type) &&\n !('hasMany' in field && field.hasMany === true) &&\n !('relationTo' in field && Array.isArray(field.relationTo))\n ) {\n const unique = disableUnique !== true && field.unique\n if (unique) {\n const constraintValue = `${fieldPrefix || ''}${field.name}`\n if (!adapter.fieldConstraints?.[rootTableName]) {\n adapter.fieldConstraints[rootTableName] = {}\n }\n adapter.fieldConstraints[rootTableName][`${columnName}_idx`] = constraintValue\n }\n\n const indexName = buildIndexName({ name: `${newTableName}_${columnName}`, adapter })\n\n targetIndexes[indexName] = {\n name: indexName,\n on: field.localized ? [fieldName, '_locale'] : fieldName,\n unique,\n }\n }\n\n switch (field.type) {\n case 'array': {\n const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull\n\n const arrayTableName = createTableName({\n adapter,\n config: field,\n parentTableName: newTableName,\n prefix: `${newTableName}_`,\n throwValidationError,\n versionsCustomName: versions,\n })\n\n const baseColumns: Record<string, RawColumn> = {\n _order: {\n name: '_order',\n type: 'integer',\n notNull: true,\n },\n _parentID: {\n name: '_parent_id',\n type: parentIDColType,\n notNull: true,\n },\n }\n\n const baseIndexes: Record<string, RawIndex> = {\n _orderIdx: {\n name: `${arrayTableName}_order_idx`,\n on: ['_order'],\n },\n _parentIDIdx: {\n name: `${arrayTableName}_parent_id_idx`,\n on: '_parentID',\n },\n }\n\n const baseForeignKeys: Record<string, RawForeignKey> = {\n _parentIDFk: {\n name: `${arrayTableName}_parent_id_fk`,\n columns: ['_parentID'],\n foreignColumns: [\n {\n name: 'id',\n table: parentTableName,\n },\n ],\n onDelete: 'cascade',\n },\n }\n\n const isLocalized =\n Boolean(field.localized && adapter.payload.config.localization) ||\n withinLocalizedArrayOrBlock ||\n forceLocalized\n\n if (isLocalized) {\n baseColumns._locale = {\n name: '_locale',\n type: 'enum',\n locale: true,\n notNull: true,\n }\n\n baseIndexes._localeIdx = {\n name: `${arrayTableName}_locale_idx`,\n on: '_locale',\n }\n }\n\n const {\n hasLocalizedManyNumberField: subHasLocalizedManyNumberField,\n hasLocalizedManyTextField: subHasLocalizedManyTextField,\n hasLocalizedRelationshipField: subHasLocalizedRelationshipField,\n hasManyNumberField: subHasManyNumberField,\n hasManyTextField: subHasManyTextField,\n relationsToBuild: subRelationsToBuild,\n } = buildTable({\n adapter,\n baseColumns,\n baseForeignKeys,\n baseIndexes,\n disableNotNull: disableNotNullFromHere,\n disableRelsTableUnique: true,\n disableUnique,\n fields: disableUnique ? idToUUID(field.flattenedFields) : field.flattenedFields,\n rootRelationships: relationships,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n rootUniqueRelationships: uniqueRelationships,\n setColumnID,\n tableName: arrayTableName,\n versions,\n withinLocalizedArrayOrBlock: isLocalized,\n })\n\n if (subHasLocalizedManyNumberField) {\n hasLocalizedManyNumberField = subHasLocalizedManyNumberField\n }\n\n if (subHasLocalizedRelationshipField) {\n hasLocalizedRelationshipField = subHasLocalizedRelationshipField\n }\n\n if (subHasLocalizedManyTextField) {\n hasLocalizedManyTextField = subHasLocalizedManyTextField\n }\n\n if (subHasManyTextField) {\n if (!hasManyTextField || subHasManyTextField === 'index') {\n hasManyTextField = subHasManyTextField\n }\n }\n if (subHasManyNumberField) {\n if (!hasManyNumberField || subHasManyNumberField === 'index') {\n hasManyNumberField = subHasManyNumberField\n }\n }\n\n relationsToBuild.set(fieldName, {\n type: 'many',\n // arrays have their own localized table, independent of the base table.\n localized: false,\n target: arrayTableName,\n })\n\n const arrayRelations: Record<string, RawRelation> = {\n _parentID: {\n type: 'one',\n fields: [\n {\n name: '_parentID',\n table: arrayTableName,\n },\n ],\n references: ['id'],\n relationName: fieldName,\n to: parentTableName,\n },\n }\n\n if (hasLocalesTable(field.fields)) {\n arrayRelations._locales = {\n type: 'many',\n relationName: '_locales',\n to: `${arrayTableName}${adapter.localesSuffix}`,\n }\n }\n\n subRelationsToBuild.forEach(({ type, localized, target }, key) => {\n if (type === 'one') {\n const arrayWithLocalized = localized\n ? `${arrayTableName}${adapter.localesSuffix}`\n : arrayTableName\n\n arrayRelations[key] = {\n type: 'one',\n fields: [\n {\n name: key,\n table: arrayWithLocalized,\n },\n ],\n references: ['id'],\n relationName: key,\n to: target,\n }\n }\n\n if (type === 'many') {\n arrayRelations[key] = {\n type: 'many',\n relationName: key,\n to: target,\n }\n }\n })\n\n adapter.rawRelations[arrayTableName] = arrayRelations\n\n break\n }\n case 'blocks': {\n const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull\n\n ;(field.blockReferences ?? field.blocks).forEach((_block) => {\n const block = typeof _block === 'string' ? adapter.payload.blocks[_block] : _block\n\n const blockTableName = createTableName({\n adapter,\n config: block,\n parentTableName: rootTableName,\n prefix: `${rootTableName}_blocks_`,\n throwValidationError,\n versionsCustomName: versions,\n })\n if (!adapter.rawTables[blockTableName]) {\n const baseColumns: Record<string, RawColumn> = {\n _order: {\n name: '_order',\n type: 'integer',\n notNull: true,\n },\n _parentID: {\n name: '_parent_id',\n type: rootTableIDColType,\n notNull: true,\n },\n _path: {\n name: '_path',\n type: 'text',\n notNull: true,\n },\n }\n\n const baseIndexes: Record<string, RawIndex> = {\n _orderIdx: {\n name: `${blockTableName}_order_idx`,\n on: '_order',\n },\n _parentIDIdx: {\n name: `${blockTableName}_parent_id_idx`,\n on: ['_parentID'],\n },\n _pathIdx: {\n name: `${blockTableName}_path_idx`,\n on: '_path',\n },\n }\n\n const baseForeignKeys: Record<string, RawForeignKey> = {\n _parentIdFk: {\n name: `${blockTableName}_parent_id_fk`,\n columns: ['_parentID'],\n foreignColumns: [\n {\n name: 'id',\n table: rootTableName,\n },\n ],\n onDelete: 'cascade',\n },\n }\n\n const isLocalized =\n Boolean(field.localized && adapter.payload.config.localization) ||\n withinLocalizedArrayOrBlock ||\n forceLocalized\n\n if (isLocalized) {\n baseColumns._locale = {\n name: '_locale',\n type: 'enum',\n locale: true,\n notNull: true,\n }\n\n baseIndexes._localeIdx = {\n name: `${blockTableName}_locale_idx`,\n on: '_locale',\n }\n }\n\n const {\n hasLocalizedManyNumberField: subHasLocalizedManyNumberField,\n hasLocalizedManyTextField: subHasLocalizedManyTextField,\n hasLocalizedRelationshipField: subHasLocalizedRelationshipField,\n hasManyNumberField: subHasManyNumberField,\n hasManyTextField: subHasManyTextField,\n relationsToBuild: subRelationsToBuild,\n } = buildTable({\n adapter,\n baseColumns,\n baseForeignKeys,\n baseIndexes,\n disableNotNull: disableNotNullFromHere,\n disableRelsTableUnique: true,\n disableUnique,\n fields: disableUnique ? idToUUID(block.flattenedFields) : block.flattenedFields,\n rootRelationships: relationships,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n rootUniqueRelationships: uniqueRelationships,\n setColumnID,\n tableName: blockTableName,\n versions,\n withinLocalizedArrayOrBlock: isLocalized,\n })\n\n if (subHasLocalizedManyNumberField) {\n hasLocalizedManyNumberField = subHasLocalizedManyNumberField\n }\n\n if (subHasLocalizedRelationshipField) {\n hasLocalizedRelationshipField = subHasLocalizedRelationshipField\n }\n\n if (subHasLocalizedManyTextField) {\n hasLocalizedManyTextField = subHasLocalizedManyTextField\n }\n\n if (subHasManyTextField) {\n if (!hasManyTextField || subHasManyTextField === 'index') {\n hasManyTextField = subHasManyTextField\n }\n }\n\n if (subHasManyNumberField) {\n if (!hasManyNumberField || subHasManyNumberField === 'index') {\n hasManyNumberField = subHasManyNumberField\n }\n }\n\n const blockRelations: Record<string, RawRelation> = {\n _parentID: {\n type: 'one',\n fields: [\n {\n name: '_parentID',\n table: blockTableName,\n },\n ],\n references: ['id'],\n relationName: `_blocks_${block.slug}`,\n to: rootTableName,\n },\n }\n\n if (hasLocalesTable(block.fields)) {\n blockRelations._locales = {\n type: 'many',\n relationName: '_locales',\n to: `${blockTableName}${adapter.localesSuffix}`,\n }\n }\n\n subRelationsToBuild.forEach(({ type, localized, target }, key) => {\n if (type === 'one') {\n const blockWithLocalized = localized\n ? `${blockTableName}${adapter.localesSuffix}`\n : blockTableName\n\n blockRelations[key] = {\n type: 'one',\n fields: [\n {\n name: key,\n table: blockWithLocalized,\n },\n ],\n references: ['id'],\n relationName: key,\n to: target,\n }\n }\n\n if (type === 'many') {\n blockRelations[key] = {\n type: 'many',\n relationName: key,\n to: target,\n }\n }\n })\n\n adapter.rawRelations[blockTableName] = blockRelations\n } else if (process.env.NODE_ENV !== 'production' && !versions) {\n validateExistingBlockIsIdentical({\n block,\n localized: field.localized,\n rootTableName,\n table: adapter.rawTables[blockTableName],\n tableLocales: adapter.rawTables[`${blockTableName}${adapter.localesSuffix}`],\n })\n }\n // blocks relationships are defined from the collection or globals table down to the block, bypassing any subBlocks\n rootRelationsToBuild.set(`_blocks_${block.slug}`, {\n type: 'many',\n // blocks are not localized on the parent table\n localized: false,\n target: blockTableName,\n })\n })\n\n break\n }\n case 'checkbox': {\n targetTable[fieldName] = withDefault(\n {\n name: columnName,\n type: 'boolean',\n },\n field,\n )\n\n break\n }\n\n case 'code':\n case 'email':\n case 'textarea': {\n targetTable[fieldName] = withDefault(\n {\n name: columnName,\n type: 'varchar',\n },\n field,\n )\n\n break\n }\n\n case 'date': {\n targetTable[fieldName] = withDefault(\n {\n name: columnName,\n type: 'timestamp',\n mode: 'string',\n precision: 3,\n withTimezone: true,\n },\n field,\n )\n\n break\n }\n\n case 'group':\n case 'tab': {\n const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull\n\n const {\n hasLocalizedField: groupHasLocalizedField,\n hasLocalizedManyNumberField: groupHasLocalizedManyNumberField,\n hasLocalizedManyTextField: groupHasLocalizedManyTextField,\n hasLocalizedRelationshipField: groupHasLocalizedRelationshipField,\n hasManyNumberField: groupHasManyNumberField,\n hasManyTextField: groupHasManyTextField,\n } = traverseFields({\n adapter,\n columnPrefix: `${columnName}_`,\n columns,\n disableNotNull: disableNotNullFromHere,\n disableUnique,\n fieldPrefix: `${fieldName}.`,\n fields: field.flattenedFields,\n forceLocalized: field.localized,\n indexes,\n localesColumns,\n localesIndexes,\n newTableName: `${parentTableName}_${columnName}`,\n parentTableName,\n relationships,\n relationsToBuild,\n rootRelationsToBuild,\n rootTableIDColType,\n rootTableName,\n setColumnID,\n uniqueRelationships,\n versions,\n withinLocalizedArrayOrBlock: withinLocalizedArrayOrBlock || field.localized,\n })\n\n if (groupHasLocalizedField) {\n hasLocalizedField = true\n }\n if (groupHasLocalizedRelationshipField) {\n hasLocalizedRelationshipField = true\n }\n if (groupHasManyTextField) {\n hasManyTextField = true\n }\n if (groupHasLocalizedManyTextField) {\n hasLocalizedManyTextField = true\n }\n if (groupHasManyNumberField) {\n hasManyNumberField = true\n }\n if (groupHasLocalizedManyNumberField) {\n hasLocalizedManyNumberField = true\n }\n break\n }\n\n case 'json':\n case 'richText': {\n targetTable[fieldName] = withDefault(\n {\n name: columnName,\n type: 'jsonb',\n },\n field,\n )\n\n break\n }\n\n case 'number': {\n if (field.hasMany) {\n const isLocalized =\n Boolean(field.localized && adapter.payload.config.localization) ||\n withinLocalizedArrayOrBlock ||\n forceLocalized\n\n if (isLocalized) {\n hasLocalizedManyNumberField = true\n }\n\n if (field.index) {\n hasManyNumberField = 'index'\n } else if (!hasManyNumberField) {\n hasManyNumberField = true\n }\n\n if (field.unique) {\n throw new InvalidConfiguration(\n 'Unique is not supported in Postgres for hasMany number fields.',\n )\n }\n } else {\n targetTable[fieldName] = withDefault(\n {\n name: columnName,\n type: 'numeric',\n },\n field,\n )\n }\n\n break\n }\n\n case 'point': {\n targetTable[fieldName] = withDefault(\n {\n name: columnName,\n type: 'geometry',\n },\n field,\n )\n\n break\n }\n\n case 'radio':\n case 'select': {\n const enumName = createTableName({\n adapter,\n config: field,\n parentTableName: newTableName,\n prefix: `enum_${newTableName}_`,\n target: 'enumName',\n throwValidationError,\n })\n\n const options = field.options.map((option) => {\n if (optionIsObject(option)) {\n return option.value\n }\n\n return option\n })\n\n if (field.type === 'select' && field.hasMany) {\n const selectTableName = createTableName({\n adapter,\n config: field,\n parentTableName: newTableName,\n prefix: `${newTableName}_`,\n throwValidationError,\n versionsCustomName: versions,\n })\n\n const baseColumns: Record<string, RawColumn> = {\n order: {\n name: 'order',\n type: 'integer',\n notNull: true,\n },\n parent: {\n name: 'parent_id',\n type: parentIDColType,\n notNull: true,\n },\n value: {\n name: 'value',\n type: 'enum',\n enumName: createTableName({\n adapter,\n config: field,\n parentTableName: newTableName,\n prefix: `enum_${newTableName}_`,\n target: 'enumName',\n throwValidationError,\n }),\n options,\n },\n }\n\n const baseIndexes: Record<string, RawIndex> = {\n orderIdx: {\n name: `${selectTableName}_order_idx`,\n on: 'order',\n },\n parentIdx: {\n name: `${selectTableName}_parent_idx`,\n on: 'parent',\n },\n }\n\n const baseForeignKeys: Record<string, RawForeignKey> = {\n parentFk: {\n name: `${selectTableName}_parent_fk`,\n columns: ['parent'],\n foreignColumns: [\n {\n name: 'id',\n table: parentTableName,\n },\n ],\n onDelete: 'cascade',\n },\n }\n\n const isLocalized =\n Boolean(field.localized && adapter.payload.config.localization) ||\n withinLocalizedArrayOrBlock ||\n forceLocalized\n\n if (isLocalized) {\n baseColumns.locale = {\n name: 'locale',\n type: 'enum',\n locale: true,\n notNull: true,\n }\n\n baseIndexes.localeIdx = {\n name: `${selectTableName}_locale_idx`,\n on: 'locale',\n }\n }\n\n if (field.index) {\n baseIndexes.value = {\n name: `${selectTableName}_value_idx`,\n on: 'value',\n }\n }\n\n buildTable({\n adapter,\n baseColumns,\n baseForeignKeys,\n baseIndexes,\n disableNotNull,\n disableUnique,\n fields: [],\n rootTableName,\n setColumnID,\n tableName: selectTableName,\n versions,\n })\n\n relationsToBuild.set(fieldName, {\n type: 'many',\n // selects have their own localized table, independent of the base table.\n localized: false,\n target: selectTableName,\n })\n\n adapter.rawRelations[selectTableName] = {\n parent: {\n type: 'one',\n fields: [\n {\n name: 'parent',\n table: selectTableName,\n },\n ],\n references: ['id'],\n relationName: fieldName,\n to: parentTableName,\n },\n }\n } else {\n targetTable[fieldName] = withDefault(\n {\n name: columnName,\n type: 'enum',\n enumName,\n options,\n },\n field,\n )\n }\n break\n }\n\n case 'relationship':\n case 'upload':\n if (Array.isArray(field.relationTo)) {\n field.relationTo.forEach((relation) => {\n relationships.add(relation)\n if (field.unique && !disableUnique && !disableRelsTableUnique) {\n uniqueRelationships.add(relation)\n }\n })\n } else if (field.hasMany) {\n relationships.add(field.relationTo)\n if (field.unique && !disableUnique && !disableRelsTableUnique) {\n uniqueRelationships.add(field.relationTo)\n }\n } else {\n // simple relationships get a column on the targetTable with a foreign key to the relationTo table\n const relationshipConfig = adapter.payload.collections[field.relationTo].config\n\n const tableName = adapter.tableNameMap.get(toSnakeCase(field.relationTo))\n\n // get the id type of the related collection\n let colType: IDType = adapter.idType === 'uuid' ? 'uuid' : 'integer'\n const relatedCollectionCustomID = relationshipConfig.fields.find(\n (field) => fieldAffectsData(field) && field.name === 'id',\n )\n if (relatedCollectionCustomID?.type === 'number') {\n colType = 'numeric'\n }\n if (relatedCollectionCustomID?.type === 'text') {\n colType = 'varchar'\n }\n\n // make the foreign key column for relationship using the correct id column type\n targetTable[fieldName] = {\n name: `${columnName}_id`,\n type: colType,\n reference: {\n name: 'id',\n onDelete: 'set null',\n table: tableName,\n },\n }\n\n // add relationship to table\n relationsToBuild.set(fieldName, {\n type: 'one',\n localized: adapter.payload.config.localization && (field.localized || forceLocalized),\n target: tableName,\n })\n\n // add notNull when not required\n if (!disableNotNull && field.required && !field.admin?.condition) {\n targetTable[fieldName].notNull = true\n }\n break\n }\n\n if (\n Boolean(field.localized && adapter.payload.config.localization) ||\n withinLocalizedArrayOrBlock\n ) {\n hasLocalizedRelationshipField = true\n }\n\n break\n\n case 'text': {\n if (field.hasMany) {\n const isLocalized =\n Boolean(field.localized && adapter.payload.config.localization) ||\n withinLocalizedArrayOrBlock ||\n forceLocalized\n\n if (isLocalized) {\n hasLocalizedManyTextField = true\n }\n\n if (field.index) {\n hasManyTextField = 'index'\n } else if (!hasManyTextField) {\n hasManyTextField = true\n }\n\n if (field.unique) {\n throw new InvalidConfiguration(\n 'Unique is not supported in Postgres for hasMany text fields.',\n )\n }\n } else {\n targetTable[fieldName] = withDefault(\n {\n name: columnName,\n type: 'varchar',\n },\n field,\n )\n }\n break\n }\n\n default:\n break\n }\n\n const condition = field.admin && field.admin.condition\n\n if (\n !disableNotNull &&\n targetTable[fieldName] &&\n 'required' in field &&\n field.required &&\n !condition\n ) {\n targetTable[fieldName].notNull = true\n }\n })\n\n return {\n hasLocalizedField,\n hasLocalizedManyNumberField,\n hasLocalizedManyTextField,\n hasLocalizedRelationshipField,\n hasManyNumberField,\n hasManyTextField,\n }\n}\n"],"names":["InvalidConfiguration","fieldAffectsData","fieldIsVirtual","optionIsObject","toSnakeCase","createTableName","buildIndexName","hasLocalesTable","validateExistingBlockIsIdentical","buildTable","idToUUID","withDefault","traverseFields","adapter","columnPrefix","columns","disableNotNull","disableRelsTableUnique","disableUnique","fieldPrefix","fields","forceLocalized","indexes","localesColumns","localesIndexes","newTableName","parentTableName","relationships","relationsToBuild","rootRelationsToBuild","rootTableIDColType","rootTableName","setColumnID","uniqueRelationships","versions","withinLocalizedArrayOrBlock","throwValidationError","hasLocalizedField","hasLocalizedRelationshipField","hasManyTextField","hasLocalizedManyTextField","hasManyNumberField","hasLocalizedManyNumberField","parentIDColType","idColumn","id","includes","type","forEach","field","name","targetTable","targetIndexes","columnName","fieldName","replace","payload","config","localization","localized","hasMany","unique","index","Array","isArray","relationTo","constraintValue","fieldConstraints","indexName","on","disableNotNullFromHere","Boolean","admin","condition","arrayTableName","prefix","versionsCustomName","baseColumns","_order","notNull","_parentID","baseIndexes","_orderIdx","_parentIDIdx","baseForeignKeys","_parentIDFk","foreignColumns","table","onDelete","isLocalized","_locale","locale","_localeIdx","subHasLocalizedManyNumberField","subHasLocalizedManyTextField","subHasLocalizedRelationshipField","subHasManyNumberField","subHasManyTextField","subRelationsToBuild","flattenedFields","rootRelationships","rootUniqueRelationships","tableName","set","target","arrayRelations","references","relationName","to","_locales","localesSuffix","key","arrayWithLocalized","rawRelations","blockReferences","blocks","_block","block","blockTableName","rawTables","_path","_pathIdx","_parentIdFk","blockRelations","slug","blockWithLocalized","process","env","NODE_ENV","tableLocales","mode","precision","withTimezone","groupHasLocalizedField","groupHasLocalizedManyNumberField","groupHasLocalizedManyTextField","groupHasLocalizedRelationshipField","groupHasManyNumberField","groupHasManyTextField","enumName","options","map","option","value","selectTableName","order","parent","orderIdx","parentIdx","parentFk","localeIdx","relation","add","relationshipConfig","collections","tableNameMap","get","colType","idType","relatedCollectionCustomID","find","reference","required"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../src/transform/read/traverseFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAIzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAA;AAMnE,KAAK,kBAAkB,GAAG;IACxB;;OAEG;IACH,OAAO,EAAE,cAAc,CAAA;IACvB;;OAEG;IACH,MAAM,EAAE,SAAS,CAAA;IACjB;;OAEG;IACH,MAAM,EAAE,eAAe,CAAA;IACvB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC;;OAEG;IACH,SAAS,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAA;IACzB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB;;OAEG;IACH,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;IAClD;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;IACxD;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;IAChD;;OAEG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAClC,CAAA;AAID,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,0JAe7D,kBAAkB,KAAG,CA4jBvB,CAAA"}
1
+ {"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../src/transform/read/traverseFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,cAAc,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAIzF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAA;AAMnE,KAAK,kBAAkB,GAAG;IACxB;;OAEG;IACH,OAAO,EAAE,cAAc,CAAA;IACvB;;OAEG;IACH,MAAM,EAAE,SAAS,CAAA;IACjB;;OAEG;IACH,MAAM,EAAE,eAAe,CAAA;IACvB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC;;OAEG;IACH,SAAS,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAA;IACzB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB;;OAEG;IACH,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;IAClD;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;IACxD;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;IAChD;;OAEG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAClC,CAAA;AAID,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,0JAe7D,kBAAkB,KAAG,CAykBvB,CAAA"}
@@ -110,7 +110,7 @@ export const traverseFields = ({ adapter, blocks, config, dataRef, deletions, fi
110
110
  });
111
111
  Object.entries(result[field.name]).forEach(([locale, localizedBlocks])=>{
112
112
  result[field.name][locale] = localizedBlocks.map((row)=>{
113
- const block = field.blocks.find(({ slug })=>slug === row.blockType);
113
+ const block = adapter.payload.blocks[row.blockType] ?? (field.blockReferences ?? field.blocks).find((block)=>typeof block !== 'string' && block.slug === row.blockType);
114
114
  if (block) {
115
115
  const blockResult = traverseFields({
116
116
  adapter,
@@ -154,7 +154,10 @@ export const traverseFields = ({ adapter, blocks, config, dataRef, deletions, fi
154
154
  row.id = row._uuid;
155
155
  delete row._uuid;
156
156
  }
157
- const block = field.blocks.find(({ slug })=>slug === row.blockType);
157
+ if (typeof row.blockType !== 'string') {
158
+ return acc;
159
+ }
160
+ const block = adapter.payload.blocks[row.blockType] ?? (field.blockReferences ?? field.blocks).find((block)=>typeof block !== 'string' && block.slug === row.blockType);
158
161
  if (block) {
159
162
  if (!withinArrayOrBlockLocale || withinArrayOrBlockLocale && withinArrayOrBlockLocale === row._locale) {
160
163
  if (row._locale) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/transform/read/traverseFields.ts"],"sourcesContent":["import type { FlattenedField, JoinQuery, SanitizedConfig } from 'payload'\n\nimport { fieldAffectsData, fieldIsVirtual } from 'payload/shared'\n\nimport type { DrizzleAdapter } from '../../types.js'\nimport type { BlocksMap } from '../../utilities/createBlocksMap.js'\n\nimport { transformHasManyNumber } from './hasManyNumber.js'\nimport { transformHasManyText } from './hasManyText.js'\nimport { transformRelationship } from './relationship.js'\n\ntype TraverseFieldsArgs = {\n /**\n * The DB adapter\n */\n adapter: DrizzleAdapter\n /**\n * Pre-formatted blocks map\n */\n blocks: BlocksMap\n /**\n * The full Payload config\n */\n config: SanitizedConfig\n /**\n * The data reference to be mutated within this recursive function\n */\n dataRef: Record<string, unknown>\n /**\n * Data that needs to be removed from the result after all fields have populated\n */\n deletions: (() => void)[]\n /**\n * Column prefix can be built up by group and named tab fields\n */\n fieldPrefix: string\n /**\n * An array of Payload fields to traverse\n */\n fields: FlattenedField[]\n /**\n *\n */\n joinQuery?: JoinQuery\n /**\n * All hasMany number fields, as returned by Drizzle, keyed on an object by field path\n */\n numbers: Record<string, Record<string, unknown>[]>\n /**\n * The current field path (in dot notation), used to merge in relationships\n */\n path: string\n /**\n * All related documents, as returned by Drizzle, keyed on an object by field path\n */\n relationships: Record<string, Record<string, unknown>[]>\n /**\n * Data structure representing the nearest table from db\n */\n table: Record<string, unknown>\n /**\n * All hasMany text fields, as returned by Drizzle, keyed on an object by field path\n */\n texts: Record<string, Record<string, unknown>[]>\n /**\n * Set to a locale if this group of fields is within a localized array or block.\n */\n withinArrayOrBlockLocale?: string\n}\n\n// Traverse fields recursively, transforming data\n// for each field type into required Payload shape\nexport const traverseFields = <T extends Record<string, unknown>>({\n adapter,\n blocks,\n config,\n dataRef,\n deletions,\n fieldPrefix,\n fields,\n joinQuery,\n numbers,\n path,\n relationships,\n table,\n texts,\n withinArrayOrBlockLocale,\n}: TraverseFieldsArgs): T => {\n const sanitizedPath = path ? `${path}.` : path\n\n const formatted = fields.reduce((result, field) => {\n if (fieldIsVirtual(field)) {\n return result\n }\n\n const fieldName = `${fieldPrefix || ''}${field.name}`\n let fieldData = table[fieldName]\n const localizedFieldData = {}\n const valuesToTransform: {\n ref: Record<string, unknown>\n table: Record<string, unknown>\n }[] = []\n\n if (fieldPrefix) {\n deletions.push(() => delete table[fieldName])\n }\n\n if (field.type === 'array') {\n if (Array.isArray(fieldData)) {\n if (field.localized) {\n result[field.name] = fieldData.reduce((arrayResult, row) => {\n if (typeof row._locale === 'string') {\n if (!arrayResult[row._locale]) {\n arrayResult[row._locale] = []\n }\n const locale = row._locale\n const data = {}\n delete row._locale\n if (row._uuid) {\n row.id = row._uuid\n delete row._uuid\n }\n\n const rowResult = traverseFields<T>({\n adapter,\n blocks,\n config,\n dataRef: data,\n deletions,\n fieldPrefix: '',\n fields: field.flattenedFields,\n numbers,\n path: `${sanitizedPath}${field.name}.${row._order - 1}`,\n relationships,\n table: row,\n texts,\n withinArrayOrBlockLocale: locale,\n })\n\n if ('_order' in rowResult) {\n delete rowResult._order\n }\n\n arrayResult[locale].push(rowResult)\n }\n\n return arrayResult\n }, {})\n } else {\n result[field.name] = fieldData.reduce((acc, row, i) => {\n if (row._uuid) {\n row.id = row._uuid\n delete row._uuid\n }\n\n if ('_order' in row) {\n delete row._order\n }\n\n if (\n !withinArrayOrBlockLocale ||\n (withinArrayOrBlockLocale && withinArrayOrBlockLocale === row._locale)\n ) {\n if (row._locale) {\n delete row._locale\n }\n\n acc.push(\n traverseFields<T>({\n adapter,\n blocks,\n config,\n dataRef: row,\n deletions,\n fieldPrefix: '',\n fields: field.flattenedFields,\n numbers,\n path: `${sanitizedPath}${field.name}.${i}`,\n relationships,\n table: row,\n texts,\n withinArrayOrBlockLocale,\n }),\n )\n }\n\n return acc\n }, [])\n }\n }\n\n return result\n }\n\n if (field.type === 'blocks') {\n const blockFieldPath = `${sanitizedPath}${field.name}`\n const blocksByPath = blocks[blockFieldPath]\n\n if (Array.isArray(blocksByPath)) {\n if (field.localized) {\n result[field.name] = {}\n\n blocksByPath.forEach((row) => {\n if (row._uuid) {\n row.id = row._uuid\n delete row._uuid\n }\n if (typeof row._locale === 'string') {\n if (!result[field.name][row._locale]) {\n result[field.name][row._locale] = []\n }\n result[field.name][row._locale].push(row)\n delete row._locale\n }\n })\n\n Object.entries(result[field.name]).forEach(([locale, localizedBlocks]) => {\n result[field.name][locale] = localizedBlocks.map((row) => {\n const block = field.blocks.find(({ slug }) => slug === row.blockType)\n\n if (block) {\n const blockResult = traverseFields<T>({\n adapter,\n blocks,\n config,\n dataRef: row,\n deletions,\n fieldPrefix: '',\n fields: block.flattenedFields,\n numbers,\n path: `${blockFieldPath}.${row._order - 1}`,\n relationships,\n table: row,\n texts,\n withinArrayOrBlockLocale: locale,\n })\n\n delete blockResult._order\n return blockResult\n }\n\n return {}\n })\n })\n } else {\n // Add locale-specific index to have a proper blockFieldPath for current locale\n // because blocks can be in the same array for different locales!\n if (withinArrayOrBlockLocale && config.localization) {\n for (const locale of config.localization.localeCodes) {\n let localeIndex = 0\n\n for (let i = 0; i < blocksByPath.length; i++) {\n const row = blocksByPath[i]\n if (row._locale === locale) {\n row._index = localeIndex\n localeIndex++\n }\n }\n }\n }\n\n result[field.name] = blocksByPath.reduce((acc, row, i) => {\n delete row._order\n if (row._uuid) {\n row.id = row._uuid\n delete row._uuid\n }\n const block = field.blocks.find(({ slug }) => slug === row.blockType)\n\n if (block) {\n if (\n !withinArrayOrBlockLocale ||\n (withinArrayOrBlockLocale && withinArrayOrBlockLocale === row._locale)\n ) {\n if (row._locale) {\n delete row._locale\n }\n if (typeof row._index === 'number') {\n i = row._index\n delete row._index\n }\n\n acc.push(\n traverseFields<T>({\n adapter,\n blocks,\n config,\n dataRef: row,\n deletions,\n fieldPrefix: '',\n fields: block.flattenedFields,\n numbers,\n path: `${blockFieldPath}.${i}`,\n relationships,\n table: row,\n texts,\n withinArrayOrBlockLocale,\n }),\n )\n\n return acc\n }\n } else {\n acc.push({})\n }\n\n return acc\n }, [])\n }\n }\n\n return result\n }\n\n if (field.type === 'relationship' || field.type === 'upload') {\n if (typeof field.relationTo === 'string' && !('hasMany' in field && field.hasMany)) {\n if (\n field.localized &&\n config.localization &&\n config.localization.locales &&\n Array.isArray(table?._locales)\n ) {\n table._locales.forEach((localeRow) => {\n result[field.name] = { [localeRow._locale]: localeRow[fieldName] }\n })\n } else {\n valuesToTransform.push({ ref: result, table })\n }\n } else {\n const relationPathMatch = relationships[`${sanitizedPath}${field.name}`]\n\n if (!relationPathMatch) {\n if ('hasMany' in field && field.hasMany) {\n if (field.localized && config.localization && config.localization.locales) {\n result[field.name] = {\n [config.localization.defaultLocale]: [],\n }\n } else {\n result[field.name] = []\n }\n }\n\n return result\n }\n\n if (field.localized) {\n result[field.name] = {}\n const relationsByLocale: Record<string, Record<string, unknown>[]> = {}\n\n relationPathMatch.forEach((row) => {\n if (typeof row.locale === 'string') {\n if (!relationsByLocale[row.locale]) {\n relationsByLocale[row.locale] = []\n }\n relationsByLocale[row.locale].push(row)\n }\n })\n\n Object.entries(relationsByLocale).forEach(([locale, relations]) => {\n transformRelationship({\n field,\n locale,\n ref: result,\n relations,\n })\n })\n } else {\n transformRelationship({\n field,\n ref: result,\n relations: relationPathMatch,\n withinArrayOrBlockLocale,\n })\n }\n return result\n }\n }\n\n if (field.type === 'join') {\n const { limit = field.defaultLimit ?? 10 } =\n joinQuery?.[`${fieldPrefix.replaceAll('_', '.')}${field.name}`] || {}\n\n // raw hasMany results from SQLite\n if (typeof fieldData === 'string') {\n fieldData = JSON.parse(fieldData)\n }\n\n let fieldResult:\n | { docs: unknown[]; hasNextPage: boolean }\n | Record<string, { docs: unknown[]; hasNextPage: boolean }>\n if (Array.isArray(fieldData)) {\n if (field.localized && adapter.payload.config.localization) {\n fieldResult = fieldData.reduce(\n (joinResult, row) => {\n if (typeof row.locale === 'string') {\n joinResult[row.locale].docs.push(row.id)\n }\n\n return joinResult\n },\n\n // initialize with defaults so empty won't be undefined\n adapter.payload.config.localization.localeCodes.reduce((acc, code) => {\n acc[code] = {\n docs: [],\n hasNextPage: false,\n }\n return acc\n }, {}),\n )\n Object.keys(fieldResult).forEach((locale) => {\n fieldResult[locale].hasNextPage = fieldResult[locale].docs.length > limit\n fieldResult[locale].docs = fieldResult[locale].docs.slice(0, limit)\n })\n } else {\n const hasNextPage = limit !== 0 && fieldData.length > limit\n fieldResult = {\n docs: (hasNextPage ? fieldData.slice(0, limit) : fieldData).map(({ id }) => ({\n id,\n })),\n hasNextPage,\n }\n }\n }\n\n result[field.name] = fieldResult\n return result\n }\n\n if (field.type === 'text' && field?.hasMany) {\n const textPathMatch = texts[`${sanitizedPath}${field.name}`]\n if (!textPathMatch) {\n return result\n }\n\n if (field.localized) {\n result[field.name] = {}\n const textsByLocale: Record<string, Record<string, unknown>[]> = {}\n\n textPathMatch.forEach((row) => {\n if (typeof row.locale === 'string') {\n if (!textsByLocale[row.locale]) {\n textsByLocale[row.locale] = []\n }\n textsByLocale[row.locale].push(row)\n }\n })\n\n Object.entries(textsByLocale).forEach(([locale, texts]) => {\n transformHasManyText({\n field,\n locale,\n ref: result,\n textRows: texts,\n })\n })\n } else {\n transformHasManyText({\n field,\n ref: result,\n textRows: textPathMatch,\n withinArrayOrBlockLocale,\n })\n }\n\n return result\n }\n\n if (field.type === 'number' && field.hasMany) {\n const numberPathMatch = numbers[`${sanitizedPath}${field.name}`]\n if (!numberPathMatch) {\n return result\n }\n\n if (field.localized) {\n result[field.name] = {}\n const numbersByLocale: Record<string, Record<string, unknown>[]> = {}\n\n numberPathMatch.forEach((row) => {\n if (typeof row.locale === 'string') {\n if (!numbersByLocale[row.locale]) {\n numbersByLocale[row.locale] = []\n }\n numbersByLocale[row.locale].push(row)\n }\n })\n\n Object.entries(numbersByLocale).forEach(([locale, numbers]) => {\n transformHasManyNumber({\n field,\n locale,\n numberRows: numbers,\n ref: result,\n })\n })\n } else {\n transformHasManyNumber({\n field,\n numberRows: numberPathMatch,\n ref: result,\n withinArrayOrBlockLocale,\n })\n }\n\n return result\n }\n\n if (field.type === 'select' && field.hasMany) {\n if (Array.isArray(fieldData)) {\n if (field.localized) {\n result[field.name] = fieldData.reduce((selectResult, row) => {\n if (typeof row.locale === 'string') {\n if (!selectResult[row.locale]) {\n selectResult[row.locale] = []\n }\n selectResult[row.locale].push(row.value)\n }\n\n return selectResult\n }, {})\n } else {\n let selectData = fieldData\n if (withinArrayOrBlockLocale) {\n selectData = selectData.filter(({ locale }) => locale === withinArrayOrBlockLocale)\n }\n result[field.name] = selectData.map(({ value }) => value)\n }\n }\n return result\n }\n\n if (field.localized && Array.isArray(table._locales)) {\n if (!table._locales.length && adapter.payload.config.localization) {\n adapter.payload.config.localization.localeCodes.forEach((_locale) =>\n (table._locales as unknown[]).push({ _locale }),\n )\n }\n\n table._locales.forEach((localeRow) => {\n valuesToTransform.push({\n ref: localizedFieldData,\n table: {\n ...table,\n ...localeRow,\n },\n })\n })\n } else {\n valuesToTransform.push({ ref: result, table })\n }\n\n valuesToTransform.forEach(({ ref, table }) => {\n const fieldData = table[`${fieldPrefix || ''}${field.name}`]\n const locale = table?._locale\n let val = fieldData\n\n switch (field.type) {\n case 'date': {\n if (typeof fieldData === 'string') {\n val = new Date(fieldData).toISOString()\n }\n\n break\n }\n\n case 'group':\n case 'tab': {\n const groupFieldPrefix = `${fieldPrefix || ''}${field.name}_`\n const groupData = {}\n const locale = table._locale as string\n const refKey = field.localized && locale ? locale : field.name\n\n if (field.localized && locale) {\n delete table._locale\n }\n ref[refKey] = traverseFields<Record<string, unknown>>({\n adapter,\n blocks,\n config,\n dataRef: groupData as Record<string, unknown>,\n deletions,\n fieldPrefix: groupFieldPrefix,\n fields: field.flattenedFields,\n numbers,\n path: `${sanitizedPath}${field.name}`,\n relationships,\n table,\n texts,\n withinArrayOrBlockLocale: locale || withinArrayOrBlockLocale,\n })\n\n if ('_order' in ref) {\n delete ref._order\n }\n\n return\n }\n\n case 'number': {\n if (typeof fieldData === 'string') {\n val = Number.parseFloat(fieldData)\n }\n\n break\n }\n\n case 'point': {\n if (typeof fieldData === 'string') {\n val = JSON.parse(fieldData)\n }\n\n break\n }\n\n case 'relationship':\n case 'upload': {\n if (\n val &&\n typeof field.relationTo === 'string' &&\n adapter.payload.collections[field.relationTo].customIDType === 'number'\n ) {\n val = Number(val)\n }\n\n break\n }\n case 'text': {\n if (typeof fieldData === 'string') {\n val = String(fieldData)\n }\n\n break\n }\n\n default: {\n break\n }\n }\n if (typeof locale === 'string') {\n ref[locale] = val\n } else {\n result[field.name] = val\n }\n })\n\n if (Object.keys(localizedFieldData).length > 0) {\n result[field.name] = localizedFieldData\n }\n\n return result\n\n return result\n }, dataRef)\n\n if (Array.isArray(table._locales)) {\n deletions.push(() => delete table._locales)\n }\n\n return formatted as T\n}\n"],"names":["fieldIsVirtual","transformHasManyNumber","transformHasManyText","transformRelationship","traverseFields","adapter","blocks","config","dataRef","deletions","fieldPrefix","fields","joinQuery","numbers","path","relationships","table","texts","withinArrayOrBlockLocale","sanitizedPath","formatted","reduce","result","field","fieldName","name","fieldData","localizedFieldData","valuesToTransform","push","type","Array","isArray","localized","arrayResult","row","_locale","locale","data","_uuid","id","rowResult","flattenedFields","_order","acc","i","blockFieldPath","blocksByPath","forEach","Object","entries","localizedBlocks","map","block","find","slug","blockType","blockResult","localization","localeCodes","localeIndex","length","_index","relationTo","hasMany","locales","_locales","localeRow","ref","relationPathMatch","defaultLocale","relationsByLocale","relations","limit","defaultLimit","replaceAll","JSON","parse","fieldResult","payload","joinResult","docs","code","hasNextPage","keys","slice","textPathMatch","textsByLocale","textRows","numberPathMatch","numbersByLocale","numberRows","selectResult","value","selectData","filter","val","Date","toISOString","groupFieldPrefix","groupData","refKey","Number","parseFloat","collections","customIDType","String"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/transform/read/traverseFields.ts"],"sourcesContent":["import type { FlattenedBlock, FlattenedField, JoinQuery, SanitizedConfig } from 'payload'\n\nimport { fieldIsVirtual } from 'payload/shared'\n\nimport type { DrizzleAdapter } from '../../types.js'\nimport type { BlocksMap } from '../../utilities/createBlocksMap.js'\n\nimport { transformHasManyNumber } from './hasManyNumber.js'\nimport { transformHasManyText } from './hasManyText.js'\nimport { transformRelationship } from './relationship.js'\n\ntype TraverseFieldsArgs = {\n /**\n * The DB adapter\n */\n adapter: DrizzleAdapter\n /**\n * Pre-formatted blocks map\n */\n blocks: BlocksMap\n /**\n * The full Payload config\n */\n config: SanitizedConfig\n /**\n * The data reference to be mutated within this recursive function\n */\n dataRef: Record<string, unknown>\n /**\n * Data that needs to be removed from the result after all fields have populated\n */\n deletions: (() => void)[]\n /**\n * Column prefix can be built up by group and named tab fields\n */\n fieldPrefix: string\n /**\n * An array of Payload fields to traverse\n */\n fields: FlattenedField[]\n /**\n *\n */\n joinQuery?: JoinQuery\n /**\n * All hasMany number fields, as returned by Drizzle, keyed on an object by field path\n */\n numbers: Record<string, Record<string, unknown>[]>\n /**\n * The current field path (in dot notation), used to merge in relationships\n */\n path: string\n /**\n * All related documents, as returned by Drizzle, keyed on an object by field path\n */\n relationships: Record<string, Record<string, unknown>[]>\n /**\n * Data structure representing the nearest table from db\n */\n table: Record<string, unknown>\n /**\n * All hasMany text fields, as returned by Drizzle, keyed on an object by field path\n */\n texts: Record<string, Record<string, unknown>[]>\n /**\n * Set to a locale if this group of fields is within a localized array or block.\n */\n withinArrayOrBlockLocale?: string\n}\n\n// Traverse fields recursively, transforming data\n// for each field type into required Payload shape\nexport const traverseFields = <T extends Record<string, unknown>>({\n adapter,\n blocks,\n config,\n dataRef,\n deletions,\n fieldPrefix,\n fields,\n joinQuery,\n numbers,\n path,\n relationships,\n table,\n texts,\n withinArrayOrBlockLocale,\n}: TraverseFieldsArgs): T => {\n const sanitizedPath = path ? `${path}.` : path\n\n const formatted = fields.reduce((result, field) => {\n if (fieldIsVirtual(field)) {\n return result\n }\n\n const fieldName = `${fieldPrefix || ''}${field.name}`\n let fieldData = table[fieldName]\n const localizedFieldData = {}\n const valuesToTransform: {\n ref: Record<string, unknown>\n table: Record<string, unknown>\n }[] = []\n\n if (fieldPrefix) {\n deletions.push(() => delete table[fieldName])\n }\n\n if (field.type === 'array') {\n if (Array.isArray(fieldData)) {\n if (field.localized) {\n result[field.name] = fieldData.reduce((arrayResult, row) => {\n if (typeof row._locale === 'string') {\n if (!arrayResult[row._locale]) {\n arrayResult[row._locale] = []\n }\n const locale = row._locale\n const data = {}\n delete row._locale\n if (row._uuid) {\n row.id = row._uuid\n delete row._uuid\n }\n\n const rowResult = traverseFields<T>({\n adapter,\n blocks,\n config,\n dataRef: data,\n deletions,\n fieldPrefix: '',\n fields: field.flattenedFields,\n numbers,\n path: `${sanitizedPath}${field.name}.${row._order - 1}`,\n relationships,\n table: row,\n texts,\n withinArrayOrBlockLocale: locale,\n })\n\n if ('_order' in rowResult) {\n delete rowResult._order\n }\n\n arrayResult[locale].push(rowResult)\n }\n\n return arrayResult\n }, {})\n } else {\n result[field.name] = fieldData.reduce((acc, row, i) => {\n if (row._uuid) {\n row.id = row._uuid\n delete row._uuid\n }\n\n if ('_order' in row) {\n delete row._order\n }\n\n if (\n !withinArrayOrBlockLocale ||\n (withinArrayOrBlockLocale && withinArrayOrBlockLocale === row._locale)\n ) {\n if (row._locale) {\n delete row._locale\n }\n\n acc.push(\n traverseFields<T>({\n adapter,\n blocks,\n config,\n dataRef: row,\n deletions,\n fieldPrefix: '',\n fields: field.flattenedFields,\n numbers,\n path: `${sanitizedPath}${field.name}.${i}`,\n relationships,\n table: row,\n texts,\n withinArrayOrBlockLocale,\n }),\n )\n }\n\n return acc\n }, [])\n }\n }\n\n return result\n }\n\n if (field.type === 'blocks') {\n const blockFieldPath = `${sanitizedPath}${field.name}`\n const blocksByPath = blocks[blockFieldPath]\n\n if (Array.isArray(blocksByPath)) {\n if (field.localized) {\n result[field.name] = {}\n\n blocksByPath.forEach((row) => {\n if (row._uuid) {\n row.id = row._uuid\n delete row._uuid\n }\n if (typeof row._locale === 'string') {\n if (!result[field.name][row._locale]) {\n result[field.name][row._locale] = []\n }\n result[field.name][row._locale].push(row)\n delete row._locale\n }\n })\n\n Object.entries(result[field.name]).forEach(([locale, localizedBlocks]) => {\n result[field.name][locale] = localizedBlocks.map((row) => {\n const block =\n adapter.payload.blocks[row.blockType] ??\n ((field.blockReferences ?? field.blocks).find(\n (block) => typeof block !== 'string' && block.slug === row.blockType,\n ) as FlattenedBlock | undefined)\n\n if (block) {\n const blockResult = traverseFields<T>({\n adapter,\n blocks,\n config,\n dataRef: row,\n deletions,\n fieldPrefix: '',\n fields: block.flattenedFields,\n numbers,\n path: `${blockFieldPath}.${row._order - 1}`,\n relationships,\n table: row,\n texts,\n withinArrayOrBlockLocale: locale,\n })\n\n delete blockResult._order\n return blockResult\n }\n\n return {}\n })\n })\n } else {\n // Add locale-specific index to have a proper blockFieldPath for current locale\n // because blocks can be in the same array for different locales!\n if (withinArrayOrBlockLocale && config.localization) {\n for (const locale of config.localization.localeCodes) {\n let localeIndex = 0\n\n for (let i = 0; i < blocksByPath.length; i++) {\n const row = blocksByPath[i]\n if (row._locale === locale) {\n row._index = localeIndex\n localeIndex++\n }\n }\n }\n }\n\n result[field.name] = blocksByPath.reduce((acc, row, i) => {\n delete row._order\n if (row._uuid) {\n row.id = row._uuid\n delete row._uuid\n }\n\n if (typeof row.blockType !== 'string') {\n return acc\n }\n\n const block =\n adapter.payload.blocks[row.blockType] ??\n ((field.blockReferences ?? field.blocks).find(\n (block) => typeof block !== 'string' && block.slug === row.blockType,\n ) as FlattenedBlock | undefined)\n\n if (block) {\n if (\n !withinArrayOrBlockLocale ||\n (withinArrayOrBlockLocale && withinArrayOrBlockLocale === row._locale)\n ) {\n if (row._locale) {\n delete row._locale\n }\n if (typeof row._index === 'number') {\n i = row._index\n delete row._index\n }\n\n acc.push(\n traverseFields<T>({\n adapter,\n blocks,\n config,\n dataRef: row,\n deletions,\n fieldPrefix: '',\n fields: block.flattenedFields,\n numbers,\n path: `${blockFieldPath}.${i}`,\n relationships,\n table: row,\n texts,\n withinArrayOrBlockLocale,\n }),\n )\n\n return acc\n }\n } else {\n acc.push({})\n }\n\n return acc\n }, [])\n }\n }\n\n return result\n }\n\n if (field.type === 'relationship' || field.type === 'upload') {\n if (typeof field.relationTo === 'string' && !('hasMany' in field && field.hasMany)) {\n if (\n field.localized &&\n config.localization &&\n config.localization.locales &&\n Array.isArray(table?._locales)\n ) {\n table._locales.forEach((localeRow) => {\n result[field.name] = { [localeRow._locale]: localeRow[fieldName] }\n })\n } else {\n valuesToTransform.push({ ref: result, table })\n }\n } else {\n const relationPathMatch = relationships[`${sanitizedPath}${field.name}`]\n\n if (!relationPathMatch) {\n if ('hasMany' in field && field.hasMany) {\n if (field.localized && config.localization && config.localization.locales) {\n result[field.name] = {\n [config.localization.defaultLocale]: [],\n }\n } else {\n result[field.name] = []\n }\n }\n\n return result\n }\n\n if (field.localized) {\n result[field.name] = {}\n const relationsByLocale: Record<string, Record<string, unknown>[]> = {}\n\n relationPathMatch.forEach((row) => {\n if (typeof row.locale === 'string') {\n if (!relationsByLocale[row.locale]) {\n relationsByLocale[row.locale] = []\n }\n relationsByLocale[row.locale].push(row)\n }\n })\n\n Object.entries(relationsByLocale).forEach(([locale, relations]) => {\n transformRelationship({\n field,\n locale,\n ref: result,\n relations,\n })\n })\n } else {\n transformRelationship({\n field,\n ref: result,\n relations: relationPathMatch,\n withinArrayOrBlockLocale,\n })\n }\n return result\n }\n }\n\n if (field.type === 'join') {\n const { limit = field.defaultLimit ?? 10 } =\n joinQuery?.[`${fieldPrefix.replaceAll('_', '.')}${field.name}`] || {}\n\n // raw hasMany results from SQLite\n if (typeof fieldData === 'string') {\n fieldData = JSON.parse(fieldData)\n }\n\n let fieldResult:\n | { docs: unknown[]; hasNextPage: boolean }\n | Record<string, { docs: unknown[]; hasNextPage: boolean }>\n if (Array.isArray(fieldData)) {\n if (field.localized && adapter.payload.config.localization) {\n fieldResult = fieldData.reduce(\n (joinResult, row) => {\n if (typeof row.locale === 'string') {\n joinResult[row.locale].docs.push(row.id)\n }\n\n return joinResult\n },\n\n // initialize with defaults so empty won't be undefined\n adapter.payload.config.localization.localeCodes.reduce((acc, code) => {\n acc[code] = {\n docs: [],\n hasNextPage: false,\n }\n return acc\n }, {}),\n )\n Object.keys(fieldResult).forEach((locale) => {\n fieldResult[locale].hasNextPage = fieldResult[locale].docs.length > limit\n fieldResult[locale].docs = fieldResult[locale].docs.slice(0, limit)\n })\n } else {\n const hasNextPage = limit !== 0 && fieldData.length > limit\n fieldResult = {\n docs: (hasNextPage ? fieldData.slice(0, limit) : fieldData).map(({ id }) => ({\n id,\n })),\n hasNextPage,\n }\n }\n }\n\n result[field.name] = fieldResult\n return result\n }\n\n if (field.type === 'text' && field?.hasMany) {\n const textPathMatch = texts[`${sanitizedPath}${field.name}`]\n if (!textPathMatch) {\n return result\n }\n\n if (field.localized) {\n result[field.name] = {}\n const textsByLocale: Record<string, Record<string, unknown>[]> = {}\n\n textPathMatch.forEach((row) => {\n if (typeof row.locale === 'string') {\n if (!textsByLocale[row.locale]) {\n textsByLocale[row.locale] = []\n }\n textsByLocale[row.locale].push(row)\n }\n })\n\n Object.entries(textsByLocale).forEach(([locale, texts]) => {\n transformHasManyText({\n field,\n locale,\n ref: result,\n textRows: texts,\n })\n })\n } else {\n transformHasManyText({\n field,\n ref: result,\n textRows: textPathMatch,\n withinArrayOrBlockLocale,\n })\n }\n\n return result\n }\n\n if (field.type === 'number' && field.hasMany) {\n const numberPathMatch = numbers[`${sanitizedPath}${field.name}`]\n if (!numberPathMatch) {\n return result\n }\n\n if (field.localized) {\n result[field.name] = {}\n const numbersByLocale: Record<string, Record<string, unknown>[]> = {}\n\n numberPathMatch.forEach((row) => {\n if (typeof row.locale === 'string') {\n if (!numbersByLocale[row.locale]) {\n numbersByLocale[row.locale] = []\n }\n numbersByLocale[row.locale].push(row)\n }\n })\n\n Object.entries(numbersByLocale).forEach(([locale, numbers]) => {\n transformHasManyNumber({\n field,\n locale,\n numberRows: numbers,\n ref: result,\n })\n })\n } else {\n transformHasManyNumber({\n field,\n numberRows: numberPathMatch,\n ref: result,\n withinArrayOrBlockLocale,\n })\n }\n\n return result\n }\n\n if (field.type === 'select' && field.hasMany) {\n if (Array.isArray(fieldData)) {\n if (field.localized) {\n result[field.name] = fieldData.reduce((selectResult, row) => {\n if (typeof row.locale === 'string') {\n if (!selectResult[row.locale]) {\n selectResult[row.locale] = []\n }\n selectResult[row.locale].push(row.value)\n }\n\n return selectResult\n }, {})\n } else {\n let selectData = fieldData\n if (withinArrayOrBlockLocale) {\n selectData = selectData.filter(({ locale }) => locale === withinArrayOrBlockLocale)\n }\n result[field.name] = selectData.map(({ value }) => value)\n }\n }\n return result\n }\n\n if (field.localized && Array.isArray(table._locales)) {\n if (!table._locales.length && adapter.payload.config.localization) {\n adapter.payload.config.localization.localeCodes.forEach((_locale) =>\n (table._locales as unknown[]).push({ _locale }),\n )\n }\n\n table._locales.forEach((localeRow) => {\n valuesToTransform.push({\n ref: localizedFieldData,\n table: {\n ...table,\n ...localeRow,\n },\n })\n })\n } else {\n valuesToTransform.push({ ref: result, table })\n }\n\n valuesToTransform.forEach(({ ref, table }) => {\n const fieldData = table[`${fieldPrefix || ''}${field.name}`]\n const locale = table?._locale\n let val = fieldData\n\n switch (field.type) {\n case 'date': {\n if (typeof fieldData === 'string') {\n val = new Date(fieldData).toISOString()\n }\n\n break\n }\n\n case 'group':\n case 'tab': {\n const groupFieldPrefix = `${fieldPrefix || ''}${field.name}_`\n const groupData = {}\n const locale = table._locale as string\n const refKey = field.localized && locale ? locale : field.name\n\n if (field.localized && locale) {\n delete table._locale\n }\n ref[refKey] = traverseFields<Record<string, unknown>>({\n adapter,\n blocks,\n config,\n dataRef: groupData as Record<string, unknown>,\n deletions,\n fieldPrefix: groupFieldPrefix,\n fields: field.flattenedFields,\n numbers,\n path: `${sanitizedPath}${field.name}`,\n relationships,\n table,\n texts,\n withinArrayOrBlockLocale: locale || withinArrayOrBlockLocale,\n })\n\n if ('_order' in ref) {\n delete ref._order\n }\n\n return\n }\n\n case 'number': {\n if (typeof fieldData === 'string') {\n val = Number.parseFloat(fieldData)\n }\n\n break\n }\n\n case 'point': {\n if (typeof fieldData === 'string') {\n val = JSON.parse(fieldData)\n }\n\n break\n }\n\n case 'relationship':\n case 'upload': {\n if (\n val &&\n typeof field.relationTo === 'string' &&\n adapter.payload.collections[field.relationTo].customIDType === 'number'\n ) {\n val = Number(val)\n }\n\n break\n }\n case 'text': {\n if (typeof fieldData === 'string') {\n val = String(fieldData)\n }\n\n break\n }\n\n default: {\n break\n }\n }\n if (typeof locale === 'string') {\n ref[locale] = val\n } else {\n result[field.name] = val\n }\n })\n\n if (Object.keys(localizedFieldData).length > 0) {\n result[field.name] = localizedFieldData\n }\n\n return result\n\n return result\n }, dataRef)\n\n if (Array.isArray(table._locales)) {\n deletions.push(() => delete table._locales)\n }\n\n return formatted as T\n}\n"],"names":["fieldIsVirtual","transformHasManyNumber","transformHasManyText","transformRelationship","traverseFields","adapter","blocks","config","dataRef","deletions","fieldPrefix","fields","joinQuery","numbers","path","relationships","table","texts","withinArrayOrBlockLocale","sanitizedPath","formatted","reduce","result","field","fieldName","name","fieldData","localizedFieldData","valuesToTransform","push","type","Array","isArray","localized","arrayResult","row","_locale","locale","data","_uuid","id","rowResult","flattenedFields","_order","acc","i","blockFieldPath","blocksByPath","forEach","Object","entries","localizedBlocks","map","block","payload","blockType","blockReferences","find","slug","blockResult","localization","localeCodes","localeIndex","length","_index","relationTo","hasMany","locales","_locales","localeRow","ref","relationPathMatch","defaultLocale","relationsByLocale","relations","limit","defaultLimit","replaceAll","JSON","parse","fieldResult","joinResult","docs","code","hasNextPage","keys","slice","textPathMatch","textsByLocale","textRows","numberPathMatch","numbersByLocale","numberRows","selectResult","value","selectData","filter","val","Date","toISOString","groupFieldPrefix","groupData","refKey","Number","parseFloat","collections","customIDType","String"],"mappings":"AAEA,SAASA,cAAc,QAAQ,iBAAgB;AAK/C,SAASC,sBAAsB,QAAQ,qBAAoB;AAC3D,SAASC,oBAAoB,QAAQ,mBAAkB;AACvD,SAASC,qBAAqB,QAAQ,oBAAmB;AA6DzD,iDAAiD;AACjD,kDAAkD;AAClD,OAAO,MAAMC,iBAAiB,CAAoC,EAChEC,OAAO,EACPC,MAAM,EACNC,MAAM,EACNC,OAAO,EACPC,SAAS,EACTC,WAAW,EACXC,MAAM,EACNC,SAAS,EACTC,OAAO,EACPC,IAAI,EACJC,aAAa,EACbC,KAAK,EACLC,KAAK,EACLC,wBAAwB,EACL;IACnB,MAAMC,gBAAgBL,OAAO,GAAGA,KAAK,CAAC,CAAC,GAAGA;IAE1C,MAAMM,YAAYT,OAAOU,MAAM,CAAC,CAACC,QAAQC;QACvC,IAAIvB,eAAeuB,QAAQ;YACzB,OAAOD;QACT;QAEA,MAAME,YAAY,GAAGd,eAAe,KAAKa,MAAME,IAAI,EAAE;QACrD,IAAIC,YAAYV,KAAK,CAACQ,UAAU;QAChC,MAAMG,qBAAqB,CAAC;QAC5B,MAAMC,oBAGA,EAAE;QAER,IAAIlB,aAAa;YACfD,UAAUoB,IAAI,CAAC,IAAM,OAAOb,KAAK,CAACQ,UAAU;QAC9C;QAEA,IAAID,MAAMO,IAAI,KAAK,SAAS;YAC1B,IAAIC,MAAMC,OAAO,CAACN,YAAY;gBAC5B,IAAIH,MAAMU,SAAS,EAAE;oBACnBX,MAAM,CAACC,MAAME,IAAI,CAAC,GAAGC,UAAUL,MAAM,CAAC,CAACa,aAAaC;wBAClD,IAAI,OAAOA,IAAIC,OAAO,KAAK,UAAU;4BACnC,IAAI,CAACF,WAAW,CAACC,IAAIC,OAAO,CAAC,EAAE;gCAC7BF,WAAW,CAACC,IAAIC,OAAO,CAAC,GAAG,EAAE;4BAC/B;4BACA,MAAMC,SAASF,IAAIC,OAAO;4BAC1B,MAAME,OAAO,CAAC;4BACd,OAAOH,IAAIC,OAAO;4BAClB,IAAID,IAAII,KAAK,EAAE;gCACbJ,IAAIK,EAAE,GAAGL,IAAII,KAAK;gCAClB,OAAOJ,IAAII,KAAK;4BAClB;4BAEA,MAAME,YAAYrC,eAAkB;gCAClCC;gCACAC;gCACAC;gCACAC,SAAS8B;gCACT7B;gCACAC,aAAa;gCACbC,QAAQY,MAAMmB,eAAe;gCAC7B7B;gCACAC,MAAM,GAAGK,gBAAgBI,MAAME,IAAI,CAAC,CAAC,EAAEU,IAAIQ,MAAM,GAAG,GAAG;gCACvD5B;gCACAC,OAAOmB;gCACPlB;gCACAC,0BAA0BmB;4BAC5B;4BAEA,IAAI,YAAYI,WAAW;gCACzB,OAAOA,UAAUE,MAAM;4BACzB;4BAEAT,WAAW,CAACG,OAAO,CAACR,IAAI,CAACY;wBAC3B;wBAEA,OAAOP;oBACT,GAAG,CAAC;gBACN,OAAO;oBACLZ,MAAM,CAACC,MAAME,IAAI,CAAC,GAAGC,UAAUL,MAAM,CAAC,CAACuB,KAAKT,KAAKU;wBAC/C,IAAIV,IAAII,KAAK,EAAE;4BACbJ,IAAIK,EAAE,GAAGL,IAAII,KAAK;4BAClB,OAAOJ,IAAII,KAAK;wBAClB;wBAEA,IAAI,YAAYJ,KAAK;4BACnB,OAAOA,IAAIQ,MAAM;wBACnB;wBAEA,IACE,CAACzB,4BACAA,4BAA4BA,6BAA6BiB,IAAIC,OAAO,EACrE;4BACA,IAAID,IAAIC,OAAO,EAAE;gCACf,OAAOD,IAAIC,OAAO;4BACpB;4BAEAQ,IAAIf,IAAI,CACNzB,eAAkB;gCAChBC;gCACAC;gCACAC;gCACAC,SAAS2B;gCACT1B;gCACAC,aAAa;gCACbC,QAAQY,MAAMmB,eAAe;gCAC7B7B;gCACAC,MAAM,GAAGK,gBAAgBI,MAAME,IAAI,CAAC,CAAC,EAAEoB,GAAG;gCAC1C9B;gCACAC,OAAOmB;gCACPlB;gCACAC;4BACF;wBAEJ;wBAEA,OAAO0B;oBACT,GAAG,EAAE;gBACP;YACF;YAEA,OAAOtB;QACT;QAEA,IAAIC,MAAMO,IAAI,KAAK,UAAU;YAC3B,MAAMgB,iBAAiB,GAAG3B,gBAAgBI,MAAME,IAAI,EAAE;YACtD,MAAMsB,eAAezC,MAAM,CAACwC,eAAe;YAE3C,IAAIf,MAAMC,OAAO,CAACe,eAAe;gBAC/B,IAAIxB,MAAMU,SAAS,EAAE;oBACnBX,MAAM,CAACC,MAAME,IAAI,CAAC,GAAG,CAAC;oBAEtBsB,aAAaC,OAAO,CAAC,CAACb;wBACpB,IAAIA,IAAII,KAAK,EAAE;4BACbJ,IAAIK,EAAE,GAAGL,IAAII,KAAK;4BAClB,OAAOJ,IAAII,KAAK;wBAClB;wBACA,IAAI,OAAOJ,IAAIC,OAAO,KAAK,UAAU;4BACnC,IAAI,CAACd,MAAM,CAACC,MAAME,IAAI,CAAC,CAACU,IAAIC,OAAO,CAAC,EAAE;gCACpCd,MAAM,CAACC,MAAME,IAAI,CAAC,CAACU,IAAIC,OAAO,CAAC,GAAG,EAAE;4BACtC;4BACAd,MAAM,CAACC,MAAME,IAAI,CAAC,CAACU,IAAIC,OAAO,CAAC,CAACP,IAAI,CAACM;4BACrC,OAAOA,IAAIC,OAAO;wBACpB;oBACF;oBAEAa,OAAOC,OAAO,CAAC5B,MAAM,CAACC,MAAME,IAAI,CAAC,EAAEuB,OAAO,CAAC,CAAC,CAACX,QAAQc,gBAAgB;wBACnE7B,MAAM,CAACC,MAAME,IAAI,CAAC,CAACY,OAAO,GAAGc,gBAAgBC,GAAG,CAAC,CAACjB;4BAChD,MAAMkB,QACJhD,QAAQiD,OAAO,CAAChD,MAAM,CAAC6B,IAAIoB,SAAS,CAAC,IACpC,AAAChC,CAAAA,MAAMiC,eAAe,IAAIjC,MAAMjB,MAAM,AAAD,EAAGmD,IAAI,CAC3C,CAACJ,QAAU,OAAOA,UAAU,YAAYA,MAAMK,IAAI,KAAKvB,IAAIoB,SAAS;4BAGxE,IAAIF,OAAO;gCACT,MAAMM,cAAcvD,eAAkB;oCACpCC;oCACAC;oCACAC;oCACAC,SAAS2B;oCACT1B;oCACAC,aAAa;oCACbC,QAAQ0C,MAAMX,eAAe;oCAC7B7B;oCACAC,MAAM,GAAGgC,eAAe,CAAC,EAAEX,IAAIQ,MAAM,GAAG,GAAG;oCAC3C5B;oCACAC,OAAOmB;oCACPlB;oCACAC,0BAA0BmB;gCAC5B;gCAEA,OAAOsB,YAAYhB,MAAM;gCACzB,OAAOgB;4BACT;4BAEA,OAAO,CAAC;wBACV;oBACF;gBACF,OAAO;oBACL,+EAA+E;oBAC/E,iEAAiE;oBACjE,IAAIzC,4BAA4BX,OAAOqD,YAAY,EAAE;wBACnD,KAAK,MAAMvB,UAAU9B,OAAOqD,YAAY,CAACC,WAAW,CAAE;4BACpD,IAAIC,cAAc;4BAElB,IAAK,IAAIjB,IAAI,GAAGA,IAAIE,aAAagB,MAAM,EAAElB,IAAK;gCAC5C,MAAMV,MAAMY,YAAY,CAACF,EAAE;gCAC3B,IAAIV,IAAIC,OAAO,KAAKC,QAAQ;oCAC1BF,IAAI6B,MAAM,GAAGF;oCACbA;gCACF;4BACF;wBACF;oBACF;oBAEAxC,MAAM,CAACC,MAAME,IAAI,CAAC,GAAGsB,aAAa1B,MAAM,CAAC,CAACuB,KAAKT,KAAKU;wBAClD,OAAOV,IAAIQ,MAAM;wBACjB,IAAIR,IAAII,KAAK,EAAE;4BACbJ,IAAIK,EAAE,GAAGL,IAAII,KAAK;4BAClB,OAAOJ,IAAII,KAAK;wBAClB;wBAEA,IAAI,OAAOJ,IAAIoB,SAAS,KAAK,UAAU;4BACrC,OAAOX;wBACT;wBAEA,MAAMS,QACJhD,QAAQiD,OAAO,CAAChD,MAAM,CAAC6B,IAAIoB,SAAS,CAAC,IACpC,AAAChC,CAAAA,MAAMiC,eAAe,IAAIjC,MAAMjB,MAAM,AAAD,EAAGmD,IAAI,CAC3C,CAACJ,QAAU,OAAOA,UAAU,YAAYA,MAAMK,IAAI,KAAKvB,IAAIoB,SAAS;wBAGxE,IAAIF,OAAO;4BACT,IACE,CAACnC,4BACAA,4BAA4BA,6BAA6BiB,IAAIC,OAAO,EACrE;gCACA,IAAID,IAAIC,OAAO,EAAE;oCACf,OAAOD,IAAIC,OAAO;gCACpB;gCACA,IAAI,OAAOD,IAAI6B,MAAM,KAAK,UAAU;oCAClCnB,IAAIV,IAAI6B,MAAM;oCACd,OAAO7B,IAAI6B,MAAM;gCACnB;gCAEApB,IAAIf,IAAI,CACNzB,eAAkB;oCAChBC;oCACAC;oCACAC;oCACAC,SAAS2B;oCACT1B;oCACAC,aAAa;oCACbC,QAAQ0C,MAAMX,eAAe;oCAC7B7B;oCACAC,MAAM,GAAGgC,eAAe,CAAC,EAAED,GAAG;oCAC9B9B;oCACAC,OAAOmB;oCACPlB;oCACAC;gCACF;gCAGF,OAAO0B;4BACT;wBACF,OAAO;4BACLA,IAAIf,IAAI,CAAC,CAAC;wBACZ;wBAEA,OAAOe;oBACT,GAAG,EAAE;gBACP;YACF;YAEA,OAAOtB;QACT;QAEA,IAAIC,MAAMO,IAAI,KAAK,kBAAkBP,MAAMO,IAAI,KAAK,UAAU;YAC5D,IAAI,OAAOP,MAAM0C,UAAU,KAAK,YAAY,CAAE,CAAA,aAAa1C,SAASA,MAAM2C,OAAO,AAAD,GAAI;gBAClF,IACE3C,MAAMU,SAAS,IACf1B,OAAOqD,YAAY,IACnBrD,OAAOqD,YAAY,CAACO,OAAO,IAC3BpC,MAAMC,OAAO,CAAChB,OAAOoD,WACrB;oBACApD,MAAMoD,QAAQ,CAACpB,OAAO,CAAC,CAACqB;wBACtB/C,MAAM,CAACC,MAAME,IAAI,CAAC,GAAG;4BAAE,CAAC4C,UAAUjC,OAAO,CAAC,EAAEiC,SAAS,CAAC7C,UAAU;wBAAC;oBACnE;gBACF,OAAO;oBACLI,kBAAkBC,IAAI,CAAC;wBAAEyC,KAAKhD;wBAAQN;oBAAM;gBAC9C;YACF,OAAO;gBACL,MAAMuD,oBAAoBxD,aAAa,CAAC,GAAGI,gBAAgBI,MAAME,IAAI,EAAE,CAAC;gBAExE,IAAI,CAAC8C,mBAAmB;oBACtB,IAAI,aAAahD,SAASA,MAAM2C,OAAO,EAAE;wBACvC,IAAI3C,MAAMU,SAAS,IAAI1B,OAAOqD,YAAY,IAAIrD,OAAOqD,YAAY,CAACO,OAAO,EAAE;4BACzE7C,MAAM,CAACC,MAAME,IAAI,CAAC,GAAG;gCACnB,CAAClB,OAAOqD,YAAY,CAACY,aAAa,CAAC,EAAE,EAAE;4BACzC;wBACF,OAAO;4BACLlD,MAAM,CAACC,MAAME,IAAI,CAAC,GAAG,EAAE;wBACzB;oBACF;oBAEA,OAAOH;gBACT;gBAEA,IAAIC,MAAMU,SAAS,EAAE;oBACnBX,MAAM,CAACC,MAAME,IAAI,CAAC,GAAG,CAAC;oBACtB,MAAMgD,oBAA+D,CAAC;oBAEtEF,kBAAkBvB,OAAO,CAAC,CAACb;wBACzB,IAAI,OAAOA,IAAIE,MAAM,KAAK,UAAU;4BAClC,IAAI,CAACoC,iBAAiB,CAACtC,IAAIE,MAAM,CAAC,EAAE;gCAClCoC,iBAAiB,CAACtC,IAAIE,MAAM,CAAC,GAAG,EAAE;4BACpC;4BACAoC,iBAAiB,CAACtC,IAAIE,MAAM,CAAC,CAACR,IAAI,CAACM;wBACrC;oBACF;oBAEAc,OAAOC,OAAO,CAACuB,mBAAmBzB,OAAO,CAAC,CAAC,CAACX,QAAQqC,UAAU;wBAC5DvE,sBAAsB;4BACpBoB;4BACAc;4BACAiC,KAAKhD;4BACLoD;wBACF;oBACF;gBACF,OAAO;oBACLvE,sBAAsB;wBACpBoB;wBACA+C,KAAKhD;wBACLoD,WAAWH;wBACXrD;oBACF;gBACF;gBACA,OAAOI;YACT;QACF;QAEA,IAAIC,MAAMO,IAAI,KAAK,QAAQ;YACzB,MAAM,EAAE6C,QAAQpD,MAAMqD,YAAY,IAAI,EAAE,EAAE,GACxChE,WAAW,CAAC,GAAGF,YAAYmE,UAAU,CAAC,KAAK,OAAOtD,MAAME,IAAI,EAAE,CAAC,IAAI,CAAC;YAEtE,kCAAkC;YAClC,IAAI,OAAOC,cAAc,UAAU;gBACjCA,YAAYoD,KAAKC,KAAK,CAACrD;YACzB;YAEA,IAAIsD;YAGJ,IAAIjD,MAAMC,OAAO,CAACN,YAAY;gBAC5B,IAAIH,MAAMU,SAAS,IAAI5B,QAAQiD,OAAO,CAAC/C,MAAM,CAACqD,YAAY,EAAE;oBAC1DoB,cAActD,UAAUL,MAAM,CAC5B,CAAC4D,YAAY9C;wBACX,IAAI,OAAOA,IAAIE,MAAM,KAAK,UAAU;4BAClC4C,UAAU,CAAC9C,IAAIE,MAAM,CAAC,CAAC6C,IAAI,CAACrD,IAAI,CAACM,IAAIK,EAAE;wBACzC;wBAEA,OAAOyC;oBACT,GAEA,uDAAuD;oBACvD5E,QAAQiD,OAAO,CAAC/C,MAAM,CAACqD,YAAY,CAACC,WAAW,CAACxC,MAAM,CAAC,CAACuB,KAAKuC;wBAC3DvC,GAAG,CAACuC,KAAK,GAAG;4BACVD,MAAM,EAAE;4BACRE,aAAa;wBACf;wBACA,OAAOxC;oBACT,GAAG,CAAC;oBAENK,OAAOoC,IAAI,CAACL,aAAahC,OAAO,CAAC,CAACX;wBAChC2C,WAAW,CAAC3C,OAAO,CAAC+C,WAAW,GAAGJ,WAAW,CAAC3C,OAAO,CAAC6C,IAAI,CAACnB,MAAM,GAAGY;wBACpEK,WAAW,CAAC3C,OAAO,CAAC6C,IAAI,GAAGF,WAAW,CAAC3C,OAAO,CAAC6C,IAAI,CAACI,KAAK,CAAC,GAAGX;oBAC/D;gBACF,OAAO;oBACL,MAAMS,cAAcT,UAAU,KAAKjD,UAAUqC,MAAM,GAAGY;oBACtDK,cAAc;wBACZE,MAAM,AAACE,CAAAA,cAAc1D,UAAU4D,KAAK,CAAC,GAAGX,SAASjD,SAAQ,EAAG0B,GAAG,CAAC,CAAC,EAAEZ,EAAE,EAAE,GAAM,CAAA;gCAC3EA;4BACF,CAAA;wBACA4C;oBACF;gBACF;YACF;YAEA9D,MAAM,CAACC,MAAME,IAAI,CAAC,GAAGuD;YACrB,OAAO1D;QACT;QAEA,IAAIC,MAAMO,IAAI,KAAK,UAAUP,OAAO2C,SAAS;YAC3C,MAAMqB,gBAAgBtE,KAAK,CAAC,GAAGE,gBAAgBI,MAAME,IAAI,EAAE,CAAC;YAC5D,IAAI,CAAC8D,eAAe;gBAClB,OAAOjE;YACT;YAEA,IAAIC,MAAMU,SAAS,EAAE;gBACnBX,MAAM,CAACC,MAAME,IAAI,CAAC,GAAG,CAAC;gBACtB,MAAM+D,gBAA2D,CAAC;gBAElED,cAAcvC,OAAO,CAAC,CAACb;oBACrB,IAAI,OAAOA,IAAIE,MAAM,KAAK,UAAU;wBAClC,IAAI,CAACmD,aAAa,CAACrD,IAAIE,MAAM,CAAC,EAAE;4BAC9BmD,aAAa,CAACrD,IAAIE,MAAM,CAAC,GAAG,EAAE;wBAChC;wBACAmD,aAAa,CAACrD,IAAIE,MAAM,CAAC,CAACR,IAAI,CAACM;oBACjC;gBACF;gBAEAc,OAAOC,OAAO,CAACsC,eAAexC,OAAO,CAAC,CAAC,CAACX,QAAQpB,MAAM;oBACpDf,qBAAqB;wBACnBqB;wBACAc;wBACAiC,KAAKhD;wBACLmE,UAAUxE;oBACZ;gBACF;YACF,OAAO;gBACLf,qBAAqB;oBACnBqB;oBACA+C,KAAKhD;oBACLmE,UAAUF;oBACVrE;gBACF;YACF;YAEA,OAAOI;QACT;QAEA,IAAIC,MAAMO,IAAI,KAAK,YAAYP,MAAM2C,OAAO,EAAE;YAC5C,MAAMwB,kBAAkB7E,OAAO,CAAC,GAAGM,gBAAgBI,MAAME,IAAI,EAAE,CAAC;YAChE,IAAI,CAACiE,iBAAiB;gBACpB,OAAOpE;YACT;YAEA,IAAIC,MAAMU,SAAS,EAAE;gBACnBX,MAAM,CAACC,MAAME,IAAI,CAAC,GAAG,CAAC;gBACtB,MAAMkE,kBAA6D,CAAC;gBAEpED,gBAAgB1C,OAAO,CAAC,CAACb;oBACvB,IAAI,OAAOA,IAAIE,MAAM,KAAK,UAAU;wBAClC,IAAI,CAACsD,eAAe,CAACxD,IAAIE,MAAM,CAAC,EAAE;4BAChCsD,eAAe,CAACxD,IAAIE,MAAM,CAAC,GAAG,EAAE;wBAClC;wBACAsD,eAAe,CAACxD,IAAIE,MAAM,CAAC,CAACR,IAAI,CAACM;oBACnC;gBACF;gBAEAc,OAAOC,OAAO,CAACyC,iBAAiB3C,OAAO,CAAC,CAAC,CAACX,QAAQxB,QAAQ;oBACxDZ,uBAAuB;wBACrBsB;wBACAc;wBACAuD,YAAY/E;wBACZyD,KAAKhD;oBACP;gBACF;YACF,OAAO;gBACLrB,uBAAuB;oBACrBsB;oBACAqE,YAAYF;oBACZpB,KAAKhD;oBACLJ;gBACF;YACF;YAEA,OAAOI;QACT;QAEA,IAAIC,MAAMO,IAAI,KAAK,YAAYP,MAAM2C,OAAO,EAAE;YAC5C,IAAInC,MAAMC,OAAO,CAACN,YAAY;gBAC5B,IAAIH,MAAMU,SAAS,EAAE;oBACnBX,MAAM,CAACC,MAAME,IAAI,CAAC,GAAGC,UAAUL,MAAM,CAAC,CAACwE,cAAc1D;wBACnD,IAAI,OAAOA,IAAIE,MAAM,KAAK,UAAU;4BAClC,IAAI,CAACwD,YAAY,CAAC1D,IAAIE,MAAM,CAAC,EAAE;gCAC7BwD,YAAY,CAAC1D,IAAIE,MAAM,CAAC,GAAG,EAAE;4BAC/B;4BACAwD,YAAY,CAAC1D,IAAIE,MAAM,CAAC,CAACR,IAAI,CAACM,IAAI2D,KAAK;wBACzC;wBAEA,OAAOD;oBACT,GAAG,CAAC;gBACN,OAAO;oBACL,IAAIE,aAAarE;oBACjB,IAAIR,0BAA0B;wBAC5B6E,aAAaA,WAAWC,MAAM,CAAC,CAAC,EAAE3D,MAAM,EAAE,GAAKA,WAAWnB;oBAC5D;oBACAI,MAAM,CAACC,MAAME,IAAI,CAAC,GAAGsE,WAAW3C,GAAG,CAAC,CAAC,EAAE0C,KAAK,EAAE,GAAKA;gBACrD;YACF;YACA,OAAOxE;QACT;QAEA,IAAIC,MAAMU,SAAS,IAAIF,MAAMC,OAAO,CAAChB,MAAMoD,QAAQ,GAAG;YACpD,IAAI,CAACpD,MAAMoD,QAAQ,CAACL,MAAM,IAAI1D,QAAQiD,OAAO,CAAC/C,MAAM,CAACqD,YAAY,EAAE;gBACjEvD,QAAQiD,OAAO,CAAC/C,MAAM,CAACqD,YAAY,CAACC,WAAW,CAACb,OAAO,CAAC,CAACZ,UACvD,AAACpB,MAAMoD,QAAQ,CAAevC,IAAI,CAAC;wBAAEO;oBAAQ;YAEjD;YAEApB,MAAMoD,QAAQ,CAACpB,OAAO,CAAC,CAACqB;gBACtBzC,kBAAkBC,IAAI,CAAC;oBACrByC,KAAK3C;oBACLX,OAAO;wBACL,GAAGA,KAAK;wBACR,GAAGqD,SAAS;oBACd;gBACF;YACF;QACF,OAAO;YACLzC,kBAAkBC,IAAI,CAAC;gBAAEyC,KAAKhD;gBAAQN;YAAM;QAC9C;QAEAY,kBAAkBoB,OAAO,CAAC,CAAC,EAAEsB,GAAG,EAAEtD,KAAK,EAAE;YACvC,MAAMU,YAAYV,KAAK,CAAC,GAAGN,eAAe,KAAKa,MAAME,IAAI,EAAE,CAAC;YAC5D,MAAMY,SAASrB,OAAOoB;YACtB,IAAI6D,MAAMvE;YAEV,OAAQH,MAAMO,IAAI;gBAChB,KAAK;oBAAQ;wBACX,IAAI,OAAOJ,cAAc,UAAU;4BACjCuE,MAAM,IAAIC,KAAKxE,WAAWyE,WAAW;wBACvC;wBAEA;oBACF;gBAEA,KAAK;gBACL,KAAK;oBAAO;wBACV,MAAMC,mBAAmB,GAAG1F,eAAe,KAAKa,MAAME,IAAI,CAAC,CAAC,CAAC;wBAC7D,MAAM4E,YAAY,CAAC;wBACnB,MAAMhE,SAASrB,MAAMoB,OAAO;wBAC5B,MAAMkE,SAAS/E,MAAMU,SAAS,IAAII,SAASA,SAASd,MAAME,IAAI;wBAE9D,IAAIF,MAAMU,SAAS,IAAII,QAAQ;4BAC7B,OAAOrB,MAAMoB,OAAO;wBACtB;wBACAkC,GAAG,CAACgC,OAAO,GAAGlG,eAAwC;4BACpDC;4BACAC;4BACAC;4BACAC,SAAS6F;4BACT5F;4BACAC,aAAa0F;4BACbzF,QAAQY,MAAMmB,eAAe;4BAC7B7B;4BACAC,MAAM,GAAGK,gBAAgBI,MAAME,IAAI,EAAE;4BACrCV;4BACAC;4BACAC;4BACAC,0BAA0BmB,UAAUnB;wBACtC;wBAEA,IAAI,YAAYoD,KAAK;4BACnB,OAAOA,IAAI3B,MAAM;wBACnB;wBAEA;oBACF;gBAEA,KAAK;oBAAU;wBACb,IAAI,OAAOjB,cAAc,UAAU;4BACjCuE,MAAMM,OAAOC,UAAU,CAAC9E;wBAC1B;wBAEA;oBACF;gBAEA,KAAK;oBAAS;wBACZ,IAAI,OAAOA,cAAc,UAAU;4BACjCuE,MAAMnB,KAAKC,KAAK,CAACrD;wBACnB;wBAEA;oBACF;gBAEA,KAAK;gBACL,KAAK;oBAAU;wBACb,IACEuE,OACA,OAAO1E,MAAM0C,UAAU,KAAK,YAC5B5D,QAAQiD,OAAO,CAACmD,WAAW,CAAClF,MAAM0C,UAAU,CAAC,CAACyC,YAAY,KAAK,UAC/D;4BACAT,MAAMM,OAAON;wBACf;wBAEA;oBACF;gBACA,KAAK;oBAAQ;wBACX,IAAI,OAAOvE,cAAc,UAAU;4BACjCuE,MAAMU,OAAOjF;wBACf;wBAEA;oBACF;gBAEA;oBAAS;wBACP;oBACF;YACF;YACA,IAAI,OAAOW,WAAW,UAAU;gBAC9BiC,GAAG,CAACjC,OAAO,GAAG4D;YAChB,OAAO;gBACL3E,MAAM,CAACC,MAAME,IAAI,CAAC,GAAGwE;YACvB;QACF;QAEA,IAAIhD,OAAOoC,IAAI,CAAC1D,oBAAoBoC,MAAM,GAAG,GAAG;YAC9CzC,MAAM,CAACC,MAAME,IAAI,CAAC,GAAGE;QACvB;QAEA,OAAOL;QAEP,OAAOA;IACT,GAAGd;IAEH,IAAIuB,MAAMC,OAAO,CAAChB,MAAMoD,QAAQ,GAAG;QACjC3D,UAAUoB,IAAI,CAAC,IAAM,OAAOb,MAAMoD,QAAQ;IAC5C;IAEA,OAAOhD;AACT,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../../src/transform/write/blocks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAInD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAIxE,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,cAAc,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE;QACN,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAAA;KACxC,CAAA;IACD,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC3B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IAC/B,KAAK,EAAE,oBAAoB,CAAA;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACxC,qBAAqB,EAAE,oBAAoB,EAAE,CAAA;IAC7C,OAAO,EAAE;QACP,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;KAC/C,CAAA;IACD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IAChC;;;OAGG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAClC,CAAA;AACD,eAAO,MAAM,eAAe,4KAezB,IAAI,SAsEN,CAAA"}
1
+ {"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../../src/transform/write/blocks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAInE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAIxE,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,cAAc,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE;QACN,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAAA;KACxC,CAAA;IACD,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC3B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IAC/B,KAAK,EAAE,oBAAoB,CAAA;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACxC,qBAAqB,EAAE,oBAAoB,EAAE,CAAA;IAC7C,OAAO,EAAE;QACP,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;KAC/C,CAAA;IACD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IAChC;;;OAGG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAClC,CAAA;AACD,eAAO,MAAM,eAAe,4KAezB,IAAI,SA4EN,CAAA"}
@@ -5,7 +5,7 @@ export const transformBlocks = ({ adapter, baseTableName, blocks, blocksToDelete
5
5
  if (typeof blockRow.blockType !== 'string') {
6
6
  return;
7
7
  }
8
- const matchedBlock = field.blocks.find(({ slug })=>slug === blockRow.blockType);
8
+ const matchedBlock = adapter.payload.blocks[blockRow.blockType] ?? (field.blockReferences ?? field.blocks).find((block)=>typeof block !== 'string' && block.slug === blockRow.blockType);
9
9
  if (!matchedBlock) {
10
10
  return;
11
11
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/transform/write/blocks.ts"],"sourcesContent":["import type { FlattenedBlocksField } from 'payload'\n\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from '../../types.js'\nimport type { BlockRowToInsert, RelationshipToDelete } from './types.js'\n\nimport { traverseFields } from './traverseFields.js'\n\ntype Args = {\n adapter: DrizzleAdapter\n baseTableName: string\n blocks: {\n [blockType: string]: BlockRowToInsert[]\n }\n blocksToDelete: Set<string>\n data: Record<string, unknown>[]\n field: FlattenedBlocksField\n locale?: string\n numbers: Record<string, unknown>[]\n path: string\n relationships: Record<string, unknown>[]\n relationshipsToDelete: RelationshipToDelete[]\n selects: {\n [tableName: string]: Record<string, unknown>[]\n }\n texts: Record<string, unknown>[]\n /**\n * Set to a locale code if this set of fields is traversed within a\n * localized array or block field\n */\n withinArrayOrBlockLocale?: string\n}\nexport const transformBlocks = ({\n adapter,\n baseTableName,\n blocks,\n blocksToDelete,\n data,\n field,\n locale,\n numbers,\n path,\n relationships,\n relationshipsToDelete,\n selects,\n texts,\n withinArrayOrBlockLocale,\n}: Args) => {\n data.forEach((blockRow, i) => {\n if (typeof blockRow.blockType !== 'string') {\n return\n }\n const matchedBlock = field.blocks.find(({ slug }) => slug === blockRow.blockType)\n if (!matchedBlock) {\n return\n }\n const blockType = toSnakeCase(blockRow.blockType)\n\n if (!blocks[blockType]) {\n blocks[blockType] = []\n }\n\n const newRow: BlockRowToInsert = {\n arrays: {},\n locales: {},\n row: {\n _order: i + 1,\n _path: `${path}${field.name}`,\n },\n }\n\n if (field.localized && locale) {\n newRow.row._locale = locale\n }\n if (withinArrayOrBlockLocale) {\n newRow.row._locale = withinArrayOrBlockLocale\n }\n\n const blockTableName = adapter.tableNameMap.get(`${baseTableName}_blocks_${blockType}`)\n\n const hasUUID = adapter.tables[blockTableName]._uuid\n\n // If we have declared a _uuid field on arrays,\n // that means the ID has to be unique,\n // and our ids within arrays are not unique.\n // So move the ID to a uuid field for storage\n // and allow the database to generate a serial id automatically\n if (hasUUID) {\n newRow.row._uuid = blockRow.id\n delete blockRow.id\n }\n\n traverseFields({\n adapter,\n arrays: newRow.arrays,\n baseTableName,\n blocks,\n blocksToDelete,\n columnPrefix: '',\n data: blockRow,\n fieldPrefix: '',\n fields: matchedBlock.flattenedFields,\n insideArrayOrBlock: true,\n locales: newRow.locales,\n numbers,\n parentTableName: blockTableName,\n path: `${path || ''}${field.name}.${i}.`,\n relationships,\n relationshipsToDelete,\n row: newRow.row,\n selects,\n texts,\n withinArrayOrBlockLocale,\n })\n\n blocks[blockType].push(newRow)\n })\n}\n"],"names":["toSnakeCase","traverseFields","transformBlocks","adapter","baseTableName","blocks","blocksToDelete","data","field","locale","numbers","path","relationships","relationshipsToDelete","selects","texts","withinArrayOrBlockLocale","forEach","blockRow","i","blockType","matchedBlock","find","slug","newRow","arrays","locales","row","_order","_path","name","localized","_locale","blockTableName","tableNameMap","get","hasUUID","tables","_uuid","id","columnPrefix","fieldPrefix","fields","flattenedFields","insideArrayOrBlock","parentTableName","push"],"mappings":"AAEA,OAAOA,iBAAiB,gBAAe;AAKvC,SAASC,cAAc,QAAQ,sBAAqB;AA0BpD,OAAO,MAAMC,kBAAkB,CAAC,EAC9BC,OAAO,EACPC,aAAa,EACbC,MAAM,EACNC,cAAc,EACdC,IAAI,EACJC,KAAK,EACLC,MAAM,EACNC,OAAO,EACPC,IAAI,EACJC,aAAa,EACbC,qBAAqB,EACrBC,OAAO,EACPC,KAAK,EACLC,wBAAwB,EACnB;IACLT,KAAKU,OAAO,CAAC,CAACC,UAAUC;QACtB,IAAI,OAAOD,SAASE,SAAS,KAAK,UAAU;YAC1C;QACF;QACA,MAAMC,eAAeb,MAAMH,MAAM,CAACiB,IAAI,CAAC,CAAC,EAAEC,IAAI,EAAE,GAAKA,SAASL,SAASE,SAAS;QAChF,IAAI,CAACC,cAAc;YACjB;QACF;QACA,MAAMD,YAAYpB,YAAYkB,SAASE,SAAS;QAEhD,IAAI,CAACf,MAAM,CAACe,UAAU,EAAE;YACtBf,MAAM,CAACe,UAAU,GAAG,EAAE;QACxB;QAEA,MAAMI,SAA2B;YAC/BC,QAAQ,CAAC;YACTC,SAAS,CAAC;YACVC,KAAK;gBACHC,QAAQT,IAAI;gBACZU,OAAO,GAAGlB,OAAOH,MAAMsB,IAAI,EAAE;YAC/B;QACF;QAEA,IAAItB,MAAMuB,SAAS,IAAItB,QAAQ;YAC7Be,OAAOG,GAAG,CAACK,OAAO,GAAGvB;QACvB;QACA,IAAIO,0BAA0B;YAC5BQ,OAAOG,GAAG,CAACK,OAAO,GAAGhB;QACvB;QAEA,MAAMiB,iBAAiB9B,QAAQ+B,YAAY,CAACC,GAAG,CAAC,GAAG/B,cAAc,QAAQ,EAAEgB,WAAW;QAEtF,MAAMgB,UAAUjC,QAAQkC,MAAM,CAACJ,eAAe,CAACK,KAAK;QAEpD,+CAA+C;QAC/C,sCAAsC;QACtC,4CAA4C;QAC5C,6CAA6C;QAC7C,+DAA+D;QAC/D,IAAIF,SAAS;YACXZ,OAAOG,GAAG,CAACW,KAAK,GAAGpB,SAASqB,EAAE;YAC9B,OAAOrB,SAASqB,EAAE;QACpB;QAEAtC,eAAe;YACbE;YACAsB,QAAQD,OAAOC,MAAM;YACrBrB;YACAC;YACAC;YACAkC,cAAc;YACdjC,MAAMW;YACNuB,aAAa;YACbC,QAAQrB,aAAasB,eAAe;YACpCC,oBAAoB;YACpBlB,SAASF,OAAOE,OAAO;YACvBhB;YACAmC,iBAAiBZ;YACjBtB,MAAM,GAAGA,QAAQ,KAAKH,MAAMsB,IAAI,CAAC,CAAC,EAAEX,EAAE,CAAC,CAAC;YACxCP;YACAC;YACAc,KAAKH,OAAOG,GAAG;YACfb;YACAC;YACAC;QACF;QAEAX,MAAM,CAACe,UAAU,CAAC0B,IAAI,CAACtB;IACzB;AACF,EAAC"}
1
+ {"version":3,"sources":["../../../src/transform/write/blocks.ts"],"sourcesContent":["import type { FlattenedBlock, FlattenedBlocksField } from 'payload'\n\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from '../../types.js'\nimport type { BlockRowToInsert, RelationshipToDelete } from './types.js'\n\nimport { traverseFields } from './traverseFields.js'\n\ntype Args = {\n adapter: DrizzleAdapter\n baseTableName: string\n blocks: {\n [blockType: string]: BlockRowToInsert[]\n }\n blocksToDelete: Set<string>\n data: Record<string, unknown>[]\n field: FlattenedBlocksField\n locale?: string\n numbers: Record<string, unknown>[]\n path: string\n relationships: Record<string, unknown>[]\n relationshipsToDelete: RelationshipToDelete[]\n selects: {\n [tableName: string]: Record<string, unknown>[]\n }\n texts: Record<string, unknown>[]\n /**\n * Set to a locale code if this set of fields is traversed within a\n * localized array or block field\n */\n withinArrayOrBlockLocale?: string\n}\nexport const transformBlocks = ({\n adapter,\n baseTableName,\n blocks,\n blocksToDelete,\n data,\n field,\n locale,\n numbers,\n path,\n relationships,\n relationshipsToDelete,\n selects,\n texts,\n withinArrayOrBlockLocale,\n}: Args) => {\n data.forEach((blockRow, i) => {\n if (typeof blockRow.blockType !== 'string') {\n return\n }\n\n const matchedBlock =\n adapter.payload.blocks[blockRow.blockType] ??\n ((field.blockReferences ?? field.blocks).find(\n (block) => typeof block !== 'string' && block.slug === blockRow.blockType,\n ) as FlattenedBlock | undefined)\n\n if (!matchedBlock) {\n return\n }\n const blockType = toSnakeCase(blockRow.blockType)\n\n if (!blocks[blockType]) {\n blocks[blockType] = []\n }\n\n const newRow: BlockRowToInsert = {\n arrays: {},\n locales: {},\n row: {\n _order: i + 1,\n _path: `${path}${field.name}`,\n },\n }\n\n if (field.localized && locale) {\n newRow.row._locale = locale\n }\n if (withinArrayOrBlockLocale) {\n newRow.row._locale = withinArrayOrBlockLocale\n }\n\n const blockTableName = adapter.tableNameMap.get(`${baseTableName}_blocks_${blockType}`)\n\n const hasUUID = adapter.tables[blockTableName]._uuid\n\n // If we have declared a _uuid field on arrays,\n // that means the ID has to be unique,\n // and our ids within arrays are not unique.\n // So move the ID to a uuid field for storage\n // and allow the database to generate a serial id automatically\n if (hasUUID) {\n newRow.row._uuid = blockRow.id\n delete blockRow.id\n }\n\n traverseFields({\n adapter,\n arrays: newRow.arrays,\n baseTableName,\n blocks,\n blocksToDelete,\n columnPrefix: '',\n data: blockRow,\n fieldPrefix: '',\n fields: matchedBlock.flattenedFields,\n insideArrayOrBlock: true,\n locales: newRow.locales,\n numbers,\n parentTableName: blockTableName,\n path: `${path || ''}${field.name}.${i}.`,\n relationships,\n relationshipsToDelete,\n row: newRow.row,\n selects,\n texts,\n withinArrayOrBlockLocale,\n })\n\n blocks[blockType].push(newRow)\n })\n}\n"],"names":["toSnakeCase","traverseFields","transformBlocks","adapter","baseTableName","blocks","blocksToDelete","data","field","locale","numbers","path","relationships","relationshipsToDelete","selects","texts","withinArrayOrBlockLocale","forEach","blockRow","i","blockType","matchedBlock","payload","blockReferences","find","block","slug","newRow","arrays","locales","row","_order","_path","name","localized","_locale","blockTableName","tableNameMap","get","hasUUID","tables","_uuid","id","columnPrefix","fieldPrefix","fields","flattenedFields","insideArrayOrBlock","parentTableName","push"],"mappings":"AAEA,OAAOA,iBAAiB,gBAAe;AAKvC,SAASC,cAAc,QAAQ,sBAAqB;AA0BpD,OAAO,MAAMC,kBAAkB,CAAC,EAC9BC,OAAO,EACPC,aAAa,EACbC,MAAM,EACNC,cAAc,EACdC,IAAI,EACJC,KAAK,EACLC,MAAM,EACNC,OAAO,EACPC,IAAI,EACJC,aAAa,EACbC,qBAAqB,EACrBC,OAAO,EACPC,KAAK,EACLC,wBAAwB,EACnB;IACLT,KAAKU,OAAO,CAAC,CAACC,UAAUC;QACtB,IAAI,OAAOD,SAASE,SAAS,KAAK,UAAU;YAC1C;QACF;QAEA,MAAMC,eACJlB,QAAQmB,OAAO,CAACjB,MAAM,CAACa,SAASE,SAAS,CAAC,IACzC,AAACZ,CAAAA,MAAMe,eAAe,IAAIf,MAAMH,MAAM,AAAD,EAAGmB,IAAI,CAC3C,CAACC,QAAU,OAAOA,UAAU,YAAYA,MAAMC,IAAI,KAAKR,SAASE,SAAS;QAG7E,IAAI,CAACC,cAAc;YACjB;QACF;QACA,MAAMD,YAAYpB,YAAYkB,SAASE,SAAS;QAEhD,IAAI,CAACf,MAAM,CAACe,UAAU,EAAE;YACtBf,MAAM,CAACe,UAAU,GAAG,EAAE;QACxB;QAEA,MAAMO,SAA2B;YAC/BC,QAAQ,CAAC;YACTC,SAAS,CAAC;YACVC,KAAK;gBACHC,QAAQZ,IAAI;gBACZa,OAAO,GAAGrB,OAAOH,MAAMyB,IAAI,EAAE;YAC/B;QACF;QAEA,IAAIzB,MAAM0B,SAAS,IAAIzB,QAAQ;YAC7BkB,OAAOG,GAAG,CAACK,OAAO,GAAG1B;QACvB;QACA,IAAIO,0BAA0B;YAC5BW,OAAOG,GAAG,CAACK,OAAO,GAAGnB;QACvB;QAEA,MAAMoB,iBAAiBjC,QAAQkC,YAAY,CAACC,GAAG,CAAC,GAAGlC,cAAc,QAAQ,EAAEgB,WAAW;QAEtF,MAAMmB,UAAUpC,QAAQqC,MAAM,CAACJ,eAAe,CAACK,KAAK;QAEpD,+CAA+C;QAC/C,sCAAsC;QACtC,4CAA4C;QAC5C,6CAA6C;QAC7C,+DAA+D;QAC/D,IAAIF,SAAS;YACXZ,OAAOG,GAAG,CAACW,KAAK,GAAGvB,SAASwB,EAAE;YAC9B,OAAOxB,SAASwB,EAAE;QACpB;QAEAzC,eAAe;YACbE;YACAyB,QAAQD,OAAOC,MAAM;YACrBxB;YACAC;YACAC;YACAqC,cAAc;YACdpC,MAAMW;YACN0B,aAAa;YACbC,QAAQxB,aAAayB,eAAe;YACpCC,oBAAoB;YACpBlB,SAASF,OAAOE,OAAO;YACvBnB;YACAsC,iBAAiBZ;YACjBzB,MAAM,GAAGA,QAAQ,KAAKH,MAAMyB,IAAI,CAAC,CAAC,EAAEd,EAAE,CAAC,CAAC;YACxCP;YACAC;YACAiB,KAAKH,OAAOG,GAAG;YACfhB;YACAC;YACAC;QACF;QAEAX,MAAM,CAACe,UAAU,CAAC6B,IAAI,CAACtB;IACzB;AACF,EAAC"}
@@ -74,8 +74,9 @@ export const traverseFields = ({ adapter, arrays, baseTableName, blocks, blocksT
74
74
  return;
75
75
  }
76
76
  if (field.type === 'blocks') {
77
- field.blocks.forEach(({ slug })=>{
78
- blocksToDelete.add(toSnakeCase(slug));
77
+ ;
78
+ (field.blockReferences ?? field.blocks).forEach((block)=>{
79
+ blocksToDelete.add(toSnakeCase(typeof block === 'string' ? block : block.slug));
79
80
  });
80
81
  if (field.localized) {
81
82
  if (typeof data[field.name] === 'object' && data[field.name] !== null) {