{"version":3,"file":"documents.mjs","sources":["../../../admin/src/services/documents.ts"],"sourcesContent":["/**\n * Related to fetching the actual content of a collection type or single type.\n */\nimport { stringify } from 'qs';\n\nimport { SINGLE_TYPES } from '../constants/collections';\n\nimport { contentManagerApi } from './api';\n\nimport type {\n  Clone,\n  Create,\n  Delete,\n  Find,\n  FindOne,\n  BulkDelete,\n  BulkPublish,\n  BulkUnpublish,\n  Discard,\n  CountDraftRelations,\n  CountManyEntriesDraftRelations,\n  Publish,\n  Unpublish,\n  Update,\n} from '../../../shared/contracts/collection-types';\n\nconst documentApi = contentManagerApi.injectEndpoints({\n  overrideExisting: true,\n  endpoints: (builder) => ({\n    autoCloneDocument: builder.mutation<Clone.Response, Clone.Params & { query?: string }>({\n      query: ({ model, sourceId, query }) => ({\n        url: `/content-manager/collection-types/${model}/auto-clone/${sourceId}`,\n        method: 'POST',\n        config: {\n          params: query,\n        },\n      }),\n      invalidatesTags: (_result, error, { model }) => {\n        if (error) {\n          return [];\n        }\n\n        return [{ type: 'Document', id: `${model}_LIST` }, 'RecentDocumentList'];\n      },\n    }),\n    cloneDocument: builder.mutation<\n      Clone.Response,\n      Clone.Params & {\n        data: Clone.Request['body'];\n        params?: Clone.Request['query'];\n      }\n    >({\n      query: ({ model, sourceId, data, params }) => ({\n        url: `/content-manager/collection-types/${model}/clone/${sourceId}`,\n        method: 'POST',\n        data,\n        config: {\n          params,\n        },\n      }),\n      invalidatesTags: (_result, _error, { model }) => [\n        { type: 'Document', id: `${model}_LIST` },\n        { type: 'UidAvailability', id: model },\n        'RecentDocumentList',\n      ],\n    }),\n    /**\n     * Creates a new collection-type document. This should ONLY be used for collection-types.\n     * single-types should always be using `updateDocument` since they always exist.\n     */\n    createDocument: builder.mutation<\n      Create.Response,\n      Create.Params & {\n        data: Create.Request['body'];\n        params?: Create.Request['query'];\n      }\n    >({\n      query: ({ model, data, params }) => ({\n        url: `/content-manager/collection-types/${model}`,\n        method: 'POST',\n        data,\n        config: {\n          params,\n        },\n      }),\n      invalidatesTags: (result, _error, { model }) => [\n        { type: 'Document', id: `${model}_LIST` },\n        'Relations',\n        { type: 'UidAvailability', id: model },\n        'RecentDocumentList',\n      ],\n      transformResponse: (response: Create.Response, meta, arg): Create.Response => {\n        /**\n         * TODO v6\n         * Adapt plugin:users-permissions.user to return the same response\n         * shape as all other requests. The error is returned as expected.\n         */\n        if (!('data' in response) && arg.model === 'plugin::users-permissions.user') {\n          return {\n            data: response,\n            meta: {\n              availableStatus: [],\n              availableLocales: [],\n            },\n          };\n        }\n\n        return response;\n      },\n    }),\n    deleteDocument: builder.mutation<\n      Delete.Response,\n      Pick<Delete.Params, 'model'> &\n        Pick<Partial<Delete.Params>, 'documentId'> & {\n          collectionType: string;\n          params?: Find.Request['query'];\n        }\n    >({\n      query: ({ collectionType, model, documentId, params }) => ({\n        url: `/content-manager/${collectionType}/${model}${\n          collectionType !== SINGLE_TYPES && documentId ? `/${documentId}` : ''\n        }`,\n        method: 'DELETE',\n        config: {\n          params,\n        },\n      }),\n      invalidatesTags: (_result, _error, { collectionType, model }) => [\n        { type: 'Document', id: collectionType !== SINGLE_TYPES ? `${model}_LIST` : model },\n        'RecentDocumentList',\n      ],\n    }),\n    deleteManyDocuments: builder.mutation<\n      BulkDelete.Response,\n      BulkDelete.Params & BulkDelete.Request['body'] & { params?: Find.Request['query'] }\n    >({\n      query: ({ model, params, ...body }) => ({\n        url: `/content-manager/collection-types/${model}/actions/bulkDelete`,\n        method: 'POST',\n        data: body,\n        config: {\n          params,\n        },\n      }),\n      invalidatesTags: (_res, _error, { model }) => [\n        { type: 'Document', id: `${model}_LIST` },\n        'RecentDocumentList',\n      ],\n    }),\n    discardDocument: builder.mutation<\n      Discard.Response,\n      Pick<Discard.Params, 'model'> &\n        Partial<Pick<Discard.Params, 'documentId'>> & {\n          collectionType: string;\n          params?: Find.Request['query'] & {\n            [key: string]: any;\n          };\n        }\n    >({\n      query: ({ collectionType, model, documentId, params }) => ({\n        url: documentId\n          ? `/content-manager/${collectionType}/${model}/${documentId}/actions/discard`\n          : `/content-manager/${collectionType}/${model}/actions/discard`,\n        method: 'POST',\n        config: {\n          params,\n        },\n      }),\n      invalidatesTags: (_result, _error, { collectionType, model, documentId }) => {\n        return [\n          {\n            type: 'Document',\n            id: collectionType !== SINGLE_TYPES ? `${model}_${documentId}` : model,\n          },\n          { type: 'Document', id: `${model}_LIST` },\n          'Relations',\n          { type: 'UidAvailability', id: model },\n          'RecentDocumentList',\n        ];\n      },\n    }),\n    /**\n     * Gets all documents of a collection type or single type.\n     * By passing different params you can get different results e.g. only published documents or 'es' documents.\n     */\n    getAllDocuments: builder.query<\n      Find.Response,\n      Find.Params & {\n        params?: Find.Request['query'] & {\n          [key: string]: any;\n        };\n      }\n    >({\n      query: ({ model, params }) => ({\n        url: `/content-manager/collection-types/${model}`,\n        method: 'GET',\n        config: {\n          params: stringify(params, { encode: true }),\n        },\n      }),\n      providesTags: (result, _error, arg) => {\n        return [\n          { type: 'Document', id: `ALL_LIST` },\n          { type: 'Document', id: `${arg.model}_LIST` },\n          ...(result?.results.map(({ documentId }) => ({\n            type: 'Document' as const,\n            id: `${arg.model}_${documentId}`,\n          })) ?? []),\n        ];\n      },\n    }),\n    getDraftRelationCount: builder.query<\n      CountDraftRelations.Response,\n      {\n        collectionType: string;\n        model: string;\n        /**\n         * You don't pass the documentId if the document is a single-type\n         */\n        documentId?: string;\n        params?: CountDraftRelations.Request['query'];\n      }\n    >({\n      query: ({ collectionType, model, documentId, params }) => ({\n        url: documentId\n          ? `/content-manager/${collectionType}/${model}/${documentId}/actions/countDraftRelations`\n          : `/content-manager/${collectionType}/${model}/actions/countDraftRelations`,\n        method: 'GET',\n        config: {\n          params,\n        },\n      }),\n    }),\n    getDocument: builder.query<\n      FindOne.Response,\n      Pick<FindOne.Params, 'model'> &\n        Partial<Pick<FindOne.Params, 'documentId'>> & {\n          collectionType: string;\n          params?: FindOne.Request['query'];\n        }\n    >({\n      // @ts-expect-error – TODO: fix ts error where data unknown doesn't work with response via an assertion?\n      queryFn: async (\n        { collectionType, model, documentId, params },\n        _api,\n        _extraOpts,\n        baseQuery\n      ) => {\n        const res = await baseQuery({\n          url: `/content-manager/${collectionType}/${model}${documentId ? `/${documentId}` : ''}`,\n          method: 'GET',\n          config: {\n            params,\n          },\n        });\n\n        /**\n         * To stop the query from locking itself in multiple retries, we intercept the error here and manage correctly.\n         * This is because single-types don't have a list view and fetching them with the route `/single-types/:model`\n         * never returns a list, just a single document but this won't exist if you've not made one before.\n         */\n        if (res.error && res.error.name === 'NotFoundError' && collectionType === SINGLE_TYPES) {\n          return { data: { document: undefined }, error: undefined };\n        }\n\n        return res;\n      },\n      providesTags: (result, _error, { collectionType, model, documentId }) => {\n        return [\n          // we prefer the result's id because we don't fetch single-types with an ID.\n          {\n            type: 'Document',\n            id:\n              collectionType !== SINGLE_TYPES\n                ? `${model}_${result && 'documentId' in result ? result.documentId : documentId}`\n                : model,\n          },\n          // Make it easy to invalidate all individual documents queries for a model\n          {\n            type: 'Document',\n            id: `${model}_ALL_ITEMS`,\n          },\n        ];\n      },\n    }),\n    getManyDraftRelationCount: builder.query<\n      CountManyEntriesDraftRelations.Response['data'],\n      CountManyEntriesDraftRelations.Request['query'] & {\n        model: string;\n      }\n    >({\n      query: ({ model, ...params }) => ({\n        url: `/content-manager/collection-types/${model}/actions/countManyEntriesDraftRelations`,\n        method: 'GET',\n        config: {\n          params,\n        },\n      }),\n      transformResponse: (response: CountManyEntriesDraftRelations.Response) => response.data,\n    }),\n    /**\n     * This endpoint will either create or update documents at the same time as publishing.\n     */\n    publishDocument: builder.mutation<\n      Publish.Response,\n      Pick<Publish.Params, 'model'> &\n        Partial<Pick<Publish.Params, 'documentId'>> & {\n          collectionType: string;\n          data: Publish.Request['body'];\n          params?: Publish.Request['query'];\n        }\n    >({\n      query: ({ collectionType, model, documentId, params, data }) => ({\n        url: documentId\n          ? `/content-manager/${collectionType}/${model}/${documentId}/actions/publish`\n          : `/content-manager/${collectionType}/${model}/actions/publish`,\n        method: 'POST',\n        data,\n        config: {\n          params,\n        },\n      }),\n      invalidatesTags: (_result, _error, { collectionType, model, documentId }) => {\n        return [\n          {\n            type: 'Document',\n            id: collectionType !== SINGLE_TYPES ? `${model}_${documentId}` : model,\n          },\n          { type: 'Document', id: `${model}_LIST` },\n          'Relations',\n          'RecentDocumentList',\n        ];\n      },\n    }),\n    publishManyDocuments: builder.mutation<\n      BulkPublish.Response,\n      BulkPublish.Params & BulkPublish.Request['body'] & { params?: BulkPublish.Request['query'] }\n    >({\n      query: ({ model, params, ...body }) => ({\n        url: `/content-manager/collection-types/${model}/actions/bulkPublish`,\n        method: 'POST',\n        data: body,\n        config: {\n          params,\n        },\n      }),\n      invalidatesTags: (_res, _error, { model, documentIds }) =>\n        documentIds.map((id) => ({ type: 'Document', id: `${model}_${id}` })),\n    }),\n    updateDocument: builder.mutation<\n      Update.Response,\n      Pick<Update.Params, 'model'> &\n        Partial<Pick<Update.Params, 'documentId'>> & {\n          collectionType: string;\n          data: Update.Request['body'];\n          params?: Update.Request['query'];\n        }\n    >({\n      query: ({ collectionType, model, documentId, data, params }) => ({\n        url: `/content-manager/${collectionType}/${model}${documentId ? `/${documentId}` : ''}`,\n        method: 'PUT',\n        data,\n        config: {\n          params,\n        },\n      }),\n      invalidatesTags: (_result, _error, { collectionType, model, documentId }) => {\n        return [\n          {\n            type: 'Document',\n            id: collectionType !== SINGLE_TYPES ? `${model}_${documentId}` : model,\n          },\n          'Relations',\n          { type: 'UidAvailability', id: model },\n          'RecentDocumentList',\n          'RecentDocumentList',\n        ];\n      },\n      async onQueryStarted({ data, ...patch }, { dispatch, queryFulfilled }) {\n        // Optimistically update the cache with the new data\n        const patchResult = dispatch(\n          documentApi.util.updateQueryData('getDocument', patch, (draft) => {\n            Object.assign(draft.data, data);\n          })\n        );\n        try {\n          await queryFulfilled;\n        } catch {\n          // Rollback the optimistic update if there's an error\n          patchResult.undo();\n        }\n      },\n      transformResponse: (response: Update.Response, meta, arg): Update.Response => {\n        /**\n         * TODO v6\n         * Adapt plugin:users-permissions.user to return the same response\n         * shape as all other requests. The error is returned as expected.\n         */\n        if (!('data' in response) && arg.model === 'plugin::users-permissions.user') {\n          return {\n            data: response,\n            meta: {\n              availableStatus: [],\n              availableLocales: [],\n            },\n          };\n        }\n\n        return response;\n      },\n    }),\n    unpublishDocument: builder.mutation<\n      Unpublish.Response,\n      Pick<Unpublish.Params, 'model'> &\n        Partial<Pick<Unpublish.Params, 'documentId'>> & {\n          collectionType: string;\n          params?: Unpublish.Request['query'];\n          data: Unpublish.Request['body'];\n        }\n    >({\n      query: ({ collectionType, model, documentId, params, data }) => ({\n        url: documentId\n          ? `/content-manager/${collectionType}/${model}/${documentId}/actions/unpublish`\n          : `/content-manager/${collectionType}/${model}/actions/unpublish`,\n        method: 'POST',\n        data,\n        config: {\n          params,\n        },\n      }),\n      invalidatesTags: (_result, _error, { collectionType, model, documentId }) => {\n        return [\n          {\n            type: 'Document',\n            id: collectionType !== SINGLE_TYPES ? `${model}_${documentId}` : model,\n          },\n          'RecentDocumentList',\n        ];\n      },\n    }),\n    unpublishManyDocuments: builder.mutation<\n      BulkUnpublish.Response,\n      Pick<BulkUnpublish.Params, 'model'> &\n        BulkUnpublish.Request['body'] & {\n          params?: BulkUnpublish.Request['query'];\n        }\n    >({\n      query: ({ model, params, ...body }) => ({\n        url: `/content-manager/collection-types/${model}/actions/bulkUnpublish`,\n        method: 'POST',\n        data: body,\n        config: {\n          params,\n        },\n      }),\n      invalidatesTags: (_res, _error, { model, documentIds }) => [\n        ...documentIds.map((id) => ({ type: 'Document' as const, id: `${model}_${id}` })),\n        'RecentDocumentList',\n      ],\n    }),\n  }),\n});\n\nconst {\n  useAutoCloneDocumentMutation,\n  useCloneDocumentMutation,\n  useCreateDocumentMutation,\n  useDeleteDocumentMutation,\n  useDeleteManyDocumentsMutation,\n  useDiscardDocumentMutation,\n  useGetAllDocumentsQuery,\n  useLazyGetDocumentQuery,\n  useGetDocumentQuery,\n  useLazyGetDraftRelationCountQuery,\n  useGetManyDraftRelationCountQuery,\n  usePublishDocumentMutation,\n  usePublishManyDocumentsMutation,\n  useUpdateDocumentMutation,\n  useUnpublishDocumentMutation,\n  useUnpublishManyDocumentsMutation,\n} = documentApi;\n\nexport {\n  useAutoCloneDocumentMutation,\n  useCloneDocumentMutation,\n  useCreateDocumentMutation,\n  useDeleteDocumentMutation,\n  useDeleteManyDocumentsMutation,\n  useDiscardDocumentMutation,\n  useGetAllDocumentsQuery,\n  useLazyGetDocumentQuery,\n  useGetDocumentQuery,\n  useLazyGetDraftRelationCountQuery as useGetDraftRelationCountQuery,\n  useGetManyDraftRelationCountQuery,\n  usePublishDocumentMutation,\n  usePublishManyDocumentsMutation,\n  useUpdateDocumentMutation,\n  useUnpublishDocumentMutation,\n  useUnpublishManyDocumentsMutation,\n};\n"],"names":["documentApi","contentManagerApi","injectEndpoints","overrideExisting","endpoints","builder","autoCloneDocument","mutation","query","model","sourceId","url","method","config","params","invalidatesTags","_result","error","type","id","cloneDocument","data","_error","createDocument","result","transformResponse","response","meta","arg","availableStatus","availableLocales","deleteDocument","collectionType","documentId","SINGLE_TYPES","deleteManyDocuments","body","_res","discardDocument","getAllDocuments","stringify","encode","providesTags","results","map","getDraftRelationCount","getDocument","queryFn","_api","_extraOpts","baseQuery","res","name","document","undefined","getManyDraftRelationCount","publishDocument","publishManyDocuments","documentIds","updateDocument","onQueryStarted","patch","dispatch","queryFulfilled","patchResult","util","updateQueryData","draft","Object","assign","undo","unpublishDocument","unpublishManyDocuments","useAutoCloneDocumentMutation","useCloneDocumentMutation","useCreateDocumentMutation","useDeleteDocumentMutation","useDeleteManyDocumentsMutation","useDiscardDocumentMutation","useGetAllDocumentsQuery","useLazyGetDocumentQuery","useGetDocumentQuery","useLazyGetDraftRelationCountQuery","useGetManyDraftRelationCountQuery","usePublishDocumentMutation","usePublishManyDocumentsMutation","useUpdateDocumentMutation","useUnpublishDocumentMutation","useUnpublishManyDocumentsMutation"],"mappings":"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"}