{"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<\n      Clone.Response,\n      Clone.Params & {\n        params?: Find.Request['query'] & Clone.Request['query'];\n      }\n    >({\n      query: ({ model, sourceId, params }) => ({\n        url: `/content-manager/collection-types/${model}/auto-clone/${sourceId}`,\n        method: 'POST',\n        config: {\n          params,\n        },\n      }),\n      invalidatesTags: (_result, error, { model }) => {\n        if (error) {\n          return [];\n        }\n\n        return [\n          { type: 'Document', id: `${model}_LIST` },\n          'RecentDocumentList',\n          'CountDocuments',\n          'UpcomingReleasesList',\n        ];\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        'CountDocuments',\n        'UpcomingReleasesList',\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        'CountDocuments',\n        'UpcomingReleasesList',\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, documentId }) => [\n        { type: 'Document', id: collectionType !== SINGLE_TYPES ? `${model}_LIST` : model },\n        {\n          type: 'Document',\n          id: collectionType !== SINGLE_TYPES ? `${model}_${documentId}` : model,\n        },\n        { type: 'Document', id: `${model}_ALL_ITEMS` },\n        'RecentDocumentList',\n        'CountDocuments',\n        'UpcomingReleasesList',\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        'CountDocuments',\n        'UpcomingReleasesList',\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:\n          documentId && collectionType !== SINGLE_TYPES\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          'CountDocuments',\n          'UpcomingReleasesList',\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:\n          documentId && collectionType !== SINGLE_TYPES\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    /**\n     * Fetches multiple documents with deep populate in a single request for bulk publish validation.\n     */\n    getDocumentsForValidation: builder.query<\n      Find.Response['results'],\n      {\n        model: string;\n        documentIds: string[];\n        locale?: string;\n        sort?: string;\n      }\n    >({\n      query: ({ model, documentIds, locale, sort }) => ({\n        url: `/content-manager/collection-types/${model}/actions/bulkFindForValidation`,\n        method: 'POST',\n        data: { documentIds, locale, sort },\n      }),\n      transformResponse: (response: { results: Find.Response['results'] }) =>\n        response?.results ?? [],\n      providesTags: (result, _error, { model }) =>\n        result\n          ? [\n              ...result.map((doc) => ({\n                type: 'Document' as const,\n                id: `${model}_${doc.documentId}`,\n              })),\n              { type: 'Document', id: `${model}_LIST` },\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}${\n            documentId && collectionType !== SINGLE_TYPES ? `/${documentId}` : ''\n          }`,\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:\n          documentId && collectionType !== SINGLE_TYPES\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          'CountDocuments',\n          'UpcomingReleasesList',\n          {\n            type: 'AILocalizationJobs',\n            id: collectionType !== SINGLE_TYPES ? `${model}_${documentId}` : model,\n          },\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        return [\n          ...documentIds.map((id) => ({ type: 'Document' as const, id: `${model}_${id}` })),\n          'RecentDocumentList',\n          'CountDocuments',\n          'UpcomingReleasesList',\n        ];\n      },\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}${\n          documentId && collectionType !== SINGLE_TYPES ? `/${documentId}` : ''\n        }`,\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          'CountDocuments',\n          'UpcomingReleasesList',\n          {\n            type: 'AILocalizationJobs',\n            id: collectionType !== SINGLE_TYPES ? `${model}_${documentId}` : model,\n          },\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:\n          documentId && collectionType !== SINGLE_TYPES\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          'CountDocuments',\n          'UpcomingReleasesList',\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        'CountDocuments',\n        'UpcomingReleasesList',\n      ],\n    }),\n  }),\n});\n\nconst {\n  useAutoCloneDocumentMutation,\n  useCloneDocumentMutation,\n  useCreateDocumentMutation,\n  useDeleteDocumentMutation,\n  useDeleteManyDocumentsMutation,\n  useDiscardDocumentMutation,\n  useGetAllDocumentsQuery,\n  useGetDocumentsForValidationQuery,\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  useGetDocumentsForValidationQuery,\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","params","url","method","config","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","getDocumentsForValidation","documentIds","locale","sort","doc","getDocument","queryFn","_api","_extraOpts","baseQuery","res","name","document","undefined","getManyDraftRelationCount","publishDocument","publishManyDocuments","updateDocument","onQueryStarted","patch","dispatch","queryFulfilled","patchResult","util","updateQueryData","draft","Object","assign","undo","unpublishDocument","unpublishManyDocuments","useAutoCloneDocumentMutation","useCloneDocumentMutation","useCreateDocumentMutation","useDeleteDocumentMutation","useDeleteManyDocumentsMutation","useDiscardDocumentMutation","useGetAllDocumentsQuery","useGetDocumentsForValidationQuery","useLazyGetDocumentQuery","useGetDocumentQuery","useLazyGetDraftRelationCountQuery","useGetManyDraftRelationCountQuery","usePublishDocumentMutation","usePublishManyDocumentsMutation","useUpdateDocumentMutation","useUnpublishDocumentMutation","useUnpublishManyDocumentsMutation"],"mappings":"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"}