@salesforce/source-deploy-retrieve 10.5.6 → 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 +5 -8
- 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
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NonDecompositionFinalizer = void 0;
|
|
4
|
+
/*
|
|
5
|
+
* Copyright (c) 2023, salesforce.com, inc.
|
|
6
|
+
* All rights reserved.
|
|
7
|
+
* Licensed under the BSD 3-Clause license.
|
|
8
|
+
* For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
|
|
9
|
+
*/
|
|
10
|
+
const node_path_1 = require("node:path");
|
|
11
|
+
const ts_types_1 = require("@salesforce/ts-types");
|
|
12
|
+
const core_1 = require("@salesforce/core");
|
|
13
|
+
const decomposed_1 = require("../../utils/decomposed");
|
|
14
|
+
const constants_1 = require("../../common/constants");
|
|
15
|
+
const componentSet_1 = require("../../collections/componentSet");
|
|
16
|
+
const treeContainers_1 = require("../../resolve/treeContainers");
|
|
17
|
+
const streams_1 = require("../streams");
|
|
18
|
+
const transactionFinalizer_1 = require("./transactionFinalizer");
|
|
19
|
+
/**
|
|
20
|
+
* Merges child components that share the same parent in the conversion pipeline
|
|
21
|
+
* into a single file.
|
|
22
|
+
*
|
|
23
|
+
* Inserts unclaimed child components into the parent that belongs to the default package
|
|
24
|
+
*/
|
|
25
|
+
class NonDecompositionFinalizer extends transactionFinalizer_1.ConvertTransactionFinalizer {
|
|
26
|
+
constructor() {
|
|
27
|
+
super(...arguments);
|
|
28
|
+
this.transactionState = {
|
|
29
|
+
childrenByUniqueElement: new Map(),
|
|
30
|
+
exampleComponent: undefined,
|
|
31
|
+
};
|
|
32
|
+
// filename => (childName => childXml)
|
|
33
|
+
this.mergeMap = new Map();
|
|
34
|
+
// filename => sourceComponent
|
|
35
|
+
this.parentComponentMap = new Map();
|
|
36
|
+
}
|
|
37
|
+
async finalize(defaultDirectory, tree = new treeContainers_1.NodeFSTreeContainer()) {
|
|
38
|
+
const writerData = [];
|
|
39
|
+
if (this.transactionState.childrenByUniqueElement.size === 0) {
|
|
40
|
+
return writerData;
|
|
41
|
+
}
|
|
42
|
+
this.tree = tree;
|
|
43
|
+
const packageDirectories = core_1.SfProject.getInstance(defaultDirectory).getPackageDirectories();
|
|
44
|
+
const pkgPaths = packageDirectories.map((pkg) => pkg.fullPath);
|
|
45
|
+
// nondecomposed metadata types can exist in multiple locations under the same name
|
|
46
|
+
// so we have to find all components that could potentially match inbound components
|
|
47
|
+
if (!this.transactionState.exampleComponent) {
|
|
48
|
+
throw new Error('No example component exists in the transaction state for nondecomposed metadata');
|
|
49
|
+
}
|
|
50
|
+
const allNonDecomposed = pkgPaths.includes(defaultDirectory)
|
|
51
|
+
? this.getAllComponentsOfType(pkgPaths, this.transactionState.exampleComponent.type.name)
|
|
52
|
+
: // defaultDirectory isn't a package, assume it's the target output dir for conversion so don't scan folder
|
|
53
|
+
[];
|
|
54
|
+
// prepare 3 maps to simplify component merging
|
|
55
|
+
await this.initMergeMap(allNonDecomposed);
|
|
56
|
+
this.parentComponentMap = new Map(allNonDecomposed.map((c) => [(0, ts_types_1.ensureString)(c.xml, `no xml file path for ${c.fullName}`), c]));
|
|
57
|
+
const childNameToParentFilePath = this.initChildMapping();
|
|
58
|
+
// we'll merge any new labels into the default location
|
|
59
|
+
const defaultKey = (0, node_path_1.join)(defaultDirectory, getDefaultOutput(this.transactionState.exampleComponent));
|
|
60
|
+
this.ensureDefaults(defaultKey);
|
|
61
|
+
// put the incoming components into the mergeMap. Keep track of any files we need to write
|
|
62
|
+
const filesToWrite = new Set();
|
|
63
|
+
this.transactionState.childrenByUniqueElement.forEach((child, childUniqueElement) => {
|
|
64
|
+
const parentKey = childNameToParentFilePath.get(childUniqueElement) ?? defaultKey;
|
|
65
|
+
const parentItemMap = this.mergeMap.get(parentKey);
|
|
66
|
+
parentItemMap?.set(childUniqueElement, child);
|
|
67
|
+
filesToWrite.add(parentKey);
|
|
68
|
+
});
|
|
69
|
+
// use the mergeMap to return the writables
|
|
70
|
+
this.mergeMap.forEach((children, parentKey) => {
|
|
71
|
+
if (filesToWrite.has(parentKey)) {
|
|
72
|
+
const parentSourceComponent = this.parentComponentMap.get(parentKey);
|
|
73
|
+
if (!parentSourceComponent) {
|
|
74
|
+
throw new Error(`No source component found for ${parentKey}`);
|
|
75
|
+
}
|
|
76
|
+
const recomposedXmlObj = recompose(children, parentSourceComponent);
|
|
77
|
+
writerData.push({
|
|
78
|
+
component: parentSourceComponent,
|
|
79
|
+
writeInfos: [{ source: new streams_1.JsToXml(recomposedXmlObj), output: parentKey }],
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
return writerData;
|
|
84
|
+
}
|
|
85
|
+
initChildMapping() {
|
|
86
|
+
const output = new Map();
|
|
87
|
+
this.mergeMap.forEach((children, parentKey) => {
|
|
88
|
+
children.forEach((child, childName) => {
|
|
89
|
+
output.set(childName, parentKey);
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
return output;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* check both top-level maps and make sure there are defaults
|
|
96
|
+
*/
|
|
97
|
+
ensureDefaults(defaultKey) {
|
|
98
|
+
if (!this.mergeMap.has(defaultKey)) {
|
|
99
|
+
// If project has no files of this type, there won't be anything from allNonDecomposed.
|
|
100
|
+
this.mergeMap.set(defaultKey, new Map());
|
|
101
|
+
}
|
|
102
|
+
if (!this.parentComponentMap.has(defaultKey)) {
|
|
103
|
+
// it's possible to get here if there are no files of this type in the project.
|
|
104
|
+
// we don't have any SourceComponent to reference except the new incoming ones
|
|
105
|
+
// so this creates a "default" component with the correct path for the xml file
|
|
106
|
+
this.parentComponentMap.set(defaultKey, {
|
|
107
|
+
...this.transactionState.exampleComponent,
|
|
108
|
+
xml: defaultKey,
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Returns all the components of the incoming type in the project.
|
|
114
|
+
*
|
|
115
|
+
* Some components are not resolved during component resolution.
|
|
116
|
+
* This typically only happens when a specific source path was resolved. This is problematic for
|
|
117
|
+
* nondecomposed metadata types (like CustomLabels) because we need to know the location of each
|
|
118
|
+
* child type before recomposing the final xml.
|
|
119
|
+
* The labels could belong in any of the files OR need to go in the default location which already contains labels
|
|
120
|
+
*/
|
|
121
|
+
getAllComponentsOfType(pkgDirs, componentType) {
|
|
122
|
+
const unprocessedComponents = componentSet_1.ComponentSet.fromSource({
|
|
123
|
+
fsPaths: pkgDirs,
|
|
124
|
+
include: new componentSet_1.ComponentSet([{ fullName: '*', type: componentType }]),
|
|
125
|
+
tree: this.tree,
|
|
126
|
+
}).getSourceComponents();
|
|
127
|
+
return unprocessedComponents.toArray();
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Populate the mergeMap with all the children of all the local components
|
|
131
|
+
*/
|
|
132
|
+
async initMergeMap(allComponentsOfType) {
|
|
133
|
+
// A function we can parallelize since we have to parseXml for each local file
|
|
134
|
+
const getMappedChildren = async (component) => {
|
|
135
|
+
const results = await Promise.all(component.getChildren().map(async (child) => {
|
|
136
|
+
const childXml = await child.parseXml();
|
|
137
|
+
return [
|
|
138
|
+
(0, ts_types_1.getString)(childXml, (0, ts_types_1.ensureString)(child.type.uniqueIdElement), `No uniqueIdElement exists in the registry for ${child.type.name}`),
|
|
139
|
+
childXml,
|
|
140
|
+
];
|
|
141
|
+
}));
|
|
142
|
+
return new Map(results);
|
|
143
|
+
};
|
|
144
|
+
const result = await Promise.all(allComponentsOfType.map(async (c) => [
|
|
145
|
+
(0, ts_types_1.ensureString)(c.xml, `Missing xml file for ${c.type.name}`),
|
|
146
|
+
await getMappedChildren(c),
|
|
147
|
+
]));
|
|
148
|
+
this.mergeMap = new Map(result);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
exports.NonDecompositionFinalizer = NonDecompositionFinalizer;
|
|
152
|
+
/** Return a json object that's built up from the mergeMap children */
|
|
153
|
+
const recompose = (children, parentSourceComponent) => ({
|
|
154
|
+
[parentSourceComponent.type.name]: {
|
|
155
|
+
[constants_1.XML_NS_KEY]: constants_1.XML_NS_URL,
|
|
156
|
+
// for CustomLabels, that's `labels`
|
|
157
|
+
[(0, decomposed_1.getXmlElement)(parentSourceComponent.type)]: Array.from(children.values()),
|
|
158
|
+
},
|
|
159
|
+
});
|
|
160
|
+
/** Return the default filepath for new metadata of this type */
|
|
161
|
+
const getDefaultOutput = (component) => {
|
|
162
|
+
const { fullName } = component;
|
|
163
|
+
const [baseName] = fullName.split('.');
|
|
164
|
+
const output = `${baseName}.${component.type.suffix}${constants_1.META_XML_SUFFIX}`;
|
|
165
|
+
return (0, node_path_1.join)(component.getPackageRelativePath('', 'source'), output);
|
|
166
|
+
};
|
|
167
|
+
//# sourceMappingURL=nonDecompositionFinalizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nonDecompositionFinalizer.js","sourceRoot":"","sources":["../../../../src/convert/convertContext/nonDecompositionFinalizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { JsonMap } from '@salesforce/ts-types';
|
|
2
|
+
import { ComponentSet } from '../../collections/componentSet';
|
|
3
|
+
import { SourceComponent } from '../../resolve/sourceComponent';
|
|
4
|
+
import { WriterFormat } from '../types';
|
|
5
|
+
import { ConvertTransactionFinalizer } from './transactionFinalizer';
|
|
6
|
+
type RecompositionStateValue = {
|
|
7
|
+
/**
|
|
8
|
+
* Parent component that children are rolled up into
|
|
9
|
+
*/
|
|
10
|
+
component?: SourceComponent;
|
|
11
|
+
/**
|
|
12
|
+
* Children to be rolled up into the parent file
|
|
13
|
+
*/
|
|
14
|
+
children?: ComponentSet;
|
|
15
|
+
};
|
|
16
|
+
type RecompositionState = Map<string, RecompositionStateValue>;
|
|
17
|
+
/**
|
|
18
|
+
* Merges child components that share the same parent in the conversion pipeline into a single file.
|
|
19
|
+
*
|
|
20
|
+
* Handles both Decomposed and NonDecomposed strategies.
|
|
21
|
+
*
|
|
22
|
+
*/
|
|
23
|
+
export declare class RecompositionFinalizer extends ConvertTransactionFinalizer<RecompositionState> {
|
|
24
|
+
transactionState: RecompositionState;
|
|
25
|
+
finalize(): Promise<WriterFormat[]>;
|
|
26
|
+
}
|
|
27
|
+
/** composed function, exported from module for test */
|
|
28
|
+
export declare const unwrapAndOmitNS: (outerType: string) => (xml: JsonMap) => JsonMap;
|
|
29
|
+
export {};
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.unwrapAndOmitNS = exports.RecompositionFinalizer = void 0;
|
|
4
|
+
/*
|
|
5
|
+
* Copyright (c) 2023, salesforce.com, inc.
|
|
6
|
+
* All rights reserved.
|
|
7
|
+
* Licensed under the BSD 3-Clause license.
|
|
8
|
+
* For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
|
|
9
|
+
*/
|
|
10
|
+
const node_path_1 = require("node:path");
|
|
11
|
+
const core_1 = require("@salesforce/core");
|
|
12
|
+
const decomposed_1 = require("../../utils/decomposed");
|
|
13
|
+
const constants_1 = require("../../common/constants");
|
|
14
|
+
const sourceComponent_1 = require("../../resolve/sourceComponent");
|
|
15
|
+
const streams_1 = require("../streams");
|
|
16
|
+
const transactionFinalizer_1 = require("./transactionFinalizer");
|
|
17
|
+
;
|
|
18
|
+
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>"]]));
|
|
19
|
+
const xmlCache = new Map();
|
|
20
|
+
/**
|
|
21
|
+
* Merges child components that share the same parent in the conversion pipeline into a single file.
|
|
22
|
+
*
|
|
23
|
+
* Handles both Decomposed and NonDecomposed strategies.
|
|
24
|
+
*
|
|
25
|
+
*/
|
|
26
|
+
class RecompositionFinalizer extends transactionFinalizer_1.ConvertTransactionFinalizer {
|
|
27
|
+
constructor() {
|
|
28
|
+
super(...arguments);
|
|
29
|
+
this.transactionState = new Map();
|
|
30
|
+
}
|
|
31
|
+
async finalize() {
|
|
32
|
+
return Promise.all([...this.transactionState.values()].filter(ensureStateValueWithParent).map(stateValueToWriterFormat));
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.RecompositionFinalizer = RecompositionFinalizer;
|
|
36
|
+
const stateValueToWriterFormat = async (stateValue) => ({
|
|
37
|
+
component: stateValue.component,
|
|
38
|
+
writeInfos: [
|
|
39
|
+
{
|
|
40
|
+
source: new streams_1.JsToXml(await recompose(stateValue)),
|
|
41
|
+
output: (0, node_path_1.join)(stateValue.component.type.directoryName, `${stateValue.component.fullName}.${stateValue.component.type.suffix}`),
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
|
+
});
|
|
45
|
+
const recompose = async (stateValue) => {
|
|
46
|
+
await getXmlFromCache(stateValue.component);
|
|
47
|
+
const childXmls = await Promise.all((stateValue.children?.toArray() ?? []).filter(ensureMetadataComponentWithParent).map(async (child) => ({
|
|
48
|
+
cmp: child,
|
|
49
|
+
xmlContents: await getXmlFromCache(child),
|
|
50
|
+
groupName: (0, decomposed_1.getXmlElement)(child.type),
|
|
51
|
+
})));
|
|
52
|
+
const parentXmlContents = {
|
|
53
|
+
[constants_1.XML_NS_KEY]: constants_1.XML_NS_URL,
|
|
54
|
+
...(await getStartingXml(stateValue.component)),
|
|
55
|
+
// group them into an object of arrays by groupName, then merge into parent
|
|
56
|
+
...toSortedGroups(childXmls),
|
|
57
|
+
};
|
|
58
|
+
return {
|
|
59
|
+
[stateValue.component.type.name]: parentXmlContents,
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
/** @returns {} if StartEmpty, otherwise gets the parent xml */
|
|
63
|
+
const getStartingXml = async (parent) => parent.type.strategies?.recomposition === "startEmpty" /* RecompositionStrategy.StartEmpty */
|
|
64
|
+
? {}
|
|
65
|
+
: (0, exports.unwrapAndOmitNS)(parent.type.name)(await getXmlFromCache(parent)) ?? {};
|
|
66
|
+
/** throw if the parent component isn't in the state entry */
|
|
67
|
+
const ensureStateValueWithParent = (stateValue) => {
|
|
68
|
+
if (stateValue.component) {
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
throw new Error(`The parent component is missing from the recomposition state entry. The children are ${stateValue.children
|
|
72
|
+
?.toArray()
|
|
73
|
+
.map((c) => c.fullName)
|
|
74
|
+
.join(', ')}`);
|
|
75
|
+
};
|
|
76
|
+
const ensureMetadataComponentWithParent = (child) => {
|
|
77
|
+
// all components should be SourceComponent at this point
|
|
78
|
+
if (child instanceof sourceComponent_1.SourceComponent && child.parent) {
|
|
79
|
+
return true;
|
|
80
|
+
}
|
|
81
|
+
throw messages.createError('noParent', [child.fullName, child.type.name]);
|
|
82
|
+
};
|
|
83
|
+
/** sorts based on the uniqueId / fullname /name property in the xml */
|
|
84
|
+
const childSorter = (a, b) => {
|
|
85
|
+
const aValue = (0, decomposed_1.extractUniqueElementValue)(a.xmlContents, a.cmp.type.uniqueIdElement) ?? '';
|
|
86
|
+
const bValue = (0, decomposed_1.extractUniqueElementValue)(b.xmlContents, b.cmp.type.uniqueIdElement) ?? '';
|
|
87
|
+
return aValue.localeCompare(bValue);
|
|
88
|
+
};
|
|
89
|
+
/** organize into sorted arrays by groupName */
|
|
90
|
+
const toSortedGroups = (items) => {
|
|
91
|
+
const groupNames = [...new Set(items.map((item) => item.groupName))].sort();
|
|
92
|
+
return Object.fromEntries(groupNames.map((groupName) => [
|
|
93
|
+
groupName,
|
|
94
|
+
items
|
|
95
|
+
.filter((item) => item.groupName === groupName)
|
|
96
|
+
// TODO: use asSorted when we can use it on all supported node versions
|
|
97
|
+
.sort(childSorter)
|
|
98
|
+
.map((i) => i.xmlContents),
|
|
99
|
+
]));
|
|
100
|
+
};
|
|
101
|
+
/** wrapper around the xml cache. Handles the nonDecomposed "parse from parent" optimization */
|
|
102
|
+
const getXmlFromCache = async (cmp) => {
|
|
103
|
+
if (!cmp.xml)
|
|
104
|
+
return {};
|
|
105
|
+
const key = `${cmp.xml}:${cmp.fullName}`;
|
|
106
|
+
if (!xmlCache.has(key)) {
|
|
107
|
+
const parsed = cmp.parent?.type.strategies?.transformer === 'nonDecomposed'
|
|
108
|
+
? cmp.parseFromParentXml({ [cmp.parent.type.name]: await getXmlFromCache(cmp.parent) })
|
|
109
|
+
: (0, exports.unwrapAndOmitNS)(cmp.type.name)(await cmp.parseXml()) ?? {};
|
|
110
|
+
xmlCache.set(key, parsed);
|
|
111
|
+
}
|
|
112
|
+
return xmlCache.get(key) ?? {};
|
|
113
|
+
};
|
|
114
|
+
/** composed function, exported from module for test */
|
|
115
|
+
const unwrapAndOmitNS = (outerType) => (xml) => omitNsKey(unwrapXml(outerType)(xml));
|
|
116
|
+
exports.unwrapAndOmitNS = unwrapAndOmitNS;
|
|
117
|
+
/** Remove the namespace key from the json object. Only the parent needs one */
|
|
118
|
+
const omitNsKey = (obj) => Object.fromEntries(Object.entries(obj).filter(([key]) => key !== constants_1.XML_NS_KEY));
|
|
119
|
+
const unwrapXml = (outerType) => (xml) =>
|
|
120
|
+
// assert that the outerType is also a metadata type name (ex: CustomObject)
|
|
121
|
+
xml[outerType] ?? xml;
|
|
122
|
+
//# sourceMappingURL=recompositionFinalizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recompositionFinalizer.js","sourceRoot":"","sources":["../../../../src/convert/convertContext/recompositionFinalizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ConvertTransactionFinalizer = void 0;
|
|
4
|
+
class ConvertTransactionFinalizer {
|
|
5
|
+
}
|
|
6
|
+
exports.ConvertTransactionFinalizer = ConvertTransactionFinalizer;
|
|
7
|
+
//# sourceMappingURL=transactionFinalizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transactionFinalizer.js","sourceRoot":"","sources":["../../../../src/convert/convertContext/transactionFinalizer.ts"],"names":[],"mappings":";;;AAQA,MAAsB,2BAA2B;CAIhD;AAJD,kEAIC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { SourceComponent } from '../resolve';
|
|
2
|
-
import { ComponentSet } from '../collections';
|
|
3
|
-
import { RegistryAccess } from '../registry';
|
|
1
|
+
import { SourceComponent } from '../resolve/sourceComponent';
|
|
2
|
+
import { ComponentSet } from '../collections/componentSet';
|
|
3
|
+
import { RegistryAccess } from '../registry/registryAccess';
|
|
4
4
|
import { ConvertOutputConfig, ConvertResult, SfdxFileFormat } from './types';
|
|
5
5
|
export declare class MetadataConverter {
|
|
6
6
|
static readonly PACKAGE_XML_FILE = "package.xml";
|
|
@@ -12,45 +12,33 @@ const node_path_1 = require("node:path");
|
|
|
12
12
|
const core_1 = require("@salesforce/core");
|
|
13
13
|
const graceful_fs_1 = require("graceful-fs");
|
|
14
14
|
const ts_types_1 = require("@salesforce/ts-types");
|
|
15
|
+
const metadataResolver_1 = require("../resolve/metadataResolver");
|
|
15
16
|
const fileSystemHandler_1 = require("../utils/fileSystemHandler");
|
|
16
|
-
const
|
|
17
|
-
const
|
|
17
|
+
const componentSet_1 = require("../collections/componentSet");
|
|
18
|
+
const types_1 = require("../collections/types");
|
|
19
|
+
const registryAccess_1 = require("../registry/registryAccess");
|
|
18
20
|
const streams_1 = require("./streams");
|
|
19
21
|
const replacements_1 = require("./replacements");
|
|
20
22
|
;
|
|
21
23
|
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>"]]));
|
|
22
24
|
class MetadataConverter {
|
|
23
|
-
constructor(registry = new
|
|
25
|
+
constructor(registry = new registryAccess_1.RegistryAccess()) {
|
|
24
26
|
this.registry = registry;
|
|
25
27
|
}
|
|
26
|
-
// eslint-disable-next-line complexity
|
|
27
28
|
async convert(comps, targetFormat, output) {
|
|
28
29
|
try {
|
|
29
|
-
const cs = comps instanceof
|
|
30
|
-
const components = (comps instanceof
|
|
30
|
+
const cs = comps instanceof componentSet_1.ComponentSet ? comps : new componentSet_1.ComponentSet(comps, this.registry);
|
|
31
|
+
const components = (comps instanceof componentSet_1.ComponentSet ? Array.from(comps.getSourceComponents()) : comps).filter((comp) => comp.type.isAddressable !== false);
|
|
31
32
|
if (output.type !== 'merge' && output.packageName) {
|
|
32
33
|
cs.fullName = output.packageName;
|
|
33
34
|
}
|
|
34
35
|
const targetFormatIsSource = targetFormat === 'source';
|
|
35
|
-
const { packagePath, defaultDirectory, writer, mergeSet, tasks = [], } = await getConvertIngredients(output, cs, targetFormatIsSource);
|
|
36
|
+
const { packagePath, defaultDirectory, writer, mergeSet, tasks = [], } = await getConvertIngredients(output, cs, targetFormatIsSource, this.registry);
|
|
36
37
|
const conversionPipeline = (0, streams_1.pipeline)(node_stream_1.Readable.from(components), !targetFormatIsSource && (process.env.SF_APPLY_REPLACEMENTS_ON_CONVERT === 'true' || output.type === 'zip')
|
|
37
38
|
? (await (0, replacements_1.getReplacementMarkingStream)(cs.projectDirectory)) ?? new node_stream_1.PassThrough({ objectMode: true })
|
|
38
39
|
: new node_stream_1.PassThrough({ objectMode: true }), new streams_1.ComponentConverter(targetFormat, this.registry, mergeSet, defaultDirectory), writer);
|
|
39
40
|
await Promise.all([conversionPipeline, ...tasks]);
|
|
40
|
-
|
|
41
|
-
if (output.type === 'zip') {
|
|
42
|
-
const buffer = writer.buffer;
|
|
43
|
-
if (!packagePath) {
|
|
44
|
-
result.zipBuffer = buffer;
|
|
45
|
-
}
|
|
46
|
-
else if (buffer) {
|
|
47
|
-
await graceful_fs_1.promises.writeFile(packagePath, buffer);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
result.converted = writer.converted;
|
|
52
|
-
}
|
|
53
|
-
return result;
|
|
41
|
+
return await getResult(this.registry)(packagePath)(writer);
|
|
54
42
|
}
|
|
55
43
|
catch (err) {
|
|
56
44
|
if (!(err instanceof Error) && !(0, ts_types_1.isString)(err)) {
|
|
@@ -71,6 +59,28 @@ MetadataConverter.PACKAGE_XML_FILE = 'package.xml';
|
|
|
71
59
|
MetadataConverter.DESTRUCTIVE_CHANGES_POST_XML_FILE = 'destructiveChangesPost.xml';
|
|
72
60
|
MetadataConverter.DESTRUCTIVE_CHANGES_PRE_XML_FILE = 'destructiveChangesPre.xml';
|
|
73
61
|
MetadataConverter.DEFAULT_PACKAGE_PREFIX = 'metadataPackage';
|
|
62
|
+
const getResult = (registry) => (packagePath) => async (writer) => {
|
|
63
|
+
// union type discrimination
|
|
64
|
+
if ('addToZip' in writer) {
|
|
65
|
+
const buffer = writer.buffer;
|
|
66
|
+
if (!packagePath) {
|
|
67
|
+
return { packagePath, zipBuffer: buffer };
|
|
68
|
+
}
|
|
69
|
+
else if (buffer) {
|
|
70
|
+
await graceful_fs_1.promises.writeFile(packagePath, buffer);
|
|
71
|
+
return { packagePath };
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
else if (writer.converted?.length > 0 || writer.deleted?.length > 0) {
|
|
75
|
+
const resolver = new metadataResolver_1.MetadataResolver(registry);
|
|
76
|
+
return {
|
|
77
|
+
packagePath,
|
|
78
|
+
converted: writer.converted.flatMap((f) => resolver.getComponentsFromPath(f)),
|
|
79
|
+
deleted: writer.deleted,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
return { packagePath };
|
|
83
|
+
};
|
|
74
84
|
function getPackagePath(outputConfig) {
|
|
75
85
|
let packagePath;
|
|
76
86
|
const { genUniqueDir = true, outputDirectory, packageName, type } = outputConfig;
|
|
@@ -96,28 +106,28 @@ function getPackagePath(outputConfig) {
|
|
|
96
106
|
}
|
|
97
107
|
const getDestructiveManifest = (destructiveChangesType) => {
|
|
98
108
|
switch (destructiveChangesType) {
|
|
99
|
-
case
|
|
109
|
+
case types_1.DestructiveChangesType.POST:
|
|
100
110
|
return MetadataConverter.DESTRUCTIVE_CHANGES_POST_XML_FILE;
|
|
101
|
-
case
|
|
111
|
+
case types_1.DestructiveChangesType.PRE:
|
|
102
112
|
return MetadataConverter.DESTRUCTIVE_CHANGES_PRE_XML_FILE;
|
|
103
113
|
}
|
|
104
114
|
};
|
|
105
|
-
async function getConvertIngredients(output, cs, targetFormatIsSource) {
|
|
115
|
+
async function getConvertIngredients(output, cs, targetFormatIsSource, registry) {
|
|
106
116
|
switch (output.type) {
|
|
107
117
|
case 'directory':
|
|
108
118
|
return getDirectoryConfigOutputs(output, targetFormatIsSource, cs);
|
|
109
119
|
case 'zip':
|
|
110
120
|
return getZipConfigOutputs(output, targetFormatIsSource, cs);
|
|
111
121
|
case 'merge':
|
|
112
|
-
return getMergeConfigOutputs(output, targetFormatIsSource);
|
|
122
|
+
return getMergeConfigOutputs(output, targetFormatIsSource, registry);
|
|
113
123
|
}
|
|
114
124
|
}
|
|
115
|
-
function getMergeConfigOutputs(output, targetFormatIsSource) {
|
|
125
|
+
function getMergeConfigOutputs(output, targetFormatIsSource, registry) {
|
|
116
126
|
if (!targetFormatIsSource) {
|
|
117
127
|
throw new core_1.SfError(messages.getMessage('error_merge_metadata_target_unsupported'));
|
|
118
128
|
}
|
|
119
129
|
const defaultDirectory = output.defaultDirectory;
|
|
120
|
-
const mergeSet = new
|
|
130
|
+
const mergeSet = new componentSet_1.ComponentSet(undefined, registry);
|
|
121
131
|
// since child components are composed in metadata format, we need to merge using the parent
|
|
122
132
|
for (const component of output.mergeWith) {
|
|
123
133
|
mergeSet.add(component.parent ?? component);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadataConverter.js","sourceRoot":"","sources":["../../../src/convert/metadataConverter.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,6CAAoD;AACpD,yCAAqD;AACrD,2CAAqD;AACrD,6CAAuC;AACvC,mDAAgD;AAEhD,kEAAmE;AAEnE,
|
|
1
|
+
{"version":3,"file":"metadataConverter.js","sourceRoot":"","sources":["../../../src/convert/metadataConverter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
/// <reference types="node" />
|
|
3
3
|
import { Transform, Readable } from 'node:stream';
|
|
4
|
-
import { SourcePath } from '../common';
|
|
4
|
+
import { SourcePath } from '../common/types';
|
|
5
5
|
import { SourceComponent } from '../resolve/sourceComponent';
|
|
6
6
|
import { MarkedReplacement, ReplacementConfig } from './types';
|
|
7
7
|
/** If a component has replacements, you get it piped through the replacementStream
|
|
@@ -3,11 +3,12 @@
|
|
|
3
3
|
import { pipeline as cbPipeline, Readable, Stream, Transform, Writable } from 'node:stream';
|
|
4
4
|
import { JsonMap } from '@salesforce/ts-types';
|
|
5
5
|
import { Logger } from '@salesforce/core';
|
|
6
|
-
import {
|
|
7
|
-
import { SourcePath } from '../common';
|
|
8
|
-
import { ComponentSet } from '../collections';
|
|
9
|
-
import { RegistryAccess } from '../registry';
|
|
10
|
-
import {
|
|
6
|
+
import { SourceComponent } from '../resolve/sourceComponent';
|
|
7
|
+
import { SourcePath } from '../common/types';
|
|
8
|
+
import { ComponentSet } from '../collections/componentSet';
|
|
9
|
+
import { RegistryAccess } from '../registry/registryAccess';
|
|
10
|
+
import { FileResponseSuccess } from '../client/types';
|
|
11
|
+
import { ConvertContext } from './convertContext/convertContext';
|
|
11
12
|
import { SfdxFileFormat, WriterFormat } from './types';
|
|
12
13
|
export declare const pipeline: typeof cbPipeline.__promisify__;
|
|
13
14
|
export declare const stream2buffer: (stream: Stream) => Promise<Buffer>;
|
|
@@ -32,9 +33,10 @@ export declare abstract class ComponentWriter extends Writable {
|
|
|
32
33
|
constructor(rootDestination?: SourcePath);
|
|
33
34
|
}
|
|
34
35
|
export declare class StandardWriter extends ComponentWriter {
|
|
35
|
-
|
|
36
|
-
converted:
|
|
37
|
-
|
|
36
|
+
/** filepaths that converted files were written to */
|
|
37
|
+
readonly converted: string[];
|
|
38
|
+
readonly deleted: FileResponseSuccess[];
|
|
39
|
+
constructor(rootDestination: SourcePath);
|
|
38
40
|
_write(chunk: WriterFormat, encoding: string, callback: (err?: Error) => void): Promise<void>;
|
|
39
41
|
}
|
|
40
42
|
export declare class ZipWriter extends ComponentWriter {
|