UNPKG

@esri/solution-common

Version:

Provides general helper functions for @esri/solution.js.

107 lines 4.97 kB
"use strict"; /** @license * Copyright 2021 Esri * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.deleteSolutionByComponents = exports.deleteSolution = void 0; const tslib_1 = require("tslib"); const deleteSolutionContents = tslib_1.__importStar(require("./deleteHelpers/deleteSolutionContents")); const getDeletableSolutionInfo = tslib_1.__importStar(require("./getDeletableSolutionInfo")); // ------------------------------------------------------------------------------------------------------------------ // /** * Deletes a deployed Solution item and and all of the items that were created * as part of that deployment. * * @param solutionItemId Id of a deployed Solution * @param authentication Credentials for the request * @param options Progress reporting and deletion permanence options * @returns Promise that will resolve with a list of two solution summaries: successful deletions * and failed deletions. Ignored items (e.g., already deleted) and items shared with more than * one Solution will not be in either list. * Note that Solution item and its deployment folder will only be deleted if all of its deployed * items were deleted (the failure list is empty). This makes it possible to re-attempted * deletion using the solutionItemId. */ function deleteSolution(solutionItemId, authentication, options) { return getDeletableSolutionInfo .getDeletableSolutionInfo(solutionItemId, authentication) .then((solutionSummary) => { return deleteSolutionContents.deleteSolutionContents(solutionItemId, solutionSummary, authentication, options); }) .catch(() => { return [undefined, undefined]; }); } exports.deleteSolution = deleteSolution; /** * Deletes a deployed Solution item and and all of the items that were created * as part of that deployment. * * @param solutionItemId Id of a deployed Solution * @param itemIds Item ids to delete; this list is reversed in this function * @param templates List of Solution's templates * @param templateDictionary Hash of facts: folder id, org URL, adlib replacements * @param authentication Credentials for the request * @param options Progress reporting and deletion permanence options * @returns Promise that will resolve with a list of two solution summaries: successful deletions * and failed deletions. Ignored items (e.g., already deleted) and items shared with more than * one Solution will not be in either list. * Note that Solution item and its deployment folder will only be deleted if all of its deployed * items were deleted (the failure list is empty). This makes it possible to re-attempted * deletion using the solutionItemId. */ function deleteSolutionByComponents(solutionItemId, itemIds, templates, templateDictionary, authentication, options) { // Construct a description of the solution from its id and the itemIds using the templateDictionary to fill in details const solutionSummary = { id: solutionItemId, title: "", folder: templateDictionary.folderId, items: [], groups: [], }; // Combine the templates and templateDictionary to create summary items let summaries = templates .map((template) => { return { id: template.itemId, type: template.type, title: template.item.title, modified: 0, owner: "", }; }) .map((summary) => { summary.id = templateDictionary[summary.id].itemId; return summary; }) .filter((summary) => !!summary.id); // Filter to only include items in itemIds summaries = summaries.filter((summary) => itemIds.includes(summary.id)); // Sort into the order of itemIds (last created is first deleted) summaries.sort((summary1, summary2) => itemIds.indexOf(summary1.id) - itemIds.indexOf(summary2.id)); // Partition into items and groups summaries.forEach((summary) => { if (summary.type === "Group") { solutionSummary.groups.push(summary.id); } else { solutionSummary.items.push(summary); } }); // Delete the solution return deleteSolutionContents.deleteSolutionContents(solutionItemId, solutionSummary, authentication, options); } exports.deleteSolutionByComponents = deleteSolutionByComponents; //# sourceMappingURL=deleteSolution.js.map