@payloadcms/drizzle 3.24.0-canary.a62d86f → 3.24.0-canary.d22403c

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,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../src/find/traverseFields.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAS,MAAM,SAAS,CAAA;AAMvF,OAAO,KAAK,EAAE,qBAAqB,EAAkB,cAAc,EAAE,MAAM,aAAa,CAAA;AACxF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AA+CpD,KAAK,iBAAiB,GAAG;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,cAAc,CAAA;IACvB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,gBAAgB,EAAE,MAAM,CAAA;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,SAAS,EAAE,SAAS,CAAA;IACpB,KAAK,CAAC,EAAE,qBAAqB,CAAA;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,uBAAuB,CAAC,EAAE,OAAO,CAAA;IACjC,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACrC,iBAAiB,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,gBAAgB,EAAE;QAChB,OAAO,CAAC,EAAE,OAAO,CAAA;QACjB,IAAI,CAAC,EAAE,OAAO,CAAA;QACd,KAAK,CAAC,EAAE,OAAO,CAAA;KAChB,CAAA;CACF,CAAA;AAED,eAAO,MAAM,cAAc,iQAqBxB,iBAAiB,4BAkoBnB,CAAA"}
1
+ {"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../src/find/traverseFields.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAS,MAAM,SAAS,CAAA;AAMvF,OAAO,KAAK,EAAE,qBAAqB,EAAkB,cAAc,EAAE,MAAM,aAAa,CAAA;AACxF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AASpD,KAAK,iBAAiB,GAAG;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,cAAc,CAAA;IACvB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,gBAAgB,EAAE,MAAM,CAAA;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,SAAS,EAAE,SAAS,CAAA;IACpB,KAAK,CAAC,EAAE,qBAAqB,CAAA;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,uBAAuB,CAAC,EAAE,OAAO,CAAA;IACjC,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACrC,iBAAiB,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,gBAAgB,EAAE;QAChB,OAAO,CAAC,EAAE,OAAO,CAAA;QACjB,IAAI,CAAC,EAAE,OAAO,CAAA;QACd,KAAK,CAAC,EAAE,OAAO,CAAA;KAChB,CAAA;CACF,CAAA;AAED,eAAO,MAAM,cAAc,iQAqBxB,iBAAiB,4BA+gBnB,CAAA"}
@@ -1,51 +1,12 @@
1
- import { and, asc, desc, eq, or, sql } from 'drizzle-orm';
1
+ import { sql } from 'drizzle-orm';
2
2
  import { fieldIsVirtual, fieldShouldBeLocalized } from 'payload/shared';
3
3
  import toSnakeCase from 'to-snake-case';
4
4
  import buildQuery from '../queries/buildQuery.js';
5
5
  import { getTableAlias } from '../queries/getTableAlias.js';
6
- import { operatorMap } from '../queries/operatorMap.js';
7
6
  import { getNameFromDrizzleTable } from '../utilities/getNameFromDrizzleTable.js';
8
7
  import { jsonAggBuildObject } from '../utilities/json.js';
9
8
  import { rawConstraint } from '../utilities/rawConstraint.js';
10
9
  import { chainMethods } from './chainMethods.js';
11
- const flattenAllWherePaths = (where, paths)=>{
12
- for(const k in where){
13
- if ([
14
- 'AND',
15
- 'OR'
16
- ].includes(k.toUpperCase())) {
17
- if (Array.isArray(where[k])) {
18
- for (const whereField of where[k]){
19
- flattenAllWherePaths(whereField, paths);
20
- }
21
- }
22
- } else {
23
- // TODO: explore how to support arrays/relationship querying.
24
- paths.push(k.split('.').join('_'));
25
- }
26
- }
27
- };
28
- const buildSQLWhere = (where, alias)=>{
29
- for(const k in where){
30
- if ([
31
- 'AND',
32
- 'OR'
33
- ].includes(k.toUpperCase())) {
34
- if (Array.isArray(where[k])) {
35
- const op = 'AND' === k.toUpperCase() ? and : or;
36
- const accumulated = [];
37
- for (const whereField of where[k]){
38
- accumulated.push(buildSQLWhere(whereField, alias));
39
- }
40
- return op(...accumulated);
41
- }
42
- } else {
43
- const payloadOperator = Object.keys(where[k])[0];
44
- const value = where[k][payloadOperator];
45
- return operatorMap[payloadOperator](sql.raw(`"${alias}"."${k.split('.').join('_')}"`), value);
46
- }
47
- }
48
- };
49
10
  export const traverseFields = ({ _locales, adapter, collectionSlug, currentArgs, currentTableName, depth, fields, joinQuery = {}, joins, locale, parentIsLocalized = false, path, select, selectAllOnCurrentLevel = false, selectMode, tablePath, topLevelArgs, topLevelTableName, versions, withTabledFields })=>{
50
11
  fields.forEach((field)=>{
51
12
  if (fieldIsVirtual(field)) {
@@ -259,181 +220,100 @@ export const traverseFields = ({ _locales, adapter, collectionSlug, currentArgs,
259
220
  if (joinQuery[joinSchemaPath] === false) {
260
221
  break;
261
222
  }
262
- const { limit: limitArg = field.defaultLimit ?? 10, page, sort = field.defaultSort, where } = joinQuery[joinSchemaPath] || {};
223
+ const { limit: limitArg = field.defaultLimit ?? 10, sort = field.defaultSort, where } = joinQuery[joinSchemaPath] || {};
263
224
  let limit = limitArg;
264
225
  if (limit !== 0) {
265
226
  // get an additional document and slice it later to determine if there is a next page
266
227
  limit += 1;
267
228
  }
268
- const columnName = `${path.replaceAll('.', '_')}${field.name}`;
269
- const db = adapter.drizzle;
270
- if (Array.isArray(field.collection)) {
271
- let currentQuery = null;
272
- const onPath = field.on.split('.').join('_');
273
- if (Array.isArray(sort)) {
274
- throw new Error('Not implemented');
275
- }
276
- let sanitizedSort = sort;
277
- if (!sanitizedSort) {
278
- if (field.collection.some((collection)=>adapter.payload.collections[collection].config.fields.some((f)=>f.type === 'date' && f.name === 'createdAt'))) {
279
- sanitizedSort = '-createdAt';
280
- } else {
281
- sanitizedSort = 'id';
282
- }
283
- }
284
- const sortOrder = sanitizedSort.startsWith('-') ? desc : asc;
285
- sanitizedSort = sanitizedSort.replace('-', '');
286
- const sortPath = sanitizedSort.split('.').join('_');
287
- const wherePaths = [];
288
- if (where) {
289
- flattenAllWherePaths(where, wherePaths);
290
- }
291
- for (const collection of field.collection){
292
- const joinCollectionTableName = adapter.tableNameMap.get(toSnakeCase(collection));
293
- const table = adapter.tables[joinCollectionTableName];
294
- const sortColumn = table[sortPath];
295
- const selectFields = {
296
- id: adapter.tables[joinCollectionTableName].id,
297
- parent: sql`${adapter.tables[joinCollectionTableName][onPath]}`.as(onPath),
298
- relationTo: sql`${collection}`.as('relationTo'),
299
- sortPath: sql`${sortColumn ? sortColumn : null}`.as('sortPath')
300
- };
301
- // Select for WHERE and Fallback NULL
302
- for (const path of wherePaths){
303
- if (adapter.tables[joinCollectionTableName][path]) {
304
- selectFields[path] = sql`${adapter.tables[joinCollectionTableName][path]}`.as(path);
305
- // Allow to filter by collectionSlug
306
- } else if (path !== 'relationTo') {
307
- selectFields[path] = sql`null`.as(path);
229
+ const fields = adapter.payload.collections[field.collection].config.flattenedFields;
230
+ const joinCollectionTableName = adapter.tableNameMap.get(toSnakeCase(field.collection));
231
+ const joins = [];
232
+ const currentIDColumn = versions ? adapter.tables[currentTableName].parent : adapter.tables[currentTableName].id;
233
+ let joinQueryWhere;
234
+ if (Array.isArray(field.targetField.relationTo)) {
235
+ joinQueryWhere = {
236
+ [field.on]: {
237
+ equals: {
238
+ relationTo: collectionSlug,
239
+ value: rawConstraint(currentIDColumn)
308
240
  }
309
241
  }
310
- const query = db.select(selectFields).from(adapter.tables[joinCollectionTableName]);
311
- if (currentQuery === null) {
312
- currentQuery = query;
313
- } else {
314
- currentQuery = currentQuery.unionAll(query);
315
- }
316
- }
317
- const subQueryAlias = `${columnName}_subquery`;
318
- let sqlWhere = eq(adapter.tables[currentTableName].id, sql.raw(`"${subQueryAlias}"."${onPath}"`));
319
- if (where && Object.keys(where).length > 0) {
320
- sqlWhere = and(sqlWhere, buildSQLWhere(where, subQueryAlias));
321
- }
322
- currentQuery = currentQuery.orderBy(sortOrder(sql`"sortPath"`));
323
- if (page && limit !== 0) {
324
- const offset = (page - 1) * limit;
325
- if (offset > 0) {
326
- currentQuery = currentQuery.offset(offset);
327
- }
328
- }
329
- if (limit) {
330
- currentQuery = currentQuery.limit(limit);
331
- }
332
- currentArgs.extras[columnName] = sql`${db.select({
333
- id: jsonAggBuildObject(adapter, {
334
- id: sql.raw(`"${subQueryAlias}"."id"`),
335
- relationTo: sql.raw(`"${subQueryAlias}"."relationTo"`)
336
- })
337
- }).from(sql`${currentQuery.as(subQueryAlias)}`).where(sqlWhere)}`.as(columnName);
242
+ };
338
243
  } else {
339
- const fields = adapter.payload.collections[field.collection].config.flattenedFields;
340
- const joinCollectionTableName = adapter.tableNameMap.get(toSnakeCase(field.collection));
341
- const joins = [];
342
- const currentIDColumn = versions ? adapter.tables[currentTableName].parent : adapter.tables[currentTableName].id;
343
- let joinQueryWhere;
344
- if (Array.isArray(field.targetField.relationTo)) {
345
- joinQueryWhere = {
346
- [field.on]: {
347
- equals: {
348
- relationTo: collectionSlug,
349
- value: rawConstraint(currentIDColumn)
350
- }
351
- }
352
- };
353
- } else {
354
- joinQueryWhere = {
355
- [field.on]: {
356
- equals: rawConstraint(currentIDColumn)
357
- }
358
- };
359
- }
360
- if (where && Object.keys(where).length) {
361
- joinQueryWhere = {
362
- and: [
363
- joinQueryWhere,
364
- where
365
- ]
366
- };
367
- }
368
- const columnName = `${path.replaceAll('.', '_')}${field.name}`;
369
- const subQueryAlias = `${columnName}_alias`;
370
- const { newAliasTable } = getTableAlias({
371
- adapter,
372
- tableName: joinCollectionTableName
373
- });
374
- const { orderBy, selectFields, where: subQueryWhere } = buildQuery({
375
- adapter,
376
- aliasTable: newAliasTable,
377
- fields,
378
- joins,
379
- locale,
380
- parentIsLocalized,
381
- selectLocale: true,
382
- sort,
383
- tableName: joinCollectionTableName,
384
- where: joinQueryWhere
244
+ joinQueryWhere = {
245
+ [field.on]: {
246
+ equals: rawConstraint(currentIDColumn)
247
+ }
248
+ };
249
+ }
250
+ if (where && Object.keys(where).length) {
251
+ joinQueryWhere = {
252
+ and: [
253
+ joinQueryWhere,
254
+ where
255
+ ]
256
+ };
257
+ }
258
+ const columnName = `${path.replaceAll('.', '_')}${field.name}`;
259
+ const subQueryAlias = `${columnName}_alias`;
260
+ const { newAliasTable } = getTableAlias({
261
+ adapter,
262
+ tableName: joinCollectionTableName
263
+ });
264
+ const { orderBy, selectFields, where: subQueryWhere } = buildQuery({
265
+ adapter,
266
+ aliasTable: newAliasTable,
267
+ fields,
268
+ joins,
269
+ locale,
270
+ // Parent is never localized, as we're passing the `fields` of a **different** collection here. This means that the
271
+ // parent localization "boundary" is crossed, and we're now in the context of the joined collection.
272
+ parentIsLocalized: false,
273
+ selectLocale: true,
274
+ sort,
275
+ tableName: joinCollectionTableName,
276
+ where: joinQueryWhere
277
+ });
278
+ const chainedMethods = [];
279
+ joins.forEach(({ type, condition, table })=>{
280
+ chainedMethods.push({
281
+ args: [
282
+ table,
283
+ condition
284
+ ],
285
+ method: type ?? 'leftJoin'
385
286
  });
386
- const chainedMethods = [];
387
- joins.forEach(({ type, condition, table })=>{
388
- chainedMethods.push({
389
- args: [
390
- table,
391
- condition
392
- ],
393
- method: type ?? 'leftJoin'
394
- });
287
+ });
288
+ if (limit !== 0) {
289
+ chainedMethods.push({
290
+ args: [
291
+ limit
292
+ ],
293
+ method: 'limit'
395
294
  });
396
- if (page && limit !== 0) {
397
- const offset = (page - 1) * limit - 1;
398
- if (offset > 0) {
399
- chainedMethods.push({
400
- args: [
401
- offset
402
- ],
403
- method: 'offset'
404
- });
405
- }
406
- }
407
- if (limit !== 0) {
408
- chainedMethods.push({
409
- args: [
410
- limit
411
- ],
412
- method: 'limit'
413
- });
414
- }
415
- const db = adapter.drizzle;
416
- for(let key in selectFields){
417
- const val = selectFields[key];
418
- if (val.table && getNameFromDrizzleTable(val.table) === joinCollectionTableName) {
419
- delete selectFields[key];
420
- key = key.split('.').pop();
421
- selectFields[key] = newAliasTable[key];
422
- }
295
+ }
296
+ const db = adapter.drizzle;
297
+ for(let key in selectFields){
298
+ const val = selectFields[key];
299
+ if (val.table && getNameFromDrizzleTable(val.table) === joinCollectionTableName) {
300
+ delete selectFields[key];
301
+ key = key.split('.').pop();
302
+ selectFields[key] = newAliasTable[key];
423
303
  }
424
- const subQuery = chainMethods({
425
- methods: chainedMethods,
426
- query: db.select(selectFields).from(newAliasTable).where(subQueryWhere).orderBy(()=>orderBy.map(({ column, order })=>order(column)))
427
- }).as(subQueryAlias);
428
- currentArgs.extras[columnName] = sql`${db.select({
429
- result: jsonAggBuildObject(adapter, {
430
- id: sql.raw(`"${subQueryAlias}".id`),
431
- ...selectFields._locale && {
432
- locale: sql.raw(`"${subQueryAlias}".${selectFields._locale.name}`)
433
- }
434
- })
435
- }).from(sql`${subQuery}`)}`.as(subQueryAlias);
436
304
  }
305
+ const subQuery = chainMethods({
306
+ methods: chainedMethods,
307
+ query: db.select(selectFields).from(newAliasTable).where(subQueryWhere).orderBy(()=>orderBy.map(({ column, order })=>order(column)))
308
+ }).as(subQueryAlias);
309
+ currentArgs.extras[columnName] = sql`${db.select({
310
+ result: jsonAggBuildObject(adapter, {
311
+ id: sql.raw(`"${subQueryAlias}".id`),
312
+ ...selectFields._locale && {
313
+ locale: sql.raw(`"${subQueryAlias}".${selectFields._locale.name}`)
314
+ }
315
+ })
316
+ }).from(sql`${subQuery}`)}`.as(subQueryAlias);
437
317
  break;
438
318
  }
439
319
  case 'point':
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/find/traverseFields.ts"],"sourcesContent":["import type { LibSQLDatabase } from 'drizzle-orm/libsql'\nimport type { SQLiteSelectBase } from 'drizzle-orm/sqlite-core'\nimport type { FlattenedField, JoinQuery, SelectMode, SelectType, Where } from 'payload'\n\nimport { and, asc, desc, eq, or, sql } from 'drizzle-orm'\nimport { fieldIsVirtual, fieldShouldBeLocalized } from 'payload/shared'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { BuildQueryJoinAliases, ChainedMethods, DrizzleAdapter } from '../types.js'\nimport type { Result } from './buildFindManyArgs.js'\n\nimport buildQuery from '../queries/buildQuery.js'\nimport { getTableAlias } from '../queries/getTableAlias.js'\nimport { operatorMap } from '../queries/operatorMap.js'\nimport { getNameFromDrizzleTable } from '../utilities/getNameFromDrizzleTable.js'\nimport { jsonAggBuildObject } from '../utilities/json.js'\nimport { rawConstraint } from '../utilities/rawConstraint.js'\nimport { chainMethods } from './chainMethods.js'\n\nconst flattenAllWherePaths = (where: Where, paths: string[]) => {\n for (const k in where) {\n if (['AND', 'OR'].includes(k.toUpperCase())) {\n if (Array.isArray(where[k])) {\n for (const whereField of where[k]) {\n flattenAllWherePaths(whereField, paths)\n }\n }\n } else {\n // TODO: explore how to support arrays/relationship querying.\n paths.push(k.split('.').join('_'))\n }\n }\n}\n\nconst buildSQLWhere = (where: Where, alias: string) => {\n for (const k in where) {\n if (['AND', 'OR'].includes(k.toUpperCase())) {\n if (Array.isArray(where[k])) {\n const op = 'AND' === k.toUpperCase() ? and : or\n const accumulated = []\n for (const whereField of where[k]) {\n accumulated.push(buildSQLWhere(whereField, alias))\n }\n return op(...accumulated)\n }\n } else {\n const payloadOperator = Object.keys(where[k])[0]\n const value = where[k][payloadOperator]\n\n return operatorMap[payloadOperator](sql.raw(`\"${alias}\".\"${k.split('.').join('_')}\"`), value)\n }\n }\n}\n\ntype SQLSelect = SQLiteSelectBase<any, any, any, any>\n\ntype TraverseFieldArgs = {\n _locales: Result\n adapter: DrizzleAdapter\n collectionSlug?: string\n currentArgs: Result\n currentTableName: string\n depth?: number\n fields: FlattenedField[]\n joinQuery: JoinQuery\n joins?: BuildQueryJoinAliases\n locale?: string\n parentIsLocalized?: boolean\n path: string\n select?: SelectType\n selectAllOnCurrentLevel?: boolean\n selectMode?: SelectMode\n tablePath: string\n topLevelArgs: Record<string, unknown>\n topLevelTableName: string\n versions?: boolean\n withTabledFields: {\n numbers?: boolean\n rels?: boolean\n texts?: boolean\n }\n}\n\nexport const traverseFields = ({\n _locales,\n adapter,\n collectionSlug,\n currentArgs,\n currentTableName,\n depth,\n fields,\n joinQuery = {},\n joins,\n locale,\n parentIsLocalized = false,\n path,\n select,\n selectAllOnCurrentLevel = false,\n selectMode,\n tablePath,\n topLevelArgs,\n topLevelTableName,\n versions,\n withTabledFields,\n}: TraverseFieldArgs) => {\n fields.forEach((field) => {\n if (fieldIsVirtual(field)) {\n return\n }\n\n const isFieldLocalized = fieldShouldBeLocalized({\n field,\n parentIsLocalized,\n })\n\n // handle simple relationship\n if (\n depth > 0 &&\n (field.type === 'upload' || field.type === 'relationship') &&\n !field.hasMany &&\n typeof field.relationTo === 'string'\n ) {\n if (isFieldLocalized) {\n _locales.with[`${path}${field.name}`] = true\n } else {\n currentArgs.with[`${path}${field.name}`] = true\n }\n }\n\n switch (field.type) {\n case 'array': {\n const arraySelect = selectAllOnCurrentLevel ? true : select?.[field.name]\n\n if (select) {\n if (\n (selectMode === 'include' && typeof arraySelect === 'undefined') ||\n (selectMode === 'exclude' && arraySelect === false)\n ) {\n break\n }\n }\n\n const withArray: Result = {\n columns:\n typeof arraySelect === 'object'\n ? {\n id: true,\n _order: true,\n }\n : {\n _parentID: false,\n },\n orderBy: ({ _order }, { asc }) => [asc(_order)],\n with: {},\n }\n\n const arrayTableName = adapter.tableNameMap.get(\n `${currentTableName}_${tablePath}${toSnakeCase(field.name)}`,\n )\n\n if (typeof arraySelect === 'object') {\n if (adapter.tables[arrayTableName]._locale) {\n withArray.columns._locale = true\n }\n\n if (adapter.tables[arrayTableName]._uuid) {\n withArray.columns._uuid = true\n }\n }\n\n const arrayTableNameWithLocales = `${arrayTableName}${adapter.localesSuffix}`\n\n if (adapter.tables[arrayTableNameWithLocales]) {\n withArray.with._locales = {\n columns:\n typeof arraySelect === 'object'\n ? {\n _locale: true,\n }\n : {\n id: false,\n _parentID: false,\n },\n with: {},\n }\n }\n\n currentArgs.with[`${path}${field.name}`] = withArray\n\n traverseFields({\n _locales: withArray.with._locales,\n adapter,\n currentArgs: withArray,\n currentTableName: arrayTableName,\n depth,\n fields: field.flattenedFields,\n joinQuery,\n locale,\n parentIsLocalized: parentIsLocalized || field.localized,\n path: '',\n select: typeof arraySelect === 'object' ? arraySelect : undefined,\n selectMode,\n tablePath: '',\n topLevelArgs,\n topLevelTableName,\n withTabledFields,\n })\n\n if (\n typeof arraySelect === 'object' &&\n withArray.with._locales &&\n Object.keys(withArray.with._locales).length === 1\n ) {\n delete withArray.with._locales\n }\n\n break\n }\n\n case 'blocks': {\n const blocksSelect = selectAllOnCurrentLevel ? true : select?.[field.name]\n\n if (select) {\n if (\n (selectMode === 'include' && !blocksSelect) ||\n (selectMode === 'exclude' && blocksSelect === false)\n ) {\n break\n }\n }\n\n ;(field.blockReferences ?? field.blocks).forEach((_block) => {\n const block = typeof _block === 'string' ? adapter.payload.blocks[_block] : _block\n const blockKey = `_blocks_${block.slug}`\n\n let blockSelect: boolean | SelectType | undefined\n\n let blockSelectMode = selectMode\n\n if (selectMode === 'include' && blocksSelect === true) {\n blockSelect = true\n }\n\n if (typeof blocksSelect === 'object') {\n if (typeof blocksSelect[block.slug] === 'object') {\n blockSelect = blocksSelect[block.slug]\n } else if (\n (selectMode === 'include' && typeof blocksSelect[block.slug] === 'undefined') ||\n (selectMode === 'exclude' && blocksSelect[block.slug] === false)\n ) {\n blockSelect = {}\n blockSelectMode = 'include'\n } else if (selectMode === 'include' && blocksSelect[block.slug] === true) {\n blockSelect = true\n }\n }\n\n if (!topLevelArgs[blockKey]) {\n const withBlock: Result = {\n columns:\n typeof blockSelect === 'object'\n ? {\n id: true,\n _order: true,\n _path: true,\n }\n : {\n _parentID: false,\n },\n orderBy: ({ _order }, { asc }) => [asc(_order)],\n with: {},\n }\n\n const tableName = adapter.tableNameMap.get(\n `${topLevelTableName}_blocks_${toSnakeCase(block.slug)}`,\n )\n\n if (typeof blockSelect === 'object') {\n if (adapter.tables[tableName]._locale) {\n withBlock.columns._locale = true\n }\n\n if (adapter.tables[tableName]._uuid) {\n withBlock.columns._uuid = true\n }\n }\n\n if (adapter.tables[`${tableName}${adapter.localesSuffix}`]) {\n withBlock.with._locales = {\n with: {},\n }\n\n if (typeof blockSelect === 'object') {\n withBlock.with._locales.columns = {\n _locale: true,\n }\n }\n }\n topLevelArgs.with[blockKey] = withBlock\n\n traverseFields({\n _locales: withBlock.with._locales,\n adapter,\n currentArgs: withBlock,\n currentTableName: tableName,\n depth,\n fields: block.flattenedFields,\n joinQuery,\n locale,\n parentIsLocalized: parentIsLocalized || field.localized,\n path: '',\n select: typeof blockSelect === 'object' ? blockSelect : undefined,\n selectMode: blockSelectMode,\n tablePath: '',\n topLevelArgs,\n topLevelTableName,\n withTabledFields,\n })\n\n if (\n typeof blockSelect === 'object' &&\n withBlock.with._locales &&\n Object.keys(withBlock.with._locales.columns).length === 1\n ) {\n delete withBlock.with._locales\n }\n }\n })\n\n break\n }\n\n case 'group':\n case 'tab': {\n const fieldSelect = select?.[field.name]\n\n if (fieldSelect === false) {\n break\n }\n\n traverseFields({\n _locales,\n adapter,\n collectionSlug,\n currentArgs,\n currentTableName,\n depth,\n fields: field.flattenedFields,\n joinQuery,\n joins,\n locale,\n parentIsLocalized: parentIsLocalized || field.localized,\n path: `${path}${field.name}_`,\n select: typeof fieldSelect === 'object' ? fieldSelect : undefined,\n selectAllOnCurrentLevel:\n selectAllOnCurrentLevel ||\n fieldSelect === true ||\n (selectMode === 'exclude' && typeof fieldSelect === 'undefined'),\n selectMode,\n tablePath: `${tablePath}${toSnakeCase(field.name)}_`,\n topLevelArgs,\n topLevelTableName,\n versions,\n withTabledFields,\n })\n\n break\n }\n case 'join': {\n // when `joinsQuery` is false, do not join\n if (joinQuery === false) {\n break\n }\n\n if (\n (select && selectMode === 'include' && !select[field.name]) ||\n (selectMode === 'exclude' && select[field.name] === false)\n ) {\n break\n }\n\n const joinSchemaPath = `${path.replaceAll('_', '.')}${field.name}`\n\n if (joinQuery[joinSchemaPath] === false) {\n break\n }\n\n const {\n limit: limitArg = field.defaultLimit ?? 10,\n page,\n sort = field.defaultSort,\n where,\n } = joinQuery[joinSchemaPath] || {}\n let limit = limitArg\n\n if (limit !== 0) {\n // get an additional document and slice it later to determine if there is a next page\n limit += 1\n }\n\n const columnName = `${path.replaceAll('.', '_')}${field.name}`\n\n const db = adapter.drizzle as LibSQLDatabase\n\n if (Array.isArray(field.collection)) {\n let currentQuery: null | SQLSelect = null\n const onPath = field.on.split('.').join('_')\n\n if (Array.isArray(sort)) {\n throw new Error('Not implemented')\n }\n\n let sanitizedSort = sort\n\n if (!sanitizedSort) {\n if (\n field.collection.some((collection) =>\n adapter.payload.collections[collection].config.fields.some(\n (f) => f.type === 'date' && f.name === 'createdAt',\n ),\n )\n ) {\n sanitizedSort = '-createdAt'\n } else {\n sanitizedSort = 'id'\n }\n }\n\n const sortOrder = sanitizedSort.startsWith('-') ? desc : asc\n sanitizedSort = sanitizedSort.replace('-', '')\n\n const sortPath = sanitizedSort.split('.').join('_')\n\n const wherePaths: string[] = []\n\n if (where) {\n flattenAllWherePaths(where, wherePaths)\n }\n\n for (const collection of field.collection) {\n const joinCollectionTableName = adapter.tableNameMap.get(toSnakeCase(collection))\n\n const table = adapter.tables[joinCollectionTableName]\n\n const sortColumn = table[sortPath]\n\n const selectFields = {\n id: adapter.tables[joinCollectionTableName].id,\n parent: sql`${adapter.tables[joinCollectionTableName][onPath]}`.as(onPath),\n relationTo: sql`${collection}`.as('relationTo'),\n sortPath: sql`${sortColumn ? sortColumn : null}`.as('sortPath'),\n }\n\n // Select for WHERE and Fallback NULL\n for (const path of wherePaths) {\n if (adapter.tables[joinCollectionTableName][path]) {\n selectFields[path] = sql`${adapter.tables[joinCollectionTableName][path]}`.as(path)\n // Allow to filter by collectionSlug\n } else if (path !== 'relationTo') {\n selectFields[path] = sql`null`.as(path)\n }\n }\n\n const query = db.select(selectFields).from(adapter.tables[joinCollectionTableName])\n if (currentQuery === null) {\n currentQuery = query as unknown as SQLSelect\n } else {\n currentQuery = currentQuery.unionAll(query) as SQLSelect\n }\n }\n\n const subQueryAlias = `${columnName}_subquery`\n\n let sqlWhere = eq(\n adapter.tables[currentTableName].id,\n sql.raw(`\"${subQueryAlias}\".\"${onPath}\"`),\n )\n\n if (where && Object.keys(where).length > 0) {\n sqlWhere = and(sqlWhere, buildSQLWhere(where, subQueryAlias))\n }\n\n currentQuery = currentQuery.orderBy(sortOrder(sql`\"sortPath\"`)) as SQLSelect\n\n if (page && limit !== 0) {\n const offset = (page - 1) * limit\n if (offset > 0) {\n currentQuery = currentQuery.offset(offset) as SQLSelect\n }\n }\n\n if (limit) {\n currentQuery = currentQuery.limit(limit) as SQLSelect\n }\n\n currentArgs.extras[columnName] = sql`${db\n .select({\n id: jsonAggBuildObject(adapter, {\n id: sql.raw(`\"${subQueryAlias}\".\"id\"`),\n relationTo: sql.raw(`\"${subQueryAlias}\".\"relationTo\"`),\n }),\n })\n .from(sql`${currentQuery.as(subQueryAlias)}`)\n .where(sqlWhere)}`.as(columnName)\n } else {\n const fields = adapter.payload.collections[field.collection].config.flattenedFields\n\n const joinCollectionTableName = adapter.tableNameMap.get(toSnakeCase(field.collection))\n\n const joins: BuildQueryJoinAliases = []\n\n const currentIDColumn = versions\n ? adapter.tables[currentTableName].parent\n : adapter.tables[currentTableName].id\n\n let joinQueryWhere: Where\n\n if (Array.isArray(field.targetField.relationTo)) {\n joinQueryWhere = {\n [field.on]: {\n equals: {\n relationTo: collectionSlug,\n value: rawConstraint(currentIDColumn),\n },\n },\n }\n } else {\n joinQueryWhere = {\n [field.on]: {\n equals: rawConstraint(currentIDColumn),\n },\n }\n }\n\n if (where && Object.keys(where).length) {\n joinQueryWhere = {\n and: [joinQueryWhere, where],\n }\n }\n\n const columnName = `${path.replaceAll('.', '_')}${field.name}`\n\n const subQueryAlias = `${columnName}_alias`\n\n const { newAliasTable } = getTableAlias({\n adapter,\n tableName: joinCollectionTableName,\n })\n\n const {\n orderBy,\n selectFields,\n where: subQueryWhere,\n } = buildQuery({\n adapter,\n aliasTable: newAliasTable,\n fields,\n joins,\n locale,\n parentIsLocalized,\n selectLocale: true,\n sort,\n tableName: joinCollectionTableName,\n where: joinQueryWhere,\n })\n\n const chainedMethods: ChainedMethods = []\n\n joins.forEach(({ type, condition, table }) => {\n chainedMethods.push({\n args: [table, condition],\n method: type ?? 'leftJoin',\n })\n })\n\n if (page && limit !== 0) {\n const offset = (page - 1) * limit - 1\n if (offset > 0) {\n chainedMethods.push({\n args: [offset],\n method: 'offset',\n })\n }\n }\n\n if (limit !== 0) {\n chainedMethods.push({\n args: [limit],\n method: 'limit',\n })\n }\n\n const db = adapter.drizzle as LibSQLDatabase\n\n for (let key in selectFields) {\n const val = selectFields[key]\n\n if (val.table && getNameFromDrizzleTable(val.table) === joinCollectionTableName) {\n delete selectFields[key]\n key = key.split('.').pop()\n selectFields[key] = newAliasTable[key]\n }\n }\n\n const subQuery = chainMethods({\n methods: chainedMethods,\n query: db\n .select(selectFields as any)\n .from(newAliasTable)\n .where(subQueryWhere)\n .orderBy(() => orderBy.map(({ column, order }) => order(column))),\n }).as(subQueryAlias)\n\n currentArgs.extras[columnName] = sql`${db\n .select({\n result: jsonAggBuildObject(adapter, {\n id: sql.raw(`\"${subQueryAlias}\".id`),\n ...(selectFields._locale && {\n locale: sql.raw(`\"${subQueryAlias}\".${selectFields._locale.name}`),\n }),\n }),\n })\n .from(sql`${subQuery}`)}`.as(subQueryAlias)\n }\n\n break\n }\n\n case 'point': {\n if (adapter.name === 'sqlite') {\n break\n }\n\n const args = isFieldLocalized ? _locales : currentArgs\n if (!args.columns) {\n args.columns = {}\n }\n\n if (!args.extras) {\n args.extras = {}\n }\n\n const name = `${path}${field.name}`\n\n // Drizzle handles that poorly. See https://github.com/drizzle-team/drizzle-orm/issues/2526\n // Additionally, this way we format the column value straight in the database using ST_AsGeoJSON\n args.columns[name] = false\n\n let shouldSelect = false\n\n if (select || selectAllOnCurrentLevel) {\n if (\n selectAllOnCurrentLevel ||\n (selectMode === 'include' && select[field.name] === true) ||\n (selectMode === 'exclude' && typeof select[field.name] === 'undefined')\n ) {\n shouldSelect = true\n }\n } else {\n shouldSelect = true\n }\n\n if (shouldSelect) {\n args.extras[name] = sql.raw(`ST_AsGeoJSON(${toSnakeCase(name)})::jsonb`).as(name)\n }\n break\n }\n\n case 'select': {\n if (select && !selectAllOnCurrentLevel) {\n if (\n (selectMode === 'include' && !select[field.name]) ||\n (selectMode === 'exclude' && select[field.name] === false)\n ) {\n break\n }\n }\n\n if (field.hasMany) {\n const withSelect: Result = {\n columns: {\n id: false,\n order: false,\n parent: false,\n },\n orderBy: ({ order }, { asc }) => [asc(order)],\n }\n\n currentArgs.with[`${path}${field.name}`] = withSelect\n break\n }\n\n if (select || selectAllOnCurrentLevel) {\n const fieldPath = `${path}${field.name}`\n\n if ((isFieldLocalized || parentIsLocalized) && _locales) {\n _locales.columns[fieldPath] = true\n } else if (adapter.tables[currentTableName]?.[fieldPath]) {\n currentArgs.columns[fieldPath] = true\n }\n }\n\n break\n }\n\n default: {\n if (!select && !selectAllOnCurrentLevel) {\n break\n }\n\n if (\n selectAllOnCurrentLevel ||\n (selectMode === 'include' && select[field.name] === true) ||\n (selectMode === 'exclude' && typeof select[field.name] === 'undefined')\n ) {\n const fieldPath = `${path}${field.name}`\n\n if ((isFieldLocalized || parentIsLocalized) && _locales) {\n _locales.columns[fieldPath] = true\n } else if (adapter.tables[currentTableName]?.[fieldPath]) {\n currentArgs.columns[fieldPath] = true\n }\n\n if (\n !withTabledFields.rels &&\n (field.type === 'relationship' || field.type === 'upload') &&\n (field.hasMany || Array.isArray(field.relationTo))\n ) {\n withTabledFields.rels = true\n }\n\n if (!withTabledFields.numbers && field.type === 'number' && field.hasMany) {\n withTabledFields.numbers = true\n }\n\n if (!withTabledFields.texts && field.type === 'text' && field.hasMany) {\n withTabledFields.texts = true\n }\n }\n\n break\n }\n }\n })\n\n return topLevelArgs\n}\n"],"names":["and","asc","desc","eq","or","sql","fieldIsVirtual","fieldShouldBeLocalized","toSnakeCase","buildQuery","getTableAlias","operatorMap","getNameFromDrizzleTable","jsonAggBuildObject","rawConstraint","chainMethods","flattenAllWherePaths","where","paths","k","includes","toUpperCase","Array","isArray","whereField","push","split","join","buildSQLWhere","alias","op","accumulated","payloadOperator","Object","keys","value","raw","traverseFields","_locales","adapter","collectionSlug","currentArgs","currentTableName","depth","fields","joinQuery","joins","locale","parentIsLocalized","path","select","selectAllOnCurrentLevel","selectMode","tablePath","topLevelArgs","topLevelTableName","versions","withTabledFields","forEach","field","isFieldLocalized","type","hasMany","relationTo","with","name","arraySelect","withArray","columns","id","_order","_parentID","orderBy","arrayTableName","tableNameMap","get","tables","_locale","_uuid","arrayTableNameWithLocales","localesSuffix","flattenedFields","localized","undefined","length","blocksSelect","blockReferences","blocks","_block","block","payload","blockKey","slug","blockSelect","blockSelectMode","withBlock","_path","tableName","fieldSelect","joinSchemaPath","replaceAll","limit","limitArg","defaultLimit","page","sort","defaultSort","columnName","db","drizzle","collection","currentQuery","onPath","on","Error","sanitizedSort","some","collections","config","f","sortOrder","startsWith","replace","sortPath","wherePaths","joinCollectionTableName","table","sortColumn","selectFields","parent","as","query","from","unionAll","subQueryAlias","sqlWhere","offset","extras","currentIDColumn","joinQueryWhere","targetField","equals","newAliasTable","subQueryWhere","aliasTable","selectLocale","chainedMethods","condition","args","method","key","val","pop","subQuery","methods","map","column","order","result","shouldSelect","withSelect","fieldPath","rels","numbers","texts"],"mappings":"AAIA,SAASA,GAAG,EAAEC,GAAG,EAAEC,IAAI,EAAEC,EAAE,EAAEC,EAAE,EAAEC,GAAG,QAAQ,cAAa;AACzD,SAASC,cAAc,EAAEC,sBAAsB,QAAQ,iBAAgB;AACvE,OAAOC,iBAAiB,gBAAe;AAKvC,OAAOC,gBAAgB,2BAA0B;AACjD,SAASC,aAAa,QAAQ,8BAA6B;AAC3D,SAASC,WAAW,QAAQ,4BAA2B;AACvD,SAASC,uBAAuB,QAAQ,0CAAyC;AACjF,SAASC,kBAAkB,QAAQ,uBAAsB;AACzD,SAASC,aAAa,QAAQ,gCAA+B;AAC7D,SAASC,YAAY,QAAQ,oBAAmB;AAEhD,MAAMC,uBAAuB,CAACC,OAAcC;IAC1C,IAAK,MAAMC,KAAKF,MAAO;QACrB,IAAI;YAAC;YAAO;SAAK,CAACG,QAAQ,CAACD,EAAEE,WAAW,KAAK;YAC3C,IAAIC,MAAMC,OAAO,CAACN,KAAK,CAACE,EAAE,GAAG;gBAC3B,KAAK,MAAMK,cAAcP,KAAK,CAACE,EAAE,CAAE;oBACjCH,qBAAqBQ,YAAYN;gBACnC;YACF;QACF,OAAO;YACL,6DAA6D;YAC7DA,MAAMO,IAAI,CAACN,EAAEO,KAAK,CAAC,KAAKC,IAAI,CAAC;QAC/B;IACF;AACF;AAEA,MAAMC,gBAAgB,CAACX,OAAcY;IACnC,IAAK,MAAMV,KAAKF,MAAO;QACrB,IAAI;YAAC;YAAO;SAAK,CAACG,QAAQ,CAACD,EAAEE,WAAW,KAAK;YAC3C,IAAIC,MAAMC,OAAO,CAACN,KAAK,CAACE,EAAE,GAAG;gBAC3B,MAAMW,KAAK,UAAUX,EAAEE,WAAW,KAAKrB,MAAMI;gBAC7C,MAAM2B,cAAc,EAAE;gBACtB,KAAK,MAAMP,cAAcP,KAAK,CAACE,EAAE,CAAE;oBACjCY,YAAYN,IAAI,CAACG,cAAcJ,YAAYK;gBAC7C;gBACA,OAAOC,MAAMC;YACf;QACF,OAAO;YACL,MAAMC,kBAAkBC,OAAOC,IAAI,CAACjB,KAAK,CAACE,EAAE,CAAC,CAAC,EAAE;YAChD,MAAMgB,QAAQlB,KAAK,CAACE,EAAE,CAACa,gBAAgB;YAEvC,OAAOrB,WAAW,CAACqB,gBAAgB,CAAC3B,IAAI+B,GAAG,CAAC,CAAC,CAAC,EAAEP,MAAM,GAAG,EAAEV,EAAEO,KAAK,CAAC,KAAKC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAGQ;QACzF;IACF;AACF;AA+BA,OAAO,MAAME,iBAAiB,CAAC,EAC7BC,QAAQ,EACRC,OAAO,EACPC,cAAc,EACdC,WAAW,EACXC,gBAAgB,EAChBC,KAAK,EACLC,MAAM,EACNC,YAAY,CAAC,CAAC,EACdC,KAAK,EACLC,MAAM,EACNC,oBAAoB,KAAK,EACzBC,IAAI,EACJC,MAAM,EACNC,0BAA0B,KAAK,EAC/BC,UAAU,EACVC,SAAS,EACTC,YAAY,EACZC,iBAAiB,EACjBC,QAAQ,EACRC,gBAAgB,EACE;IAClBb,OAAOc,OAAO,CAAC,CAACC;QACd,IAAIrD,eAAeqD,QAAQ;YACzB;QACF;QAEA,MAAMC,mBAAmBrD,uBAAuB;YAC9CoD;YACAX;QACF;QAEA,6BAA6B;QAC7B,IACEL,QAAQ,KACPgB,CAAAA,MAAME,IAAI,KAAK,YAAYF,MAAME,IAAI,KAAK,cAAa,KACxD,CAACF,MAAMG,OAAO,IACd,OAAOH,MAAMI,UAAU,KAAK,UAC5B;YACA,IAAIH,kBAAkB;gBACpBtB,SAAS0B,IAAI,CAAC,GAAGf,OAAOU,MAAMM,IAAI,EAAE,CAAC,GAAG;YAC1C,OAAO;gBACLxB,YAAYuB,IAAI,CAAC,GAAGf,OAAOU,MAAMM,IAAI,EAAE,CAAC,GAAG;YAC7C;QACF;QAEA,OAAQN,MAAME,IAAI;YAChB,KAAK;gBAAS;oBACZ,MAAMK,cAAcf,0BAA0B,OAAOD,QAAQ,CAACS,MAAMM,IAAI,CAAC;oBAEzE,IAAIf,QAAQ;wBACV,IACE,AAACE,eAAe,aAAa,OAAOc,gBAAgB,eACnDd,eAAe,aAAac,gBAAgB,OAC7C;4BACA;wBACF;oBACF;oBAEA,MAAMC,YAAoB;wBACxBC,SACE,OAAOF,gBAAgB,WACnB;4BACEG,IAAI;4BACJC,QAAQ;wBACV,IACA;4BACEC,WAAW;wBACb;wBACNC,SAAS,CAAC,EAAEF,MAAM,EAAE,EAAE,EAAErE,GAAG,EAAE,GAAK;gCAACA,IAAIqE;6BAAQ;wBAC/CN,MAAM,CAAC;oBACT;oBAEA,MAAMS,iBAAiBlC,QAAQmC,YAAY,CAACC,GAAG,CAC7C,GAAGjC,iBAAiB,CAAC,EAAEW,YAAY7C,YAAYmD,MAAMM,IAAI,GAAG;oBAG9D,IAAI,OAAOC,gBAAgB,UAAU;wBACnC,IAAI3B,QAAQqC,MAAM,CAACH,eAAe,CAACI,OAAO,EAAE;4BAC1CV,UAAUC,OAAO,CAACS,OAAO,GAAG;wBAC9B;wBAEA,IAAItC,QAAQqC,MAAM,CAACH,eAAe,CAACK,KAAK,EAAE;4BACxCX,UAAUC,OAAO,CAACU,KAAK,GAAG;wBAC5B;oBACF;oBAEA,MAAMC,4BAA4B,GAAGN,iBAAiBlC,QAAQyC,aAAa,EAAE;oBAE7E,IAAIzC,QAAQqC,MAAM,CAACG,0BAA0B,EAAE;wBAC7CZ,UAAUH,IAAI,CAAC1B,QAAQ,GAAG;4BACxB8B,SACE,OAAOF,gBAAgB,WACnB;gCACEW,SAAS;4BACX,IACA;gCACER,IAAI;gCACJE,WAAW;4BACb;4BACNP,MAAM,CAAC;wBACT;oBACF;oBAEAvB,YAAYuB,IAAI,CAAC,GAAGf,OAAOU,MAAMM,IAAI,EAAE,CAAC,GAAGE;oBAE3C9B,eAAe;wBACbC,UAAU6B,UAAUH,IAAI,CAAC1B,QAAQ;wBACjCC;wBACAE,aAAa0B;wBACbzB,kBAAkB+B;wBAClB9B;wBACAC,QAAQe,MAAMsB,eAAe;wBAC7BpC;wBACAE;wBACAC,mBAAmBA,qBAAqBW,MAAMuB,SAAS;wBACvDjC,MAAM;wBACNC,QAAQ,OAAOgB,gBAAgB,WAAWA,cAAciB;wBACxD/B;wBACAC,WAAW;wBACXC;wBACAC;wBACAE;oBACF;oBAEA,IACE,OAAOS,gBAAgB,YACvBC,UAAUH,IAAI,CAAC1B,QAAQ,IACvBL,OAAOC,IAAI,CAACiC,UAAUH,IAAI,CAAC1B,QAAQ,EAAE8C,MAAM,KAAK,GAChD;wBACA,OAAOjB,UAAUH,IAAI,CAAC1B,QAAQ;oBAChC;oBAEA;gBACF;YAEA,KAAK;gBAAU;oBACb,MAAM+C,eAAelC,0BAA0B,OAAOD,QAAQ,CAACS,MAAMM,IAAI,CAAC;oBAE1E,IAAIf,QAAQ;wBACV,IACE,AAACE,eAAe,aAAa,CAACiC,gBAC7BjC,eAAe,aAAaiC,iBAAiB,OAC9C;4BACA;wBACF;oBACF;;oBAEE1B,CAAAA,MAAM2B,eAAe,IAAI3B,MAAM4B,MAAM,AAAD,EAAG7B,OAAO,CAAC,CAAC8B;wBAChD,MAAMC,QAAQ,OAAOD,WAAW,WAAWjD,QAAQmD,OAAO,CAACH,MAAM,CAACC,OAAO,GAAGA;wBAC5E,MAAMG,WAAW,CAAC,QAAQ,EAAEF,MAAMG,IAAI,EAAE;wBAExC,IAAIC;wBAEJ,IAAIC,kBAAkB1C;wBAEtB,IAAIA,eAAe,aAAaiC,iBAAiB,MAAM;4BACrDQ,cAAc;wBAChB;wBAEA,IAAI,OAAOR,iBAAiB,UAAU;4BACpC,IAAI,OAAOA,YAAY,CAACI,MAAMG,IAAI,CAAC,KAAK,UAAU;gCAChDC,cAAcR,YAAY,CAACI,MAAMG,IAAI,CAAC;4BACxC,OAAO,IACL,AAACxC,eAAe,aAAa,OAAOiC,YAAY,CAACI,MAAMG,IAAI,CAAC,KAAK,eAChExC,eAAe,aAAaiC,YAAY,CAACI,MAAMG,IAAI,CAAC,KAAK,OAC1D;gCACAC,cAAc,CAAC;gCACfC,kBAAkB;4BACpB,OAAO,IAAI1C,eAAe,aAAaiC,YAAY,CAACI,MAAMG,IAAI,CAAC,KAAK,MAAM;gCACxEC,cAAc;4BAChB;wBACF;wBAEA,IAAI,CAACvC,YAAY,CAACqC,SAAS,EAAE;4BAC3B,MAAMI,YAAoB;gCACxB3B,SACE,OAAOyB,gBAAgB,WACnB;oCACExB,IAAI;oCACJC,QAAQ;oCACR0B,OAAO;gCACT,IACA;oCACEzB,WAAW;gCACb;gCACNC,SAAS,CAAC,EAAEF,MAAM,EAAE,EAAE,EAAErE,GAAG,EAAE,GAAK;wCAACA,IAAIqE;qCAAQ;gCAC/CN,MAAM,CAAC;4BACT;4BAEA,MAAMiC,YAAY1D,QAAQmC,YAAY,CAACC,GAAG,CACxC,GAAGpB,kBAAkB,QAAQ,EAAE/C,YAAYiF,MAAMG,IAAI,GAAG;4BAG1D,IAAI,OAAOC,gBAAgB,UAAU;gCACnC,IAAItD,QAAQqC,MAAM,CAACqB,UAAU,CAACpB,OAAO,EAAE;oCACrCkB,UAAU3B,OAAO,CAACS,OAAO,GAAG;gCAC9B;gCAEA,IAAItC,QAAQqC,MAAM,CAACqB,UAAU,CAACnB,KAAK,EAAE;oCACnCiB,UAAU3B,OAAO,CAACU,KAAK,GAAG;gCAC5B;4BACF;4BAEA,IAAIvC,QAAQqC,MAAM,CAAC,GAAGqB,YAAY1D,QAAQyC,aAAa,EAAE,CAAC,EAAE;gCAC1De,UAAU/B,IAAI,CAAC1B,QAAQ,GAAG;oCACxB0B,MAAM,CAAC;gCACT;gCAEA,IAAI,OAAO6B,gBAAgB,UAAU;oCACnCE,UAAU/B,IAAI,CAAC1B,QAAQ,CAAC8B,OAAO,GAAG;wCAChCS,SAAS;oCACX;gCACF;4BACF;4BACAvB,aAAaU,IAAI,CAAC2B,SAAS,GAAGI;4BAE9B1D,eAAe;gCACbC,UAAUyD,UAAU/B,IAAI,CAAC1B,QAAQ;gCACjCC;gCACAE,aAAasD;gCACbrD,kBAAkBuD;gCAClBtD;gCACAC,QAAQ6C,MAAMR,eAAe;gCAC7BpC;gCACAE;gCACAC,mBAAmBA,qBAAqBW,MAAMuB,SAAS;gCACvDjC,MAAM;gCACNC,QAAQ,OAAO2C,gBAAgB,WAAWA,cAAcV;gCACxD/B,YAAY0C;gCACZzC,WAAW;gCACXC;gCACAC;gCACAE;4BACF;4BAEA,IACE,OAAOoC,gBAAgB,YACvBE,UAAU/B,IAAI,CAAC1B,QAAQ,IACvBL,OAAOC,IAAI,CAAC6D,UAAU/B,IAAI,CAAC1B,QAAQ,CAAC8B,OAAO,EAAEgB,MAAM,KAAK,GACxD;gCACA,OAAOW,UAAU/B,IAAI,CAAC1B,QAAQ;4BAChC;wBACF;oBACF;oBAEA;gBACF;YAEA,KAAK;YACL,KAAK;gBAAO;oBACV,MAAM4D,cAAchD,QAAQ,CAACS,MAAMM,IAAI,CAAC;oBAExC,IAAIiC,gBAAgB,OAAO;wBACzB;oBACF;oBAEA7D,eAAe;wBACbC;wBACAC;wBACAC;wBACAC;wBACAC;wBACAC;wBACAC,QAAQe,MAAMsB,eAAe;wBAC7BpC;wBACAC;wBACAC;wBACAC,mBAAmBA,qBAAqBW,MAAMuB,SAAS;wBACvDjC,MAAM,GAAGA,OAAOU,MAAMM,IAAI,CAAC,CAAC,CAAC;wBAC7Bf,QAAQ,OAAOgD,gBAAgB,WAAWA,cAAcf;wBACxDhC,yBACEA,2BACA+C,gBAAgB,QACf9C,eAAe,aAAa,OAAO8C,gBAAgB;wBACtD9C;wBACAC,WAAW,GAAGA,YAAY7C,YAAYmD,MAAMM,IAAI,EAAE,CAAC,CAAC;wBACpDX;wBACAC;wBACAC;wBACAC;oBACF;oBAEA;gBACF;YACA,KAAK;gBAAQ;oBACX,0CAA0C;oBAC1C,IAAIZ,cAAc,OAAO;wBACvB;oBACF;oBAEA,IACE,AAACK,UAAUE,eAAe,aAAa,CAACF,MAAM,CAACS,MAAMM,IAAI,CAAC,IACzDb,eAAe,aAAaF,MAAM,CAACS,MAAMM,IAAI,CAAC,KAAK,OACpD;wBACA;oBACF;oBAEA,MAAMkC,iBAAiB,GAAGlD,KAAKmD,UAAU,CAAC,KAAK,OAAOzC,MAAMM,IAAI,EAAE;oBAElE,IAAIpB,SAAS,CAACsD,eAAe,KAAK,OAAO;wBACvC;oBACF;oBAEA,MAAM,EACJE,OAAOC,WAAW3C,MAAM4C,YAAY,IAAI,EAAE,EAC1CC,IAAI,EACJC,OAAO9C,MAAM+C,WAAW,EACxBzF,KAAK,EACN,GAAG4B,SAAS,CAACsD,eAAe,IAAI,CAAC;oBAClC,IAAIE,QAAQC;oBAEZ,IAAID,UAAU,GAAG;wBACf,qFAAqF;wBACrFA,SAAS;oBACX;oBAEA,MAAMM,aAAa,GAAG1D,KAAKmD,UAAU,CAAC,KAAK,OAAOzC,MAAMM,IAAI,EAAE;oBAE9D,MAAM2C,KAAKrE,QAAQsE,OAAO;oBAE1B,IAAIvF,MAAMC,OAAO,CAACoC,MAAMmD,UAAU,GAAG;wBACnC,IAAIC,eAAiC;wBACrC,MAAMC,SAASrD,MAAMsD,EAAE,CAACvF,KAAK,CAAC,KAAKC,IAAI,CAAC;wBAExC,IAAIL,MAAMC,OAAO,CAACkF,OAAO;4BACvB,MAAM,IAAIS,MAAM;wBAClB;wBAEA,IAAIC,gBAAgBV;wBAEpB,IAAI,CAACU,eAAe;4BAClB,IACExD,MAAMmD,UAAU,CAACM,IAAI,CAAC,CAACN,aACrBvE,QAAQmD,OAAO,CAAC2B,WAAW,CAACP,WAAW,CAACQ,MAAM,CAAC1E,MAAM,CAACwE,IAAI,CACxD,CAACG,IAAMA,EAAE1D,IAAI,KAAK,UAAU0D,EAAEtD,IAAI,KAAK,eAG3C;gCACAkD,gBAAgB;4BAClB,OAAO;gCACLA,gBAAgB;4BAClB;wBACF;wBAEA,MAAMK,YAAYL,cAAcM,UAAU,CAAC,OAAOvH,OAAOD;wBACzDkH,gBAAgBA,cAAcO,OAAO,CAAC,KAAK;wBAE3C,MAAMC,WAAWR,cAAczF,KAAK,CAAC,KAAKC,IAAI,CAAC;wBAE/C,MAAMiG,aAAuB,EAAE;wBAE/B,IAAI3G,OAAO;4BACTD,qBAAqBC,OAAO2G;wBAC9B;wBAEA,KAAK,MAAMd,cAAcnD,MAAMmD,UAAU,CAAE;4BACzC,MAAMe,0BAA0BtF,QAAQmC,YAAY,CAACC,GAAG,CAACnE,YAAYsG;4BAErE,MAAMgB,QAAQvF,QAAQqC,MAAM,CAACiD,wBAAwB;4BAErD,MAAME,aAAaD,KAAK,CAACH,SAAS;4BAElC,MAAMK,eAAe;gCACnB3D,IAAI9B,QAAQqC,MAAM,CAACiD,wBAAwB,CAACxD,EAAE;gCAC9C4D,QAAQ5H,GAAG,CAAC,EAAEkC,QAAQqC,MAAM,CAACiD,wBAAwB,CAACb,OAAO,CAAC,CAAC,CAACkB,EAAE,CAAClB;gCACnEjD,YAAY1D,GAAG,CAAC,EAAEyG,WAAW,CAAC,CAACoB,EAAE,CAAC;gCAClCP,UAAUtH,GAAG,CAAC,EAAE0H,aAAaA,aAAa,KAAK,CAAC,CAACG,EAAE,CAAC;4BACtD;4BAEA,qCAAqC;4BACrC,KAAK,MAAMjF,QAAQ2E,WAAY;gCAC7B,IAAIrF,QAAQqC,MAAM,CAACiD,wBAAwB,CAAC5E,KAAK,EAAE;oCACjD+E,YAAY,CAAC/E,KAAK,GAAG5C,GAAG,CAAC,EAAEkC,QAAQqC,MAAM,CAACiD,wBAAwB,CAAC5E,KAAK,CAAC,CAAC,CAACiF,EAAE,CAACjF;gCAC9E,oCAAoC;gCACtC,OAAO,IAAIA,SAAS,cAAc;oCAChC+E,YAAY,CAAC/E,KAAK,GAAG5C,GAAG,CAAC,IAAI,CAAC,CAAC6H,EAAE,CAACjF;gCACpC;4BACF;4BAEA,MAAMkF,QAAQvB,GAAG1D,MAAM,CAAC8E,cAAcI,IAAI,CAAC7F,QAAQqC,MAAM,CAACiD,wBAAwB;4BAClF,IAAId,iBAAiB,MAAM;gCACzBA,eAAeoB;4BACjB,OAAO;gCACLpB,eAAeA,aAAasB,QAAQ,CAACF;4BACvC;wBACF;wBAEA,MAAMG,gBAAgB,GAAG3B,WAAW,SAAS,CAAC;wBAE9C,IAAI4B,WAAWpI,GACboC,QAAQqC,MAAM,CAAClC,iBAAiB,CAAC2B,EAAE,EACnChE,IAAI+B,GAAG,CAAC,CAAC,CAAC,EAAEkG,cAAc,GAAG,EAAEtB,OAAO,CAAC,CAAC;wBAG1C,IAAI/F,SAASgB,OAAOC,IAAI,CAACjB,OAAOmE,MAAM,GAAG,GAAG;4BAC1CmD,WAAWvI,IAAIuI,UAAU3G,cAAcX,OAAOqH;wBAChD;wBAEAvB,eAAeA,aAAavC,OAAO,CAACgD,UAAUnH,GAAG,CAAC,UAAU,CAAC;wBAE7D,IAAImG,QAAQH,UAAU,GAAG;4BACvB,MAAMmC,SAAS,AAAChC,CAAAA,OAAO,CAAA,IAAKH;4BAC5B,IAAImC,SAAS,GAAG;gCACdzB,eAAeA,aAAayB,MAAM,CAACA;4BACrC;wBACF;wBAEA,IAAInC,OAAO;4BACTU,eAAeA,aAAaV,KAAK,CAACA;wBACpC;wBAEA5D,YAAYgG,MAAM,CAAC9B,WAAW,GAAGtG,GAAG,CAAC,EAAEuG,GACpC1D,MAAM,CAAC;4BACNmB,IAAIxD,mBAAmB0B,SAAS;gCAC9B8B,IAAIhE,IAAI+B,GAAG,CAAC,CAAC,CAAC,EAAEkG,cAAc,MAAM,CAAC;gCACrCvE,YAAY1D,IAAI+B,GAAG,CAAC,CAAC,CAAC,EAAEkG,cAAc,cAAc,CAAC;4BACvD;wBACF,GACCF,IAAI,CAAC/H,GAAG,CAAC,EAAE0G,aAAamB,EAAE,CAACI,eAAe,CAAC,EAC3CrH,KAAK,CAACsH,UAAU,CAAC,CAACL,EAAE,CAACvB;oBAC1B,OAAO;wBACL,MAAM/D,SAASL,QAAQmD,OAAO,CAAC2B,WAAW,CAAC1D,MAAMmD,UAAU,CAAC,CAACQ,MAAM,CAACrC,eAAe;wBAEnF,MAAM4C,0BAA0BtF,QAAQmC,YAAY,CAACC,GAAG,CAACnE,YAAYmD,MAAMmD,UAAU;wBAErF,MAAMhE,QAA+B,EAAE;wBAEvC,MAAM4F,kBAAkBlF,WACpBjB,QAAQqC,MAAM,CAAClC,iBAAiB,CAACuF,MAAM,GACvC1F,QAAQqC,MAAM,CAAClC,iBAAiB,CAAC2B,EAAE;wBAEvC,IAAIsE;wBAEJ,IAAIrH,MAAMC,OAAO,CAACoC,MAAMiF,WAAW,CAAC7E,UAAU,GAAG;4BAC/C4E,iBAAiB;gCACf,CAAChF,MAAMsD,EAAE,CAAC,EAAE;oCACV4B,QAAQ;wCACN9E,YAAYvB;wCACZL,OAAOrB,cAAc4H;oCACvB;gCACF;4BACF;wBACF,OAAO;4BACLC,iBAAiB;gCACf,CAAChF,MAAMsD,EAAE,CAAC,EAAE;oCACV4B,QAAQ/H,cAAc4H;gCACxB;4BACF;wBACF;wBAEA,IAAIzH,SAASgB,OAAOC,IAAI,CAACjB,OAAOmE,MAAM,EAAE;4BACtCuD,iBAAiB;gCACf3I,KAAK;oCAAC2I;oCAAgB1H;iCAAM;4BAC9B;wBACF;wBAEA,MAAM0F,aAAa,GAAG1D,KAAKmD,UAAU,CAAC,KAAK,OAAOzC,MAAMM,IAAI,EAAE;wBAE9D,MAAMqE,gBAAgB,GAAG3B,WAAW,MAAM,CAAC;wBAE3C,MAAM,EAAEmC,aAAa,EAAE,GAAGpI,cAAc;4BACtC6B;4BACA0D,WAAW4B;wBACb;wBAEA,MAAM,EACJrD,OAAO,EACPwD,YAAY,EACZ/G,OAAO8H,aAAa,EACrB,GAAGtI,WAAW;4BACb8B;4BACAyG,YAAYF;4BACZlG;4BACAE;4BACAC;4BACAC;4BACAiG,cAAc;4BACdxC;4BACAR,WAAW4B;4BACX5G,OAAO0H;wBACT;wBAEA,MAAMO,iBAAiC,EAAE;wBAEzCpG,MAAMY,OAAO,CAAC,CAAC,EAAEG,IAAI,EAAEsF,SAAS,EAAErB,KAAK,EAAE;4BACvCoB,eAAezH,IAAI,CAAC;gCAClB2H,MAAM;oCAACtB;oCAAOqB;iCAAU;gCACxBE,QAAQxF,QAAQ;4BAClB;wBACF;wBAEA,IAAI2C,QAAQH,UAAU,GAAG;4BACvB,MAAMmC,SAAS,AAAChC,CAAAA,OAAO,CAAA,IAAKH,QAAQ;4BACpC,IAAImC,SAAS,GAAG;gCACdU,eAAezH,IAAI,CAAC;oCAClB2H,MAAM;wCAACZ;qCAAO;oCACda,QAAQ;gCACV;4BACF;wBACF;wBAEA,IAAIhD,UAAU,GAAG;4BACf6C,eAAezH,IAAI,CAAC;gCAClB2H,MAAM;oCAAC/C;iCAAM;gCACbgD,QAAQ;4BACV;wBACF;wBAEA,MAAMzC,KAAKrE,QAAQsE,OAAO;wBAE1B,IAAK,IAAIyC,OAAOtB,aAAc;4BAC5B,MAAMuB,MAAMvB,YAAY,CAACsB,IAAI;4BAE7B,IAAIC,IAAIzB,KAAK,IAAIlH,wBAAwB2I,IAAIzB,KAAK,MAAMD,yBAAyB;gCAC/E,OAAOG,YAAY,CAACsB,IAAI;gCACxBA,MAAMA,IAAI5H,KAAK,CAAC,KAAK8H,GAAG;gCACxBxB,YAAY,CAACsB,IAAI,GAAGR,aAAa,CAACQ,IAAI;4BACxC;wBACF;wBAEA,MAAMG,WAAW1I,aAAa;4BAC5B2I,SAASR;4BACTf,OAAOvB,GACJ1D,MAAM,CAAC8E,cACPI,IAAI,CAACU,eACL7H,KAAK,CAAC8H,eACNvE,OAAO,CAAC,IAAMA,QAAQmF,GAAG,CAAC,CAAC,EAAEC,MAAM,EAAEC,KAAK,EAAE,GAAKA,MAAMD;wBAC5D,GAAG1B,EAAE,CAACI;wBAEN7F,YAAYgG,MAAM,CAAC9B,WAAW,GAAGtG,GAAG,CAAC,EAAEuG,GACpC1D,MAAM,CAAC;4BACN4G,QAAQjJ,mBAAmB0B,SAAS;gCAClC8B,IAAIhE,IAAI+B,GAAG,CAAC,CAAC,CAAC,EAAEkG,cAAc,IAAI,CAAC;gCACnC,GAAIN,aAAanD,OAAO,IAAI;oCAC1B9B,QAAQ1C,IAAI+B,GAAG,CAAC,CAAC,CAAC,EAAEkG,cAAc,EAAE,EAAEN,aAAanD,OAAO,CAACZ,IAAI,EAAE;gCACnE,CAAC;4BACH;wBACF,GACCmE,IAAI,CAAC/H,GAAG,CAAC,EAAEoJ,SAAS,CAAC,EAAE,CAAC,CAACvB,EAAE,CAACI;oBACjC;oBAEA;gBACF;YAEA,KAAK;gBAAS;oBACZ,IAAI/F,QAAQ0B,IAAI,KAAK,UAAU;wBAC7B;oBACF;oBAEA,MAAMmF,OAAOxF,mBAAmBtB,WAAWG;oBAC3C,IAAI,CAAC2G,KAAKhF,OAAO,EAAE;wBACjBgF,KAAKhF,OAAO,GAAG,CAAC;oBAClB;oBAEA,IAAI,CAACgF,KAAKX,MAAM,EAAE;wBAChBW,KAAKX,MAAM,GAAG,CAAC;oBACjB;oBAEA,MAAMxE,OAAO,GAAGhB,OAAOU,MAAMM,IAAI,EAAE;oBAEnC,2FAA2F;oBAC3F,gGAAgG;oBAChGmF,KAAKhF,OAAO,CAACH,KAAK,GAAG;oBAErB,IAAI8F,eAAe;oBAEnB,IAAI7G,UAAUC,yBAAyB;wBACrC,IACEA,2BACCC,eAAe,aAAaF,MAAM,CAACS,MAAMM,IAAI,CAAC,KAAK,QACnDb,eAAe,aAAa,OAAOF,MAAM,CAACS,MAAMM,IAAI,CAAC,KAAK,aAC3D;4BACA8F,eAAe;wBACjB;oBACF,OAAO;wBACLA,eAAe;oBACjB;oBAEA,IAAIA,cAAc;wBAChBX,KAAKX,MAAM,CAACxE,KAAK,GAAG5D,IAAI+B,GAAG,CAAC,CAAC,aAAa,EAAE5B,YAAYyD,MAAM,QAAQ,CAAC,EAAEiE,EAAE,CAACjE;oBAC9E;oBACA;gBACF;YAEA,KAAK;gBAAU;oBACb,IAAIf,UAAU,CAACC,yBAAyB;wBACtC,IACE,AAACC,eAAe,aAAa,CAACF,MAAM,CAACS,MAAMM,IAAI,CAAC,IAC/Cb,eAAe,aAAaF,MAAM,CAACS,MAAMM,IAAI,CAAC,KAAK,OACpD;4BACA;wBACF;oBACF;oBAEA,IAAIN,MAAMG,OAAO,EAAE;wBACjB,MAAMkG,aAAqB;4BACzB5F,SAAS;gCACPC,IAAI;gCACJwF,OAAO;gCACP5B,QAAQ;4BACV;4BACAzD,SAAS,CAAC,EAAEqF,KAAK,EAAE,EAAE,EAAE5J,GAAG,EAAE,GAAK;oCAACA,IAAI4J;iCAAO;wBAC/C;wBAEApH,YAAYuB,IAAI,CAAC,GAAGf,OAAOU,MAAMM,IAAI,EAAE,CAAC,GAAG+F;wBAC3C;oBACF;oBAEA,IAAI9G,UAAUC,yBAAyB;wBACrC,MAAM8G,YAAY,GAAGhH,OAAOU,MAAMM,IAAI,EAAE;wBAExC,IAAI,AAACL,CAAAA,oBAAoBZ,iBAAgB,KAAMV,UAAU;4BACvDA,SAAS8B,OAAO,CAAC6F,UAAU,GAAG;wBAChC,OAAO,IAAI1H,QAAQqC,MAAM,CAAClC,iBAAiB,EAAE,CAACuH,UAAU,EAAE;4BACxDxH,YAAY2B,OAAO,CAAC6F,UAAU,GAAG;wBACnC;oBACF;oBAEA;gBACF;YAEA;gBAAS;oBACP,IAAI,CAAC/G,UAAU,CAACC,yBAAyB;wBACvC;oBACF;oBAEA,IACEA,2BACCC,eAAe,aAAaF,MAAM,CAACS,MAAMM,IAAI,CAAC,KAAK,QACnDb,eAAe,aAAa,OAAOF,MAAM,CAACS,MAAMM,IAAI,CAAC,KAAK,aAC3D;wBACA,MAAMgG,YAAY,GAAGhH,OAAOU,MAAMM,IAAI,EAAE;wBAExC,IAAI,AAACL,CAAAA,oBAAoBZ,iBAAgB,KAAMV,UAAU;4BACvDA,SAAS8B,OAAO,CAAC6F,UAAU,GAAG;wBAChC,OAAO,IAAI1H,QAAQqC,MAAM,CAAClC,iBAAiB,EAAE,CAACuH,UAAU,EAAE;4BACxDxH,YAAY2B,OAAO,CAAC6F,UAAU,GAAG;wBACnC;wBAEA,IACE,CAACxG,iBAAiByG,IAAI,IACrBvG,CAAAA,MAAME,IAAI,KAAK,kBAAkBF,MAAME,IAAI,KAAK,QAAO,KACvDF,CAAAA,MAAMG,OAAO,IAAIxC,MAAMC,OAAO,CAACoC,MAAMI,UAAU,CAAA,GAChD;4BACAN,iBAAiByG,IAAI,GAAG;wBAC1B;wBAEA,IAAI,CAACzG,iBAAiB0G,OAAO,IAAIxG,MAAME,IAAI,KAAK,YAAYF,MAAMG,OAAO,EAAE;4BACzEL,iBAAiB0G,OAAO,GAAG;wBAC7B;wBAEA,IAAI,CAAC1G,iBAAiB2G,KAAK,IAAIzG,MAAME,IAAI,KAAK,UAAUF,MAAMG,OAAO,EAAE;4BACrEL,iBAAiB2G,KAAK,GAAG;wBAC3B;oBACF;oBAEA;gBACF;QACF;IACF;IAEA,OAAO9G;AACT,EAAC"}
1
+ {"version":3,"sources":["../../src/find/traverseFields.ts"],"sourcesContent":["import type { LibSQLDatabase } from 'drizzle-orm/libsql'\nimport type { FlattenedField, JoinQuery, SelectMode, SelectType, Where } from 'payload'\n\nimport { sql } from 'drizzle-orm'\nimport { fieldIsVirtual, fieldShouldBeLocalized } from 'payload/shared'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { BuildQueryJoinAliases, ChainedMethods, DrizzleAdapter } from '../types.js'\nimport type { Result } from './buildFindManyArgs.js'\n\nimport buildQuery from '../queries/buildQuery.js'\nimport { getTableAlias } from '../queries/getTableAlias.js'\nimport { getNameFromDrizzleTable } from '../utilities/getNameFromDrizzleTable.js'\nimport { jsonAggBuildObject } from '../utilities/json.js'\nimport { rawConstraint } from '../utilities/rawConstraint.js'\nimport { chainMethods } from './chainMethods.js'\n\ntype TraverseFieldArgs = {\n _locales: Result\n adapter: DrizzleAdapter\n collectionSlug?: string\n currentArgs: Result\n currentTableName: string\n depth?: number\n fields: FlattenedField[]\n joinQuery: JoinQuery\n joins?: BuildQueryJoinAliases\n locale?: string\n parentIsLocalized?: boolean\n path: string\n select?: SelectType\n selectAllOnCurrentLevel?: boolean\n selectMode?: SelectMode\n tablePath: string\n topLevelArgs: Record<string, unknown>\n topLevelTableName: string\n versions?: boolean\n withTabledFields: {\n numbers?: boolean\n rels?: boolean\n texts?: boolean\n }\n}\n\nexport const traverseFields = ({\n _locales,\n adapter,\n collectionSlug,\n currentArgs,\n currentTableName,\n depth,\n fields,\n joinQuery = {},\n joins,\n locale,\n parentIsLocalized = false,\n path,\n select,\n selectAllOnCurrentLevel = false,\n selectMode,\n tablePath,\n topLevelArgs,\n topLevelTableName,\n versions,\n withTabledFields,\n}: TraverseFieldArgs) => {\n fields.forEach((field) => {\n if (fieldIsVirtual(field)) {\n return\n }\n\n const isFieldLocalized = fieldShouldBeLocalized({\n field,\n parentIsLocalized,\n })\n\n // handle simple relationship\n if (\n depth > 0 &&\n (field.type === 'upload' || field.type === 'relationship') &&\n !field.hasMany &&\n typeof field.relationTo === 'string'\n ) {\n if (isFieldLocalized) {\n _locales.with[`${path}${field.name}`] = true\n } else {\n currentArgs.with[`${path}${field.name}`] = true\n }\n }\n\n switch (field.type) {\n case 'array': {\n const arraySelect = selectAllOnCurrentLevel ? true : select?.[field.name]\n\n if (select) {\n if (\n (selectMode === 'include' && typeof arraySelect === 'undefined') ||\n (selectMode === 'exclude' && arraySelect === false)\n ) {\n break\n }\n }\n\n const withArray: Result = {\n columns:\n typeof arraySelect === 'object'\n ? {\n id: true,\n _order: true,\n }\n : {\n _parentID: false,\n },\n orderBy: ({ _order }, { asc }) => [asc(_order)],\n with: {},\n }\n\n const arrayTableName = adapter.tableNameMap.get(\n `${currentTableName}_${tablePath}${toSnakeCase(field.name)}`,\n )\n\n if (typeof arraySelect === 'object') {\n if (adapter.tables[arrayTableName]._locale) {\n withArray.columns._locale = true\n }\n\n if (adapter.tables[arrayTableName]._uuid) {\n withArray.columns._uuid = true\n }\n }\n\n const arrayTableNameWithLocales = `${arrayTableName}${adapter.localesSuffix}`\n\n if (adapter.tables[arrayTableNameWithLocales]) {\n withArray.with._locales = {\n columns:\n typeof arraySelect === 'object'\n ? {\n _locale: true,\n }\n : {\n id: false,\n _parentID: false,\n },\n with: {},\n }\n }\n\n currentArgs.with[`${path}${field.name}`] = withArray\n\n traverseFields({\n _locales: withArray.with._locales,\n adapter,\n currentArgs: withArray,\n currentTableName: arrayTableName,\n depth,\n fields: field.flattenedFields,\n joinQuery,\n locale,\n parentIsLocalized: parentIsLocalized || field.localized,\n path: '',\n select: typeof arraySelect === 'object' ? arraySelect : undefined,\n selectMode,\n tablePath: '',\n topLevelArgs,\n topLevelTableName,\n withTabledFields,\n })\n\n if (\n typeof arraySelect === 'object' &&\n withArray.with._locales &&\n Object.keys(withArray.with._locales).length === 1\n ) {\n delete withArray.with._locales\n }\n\n break\n }\n\n case 'blocks': {\n const blocksSelect = selectAllOnCurrentLevel ? true : select?.[field.name]\n\n if (select) {\n if (\n (selectMode === 'include' && !blocksSelect) ||\n (selectMode === 'exclude' && blocksSelect === false)\n ) {\n break\n }\n }\n\n ;(field.blockReferences ?? field.blocks).forEach((_block) => {\n const block = typeof _block === 'string' ? adapter.payload.blocks[_block] : _block\n const blockKey = `_blocks_${block.slug}`\n\n let blockSelect: boolean | SelectType | undefined\n\n let blockSelectMode = selectMode\n\n if (selectMode === 'include' && blocksSelect === true) {\n blockSelect = true\n }\n\n if (typeof blocksSelect === 'object') {\n if (typeof blocksSelect[block.slug] === 'object') {\n blockSelect = blocksSelect[block.slug]\n } else if (\n (selectMode === 'include' && typeof blocksSelect[block.slug] === 'undefined') ||\n (selectMode === 'exclude' && blocksSelect[block.slug] === false)\n ) {\n blockSelect = {}\n blockSelectMode = 'include'\n } else if (selectMode === 'include' && blocksSelect[block.slug] === true) {\n blockSelect = true\n }\n }\n\n if (!topLevelArgs[blockKey]) {\n const withBlock: Result = {\n columns:\n typeof blockSelect === 'object'\n ? {\n id: true,\n _order: true,\n _path: true,\n }\n : {\n _parentID: false,\n },\n orderBy: ({ _order }, { asc }) => [asc(_order)],\n with: {},\n }\n\n const tableName = adapter.tableNameMap.get(\n `${topLevelTableName}_blocks_${toSnakeCase(block.slug)}`,\n )\n\n if (typeof blockSelect === 'object') {\n if (adapter.tables[tableName]._locale) {\n withBlock.columns._locale = true\n }\n\n if (adapter.tables[tableName]._uuid) {\n withBlock.columns._uuid = true\n }\n }\n\n if (adapter.tables[`${tableName}${adapter.localesSuffix}`]) {\n withBlock.with._locales = {\n with: {},\n }\n\n if (typeof blockSelect === 'object') {\n withBlock.with._locales.columns = {\n _locale: true,\n }\n }\n }\n topLevelArgs.with[blockKey] = withBlock\n\n traverseFields({\n _locales: withBlock.with._locales,\n adapter,\n currentArgs: withBlock,\n currentTableName: tableName,\n depth,\n fields: block.flattenedFields,\n joinQuery,\n locale,\n parentIsLocalized: parentIsLocalized || field.localized,\n path: '',\n select: typeof blockSelect === 'object' ? blockSelect : undefined,\n selectMode: blockSelectMode,\n tablePath: '',\n topLevelArgs,\n topLevelTableName,\n withTabledFields,\n })\n\n if (\n typeof blockSelect === 'object' &&\n withBlock.with._locales &&\n Object.keys(withBlock.with._locales.columns).length === 1\n ) {\n delete withBlock.with._locales\n }\n }\n })\n\n break\n }\n\n case 'group':\n case 'tab': {\n const fieldSelect = select?.[field.name]\n\n if (fieldSelect === false) {\n break\n }\n\n traverseFields({\n _locales,\n adapter,\n collectionSlug,\n currentArgs,\n currentTableName,\n depth,\n fields: field.flattenedFields,\n joinQuery,\n joins,\n locale,\n parentIsLocalized: parentIsLocalized || field.localized,\n path: `${path}${field.name}_`,\n select: typeof fieldSelect === 'object' ? fieldSelect : undefined,\n selectAllOnCurrentLevel:\n selectAllOnCurrentLevel ||\n fieldSelect === true ||\n (selectMode === 'exclude' && typeof fieldSelect === 'undefined'),\n selectMode,\n tablePath: `${tablePath}${toSnakeCase(field.name)}_`,\n topLevelArgs,\n topLevelTableName,\n versions,\n withTabledFields,\n })\n\n break\n }\n case 'join': {\n // when `joinsQuery` is false, do not join\n if (joinQuery === false) {\n break\n }\n\n if (\n (select && selectMode === 'include' && !select[field.name]) ||\n (selectMode === 'exclude' && select[field.name] === false)\n ) {\n break\n }\n\n const joinSchemaPath = `${path.replaceAll('_', '.')}${field.name}`\n\n if (joinQuery[joinSchemaPath] === false) {\n break\n }\n\n const {\n limit: limitArg = field.defaultLimit ?? 10,\n sort = field.defaultSort,\n where,\n } = joinQuery[joinSchemaPath] || {}\n let limit = limitArg\n\n if (limit !== 0) {\n // get an additional document and slice it later to determine if there is a next page\n limit += 1\n }\n\n const fields = adapter.payload.collections[field.collection].config.flattenedFields\n\n const joinCollectionTableName = adapter.tableNameMap.get(toSnakeCase(field.collection))\n\n const joins: BuildQueryJoinAliases = []\n\n const currentIDColumn = versions\n ? adapter.tables[currentTableName].parent\n : adapter.tables[currentTableName].id\n\n let joinQueryWhere: Where\n\n if (Array.isArray(field.targetField.relationTo)) {\n joinQueryWhere = {\n [field.on]: {\n equals: {\n relationTo: collectionSlug,\n value: rawConstraint(currentIDColumn),\n },\n },\n }\n } else {\n joinQueryWhere = {\n [field.on]: {\n equals: rawConstraint(currentIDColumn),\n },\n }\n }\n\n if (where && Object.keys(where).length) {\n joinQueryWhere = {\n and: [joinQueryWhere, where],\n }\n }\n\n const columnName = `${path.replaceAll('.', '_')}${field.name}`\n\n const subQueryAlias = `${columnName}_alias`\n\n const { newAliasTable } = getTableAlias({\n adapter,\n tableName: joinCollectionTableName,\n })\n\n const {\n orderBy,\n selectFields,\n where: subQueryWhere,\n } = buildQuery({\n adapter,\n aliasTable: newAliasTable,\n fields,\n joins,\n locale,\n // Parent is never localized, as we're passing the `fields` of a **different** collection here. This means that the\n // parent localization \"boundary\" is crossed, and we're now in the context of the joined collection.\n parentIsLocalized: false,\n selectLocale: true,\n sort,\n tableName: joinCollectionTableName,\n where: joinQueryWhere,\n })\n\n const chainedMethods: ChainedMethods = []\n\n joins.forEach(({ type, condition, table }) => {\n chainedMethods.push({\n args: [table, condition],\n method: type ?? 'leftJoin',\n })\n })\n\n if (limit !== 0) {\n chainedMethods.push({\n args: [limit],\n method: 'limit',\n })\n }\n\n const db = adapter.drizzle as LibSQLDatabase\n\n for (let key in selectFields) {\n const val = selectFields[key]\n\n if (val.table && getNameFromDrizzleTable(val.table) === joinCollectionTableName) {\n delete selectFields[key]\n key = key.split('.').pop()\n selectFields[key] = newAliasTable[key]\n }\n }\n\n const subQuery = chainMethods({\n methods: chainedMethods,\n query: db\n .select(selectFields as any)\n .from(newAliasTable)\n .where(subQueryWhere)\n .orderBy(() => orderBy.map(({ column, order }) => order(column))),\n }).as(subQueryAlias)\n\n currentArgs.extras[columnName] = sql`${db\n .select({\n result: jsonAggBuildObject(adapter, {\n id: sql.raw(`\"${subQueryAlias}\".id`),\n ...(selectFields._locale && {\n locale: sql.raw(`\"${subQueryAlias}\".${selectFields._locale.name}`),\n }),\n }),\n })\n .from(sql`${subQuery}`)}`.as(subQueryAlias)\n\n break\n }\n\n case 'point': {\n if (adapter.name === 'sqlite') {\n break\n }\n\n const args = isFieldLocalized ? _locales : currentArgs\n if (!args.columns) {\n args.columns = {}\n }\n\n if (!args.extras) {\n args.extras = {}\n }\n\n const name = `${path}${field.name}`\n\n // Drizzle handles that poorly. See https://github.com/drizzle-team/drizzle-orm/issues/2526\n // Additionally, this way we format the column value straight in the database using ST_AsGeoJSON\n args.columns[name] = false\n\n let shouldSelect = false\n\n if (select || selectAllOnCurrentLevel) {\n if (\n selectAllOnCurrentLevel ||\n (selectMode === 'include' && select[field.name] === true) ||\n (selectMode === 'exclude' && typeof select[field.name] === 'undefined')\n ) {\n shouldSelect = true\n }\n } else {\n shouldSelect = true\n }\n\n if (shouldSelect) {\n args.extras[name] = sql.raw(`ST_AsGeoJSON(${toSnakeCase(name)})::jsonb`).as(name)\n }\n break\n }\n\n case 'select': {\n if (select && !selectAllOnCurrentLevel) {\n if (\n (selectMode === 'include' && !select[field.name]) ||\n (selectMode === 'exclude' && select[field.name] === false)\n ) {\n break\n }\n }\n\n if (field.hasMany) {\n const withSelect: Result = {\n columns: {\n id: false,\n order: false,\n parent: false,\n },\n orderBy: ({ order }, { asc }) => [asc(order)],\n }\n\n currentArgs.with[`${path}${field.name}`] = withSelect\n break\n }\n\n if (select || selectAllOnCurrentLevel) {\n const fieldPath = `${path}${field.name}`\n\n if ((isFieldLocalized || parentIsLocalized) && _locales) {\n _locales.columns[fieldPath] = true\n } else if (adapter.tables[currentTableName]?.[fieldPath]) {\n currentArgs.columns[fieldPath] = true\n }\n }\n\n break\n }\n\n default: {\n if (!select && !selectAllOnCurrentLevel) {\n break\n }\n\n if (\n selectAllOnCurrentLevel ||\n (selectMode === 'include' && select[field.name] === true) ||\n (selectMode === 'exclude' && typeof select[field.name] === 'undefined')\n ) {\n const fieldPath = `${path}${field.name}`\n\n if ((isFieldLocalized || parentIsLocalized) && _locales) {\n _locales.columns[fieldPath] = true\n } else if (adapter.tables[currentTableName]?.[fieldPath]) {\n currentArgs.columns[fieldPath] = true\n }\n\n if (\n !withTabledFields.rels &&\n (field.type === 'relationship' || field.type === 'upload') &&\n (field.hasMany || Array.isArray(field.relationTo))\n ) {\n withTabledFields.rels = true\n }\n\n if (!withTabledFields.numbers && field.type === 'number' && field.hasMany) {\n withTabledFields.numbers = true\n }\n\n if (!withTabledFields.texts && field.type === 'text' && field.hasMany) {\n withTabledFields.texts = true\n }\n }\n\n break\n }\n }\n })\n\n return topLevelArgs\n}\n"],"names":["sql","fieldIsVirtual","fieldShouldBeLocalized","toSnakeCase","buildQuery","getTableAlias","getNameFromDrizzleTable","jsonAggBuildObject","rawConstraint","chainMethods","traverseFields","_locales","adapter","collectionSlug","currentArgs","currentTableName","depth","fields","joinQuery","joins","locale","parentIsLocalized","path","select","selectAllOnCurrentLevel","selectMode","tablePath","topLevelArgs","topLevelTableName","versions","withTabledFields","forEach","field","isFieldLocalized","type","hasMany","relationTo","with","name","arraySelect","withArray","columns","id","_order","_parentID","orderBy","asc","arrayTableName","tableNameMap","get","tables","_locale","_uuid","arrayTableNameWithLocales","localesSuffix","flattenedFields","localized","undefined","Object","keys","length","blocksSelect","blockReferences","blocks","_block","block","payload","blockKey","slug","blockSelect","blockSelectMode","withBlock","_path","tableName","fieldSelect","joinSchemaPath","replaceAll","limit","limitArg","defaultLimit","sort","defaultSort","where","collections","collection","config","joinCollectionTableName","currentIDColumn","parent","joinQueryWhere","Array","isArray","targetField","on","equals","value","and","columnName","subQueryAlias","newAliasTable","selectFields","subQueryWhere","aliasTable","selectLocale","chainedMethods","condition","table","push","args","method","db","drizzle","key","val","split","pop","subQuery","methods","query","from","map","column","order","as","extras","result","raw","shouldSelect","withSelect","fieldPath","rels","numbers","texts"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"getTableColumnFromPath.d.ts","sourceRoot":"","sources":["../../src/queries/getTableColumnFromPath.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AACrE,OAAO,KAAK,EAAkB,cAAc,EAA0B,MAAM,SAAS,CAAA;AAGrF,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAM7D,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAM5D,KAAK,UAAU,GAAG;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,kBAAkB,CAAC,GAAG,CAAC,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAA;IAC5D,KAAK,EAAE,OAAO,CAAA;CACf,CAAA;AAED,KAAK,WAAW,GAAG;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE;QACR,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAA;QAClC,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;KACxB,EAAE,CAAA;IACH,WAAW,EAAE,UAAU,EAAE,CAAA;IACzB,KAAK,EAAE,cAAc,CAAA;IACrB,uBAAuB,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,CAAA;IAClD,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,SAAS,CAAC,EAAE,GAAG,CAAA;IACf,KAAK,EAAE,kBAAkB,CAAC,GAAG,CAAC,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAA;CAC7D,CAAA;AAED,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,cAAc,CAAA;IACvB,UAAU,CAAC,EAAE,kBAAkB,CAAC,GAAG,CAAC,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAA;IAClE,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAA;IAC1B,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,KAAK,EAAE,qBAAqB,CAAA;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iBAAiB,EAAE,OAAO,CAAA;IAC1B,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC3C,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;;OAEG;IACH,KAAK,EAAE,OAAO,CAAA;CACf,CAAA;AACD;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,+SAkBhC,IAAI,KAAG,WAwrBT,CAAA"}
1
+ {"version":3,"file":"getTableColumnFromPath.d.ts","sourceRoot":"","sources":["../../src/queries/getTableColumnFromPath.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AACrE,OAAO,KAAK,EAAkB,cAAc,EAA0B,MAAM,SAAS,CAAA;AAGrF,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAM7D,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAM5D,KAAK,UAAU,GAAG;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,kBAAkB,CAAC,GAAG,CAAC,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAA;IAC5D,KAAK,EAAE,OAAO,CAAA;CACf,CAAA;AAED,KAAK,WAAW,GAAG;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE;QACR,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAA;QAClC,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;KACxB,EAAE,CAAA;IACH,WAAW,EAAE,UAAU,EAAE,CAAA;IACzB,KAAK,EAAE,cAAc,CAAA;IACrB,uBAAuB,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,CAAA;IAClD,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,SAAS,CAAC,EAAE,GAAG,CAAA;IACf,KAAK,EAAE,kBAAkB,CAAC,GAAG,CAAC,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAA;CAC7D,CAAA;AAED,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,cAAc,CAAA;IACvB,UAAU,CAAC,EAAE,kBAAkB,CAAC,GAAG,CAAC,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAA;IAClE,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAA;IAC1B,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,KAAK,EAAE,qBAAqB,CAAA;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iBAAiB,EAAE,OAAO,CAAA;IAC1B,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC3C,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;;OAEG;IACH,KAAK,EAAE,OAAO,CAAA;CACf,CAAA;AACD;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,+SAkBhC,IAAI,KAAG,WAyqBT,CAAA"}
@@ -132,28 +132,6 @@ import { getTableAlias } from './getTableAlias.js';
132
132
  let result;
133
133
  const blockConstraints = [];
134
134
  const blockSelectFields = {};
135
- let blockJoin;
136
- if (isFieldLocalized && adapter.payload.config.localization) {
137
- const conditions = [
138
- eq((aliasTable || adapter.tables[tableName]).id, adapter.tables[newTableName]._parentID)
139
- ];
140
- if (locale !== 'all') {
141
- conditions.push(eq(adapter.tables[newTableName]._locale, locale));
142
- }
143
- blockJoin = {
144
- condition: and(...conditions),
145
- table: adapter.tables[newTableName]
146
- };
147
- } else {
148
- blockJoin = {
149
- condition: eq((aliasTable || adapter.tables[tableName]).id, adapter.tables[newTableName]._parentID),
150
- table: adapter.tables[newTableName]
151
- };
152
- }
153
- // Create a new reference for nested joins
154
- const newJoins = [
155
- ...joins
156
- ];
157
135
  try {
158
136
  result = getTableColumnFromPath({
159
137
  adapter,
@@ -161,7 +139,7 @@ import { getTableAlias } from './getTableAlias.js';
161
139
  constraintPath,
162
140
  constraints: blockConstraints,
163
141
  fields: block.flattenedFields,
164
- joins: newJoins,
142
+ joins,
165
143
  locale,
166
144
  parentIsLocalized: parentIsLocalized || field.localized,
167
145
  pathSegments: pathSegments.slice(1),
@@ -183,13 +161,22 @@ import { getTableAlias } from './getTableAlias.js';
183
161
  ...selectFields,
184
162
  ...blockSelectFields
185
163
  };
186
- const previousLength = joins.length;
187
- joins.push(blockJoin);
188
- // Append new joins AFTER the block join to prevent errors with missing FROM clause.
189
- if (newJoins.length > previousLength) {
190
- for(let i = previousLength; i < newJoins.length; i++){
191
- joins.push(newJoins[i]);
164
+ if (isFieldLocalized && adapter.payload.config.localization) {
165
+ const conditions = [
166
+ eq((aliasTable || adapter.tables[tableName]).id, adapter.tables[newTableName]._parentID)
167
+ ];
168
+ if (locale !== 'all') {
169
+ conditions.push(eq(adapter.tables[newTableName]._locale, locale));
192
170
  }
171
+ joins.push({
172
+ condition: and(...conditions),
173
+ table: adapter.tables[newTableName]
174
+ });
175
+ } else {
176
+ joins.push({
177
+ condition: eq((aliasTable || adapter.tables[tableName]).id, adapter.tables[newTableName]._parentID),
178
+ table: adapter.tables[newTableName]
179
+ });
193
180
  }
194
181
  return true;
195
182
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/queries/getTableColumnFromPath.ts"],"sourcesContent":["import type { SQL } from 'drizzle-orm'\nimport type { SQLiteTableWithColumns } from 'drizzle-orm/sqlite-core'\nimport type { FlattenedBlock, FlattenedField, NumberField, TextField } from 'payload'\n\nimport { and, eq, like, sql } from 'drizzle-orm'\nimport { type PgTableWithColumns } from 'drizzle-orm/pg-core'\nimport { APIError } from 'payload'\nimport { fieldShouldBeLocalized, tabHasName } from 'payload/shared'\nimport toSnakeCase from 'to-snake-case'\nimport { validate as uuidValidate } from 'uuid'\n\nimport type { DrizzleAdapter, GenericColumn } from '../types.js'\nimport type { BuildQueryJoinAliases } from './buildQuery.js'\n\nimport { isPolymorphicRelationship } from '../utilities/isPolymorphicRelationship.js'\nimport { addJoinTable } from './addJoinTable.js'\nimport { getTableAlias } from './getTableAlias.js'\n\ntype Constraint = {\n columnName: string\n table: PgTableWithColumns<any> | SQLiteTableWithColumns<any>\n value: unknown\n}\n\ntype TableColumn = {\n columnName?: string\n columns?: {\n idType: 'number' | 'text' | 'uuid'\n rawColumn: SQL<unknown>\n }[]\n constraints: Constraint[]\n field: FlattenedField\n getNotNullColumnByValue?: (val: unknown) => string\n pathSegments?: string[]\n rawColumn?: SQL\n table: PgTableWithColumns<any> | SQLiteTableWithColumns<any>\n}\n\ntype Args = {\n adapter: DrizzleAdapter\n aliasTable?: PgTableWithColumns<any> | SQLiteTableWithColumns<any>\n collectionPath: string\n columnPrefix?: string\n constraintPath?: string\n constraints?: Constraint[]\n fields: FlattenedField[]\n joins: BuildQueryJoinAliases\n locale?: string\n parentIsLocalized: boolean\n pathSegments: string[]\n rootTableName?: string\n selectFields: Record<string, GenericColumn>\n selectLocale?: boolean\n tableName: string\n /**\n * If creating a new table name for arrays and blocks, this suffix should be appended to the table name\n */\n tableNameSuffix?: string\n /**\n * The raw value of the query before sanitization\n */\n value: unknown\n}\n/**\n * Transforms path to table and column name or to a list of OR columns\n * Adds tables to `join`\n * @returns TableColumn\n */\nexport const getTableColumnFromPath = ({\n adapter,\n aliasTable,\n collectionPath,\n columnPrefix = '',\n constraintPath: incomingConstraintPath,\n constraints = [],\n fields,\n joins,\n locale: incomingLocale,\n parentIsLocalized,\n pathSegments: incomingSegments,\n rootTableName: incomingRootTableName,\n selectFields,\n selectLocale,\n tableName,\n tableNameSuffix = '',\n value,\n}: Args): TableColumn => {\n const fieldPath = incomingSegments[0]\n let locale = incomingLocale\n const rootTableName = incomingRootTableName || tableName\n let constraintPath = incomingConstraintPath || ''\n\n const field = fields.find((fieldToFind) => fieldToFind.name === fieldPath)\n let newTableName = tableName\n\n if (!field && fieldPath === 'id') {\n selectFields.id = adapter.tables[newTableName].id\n return {\n columnName: 'id',\n constraints,\n field: {\n name: 'id',\n type: adapter.idType === 'uuid' ? 'text' : 'number',\n } as NumberField | TextField,\n table: adapter.tables[newTableName],\n }\n }\n\n if (field) {\n const pathSegments = [...incomingSegments]\n\n const isFieldLocalized = fieldShouldBeLocalized({ field, parentIsLocalized })\n\n // If next segment is a locale,\n // we need to take it out and use it as the locale from this point on\n if (isFieldLocalized && adapter.payload.config.localization) {\n const matchedLocale = adapter.payload.config.localization.localeCodes.find(\n (locale) => locale === pathSegments[1],\n )\n\n if (matchedLocale) {\n locale = matchedLocale\n pathSegments.splice(1, 1)\n }\n }\n\n switch (field.type) {\n case 'array': {\n newTableName = adapter.tableNameMap.get(\n `${tableName}_${tableNameSuffix}${toSnakeCase(field.name)}`,\n )\n\n const arrayParentTable = aliasTable || adapter.tables[tableName]\n\n constraintPath = `${constraintPath}${field.name}.%.`\n if (locale && isFieldLocalized && adapter.payload.config.localization) {\n const conditions = [eq(arrayParentTable.id, adapter.tables[newTableName]._parentID)]\n\n if (selectLocale) {\n selectFields._locale = adapter.tables[newTableName]._locale\n }\n\n if (locale !== 'all') {\n conditions.push(eq(adapter.tables[newTableName]._locale, locale))\n }\n addJoinTable({\n condition: and(...conditions),\n joins,\n table: adapter.tables[newTableName],\n })\n } else {\n addJoinTable({\n condition: eq(arrayParentTable.id, adapter.tables[newTableName]._parentID),\n joins,\n table: adapter.tables[newTableName],\n })\n }\n return getTableColumnFromPath({\n adapter,\n collectionPath,\n constraintPath,\n constraints,\n fields: field.flattenedFields,\n joins,\n locale,\n parentIsLocalized: parentIsLocalized || field.localized,\n pathSegments: pathSegments.slice(1),\n rootTableName,\n selectFields,\n selectLocale,\n tableName: newTableName,\n value,\n })\n }\n case 'blocks': {\n let blockTableColumn: TableColumn\n let newTableName: string\n\n // handle blockType queries\n if (pathSegments[1] === 'blockType') {\n // find the block config using the value\n const blockTypes = Array.isArray(value) ? value : [value]\n blockTypes.forEach((blockType) => {\n const block =\n adapter.payload.blocks[blockType] ??\n ((field.blockReferences ?? field.blocks).find(\n (block) => typeof block !== 'string' && block.slug === blockType,\n ) as FlattenedBlock | undefined)\n\n newTableName = adapter.tableNameMap.get(\n `${tableName}_blocks_${toSnakeCase(block.slug)}`,\n )\n\n const { newAliasTable } = getTableAlias({ adapter, tableName: newTableName })\n\n joins.push({\n condition: eq(adapter.tables[tableName].id, newAliasTable._parentID),\n table: newAliasTable,\n })\n constraints.push({\n columnName: '_path',\n table: newAliasTable,\n value: pathSegments[0],\n })\n })\n return {\n constraints,\n field,\n getNotNullColumnByValue: () => 'id',\n table: adapter.tables[tableName],\n }\n }\n\n const hasBlockField = (field.blockReferences ?? field.blocks).some((_block) => {\n const block = typeof _block === 'string' ? adapter.payload.blocks[_block] : _block\n\n newTableName = adapter.tableNameMap.get(`${tableName}_blocks_${toSnakeCase(block.slug)}`)\n constraintPath = `${constraintPath}${field.name}.%.`\n\n let result: TableColumn\n const blockConstraints = []\n const blockSelectFields = {}\n\n let blockJoin: BuildQueryJoinAliases[0]\n if (isFieldLocalized && adapter.payload.config.localization) {\n const conditions = [\n eq(\n (aliasTable || adapter.tables[tableName]).id,\n adapter.tables[newTableName]._parentID,\n ),\n ]\n\n if (locale !== 'all') {\n conditions.push(eq(adapter.tables[newTableName]._locale, locale))\n }\n\n blockJoin = {\n condition: and(...conditions),\n table: adapter.tables[newTableName],\n }\n } else {\n blockJoin = {\n condition: eq(\n (aliasTable || adapter.tables[tableName]).id,\n adapter.tables[newTableName]._parentID,\n ),\n table: adapter.tables[newTableName],\n }\n }\n\n // Create a new reference for nested joins\n const newJoins = [...joins]\n\n try {\n result = getTableColumnFromPath({\n adapter,\n collectionPath,\n constraintPath,\n constraints: blockConstraints,\n fields: block.flattenedFields,\n joins: newJoins,\n locale,\n parentIsLocalized: parentIsLocalized || field.localized,\n pathSegments: pathSegments.slice(1),\n rootTableName,\n selectFields: blockSelectFields,\n selectLocale,\n tableName: newTableName,\n value,\n })\n } catch (error) {\n // this is fine, not every block will have the field\n }\n if (!result) {\n return\n }\n blockTableColumn = result\n constraints = constraints.concat(blockConstraints)\n selectFields = { ...selectFields, ...blockSelectFields }\n\n const previousLength = joins.length\n joins.push(blockJoin)\n // Append new joins AFTER the block join to prevent errors with missing FROM clause.\n if (newJoins.length > previousLength) {\n for (let i = previousLength; i < newJoins.length; i++) {\n joins.push(newJoins[i])\n }\n }\n return true\n })\n if (hasBlockField) {\n return {\n columnName: blockTableColumn.columnName,\n constraints,\n field: blockTableColumn.field,\n pathSegments: pathSegments.slice(1),\n rawColumn: blockTableColumn.rawColumn,\n table: blockTableColumn.table,\n }\n }\n break\n }\n\n case 'group': {\n if (locale && isFieldLocalized && adapter.payload.config.localization) {\n newTableName = `${tableName}${adapter.localesSuffix}`\n\n let condition = eq(adapter.tables[tableName].id, adapter.tables[newTableName]._parentID)\n\n if (locale !== 'all') {\n condition = and(condition, eq(adapter.tables[newTableName]._locale, locale))\n }\n\n addJoinTable({\n condition,\n joins,\n table: adapter.tables[newTableName],\n })\n }\n return getTableColumnFromPath({\n adapter,\n aliasTable,\n collectionPath,\n columnPrefix: `${columnPrefix}${field.name}_`,\n constraintPath: `${constraintPath}${field.name}.`,\n constraints,\n fields: field.flattenedFields,\n joins,\n locale,\n parentIsLocalized: parentIsLocalized || field.localized,\n pathSegments: pathSegments.slice(1),\n rootTableName,\n selectFields,\n selectLocale,\n tableName: newTableName,\n tableNameSuffix: `${tableNameSuffix}${toSnakeCase(field.name)}_`,\n value,\n })\n }\n\n case 'number':\n case 'text': {\n if (field.hasMany) {\n let tableType = 'texts'\n let columnName = 'text'\n if (field.type === 'number') {\n tableType = 'numbers'\n columnName = 'number'\n }\n newTableName = `${rootTableName}_${tableType}`\n const joinConstraints = [\n eq(adapter.tables[rootTableName].id, adapter.tables[newTableName].parent),\n like(adapter.tables[newTableName].path, `${constraintPath}${field.name}`),\n ]\n\n if (locale && isFieldLocalized && adapter.payload.config.localization) {\n const conditions = [...joinConstraints]\n\n if (locale !== 'all') {\n conditions.push(eq(adapter.tables[newTableName]._locale, locale))\n }\n addJoinTable({\n condition: and(...conditions),\n joins,\n table: adapter.tables[newTableName],\n })\n } else {\n addJoinTable({\n condition: and(...joinConstraints),\n joins,\n table: adapter.tables[newTableName],\n })\n }\n\n return {\n columnName,\n constraints,\n field,\n table: adapter.tables[newTableName],\n }\n }\n break\n }\n\n case 'relationship':\n case 'upload': {\n const newCollectionPath = pathSegments.slice(1).join('.')\n\n if (Array.isArray(field.relationTo) || field.hasMany) {\n let relationshipFields: FlattenedField[]\n const relationTableName = `${rootTableName}${adapter.relationshipsSuffix}`\n const {\n newAliasTable: aliasRelationshipTable,\n newAliasTableName: aliasRelationshipTableName,\n } = getTableAlias({\n adapter,\n tableName: relationTableName,\n })\n\n if (selectLocale && isFieldLocalized && adapter.payload.config.localization) {\n selectFields._locale = aliasRelationshipTable.locale\n }\n\n // Join in the relationships table\n if (locale && isFieldLocalized && adapter.payload.config.localization) {\n const conditions = [\n eq((aliasTable || adapter.tables[rootTableName]).id, aliasRelationshipTable.parent),\n like(aliasRelationshipTable.path, `${constraintPath}${field.name}`),\n ]\n\n if (locale !== 'all') {\n conditions.push(eq(aliasRelationshipTable.locale, locale))\n }\n\n addJoinTable({\n condition: and(...conditions),\n joins,\n queryPath: `${constraintPath}.${field.name}`,\n table: aliasRelationshipTable,\n })\n } else {\n // Join in the relationships table\n addJoinTable({\n condition: and(\n eq((aliasTable || adapter.tables[rootTableName]).id, aliasRelationshipTable.parent),\n like(aliasRelationshipTable.path, `${constraintPath}${field.name}`),\n ),\n joins,\n queryPath: `${constraintPath}.${field.name}`,\n table: aliasRelationshipTable,\n })\n }\n\n selectFields[`${relationTableName}.path`] = aliasRelationshipTable.path\n\n let newAliasTable\n\n if (typeof field.relationTo === 'string') {\n const relationshipConfig = adapter.payload.collections[field.relationTo].config\n\n newTableName = adapter.tableNameMap.get(toSnakeCase(relationshipConfig.slug))\n\n // parent to relationship join table\n relationshipFields = relationshipConfig.flattenedFields\n ;({ newAliasTable } = getTableAlias({ adapter, tableName: newTableName }))\n\n joins.push({\n condition: eq(newAliasTable.id, aliasRelationshipTable[`${field.relationTo}ID`]),\n table: newAliasTable,\n })\n\n if (newCollectionPath === '' || newCollectionPath === 'id') {\n return {\n columnName: `${field.relationTo}ID`,\n constraints,\n field,\n table: aliasRelationshipTable,\n }\n }\n } else if (newCollectionPath === 'value') {\n const hasCustomCollectionWithCustomID = field.relationTo.some(\n (relationTo) => !!adapter.payload.collections[relationTo].customIDType,\n )\n\n const columns: TableColumn['columns'] = field.relationTo\n .map((relationTo) => {\n let idType: 'number' | 'text' | 'uuid' =\n adapter.idType === 'uuid' ? 'uuid' : 'number'\n\n const { customIDType } = adapter.payload.collections[relationTo]\n\n if (customIDType) {\n idType = customIDType\n }\n\n const idTypeTextOrUuid = idType === 'text' || idType === 'uuid'\n\n // Do not add the column to OR if we know that it can't match by the type\n // We can't do the same with idType: 'number' because `value` can be from the REST search query params\n if (typeof value === 'number' && idTypeTextOrUuid) {\n return null\n }\n\n if (\n Array.isArray(value) &&\n value.every((val) => typeof val === 'number') &&\n idTypeTextOrUuid\n ) {\n return null\n }\n\n // Do not add the UUID type column if incoming query value doesn't match UUID. If there aren't any collections with\n // a custom ID type, we skip this check\n // We need this because Postgres throws an error if querying by UUID column with a value that isn't a valid UUID.\n if (\n value &&\n !Array.isArray(value) &&\n idType === 'uuid' &&\n hasCustomCollectionWithCustomID\n ) {\n if (!uuidValidate(value)) {\n return null\n }\n }\n\n if (\n Array.isArray(value) &&\n idType === 'uuid' &&\n hasCustomCollectionWithCustomID &&\n !value.some((val) => uuidValidate(val))\n ) {\n return null\n }\n\n const relationTableName = adapter.tableNameMap.get(\n toSnakeCase(adapter.payload.collections[relationTo].config.slug),\n )\n\n return {\n idType,\n rawColumn: sql.raw(`\"${aliasRelationshipTableName}\".\"${relationTableName}_id\"`),\n }\n })\n .filter(Boolean)\n\n return {\n columns,\n constraints,\n field,\n table: aliasRelationshipTable,\n }\n } else if (newCollectionPath === 'relationTo') {\n const relationTo = Array.isArray(field.relationTo)\n ? field.relationTo\n : [field.relationTo]\n\n return {\n constraints,\n field,\n getNotNullColumnByValue: (val) => {\n const matchedRelation = relationTo.find((relation) => relation === val)\n if (matchedRelation) {\n return `${matchedRelation}ID`\n }\n return undefined\n },\n table: aliasRelationshipTable,\n }\n } else if (isPolymorphicRelationship(value)) {\n const { relationTo } = value\n\n const relationTableName = adapter.tableNameMap.get(\n toSnakeCase(adapter.payload.collections[relationTo].config.slug),\n )\n\n return {\n constraints,\n field,\n rawColumn: sql.raw(`\"${aliasRelationshipTableName}\".\"${relationTableName}_id\"`),\n table: aliasRelationshipTable,\n }\n } else {\n throw new APIError('Not supported')\n }\n\n return getTableColumnFromPath({\n adapter,\n aliasTable: newAliasTable,\n collectionPath: newCollectionPath,\n constraints,\n // relationshipFields are fields from a different collection => no parentIsLocalized\n fields: relationshipFields,\n joins,\n locale,\n parentIsLocalized: false,\n pathSegments: pathSegments.slice(1),\n rootTableName: newTableName,\n selectFields,\n selectLocale,\n tableName: newTableName,\n value,\n })\n } else if (\n pathSegments.length > 1 &&\n !(pathSegments.length === 2 && pathSegments[1] === 'id')\n ) {\n // simple relationships\n const columnName = `${columnPrefix}${field.name}`\n const newTableName = adapter.tableNameMap.get(\n toSnakeCase(adapter.payload.collections[field.relationTo].config.slug),\n )\n const { newAliasTable } = getTableAlias({ adapter, tableName: newTableName })\n\n if (isFieldLocalized && adapter.payload.config.localization) {\n const { newAliasTable: aliasLocaleTable } = getTableAlias({\n adapter,\n tableName: `${rootTableName}${adapter.localesSuffix}`,\n })\n\n const condtions = [eq(aliasLocaleTable._parentID, adapter.tables[rootTableName].id)]\n\n if (selectLocale) {\n selectFields._locale = aliasLocaleTable._locale\n }\n\n if (locale !== 'all') {\n condtions.push(eq(aliasLocaleTable._locale, locale))\n }\n\n const localesTable = adapter.tables[`${rootTableName}${adapter.localesSuffix}`]\n\n addJoinTable({\n condition: and(...condtions),\n joins,\n table: localesTable,\n })\n\n joins.push({\n condition: eq(localesTable[columnName], newAliasTable.id),\n table: newAliasTable,\n })\n } else {\n joins.push({\n condition: eq(\n newAliasTable.id,\n aliasTable ? aliasTable[columnName] : adapter.tables[tableName][columnName],\n ),\n table: newAliasTable,\n })\n }\n\n return getTableColumnFromPath({\n adapter,\n aliasTable: newAliasTable,\n collectionPath: newCollectionPath,\n constraintPath: '',\n constraints,\n fields: adapter.payload.collections[field.relationTo].config.flattenedFields,\n joins,\n locale,\n parentIsLocalized: parentIsLocalized || field.localized,\n pathSegments: pathSegments.slice(1),\n selectFields,\n tableName: newTableName,\n value,\n })\n }\n break\n }\n\n case 'select': {\n if (field.hasMany) {\n const newTableName = adapter.tableNameMap.get(\n `${tableName}_${tableNameSuffix}${toSnakeCase(field.name)}`,\n )\n\n if (locale && isFieldLocalized && adapter.payload.config.localization) {\n const conditions = [\n eq(adapter.tables[tableName].id, adapter.tables[newTableName].parent),\n eq(adapter.tables[newTableName]._locale, locale),\n ]\n\n if (locale !== 'all') {\n conditions.push(eq(adapter.tables[newTableName]._locale, locale))\n }\n\n addJoinTable({\n condition: and(...conditions),\n joins,\n table: adapter.tables[newTableName],\n })\n } else {\n addJoinTable({\n condition: eq(adapter.tables[tableName].id, adapter.tables[newTableName].parent),\n joins,\n table: adapter.tables[newTableName],\n })\n }\n\n return {\n columnName: 'value',\n constraints,\n field,\n table: adapter.tables[newTableName],\n }\n }\n break\n }\n\n case 'tab': {\n if (tabHasName(field)) {\n return getTableColumnFromPath({\n adapter,\n aliasTable,\n collectionPath,\n columnPrefix: `${columnPrefix}${field.name}_`,\n constraintPath: `${constraintPath}${field.name}.`,\n constraints,\n fields: field.flattenedFields,\n joins,\n locale,\n parentIsLocalized: parentIsLocalized || field.localized,\n pathSegments: pathSegments.slice(1),\n rootTableName,\n selectFields,\n selectLocale,\n tableName: newTableName,\n tableNameSuffix: `${tableNameSuffix}${toSnakeCase(field.name)}_`,\n value,\n })\n }\n return getTableColumnFromPath({\n adapter,\n aliasTable,\n collectionPath,\n columnPrefix,\n constraintPath,\n constraints,\n fields: field.flattenedFields,\n joins,\n locale,\n parentIsLocalized: parentIsLocalized || field.localized,\n pathSegments: pathSegments.slice(1),\n rootTableName,\n selectFields,\n selectLocale,\n tableName: newTableName,\n tableNameSuffix,\n value,\n })\n }\n\n default: {\n // fall through\n break\n }\n }\n\n let newTable = adapter.tables[newTableName]\n\n if (isFieldLocalized && adapter.payload.config.localization) {\n // If localized, we go to localized table and set aliasTable to undefined\n // so it is not picked up below to be used as targetTable\n const parentTable = aliasTable || adapter.tables[tableName]\n newTableName = `${tableName}${adapter.localesSuffix}`\n\n newTable = adapter.tables[newTableName]\n\n let condition = eq(parentTable.id, newTable._parentID)\n\n if (locale !== 'all') {\n condition = and(condition, eq(newTable._locale, locale))\n }\n\n if (selectLocale) {\n selectFields._locale = newTable._locale\n }\n\n addJoinTable({\n condition,\n joins,\n table: newTable,\n })\n\n aliasTable = undefined\n }\n\n const targetTable = aliasTable || newTable\n\n selectFields[`${newTableName}.${columnPrefix}${field.name}`] =\n targetTable[`${columnPrefix}${field.name}`]\n\n return {\n columnName: `${columnPrefix}${field.name}`,\n constraints,\n field,\n pathSegments,\n table: targetTable,\n }\n }\n\n throw new APIError(`Cannot find field for path at ${fieldPath}`)\n}\n"],"names":["and","eq","like","sql","APIError","fieldShouldBeLocalized","tabHasName","toSnakeCase","validate","uuidValidate","isPolymorphicRelationship","addJoinTable","getTableAlias","getTableColumnFromPath","adapter","aliasTable","collectionPath","columnPrefix","constraintPath","incomingConstraintPath","constraints","fields","joins","locale","incomingLocale","parentIsLocalized","pathSegments","incomingSegments","rootTableName","incomingRootTableName","selectFields","selectLocale","tableName","tableNameSuffix","value","fieldPath","field","find","fieldToFind","name","newTableName","id","tables","columnName","type","idType","table","isFieldLocalized","payload","config","localization","matchedLocale","localeCodes","splice","tableNameMap","get","arrayParentTable","conditions","_parentID","_locale","push","condition","flattenedFields","localized","slice","blockTableColumn","blockTypes","Array","isArray","forEach","blockType","block","blocks","blockReferences","slug","newAliasTable","getNotNullColumnByValue","hasBlockField","some","_block","result","blockConstraints","blockSelectFields","blockJoin","newJoins","error","concat","previousLength","length","i","rawColumn","localesSuffix","hasMany","tableType","joinConstraints","parent","path","newCollectionPath","join","relationTo","relationshipFields","relationTableName","relationshipsSuffix","aliasRelationshipTable","newAliasTableName","aliasRelationshipTableName","queryPath","relationshipConfig","collections","hasCustomCollectionWithCustomID","customIDType","columns","map","idTypeTextOrUuid","every","val","raw","filter","Boolean","matchedRelation","relation","undefined","aliasLocaleTable","condtions","localesTable","newTable","parentTable","targetTable"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/queries/getTableColumnFromPath.ts"],"sourcesContent":["import type { SQL } from 'drizzle-orm'\nimport type { SQLiteTableWithColumns } from 'drizzle-orm/sqlite-core'\nimport type { FlattenedBlock, FlattenedField, NumberField, TextField } from 'payload'\n\nimport { and, eq, like, sql } from 'drizzle-orm'\nimport { type PgTableWithColumns } from 'drizzle-orm/pg-core'\nimport { APIError } from 'payload'\nimport { fieldShouldBeLocalized, tabHasName } from 'payload/shared'\nimport toSnakeCase from 'to-snake-case'\nimport { validate as uuidValidate } from 'uuid'\n\nimport type { DrizzleAdapter, GenericColumn } from '../types.js'\nimport type { BuildQueryJoinAliases } from './buildQuery.js'\n\nimport { isPolymorphicRelationship } from '../utilities/isPolymorphicRelationship.js'\nimport { addJoinTable } from './addJoinTable.js'\nimport { getTableAlias } from './getTableAlias.js'\n\ntype Constraint = {\n columnName: string\n table: PgTableWithColumns<any> | SQLiteTableWithColumns<any>\n value: unknown\n}\n\ntype TableColumn = {\n columnName?: string\n columns?: {\n idType: 'number' | 'text' | 'uuid'\n rawColumn: SQL<unknown>\n }[]\n constraints: Constraint[]\n field: FlattenedField\n getNotNullColumnByValue?: (val: unknown) => string\n pathSegments?: string[]\n rawColumn?: SQL\n table: PgTableWithColumns<any> | SQLiteTableWithColumns<any>\n}\n\ntype Args = {\n adapter: DrizzleAdapter\n aliasTable?: PgTableWithColumns<any> | SQLiteTableWithColumns<any>\n collectionPath: string\n columnPrefix?: string\n constraintPath?: string\n constraints?: Constraint[]\n fields: FlattenedField[]\n joins: BuildQueryJoinAliases\n locale?: string\n parentIsLocalized: boolean\n pathSegments: string[]\n rootTableName?: string\n selectFields: Record<string, GenericColumn>\n selectLocale?: boolean\n tableName: string\n /**\n * If creating a new table name for arrays and blocks, this suffix should be appended to the table name\n */\n tableNameSuffix?: string\n /**\n * The raw value of the query before sanitization\n */\n value: unknown\n}\n/**\n * Transforms path to table and column name or to a list of OR columns\n * Adds tables to `join`\n * @returns TableColumn\n */\nexport const getTableColumnFromPath = ({\n adapter,\n aliasTable,\n collectionPath,\n columnPrefix = '',\n constraintPath: incomingConstraintPath,\n constraints = [],\n fields,\n joins,\n locale: incomingLocale,\n parentIsLocalized,\n pathSegments: incomingSegments,\n rootTableName: incomingRootTableName,\n selectFields,\n selectLocale,\n tableName,\n tableNameSuffix = '',\n value,\n}: Args): TableColumn => {\n const fieldPath = incomingSegments[0]\n let locale = incomingLocale\n const rootTableName = incomingRootTableName || tableName\n let constraintPath = incomingConstraintPath || ''\n\n const field = fields.find((fieldToFind) => fieldToFind.name === fieldPath)\n let newTableName = tableName\n\n if (!field && fieldPath === 'id') {\n selectFields.id = adapter.tables[newTableName].id\n return {\n columnName: 'id',\n constraints,\n field: {\n name: 'id',\n type: adapter.idType === 'uuid' ? 'text' : 'number',\n } as NumberField | TextField,\n table: adapter.tables[newTableName],\n }\n }\n\n if (field) {\n const pathSegments = [...incomingSegments]\n\n const isFieldLocalized = fieldShouldBeLocalized({ field, parentIsLocalized })\n\n // If next segment is a locale,\n // we need to take it out and use it as the locale from this point on\n if (isFieldLocalized && adapter.payload.config.localization) {\n const matchedLocale = adapter.payload.config.localization.localeCodes.find(\n (locale) => locale === pathSegments[1],\n )\n\n if (matchedLocale) {\n locale = matchedLocale\n pathSegments.splice(1, 1)\n }\n }\n\n switch (field.type) {\n case 'array': {\n newTableName = adapter.tableNameMap.get(\n `${tableName}_${tableNameSuffix}${toSnakeCase(field.name)}`,\n )\n\n const arrayParentTable = aliasTable || adapter.tables[tableName]\n\n constraintPath = `${constraintPath}${field.name}.%.`\n if (locale && isFieldLocalized && adapter.payload.config.localization) {\n const conditions = [eq(arrayParentTable.id, adapter.tables[newTableName]._parentID)]\n\n if (selectLocale) {\n selectFields._locale = adapter.tables[newTableName]._locale\n }\n\n if (locale !== 'all') {\n conditions.push(eq(adapter.tables[newTableName]._locale, locale))\n }\n addJoinTable({\n condition: and(...conditions),\n joins,\n table: adapter.tables[newTableName],\n })\n } else {\n addJoinTable({\n condition: eq(arrayParentTable.id, adapter.tables[newTableName]._parentID),\n joins,\n table: adapter.tables[newTableName],\n })\n }\n return getTableColumnFromPath({\n adapter,\n collectionPath,\n constraintPath,\n constraints,\n fields: field.flattenedFields,\n joins,\n locale,\n parentIsLocalized: parentIsLocalized || field.localized,\n pathSegments: pathSegments.slice(1),\n rootTableName,\n selectFields,\n selectLocale,\n tableName: newTableName,\n value,\n })\n }\n case 'blocks': {\n let blockTableColumn: TableColumn\n let newTableName: string\n\n // handle blockType queries\n if (pathSegments[1] === 'blockType') {\n // find the block config using the value\n const blockTypes = Array.isArray(value) ? value : [value]\n blockTypes.forEach((blockType) => {\n const block =\n adapter.payload.blocks[blockType] ??\n ((field.blockReferences ?? field.blocks).find(\n (block) => typeof block !== 'string' && block.slug === blockType,\n ) as FlattenedBlock | undefined)\n\n newTableName = adapter.tableNameMap.get(\n `${tableName}_blocks_${toSnakeCase(block.slug)}`,\n )\n\n const { newAliasTable } = getTableAlias({ adapter, tableName: newTableName })\n\n joins.push({\n condition: eq(adapter.tables[tableName].id, newAliasTable._parentID),\n table: newAliasTable,\n })\n constraints.push({\n columnName: '_path',\n table: newAliasTable,\n value: pathSegments[0],\n })\n })\n return {\n constraints,\n field,\n getNotNullColumnByValue: () => 'id',\n table: adapter.tables[tableName],\n }\n }\n\n const hasBlockField = (field.blockReferences ?? field.blocks).some((_block) => {\n const block = typeof _block === 'string' ? adapter.payload.blocks[_block] : _block\n\n newTableName = adapter.tableNameMap.get(`${tableName}_blocks_${toSnakeCase(block.slug)}`)\n constraintPath = `${constraintPath}${field.name}.%.`\n\n let result: TableColumn\n const blockConstraints = []\n const blockSelectFields = {}\n try {\n result = getTableColumnFromPath({\n adapter,\n collectionPath,\n constraintPath,\n constraints: blockConstraints,\n fields: block.flattenedFields,\n joins,\n locale,\n parentIsLocalized: parentIsLocalized || field.localized,\n pathSegments: pathSegments.slice(1),\n rootTableName,\n selectFields: blockSelectFields,\n selectLocale,\n tableName: newTableName,\n value,\n })\n } catch (error) {\n // this is fine, not every block will have the field\n }\n if (!result) {\n return\n }\n blockTableColumn = result\n constraints = constraints.concat(blockConstraints)\n selectFields = { ...selectFields, ...blockSelectFields }\n if (isFieldLocalized && adapter.payload.config.localization) {\n const conditions = [\n eq(\n (aliasTable || adapter.tables[tableName]).id,\n adapter.tables[newTableName]._parentID,\n ),\n ]\n\n if (locale !== 'all') {\n conditions.push(eq(adapter.tables[newTableName]._locale, locale))\n }\n\n joins.push({\n condition: and(...conditions),\n table: adapter.tables[newTableName],\n })\n } else {\n joins.push({\n condition: eq(\n (aliasTable || adapter.tables[tableName]).id,\n adapter.tables[newTableName]._parentID,\n ),\n table: adapter.tables[newTableName],\n })\n }\n return true\n })\n if (hasBlockField) {\n return {\n columnName: blockTableColumn.columnName,\n constraints,\n field: blockTableColumn.field,\n pathSegments: pathSegments.slice(1),\n rawColumn: blockTableColumn.rawColumn,\n table: blockTableColumn.table,\n }\n }\n break\n }\n\n case 'group': {\n if (locale && isFieldLocalized && adapter.payload.config.localization) {\n newTableName = `${tableName}${adapter.localesSuffix}`\n\n let condition = eq(adapter.tables[tableName].id, adapter.tables[newTableName]._parentID)\n\n if (locale !== 'all') {\n condition = and(condition, eq(adapter.tables[newTableName]._locale, locale))\n }\n\n addJoinTable({\n condition,\n joins,\n table: adapter.tables[newTableName],\n })\n }\n return getTableColumnFromPath({\n adapter,\n aliasTable,\n collectionPath,\n columnPrefix: `${columnPrefix}${field.name}_`,\n constraintPath: `${constraintPath}${field.name}.`,\n constraints,\n fields: field.flattenedFields,\n joins,\n locale,\n parentIsLocalized: parentIsLocalized || field.localized,\n pathSegments: pathSegments.slice(1),\n rootTableName,\n selectFields,\n selectLocale,\n tableName: newTableName,\n tableNameSuffix: `${tableNameSuffix}${toSnakeCase(field.name)}_`,\n value,\n })\n }\n\n case 'number':\n case 'text': {\n if (field.hasMany) {\n let tableType = 'texts'\n let columnName = 'text'\n if (field.type === 'number') {\n tableType = 'numbers'\n columnName = 'number'\n }\n newTableName = `${rootTableName}_${tableType}`\n const joinConstraints = [\n eq(adapter.tables[rootTableName].id, adapter.tables[newTableName].parent),\n like(adapter.tables[newTableName].path, `${constraintPath}${field.name}`),\n ]\n\n if (locale && isFieldLocalized && adapter.payload.config.localization) {\n const conditions = [...joinConstraints]\n\n if (locale !== 'all') {\n conditions.push(eq(adapter.tables[newTableName]._locale, locale))\n }\n addJoinTable({\n condition: and(...conditions),\n joins,\n table: adapter.tables[newTableName],\n })\n } else {\n addJoinTable({\n condition: and(...joinConstraints),\n joins,\n table: adapter.tables[newTableName],\n })\n }\n\n return {\n columnName,\n constraints,\n field,\n table: adapter.tables[newTableName],\n }\n }\n break\n }\n\n case 'relationship':\n case 'upload': {\n const newCollectionPath = pathSegments.slice(1).join('.')\n\n if (Array.isArray(field.relationTo) || field.hasMany) {\n let relationshipFields: FlattenedField[]\n const relationTableName = `${rootTableName}${adapter.relationshipsSuffix}`\n const {\n newAliasTable: aliasRelationshipTable,\n newAliasTableName: aliasRelationshipTableName,\n } = getTableAlias({\n adapter,\n tableName: relationTableName,\n })\n\n if (selectLocale && isFieldLocalized && adapter.payload.config.localization) {\n selectFields._locale = aliasRelationshipTable.locale\n }\n\n // Join in the relationships table\n if (locale && isFieldLocalized && adapter.payload.config.localization) {\n const conditions = [\n eq((aliasTable || adapter.tables[rootTableName]).id, aliasRelationshipTable.parent),\n like(aliasRelationshipTable.path, `${constraintPath}${field.name}`),\n ]\n\n if (locale !== 'all') {\n conditions.push(eq(aliasRelationshipTable.locale, locale))\n }\n\n addJoinTable({\n condition: and(...conditions),\n joins,\n queryPath: `${constraintPath}.${field.name}`,\n table: aliasRelationshipTable,\n })\n } else {\n // Join in the relationships table\n addJoinTable({\n condition: and(\n eq((aliasTable || adapter.tables[rootTableName]).id, aliasRelationshipTable.parent),\n like(aliasRelationshipTable.path, `${constraintPath}${field.name}`),\n ),\n joins,\n queryPath: `${constraintPath}.${field.name}`,\n table: aliasRelationshipTable,\n })\n }\n\n selectFields[`${relationTableName}.path`] = aliasRelationshipTable.path\n\n let newAliasTable\n\n if (typeof field.relationTo === 'string') {\n const relationshipConfig = adapter.payload.collections[field.relationTo].config\n\n newTableName = adapter.tableNameMap.get(toSnakeCase(relationshipConfig.slug))\n\n // parent to relationship join table\n relationshipFields = relationshipConfig.flattenedFields\n ;({ newAliasTable } = getTableAlias({ adapter, tableName: newTableName }))\n\n joins.push({\n condition: eq(newAliasTable.id, aliasRelationshipTable[`${field.relationTo}ID`]),\n table: newAliasTable,\n })\n\n if (newCollectionPath === '' || newCollectionPath === 'id') {\n return {\n columnName: `${field.relationTo}ID`,\n constraints,\n field,\n table: aliasRelationshipTable,\n }\n }\n } else if (newCollectionPath === 'value') {\n const hasCustomCollectionWithCustomID = field.relationTo.some(\n (relationTo) => !!adapter.payload.collections[relationTo].customIDType,\n )\n\n const columns: TableColumn['columns'] = field.relationTo\n .map((relationTo) => {\n let idType: 'number' | 'text' | 'uuid' =\n adapter.idType === 'uuid' ? 'uuid' : 'number'\n\n const { customIDType } = adapter.payload.collections[relationTo]\n\n if (customIDType) {\n idType = customIDType\n }\n\n const idTypeTextOrUuid = idType === 'text' || idType === 'uuid'\n\n // Do not add the column to OR if we know that it can't match by the type\n // We can't do the same with idType: 'number' because `value` can be from the REST search query params\n if (typeof value === 'number' && idTypeTextOrUuid) {\n return null\n }\n\n if (\n Array.isArray(value) &&\n value.every((val) => typeof val === 'number') &&\n idTypeTextOrUuid\n ) {\n return null\n }\n\n // Do not add the UUID type column if incoming query value doesn't match UUID. If there aren't any collections with\n // a custom ID type, we skip this check\n // We need this because Postgres throws an error if querying by UUID column with a value that isn't a valid UUID.\n if (\n value &&\n !Array.isArray(value) &&\n idType === 'uuid' &&\n hasCustomCollectionWithCustomID\n ) {\n if (!uuidValidate(value)) {\n return null\n }\n }\n\n if (\n Array.isArray(value) &&\n idType === 'uuid' &&\n hasCustomCollectionWithCustomID &&\n !value.some((val) => uuidValidate(val))\n ) {\n return null\n }\n\n const relationTableName = adapter.tableNameMap.get(\n toSnakeCase(adapter.payload.collections[relationTo].config.slug),\n )\n\n return {\n idType,\n rawColumn: sql.raw(`\"${aliasRelationshipTableName}\".\"${relationTableName}_id\"`),\n }\n })\n .filter(Boolean)\n\n return {\n columns,\n constraints,\n field,\n table: aliasRelationshipTable,\n }\n } else if (newCollectionPath === 'relationTo') {\n const relationTo = Array.isArray(field.relationTo)\n ? field.relationTo\n : [field.relationTo]\n\n return {\n constraints,\n field,\n getNotNullColumnByValue: (val) => {\n const matchedRelation = relationTo.find((relation) => relation === val)\n if (matchedRelation) {\n return `${matchedRelation}ID`\n }\n return undefined\n },\n table: aliasRelationshipTable,\n }\n } else if (isPolymorphicRelationship(value)) {\n const { relationTo } = value\n\n const relationTableName = adapter.tableNameMap.get(\n toSnakeCase(adapter.payload.collections[relationTo].config.slug),\n )\n\n return {\n constraints,\n field,\n rawColumn: sql.raw(`\"${aliasRelationshipTableName}\".\"${relationTableName}_id\"`),\n table: aliasRelationshipTable,\n }\n } else {\n throw new APIError('Not supported')\n }\n\n return getTableColumnFromPath({\n adapter,\n aliasTable: newAliasTable,\n collectionPath: newCollectionPath,\n constraints,\n // relationshipFields are fields from a different collection => no parentIsLocalized\n fields: relationshipFields,\n joins,\n locale,\n parentIsLocalized: false,\n pathSegments: pathSegments.slice(1),\n rootTableName: newTableName,\n selectFields,\n selectLocale,\n tableName: newTableName,\n value,\n })\n } else if (\n pathSegments.length > 1 &&\n !(pathSegments.length === 2 && pathSegments[1] === 'id')\n ) {\n // simple relationships\n const columnName = `${columnPrefix}${field.name}`\n const newTableName = adapter.tableNameMap.get(\n toSnakeCase(adapter.payload.collections[field.relationTo].config.slug),\n )\n const { newAliasTable } = getTableAlias({ adapter, tableName: newTableName })\n\n if (isFieldLocalized && adapter.payload.config.localization) {\n const { newAliasTable: aliasLocaleTable } = getTableAlias({\n adapter,\n tableName: `${rootTableName}${adapter.localesSuffix}`,\n })\n\n const condtions = [eq(aliasLocaleTable._parentID, adapter.tables[rootTableName].id)]\n\n if (selectLocale) {\n selectFields._locale = aliasLocaleTable._locale\n }\n\n if (locale !== 'all') {\n condtions.push(eq(aliasLocaleTable._locale, locale))\n }\n\n const localesTable = adapter.tables[`${rootTableName}${adapter.localesSuffix}`]\n\n addJoinTable({\n condition: and(...condtions),\n joins,\n table: localesTable,\n })\n\n joins.push({\n condition: eq(localesTable[columnName], newAliasTable.id),\n table: newAliasTable,\n })\n } else {\n joins.push({\n condition: eq(\n newAliasTable.id,\n aliasTable ? aliasTable[columnName] : adapter.tables[tableName][columnName],\n ),\n table: newAliasTable,\n })\n }\n\n return getTableColumnFromPath({\n adapter,\n aliasTable: newAliasTable,\n collectionPath: newCollectionPath,\n constraintPath: '',\n constraints,\n fields: adapter.payload.collections[field.relationTo].config.flattenedFields,\n joins,\n locale,\n parentIsLocalized: parentIsLocalized || field.localized,\n pathSegments: pathSegments.slice(1),\n selectFields,\n tableName: newTableName,\n value,\n })\n }\n break\n }\n\n case 'select': {\n if (field.hasMany) {\n const newTableName = adapter.tableNameMap.get(\n `${tableName}_${tableNameSuffix}${toSnakeCase(field.name)}`,\n )\n\n if (locale && isFieldLocalized && adapter.payload.config.localization) {\n const conditions = [\n eq(adapter.tables[tableName].id, adapter.tables[newTableName].parent),\n eq(adapter.tables[newTableName]._locale, locale),\n ]\n\n if (locale !== 'all') {\n conditions.push(eq(adapter.tables[newTableName]._locale, locale))\n }\n\n addJoinTable({\n condition: and(...conditions),\n joins,\n table: adapter.tables[newTableName],\n })\n } else {\n addJoinTable({\n condition: eq(adapter.tables[tableName].id, adapter.tables[newTableName].parent),\n joins,\n table: adapter.tables[newTableName],\n })\n }\n\n return {\n columnName: 'value',\n constraints,\n field,\n table: adapter.tables[newTableName],\n }\n }\n break\n }\n\n case 'tab': {\n if (tabHasName(field)) {\n return getTableColumnFromPath({\n adapter,\n aliasTable,\n collectionPath,\n columnPrefix: `${columnPrefix}${field.name}_`,\n constraintPath: `${constraintPath}${field.name}.`,\n constraints,\n fields: field.flattenedFields,\n joins,\n locale,\n parentIsLocalized: parentIsLocalized || field.localized,\n pathSegments: pathSegments.slice(1),\n rootTableName,\n selectFields,\n selectLocale,\n tableName: newTableName,\n tableNameSuffix: `${tableNameSuffix}${toSnakeCase(field.name)}_`,\n value,\n })\n }\n return getTableColumnFromPath({\n adapter,\n aliasTable,\n collectionPath,\n columnPrefix,\n constraintPath,\n constraints,\n fields: field.flattenedFields,\n joins,\n locale,\n parentIsLocalized: parentIsLocalized || field.localized,\n pathSegments: pathSegments.slice(1),\n rootTableName,\n selectFields,\n selectLocale,\n tableName: newTableName,\n tableNameSuffix,\n value,\n })\n }\n\n default: {\n // fall through\n break\n }\n }\n\n let newTable = adapter.tables[newTableName]\n\n if (isFieldLocalized && adapter.payload.config.localization) {\n // If localized, we go to localized table and set aliasTable to undefined\n // so it is not picked up below to be used as targetTable\n const parentTable = aliasTable || adapter.tables[tableName]\n newTableName = `${tableName}${adapter.localesSuffix}`\n\n newTable = adapter.tables[newTableName]\n\n let condition = eq(parentTable.id, newTable._parentID)\n\n if (locale !== 'all') {\n condition = and(condition, eq(newTable._locale, locale))\n }\n\n if (selectLocale) {\n selectFields._locale = newTable._locale\n }\n\n addJoinTable({\n condition,\n joins,\n table: newTable,\n })\n\n aliasTable = undefined\n }\n\n const targetTable = aliasTable || newTable\n\n selectFields[`${newTableName}.${columnPrefix}${field.name}`] =\n targetTable[`${columnPrefix}${field.name}`]\n\n return {\n columnName: `${columnPrefix}${field.name}`,\n constraints,\n field,\n pathSegments,\n table: targetTable,\n }\n }\n\n throw new APIError(`Cannot find field for path at ${fieldPath}`)\n}\n"],"names":["and","eq","like","sql","APIError","fieldShouldBeLocalized","tabHasName","toSnakeCase","validate","uuidValidate","isPolymorphicRelationship","addJoinTable","getTableAlias","getTableColumnFromPath","adapter","aliasTable","collectionPath","columnPrefix","constraintPath","incomingConstraintPath","constraints","fields","joins","locale","incomingLocale","parentIsLocalized","pathSegments","incomingSegments","rootTableName","incomingRootTableName","selectFields","selectLocale","tableName","tableNameSuffix","value","fieldPath","field","find","fieldToFind","name","newTableName","id","tables","columnName","type","idType","table","isFieldLocalized","payload","config","localization","matchedLocale","localeCodes","splice","tableNameMap","get","arrayParentTable","conditions","_parentID","_locale","push","condition","flattenedFields","localized","slice","blockTableColumn","blockTypes","Array","isArray","forEach","blockType","block","blocks","blockReferences","slug","newAliasTable","getNotNullColumnByValue","hasBlockField","some","_block","result","blockConstraints","blockSelectFields","error","concat","rawColumn","localesSuffix","hasMany","tableType","joinConstraints","parent","path","newCollectionPath","join","relationTo","relationshipFields","relationTableName","relationshipsSuffix","aliasRelationshipTable","newAliasTableName","aliasRelationshipTableName","queryPath","relationshipConfig","collections","hasCustomCollectionWithCustomID","customIDType","columns","map","idTypeTextOrUuid","every","val","raw","filter","Boolean","matchedRelation","relation","undefined","length","aliasLocaleTable","condtions","localesTable","newTable","parentTable","targetTable"],"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,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,iBAAiB,EAAE,OAAO,CAAA;IAC1B;;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,6KAgB7D,kBAAkB,KAAG,CAqlBvB,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,iBAAiB,EAAE,OAAO,CAAA;IAC1B;;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,6KAgB7D,kBAAkB,KAAG,CAglBvB,CAAA"}
@@ -288,17 +288,9 @@ export const traverseFields = ({ adapter, blocks, config, dataRef, deletions, fi
288
288
  } else {
289
289
  const hasNextPage = limit !== 0 && fieldData.length > limit;
290
290
  fieldResult = {
291
- docs: (hasNextPage ? fieldData.slice(0, limit) : fieldData).map(({ id, relationTo })=>{
292
- if (relationTo) {
293
- return {
294
- relationTo,
295
- value: id
296
- };
297
- }
298
- return {
291
+ docs: (hasNextPage ? fieldData.slice(0, limit) : fieldData).map(({ id })=>({
299
292
  id
300
- };
301
- }),
293
+ })),
302
294
  hasNextPage
303
295
  };
304
296
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/transform/read/traverseFields.ts"],"sourcesContent":["import type { FlattenedBlock, FlattenedField, JoinQuery, SanitizedConfig } from 'payload'\n\nimport { fieldIsVirtual, fieldShouldBeLocalized } 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 parentIsLocalized: boolean\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 parentIsLocalized,\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 const isLocalized = fieldShouldBeLocalized({ field, parentIsLocalized })\n\n if (field.type === 'array') {\n if (Array.isArray(fieldData)) {\n if (isLocalized) {\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 parentIsLocalized: parentIsLocalized || field.localized,\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 parentIsLocalized: parentIsLocalized || field.localized,\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 (isLocalized) {\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 parentIsLocalized: parentIsLocalized || field.localized,\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 parentIsLocalized: parentIsLocalized || field.localized,\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 isLocalized &&\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 (isLocalized && 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 (isLocalized) {\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 (isLocalized && 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(\n ({ id, relationTo }) => {\n if (relationTo) {\n return { relationTo, value: id }\n }\n return { id }\n },\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 (isLocalized) {\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 (isLocalized) {\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 (isLocalized) {\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 (isLocalized && 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 = isLocalized && locale ? locale : field.name\n\n if (isLocalized && 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 parentIsLocalized: parentIsLocalized || field.localized,\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","fieldShouldBeLocalized","transformHasManyNumber","transformHasManyText","transformRelationship","traverseFields","adapter","blocks","config","dataRef","deletions","fieldPrefix","fields","joinQuery","numbers","parentIsLocalized","path","relationships","table","texts","withinArrayOrBlockLocale","sanitizedPath","formatted","reduce","result","field","fieldName","name","fieldData","localizedFieldData","valuesToTransform","push","isLocalized","type","Array","isArray","arrayResult","row","_locale","locale","data","_uuid","id","rowResult","flattenedFields","localized","_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","value","textPathMatch","textsByLocale","textRows","numberPathMatch","numbersByLocale","numberRows","selectResult","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, fieldShouldBeLocalized } 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 parentIsLocalized: boolean\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 parentIsLocalized,\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 const isLocalized = fieldShouldBeLocalized({ field, parentIsLocalized })\n\n if (field.type === 'array') {\n if (Array.isArray(fieldData)) {\n if (isLocalized) {\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 parentIsLocalized: parentIsLocalized || field.localized,\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 parentIsLocalized: parentIsLocalized || field.localized,\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 (isLocalized) {\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 parentIsLocalized: parentIsLocalized || field.localized,\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 parentIsLocalized: parentIsLocalized || field.localized,\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 isLocalized &&\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 (isLocalized && 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 (isLocalized) {\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 (isLocalized && 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 (isLocalized) {\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 (isLocalized) {\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 (isLocalized) {\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 (isLocalized && 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 = isLocalized && locale ? locale : field.name\n\n if (isLocalized && 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 parentIsLocalized: parentIsLocalized || field.localized,\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","fieldShouldBeLocalized","transformHasManyNumber","transformHasManyText","transformRelationship","traverseFields","adapter","blocks","config","dataRef","deletions","fieldPrefix","fields","joinQuery","numbers","parentIsLocalized","path","relationships","table","texts","withinArrayOrBlockLocale","sanitizedPath","formatted","reduce","result","field","fieldName","name","fieldData","localizedFieldData","valuesToTransform","push","isLocalized","type","Array","isArray","arrayResult","row","_locale","locale","data","_uuid","id","rowResult","flattenedFields","localized","_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":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payloadcms/drizzle",
3
- "version": "3.24.0-canary.a62d86f",
3
+ "version": "3.24.0-canary.d22403c",
4
4
  "description": "A library of shared functions used by different payload database adapters",
5
5
  "homepage": "https://payloadcms.com",
6
6
  "repository": {
@@ -53,10 +53,10 @@
53
53
  "@types/pg": "8.10.2",
54
54
  "@types/to-snake-case": "1.0.0",
55
55
  "@payloadcms/eslint-config": "3.9.0",
56
- "payload": "3.24.0-canary.a62d86f"
56
+ "payload": "3.24.0-canary.d22403c"
57
57
  },
58
58
  "peerDependencies": {
59
- "payload": "3.24.0-canary.a62d86f"
59
+ "payload": "3.24.0-canary.d22403c"
60
60
  },
61
61
  "scripts": {
62
62
  "build": "pnpm build:swc && pnpm build:types",