@salesforce/source-deploy-retrieve 5.0.0 → 5.1.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/CHANGELOG.md +50 -44
- package/LICENSE.txt +12 -0
- package/README.md +2 -2
- package/lib/src/client/deployStrategies/auraDeploy.d.ts +2 -2
- package/lib/src/client/deployStrategies/auraDeploy.js +98 -108
- package/lib/src/client/deployStrategies/auraDeploy.js.map +1 -1
- package/lib/src/client/deployStrategies/baseDeploy.d.ts +1 -1
- package/lib/src/client/deployStrategies/baseDeploy.js +37 -38
- package/lib/src/client/deployStrategies/baseDeploy.js.map +1 -1
- package/lib/src/client/deployStrategies/containerDeploy.d.ts +2 -2
- package/lib/src/client/deployStrategies/containerDeploy.js +57 -72
- package/lib/src/client/deployStrategies/containerDeploy.js.map +1 -1
- package/lib/src/client/deployStrategies/index.js +4 -3
- package/lib/src/client/deployStrategies/index.js.map +1 -1
- package/lib/src/client/deployStrategies/lwcDeploy.d.ts +2 -2
- package/lib/src/client/deployStrategies/lwcDeploy.js +98 -109
- package/lib/src/client/deployStrategies/lwcDeploy.js.map +1 -1
- package/lib/src/client/diagnosticUtil.d.ts +1 -1
- package/lib/src/client/diagnosticUtil.js +11 -11
- package/lib/src/client/diagnosticUtil.js.map +1 -1
- package/lib/src/client/index.d.ts +1 -1
- package/lib/src/client/index.js +1 -1
- package/lib/src/client/index.js.map +1 -1
- package/lib/src/client/metadataApiDeploy.d.ts +4 -4
- package/lib/src/client/metadataApiDeploy.js +57 -73
- package/lib/src/client/metadataApiDeploy.js.map +1 -1
- package/lib/src/client/metadataApiRetrieve.d.ts +2 -2
- package/lib/src/client/metadataApiRetrieve.js +86 -106
- package/lib/src/client/metadataApiRetrieve.js.map +1 -1
- package/lib/src/client/metadataTransfer.d.ts +2 -2
- package/lib/src/client/metadataTransfer.js +101 -118
- package/lib/src/client/metadataTransfer.js.map +1 -1
- package/lib/src/client/retrieveUtil.d.ts +1 -1
- package/lib/src/client/retrieveUtil.js +17 -17
- package/lib/src/client/retrieveUtil.js.map +1 -1
- package/lib/src/client/toolingApi.d.ts +2 -2
- package/lib/src/client/toolingApi.js +71 -94
- package/lib/src/client/toolingApi.js.map +1 -1
- package/lib/src/client/types.js +1 -14
- package/lib/src/client/types.js.map +1 -1
- package/lib/src/collections/componentSet.d.ts +5 -2
- package/lib/src/collections/componentSet.js +77 -91
- package/lib/src/collections/componentSet.js.map +1 -1
- package/lib/src/collections/index.js +1 -0
- package/lib/src/collections/index.js.map +1 -1
- package/lib/src/collections/lazyCollection.js +5 -1
- package/lib/src/collections/lazyCollection.js.map +1 -1
- package/lib/src/common/constants.js +1 -1
- package/lib/src/common/constants.js.map +1 -1
- package/lib/src/common/index.d.ts +1 -1
- package/lib/src/common/index.js +1 -0
- package/lib/src/common/index.js.map +1 -1
- package/lib/src/convert/convertContext.d.ts +8 -10
- package/lib/src/convert/convertContext.js +162 -197
- package/lib/src/convert/convertContext.js.map +1 -1
- package/lib/src/convert/index.js +1 -0
- package/lib/src/convert/index.js.map +1 -1
- package/lib/src/convert/metadataConverter.d.ts +2 -17
- package/lib/src/convert/metadataConverter.js +106 -111
- package/lib/src/convert/metadataConverter.js.map +1 -1
- package/lib/src/convert/streams.d.ts +4 -4
- package/lib/src/convert/streams.js +111 -147
- package/lib/src/convert/streams.js.map +1 -1
- package/lib/src/convert/transformers/baseMetadataTransformer.js.map +1 -1
- package/lib/src/convert/transformers/decomposedMetadataTransformer.d.ts +2 -1
- package/lib/src/convert/transformers/decomposedMetadataTransformer.js +125 -133
- 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 +11 -23
- package/lib/src/convert/transformers/defaultMetadataTransformer.js.map +1 -1
- package/lib/src/convert/transformers/index.js +1 -0
- package/lib/src/convert/transformers/index.js.map +1 -1
- 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 +18 -29
- package/lib/src/convert/transformers/nonDecomposedMetadataTransformer.js.map +1 -1
- package/lib/src/convert/transformers/staticResourceMetadataTransformer.d.ts +1 -1
- package/lib/src/convert/transformers/staticResourceMetadataTransformer.js +78 -132
- package/lib/src/convert/transformers/staticResourceMetadataTransformer.js.map +1 -1
- package/lib/src/convert/types.d.ts +1 -1
- package/lib/src/errors/index.js.map +1 -1
- package/lib/src/i18n/i18n.js +3 -2
- package/lib/src/i18n/i18n.js.map +1 -1
- package/lib/src/i18n/index.js +3 -4
- package/lib/src/i18n/index.js.map +1 -1
- package/lib/src/i18n/localization.js +4 -4
- package/lib/src/i18n/localization.js.map +1 -1
- package/lib/src/index.js +1 -4
- package/lib/src/index.js.map +1 -1
- package/lib/src/registry/index.js +1 -4
- package/lib/src/registry/index.js.map +1 -1
- package/lib/src/registry/{registry.json → metadataRegistry.json} +35 -2
- package/lib/src/registry/nonSupportedTypes.js +5 -7
- package/lib/src/registry/nonSupportedTypes.js.map +1 -1
- package/lib/src/registry/registry.d.ts +33 -0
- 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 -0
- package/lib/src/registry/registryAccess.js +3 -1
- package/lib/src/registry/registryAccess.js.map +1 -1
- package/lib/src/registry/types.js +0 -35
- package/lib/src/registry/types.js.map +1 -1
- package/lib/src/resolve/adapters/baseSourceAdapter.d.ts +2 -2
- package/lib/src/resolve/adapters/baseSourceAdapter.js +20 -16
- 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/bundleSourceAdapter.js +0 -6
- package/lib/src/resolve/adapters/bundleSourceAdapter.js.map +1 -1
- package/lib/src/resolve/adapters/decomposedSourceAdapter.d.ts +1 -1
- package/lib/src/resolve/adapters/decomposedSourceAdapter.js +6 -13
- 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/defaultSourceAdapter.js +0 -6
- package/lib/src/resolve/adapters/defaultSourceAdapter.js.map +1 -1
- package/lib/src/resolve/adapters/index.js +1 -0
- package/lib/src/resolve/adapters/index.js.map +1 -1
- package/lib/src/resolve/adapters/matchingContentSourceAdapter.d.ts +1 -1
- package/lib/src/resolve/adapters/matchingContentSourceAdapter.js +2 -2
- 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/mixedContentSourceAdapter.js +6 -6
- package/lib/src/resolve/adapters/mixedContentSourceAdapter.js.map +1 -1
- package/lib/src/resolve/adapters/sourceAdapterFactory.js +2 -2
- package/lib/src/resolve/adapters/sourceAdapterFactory.js.map +1 -1
- package/lib/src/resolve/forceIgnore.js +9 -14
- package/lib/src/resolve/forceIgnore.js.map +1 -1
- package/lib/src/resolve/index.d.ts +1 -1
- package/lib/src/resolve/index.js +1 -0
- package/lib/src/resolve/index.js.map +1 -1
- package/lib/src/resolve/manifestResolver.js +25 -36
- package/lib/src/resolve/manifestResolver.js.map +1 -1
- package/lib/src/resolve/metadataResolver.d.ts +6 -5
- package/lib/src/resolve/metadataResolver.js +18 -23
- package/lib/src/resolve/metadataResolver.js.map +1 -1
- package/lib/src/resolve/sourceComponent.d.ts +4 -4
- package/lib/src/resolve/sourceComponent.js +32 -44
- package/lib/src/resolve/sourceComponent.js.map +1 -1
- package/lib/src/resolve/treeContainers.d.ts +9 -1
- package/lib/src/resolve/treeContainers.js +46 -32
- package/lib/src/resolve/treeContainers.js.map +1 -1
- package/lib/src/resolve/types.d.ts +2 -2
- package/lib/src/utils/collections.js +1 -1
- package/lib/src/utils/collections.js.map +1 -1
- package/lib/src/utils/fileSystemHandler.js +1 -1
- package/lib/src/utils/fileSystemHandler.js.map +1 -1
- package/lib/src/utils/index.d.ts +1 -1
- package/lib/src/utils/index.js +1 -0
- package/lib/src/utils/index.js.map +1 -1
- package/lib/src/utils/metadata.js +1 -3
- package/lib/src/utils/metadata.js.map +1 -1
- package/lib/src/utils/path.d.ts +5 -1
- package/lib/src/utils/path.js +8 -4
- package/lib/src/utils/path.js.map +1 -1
- package/package.json +40 -38
|
@@ -1,148 +1,143 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
exports.MetadataConverter = void 0;
|
|
13
|
-
|
|
4
|
+
/*
|
|
5
|
+
* Copyright (c) 2020, 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
|
+
*/
|
|
14
10
|
const path_1 = require("path");
|
|
11
|
+
const graceful_fs_1 = require("graceful-fs");
|
|
15
12
|
const fileSystemHandler_1 = require("../utils/fileSystemHandler");
|
|
16
|
-
const streams_1 = require("./streams");
|
|
17
13
|
const errors_1 = require("../errors");
|
|
18
14
|
const collections_1 = require("../collections");
|
|
19
15
|
const registry_1 = require("../registry");
|
|
16
|
+
const streams_1 = require("./streams");
|
|
20
17
|
class MetadataConverter {
|
|
21
18
|
constructor(registry = new registry_1.RegistryAccess()) {
|
|
22
19
|
this.registry = registry;
|
|
23
20
|
}
|
|
24
|
-
convert(comps, targetFormat, output) {
|
|
21
|
+
async convert(comps, targetFormat, output) {
|
|
25
22
|
var _a;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
break;
|
|
71
|
-
case 'zip':
|
|
72
|
-
if (output.packageName) {
|
|
73
|
-
cs.fullName = output.packageName;
|
|
74
|
-
}
|
|
75
|
-
manifestContents = cs.getPackageXml();
|
|
76
|
-
packagePath = this.getPackagePath(output);
|
|
77
|
-
defaultDirectory = packagePath;
|
|
78
|
-
writer = new streams_1.ZipWriter(packagePath);
|
|
79
|
-
if (!isSource) {
|
|
80
|
-
writer.addToZip(manifestContents, MetadataConverter.PACKAGE_XML_FILE);
|
|
81
|
-
// For deploying destructive changes
|
|
82
|
-
const destructiveChangesTypes = cs.getTypesOfDestructiveChanges();
|
|
83
|
-
if (destructiveChangesTypes.length) {
|
|
84
|
-
// for each of the destructive changes in the component set, convert and write the correct metadata
|
|
85
|
-
// to each manifest
|
|
86
|
-
destructiveChangesTypes.map((destructiveChangeType) => {
|
|
87
|
-
const file = this.getDestructiveManifest(destructiveChangeType);
|
|
88
|
-
const destructiveManifestContents = cs.getPackageXml(4, destructiveChangeType);
|
|
89
|
-
writer.addToZip(destructiveManifestContents, file);
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
break;
|
|
94
|
-
case 'merge':
|
|
95
|
-
if (!isSource) {
|
|
96
|
-
throw new errors_1.LibraryError('error_merge_metadata_target_unsupported');
|
|
23
|
+
try {
|
|
24
|
+
let cs;
|
|
25
|
+
let components;
|
|
26
|
+
if (comps instanceof collections_1.ComponentSet) {
|
|
27
|
+
cs = comps;
|
|
28
|
+
components = Array.from(comps.getSourceComponents());
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
cs = new collections_1.ComponentSet(comps, this.registry);
|
|
32
|
+
components = comps;
|
|
33
|
+
}
|
|
34
|
+
let manifestContents;
|
|
35
|
+
const isSource = targetFormat === 'source';
|
|
36
|
+
const tasks = [];
|
|
37
|
+
let writer;
|
|
38
|
+
let mergeSet;
|
|
39
|
+
let packagePath;
|
|
40
|
+
let defaultDirectory;
|
|
41
|
+
switch (output.type) {
|
|
42
|
+
case 'directory':
|
|
43
|
+
if (output.packageName) {
|
|
44
|
+
cs.fullName = output.packageName;
|
|
45
|
+
}
|
|
46
|
+
manifestContents = cs.getPackageXml();
|
|
47
|
+
packagePath = this.getPackagePath(output);
|
|
48
|
+
defaultDirectory = packagePath;
|
|
49
|
+
writer = new streams_1.StandardWriter(packagePath);
|
|
50
|
+
if (!isSource) {
|
|
51
|
+
const manifestPath = (0, path_1.join)(packagePath, MetadataConverter.PACKAGE_XML_FILE);
|
|
52
|
+
tasks.push(graceful_fs_1.promises.writeFile(manifestPath, manifestContents));
|
|
53
|
+
// For deploying destructive changes
|
|
54
|
+
const destructiveChangesTypes = cs.getTypesOfDestructiveChanges();
|
|
55
|
+
if (destructiveChangesTypes.length) {
|
|
56
|
+
// for each of the destructive changes in the component set, convert and write the correct metadata
|
|
57
|
+
// to each manifest
|
|
58
|
+
destructiveChangesTypes.map((destructiveChangesType) => {
|
|
59
|
+
const file = this.getDestructiveManifest(destructiveChangesType);
|
|
60
|
+
const destructiveManifestContents = cs.getPackageXml(4, destructiveChangesType);
|
|
61
|
+
const destructiveManifestPath = (0, path_1.join)(packagePath, file);
|
|
62
|
+
tasks.push(graceful_fs_1.promises.writeFile(destructiveManifestPath, destructiveManifestContents));
|
|
63
|
+
});
|
|
97
64
|
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
65
|
+
}
|
|
66
|
+
break;
|
|
67
|
+
case 'zip':
|
|
68
|
+
if (output.packageName) {
|
|
69
|
+
cs.fullName = output.packageName;
|
|
70
|
+
}
|
|
71
|
+
manifestContents = cs.getPackageXml();
|
|
72
|
+
packagePath = this.getPackagePath(output);
|
|
73
|
+
defaultDirectory = packagePath;
|
|
74
|
+
writer = new streams_1.ZipWriter(packagePath);
|
|
75
|
+
if (!isSource) {
|
|
76
|
+
writer.addToZip(manifestContents, MetadataConverter.PACKAGE_XML_FILE);
|
|
77
|
+
// For deploying destructive changes
|
|
78
|
+
const destructiveChangesTypes = cs.getTypesOfDestructiveChanges();
|
|
79
|
+
if (destructiveChangesTypes.length) {
|
|
80
|
+
// for each of the destructive changes in the component set, convert and write the correct metadata
|
|
81
|
+
// to each manifest
|
|
82
|
+
destructiveChangesTypes.map((destructiveChangeType) => {
|
|
83
|
+
const file = this.getDestructiveManifest(destructiveChangeType);
|
|
84
|
+
const destructiveManifestContents = cs.getPackageXml(4, destructiveChangeType);
|
|
85
|
+
writer.addToZip(destructiveManifestContents, file);
|
|
86
|
+
});
|
|
103
87
|
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
88
|
+
}
|
|
89
|
+
break;
|
|
90
|
+
case 'merge':
|
|
91
|
+
if (!isSource) {
|
|
92
|
+
throw new errors_1.LibraryError('error_merge_metadata_target_unsupported');
|
|
93
|
+
}
|
|
94
|
+
defaultDirectory = output.defaultDirectory;
|
|
95
|
+
mergeSet = new collections_1.ComponentSet();
|
|
96
|
+
// since child components are composed in metadata format, we need to merge using the parent
|
|
97
|
+
for (const component of output.mergeWith) {
|
|
98
|
+
mergeSet.add((_a = component.parent) !== null && _a !== void 0 ? _a : component);
|
|
99
|
+
}
|
|
100
|
+
writer = new streams_1.StandardWriter(output.defaultDirectory);
|
|
101
|
+
writer.forceIgnoredPaths = output.forceIgnoredPaths;
|
|
102
|
+
break;
|
|
103
|
+
}
|
|
104
|
+
const conversionPipeline = (0, streams_1.pipeline)(new streams_1.ComponentReader(components), new streams_1.ComponentConverter(targetFormat, this.registry, mergeSet, defaultDirectory), writer);
|
|
105
|
+
tasks.push(conversionPipeline);
|
|
106
|
+
await Promise.all(tasks);
|
|
107
|
+
const result = { packagePath };
|
|
108
|
+
if (output.type === 'zip' && !packagePath) {
|
|
109
|
+
result.zipBuffer = writer.buffer;
|
|
119
110
|
}
|
|
120
|
-
|
|
121
|
-
|
|
111
|
+
else if (output.type !== 'zip') {
|
|
112
|
+
result.converted = writer.converted;
|
|
122
113
|
}
|
|
123
|
-
|
|
114
|
+
return result;
|
|
115
|
+
}
|
|
116
|
+
catch (e) {
|
|
117
|
+
throw new errors_1.ConversionError(e);
|
|
118
|
+
}
|
|
124
119
|
}
|
|
125
120
|
getPackagePath(outputConfig) {
|
|
126
121
|
let packagePath;
|
|
127
122
|
const { genUniqueDir = true, outputDirectory, packageName, type } = outputConfig;
|
|
128
123
|
if (outputDirectory) {
|
|
129
124
|
if (packageName) {
|
|
130
|
-
packagePath = path_1.join(outputDirectory, packageName);
|
|
125
|
+
packagePath = (0, path_1.join)(outputDirectory, packageName);
|
|
131
126
|
}
|
|
132
127
|
else {
|
|
133
128
|
if (genUniqueDir) {
|
|
134
|
-
packagePath = path_1.join(outputDirectory, `${MetadataConverter.DEFAULT_PACKAGE_PREFIX}_${Date.now()}`);
|
|
129
|
+
packagePath = (0, path_1.join)(outputDirectory, `${MetadataConverter.DEFAULT_PACKAGE_PREFIX}_${Date.now()}`);
|
|
135
130
|
}
|
|
136
131
|
else {
|
|
137
|
-
packagePath = path_1.normalize(outputDirectory);
|
|
132
|
+
packagePath = (0, path_1.normalize)(outputDirectory);
|
|
138
133
|
}
|
|
139
134
|
}
|
|
140
135
|
if (type === 'zip') {
|
|
141
136
|
packagePath += '.zip';
|
|
142
|
-
fileSystemHandler_1.ensureDirectoryExists(path_1.dirname(packagePath));
|
|
137
|
+
(0, fileSystemHandler_1.ensureDirectoryExists)((0, path_1.dirname)(packagePath));
|
|
143
138
|
}
|
|
144
139
|
else {
|
|
145
|
-
fileSystemHandler_1.ensureDirectoryExists(packagePath);
|
|
140
|
+
(0, fileSystemHandler_1.ensureDirectoryExists)(packagePath);
|
|
146
141
|
}
|
|
147
142
|
}
|
|
148
143
|
return packagePath;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadataConverter.js","sourceRoot":"","sources":["../../../src/convert/metadataConverter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"metadataConverter.js","sourceRoot":"","sources":["../../../src/convert/metadataConverter.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,+BAAgD;AAChD,6CAAuC;AAEvC,kEAAmE;AACnE,sCAA0D;AAE1D,gDAAsE;AACtE,0CAA6C;AAC7C,uCAAsH;AAGtH,MAAa,iBAAiB;IAQ5B,YAAmB,QAAQ,GAAG,IAAI,yBAAc,EAAE;QAChD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IACM,KAAK,CAAC,OAAO,CAClB,KAA+C,EAC/C,YAA4B,EAC5B,MAA2B;;QAE3B,IAAI;YACF,IAAI,EAAgB,CAAC;YACrB,IAAI,UAAqC,CAAC;YAC1C,IAAI,KAAK,YAAY,0BAAY,EAAE;gBACjC,EAAE,GAAG,KAAK,CAAC;gBACX,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC,CAAC;aACtD;iBAAM;gBACL,EAAE,GAAG,IAAI,0BAAY,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC5C,UAAU,GAAG,KAAK,CAAC;aACpB;YACD,IAAI,gBAAgB,CAAC;YACrB,MAAM,QAAQ,GAAG,YAAY,KAAK,QAAQ,CAAC;YAC3C,MAAM,KAAK,GAAG,EAAE,CAAC;YAEjB,IAAI,MAAuB,CAAC;YAC5B,IAAI,QAAsB,CAAC;YAC3B,IAAI,WAAuB,CAAC;YAC5B,IAAI,gBAA4B,CAAC;YAEjC,QAAQ,MAAM,CAAC,IAAI,EAAE;gBACnB,KAAK,WAAW;oBACd,IAAI,MAAM,CAAC,WAAW,EAAE;wBACtB,EAAE,CAAC,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC;qBAClC;oBACD,gBAAgB,GAAG,EAAE,CAAC,aAAa,EAAE,CAAC;oBACtC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;oBAC1C,gBAAgB,GAAG,WAAW,CAAC;oBAC/B,MAAM,GAAG,IAAI,wBAAc,CAAC,WAAW,CAAC,CAAC;oBACzC,IAAI,CAAC,QAAQ,EAAE;wBACb,MAAM,YAAY,GAAG,IAAA,WAAI,EAAC,WAAW,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;wBAC3E,KAAK,CAAC,IAAI,CAAC,sBAAQ,CAAC,SAAS,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC,CAAC;wBAC/D,oCAAoC;wBACpC,MAAM,uBAAuB,GAAG,EAAE,CAAC,4BAA4B,EAAE,CAAC;wBAClE,IAAI,uBAAuB,CAAC,MAAM,EAAE;4BAClC,mGAAmG;4BACnG,mBAAmB;4BACnB,uBAAuB,CAAC,GAAG,CAAC,CAAC,sBAAsB,EAAE,EAAE;gCACrD,MAAM,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAC,CAAC;gCACjE,MAAM,2BAA2B,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC;gCAChF,MAAM,uBAAuB,GAAG,IAAA,WAAI,EAAC,WAAW,EAAE,IAAI,CAAC,CAAC;gCACxD,KAAK,CAAC,IAAI,CAAC,sBAAQ,CAAC,SAAS,CAAC,uBAAuB,EAAE,2BAA2B,CAAC,CAAC,CAAC;4BACvF,CAAC,CAAC,CAAC;yBACJ;qBACF;oBACD,MAAM;gBACR,KAAK,KAAK;oBACR,IAAI,MAAM,CAAC,WAAW,EAAE;wBACtB,EAAE,CAAC,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC;qBAClC;oBACD,gBAAgB,GAAG,EAAE,CAAC,aAAa,EAAE,CAAC;oBACtC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;oBAC1C,gBAAgB,GAAG,WAAW,CAAC;oBAC/B,MAAM,GAAG,IAAI,mBAAS,CAAC,WAAW,CAAC,CAAC;oBACpC,IAAI,CAAC,QAAQ,EAAE;wBACZ,MAAoB,CAAC,QAAQ,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;wBACrF,oCAAoC;wBACpC,MAAM,uBAAuB,GAAG,EAAE,CAAC,4BAA4B,EAAE,CAAC;wBAClE,IAAI,uBAAuB,CAAC,MAAM,EAAE;4BAClC,mGAAmG;4BACnG,mBAAmB;4BACnB,uBAAuB,CAAC,GAAG,CAAC,CAAC,qBAAqB,EAAE,EAAE;gCACpD,MAAM,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC,qBAAqB,CAAC,CAAC;gCAChE,MAAM,2BAA2B,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC;gCAC9E,MAAoB,CAAC,QAAQ,CAAC,2BAA2B,EAAE,IAAI,CAAC,CAAC;4BACpE,CAAC,CAAC,CAAC;yBACJ;qBACF;oBACD,MAAM;gBACR,KAAK,OAAO;oBACV,IAAI,CAAC,QAAQ,EAAE;wBACb,MAAM,IAAI,qBAAY,CAAC,yCAAyC,CAAC,CAAC;qBACnE;oBACD,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;oBAC3C,QAAQ,GAAG,IAAI,0BAAY,EAAE,CAAC;oBAC9B,4FAA4F;oBAC5F,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,SAAS,EAAE;wBACxC,QAAQ,CAAC,GAAG,CAAC,MAAA,SAAS,CAAC,MAAM,mCAAI,SAAS,CAAC,CAAC;qBAC7C;oBACD,MAAM,GAAG,IAAI,wBAAc,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;oBACrD,MAAM,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;oBACpD,MAAM;aACT;YAED,MAAM,kBAAkB,GAAG,IAAA,kBAAQ,EACjC,IAAI,yBAAe,CAAC,UAAU,CAAC,EAC/B,IAAI,4BAAkB,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,CAAC,EAC/E,MAAM,CACP,CAAC;YACF,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAC/B,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAEzB,MAAM,MAAM,GAAkB,EAAE,WAAW,EAAE,CAAC;YAC9C,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,WAAW,EAAE;gBACzC,MAAM,CAAC,SAAS,GAAI,MAAoB,CAAC,MAAM,CAAC;aACjD;iBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE;gBAChC,MAAM,CAAC,SAAS,GAAI,MAAyB,CAAC,SAAS,CAAC;aACzD;YACD,OAAO,MAAM,CAAC;SACf;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,IAAI,wBAAe,CAAC,CAAC,CAAC,CAAC;SAC9B;IACH,CAAC;IAEO,cAAc,CAAC,YAAyC;QAC9D,IAAI,WAAuB,CAAC;QAC5B,MAAM,EAAE,YAAY,GAAG,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC;QACjF,IAAI,eAAe,EAAE;YACnB,IAAI,WAAW,EAAE;gBACf,WAAW,GAAG,IAAA,WAAI,EAAC,eAAe,EAAE,WAAW,CAAC,CAAC;aAClD;iBAAM;gBACL,IAAI,YAAY,EAAE;oBAChB,WAAW,GAAG,IAAA,WAAI,EAAC,eAAe,EAAE,GAAG,iBAAiB,CAAC,sBAAsB,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;iBAClG;qBAAM;oBACL,WAAW,GAAG,IAAA,gBAAS,EAAC,eAAe,CAAC,CAAC;iBAC1C;aACF;YAED,IAAI,IAAI,KAAK,KAAK,EAAE;gBAClB,WAAW,IAAI,MAAM,CAAC;gBACtB,IAAA,yCAAqB,EAAC,IAAA,cAAO,EAAC,WAAW,CAAC,CAAC,CAAC;aAC7C;iBAAM;gBACL,IAAA,yCAAqB,EAAC,WAAW,CAAC,CAAC;aACpC;SACF;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,sBAAsB,CAAC,sBAA8C;QAC3E,IAAI,sBAAsB,KAAK,oCAAsB,CAAC,IAAI,EAAE;YAC1D,OAAO,iBAAiB,CAAC,iCAAiC,CAAC;SAC5D;aAAM,IAAI,sBAAsB,KAAK,oCAAsB,CAAC,GAAG,EAAE;YAChE,OAAO,iBAAiB,CAAC,gCAAgC,CAAC;SAC3D;IACH,CAAC;;AArJH,8CAsJC;AArJwB,kCAAgB,GAAG,aAAa,CAAC;AACjC,mDAAiC,GAAG,4BAA4B,CAAC;AACjE,kDAAgC,GAAG,2BAA2B,CAAC;AAC/D,wCAAsB,GAAG,iBAAiB,CAAC"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { pipeline as cbPipeline, Readable, Transform, Writable } from 'stream';
|
|
3
|
-
import { SourceComponent, MetadataResolver } from '../resolve';
|
|
4
|
-
import { SfdxFileFormat, WriterFormat } from './types';
|
|
5
|
-
import { SourcePath } from '../common';
|
|
6
|
-
import { ConvertContext } from './convertContext';
|
|
7
3
|
import { JsonMap } from '@salesforce/ts-types';
|
|
4
|
+
import { MetadataResolver, SourceComponent } from '../resolve';
|
|
5
|
+
import { SourcePath } from '../common';
|
|
8
6
|
import { ComponentSet } from '../collections';
|
|
9
7
|
import { RegistryAccess } from '../registry';
|
|
8
|
+
import { ConvertContext } from './convertContext';
|
|
9
|
+
import { SfdxFileFormat, WriterFormat } from './types';
|
|
10
10
|
export declare const pipeline: typeof cbPipeline.__promisify__;
|
|
11
11
|
export declare class ComponentReader extends Readable {
|
|
12
12
|
private iter;
|
|
@@ -1,20 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __asyncValues = (this && this.__asyncValues) || function (o) {
|
|
12
|
-
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
13
|
-
var m = o[Symbol.asyncIterator], i;
|
|
14
|
-
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
|
15
|
-
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
|
16
|
-
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
|
17
|
-
};
|
|
18
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
3
|
exports.JsToXml = exports.ZipWriter = exports.StandardWriter = exports.ComponentWriter = exports.ComponentConverter = exports.ComponentReader = exports.pipeline = void 0;
|
|
20
4
|
/*
|
|
@@ -23,20 +7,20 @@ exports.JsToXml = exports.ZipWriter = exports.StandardWriter = exports.Component
|
|
|
23
7
|
* Licensed under the BSD 3-Clause license.
|
|
24
8
|
* For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
|
|
25
9
|
*/
|
|
26
|
-
const archiver_1 = require("archiver");
|
|
27
|
-
const graceful_fs_1 = require("graceful-fs");
|
|
28
10
|
const path_1 = require("path");
|
|
29
11
|
const stream_1 = require("stream");
|
|
30
12
|
const util_1 = require("util");
|
|
13
|
+
const archiver_1 = require("archiver");
|
|
14
|
+
const graceful_fs_1 = require("graceful-fs");
|
|
15
|
+
const fast_xml_parser_1 = require("fast-xml-parser");
|
|
16
|
+
const core_1 = require("@salesforce/core");
|
|
31
17
|
const resolve_1 = require("../resolve");
|
|
32
18
|
const fileSystemHandler_1 = require("../utils/fileSystemHandler");
|
|
33
19
|
const common_1 = require("../common");
|
|
34
|
-
const convertContext_1 = require("./convertContext");
|
|
35
|
-
const transformers_1 = require("./transformers");
|
|
36
|
-
const fast_xml_parser_1 = require("fast-xml-parser");
|
|
37
20
|
const errors_1 = require("../errors");
|
|
38
|
-
const
|
|
39
|
-
|
|
21
|
+
const transformers_1 = require("./transformers");
|
|
22
|
+
const convertContext_1 = require("./convertContext");
|
|
23
|
+
exports.pipeline = (0, util_1.promisify)(stream_1.pipeline);
|
|
40
24
|
class ComponentReader extends stream_1.Readable {
|
|
41
25
|
constructor(components) {
|
|
42
26
|
super({ objectMode: true });
|
|
@@ -66,72 +50,57 @@ class ComponentConverter extends stream_1.Transform {
|
|
|
66
50
|
this.transformerFactory = new transformers_1.MetadataTransformerFactory(registry, this.context);
|
|
67
51
|
this.defaultDirectory = defaultDirectory;
|
|
68
52
|
}
|
|
69
|
-
_transform(chunk, encoding, callback) {
|
|
53
|
+
async _transform(chunk, encoding, callback) {
|
|
70
54
|
var _a;
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
converts.push(transformer.toSourceFormat(chunk, mergeComponent));
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
if (converts.length === 0) {
|
|
88
|
-
converts.push(transformer.toSourceFormat(chunk));
|
|
55
|
+
let err;
|
|
56
|
+
const writeInfos = [];
|
|
57
|
+
// Only transform components not marked for delete.
|
|
58
|
+
if (!chunk.isMarkedForDelete()) {
|
|
59
|
+
try {
|
|
60
|
+
const converts = [];
|
|
61
|
+
const transformer = this.transformerFactory.getTransformer(chunk);
|
|
62
|
+
const mergeWith = (_a = this.mergeSet) === null || _a === void 0 ? void 0 : _a.getSourceComponents(chunk);
|
|
63
|
+
switch (this.targetFormat) {
|
|
64
|
+
case 'source':
|
|
65
|
+
if (mergeWith) {
|
|
66
|
+
for (const mergeComponent of mergeWith) {
|
|
67
|
+
converts.push(transformer.toSourceFormat(chunk, mergeComponent));
|
|
89
68
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
converts.push(transformer.
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
catch (e) {
|
|
101
|
-
err = e;
|
|
69
|
+
}
|
|
70
|
+
if (converts.length === 0) {
|
|
71
|
+
converts.push(transformer.toSourceFormat(chunk));
|
|
72
|
+
}
|
|
73
|
+
break;
|
|
74
|
+
case 'metadata':
|
|
75
|
+
converts.push(transformer.toMetadataFormat(chunk));
|
|
76
|
+
break;
|
|
77
|
+
default:
|
|
78
|
+
throw new errors_1.LibraryError('error_convert_invalid_format', this.targetFormat);
|
|
102
79
|
}
|
|
80
|
+
// could maybe improve all this with lazy async collections...
|
|
81
|
+
(await Promise.all(converts)).forEach((infos) => writeInfos.push(...infos));
|
|
82
|
+
}
|
|
83
|
+
catch (e) {
|
|
84
|
+
err = e;
|
|
103
85
|
}
|
|
104
|
-
|
|
105
|
-
});
|
|
86
|
+
}
|
|
87
|
+
callback(err, { component: chunk, writeInfos });
|
|
106
88
|
}
|
|
107
89
|
/**
|
|
108
90
|
* Called at the end when all components have passed through the pipeline. Finalizers
|
|
109
91
|
* take care of any additional work to be done at this stage e.g. recomposing child components.
|
|
110
92
|
*/
|
|
111
|
-
_flush(callback) {
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
try {
|
|
117
|
-
for (var _b = __asyncValues(this.context.executeFinalizers(this.defaultDirectory)), _c; _c = yield _b.next(), !_c.done;) {
|
|
118
|
-
const finalizerResult = _c.value;
|
|
119
|
-
finalizerResult.forEach((result) => this.push(result));
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
123
|
-
finally {
|
|
124
|
-
try {
|
|
125
|
-
if (_c && !_c.done && (_a = _b.return)) yield _a.call(_b);
|
|
126
|
-
}
|
|
127
|
-
finally { if (e_1) throw e_1.error; }
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
catch (e) {
|
|
131
|
-
err = e;
|
|
93
|
+
async _flush(callback) {
|
|
94
|
+
let err;
|
|
95
|
+
try {
|
|
96
|
+
for await (const finalizerResult of this.context.executeFinalizers(this.defaultDirectory)) {
|
|
97
|
+
finalizerResult.forEach((result) => this.push(result));
|
|
132
98
|
}
|
|
133
|
-
|
|
134
|
-
|
|
99
|
+
}
|
|
100
|
+
catch (e) {
|
|
101
|
+
err = e;
|
|
102
|
+
}
|
|
103
|
+
callback(err);
|
|
135
104
|
}
|
|
136
105
|
}
|
|
137
106
|
exports.ComponentConverter = ComponentConverter;
|
|
@@ -150,54 +119,50 @@ class StandardWriter extends ComponentWriter {
|
|
|
150
119
|
this.resolver = resolver;
|
|
151
120
|
this.logger = core_1.Logger.childFromRoot(this.constructor.name);
|
|
152
121
|
}
|
|
153
|
-
_write(chunk, encoding, callback) {
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
const
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
if (path_1.dirname(ignoredPath).includes(path_1.dirname(fullDest)) &&
|
|
166
|
-
path_1.basename(ignoredPath).includes(path_1.basename(fullDest))) {
|
|
167
|
-
return;
|
|
168
|
-
}
|
|
122
|
+
async _write(chunk, encoding, callback) {
|
|
123
|
+
let err;
|
|
124
|
+
if (chunk.writeInfos.length !== 0) {
|
|
125
|
+
try {
|
|
126
|
+
const toResolve = [];
|
|
127
|
+
const writeTasks = chunk.writeInfos.map((info) => {
|
|
128
|
+
const fullDest = (0, path_1.isAbsolute)(info.output) ? info.output : (0, path_1.join)(this.rootDestination, info.output);
|
|
129
|
+
if (!(0, graceful_fs_1.existsSync)(fullDest)) {
|
|
130
|
+
for (const ignoredPath of this.forceIgnoredPaths) {
|
|
131
|
+
if ((0, path_1.dirname)(ignoredPath).includes((0, path_1.dirname)(fullDest)) &&
|
|
132
|
+
(0, path_1.basename)(ignoredPath).includes((0, path_1.basename)(fullDest))) {
|
|
133
|
+
return;
|
|
169
134
|
}
|
|
170
135
|
}
|
|
171
|
-
|
|
136
|
+
}
|
|
137
|
+
if (this.forceIgnoredPaths.has(fullDest)) {
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
// if there are children, resolve each file. o/w just pick one of the files to resolve
|
|
141
|
+
if (toResolve.length === 0 || chunk.component.type.children) {
|
|
142
|
+
// This is a workaround for a server side ListViews bug where
|
|
143
|
+
// duplicate components are sent. W-9614275
|
|
144
|
+
if (toResolve.includes(fullDest)) {
|
|
145
|
+
this.logger.debug(`Ignoring duplicate metadata for: ${fullDest}`);
|
|
172
146
|
return;
|
|
173
147
|
}
|
|
174
|
-
|
|
175
|
-
if (toResolve.length === 0 || chunk.component.type.children) {
|
|
176
|
-
// This is a workaround for a server side ListViews bug where
|
|
177
|
-
// duplicate components are sent. W-9614275
|
|
178
|
-
if (toResolve.includes(fullDest)) {
|
|
179
|
-
this.logger.debug(`Ignoring duplicate metadata for: ${fullDest}`);
|
|
180
|
-
return;
|
|
181
|
-
}
|
|
182
|
-
toResolve.push(fullDest);
|
|
183
|
-
}
|
|
184
|
-
fileSystemHandler_1.ensureFileExists(fullDest);
|
|
185
|
-
return exports.pipeline(info.source, graceful_fs_1.createWriteStream(fullDest));
|
|
186
|
-
});
|
|
187
|
-
// it is a reasonable expectation that when a conversion call exits, the files of
|
|
188
|
-
// every component has been written to the destination. This await ensures the microtask
|
|
189
|
-
// queue is empty when that call exits and overall less memory is consumed.
|
|
190
|
-
yield Promise.all(writeTasks);
|
|
191
|
-
for (const fsPath of toResolve) {
|
|
192
|
-
this.converted.push(...this.resolver.getComponentsFromPath(fsPath));
|
|
148
|
+
toResolve.push(fullDest);
|
|
193
149
|
}
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
150
|
+
(0, fileSystemHandler_1.ensureFileExists)(fullDest);
|
|
151
|
+
return (0, exports.pipeline)(info.source, (0, graceful_fs_1.createWriteStream)(fullDest));
|
|
152
|
+
});
|
|
153
|
+
// it is a reasonable expectation that when a conversion call exits, the files of
|
|
154
|
+
// every component has been written to the destination. This await ensures the microtask
|
|
155
|
+
// queue is empty when that call exits and overall less memory is consumed.
|
|
156
|
+
await Promise.all(writeTasks);
|
|
157
|
+
for (const fsPath of toResolve) {
|
|
158
|
+
this.converted.push(...this.resolver.getComponentsFromPath(fsPath));
|
|
197
159
|
}
|
|
198
160
|
}
|
|
199
|
-
|
|
200
|
-
|
|
161
|
+
catch (e) {
|
|
162
|
+
err = e;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
callback(err);
|
|
201
166
|
}
|
|
202
167
|
}
|
|
203
168
|
exports.StandardWriter = StandardWriter;
|
|
@@ -207,45 +172,44 @@ class ZipWriter extends ComponentWriter {
|
|
|
207
172
|
// compression-/speed+ (0)<---(3)---------->(9) compression+/speed-
|
|
208
173
|
// 3 appears to be a decent balance of compression and speed. It felt like
|
|
209
174
|
// higher values = diminishing returns on compression and made conversion slower
|
|
210
|
-
this.zip = archiver_1.create('zip', { zlib: { level: 3 } });
|
|
175
|
+
this.zip = (0, archiver_1.create)('zip', { zlib: { level: 3 } });
|
|
211
176
|
this.buffers = [];
|
|
212
|
-
exports.pipeline(this.zip, this.getOutputStream());
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
177
|
+
void (0, exports.pipeline)(this.zip, this.getOutputStream());
|
|
178
|
+
}
|
|
179
|
+
// required to be async to override Node's Writable class
|
|
180
|
+
// eslint-disable-next-line @typescript-eslint/require-await
|
|
181
|
+
async _write(chunk, encoding, callback) {
|
|
182
|
+
let err;
|
|
183
|
+
try {
|
|
184
|
+
for (const info of chunk.writeInfos) {
|
|
185
|
+
this.addToZip(info.source, info.output);
|
|
221
186
|
}
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
187
|
+
}
|
|
188
|
+
catch (e) {
|
|
189
|
+
err = e;
|
|
190
|
+
}
|
|
191
|
+
callback(err);
|
|
227
192
|
}
|
|
228
|
-
_final(callback) {
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
callback(err);
|
|
238
|
-
});
|
|
193
|
+
async _final(callback) {
|
|
194
|
+
let err;
|
|
195
|
+
try {
|
|
196
|
+
await this.zip.finalize();
|
|
197
|
+
}
|
|
198
|
+
catch (e) {
|
|
199
|
+
err = e;
|
|
200
|
+
}
|
|
201
|
+
callback(err);
|
|
239
202
|
}
|
|
240
203
|
addToZip(contents, path) {
|
|
241
204
|
this.zip.append(contents, { name: path });
|
|
242
205
|
}
|
|
243
206
|
getOutputStream() {
|
|
244
207
|
if (this.rootDestination) {
|
|
245
|
-
return graceful_fs_1.createWriteStream(this.rootDestination);
|
|
208
|
+
return (0, graceful_fs_1.createWriteStream)(this.rootDestination);
|
|
246
209
|
}
|
|
247
210
|
else {
|
|
248
211
|
const bufferWritable = new stream_1.Writable();
|
|
212
|
+
// eslint-disable-next-line no-underscore-dangle
|
|
249
213
|
bufferWritable._write = (chunk, encoding, cb) => {
|
|
250
214
|
this.buffers.push(chunk);
|
|
251
215
|
cb();
|