{"version":3,"file":"document-publishing.repository-D_GikGPY.js","sources":["../../../src/packages/documents/documents/publishing/repository/document-publishing.server.data-source.ts","../../../src/packages/documents/documents/publishing/repository/document-publishing.repository.ts"],"sourcesContent":["import type { UmbDocumentDetailModel, UmbDocumentVariantPublishModel } from '../../types.js';\r\nimport { UMB_DOCUMENT_ENTITY_TYPE } from '../../entity.js';\r\nimport type {\r\n\tCultureAndScheduleRequestModel,\r\n\tPublishDocumentRequestModel,\r\n\tPublishDocumentWithDescendantsRequestModel,\r\n\tUnpublishDocumentRequestModel,\r\n} from '@umbraco-cms/backoffice/external/backend-api';\r\nimport { DocumentService } from '@umbraco-cms/backoffice/external/backend-api';\r\nimport type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';\r\nimport { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources';\r\nimport type { UmbVariantId } from '@umbraco-cms/backoffice/variant';\r\nimport type { UmbDataSourceResponse } from '@umbraco-cms/backoffice/repository';\r\n\r\n/**\r\n * A server data source for Document publishing\r\n * @class UmbDocumentPublishingServerDataSource\r\n * @implements {DocumentTreeDataSource}\r\n */\r\nexport class UmbDocumentPublishingServerDataSource {\r\n\t#host: UmbControllerHost;\r\n\r\n\t/**\r\n\t * Creates an instance of UmbDocumentPublishingServerDataSource.\r\n\t * @param {UmbControllerHost} host - The controller host for this controller to be appended to\r\n\t * @memberof UmbDocumentPublishingServerDataSource\r\n\t */\r\n\tconstructor(host: UmbControllerHost) {\r\n\t\tthis.#host = host;\r\n\t}\r\n\r\n\t/**\r\n\t * Publish one or more variants of a Document\r\n\t * @param {string} unique\r\n\t * @param {Array} variantIds\r\n\t * @param variants\r\n\t * @returns {*}\r\n\t * @memberof UmbDocumentPublishingServerDataSource\r\n\t */\r\n\tasync publish(unique: string, variants: Array) {\r\n\t\tif (!unique) throw new Error('Id is missing');\r\n\r\n\t\tconst publishSchedules: CultureAndScheduleRequestModel[] = variants.map(\r\n\t\t\t(variant) => {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tculture: variant.variantId.isCultureInvariant() ? null : variant.variantId.toCultureString(),\r\n\t\t\t\t\tschedule: variant.schedule,\r\n\t\t\t\t};\r\n\t\t\t},\r\n\t\t);\r\n\r\n\t\t// TODO: THIS DOES NOT TAKE SEGMENTS INTO ACCOUNT!!!!!!\r\n\t\tconst requestBody: PublishDocumentRequestModel = {\r\n\t\t\tpublishSchedules,\r\n\t\t};\r\n\r\n\t\treturn tryExecuteAndNotify(this.#host, DocumentService.putDocumentByIdPublish({ id: unique, requestBody }));\r\n\t}\r\n\r\n\t/**\r\n\t * Unpublish one or more variants of a Document\r\n\t * @param {string} unique\r\n\t * @param {Array} variantIds\r\n\t * @returns {*}\r\n\t * @memberof UmbDocumentPublishingServerDataSource\r\n\t */\r\n\tasync unpublish(unique: string, variantIds: Array) {\r\n\t\tif (!unique) throw new Error('Id is missing');\r\n\r\n\t\t// TODO: THIS DOES NOT TAKE SEGMENTS INTO ACCOUNT!!!!!!\r\n\r\n\t\t// If variants are culture invariant, we need to pass null to the API\r\n\t\tconst hasInvariant = variantIds.some((variant) => variant.isCultureInvariant());\r\n\r\n\t\tif (hasInvariant) {\r\n\t\t\tconst requestBody: UnpublishDocumentRequestModel = {\r\n\t\t\t\tcultures: null,\r\n\t\t\t};\r\n\r\n\t\t\treturn tryExecuteAndNotify(this.#host, DocumentService.putDocumentByIdUnpublish({ id: unique, requestBody }));\r\n\t\t}\r\n\r\n\t\tconst requestBody: UnpublishDocumentRequestModel = {\r\n\t\t\tcultures: variantIds.map((variant) => variant.toCultureString()),\r\n\t\t};\r\n\r\n\t\treturn tryExecuteAndNotify(this.#host, DocumentService.putDocumentByIdUnpublish({ id: unique, requestBody }));\r\n\t}\r\n\r\n\t/**\r\n\t * Publish variants of a document and all its descendants\r\n\t * @param unique\r\n\t * @param variantIds\r\n\t * @param includeUnpublishedDescendants\r\n\t * @memberof UmbDocumentPublishingServerDataSource\r\n\t */\r\n\tasync publishWithDescendants(\r\n\t\tunique: string,\r\n\t\tvariantIds: Array,\r\n\t\tincludeUnpublishedDescendants: boolean,\r\n\t) {\r\n\t\tif (!unique) throw new Error('Id is missing');\r\n\r\n\t\tconst requestBody: PublishDocumentWithDescendantsRequestModel = {\r\n\t\t\tcultures: variantIds.map((variant) => variant.toCultureString()),\r\n\t\t\tincludeUnpublishedDescendants,\r\n\t\t};\r\n\r\n\t\treturn tryExecuteAndNotify(\r\n\t\t\tthis.#host,\r\n\t\t\tDocumentService.putDocumentByIdPublishWithDescendants({ id: unique, requestBody }),\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Get the published Document by its unique\r\n\t * @param {string} unique - Document unique\r\n\t * @returns {Promise>} Published document\r\n\t * @memberof UmbDocumentPublishingServerDataSource\r\n\t */\r\n\tasync published(unique: string): Promise> {\r\n\t\tif (!unique) throw new Error('Unique is missing');\r\n\r\n\t\tconst { data, error } = await tryExecuteAndNotify(\r\n\t\t\tthis.#host,\r\n\t\t\tDocumentService.getDocumentByIdPublished({ id: unique }),\r\n\t\t);\r\n\r\n\t\tif (error || !data) {\r\n\t\t\treturn { error };\r\n\t\t}\r\n\r\n\t\t// TODO: make data mapper to prevent errors\r\n\t\tconst document: UmbDocumentDetailModel = {\r\n\t\t\tentityType: UMB_DOCUMENT_ENTITY_TYPE,\r\n\t\t\tunique: data.id,\r\n\t\t\tvalues: data.values.map((value) => {\r\n\t\t\t\treturn {\r\n\t\t\t\t\teditorAlias: value.editorAlias,\r\n\t\t\t\t\talias: value.alias,\r\n\t\t\t\t\tculture: value.culture || null,\r\n\t\t\t\t\tsegment: value.segment || null,\r\n\t\t\t\t\tvalue: value.value,\r\n\t\t\t\t};\r\n\t\t\t}),\r\n\t\t\tvariants: data.variants.map((variant) => {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tculture: variant.culture || null,\r\n\t\t\t\t\tsegment: variant.segment || null,\r\n\t\t\t\t\tstate: variant.state,\r\n\t\t\t\t\tname: variant.name,\r\n\t\t\t\t\tpublishDate: variant.publishDate || null,\r\n\t\t\t\t\tcreateDate: variant.createDate,\r\n\t\t\t\t\tupdateDate: variant.updateDate,\r\n\t\t\t\t};\r\n\t\t\t}),\r\n\t\t\turls: data.urls.map((url) => {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tculture: url.culture || null,\r\n\t\t\t\t\turl: url.url,\r\n\t\t\t\t};\r\n\t\t\t}),\r\n\t\t\ttemplate: data.template ? { unique: data.template.id } : null,\r\n\t\t\tdocumentType: {\r\n\t\t\t\tunique: data.documentType.id,\r\n\t\t\t\tcollection: data.documentType.collection ? { unique: data.documentType.collection.id } : null,\r\n\t\t\t\ticon: data.documentType.icon,\r\n\t\t\t},\r\n\t\t\tisTrashed: data.isTrashed,\r\n\t\t};\r\n\r\n\t\treturn { data: document };\r\n\t}\r\n}\r\n","import type { UmbDocumentDetailModel, UmbDocumentVariantPublishModel } from '../../types.js';\r\nimport { UmbDocumentPublishingServerDataSource } from './document-publishing.server.data-source.js';\r\nimport type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';\r\nimport { UmbRepositoryBase, type UmbRepositoryResponse } from '@umbraco-cms/backoffice/repository';\r\nimport { UMB_NOTIFICATION_CONTEXT, type UmbNotificationContext } from '@umbraco-cms/backoffice/notification';\r\nimport type { UmbVariantId } from '@umbraco-cms/backoffice/variant';\r\n\r\nexport class UmbDocumentPublishingRepository extends UmbRepositoryBase {\r\n\t#init!: Promise;\r\n\t#publishingDataSource: UmbDocumentPublishingServerDataSource;\r\n\t#notificationContext?: UmbNotificationContext;\r\n\r\n\tconstructor(host: UmbControllerHost) {\r\n\t\tsuper(host);\r\n\r\n\t\tthis.#publishingDataSource = new UmbDocumentPublishingServerDataSource(this);\r\n\r\n\t\tthis.#init = Promise.all([\r\n\t\t\tthis.consumeContext(UMB_NOTIFICATION_CONTEXT, (instance) => {\r\n\t\t\t\tthis.#notificationContext = instance;\r\n\t\t\t}).asPromise(),\r\n\t\t]);\r\n\t}\r\n\r\n\t/**\r\n\t * Publish one or more variants of a Document\r\n\t * @param {string} id\r\n\t * @param {Array} variantIds\r\n\t * @param unique\r\n\t * @param variants\r\n\t * @returns {*}\r\n\t * @memberof UmbDocumentPublishingRepository\r\n\t */\r\n\tasync publish(unique: string, variants: Array) {\r\n\t\tif (!unique) throw new Error('id is missing');\r\n\t\tif (!variants.length) throw new Error('variant IDs are missing');\r\n\t\tawait this.#init;\r\n\r\n\t\tconst { error } = await this.#publishingDataSource.publish(unique, variants);\r\n\r\n\t\tif (!error) {\r\n\t\t\tconst notification = { data: { message: `Document published` } };\r\n\t\t\tthis.#notificationContext?.peek('positive', notification);\r\n\t\t}\r\n\r\n\t\treturn { error };\r\n\t}\r\n\r\n\t/**\r\n\t * Unpublish one or more variants of a Document\r\n\t * @param {string} id\r\n\t * @param {Array} variantIds\r\n\t * @returns {*}\r\n\t * @memberof UmbDocumentPublishingRepository\r\n\t */\r\n\tasync unpublish(id: string, variantIds: Array) {\r\n\t\tif (!id) throw new Error('id is missing');\r\n\t\tif (!variantIds) throw new Error('variant IDs are missing');\r\n\t\tawait this.#init;\r\n\r\n\t\tconst { error } = await this.#publishingDataSource.unpublish(id, variantIds);\r\n\r\n\t\tif (!error) {\r\n\t\t\tconst notification = { data: { message: `Document unpublished` } };\r\n\t\t\tthis.#notificationContext?.peek('positive', notification);\r\n\t\t}\r\n\r\n\t\treturn { error };\r\n\t}\r\n\r\n\t/**\r\n\t * Publish variants of a document including its descendants\r\n\t * @param id\r\n\t * @param variantIds\r\n\t * @param includeUnpublishedDescendants\r\n\t * @memberof UmbDocumentPublishingRepository\r\n\t */\r\n\tasync publishWithDescendants(id: string, variantIds: Array, includeUnpublishedDescendants: boolean) {\r\n\t\tif (!id) throw new Error('id is missing');\r\n\t\tif (!variantIds) throw new Error('variant IDs are missing');\r\n\t\tawait this.#init;\r\n\r\n\t\tconst { error } = await this.#publishingDataSource.publishWithDescendants(\r\n\t\t\tid,\r\n\t\t\tvariantIds,\r\n\t\t\tincludeUnpublishedDescendants,\r\n\t\t);\r\n\r\n\t\tif (!error) {\r\n\t\t\tconst notification = { data: { message: `Document published with descendants` } };\r\n\t\t\tthis.#notificationContext?.peek('positive', notification);\r\n\t\t}\r\n\r\n\t\treturn { error };\r\n\t}\r\n\r\n\t/**\r\n\t * Get the published data of a document\r\n\t * @param {string} unique Document unique\r\n\t * @returns { Promise>} Published document\r\n\t * @memberof UmbDocumentPublishingRepository\r\n\t */\r\n\tasync published(unique: string): Promise> {\r\n\t\treturn this.#publishingDataSource.published(unique);\r\n\t}\r\n}\r\n\r\nexport { UmbDocumentPublishingRepository as api };\r\n"],"names":["UmbDocumentPublishingServerDataSource","#host","host","unique","variants","requestBody","variant","tryExecuteAndNotify","DocumentService","variantIds","includeUnpublishedDescendants","data","error","UMB_DOCUMENT_ENTITY_TYPE","value","url","UmbDocumentPublishingRepository","UmbRepositoryBase","#init","#publishingDataSource","#notificationContext","UMB_NOTIFICATION_CONTEXT","instance","notification","id"],"mappings":"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"}