@salesforce/source-deploy-retrieve 10.5.5 → 10.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/src/client/deployMessages.d.ts +20 -0
- package/lib/src/client/deployMessages.js +146 -0
- package/lib/src/client/deployMessages.js.map +1 -0
- package/lib/src/client/diagnosticUtil.d.ts +4 -8
- package/lib/src/client/diagnosticUtil.js +53 -112
- package/lib/src/client/diagnosticUtil.js.map +1 -1
- package/lib/src/client/index.d.ts +2 -2
- package/lib/src/client/index.js.map +1 -1
- package/lib/src/client/metadataApiDeploy.d.ts +4 -21
- package/lib/src/client/metadataApiDeploy.js +66 -200
- package/lib/src/client/metadataApiDeploy.js.map +1 -1
- package/lib/src/client/metadataApiRetrieve.d.ts +6 -12
- package/lib/src/client/metadataApiRetrieve.js +62 -165
- package/lib/src/client/metadataApiRetrieve.js.map +1 -1
- package/lib/src/client/metadataTransfer.d.ts +6 -6
- package/lib/src/client/metadataTransfer.js +58 -52
- package/lib/src/client/metadataTransfer.js.map +1 -1
- package/lib/src/client/retrieveExtract.d.ts +15 -0
- package/lib/src/client/retrieveExtract.js +130 -0
- package/lib/src/client/retrieveExtract.js.map +1 -0
- package/lib/src/client/types.d.ts +10 -4
- package/lib/src/client/types.js +1 -0
- package/lib/src/client/types.js.map +1 -1
- package/lib/src/collections/componentSet.d.ts +6 -3
- package/lib/src/collections/componentSet.js +31 -23
- package/lib/src/collections/componentSet.js.map +1 -1
- package/lib/src/collections/componentSetBuilder.d.ts +10 -1
- package/lib/src/collections/componentSetBuilder.js +139 -133
- package/lib/src/collections/componentSetBuilder.js.map +1 -1
- package/lib/src/collections/types.d.ts +2 -1
- package/lib/src/collections/types.js +2 -1
- package/lib/src/collections/types.js.map +1 -1
- package/lib/src/common/types.d.ts +2 -2
- package/lib/src/convert/convertContext/convertContext.d.ts +13 -0
- package/lib/src/convert/convertContext/convertContext.js +27 -0
- package/lib/src/convert/convertContext/convertContext.js.map +1 -0
- package/lib/src/convert/convertContext/decompositionFinalizer.d.ts +19 -0
- package/lib/src/convert/convertContext/decompositionFinalizer.js +27 -0
- package/lib/src/convert/convertContext/decompositionFinalizer.js.map +1 -0
- package/lib/src/convert/convertContext/nonDecompositionFinalizer.d.ts +42 -0
- package/lib/src/convert/convertContext/nonDecompositionFinalizer.js +167 -0
- package/lib/src/convert/convertContext/nonDecompositionFinalizer.js.map +1 -0
- package/lib/src/convert/convertContext/recompositionFinalizer.d.ts +29 -0
- package/lib/src/convert/convertContext/recompositionFinalizer.js +122 -0
- package/lib/src/convert/convertContext/recompositionFinalizer.js.map +1 -0
- package/lib/src/convert/convertContext/transactionFinalizer.d.ts +5 -0
- package/lib/src/convert/convertContext/transactionFinalizer.js +7 -0
- package/lib/src/convert/convertContext/transactionFinalizer.js.map +1 -0
- package/lib/src/convert/metadataConverter.d.ts +3 -3
- package/lib/src/convert/metadataConverter.js +37 -27
- package/lib/src/convert/metadataConverter.js.map +1 -1
- package/lib/src/convert/replacements.d.ts +1 -1
- package/lib/src/convert/streams.d.ts +10 -8
- package/lib/src/convert/streams.js +40 -31
- package/lib/src/convert/streams.js.map +1 -1
- package/lib/src/convert/transformers/baseMetadataTransformer.d.ts +3 -3
- package/lib/src/convert/transformers/baseMetadataTransformer.js +3 -3
- package/lib/src/convert/transformers/baseMetadataTransformer.js.map +1 -1
- package/lib/src/convert/transformers/decomposedMetadataTransformer.d.ts +2 -10
- package/lib/src/convert/transformers/decomposedMetadataTransformer.js +172 -164
- package/lib/src/convert/transformers/decomposedMetadataTransformer.js.map +1 -1
- package/lib/src/convert/transformers/defaultMetadataTransformer.d.ts +1 -1
- package/lib/src/convert/transformers/defaultMetadataTransformer.js +9 -9
- package/lib/src/convert/transformers/defaultMetadataTransformer.js.map +1 -1
- package/lib/src/convert/transformers/metadataTransformerFactory.d.ts +2 -2
- package/lib/src/convert/transformers/metadataTransformerFactory.js +1 -1
- package/lib/src/convert/transformers/metadataTransformerFactory.js.map +1 -1
- package/lib/src/convert/transformers/nonDecomposedMetadataTransformer.d.ts +1 -1
- package/lib/src/convert/transformers/nonDecomposedMetadataTransformer.js +7 -7
- package/lib/src/convert/transformers/nonDecomposedMetadataTransformer.js.map +1 -1
- package/lib/src/convert/transformers/staticResourceMetadataTransformer.d.ts +2 -2
- package/lib/src/convert/transformers/staticResourceMetadataTransformer.js +4 -4
- package/lib/src/convert/transformers/staticResourceMetadataTransformer.js.map +1 -1
- package/lib/src/convert/types.d.ts +13 -1
- package/lib/src/registry/coverage.js +10 -10
- package/lib/src/registry/coverage.js.map +1 -1
- package/lib/src/registry/presets/decomposeCustomLabelsBeta.json +43 -0
- package/lib/src/registry/presets/decomposePermissionSetBeta.json +186 -0
- package/lib/src/registry/presets/decomposeSharingRulesBeta.json +81 -0
- package/lib/src/registry/presets/decomposeWorkflowBeta.json +103 -0
- package/lib/src/registry/registry.d.ts +1 -1
- package/lib/src/registry/registry.js +2 -2
- package/lib/src/registry/registry.js.map +1 -1
- package/lib/src/registry/registryAccess.d.ts +2 -1
- package/lib/src/registry/registryAccess.js +6 -3
- package/lib/src/registry/registryAccess.js.map +1 -1
- package/lib/src/registry/standardvalueset.js +2 -2
- package/lib/src/registry/standardvalueset.js.map +1 -1
- package/lib/src/registry/types.d.ts +1 -1
- package/lib/src/registry/variants.d.ts +12 -0
- package/lib/src/registry/variants.js +71 -0
- package/lib/src/registry/variants.js.map +1 -0
- package/lib/src/resolve/adapters/baseSourceAdapter.d.ts +3 -13
- package/lib/src/resolve/adapters/baseSourceAdapter.js +61 -61
- package/lib/src/resolve/adapters/baseSourceAdapter.js.map +1 -1
- package/lib/src/resolve/adapters/bundleSourceAdapter.d.ts +1 -1
- package/lib/src/resolve/adapters/decomposedSourceAdapter.d.ts +2 -2
- package/lib/src/resolve/adapters/decomposedSourceAdapter.js +13 -12
- package/lib/src/resolve/adapters/decomposedSourceAdapter.js.map +1 -1
- package/lib/src/resolve/adapters/defaultSourceAdapter.d.ts +1 -1
- package/lib/src/resolve/adapters/digitalExperienceSourceAdapter.d.ts +2 -2
- package/lib/src/resolve/adapters/digitalExperienceSourceAdapter.js +10 -10
- package/lib/src/resolve/adapters/digitalExperienceSourceAdapter.js.map +1 -1
- package/lib/src/resolve/adapters/matchingContentSourceAdapter.d.ts +1 -2
- package/lib/src/resolve/adapters/matchingContentSourceAdapter.js +4 -7
- package/lib/src/resolve/adapters/matchingContentSourceAdapter.js.map +1 -1
- package/lib/src/resolve/adapters/mixedContentSourceAdapter.d.ts +1 -1
- package/lib/src/resolve/adapters/sourceAdapterFactory.d.ts +2 -1
- package/lib/src/resolve/adapters/sourceAdapterFactory.js +6 -16
- package/lib/src/resolve/adapters/sourceAdapterFactory.js.map +1 -1
- package/lib/src/resolve/connectionResolver.d.ts +1 -1
- package/lib/src/resolve/connectionResolver.js +9 -16
- package/lib/src/resolve/connectionResolver.js.map +1 -1
- package/lib/src/resolve/forceIgnore.d.ts +1 -1
- package/lib/src/resolve/manifestResolver.d.ts +1 -1
- package/lib/src/resolve/manifestResolver.js +39 -35
- package/lib/src/resolve/manifestResolver.js.map +1 -1
- package/lib/src/resolve/metadataResolver.d.ts +2 -47
- package/lib/src/resolve/metadataResolver.js +206 -215
- package/lib/src/resolve/metadataResolver.js.map +1 -1
- package/lib/src/resolve/sourceComponent.d.ts +3 -4
- package/lib/src/resolve/sourceComponent.js +17 -42
- package/lib/src/resolve/sourceComponent.js.map +1 -1
- package/lib/src/resolve/treeContainers.js +5 -14
- package/lib/src/resolve/treeContainers.js.map +1 -1
- package/lib/src/resolve/types.d.ts +2 -2
- package/lib/src/utils/decomposed.d.ts +7 -0
- package/lib/src/utils/decomposed.js +19 -0
- package/lib/src/utils/decomposed.js.map +1 -0
- package/lib/src/utils/filePathGenerator.js +2 -2
- package/lib/src/utils/filePathGenerator.js.map +1 -1
- package/lib/src/utils/fileSystemHandler.d.ts +1 -1
- package/lib/src/utils/index.d.ts +1 -1
- package/lib/src/utils/index.js +2 -1
- package/lib/src/utils/index.js.map +1 -1
- package/lib/src/utils/path.d.ts +17 -2
- package/lib/src/utils/path.js +44 -1
- package/lib/src/utils/path.js.map +1 -1
- package/package.json +6 -9
- package/LICENSE +0 -29
- package/lib/src/convert/convertContext.d.ts +0 -92
- package/lib/src/convert/convertContext.js +0 -304
- package/lib/src/convert/convertContext.js.map +0 -1
- package/lib/src/convert/transformers/index.d.ts +0 -1
- package/lib/src/convert/transformers/index.js +0 -12
- package/lib/src/convert/transformers/index.js.map +0 -1
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DecomposedMetadataTransformer = void 0;
|
|
4
2
|
/*
|
|
5
3
|
* Copyright (c) 2020, salesforce.com, inc.
|
|
6
4
|
* All rights reserved.
|
|
7
5
|
* Licensed under the BSD 3-Clause license.
|
|
8
6
|
* For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
|
|
9
7
|
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.DecomposedMetadataTransformer = void 0;
|
|
10
10
|
const node_path_1 = require("node:path");
|
|
11
11
|
const ts_types_1 = require("@salesforce/ts-types");
|
|
12
12
|
const kit_1 = require("@salesforce/kit");
|
|
13
13
|
const core_1 = require("@salesforce/core");
|
|
14
|
+
const path_1 = require("../../utils/path");
|
|
15
|
+
const decomposed_1 = require("../../utils/decomposed");
|
|
14
16
|
const streams_1 = require("../streams");
|
|
15
|
-
const
|
|
16
|
-
const
|
|
17
|
+
const constants_1 = require("../../common/constants");
|
|
18
|
+
const componentSet_1 = require("../../collections/componentSet");
|
|
17
19
|
const baseMetadataTransformer_1 = require("./baseMetadataTransformer");
|
|
18
20
|
;
|
|
19
21
|
const messages = new core_1.Messages('@salesforce/source-deploy-retrieve', 'sdr', new Map([["md_request_fail", "Metadata API request failed: %s"], ["error_convert_invalid_format", "Invalid conversion format '%s'"], ["error_could_not_infer_type", "%s: Could not infer a metadata type"], ["error_unexpected_child_type", "Unexpected child metadata [%s] found for parent type [%s]"], ["noParent", "Could not find parent type for %s (%s)"], ["error_expected_source_files", "%s: Expected source files for type '%s'"], ["error_failed_convert", "Component conversion failed: %s"], ["error_merge_metadata_target_unsupported", "Merge convert for metadata target format currently unsupported"], ["error_missing_adapter", "Missing adapter '%s' for metadata type '%s'"], ["error_missing_transformer", "Missing transformer '%s' for metadata type '%s'"], ["error_missing_type_definition", "Missing metadata type definition in registry for id '%s'."], ["error_missing_child_type_definition", "Type %s does not have a child type definition %s."], ["noChildTypes", "No child types found in registry for %s (reading %s at %s)"], ["error_no_metadata_xml_ignore", "Metadata xml file %s is forceignored but is required for %s."], ["noSourceIgnore", "%s metadata types require source files, but %s is forceignored."], ["noSourceIgnore.actions", "- Metadata types with content are composed of two files: a content file (ie MyApexClass.cls) and a -meta.xml file (i.e MyApexClass.cls-meta.xml). You must include both files in your .forceignore file. Or try appending \u201C\\*\u201D to your existing .forceignore entry.\n\nSee <https://developer.salesforce.com/docs/atlas.en-us.sfdx_dev.meta/sfdx_dev/sfdx_dev_exclude_source.htm> for examples"], ["error_path_not_found", "%s: File or folder not found"], ["noContentFound", "SourceComponent %s (metadata type = %s) is missing its content file."], ["noContentFound.actions", ["Ensure the content file exists in the expected location.", "If the content file is in your .forceignore file, ensure the meta-xml file is also ignored to completely exclude it."]], ["error_parsing_xml", "SourceComponent %s (metadata type = %s) does not have an associated metadata xml to parse"], ["error_expected_file_path", "%s: path is to a directory, expected a file"], ["error_expected_directory_path", "%s: path is to a file, expected a directory"], ["error_directory_not_found_or_not_directory", "%s: path is not a directory"], ["error_no_directory_stream", "%s doesn't support readable streams on directories."], ["error_no_source_to_deploy", "No source-backed components present in the package."], ["error_no_components_to_retrieve", "No components in the package to retrieve."], ["error_static_resource_expected_archive_type", "A StaticResource directory must have a content type of application/zip or application/jar - found %s for %s."], ["error_static_resource_missing_resource_file", "A StaticResource must have an associated .resource file, missing %s.resource-meta.xml"], ["error_no_job_id", "The %s operation is missing a job ID. Initialize an operation with an ID, or start a new job."], ["missingApiVersion", "Could not determine an API version to use for the generated manifest. Tried looking for sourceApiVersion in sfdx-project.json, apiVersion from config vars, and the highest apiVersion from the APEX REST endpoint. Using API version 58.0 as a last resort."], ["invalid_xml_parsing", "error parsing %s due to:\\n message: %s\\n line: %s\\n code: %s"], ["zipBufferError", "Zip buffer was not created during conversion"], ["undefinedComponentSet", "Unable to construct a componentSet. Check the logs for more information."], ["replacementsFileNotRead", "The file \"%s\" specified in the \"replacements\" property of sfdx-project.json could not be read."], ["unsupportedBundleType", "Unsupported Bundle Type: %s"], ["filePathGeneratorNoTypeSupport", "Type not supported for filepath generation: %s"], ["missingFolderType", "The registry has %s as is inFolder but it does not have a folderType"], ["tooManyFiles", "Multiple files found for path: %s."], ["cantGetName", "Unable to calculate fullName from path: %s (%s)"], ["missingMetaFileSuffix", "The metadata registry is configured incorrectly for %s. Expected a metaFileSuffix."], ["uniqueIdElementNotInRegistry", "No uniqueIdElement found in registry for %s (reading %s at %s)."], ["uniqueIdElementNotInChild", "The uniqueIdElement %s was not found the child (reading %s at %s)."], ["suggest_type_header", "A metadata type lookup for \"%s\" found the following close matches:"], ["suggest_type_did_you_mean", "-- Did you mean \".%s%s\" instead for the \"%s\" metadata type?"], ["suggest_type_more_suggestions", "Additional suggestions:\nConfirm the file name, extension, and directory names are correct. Validate against the registry at:\n<https://github.com/forcedotcom/source-deploy-retrieve/blob/main/src/registry/metadataRegistry.json>\n\nIf the type is not listed in the registry, check that it has Metadata API support via the Metadata Coverage Report:\n<https://developer.salesforce.com/docs/metadata-coverage>\n\nIf the type is available via Metadata API but not in the registry\n\n- Open an issue <https://github.com/forcedotcom/cli/issues>\n- Add the type via PR. Instructions: <https://github.com/forcedotcom/source-deploy-retrieve/blob/main/contributing/metadata.md>"]]));
|
|
@@ -24,7 +26,7 @@ class DecomposedMetadataTransformer extends baseMetadataTransformer_1.BaseMetada
|
|
|
24
26
|
const { fullName: parentName } = component.parent;
|
|
25
27
|
const stateForParent = this.context.recomposition.transactionState.get(parentName) ?? {
|
|
26
28
|
component: component.parent,
|
|
27
|
-
children: new
|
|
29
|
+
children: new componentSet_1.ComponentSet([], this.registry),
|
|
28
30
|
};
|
|
29
31
|
stateForParent.children?.add(component);
|
|
30
32
|
this.context.recomposition.transactionState.set(parentName, stateForParent);
|
|
@@ -33,7 +35,7 @@ class DecomposedMetadataTransformer extends baseMetadataTransformer_1.BaseMetada
|
|
|
33
35
|
const { fullName } = component;
|
|
34
36
|
const existing = this.context.recomposition.transactionState.get(fullName) ?? {
|
|
35
37
|
component,
|
|
36
|
-
children: new
|
|
38
|
+
children: new componentSet_1.ComponentSet([], this.registry),
|
|
37
39
|
};
|
|
38
40
|
(component.getChildren() ?? []).map((child) => {
|
|
39
41
|
existing.children?.add(child);
|
|
@@ -43,183 +45,189 @@ class DecomposedMetadataTransformer extends baseMetadataTransformer_1.BaseMetada
|
|
|
43
45
|
// noop since the finalizer will push the writes to the component writer
|
|
44
46
|
return [];
|
|
45
47
|
}
|
|
46
|
-
// eslint-disable-next-line complexity
|
|
47
48
|
async toSourceFormat(component, mergeWith) {
|
|
48
|
-
const outputFile = mergeWith?.xml ?? getDefaultOutput(component);
|
|
49
49
|
const forceIgnore = component.getForceIgnore();
|
|
50
50
|
// if the whole parent is ignored, we won't worry about decomposing things
|
|
51
51
|
// this can happen if the manifest had a *; all the members will be retrieved.
|
|
52
|
-
if (forceIgnore.denies(
|
|
52
|
+
if (forceIgnore.denies(getOutputFile(component, mergeWith))) {
|
|
53
53
|
return [];
|
|
54
54
|
}
|
|
55
|
-
const
|
|
56
|
-
const childrenOfMergeComponent = new collections_1.ComponentSet(mergeWith?.getChildren());
|
|
57
|
-
const { type, fullName: parentFullName } = component;
|
|
58
|
-
let parentXmlObject;
|
|
55
|
+
const childrenOfMergeComponent = new componentSet_1.ComponentSet(mergeWith?.getChildren(), this.registry);
|
|
59
56
|
const composedMetadata = await getComposedMetadataEntries(component);
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
CustomObjectFieldTranslations are only addressable through their parent, and require a
|
|
89
|
-
CustomObjectTranslation file to be present
|
|
90
|
-
*/
|
|
91
|
-
if (childType.unaddressableWithoutParent && composedMetadata.length <= 2) {
|
|
92
|
-
parentXmlObject = {
|
|
93
|
-
[component.type.name]: '',
|
|
94
|
-
};
|
|
95
|
-
this.setDecomposedState(childComponent, {
|
|
96
|
-
foundMerge: false,
|
|
97
|
-
writeInfo: {
|
|
98
|
-
source: new streams_1.JsToXml(parentXmlObject),
|
|
99
|
-
output: getDefaultOutput(component),
|
|
100
|
-
},
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
// if there's nothing to merge with, push write operation now to default location
|
|
104
|
-
if (!mergeWith) {
|
|
105
|
-
writeInfos.push({
|
|
106
|
-
source,
|
|
107
|
-
output: getDefaultOutput(childComponent),
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
// if the merge parent has a child that can be merged with, push write
|
|
111
|
-
// operation now and mark it as merged in the state
|
|
112
|
-
else if (childrenOfMergeComponent.has(childComponent)) {
|
|
113
|
-
const mergeChild = childrenOfMergeComponent.getSourceComponents(childComponent).first();
|
|
114
|
-
if (!mergeChild?.xml) {
|
|
115
|
-
throw messages.createError('error_parsing_xml', [childComponent.fullName, childComponent.type.name]);
|
|
116
|
-
}
|
|
117
|
-
writeInfos.push({
|
|
118
|
-
source,
|
|
119
|
-
output: mergeChild.xml,
|
|
120
|
-
});
|
|
121
|
-
this.setDecomposedState(childComponent, { foundMerge: true });
|
|
122
|
-
}
|
|
123
|
-
// If we have a parent and the child is unaddressable without the parent, keep them
|
|
124
|
-
// together on the file system, meaning a new child will not be written to the default dir.
|
|
125
|
-
else if (childType.unaddressableWithoutParent) {
|
|
126
|
-
// get output path from parent
|
|
127
|
-
const childFileName = `${entryName}.${childComponent.type.suffix}${common_1.META_XML_SUFFIX}`;
|
|
128
|
-
const output = (0, node_path_1.join)((0, node_path_1.dirname)(mergeWith.xml), childFileName);
|
|
129
|
-
writeInfos.push({ source, output });
|
|
130
|
-
}
|
|
131
|
-
// if no child component is found to merge with yet, mark it as so in
|
|
132
|
-
// the state
|
|
133
|
-
else if (!this.getDecomposedState(childComponent)?.foundMerge) {
|
|
134
|
-
this.setDecomposedState(childComponent, {
|
|
135
|
-
foundMerge: false,
|
|
136
|
-
writeInfo: {
|
|
137
|
-
source,
|
|
138
|
-
output: getDefaultOutput(childComponent),
|
|
139
|
-
},
|
|
140
|
-
});
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
else if (tagKey !== common_1.XML_NS_KEY) {
|
|
146
|
-
// tag entry isn't a child type, so add it to the parent xml
|
|
147
|
-
if (!parentXmlObject) {
|
|
148
|
-
parentXmlObject = { [type.name]: { [common_1.XML_NS_KEY]: common_1.XML_NS_URL } };
|
|
149
|
-
}
|
|
150
|
-
const tagGroup = parentXmlObject[type.name];
|
|
151
|
-
tagGroup[tagKey] = tagValue;
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
const parentState = this.getDecomposedState(component);
|
|
155
|
-
if (!parentState && parentXmlObject) {
|
|
156
|
-
const parentSource = new streams_1.JsToXml(parentXmlObject);
|
|
157
|
-
if (!mergeWith) {
|
|
158
|
-
writeInfos.push({
|
|
159
|
-
source: parentSource,
|
|
160
|
-
output: outputFile,
|
|
161
|
-
});
|
|
162
|
-
}
|
|
163
|
-
else if (mergeWith.xml) {
|
|
164
|
-
writeInfos.push({
|
|
165
|
-
source: parentSource,
|
|
166
|
-
output: outputFile,
|
|
167
|
-
});
|
|
168
|
-
this.setDecomposedState(component, { foundMerge: true });
|
|
169
|
-
}
|
|
170
|
-
else {
|
|
171
|
-
this.setDecomposedState(component, {
|
|
172
|
-
foundMerge: false,
|
|
173
|
-
writeInfo: {
|
|
174
|
-
source: parentSource,
|
|
175
|
-
output: outputFile,
|
|
176
|
-
},
|
|
177
|
-
});
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
return writeInfos;
|
|
57
|
+
const parentXmlObject = buildParentXml(component.type)(composedMetadata);
|
|
58
|
+
const stateSetter = setDecomposedState(this.context.decomposition.transactionState);
|
|
59
|
+
const writeInfosForChildren = composedMetadata
|
|
60
|
+
.filter(hasChildTypeId)
|
|
61
|
+
.map(addChildType)
|
|
62
|
+
.flatMap(({ tagValue, childType }) =>
|
|
63
|
+
// iterate each array member if it's Object-like (ex: customField of a CustomObject)
|
|
64
|
+
(0, kit_1.ensureArray)(tagValue)
|
|
65
|
+
.filter(ts_types_1.isJsonMap)
|
|
66
|
+
.map(toInfoContainer(mergeWith)(component)(childType))
|
|
67
|
+
.filter(forceIgnoreAllowsComponent(forceIgnore)) // only process child types that aren't forceignored
|
|
68
|
+
.map(handleUnaddressableChildAlone(composedMetadata.length)(parentXmlObject)(stateSetter))
|
|
69
|
+
.flatMap(getChildWriteInfos(stateSetter)(childrenOfMergeComponent)));
|
|
70
|
+
const writeInfoForParent = mergeWith
|
|
71
|
+
? getWriteInfosFromMerge(mergeWith)(stateSetter)(parentXmlObject)(component)
|
|
72
|
+
: [{ source: new streams_1.JsToXml(parentXmlObject), output: getOutputFile(component) }];
|
|
73
|
+
const childDestinations = new Set(writeInfosForChildren.map((w) => w.output));
|
|
74
|
+
// files that exist in FS (therefore, in mergeWith) but aren't in the component should be deleted by returning a writeInfo
|
|
75
|
+
// only do this if all the children have isAddressable marked false
|
|
76
|
+
const writeInfosForMissingChildrenToDelete = mergeWith && allChildrenAreUnaddressable(component.type)
|
|
77
|
+
? childrenOfMergeComponent
|
|
78
|
+
.getSourceComponents()
|
|
79
|
+
.toArray()
|
|
80
|
+
.filter(hasXml)
|
|
81
|
+
.filter((c) => !childDestinations.has(c.xml))
|
|
82
|
+
.map((c) => ({ shouldDelete: true, output: c.xml, fullName: c.fullName, type: c.type.name }))
|
|
83
|
+
: [];
|
|
84
|
+
return [...writeInfosForChildren, ...writeInfoForParent, ...writeInfosForMissingChildrenToDelete];
|
|
181
85
|
}
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
86
|
+
}
|
|
87
|
+
exports.DecomposedMetadataTransformer = DecomposedMetadataTransformer;
|
|
88
|
+
const hasXml = (c) => typeof c.xml === 'string';
|
|
89
|
+
const allChildrenAreUnaddressable = (type) => Object.values(type.children?.types ?? {}).every(
|
|
90
|
+
// exclude the COFT (unaddressableWithoutParent) from being deleted because its absence *might* not mean it was deleted from the org
|
|
91
|
+
(c) => c.isAddressable === false && c.unaddressableWithoutParent !== true);
|
|
92
|
+
/**
|
|
93
|
+
* composedMetadata is a representation of the parent's xml
|
|
94
|
+
*
|
|
95
|
+
* if there is no CustomObjectTranslation in the org, the composedMetadata will be 2 entries
|
|
96
|
+
* the xml declaration, and a fields attribute, which points to the child CustomObjectFieldTranslation
|
|
97
|
+
*
|
|
98
|
+
* because CustomObjectFieldTranslation is the only metadata type with 'requiresParent' = true we can
|
|
99
|
+
* calculate if a CustomObjectTranslation was retrieved from the org (composedMetadata.length > 2), or,
|
|
100
|
+
* if we'll have to write an empty CustomObjectTranslation file (composedMetadata.length <=2).
|
|
101
|
+
*
|
|
102
|
+
* CustomObjectFieldTranslations are only addressable through their parent, and require a
|
|
103
|
+
* CustomObjectTranslation file to be present
|
|
104
|
+
*/
|
|
105
|
+
const handleUnaddressableChildAlone = (composedMetadataLength) => (parentXmlObject) => (stateSetter) => (v) => {
|
|
106
|
+
if (v.childComponent.type.unaddressableWithoutParent && composedMetadataLength <= 2) {
|
|
107
|
+
stateSetter(v.childComponent, {
|
|
108
|
+
writeInfo: {
|
|
109
|
+
source: new streams_1.JsToXml(parentXmlObject),
|
|
110
|
+
output: getDefaultOutput(v.parentComponent),
|
|
111
|
+
},
|
|
194
112
|
});
|
|
195
113
|
}
|
|
196
|
-
|
|
197
|
-
|
|
114
|
+
return v;
|
|
115
|
+
};
|
|
116
|
+
const getChildWriteInfos = (stateSetter) => (childrenOfMergeComponent) => ({ mergeWith, childComponent, value, entryName }) => {
|
|
117
|
+
const source = objectToSource(childComponent.type.name)(value);
|
|
118
|
+
// if there's nothing to merge with, push write operation now to default location
|
|
119
|
+
if (!mergeWith) {
|
|
120
|
+
return [{ source, output: getDefaultOutput(childComponent) }];
|
|
198
121
|
}
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
const
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
122
|
+
// if the merge parent has a child that can be merged with, push write
|
|
123
|
+
// operation now and mark it as merged in the state
|
|
124
|
+
if (childrenOfMergeComponent.has(childComponent)) {
|
|
125
|
+
const mergeChild = childrenOfMergeComponent.getSourceComponents(childComponent).first();
|
|
126
|
+
if (!mergeChild?.xml) {
|
|
127
|
+
throw messages.createError('error_parsing_xml', [childComponent.fullName, childComponent.type.name]);
|
|
128
|
+
}
|
|
129
|
+
stateSetter(childComponent, { foundMerge: true });
|
|
130
|
+
return [{ source, output: mergeChild.xml }];
|
|
131
|
+
}
|
|
132
|
+
// If we have a parent and the child is unaddressable without the parent, keep them
|
|
133
|
+
// together on the file system, meaning a new child will not be written to the default dir.
|
|
134
|
+
if (childComponent.type.unaddressableWithoutParent && typeof mergeWith?.xml === 'string') {
|
|
135
|
+
// get output path from parent
|
|
136
|
+
return [
|
|
137
|
+
{
|
|
138
|
+
source,
|
|
139
|
+
output: (0, node_path_1.join)((0, node_path_1.dirname)(mergeWith.xml), `${entryName}.${childComponent.type.suffix}${constants_1.META_XML_SUFFIX}`),
|
|
140
|
+
},
|
|
141
|
+
];
|
|
142
|
+
}
|
|
143
|
+
// we didn't find a merge, so we add it to the state for later processing
|
|
144
|
+
stateSetter(childComponent, {
|
|
145
|
+
writeInfo: { source, output: getDefaultOutput(childComponent) },
|
|
146
|
+
});
|
|
147
|
+
return [];
|
|
148
|
+
};
|
|
149
|
+
const getWriteInfosFromMerge = (mergeWith) => (stateSetter) => (parentXmlObject) => (parentComponent) => {
|
|
150
|
+
const writeInfo = { source: new streams_1.JsToXml(parentXmlObject), output: getOutputFile(parentComponent, mergeWith) };
|
|
151
|
+
if (mergeWith?.xml) {
|
|
152
|
+
// mark the component as found
|
|
153
|
+
stateSetter(parentComponent, { foundMerge: true });
|
|
154
|
+
}
|
|
155
|
+
else if (objectHasSomeRealValues(parentComponent.type)(parentXmlObject)) {
|
|
156
|
+
// set the state but don't return any writeInfo to avoid writing "empty" (ns-only) parent files
|
|
157
|
+
stateSetter(parentComponent, { writeInfo });
|
|
158
|
+
}
|
|
159
|
+
return mergeWith.xml ? [writeInfo] : [];
|
|
206
160
|
};
|
|
161
|
+
/**
|
|
162
|
+
* Helper for setting the decomposed transaction state
|
|
163
|
+
*
|
|
164
|
+
* @param forComponent
|
|
165
|
+
* @param props
|
|
166
|
+
*/
|
|
167
|
+
const setDecomposedState = (state) => (forComponent, props) => {
|
|
168
|
+
const key = getKey(forComponent);
|
|
169
|
+
state.set(key, {
|
|
170
|
+
// origin gets set the first time
|
|
171
|
+
...(state.get(key) ?? { origin: forComponent.parent ?? forComponent }),
|
|
172
|
+
...(props ?? {}),
|
|
173
|
+
});
|
|
174
|
+
};
|
|
175
|
+
const getKey = (component) => `${component.type.name}#${component.fullName}`;
|
|
176
|
+
/** for a component, parse the xml and create an json object with contents, child typeId, etc */
|
|
177
|
+
const getComposedMetadataEntries = async (component) =>
|
|
178
|
+
// composedMetadata might be undefined if you call toSourceFormat() from a non-source-backed Component
|
|
179
|
+
Object.entries((await component.parseXml())[component.type.name] ?? {}).map(([tagKey, tagValue]) => ({
|
|
180
|
+
tagKey,
|
|
181
|
+
tagValue,
|
|
182
|
+
parentType: component.type,
|
|
183
|
+
childTypeId: tagToChildTypeId({ tagKey, type: component.type }),
|
|
184
|
+
}));
|
|
207
185
|
/** where the file goes if there's nothing to merge with */
|
|
208
186
|
const getDefaultOutput = (component) => {
|
|
209
187
|
const { parent, fullName, type } = component;
|
|
210
188
|
const [baseName, ...tail] = fullName.split('.');
|
|
211
189
|
// there could be a '.' inside the child name (ex: PermissionSet.FieldPermissions.field uses Obj__c.Field__c)
|
|
212
|
-
|
|
213
|
-
const
|
|
214
|
-
|
|
215
|
-
const output = (0, node_path_1.join)(parent?.type.strategies?.decomposition === "folderPerType" /* DecompositionStrategy.FolderPerType */ ? type.directoryName : '', `${childName ?? baseName}.${component.type.suffix}${common_1.META_XML_SUFFIX}`);
|
|
216
|
-
return (0, node_path_1.join)(baseComponent.getPackageRelativePath(baseName, 'source'), output);
|
|
190
|
+
const childName = tail.length ? tail.join('.') : undefined;
|
|
191
|
+
const output = (0, node_path_1.join)(parent?.type.strategies?.decomposition === "folderPerType" /* DecompositionStrategy.FolderPerType */ ? type.directoryName : '', `${childName ?? baseName}.${component.type.suffix}${constants_1.META_XML_SUFFIX}`);
|
|
192
|
+
return (0, node_path_1.join)((0, path_1.calculateRelativePath)('source')({ self: parent?.type ?? type })(fullName)(baseName), output);
|
|
217
193
|
};
|
|
218
|
-
/** handle wide-open reading of values from elements inside any metadata xml file.
|
|
219
|
-
* Return the value of the matching element if supplied, or defaults `fullName` then `name` */
|
|
220
|
-
const extractUniqueElementValue = (xml, elementName) => elementName ? (0, ts_types_1.getString)(xml, elementName) ?? getStandardElements(xml) : getStandardElements(xml);
|
|
221
|
-
const getStandardElements = (xml) => (0, ts_types_1.getString)(xml, 'fullName') ?? (0, ts_types_1.getString)(xml, 'name') ?? undefined;
|
|
222
194
|
/** use the given xmlElementName name if it exists, otherwise use see if one matches the directories */
|
|
223
195
|
const tagToChildTypeId = ({ tagKey, type }) => Object.values(type.children?.types ?? {}).find((c) => c.xmlElementName === tagKey)?.id ??
|
|
224
196
|
type.children?.directories?.[tagKey];
|
|
197
|
+
/** Ex: CustomObject: { '@_xmlns': 'http://soap.sforce.com/2006/04/metadata' } has no real values */
|
|
198
|
+
const objectHasSomeRealValues = (type) => (obj) => Object.keys(obj[type.name]).length > 1;
|
|
199
|
+
const hasChildTypeId = (cm) => !!cm.childTypeId;
|
|
200
|
+
const addChildType = (cm) => {
|
|
201
|
+
const childType = cm.parentType.children?.types[cm.childTypeId];
|
|
202
|
+
if (childType) {
|
|
203
|
+
return { ...cm, childType };
|
|
204
|
+
}
|
|
205
|
+
throw messages.createError('error_missing_child_type_definition', [cm.parentType.name, cm.childTypeId]);
|
|
206
|
+
};
|
|
207
|
+
/** returns an data structure with lots of context information in it */
|
|
208
|
+
const toInfoContainer = (mergeWith) => (parent) => (childType) => (tagValue) => {
|
|
209
|
+
const entryName = (0, ts_types_1.ensureString)((0, decomposed_1.extractUniqueElementValue)(tagValue, childType.uniqueIdElement));
|
|
210
|
+
return {
|
|
211
|
+
parentComponent: parent,
|
|
212
|
+
entryName,
|
|
213
|
+
childComponent: {
|
|
214
|
+
fullName: `${parent.fullName}.${entryName}`,
|
|
215
|
+
type: childType,
|
|
216
|
+
parent,
|
|
217
|
+
},
|
|
218
|
+
value: tagValue,
|
|
219
|
+
mergeWith,
|
|
220
|
+
};
|
|
221
|
+
};
|
|
222
|
+
const forceIgnoreAllowsComponent = (forceIgnore) => (ic) => forceIgnore.accepts(getDefaultOutput(ic.childComponent));
|
|
223
|
+
/** wrap some xml in the Metadata type and add the NS stuff */
|
|
224
|
+
const objectToSource = (childTypeName) => (obj) => new streams_1.JsToXml({ [childTypeName]: { [constants_1.XML_NS_KEY]: constants_1.XML_NS_URL, ...obj } });
|
|
225
|
+
/** filter out the children and create the remaining parentXml */
|
|
226
|
+
const buildParentXml = (parentType) => (c) => ({
|
|
227
|
+
[parentType.name]: {
|
|
228
|
+
[constants_1.XML_NS_KEY]: constants_1.XML_NS_URL,
|
|
229
|
+
...Object.fromEntries(c.filter((v) => v.childTypeId === undefined).map(({ tagKey, tagValue }) => [tagKey, tagValue])),
|
|
230
|
+
},
|
|
231
|
+
});
|
|
232
|
+
const getOutputFile = (component, mergeWith) => mergeWith?.xml ?? getDefaultOutput(component);
|
|
225
233
|
//# sourceMappingURL=decomposedMetadataTransformer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decomposedMetadataTransformer.js","sourceRoot":"","sources":["../../../../src/convert/transformers/decomposedMetadataTransformer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"decomposedMetadataTransformer.js","sourceRoot":"","sources":["../../../../src/convert/transformers/decomposedMetadataTransformer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { WriteInfo } from '../types';
|
|
2
|
-
import { SourceComponent } from '../../resolve';
|
|
2
|
+
import { SourceComponent } from '../../resolve/sourceComponent';
|
|
3
3
|
import { BaseMetadataTransformer } from './baseMetadataTransformer';
|
|
4
4
|
/**
|
|
5
5
|
* The default metadata transformer.
|
|
@@ -9,11 +9,11 @@ exports.DefaultMetadataTransformer = void 0;
|
|
|
9
9
|
*/
|
|
10
10
|
const node_path_1 = require("node:path");
|
|
11
11
|
const core_1 = require("@salesforce/core");
|
|
12
|
-
const
|
|
13
|
-
const
|
|
12
|
+
const constants_1 = require("../../common/constants");
|
|
13
|
+
const path_1 = require("../../utils/path");
|
|
14
14
|
const replacements_1 = require("../replacements");
|
|
15
15
|
const baseMetadataTransformer_1 = require("./baseMetadataTransformer");
|
|
16
|
-
const ORIGINAL_SUFFIX_REGEX = new RegExp('(.)([a-zA-Z]+)(' +
|
|
16
|
+
const ORIGINAL_SUFFIX_REGEX = new RegExp('(.)([a-zA-Z]+)(' + constants_1.META_XML_SUFFIX + ')$');
|
|
17
17
|
/**
|
|
18
18
|
* The default metadata transformer.
|
|
19
19
|
*
|
|
@@ -50,7 +50,7 @@ const getWriteInfos = (component, targetFormat, mergeWith) => component
|
|
|
50
50
|
const getContentSourceDestination = (source, targetFormat, component, mergeWith) => {
|
|
51
51
|
if (mergeWith?.content) {
|
|
52
52
|
if (component.content && component.tree.isDirectory(component.content)) {
|
|
53
|
-
const relative = (0,
|
|
53
|
+
const relative = (0, path_1.trimUntil)(source, (0, node_path_1.basename)(component.content));
|
|
54
54
|
return (0, node_path_1.join)((0, node_path_1.dirname)(mergeWith.content), relative);
|
|
55
55
|
}
|
|
56
56
|
return mergeWith.content;
|
|
@@ -78,20 +78,20 @@ const getXmlDestination = (targetFormat, component, mergeWith) => {
|
|
|
78
78
|
if (targetFormat === 'metadata') {
|
|
79
79
|
xmlDestination = folderContentType
|
|
80
80
|
? xmlDestination.replace(`.${suffix}`, '')
|
|
81
|
-
: xmlDestination.slice(0, xmlDestination.lastIndexOf(
|
|
81
|
+
: xmlDestination.slice(0, xmlDestination.lastIndexOf(constants_1.META_XML_SUFFIX));
|
|
82
82
|
}
|
|
83
83
|
else {
|
|
84
84
|
xmlDestination = folderContentType
|
|
85
|
-
? xmlDestination.replace(
|
|
86
|
-
: `${xmlDestination}${
|
|
85
|
+
? xmlDestination.replace(constants_1.META_XML_SUFFIX, `.${suffix}${constants_1.META_XML_SUFFIX}`)
|
|
86
|
+
: `${xmlDestination}${constants_1.META_XML_SUFFIX}`;
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
89
|
else if (suffix) {
|
|
90
90
|
if (component.type.name === 'Document' && targetFormat === 'metadata' && component.content) {
|
|
91
|
-
xmlDestination = xmlDestination.replace(new RegExp('.' + suffix +
|
|
91
|
+
xmlDestination = xmlDestination.replace(new RegExp('.' + suffix + constants_1.META_XML_SUFFIX + '$'), '.' + (0, path_1.extName)(component.content) + constants_1.META_XML_SUFFIX);
|
|
92
92
|
}
|
|
93
93
|
else {
|
|
94
|
-
xmlDestination = xmlDestination.replace(ORIGINAL_SUFFIX_REGEX, '.' + suffix +
|
|
94
|
+
xmlDestination = xmlDestination.replace(ORIGINAL_SUFFIX_REGEX, '.' + suffix + constants_1.META_XML_SUFFIX);
|
|
95
95
|
}
|
|
96
96
|
}
|
|
97
97
|
if (legacySuffix && suffix && xmlDestination.includes(legacySuffix)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaultMetadataTransformer.js","sourceRoot":"","sources":["../../../../src/convert/transformers/defaultMetadataTransformer.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,yCAAoD;AACpD,2CAA4C;
|
|
1
|
+
{"version":3,"file":"defaultMetadataTransformer.js","sourceRoot":"","sources":["../../../../src/convert/transformers/defaultMetadataTransformer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { MetadataTransformer } from '../types';
|
|
2
2
|
import { SourceComponent } from '../../resolve/sourceComponent';
|
|
3
|
-
import { ConvertContext } from '../convertContext';
|
|
4
|
-
import { RegistryAccess } from '../../registry';
|
|
3
|
+
import { ConvertContext } from '../convertContext/convertContext';
|
|
4
|
+
import { RegistryAccess } from '../../registry/registryAccess';
|
|
5
5
|
export declare class MetadataTransformerFactory {
|
|
6
6
|
private registry;
|
|
7
7
|
private context;
|
|
@@ -8,7 +8,7 @@ exports.MetadataTransformerFactory = void 0;
|
|
|
8
8
|
* For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
|
|
9
9
|
*/
|
|
10
10
|
const core_1 = require("@salesforce/core");
|
|
11
|
-
const convertContext_1 = require("../convertContext");
|
|
11
|
+
const convertContext_1 = require("../convertContext/convertContext");
|
|
12
12
|
const defaultMetadataTransformer_1 = require("./defaultMetadataTransformer");
|
|
13
13
|
const decomposedMetadataTransformer_1 = require("./decomposedMetadataTransformer");
|
|
14
14
|
const staticResourceMetadataTransformer_1 = require("./staticResourceMetadataTransformer");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadataTransformerFactory.js","sourceRoot":"","sources":["../../../../src/convert/transformers/metadataTransformerFactory.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,2CAA4C;AAG5C,
|
|
1
|
+
{"version":3,"file":"metadataTransformerFactory.js","sourceRoot":"","sources":["../../../../src/convert/transformers/metadataTransformerFactory.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,2CAA4C;AAG5C,qEAAkE;AAGlE,6EAA0E;AAC1E,mFAAgF;AAChF,2FAAwF;AACxF,yFAAsF;;AAGtF,MAAM,QAAQ,OAAG,eAAQ,CAAc,oCAAoC,EAAE,KAAK,6pKAAC,CAAC;AAEpF,MAAa,0BAA0B;IAIrC,YAAmB,QAAwB,EAAE,OAAO,GAAG,IAAI,+BAAc,EAAE;QACzE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAEM,cAAc,CAAC,SAA0B;QAC9C,oEAAoE;QACpE,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC;QACvE,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC;QACnD,QAAQ,aAAa,EAAE,CAAC;YACtB,mDAAkC;YAClC,KAAK,SAAS;gBACZ,OAAO,IAAI,uDAA0B,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACrE;gBACE,OAAO,IAAI,6DAA6B,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACxE;gBACE,OAAO,IAAI,qEAAiC,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5E;gBACE,OAAO,IAAI,mEAAgC,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3E;gBACE,MAAM,QAAQ,CAAC,WAAW,CAAC,2BAA2B,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC;QACxF,CAAC;IACH,CAAC;CACF;AA3BD,gEA2BC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { WriteInfo } from '../types';
|
|
2
|
-
import { SourceComponent } from '../../resolve';
|
|
2
|
+
import { SourceComponent } from '../../resolve/sourceComponent';
|
|
3
3
|
import { DecomposedMetadataTransformer } from './decomposedMetadataTransformer';
|
|
4
4
|
/**
|
|
5
5
|
* Metadata Transformer for metadata types with children types that are NOT decomposed into separate files.
|
|
@@ -33,15 +33,15 @@ class NonDecomposedMetadataTransformer extends decomposedMetadataTransformer_1.D
|
|
|
33
33
|
// presumes they only have 1 child!
|
|
34
34
|
const [childTypeId] = Object.keys(component.type.children.types);
|
|
35
35
|
const { uniqueIdElement } = component.type.children.types[childTypeId];
|
|
36
|
+
if (!uniqueIdElement) {
|
|
37
|
+
throw messages.createError('uniqueIdElementNotInRegistry', [
|
|
38
|
+
component.type.name,
|
|
39
|
+
component.fullName,
|
|
40
|
+
component.xml,
|
|
41
|
+
]);
|
|
42
|
+
}
|
|
36
43
|
this.context.nonDecomposition.transactionState.exampleComponent ??= component;
|
|
37
44
|
incomingChildrenXml.map((child) => {
|
|
38
|
-
if (!uniqueIdElement) {
|
|
39
|
-
throw messages.createError('uniqueIdElementNotInRegistry', [
|
|
40
|
-
component.type.name,
|
|
41
|
-
component.fullName,
|
|
42
|
-
component.xml,
|
|
43
|
-
]);
|
|
44
|
-
}
|
|
45
45
|
const childName = (0, ts_types_1.getString)(child, uniqueIdElement);
|
|
46
46
|
if (!childName) {
|
|
47
47
|
throw messages.createError('uniqueIdElementNotInChild', [uniqueIdElement, component.fullName, component.xml]);
|