{"version":3,"file":"components.mjs","sources":["../../../server/src/services/components.ts"],"sourcesContent":["import type { Internal, Struct } from '@strapi/types';\nimport { get, has } from 'lodash';\n\nimport { formatAttributes, replaceTemporaryUIDs } from '../utils/attributes';\nimport createBuilder from './schema-builder';\nimport type { SchemaHandler } from './schema-builder/schema-handler';\n\n/**\n * Formats a component attributes\n */\nexport const formatComponent = (component: any) => {\n const { uid, modelName, connection, collectionName, info, category } = component;\n\n return {\n uid,\n category,\n apiId: modelName,\n schema: {\n displayName: get(info, 'displayName'),\n description: get(info, 'description', ''),\n icon: get(info, 'icon'),\n connection,\n collectionName,\n pluginOptions: component.pluginOptions,\n attributes: formatAttributes(component),\n },\n };\n};\n\n/**\n * Creates a component and handle the nested components sent with it\n */\nexport const createComponent = async ({\n component,\n components = [],\n}: any): Promise => {\n const builder = createBuilder();\n\n const uidMap = builder.createNewComponentUIDMap(components);\n const replaceTmpUIDs = replaceTemporaryUIDs(uidMap);\n\n const newComponent = builder.createComponent(replaceTmpUIDs(component));\n\n components.forEach((component: any) => {\n if (!has(component, 'uid')) {\n return builder.createComponent(replaceTmpUIDs(component));\n }\n\n return builder.editComponent(replaceTmpUIDs(component));\n });\n\n await builder.writeFiles();\n\n strapi.eventHub.emit('component.create', { component: newComponent });\n\n return newComponent;\n};\n\ntype ComponentToCreate = {\n component: Struct.ComponentSchema;\n components?: Struct.ComponentSchema[];\n};\n\nexport const editComponent = async (\n uid: Internal.UID.Component,\n { component, components = [] }: ComponentToCreate\n): Promise => {\n const builder = createBuilder();\n\n const uidMap = builder.createNewComponentUIDMap(components);\n const replaceTmpUIDs = replaceTemporaryUIDs(uidMap);\n\n const updatedComponent = builder.editComponent({\n uid,\n ...replaceTmpUIDs(component),\n });\n\n components.forEach((component) => {\n if (!has(component, 'uid')) {\n return builder.createComponent(replaceTmpUIDs(component));\n }\n\n return builder.editComponent(replaceTmpUIDs(component));\n });\n\n await builder.writeFiles();\n\n strapi.eventHub.emit('component.update', { component: updatedComponent });\n\n return updatedComponent;\n};\n\nexport const deleteComponent = async (uid: Internal.UID.Component) => {\n const builder = createBuilder();\n\n const deletedComponent = builder.deleteComponent(uid);\n\n await builder.writeFiles();\n\n strapi.eventHub.emit('component.delete', { component: deletedComponent });\n\n return deletedComponent;\n};\n"],"names":["formatComponent","component","uid","modelName","connection","collectionName","info","category","apiId","schema","displayName","get","description","icon","pluginOptions","attributes","formatAttributes","createComponent","components","builder","createBuilder","uidMap","createNewComponentUIDMap","replaceTmpUIDs","replaceTemporaryUIDs","newComponent","forEach","has","editComponent","writeFiles","strapi","eventHub","emit","updatedComponent","deleteComponent","deletedComponent"],"mappings":"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"}