@salesforce/source-deploy-retrieve 13.7.1-compute.2 → 13.8.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.
Files changed (44) hide show
  1. package/lib/src/client/index.d.ts +0 -1
  2. package/lib/src/client/index.js.map +1 -1
  3. package/lib/src/client/metadataApiDeploy.d.ts +0 -7
  4. package/lib/src/client/metadataApiDeploy.js +7 -24
  5. package/lib/src/client/metadataApiDeploy.js.map +1 -1
  6. package/lib/src/client/metadataApiRetrieve.d.ts +0 -7
  7. package/lib/src/client/metadataApiRetrieve.js +6 -25
  8. package/lib/src/client/metadataApiRetrieve.js.map +1 -1
  9. package/lib/src/client/metadataTransfer.d.ts +0 -3
  10. package/lib/src/client/metadataTransfer.js +1 -11
  11. package/lib/src/client/metadataTransfer.js.map +1 -1
  12. package/lib/src/client/types.d.ts +0 -8
  13. package/lib/src/collections/componentSet.d.ts +0 -9
  14. package/lib/src/collections/componentSet.js +1 -130
  15. package/lib/src/collections/componentSet.js.map +1 -1
  16. package/lib/src/collections/componentSetBuilder.js +11 -2
  17. package/lib/src/collections/componentSetBuilder.js.map +1 -1
  18. package/lib/src/index.d.ts +1 -1
  19. package/lib/src/index.js.map +1 -1
  20. package/lib/src/registry/metadataRegistry.json +0 -14
  21. package/lib/src/registry/types.d.ts +0 -2
  22. package/lib/src/resolve/adapters/uiBundleValidation.d.ts +5 -1
  23. package/lib/src/resolve/adapters/uiBundleValidation.js +97 -50
  24. package/lib/src/resolve/adapters/uiBundleValidation.js.map +1 -1
  25. package/messages/uiBundleValidation.md +77 -17
  26. package/package.json +1 -4
  27. package/lib/src/client/transports/computeSourceBundle.d.ts +0 -10
  28. package/lib/src/client/transports/computeSourceBundle.js +0 -276
  29. package/lib/src/client/transports/computeSourceBundle.js.map +0 -1
  30. package/lib/src/client/transports/herokuComputeTransport.d.ts +0 -12
  31. package/lib/src/client/transports/herokuComputeTransport.js +0 -168
  32. package/lib/src/client/transports/herokuComputeTransport.js.map +0 -1
  33. package/lib/src/client/transports/index.d.ts +0 -2
  34. package/lib/src/client/transports/index.js +0 -18
  35. package/lib/src/client/transports/index.js.map +0 -1
  36. package/lib/src/client/transports/transportCoordinator.d.ts +0 -20
  37. package/lib/src/client/transports/transportCoordinator.js +0 -67
  38. package/lib/src/client/transports/transportCoordinator.js.map +0 -1
  39. package/lib/src/client/transports/transportPipeline.d.ts +0 -51
  40. package/lib/src/client/transports/transportPipeline.js +0 -180
  41. package/lib/src/client/transports/transportPipeline.js.map +0 -1
  42. package/lib/src/client/transports/types.d.ts +0 -45
  43. package/lib/src/client/transports/types.js +0 -18
  44. package/lib/src/client/transports/types.js.map +0 -1
@@ -1,276 +0,0 @@
1
- "use strict";
2
- /*
3
- * Copyright 2026, Salesforce, Inc.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
18
- if (k2 === undefined) k2 = k;
19
- var desc = Object.getOwnPropertyDescriptor(m, k);
20
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
21
- desc = { enumerable: true, get: function() { return m[k]; } };
22
- }
23
- Object.defineProperty(o, k2, desc);
24
- }) : (function(o, m, k, k2) {
25
- if (k2 === undefined) k2 = k;
26
- o[k2] = m[k];
27
- }));
28
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
29
- Object.defineProperty(o, "default", { enumerable: true, value: v });
30
- }) : function(o, v) {
31
- o["default"] = v;
32
- });
33
- var __importStar = (this && this.__importStar) || (function () {
34
- var ownKeys = function(o) {
35
- ownKeys = Object.getOwnPropertyNames || function (o) {
36
- var ar = [];
37
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
38
- return ar;
39
- };
40
- return ownKeys(o);
41
- };
42
- return function (mod) {
43
- if (mod && mod.__esModule) return mod;
44
- var result = {};
45
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
46
- __setModuleDefault(result, mod);
47
- return result;
48
- };
49
- })();
50
- Object.defineProperty(exports, "__esModule", { value: true });
51
- exports.MAX_COMPRESSED_BYTES = void 0;
52
- exports.packageComputeBundle = packageComputeBundle;
53
- exports.unpackComputeBundle = unpackComputeBundle;
54
- const promises_1 = require("node:fs/promises");
55
- const node_path_1 = require("node:path");
56
- const node_zlib_1 = require("node:zlib");
57
- const consumers_1 = require("node:stream/consumers");
58
- const tarStream = __importStar(require("tar-stream"));
59
- const core_1 = require("@salesforce/core");
60
- const forceIgnore_1 = require("../../resolve/forceIgnore");
61
- const logger = core_1.Logger.childFromRoot('computeSourceBundle');
62
- // Compute source bundles are app source, not dependency caches or compiled artifacts.
63
- // Cap both gzip layers and the tar entries retained in memory when unpacking.
64
- exports.MAX_COMPRESSED_BYTES = 40 * 1024 * 1024;
65
- const MAX_TAR_BYTES = 64 * 1024 * 1024;
66
- const MAX_ENTRY_BYTES = 16 * 1024 * 1024;
67
- const MAX_TOTAL_ENTRY_BYTES = 40 * 1024 * 1024;
68
- const MAX_ENTRIES = 1000;
69
- // Bundle shape: deployment-bundle.tar.gz containing api-spec.yaml plus a
70
- // nested source.tar.gz with the app's source files.
71
- async function packageComputeBundle(appDir, name) {
72
- const apiSpecPath = (0, node_path_1.join)(appDir, 'api-spec.yaml');
73
- try {
74
- await (0, promises_1.access)(apiSpecPath);
75
- }
76
- catch {
77
- throw new core_1.SfError(`PlatformComputeApp '${name}' is missing required api-spec.yaml in ${appDir}`, 'MissingApiSpec');
78
- }
79
- const metaFileName = `${name}.compute-meta.xml`;
80
- const excluded = new Set([metaFileName, '.forceignore']);
81
- // Both files are consumed at build/runtime, so a broad .forceignore must not
82
- // remove them from the nested source archive.
83
- const alwaysIncluded = new Set(['api-spec.yaml', 'project.toml']);
84
- const forceIgnore = forceIgnore_1.ForceIgnore.findAndCreate(appDir);
85
- const sourceRelativePaths = await listFilesRecursive(appDir, (file) => !excluded.has(file) && (alwaysIncluded.has(file) || forceIgnore.accepts((0, node_path_1.join)(appDir, file))));
86
- logger.debug('packaging %s: %d files after exclusions/.forceignore', appDir, sourceRelativePaths.length);
87
- const apiSpec = await (0, promises_1.readFile)(apiSpecPath);
88
- if (apiSpec.length > MAX_ENTRY_BYTES) {
89
- throw new Error(`Compute source bundle: api-spec.yaml entry size limit (${MAX_ENTRY_BYTES} bytes) exceeded`);
90
- }
91
- let sourceBytes = 0;
92
- for (const relativePath of sourceRelativePaths) {
93
- // eslint-disable-next-line no-await-in-loop
94
- const { size } = await (0, promises_1.lstat)((0, node_path_1.join)(appDir, relativePath));
95
- if (size > MAX_ENTRY_BYTES) {
96
- throw new Error(`Compute source bundle: entry size limit (${MAX_ENTRY_BYTES} bytes) exceeded for ${relativePath}`);
97
- }
98
- sourceBytes += size;
99
- if (sourceBytes > MAX_TOTAL_ENTRY_BYTES) {
100
- throw new Error(`Compute source bundle: total size limit (${MAX_TOTAL_ENTRY_BYTES} bytes) exceeded`);
101
- }
102
- }
103
- const sourceEntries = await Promise.all(sourceRelativePaths.map(async (relativePath) => ({
104
- name: relativePath,
105
- data: await (0, promises_1.readFile)((0, node_path_1.join)(appDir, relativePath)),
106
- })));
107
- // The source may change between stat and read; check actual bytes before assembling.
108
- if (sourceEntries.some(({ data }) => data.length > MAX_ENTRY_BYTES)) {
109
- throw new Error(`Compute source bundle: entry size limit (${MAX_ENTRY_BYTES} bytes) exceeded`);
110
- }
111
- if (sourceEntries.reduce((total, { data }) => total + data.length, 0) > MAX_TOTAL_ENTRY_BYTES) {
112
- throw new Error(`Compute source bundle: total size limit (${MAX_TOTAL_ENTRY_BYTES} bytes) exceeded`);
113
- }
114
- const sourceTarGz = await tarGzip(sourceEntries);
115
- if (sourceTarGz.length > exports.MAX_COMPRESSED_BYTES) {
116
- throw new Error(`Compute source bundle: source.tar.gz entry size limit (${exports.MAX_COMPRESSED_BYTES} bytes) exceeded`);
117
- }
118
- if (apiSpec.length + sourceTarGz.length > MAX_TOTAL_ENTRY_BYTES) {
119
- throw new Error(`Compute source bundle: outer total size limit (${MAX_TOTAL_ENTRY_BYTES} bytes) exceeded`);
120
- }
121
- const buffer = await tarGzip([
122
- { name: 'api-spec.yaml', data: apiSpec },
123
- { name: 'source.tar.gz', data: sourceTarGz },
124
- ]);
125
- if (buffer.length > exports.MAX_COMPRESSED_BYTES) {
126
- throw new Error(`Compute source bundle: compressed size limit (${exports.MAX_COMPRESSED_BYTES} bytes) exceeded`);
127
- }
128
- logger.debug('packaged %s into %d bytes (%d files)', appDir, buffer.length, sourceEntries.length);
129
- return { buffer, fileCount: sourceEntries.length };
130
- }
131
- async function unpackComputeBundle(buffer, appDir) {
132
- const outer = await untarGzip(buffer, true);
133
- const apiSpec = outer['api-spec.yaml'];
134
- const sourceTarGz = outer['source.tar.gz'];
135
- if (!apiSpec || !sourceTarGz) {
136
- const missing = [!apiSpec && 'api-spec.yaml', !sourceTarGz && 'source.tar.gz'].filter(Boolean).join(', ');
137
- throw new Error(`Malformed compute source bundle: missing ${missing}`);
138
- }
139
- const resolvedAppDir = (0, node_path_1.resolve)(appDir);
140
- await rejectSymlinks(resolvedAppDir);
141
- await (0, promises_1.mkdir)(appDir, { recursive: true });
142
- await rejectSymlinks((0, node_path_1.join)(resolvedAppDir, 'api-spec.yaml'));
143
- await (0, promises_1.writeFile)((0, node_path_1.join)(appDir, 'api-spec.yaml'), apiSpec);
144
- const sourceEntries = await untarGzip(sourceTarGz, false);
145
- await Promise.all(Object.entries(sourceEntries).map(async ([relativePath, data]) => {
146
- const filePath = (0, node_path_1.resolve)(appDir, relativePath);
147
- // tar-slip guard: reject entries that escape appDir
148
- if (filePath !== resolvedAppDir && !filePath.startsWith(resolvedAppDir + node_path_1.sep)) {
149
- throw new Error(`Malformed compute source bundle: unsafe entry path "${relativePath}"`);
150
- }
151
- await rejectSymlinks(filePath);
152
- await (0, promises_1.mkdir)((0, node_path_1.dirname)(filePath), { recursive: true });
153
- await rejectSymlinks(filePath);
154
- await (0, promises_1.writeFile)(filePath, data);
155
- }));
156
- return { fileCount: new Set([...Object.keys(sourceEntries), 'api-spec.yaml']).size };
157
- }
158
- async function rejectSymlinks(filePath) {
159
- let current = (0, node_path_1.resolve)(filePath);
160
- const root = (0, node_path_1.parse)(current).root;
161
- // The filesystem root is trusted; inspect every component beneath it, including
162
- // ancestors of an already-existing app or output file.
163
- while (current !== root) {
164
- try {
165
- // eslint-disable-next-line no-await-in-loop
166
- const stat = await (0, promises_1.lstat)(current);
167
- if (stat.isSymbolicLink()) {
168
- // macOS exposes /var as a system alias for /private/var. Do not reject
169
- // ordinary output paths in its temporary directory for that alias.
170
- // eslint-disable-next-line no-await-in-loop
171
- if (!(process.platform === 'darwin' && current === '/var' && (await (0, promises_1.realpath)(current)) === '/private/var')) {
172
- throw new Error(`Malformed compute source bundle: symlink in output path "${current}"`);
173
- }
174
- }
175
- }
176
- catch (err) {
177
- if (err.code !== 'ENOENT')
178
- throw err;
179
- }
180
- current = (0, node_path_1.dirname)(current);
181
- }
182
- }
183
- function untarGzip(buffer, outer) {
184
- return new Promise((resolveEntries, reject) => {
185
- if (buffer.length > exports.MAX_COMPRESSED_BYTES) {
186
- reject(new Error(`Malformed compute source bundle: compressed size limit (${exports.MAX_COMPRESSED_BYTES} bytes) exceeded`));
187
- return;
188
- }
189
- let decompressed;
190
- try {
191
- decompressed = (0, node_zlib_1.gunzipSync)(buffer, { maxOutputLength: MAX_TAR_BYTES });
192
- }
193
- catch (err) {
194
- reject(new Error(err.code === 'ERR_BUFFER_TOO_LARGE'
195
- ? `Malformed compute source bundle: decompressed size limit (${MAX_TAR_BYTES} bytes) exceeded`
196
- : 'Malformed compute source bundle: not a valid gzip archive'));
197
- return;
198
- }
199
- const entries = {};
200
- const extract = tarStream.extract();
201
- let entryCount = 0;
202
- let totalBytes = 0;
203
- extract.on('entry', (header, stream, next) => {
204
- entryCount++;
205
- if (entryCount > MAX_ENTRIES) {
206
- reject(new Error(`Malformed compute source bundle: entry count limit (${MAX_ENTRIES}) exceeded`));
207
- extract.destroy();
208
- return;
209
- }
210
- const entryLimit = outer && header.name === 'source.tar.gz' ? exports.MAX_COMPRESSED_BYTES : MAX_ENTRY_BYTES;
211
- if (header.size > entryLimit || totalBytes + header.size > MAX_TOTAL_ENTRY_BYTES) {
212
- reject(new Error(`Malformed compute source bundle: entry size limit (${entryLimit} bytes) or total size limit (${MAX_TOTAL_ENTRY_BYTES} bytes) exceeded`));
213
- extract.destroy();
214
- return;
215
- }
216
- const chunks = [];
217
- stream.on('data', (chunk) => {
218
- totalBytes += chunk.length;
219
- if (totalBytes > MAX_TOTAL_ENTRY_BYTES) {
220
- reject(new Error(`Malformed compute source bundle: total size limit (${MAX_TOTAL_ENTRY_BYTES} bytes) exceeded`));
221
- extract.destroy();
222
- return;
223
- }
224
- chunks.push(chunk);
225
- });
226
- stream.on('end', () => {
227
- entries[header.name] = Buffer.concat(chunks);
228
- next();
229
- });
230
- stream.on('error', reject);
231
- stream.resume();
232
- });
233
- extract.on('finish', () => resolveEntries(entries));
234
- extract.on('error', () => reject(new Error('Malformed compute source bundle: not a valid tar archive')));
235
- extract.end(decompressed);
236
- });
237
- }
238
- async function tarGzip(entries) {
239
- const pack = tarStream.pack();
240
- // Pipe BEFORE writing entries to avoid deadlock: pack is a Readable with
241
- // a 16KB highWaterMark — without a consumer attached, backpressure stalls
242
- // the entry callbacks once buffered bytes exceed the threshold.
243
- const gzippedBufferPromise = (0, consumers_1.buffer)(pack.pipe((0, node_zlib_1.createGzip)()));
244
- await entries.reduce((previous, { name, data }) => previous.then(async () => new Promise((resolveEntry, reject) => {
245
- pack.entry({ name, size: data.length }, data, (err) => (err ? reject(err) : resolveEntry()));
246
- })), Promise.resolve());
247
- pack.finalize();
248
- return gzippedBufferPromise;
249
- }
250
- async function listFilesRecursive(base, accepts) {
251
- const files = [];
252
- async function walk(dir) {
253
- const entries = await (0, promises_1.readdir)(dir, { withFileTypes: true });
254
- for (const entry of entries) {
255
- if (entry.name.startsWith('.'))
256
- continue;
257
- const full = (0, node_path_1.join)(dir, entry.name);
258
- if (entry.isDirectory()) {
259
- // eslint-disable-next-line no-await-in-loop
260
- await walk(full);
261
- }
262
- else if (entry.isFile()) {
263
- const file = (0, node_path_1.relative)(base, full).split(node_path_1.sep).join('/');
264
- if (accepts(file)) {
265
- if (files.length === MAX_ENTRIES) {
266
- throw new Error(`Compute source bundle: entry count limit (${MAX_ENTRIES}) exceeded`);
267
- }
268
- files.push(file);
269
- }
270
- }
271
- }
272
- }
273
- await walk(base);
274
- return files;
275
- }
276
- //# sourceMappingURL=computeSourceBundle.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"computeSourceBundle.js","sourceRoot":"","sources":["../../../../src/client/transports/computeSourceBundle.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- import { SourceComponent } from '../../resolve/sourceComponent';
2
- import { TransportContext, TransportDescription, TransportProvider, TransportResult } from './types';
3
- export declare class HerokuComputeTransport implements TransportProvider {
4
- readonly name = "herokuCompute";
5
- private readonly logger;
6
- describe(): TransportDescription;
7
- handles(component: SourceComponent): boolean;
8
- beforeDeploy(context: TransportContext): Promise<TransportResult>;
9
- afterRetrieve(context: TransportContext): Promise<TransportResult>;
10
- private assertComputeComponent;
11
- private checkForFailures;
12
- }
@@ -1,168 +0,0 @@
1
- "use strict";
2
- /*
3
- * Copyright 2026, Salesforce, Inc.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- var __importDefault = (this && this.__importDefault) || function (mod) {
18
- return (mod && mod.__esModule) ? mod : { "default": mod };
19
- };
20
- Object.defineProperty(exports, "__esModule", { value: true });
21
- exports.HerokuComputeTransport = void 0;
22
- const node_path_1 = require("node:path");
23
- const form_data_1 = __importDefault(require("form-data"));
24
- const core_1 = require("@salesforce/core");
25
- const constants_1 = require("../../common/constants");
26
- const types_1 = require("../types");
27
- const computeSourceBundle_1 = require("./computeSourceBundle");
28
- const ENDPOINT = '/connect/compute/source';
29
- function resolveContentPath(component, project) {
30
- const packageDir = project.getDefaultPackage().fullPath;
31
- return (0, node_path_1.join)(packageDir, constants_1.DEFAULT_PACKAGE_ROOT_SFDX, component.type.directoryName, component.fullName);
32
- }
33
- async function uploadSource(connection, name, bundle) {
34
- const form = new form_data_1.default();
35
- form.append('name', name);
36
- form.append('bundle', bundle, {
37
- filename: 'deployment-bundle.tar.gz',
38
- contentType: 'application/gzip',
39
- });
40
- return connection.request({
41
- method: 'POST',
42
- url: ENDPOINT,
43
- body: form.getBuffer(),
44
- headers: form.getHeaders(),
45
- });
46
- }
47
- // jsforce decodes to UTF-8 by default — lossy for gzip bytes.
48
- // encoding: 'binary' (latin1) preserves byte values 1:1. Connection.request
49
- // buffers the complete response; this guard prevents a second oversized Buffer
50
- // allocation, while unpackComputeBundle limits the archive after download.
51
- async function downloadSource(connection, appIdOrName) {
52
- const body = await connection.request({ method: 'GET', url: `/connect/compute/${encodeURIComponent(appIdOrName)}/source` }, { encoding: 'binary' });
53
- if (body.length > computeSourceBundle_1.MAX_COMPRESSED_BYTES) {
54
- throw new Error(`Compute source bundle: compressed size limit (${computeSourceBundle_1.MAX_COMPRESSED_BYTES} bytes) exceeded`);
55
- }
56
- return Buffer.from(body, 'binary');
57
- }
58
- class HerokuComputeTransport {
59
- name = 'herokuCompute';
60
- logger = core_1.Logger.childFromRoot('HerokuComputeTransport');
61
- // eslint-disable-next-line class-methods-use-this
62
- describe() {
63
- return { label: 'Heroku Compute', endpoint: ENDPOINT };
64
- }
65
- handles(component) {
66
- return component.type.strategies?.transport === this.name;
67
- }
68
- async beforeDeploy(context) {
69
- const fileResponses = [];
70
- const operationResults = [];
71
- for (const component of context.components) {
72
- try {
73
- this.assertComputeComponent(component);
74
- this.logger.debug('deploying compute source for %s from %s', component.fullName, component.content);
75
- // eslint-disable-next-line no-await-in-loop
76
- const bundle = await (0, computeSourceBundle_1.packageComputeBundle)(component.content, component.fullName);
77
- this.logger.debug('packaged %s: %d bytes, %d files', component.fullName, bundle.buffer.length, bundle.fileCount);
78
- // eslint-disable-next-line no-await-in-loop
79
- const result = await uploadSource(context.connection, component.fullName, bundle.buffer);
80
- this.logger.debug('uploaded %s: buildId=%s', component.fullName, result.buildId);
81
- fileResponses.push({
82
- fullName: component.fullName,
83
- type: component.type.name,
84
- state: types_1.ComponentStatus.Changed,
85
- filePath: component.content,
86
- });
87
- operationResults.push({
88
- transportLabel: this.describe().label,
89
- operation: `Upload ${component.fullName}`,
90
- status: 'Succeeded',
91
- });
92
- }
93
- catch (err) {
94
- fileResponses.push({
95
- fullName: component.fullName,
96
- type: component.type.name,
97
- state: types_1.ComponentStatus.Failed,
98
- filePath: component.content ?? component.xml ?? '',
99
- error: `Heroku Compute upload failed for '${component.fullName}': ${err.message}`,
100
- problemType: 'Error',
101
- });
102
- }
103
- }
104
- return { ...this.checkForFailures(fileResponses, 'upload'), operationResults };
105
- }
106
- async afterRetrieve(context) {
107
- const fileResponses = [];
108
- for (const component of context.components) {
109
- try {
110
- const packageName = context.transportPackageNames?.[`${component.type.name}#${component.fullName}`];
111
- const packageOutput = packageName
112
- ? context.packageOptions
113
- ?.map((option) => (typeof option === 'string' ? { name: option, outputDir: option } : option))
114
- .find((option) => option.name === packageName)
115
- : undefined;
116
- if (!component.content && packageName && !packageOutput) {
117
- throw new Error(`No package option found for '${packageName}' (component '${component.fullName}')`);
118
- }
119
- const contentPath = component.content ??
120
- (packageOutput || context.output
121
- ? (0, node_path_1.join)(packageOutput?.outputDir ?? packageOutput?.name ?? context.output, component.type.directoryName, component.fullName)
122
- : resolveContentPath(component, context.project));
123
- this.logger.debug('retrieving compute source for %s into %s', component.fullName, contentPath);
124
- // eslint-disable-next-line no-await-in-loop
125
- const buffer = await downloadSource(context.connection, component.fullName);
126
- // eslint-disable-next-line no-await-in-loop
127
- const unpacked = await (0, computeSourceBundle_1.unpackComputeBundle)(buffer, contentPath);
128
- this.logger.debug('unpacked %s: %d files into %s', component.fullName, unpacked.fileCount, contentPath);
129
- fileResponses.push({
130
- fullName: component.fullName,
131
- type: component.type.name,
132
- state: types_1.ComponentStatus.Changed,
133
- filePath: contentPath,
134
- });
135
- }
136
- catch (err) {
137
- fileResponses.push({
138
- fullName: component.fullName,
139
- type: component.type.name,
140
- state: types_1.ComponentStatus.Failed,
141
- filePath: component.content ?? component.xml ?? '',
142
- error: `Heroku Compute download failed for '${component.fullName}': ${err.message}`,
143
- problemType: 'Error',
144
- });
145
- }
146
- }
147
- return this.checkForFailures(fileResponses, 'download');
148
- }
149
- // eslint-disable-next-line class-methods-use-this
150
- assertComputeComponent(component) {
151
- if (!component.content) {
152
- throw new core_1.SfError(`HerokuComputeTransport requires a content path for '${component.fullName}'`, 'MissingComponentContent');
153
- }
154
- }
155
- // eslint-disable-next-line class-methods-use-this
156
- checkForFailures(fileResponses, operation) {
157
- const failures = fileResponses.filter((r) => r.state === types_1.ComponentStatus.Failed);
158
- if (failures.length > 0) {
159
- const details = failures.map((f) => f.error ?? f.fullName).join('; ');
160
- const error = new core_1.SfError(`Heroku Compute ${operation} failed: ${details}`, `HerokuCompute${operation.charAt(0).toUpperCase() + operation.slice(1)}Error`);
161
- error.data = fileResponses;
162
- throw error;
163
- }
164
- return { fileResponses };
165
- }
166
- }
167
- exports.HerokuComputeTransport = HerokuComputeTransport;
168
- //# sourceMappingURL=herokuComputeTransport.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"herokuComputeTransport.js","sourceRoot":"","sources":["../../../../src/client/transports/herokuComputeTransport.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export type { TransportPlan, TransportPlanPhase, TransportStageEvent } from './transportPipeline';
2
- export type { TransportOperationResult } from './types';
@@ -1,18 +0,0 @@
1
- "use strict";
2
- /*
3
- * Copyright 2026, Salesforce, Inc.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- Object.defineProperty(exports, "__esModule", { value: true });
18
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/client/transports/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG"}
@@ -1,20 +0,0 @@
1
- import { RequestStatus } from '../types';
2
- import { DeployResult } from '../metadataApiDeploy';
3
- import { RetrieveResult } from '../metadataApiRetrieve';
4
- import { TransportContext } from './types';
5
- import { TransportGroup, TransportPipeline } from './transportPipeline';
6
- type TransportOperation = 'deploy' | 'retrieve';
7
- type TransportResult = DeployResult | RetrieveResult;
8
- export declare class TransportCoordinator {
9
- private readonly pipeline;
10
- private readonly groups;
11
- private readonly context;
12
- private readonly operation;
13
- private beforeMetadataResults;
14
- private readonly beforeAdded;
15
- private readonly afterStarted;
16
- constructor(pipeline: TransportPipeline, groups: TransportGroup[], context: TransportContext, operation: TransportOperation);
17
- runBeforeMetadata(): Promise<void>;
18
- processResult(result: TransportResult, status: RequestStatus): Promise<void>;
19
- }
20
- export {};
@@ -1,67 +0,0 @@
1
- "use strict";
2
- /*
3
- * Copyright 2026, Salesforce, Inc.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.TransportCoordinator = void 0;
19
- const types_1 = require("../types");
20
- const metadataApiRetrieve_1 = require("../metadataApiRetrieve");
21
- class TransportCoordinator {
22
- pipeline;
23
- groups;
24
- context;
25
- operation;
26
- beforeMetadataResults = {
27
- fileResponses: [],
28
- asyncHandles: [],
29
- operationResults: [],
30
- };
31
- beforeAdded = new WeakSet();
32
- afterStarted = new WeakSet();
33
- constructor(pipeline, groups, context, operation) {
34
- this.pipeline = pipeline;
35
- this.groups = groups;
36
- this.context = context;
37
- this.operation = operation;
38
- }
39
- async runBeforeMetadata() {
40
- const result = await this.pipeline.runBeforeMetadata(this.context, this.groups, this.operation);
41
- this.beforeMetadataResults = result;
42
- }
43
- async processResult(result, status) {
44
- if (!this.beforeAdded.has(result)) {
45
- this.beforeAdded.add(result);
46
- result.addTransportResults(this.beforeMetadataResults.fileResponses, this.beforeMetadataResults.asyncHandles, this.beforeMetadataResults.operationResults);
47
- }
48
- if (status !== types_1.RequestStatus.Succeeded)
49
- return;
50
- if (this.afterStarted.has(result))
51
- return;
52
- this.afterStarted.add(result);
53
- if (this.operation === 'retrieve' && result instanceof metadataApiRetrieve_1.RetrieveResult) {
54
- const extractedByKey = new Map(result.components
55
- .getSourceComponents()
56
- .toArray()
57
- .map((component) => [`${component.type.name}#${component.fullName}`, component]));
58
- for (const group of this.groups) {
59
- group.components = group.components.map((component) => extractedByKey.get(`${component.type.name}#${component.fullName}`) ?? component);
60
- }
61
- }
62
- const afterMetadataResults = await this.pipeline.runAfterMetadata(this.context, this.groups, this.operation);
63
- result.addTransportResults(afterMetadataResults.fileResponses, afterMetadataResults.asyncHandles, afterMetadataResults.operationResults);
64
- }
65
- }
66
- exports.TransportCoordinator = TransportCoordinator;
67
- //# sourceMappingURL=transportCoordinator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transportCoordinator.js","sourceRoot":"","sources":["../../../../src/client/transports/transportCoordinator.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,oCAAyC;AAEzC,gEAAwD;AAOxD,MAAa,oBAAoB;IAUZ;IACA;IACA;IACA;IAZX,qBAAqB,GAA4B;QACvD,aAAa,EAAE,EAAE;QACjB,YAAY,EAAE,EAAE;QAChB,gBAAgB,EAAE,EAAE;KACrB,CAAC;IACe,WAAW,GAAG,IAAI,OAAO,EAAmB,CAAC;IAC7C,YAAY,GAAG,IAAI,OAAO,EAAmB,CAAC;IAE/D,YACmB,QAA2B,EAC3B,MAAwB,EACxB,OAAyB,EACzB,SAA6B;QAH7B,aAAQ,GAAR,QAAQ,CAAmB;QAC3B,WAAM,GAAN,MAAM,CAAkB;QACxB,YAAO,GAAP,OAAO,CAAkB;QACzB,cAAS,GAAT,SAAS,CAAoB;IAC7C,CAAC;IAEG,KAAK,CAAC,iBAAiB;QAC5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAChG,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC;IACtC,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,MAAuB,EAAE,MAAqB;QACvE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC7B,MAAM,CAAC,mBAAmB,CACxB,IAAI,CAAC,qBAAqB,CAAC,aAAa,EACxC,IAAI,CAAC,qBAAqB,CAAC,YAAY,EACvC,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAC5C,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,KAAK,qBAAa,CAAC,SAAS;YAAE,OAAO;QAC/C,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,OAAO;QAC1C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAE9B,IAAI,IAAI,CAAC,SAAS,KAAK,UAAU,IAAI,MAAM,YAAY,oCAAc,EAAE,CAAC;YACtE,MAAM,cAAc,GAAG,IAAI,GAAG,CAC5B,MAAM,CAAC,UAAU;iBACd,mBAAmB,EAAE;iBACrB,OAAO,EAAE;iBACT,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,CAAC,CACnF,CAAC;YACF,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CACrC,CAAC,SAAS,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC,IAAI,SAAS,CAC/F,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7G,MAAM,CAAC,mBAAmB,CACxB,oBAAoB,CAAC,aAAa,EAClC,oBAAoB,CAAC,YAAY,EACjC,oBAAoB,CAAC,gBAAgB,CACtC,CAAC;IACJ,CAAC;CACF;AAvDD,oDAuDC"}