@payloadcms/plugin-import-export 4.0.0-internal.f05c47f → 4.0.0-internal.f15737c
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.
- package/dist/components/CollectionField/index.d.ts +3 -2
- package/dist/components/CollectionField/index.d.ts.map +1 -1
- package/dist/components/CollectionField/index.js.map +1 -1
- package/dist/components/ExportListMenuItem/index.d.ts.map +1 -1
- package/dist/components/ExportListMenuItem/index.js +14 -12
- package/dist/components/ExportListMenuItem/index.js.map +1 -1
- package/dist/components/ExportPreview/index.css +0 -3
- package/dist/components/ExportPreview/index.d.ts.map +1 -1
- package/dist/components/ExportPreview/index.js +11 -1
- package/dist/components/ExportPreview/index.js.map +1 -1
- package/dist/components/FieldsToExport/index.d.ts +3 -2
- package/dist/components/FieldsToExport/index.d.ts.map +1 -1
- package/dist/components/FieldsToExport/index.js +18 -15
- package/dist/components/FieldsToExport/index.js.map +1 -1
- package/dist/components/FieldsToExport/reduceFields.d.ts +6 -0
- package/dist/components/FieldsToExport/reduceFields.d.ts.map +1 -1
- package/dist/components/FieldsToExport/reduceFields.js +4 -0
- package/dist/components/FieldsToExport/reduceFields.js.map +1 -1
- package/dist/components/FormatField/index.d.ts +3 -2
- package/dist/components/FormatField/index.d.ts.map +1 -1
- package/dist/components/FormatField/index.js.map +1 -1
- package/dist/components/ImportListMenuItem/index.d.ts.map +1 -1
- package/dist/components/ImportListMenuItem/index.js +14 -12
- package/dist/components/ImportListMenuItem/index.js.map +1 -1
- package/dist/components/ImportPreview/index.css +0 -3
- package/dist/components/ImportPreview/index.d.ts.map +1 -1
- package/dist/components/ImportPreview/index.js +27 -8
- package/dist/components/ImportPreview/index.js.map +1 -1
- package/dist/components/LimitField/index.d.ts +3 -2
- package/dist/components/LimitField/index.d.ts.map +1 -1
- package/dist/components/LimitField/index.js.map +1 -1
- package/dist/components/LocaleField/index.d.ts +3 -2
- package/dist/components/LocaleField/index.d.ts.map +1 -1
- package/dist/components/LocaleField/index.js.map +1 -1
- package/dist/components/Page/index.d.ts +3 -2
- package/dist/components/Page/index.d.ts.map +1 -1
- package/dist/components/Page/index.js.map +1 -1
- package/dist/components/RelationshipCell/getRelationshipGroupKey.d.ts +7 -0
- package/dist/components/RelationshipCell/getRelationshipGroupKey.d.ts.map +1 -0
- package/dist/components/RelationshipCell/getRelationshipGroupKey.js +3 -0
- package/dist/components/RelationshipCell/getRelationshipGroupKey.js.map +1 -0
- package/dist/components/RelationshipCell/getRelationshipGroups.d.ts +43 -0
- package/dist/components/RelationshipCell/getRelationshipGroups.d.ts.map +1 -0
- package/dist/components/RelationshipCell/getRelationshipGroups.js +109 -0
- package/dist/components/RelationshipCell/getRelationshipGroups.js.map +1 -0
- package/dist/components/RelationshipCell/index.css +30 -0
- package/dist/components/RelationshipCell/index.d.ts +15 -0
- package/dist/components/RelationshipCell/index.d.ts.map +1 -0
- package/dist/components/RelationshipCell/index.js +57 -0
- package/dist/components/RelationshipCell/index.js.map +1 -0
- package/dist/components/SortBy/index.d.ts +3 -2
- package/dist/components/SortBy/index.d.ts.map +1 -1
- package/dist/components/SortBy/index.js.map +1 -1
- package/dist/components/SortOrder/index.d.ts +3 -2
- package/dist/components/SortOrder/index.d.ts.map +1 -1
- package/dist/components/SortOrder/index.js.map +1 -1
- package/dist/export/batchProcessor.d.ts +2 -1
- package/dist/export/batchProcessor.d.ts.map +1 -1
- package/dist/export/batchProcessor.js +6 -2
- package/dist/export/batchProcessor.js.map +1 -1
- package/dist/export/createExport.d.ts +2 -0
- package/dist/export/createExport.d.ts.map +1 -1
- package/dist/export/createExport.js +6 -1
- package/dist/export/createExport.js.map +1 -1
- package/dist/export/getCreateExportCollectionTask.d.ts.map +1 -1
- package/dist/export/getCreateExportCollectionTask.js +11 -0
- package/dist/export/getCreateExportCollectionTask.js.map +1 -1
- package/dist/export/getExportCollection.d.ts.map +1 -1
- package/dist/export/getExportCollection.js +5 -0
- package/dist/export/getExportCollection.js.map +1 -1
- package/dist/export/handleDownload.d.ts.map +1 -1
- package/dist/export/handleDownload.js +7 -3
- package/dist/export/handleDownload.js.map +1 -1
- package/dist/export/handlePreview.d.ts.map +1 -1
- package/dist/export/handlePreview.js +24 -5
- package/dist/export/handlePreview.js.map +1 -1
- package/dist/exports/types.d.ts +1 -1
- package/dist/exports/types.d.ts.map +1 -1
- package/dist/exports/types.js.map +1 -1
- package/dist/import/batchProcessor.d.ts +2 -1
- package/dist/import/batchProcessor.d.ts.map +1 -1
- package/dist/import/batchProcessor.js +15 -8
- package/dist/import/batchProcessor.js.map +1 -1
- package/dist/import/createImport.d.ts +3 -2
- package/dist/import/createImport.d.ts.map +1 -1
- package/dist/import/createImport.js +8 -1
- package/dist/import/createImport.js.map +1 -1
- package/dist/import/getCreateImportCollectionTask.d.ts.map +1 -1
- package/dist/import/getCreateImportCollectionTask.js +5 -2
- package/dist/import/getCreateImportCollectionTask.js.map +1 -1
- package/dist/import/getImportCollection.d.ts.map +1 -1
- package/dist/import/getImportCollection.js +2 -0
- package/dist/import/getImportCollection.js.map +1 -1
- package/dist/import/handlePreview.d.ts.map +1 -1
- package/dist/import/handlePreview.js +5 -1
- package/dist/import/handlePreview.js.map +1 -1
- package/dist/types.d.ts +17 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utilities/getExportFieldFunctions.js +64 -27
- package/dist/utilities/getExportFieldFunctions.js.map +1 -1
- package/dist/utilities/getFileFromDoc.js +3 -3
- package/dist/utilities/getFileFromDoc.js.map +1 -1
- package/dist/utilities/getSelect.d.ts.map +1 -1
- package/dist/utilities/getSelect.js +11 -3
- package/dist/utilities/getSelect.js.map +1 -1
- package/dist/utilities/getSubmittedFormValues.d.ts +12 -0
- package/dist/utilities/getSubmittedFormValues.d.ts.map +1 -0
- package/dist/utilities/getSubmittedFormValues.js +24 -0
- package/dist/utilities/getSubmittedFormValues.js.map +1 -0
- package/dist/utilities/setNestedValue.d.ts +2 -1
- package/dist/utilities/setNestedValue.d.ts.map +1 -1
- package/dist/utilities/setNestedValue.js +65 -34
- package/dist/utilities/setNestedValue.js.map +1 -1
- package/package.json +9 -9
- package/dist/components/FieldsToExport/reduceFields.spec.js +0 -239
- package/dist/components/FieldsToExport/reduceFields.spec.js.map +0 -1
- package/dist/utilities/applyFieldHooks.spec.js +0 -205
- package/dist/utilities/applyFieldHooks.spec.js.map +0 -1
- package/dist/utilities/buildDisabledFieldRegex.spec.js +0 -64
- package/dist/utilities/buildDisabledFieldRegex.spec.js.map +0 -1
- package/dist/utilities/fieldToRegex.spec.js +0 -151
- package/dist/utilities/fieldToRegex.spec.js.map +0 -1
- package/dist/utilities/filterToSelectedFields.spec.js +0 -204
- package/dist/utilities/filterToSelectedFields.spec.js.map +0 -1
- package/dist/utilities/flattenObject.spec.js +0 -158
- package/dist/utilities/flattenObject.spec.js.map +0 -1
- package/dist/utilities/getExportFieldFunctions.spec.js +0 -50
- package/dist/utilities/getExportFieldFunctions.spec.js.map +0 -1
- package/dist/utilities/getImportFieldFunctions.spec.js +0 -167
- package/dist/utilities/getImportFieldFunctions.spec.js.map +0 -1
- package/dist/utilities/getSchemaColumns.spec.js +0 -157
- package/dist/utilities/getSchemaColumns.spec.js.map +0 -1
- package/dist/utilities/parseCSV.spec.js +0 -195
- package/dist/utilities/parseCSV.spec.js.map +0 -1
- package/dist/utilities/processRichTextField.spec.js +0 -308
- package/dist/utilities/processRichTextField.spec.js.map +0 -1
- package/dist/utilities/siblingDoc.spec.js +0 -278
- package/dist/utilities/siblingDoc.spec.js.map +0 -1
- package/dist/utilities/unflattenObject.spec.js +0 -819
- package/dist/utilities/unflattenObject.spec.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utilities/unflattenObject.spec.ts"],"sourcesContent":["import { FlattenedField, PayloadRequest } from 'payload'\n\nimport { getImportFieldFunctions } from './getImportFieldFunctions.js'\nimport { unflattenObject } from './unflattenObject.js'\n\nimport { describe, it, expect, vi } from 'vitest'\n\ndescribe('unflattenObject', () => {\n const mockReq = {\n payload: {\n logger: {\n error: vi.fn(),\n },\n },\n } as unknown as PayloadRequest\n\n describe('hasMany number fields', () => {\n const fields: FlattenedField[] = [\n {\n name: 'hasManyNumber',\n type: 'number',\n hasMany: true,\n } as FlattenedField,\n ]\n\n it('should handle comma-separated number strings', () => {\n const data = {\n hasManyNumber: '1,2,3,5,8',\n }\n\n const result = unflattenObject({ data, fields, req: mockReq })\n\n expect(result).toEqual({\n hasManyNumber: [1, 2, 3, 5, 8],\n })\n })\n\n it('should handle comma-separated numbers with spaces', () => {\n const data = {\n hasManyNumber: ' 10 , 20 , 30 ',\n }\n\n const result = unflattenObject({ data, fields, req: mockReq })\n\n expect(result).toEqual({\n hasManyNumber: [10, 20, 30],\n })\n })\n\n it('should filter out empty values in comma-separated strings', () => {\n const data = {\n hasManyNumber: '1,,3,,5',\n }\n\n const result = unflattenObject({ data, fields, req: mockReq })\n\n expect(result).toEqual({\n hasManyNumber: [1, 3, 5],\n })\n })\n\n it('should handle single number values', () => {\n const data = {\n hasManyNumber: 42,\n }\n\n const result = unflattenObject({ data, fields, req: mockReq })\n\n expect(result).toEqual({\n hasManyNumber: [42],\n })\n })\n\n it('should handle single string number values', () => {\n const data = {\n hasManyNumber: '42',\n }\n\n const result = unflattenObject({ data, fields, req: mockReq })\n\n expect(result).toEqual({\n hasManyNumber: [42],\n })\n })\n\n it('should handle indexed array format', () => {\n const data = {\n hasManyNumber_0: 1,\n hasManyNumber_1: 2,\n hasManyNumber_2: 3,\n }\n\n const result = unflattenObject({ data, fields, req: mockReq })\n\n expect(result).toEqual({\n hasManyNumber: [1, 2, 3],\n })\n })\n\n it('should filter out null and empty values from indexed arrays', () => {\n const data = {\n hasManyNumber_0: 1,\n hasManyNumber_1: null,\n hasManyNumber_2: '',\n hasManyNumber_3: 3,\n }\n\n const result = unflattenObject({ data, fields, req: mockReq })\n\n expect(result).toEqual({\n hasManyNumber: [1, 3],\n })\n })\n\n it('should handle empty, null, and undefined values', () => {\n // explicit null gets converted to empty array in postProcess for hasMany\n expect(unflattenObject({ data: { hasManyNumber: null }, fields, req: mockReq })).toEqual({\n hasManyNumber: [],\n })\n // undefined is skipped entirely (preserves existing data)\n expect(unflattenObject({ data: { hasManyNumber: undefined }, fields, req: mockReq })).toEqual(\n {},\n )\n })\n })\n\n describe('hasMany relationship fields', () => {\n const fields: FlattenedField[] = [\n {\n name: 'hasManyRelationship',\n type: 'relationship',\n hasMany: true,\n relationTo: 'posts',\n } as FlattenedField,\n ]\n\n it('should handle comma-separated ID strings', () => {\n const data = {\n hasManyRelationship: 'id1,id2,id3',\n }\n\n const result = unflattenObject({ data, fields, req: mockReq })\n\n expect(result).toEqual({\n hasManyRelationship: ['id1', 'id2', 'id3'],\n })\n })\n\n it('should handle comma-separated IDs with spaces', () => {\n const data = {\n hasManyRelationship: ' id1 , id2 , id3 ',\n }\n\n const result = unflattenObject({ data, fields, req: mockReq })\n\n expect(result).toEqual({\n hasManyRelationship: ['id1', 'id2', 'id3'],\n })\n })\n\n it('should filter out empty values in comma-separated IDs', () => {\n const data = {\n hasManyRelationship: 'id1,,id3,,id5',\n }\n\n const result = unflattenObject({ data, fields, req: mockReq })\n\n expect(result).toEqual({\n hasManyRelationship: ['id1', 'id3', 'id5'],\n })\n })\n\n it('should handle single ID values', () => {\n const data = {\n hasManyRelationship: 'singleId',\n }\n\n const result = unflattenObject({ data, fields, req: mockReq })\n\n expect(result).toEqual({\n hasManyRelationship: ['singleId'],\n })\n })\n\n it('should handle indexed array format', () => {\n const data = {\n hasManyRelationship_0: 'id1',\n hasManyRelationship_1: 'id2',\n hasManyRelationship_2: 'id3',\n }\n\n const result = unflattenObject({ data, fields, req: mockReq })\n\n expect(result).toEqual({\n hasManyRelationship: ['id1', 'id2', 'id3'],\n })\n })\n\n it('should handle MongoDB ObjectIDs', () => {\n const data = {\n hasManyRelationship: '507f1f77bcf86cd799439011,507f191e810c19729de860ea',\n }\n\n const result = unflattenObject({ data, fields, req: mockReq })\n\n expect(result).toEqual({\n hasManyRelationship: ['507f1f77bcf86cd799439011', '507f191e810c19729de860ea'],\n })\n })\n })\n\n describe('localized fields', () => {\n const fields: FlattenedField[] = [\n {\n name: 'title',\n type: 'text',\n localized: true,\n } as FlattenedField,\n ]\n\n it('should transform locale-specific keys to nested structure', () => {\n const data = {\n title_en: 'English Title',\n title_es: 'Título en Español',\n }\n\n const result = unflattenObject({ data, fields, req: mockReq })\n\n expect(result).toEqual({\n title: {\n en: 'English Title',\n es: 'Título en Español',\n },\n })\n })\n\n it('should handle missing locales', () => {\n const data = {\n title_en: 'English Title',\n }\n\n const result = unflattenObject({ data, fields, req: mockReq })\n\n expect(result).toEqual({\n title: {\n en: 'English Title',\n },\n })\n })\n })\n\n describe('blocks fields', () => {\n const fields: FlattenedField[] = [\n {\n name: 'blocks',\n type: 'blocks',\n } as FlattenedField,\n ]\n\n it('should handle block fields with blockType', () => {\n const data = {\n blocks_0_hero_title: 'Hero Title',\n blocks_0_hero_subtitle: 'Hero Subtitle',\n blocks_0_hero_blockType: 'hero',\n }\n\n const result = unflattenObject({ data, fields, req: mockReq })\n\n expect(result).toEqual({\n blocks: [\n {\n blockType: 'hero',\n title: 'Hero Title',\n subtitle: 'Hero Subtitle',\n },\n ],\n })\n })\n\n it('should handle multiple blocks', () => {\n const data = {\n blocks_0_hero_title: 'Hero Title',\n blocks_0_hero_blockType: 'hero',\n blocks_1_text_content: 'Text Content',\n blocks_1_text_blockType: 'text',\n }\n\n const result = unflattenObject({ data, fields, req: mockReq })\n\n expect(result).toEqual({\n blocks: [\n {\n blockType: 'hero',\n title: 'Hero Title',\n },\n {\n blockType: 'text',\n content: 'Text Content',\n },\n ],\n })\n })\n })\n\n describe('array fields', () => {\n const fields: FlattenedField[] = [\n {\n name: 'items',\n type: 'array',\n } as FlattenedField,\n ]\n\n it('should handle indexed array objects', () => {\n const data = {\n items_0_name: 'Item 1',\n items_0_value: 10,\n items_1_name: 'Item 2',\n items_1_value: 20,\n }\n\n const result = unflattenObject({ data, fields, req: mockReq })\n\n expect(result).toEqual({\n items: [\n { name: 'Item 1', value: 10 },\n { name: 'Item 2', value: 20 },\n ],\n })\n })\n\n it('should handle sparse arrays', () => {\n const data = {\n items_0_name: 'Item 1',\n items_2_name: 'Item 3',\n }\n\n const result = unflattenObject({ data, fields, req: mockReq })\n\n expect(result).toEqual({\n items: [{ name: 'Item 1' }, null, { name: 'Item 3' }],\n })\n })\n })\n\n describe('group fields', () => {\n const fields: FlattenedField[] = [\n {\n name: 'group',\n type: 'group',\n } as FlattenedField,\n ]\n\n it('should handle nested group fields', () => {\n const data = {\n group_field1: 'Value 1',\n group_field2: 'Value 2',\n }\n\n const result = unflattenObject({ data, fields, req: mockReq })\n\n expect(result).toEqual({\n group: {\n field1: 'Value 1',\n field2: 'Value 2',\n },\n })\n })\n })\n\n describe('polymorphic relationships', () => {\n const fields: FlattenedField[] = [\n {\n name: 'polymorphic',\n type: 'relationship',\n relationTo: ['posts', 'pages'],\n } as FlattenedField,\n ]\n\n it('should handle polymorphic relationship with id and relationTo', () => {\n const data = {\n polymorphic_id: '123',\n polymorphic_relationTo: 'posts',\n }\n\n const result = unflattenObject({ data, fields, req: mockReq })\n\n expect(result).toEqual({\n polymorphic: {\n relationTo: 'posts',\n value: '123',\n },\n })\n })\n\n it('should handle explicitly null polymorphic relationships', () => {\n const data = {\n polymorphic_id: null,\n polymorphic_relationTo: null,\n }\n\n const result = unflattenObject({ data, fields, req: mockReq })\n\n expect(result).toEqual({\n polymorphic: null,\n })\n })\n\n it('should skip polymorphic relationships with undefined values', () => {\n const data = {\n polymorphic_id: undefined,\n polymorphic_relationTo: undefined,\n }\n\n const result = unflattenObject({ data, fields, req: mockReq })\n\n // Both undefined means field is not set (preserves existing data)\n expect(result).toEqual({})\n })\n\n it('should skip polymorphic relationship with undefined id', () => {\n const data = {\n polymorphic_id: undefined,\n polymorphic_relationTo: 'posts',\n }\n\n const result = unflattenObject({ data, fields, req: mockReq })\n\n // Undefined ID means don't update this field\n expect(result).toEqual({})\n })\n\n it('should skip polymorphic relationship with undefined relationTo', () => {\n const data = {\n polymorphic_id: '123',\n polymorphic_relationTo: undefined,\n }\n\n const result = unflattenObject({ data, fields, req: mockReq })\n\n // Undefined relationTo means don't update this field\n expect(result).toEqual({})\n })\n\n it('should handle polymorphic hasMany relationships', () => {\n const fields: FlattenedField[] = [\n {\n name: 'polymorphicMany',\n type: 'relationship',\n hasMany: true,\n relationTo: ['posts', 'pages'],\n } as FlattenedField,\n ]\n\n const data = {\n polymorphicMany_0_id: '123',\n polymorphicMany_0_relationTo: 'posts',\n polymorphicMany_1_id: '456',\n polymorphicMany_1_relationTo: 'pages',\n }\n\n const result = unflattenObject({ data, fields, req: mockReq })\n\n expect(result).toEqual({\n polymorphicMany: [\n {\n relationTo: 'posts',\n value: '123',\n },\n {\n relationTo: 'pages',\n value: '456',\n },\n ],\n })\n })\n\n it('should filter out empty polymorphic hasMany items', () => {\n const fields: FlattenedField[] = [\n {\n name: 'polymorphicMany',\n type: 'relationship',\n hasMany: true,\n relationTo: ['posts', 'pages'],\n } as FlattenedField,\n ]\n\n const data = {\n polymorphicMany_0_id: '123',\n polymorphicMany_0_relationTo: 'posts',\n polymorphicMany_1_id: null,\n polymorphicMany_1_relationTo: null,\n polymorphicMany_2_id: '456',\n polymorphicMany_2_relationTo: 'pages',\n }\n\n const result = unflattenObject({ data, fields, req: mockReq })\n\n expect(result).toEqual({\n polymorphicMany: [\n {\n relationTo: 'posts',\n value: '123',\n },\n {\n relationTo: 'pages',\n value: '456',\n },\n ],\n })\n })\n\n it('should handle all empty polymorphic hasMany items', () => {\n const fields: FlattenedField[] = [\n {\n name: 'polymorphicMany',\n type: 'relationship',\n hasMany: true,\n relationTo: ['posts', 'pages'],\n } as FlattenedField,\n ]\n\n const data = {\n polymorphicMany_0_id: null,\n polymorphicMany_0_relationTo: null,\n polymorphicMany_1_id: '',\n polymorphicMany_1_relationTo: '',\n }\n\n const result = unflattenObject({ data, fields, req: mockReq })\n\n expect(result).toEqual({\n polymorphicMany: [],\n })\n })\n })\n\n describe('field-hook key resolution', () => {\n it('should fire an import hook on a digit-only field name nested inside an array', () => {\n const fields: FlattenedField[] = [\n {\n name: 'archives',\n type: 'array',\n flattenedFields: [{ name: '2024', type: 'text' }],\n } as unknown as FlattenedField,\n ]\n\n const importFieldHooks = {\n archives_2024: {\n type: 'beforeImport' as const,\n fn: ({ value }: { value: unknown }) => `transformed-${value as string}`,\n },\n }\n\n const data = { archives_0_2024: 'raw' }\n\n const result = unflattenObject({\n data,\n fields,\n importFieldHooks,\n req: mockReq,\n })\n\n const archives = result.archives as Array<Record<string, unknown>>\n expect(archives[0]!['2024']).toBe('transformed-raw')\n })\n })\n\n describe('blocks with nested arrays', () => {\n const faqFields: FlattenedField[] = [\n {\n name: 'faqContent',\n type: 'blocks',\n blocks: [\n {\n slug: 'faqSection',\n flattenedFields: [\n {\n name: 'faqs',\n type: 'array',\n flattenedFields: [\n { name: 'id', type: 'text' },\n { name: 'question', type: 'text' },\n { name: 'answer', type: 'richText' },\n ],\n },\n ],\n },\n ],\n },\n ] as unknown as FlattenedField[]\n\n it('should unflatten a nested array inside a block as an array, not an object with numeric keys', () => {\n const data = {\n faqContent_0_faqSection_id: '6a1714b81e5f4cdbb51f18b1',\n faqContent_0_faqSection_faqs_0_id: '6a1714c01e5f4cdbb51f18b2',\n faqContent_0_faqSection_faqs_0_question: 'ipsum',\n faqContent_0_faqSection_blockType: 'faqSection',\n }\n\n const result = unflattenObject({ data, fields: faqFields, req: mockReq })\n\n const faqContent = result.faqContent as Array<Record<string, unknown>>\n expect(Array.isArray(faqContent)).toBe(true)\n expect(faqContent).toHaveLength(1)\n expect(faqContent[0]!.blockType).toBe('faqSection')\n\n const faqs = faqContent[0]!.faqs\n expect(Array.isArray(faqs)).toBe(true)\n\n const faqItems = faqs as Array<Record<string, unknown>>\n expect(faqItems[0]!.question).toBe('ipsum')\n expect(faqItems[0]!.id).toBe('6a1714c01e5f4cdbb51f18b2')\n })\n\n it('should parse a richText JSON string inside a nested array within a block', () => {\n const richTextValue = {\n root: {\n children: [\n {\n children: [\n { detail: 0, format: 0, mode: 'normal', text: 'porksum', type: 'text', version: 1 },\n ],\n direction: null,\n format: '',\n indent: 0,\n type: 'paragraph',\n version: 1,\n },\n ],\n direction: null,\n format: '',\n indent: 0,\n type: 'root',\n version: 1,\n },\n }\n\n const data = {\n faqContent_0_faqSection_id: '6a1714b81e5f4cdbb51f18b1',\n faqContent_0_faqSection_faqs_0_id: '6a1714c01e5f4cdbb51f18b2',\n faqContent_0_faqSection_faqs_0_question: 'ipsum',\n faqContent_0_faqSection_faqs_0_answer: JSON.stringify(richTextValue),\n faqContent_0_faqSection_blockType: 'faqSection',\n }\n\n const importFieldHooks = getImportFieldFunctions({ fields: faqFields })\n const result = unflattenObject({ data, fields: faqFields, importFieldHooks, req: mockReq })\n\n const faqContent = result.faqContent as Array<Record<string, unknown>>\n const faqs = faqContent[0]!.faqs as Array<Record<string, unknown>>\n\n expect(typeof faqs[0]!.answer).not.toBe('string')\n expect(faqs[0]!.answer).toEqual(richTextValue)\n })\n })\n\n describe('edge cases', () => {\n it('should handle empty data', () => {\n const result = unflattenObject({ data: {}, fields: [], req: mockReq })\n expect(result).toEqual({})\n })\n\n it('should handle null data', () => {\n const result = unflattenObject({ data: null as any, fields: [], req: mockReq })\n expect(result).toEqual({})\n })\n\n it('should handle undefined values', () => {\n const data = {\n field1: undefined,\n field2: 'value',\n }\n\n const result = unflattenObject({ data, fields: [], req: mockReq })\n expect(result).toEqual({ field2: 'value' })\n })\n\n it('should preserve null values for validation', () => {\n const data = {\n field1: null,\n field2: 'value',\n }\n\n const result = unflattenObject({ data, fields: [], req: mockReq })\n // null values are preserved for validation\n expect(result).toEqual({ field1: null, field2: 'value' })\n })\n })\n})\n"],"names":["getImportFieldFunctions","unflattenObject","describe","it","expect","vi","mockReq","payload","logger","error","fn","fields","name","type","hasMany","data","hasManyNumber","result","req","toEqual","hasManyNumber_0","hasManyNumber_1","hasManyNumber_2","hasManyNumber_3","undefined","relationTo","hasManyRelationship","hasManyRelationship_0","hasManyRelationship_1","hasManyRelationship_2","localized","title_en","title_es","title","en","es","blocks_0_hero_title","blocks_0_hero_subtitle","blocks_0_hero_blockType","blocks","blockType","subtitle","blocks_1_text_content","blocks_1_text_blockType","content","items_0_name","items_0_value","items_1_name","items_1_value","items","value","items_2_name","group_field1","group_field2","group","field1","field2","polymorphic_id","polymorphic_relationTo","polymorphic","polymorphicMany_0_id","polymorphicMany_0_relationTo","polymorphicMany_1_id","polymorphicMany_1_relationTo","polymorphicMany","polymorphicMany_2_id","polymorphicMany_2_relationTo","flattenedFields","importFieldHooks","archives_2024","archives_0_2024","archives","toBe","faqFields","slug","faqContent_0_faqSection_id","faqContent_0_faqSection_faqs_0_id","faqContent_0_faqSection_faqs_0_question","faqContent_0_faqSection_blockType","faqContent","Array","isArray","toHaveLength","faqs","faqItems","question","id","richTextValue","root","children","detail","format","mode","text","version","direction","indent","faqContent_0_faqSection_faqs_0_answer","JSON","stringify","answer","not"],"mappings":"AAEA,SAASA,uBAAuB,QAAQ,+BAA8B;AACtE,SAASC,eAAe,QAAQ,uBAAsB;AAEtD,SAASC,QAAQ,EAAEC,EAAE,EAAEC,MAAM,EAAEC,EAAE,QAAQ,SAAQ;AAEjDH,SAAS,mBAAmB;IAC1B,MAAMI,UAAU;QACdC,SAAS;YACPC,QAAQ;gBACNC,OAAOJ,GAAGK,EAAE;YACd;QACF;IACF;IAEAR,SAAS,yBAAyB;QAChC,MAAMS,SAA2B;YAC/B;gBACEC,MAAM;gBACNC,MAAM;gBACNC,SAAS;YACX;SACD;QAEDX,GAAG,gDAAgD;YACjD,MAAMY,OAAO;gBACXC,eAAe;YACjB;YAEA,MAAMC,SAAShB,gBAAgB;gBAAEc;gBAAMJ;gBAAQO,KAAKZ;YAAQ;YAE5DF,OAAOa,QAAQE,OAAO,CAAC;gBACrBH,eAAe;oBAAC;oBAAG;oBAAG;oBAAG;oBAAG;iBAAE;YAChC;QACF;QAEAb,GAAG,qDAAqD;YACtD,MAAMY,OAAO;gBACXC,eAAe;YACjB;YAEA,MAAMC,SAAShB,gBAAgB;gBAAEc;gBAAMJ;gBAAQO,KAAKZ;YAAQ;YAE5DF,OAAOa,QAAQE,OAAO,CAAC;gBACrBH,eAAe;oBAAC;oBAAI;oBAAI;iBAAG;YAC7B;QACF;QAEAb,GAAG,6DAA6D;YAC9D,MAAMY,OAAO;gBACXC,eAAe;YACjB;YAEA,MAAMC,SAAShB,gBAAgB;gBAAEc;gBAAMJ;gBAAQO,KAAKZ;YAAQ;YAE5DF,OAAOa,QAAQE,OAAO,CAAC;gBACrBH,eAAe;oBAAC;oBAAG;oBAAG;iBAAE;YAC1B;QACF;QAEAb,GAAG,sCAAsC;YACvC,MAAMY,OAAO;gBACXC,eAAe;YACjB;YAEA,MAAMC,SAAShB,gBAAgB;gBAAEc;gBAAMJ;gBAAQO,KAAKZ;YAAQ;YAE5DF,OAAOa,QAAQE,OAAO,CAAC;gBACrBH,eAAe;oBAAC;iBAAG;YACrB;QACF;QAEAb,GAAG,6CAA6C;YAC9C,MAAMY,OAAO;gBACXC,eAAe;YACjB;YAEA,MAAMC,SAAShB,gBAAgB;gBAAEc;gBAAMJ;gBAAQO,KAAKZ;YAAQ;YAE5DF,OAAOa,QAAQE,OAAO,CAAC;gBACrBH,eAAe;oBAAC;iBAAG;YACrB;QACF;QAEAb,GAAG,sCAAsC;YACvC,MAAMY,OAAO;gBACXK,iBAAiB;gBACjBC,iBAAiB;gBACjBC,iBAAiB;YACnB;YAEA,MAAML,SAAShB,gBAAgB;gBAAEc;gBAAMJ;gBAAQO,KAAKZ;YAAQ;YAE5DF,OAAOa,QAAQE,OAAO,CAAC;gBACrBH,eAAe;oBAAC;oBAAG;oBAAG;iBAAE;YAC1B;QACF;QAEAb,GAAG,+DAA+D;YAChE,MAAMY,OAAO;gBACXK,iBAAiB;gBACjBC,iBAAiB;gBACjBC,iBAAiB;gBACjBC,iBAAiB;YACnB;YAEA,MAAMN,SAAShB,gBAAgB;gBAAEc;gBAAMJ;gBAAQO,KAAKZ;YAAQ;YAE5DF,OAAOa,QAAQE,OAAO,CAAC;gBACrBH,eAAe;oBAAC;oBAAG;iBAAE;YACvB;QACF;QAEAb,GAAG,mDAAmD;YACpD,yEAAyE;YACzEC,OAAOH,gBAAgB;gBAAEc,MAAM;oBAAEC,eAAe;gBAAK;gBAAGL;gBAAQO,KAAKZ;YAAQ,IAAIa,OAAO,CAAC;gBACvFH,eAAe,EAAE;YACnB;YACA,0DAA0D;YAC1DZ,OAAOH,gBAAgB;gBAAEc,MAAM;oBAAEC,eAAeQ;gBAAU;gBAAGb;gBAAQO,KAAKZ;YAAQ,IAAIa,OAAO,CAC3F,CAAC;QAEL;IACF;IAEAjB,SAAS,+BAA+B;QACtC,MAAMS,SAA2B;YAC/B;gBACEC,MAAM;gBACNC,MAAM;gBACNC,SAAS;gBACTW,YAAY;YACd;SACD;QAEDtB,GAAG,4CAA4C;YAC7C,MAAMY,OAAO;gBACXW,qBAAqB;YACvB;YAEA,MAAMT,SAAShB,gBAAgB;gBAAEc;gBAAMJ;gBAAQO,KAAKZ;YAAQ;YAE5DF,OAAOa,QAAQE,OAAO,CAAC;gBACrBO,qBAAqB;oBAAC;oBAAO;oBAAO;iBAAM;YAC5C;QACF;QAEAvB,GAAG,iDAAiD;YAClD,MAAMY,OAAO;gBACXW,qBAAqB;YACvB;YAEA,MAAMT,SAAShB,gBAAgB;gBAAEc;gBAAMJ;gBAAQO,KAAKZ;YAAQ;YAE5DF,OAAOa,QAAQE,OAAO,CAAC;gBACrBO,qBAAqB;oBAAC;oBAAO;oBAAO;iBAAM;YAC5C;QACF;QAEAvB,GAAG,yDAAyD;YAC1D,MAAMY,OAAO;gBACXW,qBAAqB;YACvB;YAEA,MAAMT,SAAShB,gBAAgB;gBAAEc;gBAAMJ;gBAAQO,KAAKZ;YAAQ;YAE5DF,OAAOa,QAAQE,OAAO,CAAC;gBACrBO,qBAAqB;oBAAC;oBAAO;oBAAO;iBAAM;YAC5C;QACF;QAEAvB,GAAG,kCAAkC;YACnC,MAAMY,OAAO;gBACXW,qBAAqB;YACvB;YAEA,MAAMT,SAAShB,gBAAgB;gBAAEc;gBAAMJ;gBAAQO,KAAKZ;YAAQ;YAE5DF,OAAOa,QAAQE,OAAO,CAAC;gBACrBO,qBAAqB;oBAAC;iBAAW;YACnC;QACF;QAEAvB,GAAG,sCAAsC;YACvC,MAAMY,OAAO;gBACXY,uBAAuB;gBACvBC,uBAAuB;gBACvBC,uBAAuB;YACzB;YAEA,MAAMZ,SAAShB,gBAAgB;gBAAEc;gBAAMJ;gBAAQO,KAAKZ;YAAQ;YAE5DF,OAAOa,QAAQE,OAAO,CAAC;gBACrBO,qBAAqB;oBAAC;oBAAO;oBAAO;iBAAM;YAC5C;QACF;QAEAvB,GAAG,mCAAmC;YACpC,MAAMY,OAAO;gBACXW,qBAAqB;YACvB;YAEA,MAAMT,SAAShB,gBAAgB;gBAAEc;gBAAMJ;gBAAQO,KAAKZ;YAAQ;YAE5DF,OAAOa,QAAQE,OAAO,CAAC;gBACrBO,qBAAqB;oBAAC;oBAA4B;iBAA2B;YAC/E;QACF;IACF;IAEAxB,SAAS,oBAAoB;QAC3B,MAAMS,SAA2B;YAC/B;gBACEC,MAAM;gBACNC,MAAM;gBACNiB,WAAW;YACb;SACD;QAED3B,GAAG,6DAA6D;YAC9D,MAAMY,OAAO;gBACXgB,UAAU;gBACVC,UAAU;YACZ;YAEA,MAAMf,SAAShB,gBAAgB;gBAAEc;gBAAMJ;gBAAQO,KAAKZ;YAAQ;YAE5DF,OAAOa,QAAQE,OAAO,CAAC;gBACrBc,OAAO;oBACLC,IAAI;oBACJC,IAAI;gBACN;YACF;QACF;QAEAhC,GAAG,iCAAiC;YAClC,MAAMY,OAAO;gBACXgB,UAAU;YACZ;YAEA,MAAMd,SAAShB,gBAAgB;gBAAEc;gBAAMJ;gBAAQO,KAAKZ;YAAQ;YAE5DF,OAAOa,QAAQE,OAAO,CAAC;gBACrBc,OAAO;oBACLC,IAAI;gBACN;YACF;QACF;IACF;IAEAhC,SAAS,iBAAiB;QACxB,MAAMS,SAA2B;YAC/B;gBACEC,MAAM;gBACNC,MAAM;YACR;SACD;QAEDV,GAAG,6CAA6C;YAC9C,MAAMY,OAAO;gBACXqB,qBAAqB;gBACrBC,wBAAwB;gBACxBC,yBAAyB;YAC3B;YAEA,MAAMrB,SAAShB,gBAAgB;gBAAEc;gBAAMJ;gBAAQO,KAAKZ;YAAQ;YAE5DF,OAAOa,QAAQE,OAAO,CAAC;gBACrBoB,QAAQ;oBACN;wBACEC,WAAW;wBACXP,OAAO;wBACPQ,UAAU;oBACZ;iBACD;YACH;QACF;QAEAtC,GAAG,iCAAiC;YAClC,MAAMY,OAAO;gBACXqB,qBAAqB;gBACrBE,yBAAyB;gBACzBI,uBAAuB;gBACvBC,yBAAyB;YAC3B;YAEA,MAAM1B,SAAShB,gBAAgB;gBAAEc;gBAAMJ;gBAAQO,KAAKZ;YAAQ;YAE5DF,OAAOa,QAAQE,OAAO,CAAC;gBACrBoB,QAAQ;oBACN;wBACEC,WAAW;wBACXP,OAAO;oBACT;oBACA;wBACEO,WAAW;wBACXI,SAAS;oBACX;iBACD;YACH;QACF;IACF;IAEA1C,SAAS,gBAAgB;QACvB,MAAMS,SAA2B;YAC/B;gBACEC,MAAM;gBACNC,MAAM;YACR;SACD;QAEDV,GAAG,uCAAuC;YACxC,MAAMY,OAAO;gBACX8B,cAAc;gBACdC,eAAe;gBACfC,cAAc;gBACdC,eAAe;YACjB;YAEA,MAAM/B,SAAShB,gBAAgB;gBAAEc;gBAAMJ;gBAAQO,KAAKZ;YAAQ;YAE5DF,OAAOa,QAAQE,OAAO,CAAC;gBACrB8B,OAAO;oBACL;wBAAErC,MAAM;wBAAUsC,OAAO;oBAAG;oBAC5B;wBAAEtC,MAAM;wBAAUsC,OAAO;oBAAG;iBAC7B;YACH;QACF;QAEA/C,GAAG,+BAA+B;YAChC,MAAMY,OAAO;gBACX8B,cAAc;gBACdM,cAAc;YAChB;YAEA,MAAMlC,SAAShB,gBAAgB;gBAAEc;gBAAMJ;gBAAQO,KAAKZ;YAAQ;YAE5DF,OAAOa,QAAQE,OAAO,CAAC;gBACrB8B,OAAO;oBAAC;wBAAErC,MAAM;oBAAS;oBAAG;oBAAM;wBAAEA,MAAM;oBAAS;iBAAE;YACvD;QACF;IACF;IAEAV,SAAS,gBAAgB;QACvB,MAAMS,SAA2B;YAC/B;gBACEC,MAAM;gBACNC,MAAM;YACR;SACD;QAEDV,GAAG,qCAAqC;YACtC,MAAMY,OAAO;gBACXqC,cAAc;gBACdC,cAAc;YAChB;YAEA,MAAMpC,SAAShB,gBAAgB;gBAAEc;gBAAMJ;gBAAQO,KAAKZ;YAAQ;YAE5DF,OAAOa,QAAQE,OAAO,CAAC;gBACrBmC,OAAO;oBACLC,QAAQ;oBACRC,QAAQ;gBACV;YACF;QACF;IACF;IAEAtD,SAAS,6BAA6B;QACpC,MAAMS,SAA2B;YAC/B;gBACEC,MAAM;gBACNC,MAAM;gBACNY,YAAY;oBAAC;oBAAS;iBAAQ;YAChC;SACD;QAEDtB,GAAG,iEAAiE;YAClE,MAAMY,OAAO;gBACX0C,gBAAgB;gBAChBC,wBAAwB;YAC1B;YAEA,MAAMzC,SAAShB,gBAAgB;gBAAEc;gBAAMJ;gBAAQO,KAAKZ;YAAQ;YAE5DF,OAAOa,QAAQE,OAAO,CAAC;gBACrBwC,aAAa;oBACXlC,YAAY;oBACZyB,OAAO;gBACT;YACF;QACF;QAEA/C,GAAG,2DAA2D;YAC5D,MAAMY,OAAO;gBACX0C,gBAAgB;gBAChBC,wBAAwB;YAC1B;YAEA,MAAMzC,SAAShB,gBAAgB;gBAAEc;gBAAMJ;gBAAQO,KAAKZ;YAAQ;YAE5DF,OAAOa,QAAQE,OAAO,CAAC;gBACrBwC,aAAa;YACf;QACF;QAEAxD,GAAG,+DAA+D;YAChE,MAAMY,OAAO;gBACX0C,gBAAgBjC;gBAChBkC,wBAAwBlC;YAC1B;YAEA,MAAMP,SAAShB,gBAAgB;gBAAEc;gBAAMJ;gBAAQO,KAAKZ;YAAQ;YAE5D,kEAAkE;YAClEF,OAAOa,QAAQE,OAAO,CAAC,CAAC;QAC1B;QAEAhB,GAAG,0DAA0D;YAC3D,MAAMY,OAAO;gBACX0C,gBAAgBjC;gBAChBkC,wBAAwB;YAC1B;YAEA,MAAMzC,SAAShB,gBAAgB;gBAAEc;gBAAMJ;gBAAQO,KAAKZ;YAAQ;YAE5D,6CAA6C;YAC7CF,OAAOa,QAAQE,OAAO,CAAC,CAAC;QAC1B;QAEAhB,GAAG,kEAAkE;YACnE,MAAMY,OAAO;gBACX0C,gBAAgB;gBAChBC,wBAAwBlC;YAC1B;YAEA,MAAMP,SAAShB,gBAAgB;gBAAEc;gBAAMJ;gBAAQO,KAAKZ;YAAQ;YAE5D,qDAAqD;YACrDF,OAAOa,QAAQE,OAAO,CAAC,CAAC;QAC1B;QAEAhB,GAAG,mDAAmD;YACpD,MAAMQ,SAA2B;gBAC/B;oBACEC,MAAM;oBACNC,MAAM;oBACNC,SAAS;oBACTW,YAAY;wBAAC;wBAAS;qBAAQ;gBAChC;aACD;YAED,MAAMV,OAAO;gBACX6C,sBAAsB;gBACtBC,8BAA8B;gBAC9BC,sBAAsB;gBACtBC,8BAA8B;YAChC;YAEA,MAAM9C,SAAShB,gBAAgB;gBAAEc;gBAAMJ;gBAAQO,KAAKZ;YAAQ;YAE5DF,OAAOa,QAAQE,OAAO,CAAC;gBACrB6C,iBAAiB;oBACf;wBACEvC,YAAY;wBACZyB,OAAO;oBACT;oBACA;wBACEzB,YAAY;wBACZyB,OAAO;oBACT;iBACD;YACH;QACF;QAEA/C,GAAG,qDAAqD;YACtD,MAAMQ,SAA2B;gBAC/B;oBACEC,MAAM;oBACNC,MAAM;oBACNC,SAAS;oBACTW,YAAY;wBAAC;wBAAS;qBAAQ;gBAChC;aACD;YAED,MAAMV,OAAO;gBACX6C,sBAAsB;gBACtBC,8BAA8B;gBAC9BC,sBAAsB;gBACtBC,8BAA8B;gBAC9BE,sBAAsB;gBACtBC,8BAA8B;YAChC;YAEA,MAAMjD,SAAShB,gBAAgB;gBAAEc;gBAAMJ;gBAAQO,KAAKZ;YAAQ;YAE5DF,OAAOa,QAAQE,OAAO,CAAC;gBACrB6C,iBAAiB;oBACf;wBACEvC,YAAY;wBACZyB,OAAO;oBACT;oBACA;wBACEzB,YAAY;wBACZyB,OAAO;oBACT;iBACD;YACH;QACF;QAEA/C,GAAG,qDAAqD;YACtD,MAAMQ,SAA2B;gBAC/B;oBACEC,MAAM;oBACNC,MAAM;oBACNC,SAAS;oBACTW,YAAY;wBAAC;wBAAS;qBAAQ;gBAChC;aACD;YAED,MAAMV,OAAO;gBACX6C,sBAAsB;gBACtBC,8BAA8B;gBAC9BC,sBAAsB;gBACtBC,8BAA8B;YAChC;YAEA,MAAM9C,SAAShB,gBAAgB;gBAAEc;gBAAMJ;gBAAQO,KAAKZ;YAAQ;YAE5DF,OAAOa,QAAQE,OAAO,CAAC;gBACrB6C,iBAAiB,EAAE;YACrB;QACF;IACF;IAEA9D,SAAS,6BAA6B;QACpCC,GAAG,gFAAgF;YACjF,MAAMQ,SAA2B;gBAC/B;oBACEC,MAAM;oBACNC,MAAM;oBACNsD,iBAAiB;wBAAC;4BAAEvD,MAAM;4BAAQC,MAAM;wBAAO;qBAAE;gBACnD;aACD;YAED,MAAMuD,mBAAmB;gBACvBC,eAAe;oBACbxD,MAAM;oBACNH,IAAI,CAAC,EAAEwC,KAAK,EAAsB,GAAK,CAAC,YAAY,EAAEA,OAAiB;gBACzE;YACF;YAEA,MAAMnC,OAAO;gBAAEuD,iBAAiB;YAAM;YAEtC,MAAMrD,SAAShB,gBAAgB;gBAC7Bc;gBACAJ;gBACAyD;gBACAlD,KAAKZ;YACP;YAEA,MAAMiE,WAAWtD,OAAOsD,QAAQ;YAChCnE,OAAOmE,QAAQ,CAAC,EAAE,AAAC,CAAC,OAAO,EAAEC,IAAI,CAAC;QACpC;IACF;IAEAtE,SAAS,6BAA6B;QACpC,MAAMuE,YAA8B;YAClC;gBACE7D,MAAM;gBACNC,MAAM;gBACN0B,QAAQ;oBACN;wBACEmC,MAAM;wBACNP,iBAAiB;4BACf;gCACEvD,MAAM;gCACNC,MAAM;gCACNsD,iBAAiB;oCACf;wCAAEvD,MAAM;wCAAMC,MAAM;oCAAO;oCAC3B;wCAAED,MAAM;wCAAYC,MAAM;oCAAO;oCACjC;wCAAED,MAAM;wCAAUC,MAAM;oCAAW;iCACpC;4BACH;yBACD;oBACH;iBACD;YACH;SACD;QAEDV,GAAG,+FAA+F;YAChG,MAAMY,OAAO;gBACX4D,4BAA4B;gBAC5BC,mCAAmC;gBACnCC,yCAAyC;gBACzCC,mCAAmC;YACrC;YAEA,MAAM7D,SAAShB,gBAAgB;gBAAEc;gBAAMJ,QAAQ8D;gBAAWvD,KAAKZ;YAAQ;YAEvE,MAAMyE,aAAa9D,OAAO8D,UAAU;YACpC3E,OAAO4E,MAAMC,OAAO,CAACF,aAAaP,IAAI,CAAC;YACvCpE,OAAO2E,YAAYG,YAAY,CAAC;YAChC9E,OAAO2E,UAAU,CAAC,EAAE,CAAEvC,SAAS,EAAEgC,IAAI,CAAC;YAEtC,MAAMW,OAAOJ,UAAU,CAAC,EAAE,CAAEI,IAAI;YAChC/E,OAAO4E,MAAMC,OAAO,CAACE,OAAOX,IAAI,CAAC;YAEjC,MAAMY,WAAWD;YACjB/E,OAAOgF,QAAQ,CAAC,EAAE,CAAEC,QAAQ,EAAEb,IAAI,CAAC;YACnCpE,OAAOgF,QAAQ,CAAC,EAAE,CAAEE,EAAE,EAAEd,IAAI,CAAC;QAC/B;QAEArE,GAAG,4EAA4E;YAC7E,MAAMoF,gBAAgB;gBACpBC,MAAM;oBACJC,UAAU;wBACR;4BACEA,UAAU;gCACR;oCAAEC,QAAQ;oCAAGC,QAAQ;oCAAGC,MAAM;oCAAUC,MAAM;oCAAWhF,MAAM;oCAAQiF,SAAS;gCAAE;6BACnF;4BACDC,WAAW;4BACXJ,QAAQ;4BACRK,QAAQ;4BACRnF,MAAM;4BACNiF,SAAS;wBACX;qBACD;oBACDC,WAAW;oBACXJ,QAAQ;oBACRK,QAAQ;oBACRnF,MAAM;oBACNiF,SAAS;gBACX;YACF;YAEA,MAAM/E,OAAO;gBACX4D,4BAA4B;gBAC5BC,mCAAmC;gBACnCC,yCAAyC;gBACzCoB,uCAAuCC,KAAKC,SAAS,CAACZ;gBACtDT,mCAAmC;YACrC;YAEA,MAAMV,mBAAmBpE,wBAAwB;gBAAEW,QAAQ8D;YAAU;YACrE,MAAMxD,SAAShB,gBAAgB;gBAAEc;gBAAMJ,QAAQ8D;gBAAWL;gBAAkBlD,KAAKZ;YAAQ;YAEzF,MAAMyE,aAAa9D,OAAO8D,UAAU;YACpC,MAAMI,OAAOJ,UAAU,CAAC,EAAE,CAAEI,IAAI;YAEhC/E,OAAO,OAAO+E,IAAI,CAAC,EAAE,CAAEiB,MAAM,EAAEC,GAAG,CAAC7B,IAAI,CAAC;YACxCpE,OAAO+E,IAAI,CAAC,EAAE,CAAEiB,MAAM,EAAEjF,OAAO,CAACoE;QAClC;IACF;IAEArF,SAAS,cAAc;QACrBC,GAAG,4BAA4B;YAC7B,MAAMc,SAAShB,gBAAgB;gBAAEc,MAAM,CAAC;gBAAGJ,QAAQ,EAAE;gBAAEO,KAAKZ;YAAQ;YACpEF,OAAOa,QAAQE,OAAO,CAAC,CAAC;QAC1B;QAEAhB,GAAG,2BAA2B;YAC5B,MAAMc,SAAShB,gBAAgB;gBAAEc,MAAM;gBAAaJ,QAAQ,EAAE;gBAAEO,KAAKZ;YAAQ;YAC7EF,OAAOa,QAAQE,OAAO,CAAC,CAAC;QAC1B;QAEAhB,GAAG,kCAAkC;YACnC,MAAMY,OAAO;gBACXwC,QAAQ/B;gBACRgC,QAAQ;YACV;YAEA,MAAMvC,SAAShB,gBAAgB;gBAAEc;gBAAMJ,QAAQ,EAAE;gBAAEO,KAAKZ;YAAQ;YAChEF,OAAOa,QAAQE,OAAO,CAAC;gBAAEqC,QAAQ;YAAQ;QAC3C;QAEArD,GAAG,8CAA8C;YAC/C,MAAMY,OAAO;gBACXwC,QAAQ;gBACRC,QAAQ;YACV;YAEA,MAAMvC,SAAShB,gBAAgB;gBAAEc;gBAAMJ,QAAQ,EAAE;gBAAEO,KAAKZ;YAAQ;YAChE,2CAA2C;YAC3CF,OAAOa,QAAQE,OAAO,CAAC;gBAAEoC,QAAQ;gBAAMC,QAAQ;YAAQ;QACzD;IACF;AACF"}
|