@payloadcms/drizzle 3.23.0 → 3.24.0-canary.05013b2

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.
Files changed (77) hide show
  1. package/dist/find/traverseFields.d.ts +2 -2
  2. package/dist/find/traverseFields.d.ts.map +1 -1
  3. package/dist/find/traverseFields.js +19 -10
  4. package/dist/find/traverseFields.js.map +1 -1
  5. package/dist/postgres/countDistinct.d.ts.map +1 -1
  6. package/dist/postgres/countDistinct.js +14 -13
  7. package/dist/postgres/countDistinct.js.map +1 -1
  8. package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/traverseFields.d.ts.map +1 -1
  9. package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/traverseFields.js +4 -2
  10. package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/traverseFields.js.map +1 -1
  11. package/dist/postgres/predefinedMigrations/v2-v3/traverseFields.d.ts.map +1 -1
  12. package/dist/postgres/predefinedMigrations/v2-v3/traverseFields.js +4 -0
  13. package/dist/postgres/predefinedMigrations/v2-v3/traverseFields.js.map +1 -1
  14. package/dist/queries/buildAndOrConditions.d.ts +2 -1
  15. package/dist/queries/buildAndOrConditions.d.ts.map +1 -1
  16. package/dist/queries/buildAndOrConditions.js +2 -1
  17. package/dist/queries/buildAndOrConditions.js.map +1 -1
  18. package/dist/queries/buildOrderBy.d.ts +2 -1
  19. package/dist/queries/buildOrderBy.d.ts.map +1 -1
  20. package/dist/queries/buildOrderBy.js +2 -1
  21. package/dist/queries/buildOrderBy.js.map +1 -1
  22. package/dist/queries/buildQuery.d.ts +2 -1
  23. package/dist/queries/buildQuery.d.ts.map +1 -1
  24. package/dist/queries/buildQuery.js +3 -1
  25. package/dist/queries/buildQuery.js.map +1 -1
  26. package/dist/queries/getTableColumnFromPath.d.ts +2 -1
  27. package/dist/queries/getTableColumnFromPath.d.ts.map +1 -1
  28. package/dist/queries/getTableColumnFromPath.js +27 -14
  29. package/dist/queries/getTableColumnFromPath.js.map +1 -1
  30. package/dist/queries/parseParams.d.ts +2 -1
  31. package/dist/queries/parseParams.d.ts.map +1 -1
  32. package/dist/queries/parseParams.js +3 -1
  33. package/dist/queries/parseParams.js.map +1 -1
  34. package/dist/schema/build.d.ts +2 -1
  35. package/dist/schema/build.d.ts.map +1 -1
  36. package/dist/schema/build.js +2 -1
  37. package/dist/schema/build.js.map +1 -1
  38. package/dist/schema/buildRawSchema.d.ts.map +1 -1
  39. package/dist/schema/buildRawSchema.js +4 -0
  40. package/dist/schema/buildRawSchema.js.map +1 -1
  41. package/dist/schema/traverseFields.d.ts +2 -1
  42. package/dist/schema/traverseFields.d.ts.map +1 -1
  43. package/dist/schema/traverseFields.js +32 -16
  44. package/dist/schema/traverseFields.js.map +1 -1
  45. package/dist/transform/read/index.d.ts +2 -1
  46. package/dist/transform/read/index.d.ts.map +1 -1
  47. package/dist/transform/read/index.js +2 -1
  48. package/dist/transform/read/index.js.map +1 -1
  49. package/dist/transform/read/traverseFields.d.ts +2 -1
  50. package/dist/transform/read/traverseFields.d.ts.map +1 -1
  51. package/dist/transform/read/traverseFields.js +28 -16
  52. package/dist/transform/read/traverseFields.js.map +1 -1
  53. package/dist/transform/write/array.d.ts +2 -1
  54. package/dist/transform/write/array.d.ts.map +1 -1
  55. package/dist/transform/write/array.js +7 -2
  56. package/dist/transform/write/array.js.map +1 -1
  57. package/dist/transform/write/blocks.d.ts +2 -1
  58. package/dist/transform/write/blocks.d.ts.map +1 -1
  59. package/dist/transform/write/blocks.js +8 -3
  60. package/dist/transform/write/blocks.js.map +1 -1
  61. package/dist/transform/write/index.d.ts +2 -1
  62. package/dist/transform/write/index.d.ts.map +1 -1
  63. package/dist/transform/write/index.js +2 -1
  64. package/dist/transform/write/index.js.map +1 -1
  65. package/dist/transform/write/traverseFields.d.ts +2 -1
  66. package/dist/transform/write/traverseFields.d.ts.map +1 -1
  67. package/dist/transform/write/traverseFields.js +25 -14
  68. package/dist/transform/write/traverseFields.js.map +1 -1
  69. package/dist/utilities/hasLocalesTable.d.ts +7 -1
  70. package/dist/utilities/hasLocalesTable.d.ts.map +1 -1
  71. package/dist/utilities/hasLocalesTable.js +14 -5
  72. package/dist/utilities/hasLocalesTable.js.map +1 -1
  73. package/dist/utilities/validateExistingBlockIsIdentical.d.ts +5 -1
  74. package/dist/utilities/validateExistingBlockIsIdentical.d.ts.map +1 -1
  75. package/dist/utilities/validateExistingBlockIsIdentical.js +22 -7
  76. package/dist/utilities/validateExistingBlockIsIdentical.js.map +1 -1
  77. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/transform/write/traverseFields.ts"],"sourcesContent":["import type { FlattenedField } from 'payload'\n\nimport { sql } from 'drizzle-orm'\nimport { fieldIsVirtual } from 'payload/shared'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from '../../types.js'\nimport type { ArrayRowToInsert, BlockRowToInsert, RelationshipToDelete } from './types.js'\n\nimport { isArrayOfRows } from '../../utilities/isArrayOfRows.js'\nimport { transformArray } from './array.js'\nimport { transformBlocks } from './blocks.js'\nimport { transformNumbers } from './numbers.js'\nimport { transformRelationship } from './relationships.js'\nimport { transformSelects } from './selects.js'\nimport { transformTexts } from './texts.js'\n\ntype Args = {\n adapter: DrizzleAdapter\n arrays: {\n [tableName: string]: ArrayRowToInsert[]\n }\n /**\n * This is the name of the base table\n */\n baseTableName: string\n blocks: {\n [blockType: string]: BlockRowToInsert[]\n }\n blocksToDelete: Set<string>\n /**\n * A snake-case field prefix, representing prior fields\n * Ex: my_group_my_named_tab_\n */\n columnPrefix: string\n data: Record<string, unknown>\n existingLocales?: Record<string, unknown>[]\n /**\n * A prefix that will retain camel-case formatting, representing prior fields\n * Ex: myGroup_myNamedTab_\n */\n fieldPrefix: string\n fields: FlattenedField[]\n forcedLocale?: string\n /**\n * Tracks whether the current traversion context is from array or block.\n */\n insideArrayOrBlock?: boolean\n locales: {\n [locale: string]: Record<string, unknown>\n }\n numbers: Record<string, unknown>[]\n /**\n * This is the name of the parent table\n */\n parentTableName: string\n path: string\n relationships: Record<string, unknown>[]\n relationshipsToDelete: RelationshipToDelete[]\n row: Record<string, unknown>\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}\n\nexport const traverseFields = ({\n adapter,\n arrays,\n baseTableName,\n blocks,\n blocksToDelete,\n columnPrefix,\n data,\n existingLocales,\n fieldPrefix,\n fields,\n forcedLocale,\n insideArrayOrBlock = false,\n locales,\n numbers,\n parentTableName,\n path,\n relationships,\n relationshipsToDelete,\n row,\n selects,\n texts,\n withinArrayOrBlockLocale,\n}: Args) => {\n if (row._uuid) {\n data._uuid = row._uuid\n }\n\n fields.forEach((field) => {\n let columnName = ''\n let fieldName = ''\n let fieldData: unknown\n\n if (fieldIsVirtual(field)) {\n return\n }\n\n columnName = `${columnPrefix || ''}${toSnakeCase(field.name)}`\n fieldName = `${fieldPrefix || ''}${field.name}`\n fieldData = data[field.name]\n\n if (field.type === 'array') {\n const arrayTableName = adapter.tableNameMap.get(`${parentTableName}_${columnName}`)\n\n if (!arrays[arrayTableName]) {\n arrays[arrayTableName] = []\n }\n\n if (field.localized) {\n if (typeof data[field.name] === 'object' && data[field.name] !== null) {\n Object.entries(data[field.name]).forEach(([localeKey, localeData]) => {\n if (Array.isArray(localeData)) {\n const newRows = transformArray({\n adapter,\n arrayTableName,\n baseTableName,\n blocks,\n blocksToDelete,\n data: localeData,\n field,\n locale: localeKey,\n numbers,\n path,\n relationships,\n relationshipsToDelete,\n selects,\n texts,\n withinArrayOrBlockLocale: localeKey,\n })\n\n arrays[arrayTableName] = arrays[arrayTableName].concat(newRows)\n }\n })\n }\n } else {\n const newRows = transformArray({\n adapter,\n arrayTableName,\n baseTableName,\n blocks,\n blocksToDelete,\n data: data[field.name],\n field,\n numbers,\n path,\n relationships,\n relationshipsToDelete,\n selects,\n texts,\n withinArrayOrBlockLocale,\n })\n\n arrays[arrayTableName] = arrays[arrayTableName].concat(newRows)\n }\n\n return\n }\n\n if (field.type === 'blocks') {\n field.blocks.forEach(({ slug }) => {\n blocksToDelete.add(toSnakeCase(slug))\n })\n\n if (field.localized) {\n if (typeof data[field.name] === 'object' && data[field.name] !== null) {\n Object.entries(data[field.name]).forEach(([localeKey, localeData]) => {\n if (Array.isArray(localeData)) {\n transformBlocks({\n adapter,\n baseTableName,\n blocks,\n blocksToDelete,\n data: localeData,\n field,\n locale: localeKey,\n numbers,\n path,\n relationships,\n relationshipsToDelete,\n selects,\n texts,\n withinArrayOrBlockLocale: localeKey,\n })\n }\n })\n }\n } else if (isArrayOfRows(fieldData)) {\n transformBlocks({\n adapter,\n baseTableName,\n blocks,\n blocksToDelete,\n data: fieldData,\n field,\n numbers,\n path,\n relationships,\n relationshipsToDelete,\n selects,\n texts,\n withinArrayOrBlockLocale,\n })\n }\n\n return\n }\n\n if (field.type === 'group' || field.type === 'tab') {\n if (typeof data[field.name] === 'object' && data[field.name] !== null) {\n if (field.localized) {\n Object.entries(data[field.name]).forEach(([localeKey, localeData]) => {\n // preserve array ID if there is\n localeData._uuid = data.id || data._uuid\n\n traverseFields({\n adapter,\n arrays,\n baseTableName,\n blocks,\n blocksToDelete,\n columnPrefix: `${columnName}_`,\n data: localeData as Record<string, unknown>,\n existingLocales,\n fieldPrefix: `${fieldName}_`,\n fields: field.flattenedFields,\n forcedLocale: localeKey,\n insideArrayOrBlock,\n locales,\n numbers,\n parentTableName,\n path: `${path || ''}${field.name}.`,\n relationships,\n relationshipsToDelete,\n row,\n selects,\n texts,\n withinArrayOrBlockLocale: localeKey,\n })\n })\n } else {\n // preserve array ID if there is\n const groupData = data[field.name] as Record<string, unknown>\n groupData._uuid = data.id || data._uuid\n\n traverseFields({\n adapter,\n arrays,\n baseTableName,\n blocks,\n blocksToDelete,\n columnPrefix: `${columnName}_`,\n data: groupData,\n existingLocales,\n fieldPrefix: `${fieldName}_`,\n fields: field.flattenedFields,\n insideArrayOrBlock,\n locales,\n numbers,\n parentTableName,\n path: `${path || ''}${field.name}.`,\n relationships,\n relationshipsToDelete,\n row,\n selects,\n texts,\n withinArrayOrBlockLocale,\n })\n }\n }\n\n return\n }\n\n if (field.type === 'relationship' || field.type === 'upload') {\n const relationshipPath = `${path || ''}${field.name}`\n\n if (\n field.localized &&\n (Array.isArray(field.relationTo) || ('hasMany' in field && field.hasMany))\n ) {\n if (typeof fieldData === 'object') {\n Object.entries(fieldData).forEach(([localeKey, localeData]) => {\n if (localeData === null) {\n relationshipsToDelete.push({\n locale: localeKey,\n path: relationshipPath,\n })\n return\n }\n\n transformRelationship({\n baseRow: {\n locale: localeKey,\n path: relationshipPath,\n },\n data: localeData,\n field,\n relationships,\n })\n })\n }\n return\n } else if (Array.isArray(field.relationTo) || ('hasMany' in field && field.hasMany)) {\n if (fieldData === null || (Array.isArray(fieldData) && fieldData.length === 0)) {\n relationshipsToDelete.push({ path: relationshipPath })\n return\n }\n\n transformRelationship({\n baseRow: {\n locale: withinArrayOrBlockLocale,\n path: relationshipPath,\n },\n data: fieldData,\n field,\n relationships,\n })\n return\n } else {\n if (\n !field.localized &&\n fieldData &&\n typeof fieldData === 'object' &&\n 'id' in fieldData &&\n fieldData?.id\n ) {\n fieldData = fieldData.id\n } else if (field.localized) {\n if (typeof fieldData === 'object') {\n Object.entries(fieldData).forEach(([localeKey, localeData]) => {\n if (typeof localeData === 'object') {\n if (localeData && 'id' in localeData && localeData?.id) {\n fieldData[localeKey] = localeData.id\n }\n } else {\n fieldData[localeKey] = localeData\n }\n })\n }\n }\n }\n }\n\n if (field.type === 'text' && field.hasMany) {\n const textPath = `${path || ''}${field.name}`\n\n if (field.localized) {\n if (typeof fieldData === 'object') {\n Object.entries(fieldData).forEach(([localeKey, localeData]) => {\n if (Array.isArray(localeData)) {\n transformTexts({\n baseRow: {\n locale: localeKey,\n path: textPath,\n },\n data: localeData,\n texts,\n })\n }\n })\n }\n } else if (Array.isArray(fieldData)) {\n transformTexts({\n baseRow: {\n locale: withinArrayOrBlockLocale,\n path: textPath,\n },\n data: fieldData,\n texts,\n })\n }\n\n return\n }\n\n if (field.type === 'number' && field.hasMany) {\n const numberPath = `${path || ''}${field.name}`\n\n if (field.localized) {\n if (typeof fieldData === 'object') {\n Object.entries(fieldData).forEach(([localeKey, localeData]) => {\n if (Array.isArray(localeData)) {\n transformNumbers({\n baseRow: {\n locale: localeKey,\n path: numberPath,\n },\n data: localeData,\n numbers,\n })\n }\n })\n }\n } else if (Array.isArray(fieldData)) {\n transformNumbers({\n baseRow: {\n locale: withinArrayOrBlockLocale,\n path: numberPath,\n },\n data: fieldData,\n numbers,\n })\n }\n\n return\n }\n\n if (field.type === 'select' && field.hasMany) {\n const selectTableName = adapter.tableNameMap.get(`${parentTableName}_${columnName}`)\n if (!selects[selectTableName]) {\n selects[selectTableName] = []\n }\n\n if (field.localized) {\n if (typeof data[field.name] === 'object' && data[field.name] !== null) {\n Object.entries(data[field.name]).forEach(([localeKey, localeData]) => {\n if (Array.isArray(localeData)) {\n const newRows = transformSelects({\n id: insideArrayOrBlock ? data._uuid || data.id : undefined,\n data: localeData,\n locale: localeKey,\n })\n\n selects[selectTableName] = selects[selectTableName].concat(newRows)\n }\n })\n }\n } else if (Array.isArray(data[field.name])) {\n const newRows = transformSelects({\n id: insideArrayOrBlock ? data._uuid || data.id : undefined,\n data: data[field.name],\n locale: withinArrayOrBlockLocale,\n })\n\n selects[selectTableName] = selects[selectTableName].concat(newRows)\n }\n\n return\n }\n\n const valuesToTransform: { localeKey?: string; ref: unknown; value: unknown }[] = []\n\n if (field.localized) {\n if (typeof fieldData === 'object' && fieldData !== null) {\n Object.entries(fieldData).forEach(([localeKey, localeData]) => {\n if (!locales[localeKey]) {\n locales[localeKey] = {}\n }\n\n valuesToTransform.push({\n localeKey,\n ref: locales,\n value: localeData,\n })\n })\n }\n } else {\n let ref = row\n\n if (forcedLocale) {\n if (!locales[forcedLocale]) {\n locales[forcedLocale] = {}\n }\n ref = locales[forcedLocale]\n }\n\n valuesToTransform.push({ ref, value: fieldData })\n }\n\n valuesToTransform.forEach(({ localeKey, ref, value }) => {\n let formattedValue = value\n\n if (typeof value !== 'undefined') {\n if (value && field.type === 'point' && adapter.name !== 'sqlite') {\n formattedValue = sql`ST_GeomFromGeoJSON(${JSON.stringify(value)})`\n }\n\n if (field.type === 'date') {\n if (typeof value === 'number' && !Number.isNaN(value)) {\n formattedValue = new Date(value).toISOString()\n } else if (value instanceof Date) {\n formattedValue = value.toISOString()\n }\n }\n }\n\n if (field.type === 'date' && fieldName === 'updatedAt') {\n // let the db handle this\n formattedValue = new Date().toISOString()\n }\n\n if (typeof formattedValue !== 'undefined') {\n if (localeKey) {\n ref[localeKey][fieldName] = formattedValue\n } else {\n ref[fieldName] = formattedValue\n }\n }\n })\n })\n}\n"],"names":["sql","fieldIsVirtual","toSnakeCase","isArrayOfRows","transformArray","transformBlocks","transformNumbers","transformRelationship","transformSelects","transformTexts","traverseFields","adapter","arrays","baseTableName","blocks","blocksToDelete","columnPrefix","data","existingLocales","fieldPrefix","fields","forcedLocale","insideArrayOrBlock","locales","numbers","parentTableName","path","relationships","relationshipsToDelete","row","selects","texts","withinArrayOrBlockLocale","_uuid","forEach","field","columnName","fieldName","fieldData","name","type","arrayTableName","tableNameMap","get","localized","Object","entries","localeKey","localeData","Array","isArray","newRows","locale","concat","slug","add","id","flattenedFields","groupData","relationshipPath","relationTo","hasMany","push","baseRow","length","textPath","numberPath","selectTableName","undefined","valuesToTransform","ref","value","formattedValue","JSON","stringify","Number","isNaN","Date","toISOString"],"mappings":"AAEA,SAASA,GAAG,QAAQ,cAAa;AACjC,SAASC,cAAc,QAAQ,iBAAgB;AAC/C,OAAOC,iBAAiB,gBAAe;AAKvC,SAASC,aAAa,QAAQ,mCAAkC;AAChE,SAASC,cAAc,QAAQ,aAAY;AAC3C,SAASC,eAAe,QAAQ,cAAa;AAC7C,SAASC,gBAAgB,QAAQ,eAAc;AAC/C,SAASC,qBAAqB,QAAQ,qBAAoB;AAC1D,SAASC,gBAAgB,QAAQ,eAAc;AAC/C,SAASC,cAAc,QAAQ,aAAY;AAwD3C,OAAO,MAAMC,iBAAiB,CAAC,EAC7BC,OAAO,EACPC,MAAM,EACNC,aAAa,EACbC,MAAM,EACNC,cAAc,EACdC,YAAY,EACZC,IAAI,EACJC,eAAe,EACfC,WAAW,EACXC,MAAM,EACNC,YAAY,EACZC,qBAAqB,KAAK,EAC1BC,OAAO,EACPC,OAAO,EACPC,eAAe,EACfC,IAAI,EACJC,aAAa,EACbC,qBAAqB,EACrBC,GAAG,EACHC,OAAO,EACPC,KAAK,EACLC,wBAAwB,EACnB;IACL,IAAIH,IAAII,KAAK,EAAE;QACbhB,KAAKgB,KAAK,GAAGJ,IAAII,KAAK;IACxB;IAEAb,OAAOc,OAAO,CAAC,CAACC;QACd,IAAIC,aAAa;QACjB,IAAIC,YAAY;QAChB,IAAIC;QAEJ,IAAIrC,eAAekC,QAAQ;YACzB;QACF;QAEAC,aAAa,GAAGpB,gBAAgB,KAAKd,YAAYiC,MAAMI,IAAI,GAAG;QAC9DF,YAAY,GAAGlB,eAAe,KAAKgB,MAAMI,IAAI,EAAE;QAC/CD,YAAYrB,IAAI,CAACkB,MAAMI,IAAI,CAAC;QAE5B,IAAIJ,MAAMK,IAAI,KAAK,SAAS;YAC1B,MAAMC,iBAAiB9B,QAAQ+B,YAAY,CAACC,GAAG,CAAC,GAAGlB,gBAAgB,CAAC,EAAEW,YAAY;YAElF,IAAI,CAACxB,MAAM,CAAC6B,eAAe,EAAE;gBAC3B7B,MAAM,CAAC6B,eAAe,GAAG,EAAE;YAC7B;YAEA,IAAIN,MAAMS,SAAS,EAAE;gBACnB,IAAI,OAAO3B,IAAI,CAACkB,MAAMI,IAAI,CAAC,KAAK,YAAYtB,IAAI,CAACkB,MAAMI,IAAI,CAAC,KAAK,MAAM;oBACrEM,OAAOC,OAAO,CAAC7B,IAAI,CAACkB,MAAMI,IAAI,CAAC,EAAEL,OAAO,CAAC,CAAC,CAACa,WAAWC,WAAW;wBAC/D,IAAIC,MAAMC,OAAO,CAACF,aAAa;4BAC7B,MAAMG,UAAU/C,eAAe;gCAC7BO;gCACA8B;gCACA5B;gCACAC;gCACAC;gCACAE,MAAM+B;gCACNb;gCACAiB,QAAQL;gCACRvB;gCACAE;gCACAC;gCACAC;gCACAE;gCACAC;gCACAC,0BAA0Be;4BAC5B;4BAEAnC,MAAM,CAAC6B,eAAe,GAAG7B,MAAM,CAAC6B,eAAe,CAACY,MAAM,CAACF;wBACzD;oBACF;gBACF;YACF,OAAO;gBACL,MAAMA,UAAU/C,eAAe;oBAC7BO;oBACA8B;oBACA5B;oBACAC;oBACAC;oBACAE,MAAMA,IAAI,CAACkB,MAAMI,IAAI,CAAC;oBACtBJ;oBACAX;oBACAE;oBACAC;oBACAC;oBACAE;oBACAC;oBACAC;gBACF;gBAEApB,MAAM,CAAC6B,eAAe,GAAG7B,MAAM,CAAC6B,eAAe,CAACY,MAAM,CAACF;YACzD;YAEA;QACF;QAEA,IAAIhB,MAAMK,IAAI,KAAK,UAAU;YAC3BL,MAAMrB,MAAM,CAACoB,OAAO,CAAC,CAAC,EAAEoB,IAAI,EAAE;gBAC5BvC,eAAewC,GAAG,CAACrD,YAAYoD;YACjC;YAEA,IAAInB,MAAMS,SAAS,EAAE;gBACnB,IAAI,OAAO3B,IAAI,CAACkB,MAAMI,IAAI,CAAC,KAAK,YAAYtB,IAAI,CAACkB,MAAMI,IAAI,CAAC,KAAK,MAAM;oBACrEM,OAAOC,OAAO,CAAC7B,IAAI,CAACkB,MAAMI,IAAI,CAAC,EAAEL,OAAO,CAAC,CAAC,CAACa,WAAWC,WAAW;wBAC/D,IAAIC,MAAMC,OAAO,CAACF,aAAa;4BAC7B3C,gBAAgB;gCACdM;gCACAE;gCACAC;gCACAC;gCACAE,MAAM+B;gCACNb;gCACAiB,QAAQL;gCACRvB;gCACAE;gCACAC;gCACAC;gCACAE;gCACAC;gCACAC,0BAA0Be;4BAC5B;wBACF;oBACF;gBACF;YACF,OAAO,IAAI5C,cAAcmC,YAAY;gBACnCjC,gBAAgB;oBACdM;oBACAE;oBACAC;oBACAC;oBACAE,MAAMqB;oBACNH;oBACAX;oBACAE;oBACAC;oBACAC;oBACAE;oBACAC;oBACAC;gBACF;YACF;YAEA;QACF;QAEA,IAAIG,MAAMK,IAAI,KAAK,WAAWL,MAAMK,IAAI,KAAK,OAAO;YAClD,IAAI,OAAOvB,IAAI,CAACkB,MAAMI,IAAI,CAAC,KAAK,YAAYtB,IAAI,CAACkB,MAAMI,IAAI,CAAC,KAAK,MAAM;gBACrE,IAAIJ,MAAMS,SAAS,EAAE;oBACnBC,OAAOC,OAAO,CAAC7B,IAAI,CAACkB,MAAMI,IAAI,CAAC,EAAEL,OAAO,CAAC,CAAC,CAACa,WAAWC,WAAW;wBAC/D,gCAAgC;wBAChCA,WAAWf,KAAK,GAAGhB,KAAKuC,EAAE,IAAIvC,KAAKgB,KAAK;wBAExCvB,eAAe;4BACbC;4BACAC;4BACAC;4BACAC;4BACAC;4BACAC,cAAc,GAAGoB,WAAW,CAAC,CAAC;4BAC9BnB,MAAM+B;4BACN9B;4BACAC,aAAa,GAAGkB,UAAU,CAAC,CAAC;4BAC5BjB,QAAQe,MAAMsB,eAAe;4BAC7BpC,cAAc0B;4BACdzB;4BACAC;4BACAC;4BACAC;4BACAC,MAAM,GAAGA,QAAQ,KAAKS,MAAMI,IAAI,CAAC,CAAC,CAAC;4BACnCZ;4BACAC;4BACAC;4BACAC;4BACAC;4BACAC,0BAA0Be;wBAC5B;oBACF;gBACF,OAAO;oBACL,gCAAgC;oBAChC,MAAMW,YAAYzC,IAAI,CAACkB,MAAMI,IAAI,CAAC;oBAClCmB,UAAUzB,KAAK,GAAGhB,KAAKuC,EAAE,IAAIvC,KAAKgB,KAAK;oBAEvCvB,eAAe;wBACbC;wBACAC;wBACAC;wBACAC;wBACAC;wBACAC,cAAc,GAAGoB,WAAW,CAAC,CAAC;wBAC9BnB,MAAMyC;wBACNxC;wBACAC,aAAa,GAAGkB,UAAU,CAAC,CAAC;wBAC5BjB,QAAQe,MAAMsB,eAAe;wBAC7BnC;wBACAC;wBACAC;wBACAC;wBACAC,MAAM,GAAGA,QAAQ,KAAKS,MAAMI,IAAI,CAAC,CAAC,CAAC;wBACnCZ;wBACAC;wBACAC;wBACAC;wBACAC;wBACAC;oBACF;gBACF;YACF;YAEA;QACF;QAEA,IAAIG,MAAMK,IAAI,KAAK,kBAAkBL,MAAMK,IAAI,KAAK,UAAU;YAC5D,MAAMmB,mBAAmB,GAAGjC,QAAQ,KAAKS,MAAMI,IAAI,EAAE;YAErD,IACEJ,MAAMS,SAAS,IACdK,CAAAA,MAAMC,OAAO,CAACf,MAAMyB,UAAU,KAAM,aAAazB,SAASA,MAAM0B,OAAO,GACxE;gBACA,IAAI,OAAOvB,cAAc,UAAU;oBACjCO,OAAOC,OAAO,CAACR,WAAWJ,OAAO,CAAC,CAAC,CAACa,WAAWC,WAAW;wBACxD,IAAIA,eAAe,MAAM;4BACvBpB,sBAAsBkC,IAAI,CAAC;gCACzBV,QAAQL;gCACRrB,MAAMiC;4BACR;4BACA;wBACF;wBAEApD,sBAAsB;4BACpBwD,SAAS;gCACPX,QAAQL;gCACRrB,MAAMiC;4BACR;4BACA1C,MAAM+B;4BACNb;4BACAR;wBACF;oBACF;gBACF;gBACA;YACF,OAAO,IAAIsB,MAAMC,OAAO,CAACf,MAAMyB,UAAU,KAAM,aAAazB,SAASA,MAAM0B,OAAO,EAAG;gBACnF,IAAIvB,cAAc,QAASW,MAAMC,OAAO,CAACZ,cAAcA,UAAU0B,MAAM,KAAK,GAAI;oBAC9EpC,sBAAsBkC,IAAI,CAAC;wBAAEpC,MAAMiC;oBAAiB;oBACpD;gBACF;gBAEApD,sBAAsB;oBACpBwD,SAAS;wBACPX,QAAQpB;wBACRN,MAAMiC;oBACR;oBACA1C,MAAMqB;oBACNH;oBACAR;gBACF;gBACA;YACF,OAAO;gBACL,IACE,CAACQ,MAAMS,SAAS,IAChBN,aACA,OAAOA,cAAc,YACrB,QAAQA,aACRA,WAAWkB,IACX;oBACAlB,YAAYA,UAAUkB,EAAE;gBAC1B,OAAO,IAAIrB,MAAMS,SAAS,EAAE;oBAC1B,IAAI,OAAON,cAAc,UAAU;wBACjCO,OAAOC,OAAO,CAACR,WAAWJ,OAAO,CAAC,CAAC,CAACa,WAAWC,WAAW;4BACxD,IAAI,OAAOA,eAAe,UAAU;gCAClC,IAAIA,cAAc,QAAQA,cAAcA,YAAYQ,IAAI;oCACtDlB,SAAS,CAACS,UAAU,GAAGC,WAAWQ,EAAE;gCACtC;4BACF,OAAO;gCACLlB,SAAS,CAACS,UAAU,GAAGC;4BACzB;wBACF;oBACF;gBACF;YACF;QACF;QAEA,IAAIb,MAAMK,IAAI,KAAK,UAAUL,MAAM0B,OAAO,EAAE;YAC1C,MAAMI,WAAW,GAAGvC,QAAQ,KAAKS,MAAMI,IAAI,EAAE;YAE7C,IAAIJ,MAAMS,SAAS,EAAE;gBACnB,IAAI,OAAON,cAAc,UAAU;oBACjCO,OAAOC,OAAO,CAACR,WAAWJ,OAAO,CAAC,CAAC,CAACa,WAAWC,WAAW;wBACxD,IAAIC,MAAMC,OAAO,CAACF,aAAa;4BAC7BvC,eAAe;gCACbsD,SAAS;oCACPX,QAAQL;oCACRrB,MAAMuC;gCACR;gCACAhD,MAAM+B;gCACNjB;4BACF;wBACF;oBACF;gBACF;YACF,OAAO,IAAIkB,MAAMC,OAAO,CAACZ,YAAY;gBACnC7B,eAAe;oBACbsD,SAAS;wBACPX,QAAQpB;wBACRN,MAAMuC;oBACR;oBACAhD,MAAMqB;oBACNP;gBACF;YACF;YAEA;QACF;QAEA,IAAII,MAAMK,IAAI,KAAK,YAAYL,MAAM0B,OAAO,EAAE;YAC5C,MAAMK,aAAa,GAAGxC,QAAQ,KAAKS,MAAMI,IAAI,EAAE;YAE/C,IAAIJ,MAAMS,SAAS,EAAE;gBACnB,IAAI,OAAON,cAAc,UAAU;oBACjCO,OAAOC,OAAO,CAACR,WAAWJ,OAAO,CAAC,CAAC,CAACa,WAAWC,WAAW;wBACxD,IAAIC,MAAMC,OAAO,CAACF,aAAa;4BAC7B1C,iBAAiB;gCACfyD,SAAS;oCACPX,QAAQL;oCACRrB,MAAMwC;gCACR;gCACAjD,MAAM+B;gCACNxB;4BACF;wBACF;oBACF;gBACF;YACF,OAAO,IAAIyB,MAAMC,OAAO,CAACZ,YAAY;gBACnChC,iBAAiB;oBACfyD,SAAS;wBACPX,QAAQpB;wBACRN,MAAMwC;oBACR;oBACAjD,MAAMqB;oBACNd;gBACF;YACF;YAEA;QACF;QAEA,IAAIW,MAAMK,IAAI,KAAK,YAAYL,MAAM0B,OAAO,EAAE;YAC5C,MAAMM,kBAAkBxD,QAAQ+B,YAAY,CAACC,GAAG,CAAC,GAAGlB,gBAAgB,CAAC,EAAEW,YAAY;YACnF,IAAI,CAACN,OAAO,CAACqC,gBAAgB,EAAE;gBAC7BrC,OAAO,CAACqC,gBAAgB,GAAG,EAAE;YAC/B;YAEA,IAAIhC,MAAMS,SAAS,EAAE;gBACnB,IAAI,OAAO3B,IAAI,CAACkB,MAAMI,IAAI,CAAC,KAAK,YAAYtB,IAAI,CAACkB,MAAMI,IAAI,CAAC,KAAK,MAAM;oBACrEM,OAAOC,OAAO,CAAC7B,IAAI,CAACkB,MAAMI,IAAI,CAAC,EAAEL,OAAO,CAAC,CAAC,CAACa,WAAWC,WAAW;wBAC/D,IAAIC,MAAMC,OAAO,CAACF,aAAa;4BAC7B,MAAMG,UAAU3C,iBAAiB;gCAC/BgD,IAAIlC,qBAAqBL,KAAKgB,KAAK,IAAIhB,KAAKuC,EAAE,GAAGY;gCACjDnD,MAAM+B;gCACNI,QAAQL;4BACV;4BAEAjB,OAAO,CAACqC,gBAAgB,GAAGrC,OAAO,CAACqC,gBAAgB,CAACd,MAAM,CAACF;wBAC7D;oBACF;gBACF;YACF,OAAO,IAAIF,MAAMC,OAAO,CAACjC,IAAI,CAACkB,MAAMI,IAAI,CAAC,GAAG;gBAC1C,MAAMY,UAAU3C,iBAAiB;oBAC/BgD,IAAIlC,qBAAqBL,KAAKgB,KAAK,IAAIhB,KAAKuC,EAAE,GAAGY;oBACjDnD,MAAMA,IAAI,CAACkB,MAAMI,IAAI,CAAC;oBACtBa,QAAQpB;gBACV;gBAEAF,OAAO,CAACqC,gBAAgB,GAAGrC,OAAO,CAACqC,gBAAgB,CAACd,MAAM,CAACF;YAC7D;YAEA;QACF;QAEA,MAAMkB,oBAA4E,EAAE;QAEpF,IAAIlC,MAAMS,SAAS,EAAE;YACnB,IAAI,OAAON,cAAc,YAAYA,cAAc,MAAM;gBACvDO,OAAOC,OAAO,CAACR,WAAWJ,OAAO,CAAC,CAAC,CAACa,WAAWC,WAAW;oBACxD,IAAI,CAACzB,OAAO,CAACwB,UAAU,EAAE;wBACvBxB,OAAO,CAACwB,UAAU,GAAG,CAAC;oBACxB;oBAEAsB,kBAAkBP,IAAI,CAAC;wBACrBf;wBACAuB,KAAK/C;wBACLgD,OAAOvB;oBACT;gBACF;YACF;QACF,OAAO;YACL,IAAIsB,MAAMzC;YAEV,IAAIR,cAAc;gBAChB,IAAI,CAACE,OAAO,CAACF,aAAa,EAAE;oBAC1BE,OAAO,CAACF,aAAa,GAAG,CAAC;gBAC3B;gBACAiD,MAAM/C,OAAO,CAACF,aAAa;YAC7B;YAEAgD,kBAAkBP,IAAI,CAAC;gBAAEQ;gBAAKC,OAAOjC;YAAU;QACjD;QAEA+B,kBAAkBnC,OAAO,CAAC,CAAC,EAAEa,SAAS,EAAEuB,GAAG,EAAEC,KAAK,EAAE;YAClD,IAAIC,iBAAiBD;YAErB,IAAI,OAAOA,UAAU,aAAa;gBAChC,IAAIA,SAASpC,MAAMK,IAAI,KAAK,WAAW7B,QAAQ4B,IAAI,KAAK,UAAU;oBAChEiC,iBAAiBxE,GAAG,CAAC,mBAAmB,EAAEyE,KAAKC,SAAS,CAACH,OAAO,CAAC,CAAC;gBACpE;gBAEA,IAAIpC,MAAMK,IAAI,KAAK,QAAQ;oBACzB,IAAI,OAAO+B,UAAU,YAAY,CAACI,OAAOC,KAAK,CAACL,QAAQ;wBACrDC,iBAAiB,IAAIK,KAAKN,OAAOO,WAAW;oBAC9C,OAAO,IAAIP,iBAAiBM,MAAM;wBAChCL,iBAAiBD,MAAMO,WAAW;oBACpC;gBACF;YACF;YAEA,IAAI3C,MAAMK,IAAI,KAAK,UAAUH,cAAc,aAAa;gBACtD,yBAAyB;gBACzBmC,iBAAiB,IAAIK,OAAOC,WAAW;YACzC;YAEA,IAAI,OAAON,mBAAmB,aAAa;gBACzC,IAAIzB,WAAW;oBACbuB,GAAG,CAACvB,UAAU,CAACV,UAAU,GAAGmC;gBAC9B,OAAO;oBACLF,GAAG,CAACjC,UAAU,GAAGmC;gBACnB;YACF;QACF;IACF;AACF,EAAC"}
1
+ {"version":3,"sources":["../../../src/transform/write/traverseFields.ts"],"sourcesContent":["import type { FlattenedField } from 'payload'\n\nimport { sql } from 'drizzle-orm'\nimport { fieldIsVirtual, fieldShouldBeLocalized } from 'payload/shared'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from '../../types.js'\nimport type { ArrayRowToInsert, BlockRowToInsert, RelationshipToDelete } from './types.js'\n\nimport { isArrayOfRows } from '../../utilities/isArrayOfRows.js'\nimport { transformArray } from './array.js'\nimport { transformBlocks } from './blocks.js'\nimport { transformNumbers } from './numbers.js'\nimport { transformRelationship } from './relationships.js'\nimport { transformSelects } from './selects.js'\nimport { transformTexts } from './texts.js'\n\ntype Args = {\n adapter: DrizzleAdapter\n arrays: {\n [tableName: string]: ArrayRowToInsert[]\n }\n /**\n * This is the name of the base table\n */\n baseTableName: string\n blocks: {\n [blockType: string]: BlockRowToInsert[]\n }\n blocksToDelete: Set<string>\n /**\n * A snake-case field prefix, representing prior fields\n * Ex: my_group_my_named_tab_\n */\n columnPrefix: string\n data: Record<string, unknown>\n existingLocales?: Record<string, unknown>[]\n /**\n * A prefix that will retain camel-case formatting, representing prior fields\n * Ex: myGroup_myNamedTab_\n */\n fieldPrefix: string\n fields: FlattenedField[]\n forcedLocale?: string\n /**\n * Tracks whether the current traversion context is from array or block.\n */\n insideArrayOrBlock?: boolean\n locales: {\n [locale: string]: Record<string, unknown>\n }\n numbers: Record<string, unknown>[]\n parentIsLocalized: boolean\n /**\n * This is the name of the parent table\n */\n parentTableName: string\n path: string\n relationships: Record<string, unknown>[]\n relationshipsToDelete: RelationshipToDelete[]\n row: Record<string, unknown>\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}\n\nexport const traverseFields = ({\n adapter,\n arrays,\n baseTableName,\n blocks,\n blocksToDelete,\n columnPrefix,\n data,\n existingLocales,\n fieldPrefix,\n fields,\n forcedLocale,\n insideArrayOrBlock = false,\n locales,\n numbers,\n parentIsLocalized,\n parentTableName,\n path,\n relationships,\n relationshipsToDelete,\n row,\n selects,\n texts,\n withinArrayOrBlockLocale,\n}: Args) => {\n if (row._uuid) {\n data._uuid = row._uuid\n }\n\n fields.forEach((field) => {\n let columnName = ''\n let fieldName = ''\n let fieldData: unknown\n\n if (fieldIsVirtual(field)) {\n return\n }\n\n columnName = `${columnPrefix || ''}${toSnakeCase(field.name)}`\n fieldName = `${fieldPrefix || ''}${field.name}`\n fieldData = data[field.name]\n\n const isLocalized = fieldShouldBeLocalized({ field, parentIsLocalized })\n\n if (field.type === 'array') {\n const arrayTableName = adapter.tableNameMap.get(`${parentTableName}_${columnName}`)\n\n if (!arrays[arrayTableName]) {\n arrays[arrayTableName] = []\n }\n\n if (isLocalized) {\n if (typeof data[field.name] === 'object' && data[field.name] !== null) {\n Object.entries(data[field.name]).forEach(([localeKey, localeData]) => {\n if (Array.isArray(localeData)) {\n const newRows = transformArray({\n adapter,\n arrayTableName,\n baseTableName,\n blocks,\n blocksToDelete,\n data: localeData,\n field,\n locale: localeKey,\n numbers,\n parentIsLocalized: parentIsLocalized || field.localized,\n path,\n relationships,\n relationshipsToDelete,\n selects,\n texts,\n withinArrayOrBlockLocale: localeKey,\n })\n\n arrays[arrayTableName] = arrays[arrayTableName].concat(newRows)\n }\n })\n }\n } else {\n const newRows = transformArray({\n adapter,\n arrayTableName,\n baseTableName,\n blocks,\n blocksToDelete,\n data: data[field.name],\n field,\n numbers,\n parentIsLocalized: parentIsLocalized || field.localized,\n path,\n relationships,\n relationshipsToDelete,\n selects,\n texts,\n withinArrayOrBlockLocale,\n })\n\n arrays[arrayTableName] = arrays[arrayTableName].concat(newRows)\n }\n\n return\n }\n\n if (field.type === 'blocks') {\n ;(field.blockReferences ?? field.blocks).forEach((block) => {\n blocksToDelete.add(toSnakeCase(typeof block === 'string' ? block : block.slug))\n })\n\n if (isLocalized) {\n if (typeof data[field.name] === 'object' && data[field.name] !== null) {\n Object.entries(data[field.name]).forEach(([localeKey, localeData]) => {\n if (Array.isArray(localeData)) {\n transformBlocks({\n adapter,\n baseTableName,\n blocks,\n blocksToDelete,\n data: localeData,\n field,\n locale: localeKey,\n numbers,\n parentIsLocalized: parentIsLocalized || field.localized,\n path,\n relationships,\n relationshipsToDelete,\n selects,\n texts,\n withinArrayOrBlockLocale: localeKey,\n })\n }\n })\n }\n } else if (isArrayOfRows(fieldData)) {\n transformBlocks({\n adapter,\n baseTableName,\n blocks,\n blocksToDelete,\n data: fieldData,\n field,\n numbers,\n parentIsLocalized: parentIsLocalized || field.localized,\n path,\n relationships,\n relationshipsToDelete,\n selects,\n texts,\n withinArrayOrBlockLocale,\n })\n }\n\n return\n }\n\n if (field.type === 'group' || field.type === 'tab') {\n if (typeof data[field.name] === 'object' && data[field.name] !== null) {\n if (isLocalized) {\n Object.entries(data[field.name]).forEach(([localeKey, localeData]) => {\n // preserve array ID if there is\n localeData._uuid = data.id || data._uuid\n\n traverseFields({\n adapter,\n arrays,\n baseTableName,\n blocks,\n blocksToDelete,\n columnPrefix: `${columnName}_`,\n data: localeData as Record<string, unknown>,\n existingLocales,\n fieldPrefix: `${fieldName}_`,\n fields: field.flattenedFields,\n forcedLocale: localeKey,\n insideArrayOrBlock,\n locales,\n numbers,\n parentIsLocalized: parentIsLocalized || field.localized,\n parentTableName,\n path: `${path || ''}${field.name}.`,\n relationships,\n relationshipsToDelete,\n row,\n selects,\n texts,\n withinArrayOrBlockLocale: localeKey,\n })\n })\n } else {\n // preserve array ID if there is\n const groupData = data[field.name] as Record<string, unknown>\n groupData._uuid = data.id || data._uuid\n\n traverseFields({\n adapter,\n arrays,\n baseTableName,\n blocks,\n blocksToDelete,\n columnPrefix: `${columnName}_`,\n data: groupData,\n existingLocales,\n fieldPrefix: `${fieldName}_`,\n fields: field.flattenedFields,\n insideArrayOrBlock,\n locales,\n numbers,\n parentIsLocalized: parentIsLocalized || field.localized,\n parentTableName,\n path: `${path || ''}${field.name}.`,\n relationships,\n relationshipsToDelete,\n row,\n selects,\n texts,\n withinArrayOrBlockLocale,\n })\n }\n }\n\n return\n }\n\n if (field.type === 'relationship' || field.type === 'upload') {\n const relationshipPath = `${path || ''}${field.name}`\n\n if (\n isLocalized &&\n (Array.isArray(field.relationTo) || ('hasMany' in field && field.hasMany))\n ) {\n if (typeof fieldData === 'object') {\n Object.entries(fieldData).forEach(([localeKey, localeData]) => {\n if (localeData === null) {\n relationshipsToDelete.push({\n locale: localeKey,\n path: relationshipPath,\n })\n return\n }\n\n transformRelationship({\n baseRow: {\n locale: localeKey,\n path: relationshipPath,\n },\n data: localeData,\n field,\n relationships,\n })\n })\n }\n return\n } else if (Array.isArray(field.relationTo) || ('hasMany' in field && field.hasMany)) {\n if (fieldData === null || (Array.isArray(fieldData) && fieldData.length === 0)) {\n relationshipsToDelete.push({ path: relationshipPath })\n return\n }\n\n transformRelationship({\n baseRow: {\n locale: withinArrayOrBlockLocale,\n path: relationshipPath,\n },\n data: fieldData,\n field,\n relationships,\n })\n return\n } else {\n if (\n !isLocalized &&\n fieldData &&\n typeof fieldData === 'object' &&\n 'id' in fieldData &&\n fieldData?.id\n ) {\n fieldData = fieldData.id\n } else if (isLocalized) {\n if (typeof fieldData === 'object') {\n Object.entries(fieldData).forEach(([localeKey, localeData]) => {\n if (typeof localeData === 'object') {\n if (localeData && 'id' in localeData && localeData?.id) {\n fieldData[localeKey] = localeData.id\n }\n } else {\n fieldData[localeKey] = localeData\n }\n })\n }\n }\n }\n }\n\n if (field.type === 'text' && field.hasMany) {\n const textPath = `${path || ''}${field.name}`\n\n if (isLocalized) {\n if (typeof fieldData === 'object') {\n Object.entries(fieldData).forEach(([localeKey, localeData]) => {\n if (Array.isArray(localeData)) {\n transformTexts({\n baseRow: {\n locale: localeKey,\n path: textPath,\n },\n data: localeData,\n texts,\n })\n }\n })\n }\n } else if (Array.isArray(fieldData)) {\n transformTexts({\n baseRow: {\n locale: withinArrayOrBlockLocale,\n path: textPath,\n },\n data: fieldData,\n texts,\n })\n }\n\n return\n }\n\n if (field.type === 'number' && field.hasMany) {\n const numberPath = `${path || ''}${field.name}`\n\n if (isLocalized) {\n if (typeof fieldData === 'object') {\n Object.entries(fieldData).forEach(([localeKey, localeData]) => {\n if (Array.isArray(localeData)) {\n transformNumbers({\n baseRow: {\n locale: localeKey,\n path: numberPath,\n },\n data: localeData,\n numbers,\n })\n }\n })\n }\n } else if (Array.isArray(fieldData)) {\n transformNumbers({\n baseRow: {\n locale: withinArrayOrBlockLocale,\n path: numberPath,\n },\n data: fieldData,\n numbers,\n })\n }\n\n return\n }\n\n if (field.type === 'select' && field.hasMany) {\n const selectTableName = adapter.tableNameMap.get(`${parentTableName}_${columnName}`)\n if (!selects[selectTableName]) {\n selects[selectTableName] = []\n }\n\n if (isLocalized) {\n if (typeof data[field.name] === 'object' && data[field.name] !== null) {\n Object.entries(data[field.name]).forEach(([localeKey, localeData]) => {\n if (Array.isArray(localeData)) {\n const newRows = transformSelects({\n id: insideArrayOrBlock ? data._uuid || data.id : undefined,\n data: localeData,\n locale: localeKey,\n })\n\n selects[selectTableName] = selects[selectTableName].concat(newRows)\n }\n })\n }\n } else if (Array.isArray(data[field.name])) {\n const newRows = transformSelects({\n id: insideArrayOrBlock ? data._uuid || data.id : undefined,\n data: data[field.name],\n locale: withinArrayOrBlockLocale,\n })\n\n selects[selectTableName] = selects[selectTableName].concat(newRows)\n }\n\n return\n }\n\n const valuesToTransform: { localeKey?: string; ref: unknown; value: unknown }[] = []\n\n if (isLocalized) {\n if (typeof fieldData === 'object' && fieldData !== null) {\n Object.entries(fieldData).forEach(([localeKey, localeData]) => {\n if (!locales[localeKey]) {\n locales[localeKey] = {}\n }\n\n valuesToTransform.push({\n localeKey,\n ref: locales,\n value: localeData,\n })\n })\n }\n } else {\n let ref = row\n\n if (forcedLocale) {\n if (!locales[forcedLocale]) {\n locales[forcedLocale] = {}\n }\n ref = locales[forcedLocale]\n }\n\n valuesToTransform.push({ ref, value: fieldData })\n }\n\n valuesToTransform.forEach(({ localeKey, ref, value }) => {\n let formattedValue = value\n\n if (typeof value !== 'undefined') {\n if (value && field.type === 'point' && adapter.name !== 'sqlite') {\n formattedValue = sql`ST_GeomFromGeoJSON(${JSON.stringify(value)})`\n }\n\n if (field.type === 'date') {\n if (typeof value === 'number' && !Number.isNaN(value)) {\n formattedValue = new Date(value).toISOString()\n } else if (value instanceof Date) {\n formattedValue = value.toISOString()\n }\n }\n }\n\n if (field.type === 'date' && fieldName === 'updatedAt') {\n // let the db handle this\n formattedValue = new Date().toISOString()\n }\n\n if (typeof formattedValue !== 'undefined') {\n if (localeKey) {\n ref[localeKey][fieldName] = formattedValue\n } else {\n ref[fieldName] = formattedValue\n }\n }\n })\n })\n}\n"],"names":["sql","fieldIsVirtual","fieldShouldBeLocalized","toSnakeCase","isArrayOfRows","transformArray","transformBlocks","transformNumbers","transformRelationship","transformSelects","transformTexts","traverseFields","adapter","arrays","baseTableName","blocks","blocksToDelete","columnPrefix","data","existingLocales","fieldPrefix","fields","forcedLocale","insideArrayOrBlock","locales","numbers","parentIsLocalized","parentTableName","path","relationships","relationshipsToDelete","row","selects","texts","withinArrayOrBlockLocale","_uuid","forEach","field","columnName","fieldName","fieldData","name","isLocalized","type","arrayTableName","tableNameMap","get","Object","entries","localeKey","localeData","Array","isArray","newRows","locale","localized","concat","blockReferences","block","add","slug","id","flattenedFields","groupData","relationshipPath","relationTo","hasMany","push","baseRow","length","textPath","numberPath","selectTableName","undefined","valuesToTransform","ref","value","formattedValue","JSON","stringify","Number","isNaN","Date","toISOString"],"mappings":"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"}
@@ -1,3 +1,9 @@
1
1
  import type { Field } from 'payload';
2
- export declare const hasLocalesTable: (fields: Field[]) => boolean;
2
+ export declare const hasLocalesTable: ({ fields, parentIsLocalized, }: {
3
+ fields: Field[];
4
+ /**
5
+ * @todo make required in v4.0. Usually you'd wanna pass this in
6
+ */
7
+ parentIsLocalized?: boolean;
8
+ }) => boolean;
3
9
  //# sourceMappingURL=hasLocalesTable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hasLocalesTable.d.ts","sourceRoot":"","sources":["../../src/utilities/hasLocalesTable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAIpC,eAAO,MAAM,eAAe,WAAY,KAAK,EAAE,KAAG,OAiBjD,CAAA"}
1
+ {"version":3,"file":"hasLocalesTable.d.ts","sourceRoot":"","sources":["../../src/utilities/hasLocalesTable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAIpC,eAAO,MAAM,eAAe,mCAGzB;IACD,MAAM,EAAE,KAAK,EAAE,CAAA;IACf;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAC5B,KAAG,OAyBH,CAAA"}
@@ -1,18 +1,27 @@
1
- import { fieldAffectsData, fieldHasSubFields } from 'payload/shared';
2
- export const hasLocalesTable = (fields)=>{
1
+ import { fieldAffectsData, fieldHasSubFields, fieldShouldBeLocalized } from 'payload/shared';
2
+ export const hasLocalesTable = ({ fields, parentIsLocalized })=>{
3
3
  return fields.some((field)=>{
4
4
  // arrays always get a separate table
5
5
  if (field.type === 'array') {
6
6
  return false;
7
7
  }
8
- if (fieldAffectsData(field) && field.localized) {
8
+ if (fieldAffectsData(field) && fieldShouldBeLocalized({
9
+ field,
10
+ parentIsLocalized
11
+ })) {
9
12
  return true;
10
13
  }
11
14
  if (fieldHasSubFields(field)) {
12
- return hasLocalesTable(field.fields);
15
+ return hasLocalesTable({
16
+ fields: field.fields,
17
+ parentIsLocalized: parentIsLocalized || 'localized' in field && field.localized
18
+ });
13
19
  }
14
20
  if (field.type === 'tabs') {
15
- return field.tabs.some((tab)=>hasLocalesTable(tab.fields));
21
+ return field.tabs.some((tab)=>hasLocalesTable({
22
+ fields: tab.fields,
23
+ parentIsLocalized: parentIsLocalized || tab.localized
24
+ }));
16
25
  }
17
26
  return false;
18
27
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utilities/hasLocalesTable.ts"],"sourcesContent":["import type { Field } from 'payload'\n\nimport { fieldAffectsData, fieldHasSubFields } from 'payload/shared'\n\nexport const hasLocalesTable = (fields: Field[]): boolean => {\n return fields.some((field) => {\n // arrays always get a separate table\n if (field.type === 'array') {\n return false\n }\n if (fieldAffectsData(field) && field.localized) {\n return true\n }\n if (fieldHasSubFields(field)) {\n return hasLocalesTable(field.fields)\n }\n if (field.type === 'tabs') {\n return field.tabs.some((tab) => hasLocalesTable(tab.fields))\n }\n return false\n })\n}\n"],"names":["fieldAffectsData","fieldHasSubFields","hasLocalesTable","fields","some","field","type","localized","tabs","tab"],"mappings":"AAEA,SAASA,gBAAgB,EAAEC,iBAAiB,QAAQ,iBAAgB;AAEpE,OAAO,MAAMC,kBAAkB,CAACC;IAC9B,OAAOA,OAAOC,IAAI,CAAC,CAACC;QAClB,qCAAqC;QACrC,IAAIA,MAAMC,IAAI,KAAK,SAAS;YAC1B,OAAO;QACT;QACA,IAAIN,iBAAiBK,UAAUA,MAAME,SAAS,EAAE;YAC9C,OAAO;QACT;QACA,IAAIN,kBAAkBI,QAAQ;YAC5B,OAAOH,gBAAgBG,MAAMF,MAAM;QACrC;QACA,IAAIE,MAAMC,IAAI,KAAK,QAAQ;YACzB,OAAOD,MAAMG,IAAI,CAACJ,IAAI,CAAC,CAACK,MAAQP,gBAAgBO,IAAIN,MAAM;QAC5D;QACA,OAAO;IACT;AACF,EAAC"}
1
+ {"version":3,"sources":["../../src/utilities/hasLocalesTable.ts"],"sourcesContent":["import type { Field } from 'payload'\n\nimport { fieldAffectsData, fieldHasSubFields, fieldShouldBeLocalized } from 'payload/shared'\n\nexport const hasLocalesTable = ({\n fields,\n parentIsLocalized,\n}: {\n fields: Field[]\n /**\n * @todo make required in v4.0. Usually you'd wanna pass this in\n */\n parentIsLocalized?: boolean\n}): boolean => {\n return fields.some((field) => {\n // arrays always get a separate table\n if (field.type === 'array') {\n return false\n }\n if (fieldAffectsData(field) && fieldShouldBeLocalized({ field, parentIsLocalized })) {\n return true\n }\n if (fieldHasSubFields(field)) {\n return hasLocalesTable({\n fields: field.fields,\n parentIsLocalized: parentIsLocalized || ('localized' in field && field.localized),\n })\n }\n if (field.type === 'tabs') {\n return field.tabs.some((tab) =>\n hasLocalesTable({\n fields: tab.fields,\n parentIsLocalized: parentIsLocalized || tab.localized,\n }),\n )\n }\n return false\n })\n}\n"],"names":["fieldAffectsData","fieldHasSubFields","fieldShouldBeLocalized","hasLocalesTable","fields","parentIsLocalized","some","field","type","localized","tabs","tab"],"mappings":"AAEA,SAASA,gBAAgB,EAAEC,iBAAiB,EAAEC,sBAAsB,QAAQ,iBAAgB;AAE5F,OAAO,MAAMC,kBAAkB,CAAC,EAC9BC,MAAM,EACNC,iBAAiB,EAOlB;IACC,OAAOD,OAAOE,IAAI,CAAC,CAACC;QAClB,qCAAqC;QACrC,IAAIA,MAAMC,IAAI,KAAK,SAAS;YAC1B,OAAO;QACT;QACA,IAAIR,iBAAiBO,UAAUL,uBAAuB;YAAEK;YAAOF;QAAkB,IAAI;YACnF,OAAO;QACT;QACA,IAAIJ,kBAAkBM,QAAQ;YAC5B,OAAOJ,gBAAgB;gBACrBC,QAAQG,MAAMH,MAAM;gBACpBC,mBAAmBA,qBAAsB,eAAeE,SAASA,MAAME,SAAS;YAClF;QACF;QACA,IAAIF,MAAMC,IAAI,KAAK,QAAQ;YACzB,OAAOD,MAAMG,IAAI,CAACJ,IAAI,CAAC,CAACK,MACtBR,gBAAgB;oBACdC,QAAQO,IAAIP,MAAM;oBAClBC,mBAAmBA,qBAAqBM,IAAIF,SAAS;gBACvD;QAEJ;QACA,OAAO;IACT;AACF,EAAC"}
@@ -3,10 +3,14 @@ import type { RawTable } from '../types.js';
3
3
  type Args = {
4
4
  block: Block;
5
5
  localized: boolean;
6
+ /**
7
+ * @todo make required in v4.0. Usually you'd wanna pass this in
8
+ */
9
+ parentIsLocalized?: boolean;
6
10
  rootTableName: string;
7
11
  table: RawTable;
8
12
  tableLocales?: RawTable;
9
13
  };
10
- export declare const validateExistingBlockIsIdentical: ({ block, localized, rootTableName, table, tableLocales, }: Args) => void;
14
+ export declare const validateExistingBlockIsIdentical: ({ block, localized, parentIsLocalized, rootTableName, table, tableLocales, }: Args) => void;
11
15
  export {};
12
16
  //# sourceMappingURL=validateExistingBlockIsIdentical.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validateExistingBlockIsIdentical.d.ts","sourceRoot":"","sources":["../../src/utilities/validateExistingBlockIsIdentical.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAS,MAAM,SAAS,CAAA;AAK3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE3C,KAAK,IAAI,GAAG;IACV,KAAK,EAAE,KAAK,CAAA;IACZ,SAAS,EAAE,OAAO,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,KAAK,EAAE,QAAQ,CAAA;IACf,YAAY,CAAC,EAAE,QAAQ,CAAA;CACxB,CAAA;AAkDD,eAAO,MAAM,gCAAgC,8DAM1C,IAAI,KAAG,IA+BT,CAAA"}
1
+ {"version":3,"file":"validateExistingBlockIsIdentical.d.ts","sourceRoot":"","sources":["../../src/utilities/validateExistingBlockIsIdentical.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAS,MAAM,SAAS,CAAA;AAU3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE3C,KAAK,IAAI,GAAG;IACV,KAAK,EAAE,KAAK,CAAA;IACZ,SAAS,EAAE,OAAO,CAAA;IAClB;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,aAAa,EAAE,MAAM,CAAA;IACrB,KAAK,EAAE,QAAQ,CAAA;IACf,YAAY,CAAC,EAAE,QAAQ,CAAA;CACxB,CAAA;AA+DD,eAAO,MAAM,gCAAgC,iFAO1C,IAAI,KAAG,IAkCT,CAAA"}
@@ -1,6 +1,7 @@
1
1
  import { InvalidConfiguration } from 'payload';
2
- import { fieldAffectsData, fieldHasSubFields, tabHasName } from 'payload/shared';
3
- const getFlattenedFieldNames = (fields, prefix = '')=>{
2
+ import { fieldAffectsData, fieldHasSubFields, fieldShouldBeLocalized, tabHasName } from 'payload/shared';
3
+ const getFlattenedFieldNames = (args)=>{
4
+ const { fields, parentIsLocalized, prefix = '' } = args;
4
5
  return fields.reduce((fieldsToUse, field)=>{
5
6
  let fieldPrefix = prefix;
6
7
  if ([
@@ -15,7 +16,11 @@ const getFlattenedFieldNames = (fields, prefix = '')=>{
15
16
  fieldPrefix = 'name' in field ? `${prefix}${field.name}_` : prefix;
16
17
  return [
17
18
  ...fieldsToUse,
18
- ...getFlattenedFieldNames(field.fields, fieldPrefix)
19
+ ...getFlattenedFieldNames({
20
+ fields: field.fields,
21
+ parentIsLocalized: parentIsLocalized || 'localized' in field && field.localized,
22
+ prefix: fieldPrefix
23
+ })
19
24
  ];
20
25
  }
21
26
  if (field.type === 'tabs') {
@@ -30,7 +35,11 @@ const getFlattenedFieldNames = (fields, prefix = '')=>{
30
35
  ...tab,
31
36
  type: 'tab'
32
37
  }
33
- ] : getFlattenedFieldNames(tab.fields, fieldPrefix)
38
+ ] : getFlattenedFieldNames({
39
+ fields: tab.fields,
40
+ parentIsLocalized: parentIsLocalized || tab.localized,
41
+ prefix: fieldPrefix
42
+ })
34
43
  ];
35
44
  }, [])
36
45
  ];
@@ -40,15 +49,21 @@ const getFlattenedFieldNames = (fields, prefix = '')=>{
40
49
  ...fieldsToUse,
41
50
  {
42
51
  name: `${fieldPrefix}${field.name}`,
43
- localized: field.localized
52
+ localized: fieldShouldBeLocalized({
53
+ field,
54
+ parentIsLocalized
55
+ })
44
56
  }
45
57
  ];
46
58
  }
47
59
  return fieldsToUse;
48
60
  }, []);
49
61
  };
50
- export const validateExistingBlockIsIdentical = ({ block, localized, rootTableName, table, tableLocales })=>{
51
- const fieldNames = getFlattenedFieldNames(block.fields);
62
+ export const validateExistingBlockIsIdentical = ({ block, localized, parentIsLocalized, rootTableName, table, tableLocales })=>{
63
+ const fieldNames = getFlattenedFieldNames({
64
+ fields: block.fields,
65
+ parentIsLocalized: parentIsLocalized || localized
66
+ });
52
67
  const missingField = // ensure every field from the config is in the matching table
53
68
  fieldNames.find(({ name, localized })=>{
54
69
  const fieldTable = localized && tableLocales ? tableLocales : table;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utilities/validateExistingBlockIsIdentical.ts"],"sourcesContent":["import type { Block, Field } from 'payload'\n\nimport { InvalidConfiguration } from 'payload'\nimport { fieldAffectsData, fieldHasSubFields, tabHasName } from 'payload/shared'\n\nimport type { RawTable } from '../types.js'\n\ntype Args = {\n block: Block\n localized: boolean\n rootTableName: string\n table: RawTable\n tableLocales?: RawTable\n}\n\nconst getFlattenedFieldNames = (\n fields: Field[],\n prefix: string = '',\n): { localized?: boolean; name: string }[] => {\n return fields.reduce((fieldsToUse, field) => {\n let fieldPrefix = prefix\n\n if (\n ['array', 'blocks', 'relationship', 'upload'].includes(field.type) ||\n ('hasMany' in field && field.hasMany === true)\n ) {\n return fieldsToUse\n }\n\n if (fieldHasSubFields(field)) {\n fieldPrefix = 'name' in field ? `${prefix}${field.name}_` : prefix\n return [...fieldsToUse, ...getFlattenedFieldNames(field.fields, fieldPrefix)]\n }\n\n if (field.type === 'tabs') {\n return [\n ...fieldsToUse,\n ...field.tabs.reduce((tabFields, tab) => {\n fieldPrefix = 'name' in tab ? `${prefix}_${tab.name}` : prefix\n return [\n ...tabFields,\n ...(tabHasName(tab)\n ? [{ ...tab, type: 'tab' }]\n : getFlattenedFieldNames(tab.fields, fieldPrefix)),\n ]\n }, []),\n ]\n }\n\n if (fieldAffectsData(field)) {\n return [\n ...fieldsToUse,\n {\n name: `${fieldPrefix}${field.name}`,\n localized: field.localized,\n },\n ]\n }\n\n return fieldsToUse\n }, [])\n}\n\nexport const validateExistingBlockIsIdentical = ({\n block,\n localized,\n rootTableName,\n table,\n tableLocales,\n}: Args): void => {\n const fieldNames = getFlattenedFieldNames(block.fields)\n\n const missingField =\n // ensure every field from the config is in the matching table\n fieldNames.find(({ name, localized }) => {\n const fieldTable = localized && tableLocales ? tableLocales : table\n return Object.keys(fieldTable.columns).indexOf(name) === -1\n }) ||\n // ensure every table column is matched for every field from the config\n Object.keys(table).find((fieldName) => {\n if (!['_locale', '_order', '_parentID', '_path', '_uuid'].includes(fieldName)) {\n return fieldNames.findIndex((field) => field.name) === -1\n }\n })\n\n if (missingField) {\n throw new InvalidConfiguration(\n `The table ${rootTableName} has multiple blocks with slug ${\n block.slug\n }, but the schemas do not match. One block includes the field ${\n typeof missingField === 'string' ? missingField : missingField.name\n }, while the other block does not.`,\n )\n }\n\n if (Boolean(localized) !== Boolean(table.columns._locale)) {\n throw new InvalidConfiguration(\n `The table ${rootTableName} has multiple blocks with slug ${block.slug}, but the schemas do not match. One is localized, but another is not. Block schemas of the same name must match exactly.`,\n )\n }\n}\n"],"names":["InvalidConfiguration","fieldAffectsData","fieldHasSubFields","tabHasName","getFlattenedFieldNames","fields","prefix","reduce","fieldsToUse","field","fieldPrefix","includes","type","hasMany","name","tabs","tabFields","tab","localized","validateExistingBlockIsIdentical","block","rootTableName","table","tableLocales","fieldNames","missingField","find","fieldTable","Object","keys","columns","indexOf","fieldName","findIndex","slug","Boolean","_locale"],"mappings":"AAEA,SAASA,oBAAoB,QAAQ,UAAS;AAC9C,SAASC,gBAAgB,EAAEC,iBAAiB,EAAEC,UAAU,QAAQ,iBAAgB;AAYhF,MAAMC,yBAAyB,CAC7BC,QACAC,SAAiB,EAAE;IAEnB,OAAOD,OAAOE,MAAM,CAAC,CAACC,aAAaC;QACjC,IAAIC,cAAcJ;QAElB,IACE;YAAC;YAAS;YAAU;YAAgB;SAAS,CAACK,QAAQ,CAACF,MAAMG,IAAI,KAChE,aAAaH,SAASA,MAAMI,OAAO,KAAK,MACzC;YACA,OAAOL;QACT;QAEA,IAAIN,kBAAkBO,QAAQ;YAC5BC,cAAc,UAAUD,QAAQ,GAAGH,SAASG,MAAMK,IAAI,CAAC,CAAC,CAAC,GAAGR;YAC5D,OAAO;mBAAIE;mBAAgBJ,uBAAuBK,MAAMJ,MAAM,EAAEK;aAAa;QAC/E;QAEA,IAAID,MAAMG,IAAI,KAAK,QAAQ;YACzB,OAAO;mBACFJ;mBACAC,MAAMM,IAAI,CAACR,MAAM,CAAC,CAACS,WAAWC;oBAC/BP,cAAc,UAAUO,MAAM,GAAGX,OAAO,CAAC,EAAEW,IAAIH,IAAI,EAAE,GAAGR;oBACxD,OAAO;2BACFU;2BACCb,WAAWc,OACX;4BAAC;gCAAE,GAAGA,GAAG;gCAAEL,MAAM;4BAAM;yBAAE,GACzBR,uBAAuBa,IAAIZ,MAAM,EAAEK;qBACxC;gBACH,GAAG,EAAE;aACN;QACH;QAEA,IAAIT,iBAAiBQ,QAAQ;YAC3B,OAAO;mBACFD;gBACH;oBACEM,MAAM,GAAGJ,cAAcD,MAAMK,IAAI,EAAE;oBACnCI,WAAWT,MAAMS,SAAS;gBAC5B;aACD;QACH;QAEA,OAAOV;IACT,GAAG,EAAE;AACP;AAEA,OAAO,MAAMW,mCAAmC,CAAC,EAC/CC,KAAK,EACLF,SAAS,EACTG,aAAa,EACbC,KAAK,EACLC,YAAY,EACP;IACL,MAAMC,aAAapB,uBAAuBgB,MAAMf,MAAM;IAEtD,MAAMoB,eACJ,8DAA8D;IAC9DD,WAAWE,IAAI,CAAC,CAAC,EAAEZ,IAAI,EAAEI,SAAS,EAAE;QAClC,MAAMS,aAAaT,aAAaK,eAAeA,eAAeD;QAC9D,OAAOM,OAAOC,IAAI,CAACF,WAAWG,OAAO,EAAEC,OAAO,CAACjB,UAAU,CAAC;IAC5D,MACA,uEAAuE;IACvEc,OAAOC,IAAI,CAACP,OAAOI,IAAI,CAAC,CAACM;QACvB,IAAI,CAAC;YAAC;YAAW;YAAU;YAAa;YAAS;SAAQ,CAACrB,QAAQ,CAACqB,YAAY;YAC7E,OAAOR,WAAWS,SAAS,CAAC,CAACxB,QAAUA,MAAMK,IAAI,MAAM,CAAC;QAC1D;IACF;IAEF,IAAIW,cAAc;QAChB,MAAM,IAAIzB,qBACR,CAAC,UAAU,EAAEqB,cAAc,+BAA+B,EACxDD,MAAMc,IAAI,CACX,6DAA6D,EAC5D,OAAOT,iBAAiB,WAAWA,eAAeA,aAAaX,IAAI,CACpE,iCAAiC,CAAC;IAEvC;IAEA,IAAIqB,QAAQjB,eAAeiB,QAAQb,MAAMQ,OAAO,CAACM,OAAO,GAAG;QACzD,MAAM,IAAIpC,qBACR,CAAC,UAAU,EAAEqB,cAAc,+BAA+B,EAAED,MAAMc,IAAI,CAAC,wHAAwH,CAAC;IAEpM;AACF,EAAC"}
1
+ {"version":3,"sources":["../../src/utilities/validateExistingBlockIsIdentical.ts"],"sourcesContent":["import type { Block, Field } from 'payload'\n\nimport { InvalidConfiguration } from 'payload'\nimport {\n fieldAffectsData,\n fieldHasSubFields,\n fieldShouldBeLocalized,\n tabHasName,\n} from 'payload/shared'\n\nimport type { RawTable } from '../types.js'\n\ntype Args = {\n block: Block\n localized: boolean\n /**\n * @todo make required in v4.0. Usually you'd wanna pass this in\n */\n parentIsLocalized?: boolean\n rootTableName: string\n table: RawTable\n tableLocales?: RawTable\n}\n\nconst getFlattenedFieldNames = (args: {\n fields: Field[]\n parentIsLocalized: boolean\n prefix?: string\n}): { localized?: boolean; name: string }[] => {\n const { fields, parentIsLocalized, prefix = '' } = args\n return fields.reduce((fieldsToUse, field) => {\n let fieldPrefix = prefix\n\n if (\n ['array', 'blocks', 'relationship', 'upload'].includes(field.type) ||\n ('hasMany' in field && field.hasMany === true)\n ) {\n return fieldsToUse\n }\n\n if (fieldHasSubFields(field)) {\n fieldPrefix = 'name' in field ? `${prefix}${field.name}_` : prefix\n return [\n ...fieldsToUse,\n ...getFlattenedFieldNames({\n fields: field.fields,\n parentIsLocalized: parentIsLocalized || ('localized' in field && field.localized),\n prefix: fieldPrefix,\n }),\n ]\n }\n\n if (field.type === 'tabs') {\n return [\n ...fieldsToUse,\n ...field.tabs.reduce((tabFields, tab) => {\n fieldPrefix = 'name' in tab ? `${prefix}_${tab.name}` : prefix\n return [\n ...tabFields,\n ...(tabHasName(tab)\n ? [{ ...tab, type: 'tab' }]\n : getFlattenedFieldNames({\n fields: tab.fields,\n parentIsLocalized: parentIsLocalized || tab.localized,\n prefix: fieldPrefix,\n })),\n ]\n }, []),\n ]\n }\n\n if (fieldAffectsData(field)) {\n return [\n ...fieldsToUse,\n {\n name: `${fieldPrefix}${field.name}`,\n localized: fieldShouldBeLocalized({ field, parentIsLocalized }),\n },\n ]\n }\n\n return fieldsToUse\n }, [])\n}\n\nexport const validateExistingBlockIsIdentical = ({\n block,\n localized,\n parentIsLocalized,\n rootTableName,\n table,\n tableLocales,\n}: Args): void => {\n const fieldNames = getFlattenedFieldNames({\n fields: block.fields,\n parentIsLocalized: parentIsLocalized || localized,\n })\n\n const missingField =\n // ensure every field from the config is in the matching table\n fieldNames.find(({ name, localized }) => {\n const fieldTable = localized && tableLocales ? tableLocales : table\n return Object.keys(fieldTable.columns).indexOf(name) === -1\n }) ||\n // ensure every table column is matched for every field from the config\n Object.keys(table).find((fieldName) => {\n if (!['_locale', '_order', '_parentID', '_path', '_uuid'].includes(fieldName)) {\n return fieldNames.findIndex((field) => field.name) === -1\n }\n })\n\n if (missingField) {\n throw new InvalidConfiguration(\n `The table ${rootTableName} has multiple blocks with slug ${\n block.slug\n }, but the schemas do not match. One block includes the field ${\n typeof missingField === 'string' ? missingField : missingField.name\n }, while the other block does not.`,\n )\n }\n\n if (Boolean(localized) !== Boolean(table.columns._locale)) {\n throw new InvalidConfiguration(\n `The table ${rootTableName} has multiple blocks with slug ${block.slug}, but the schemas do not match. One is localized, but another is not. Block schemas of the same name must match exactly.`,\n )\n }\n}\n"],"names":["InvalidConfiguration","fieldAffectsData","fieldHasSubFields","fieldShouldBeLocalized","tabHasName","getFlattenedFieldNames","args","fields","parentIsLocalized","prefix","reduce","fieldsToUse","field","fieldPrefix","includes","type","hasMany","name","localized","tabs","tabFields","tab","validateExistingBlockIsIdentical","block","rootTableName","table","tableLocales","fieldNames","missingField","find","fieldTable","Object","keys","columns","indexOf","fieldName","findIndex","slug","Boolean","_locale"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payloadcms/drizzle",
3
- "version": "3.23.0",
3
+ "version": "3.24.0-canary.05013b2",
4
4
  "description": "A library of shared functions used by different payload database adapters",
5
5
  "homepage": "https://payloadcms.com",
6
6
  "repository": {
@@ -52,11 +52,11 @@
52
52
  "@libsql/client": "0.14.0",
53
53
  "@types/pg": "8.10.2",
54
54
  "@types/to-snake-case": "1.0.0",
55
- "payload": "3.23.0",
56
- "@payloadcms/eslint-config": "3.9.0"
55
+ "@payloadcms/eslint-config": "3.9.0",
56
+ "payload": "3.24.0-canary.05013b2"
57
57
  },
58
58
  "peerDependencies": {
59
- "payload": "3.23.0"
59
+ "payload": "3.24.0-canary.05013b2"
60
60
  },
61
61
  "scripts": {
62
62
  "build": "pnpm build:swc && pnpm build:types",