Skip to content

Commit 5646042

Browse files
committed
fix: turns bundle parts of SourceMembers into real MDtypes
1 parent b1b9840 commit 5646042

File tree

2 files changed

+33
-39
lines changed

2 files changed

+33
-39
lines changed

src/shared/remoteSourceTrackingService.ts

+23-21
Original file line numberDiff line numberDiff line change
@@ -15,29 +15,9 @@ import { ComponentStatus } from '@salesforce/source-deploy-retrieve';
1515
import { Dictionary, Optional } from '@salesforce/ts-types';
1616
import { env, toNumber } from '@salesforce/kit';
1717
import { RemoteSyncInput } from '../shared/types';
18+
import { ChangeResult, RemoteChangeElement, MemberRevision, SourceMember } from './types';
1819
import { getMetadataKeyFromFileResponse } from './metadataKeys';
1920

20-
export type MemberRevision = {
21-
serverRevisionCounter: number;
22-
lastRetrievedFromServer: number | null;
23-
memberType: string;
24-
isNameObsolete: boolean;
25-
};
26-
27-
export type SourceMember = {
28-
MemberType: string;
29-
MemberName: string;
30-
IsNameObsolete: boolean;
31-
RevisionCounter: number;
32-
};
33-
34-
export type RemoteChangeElement = {
35-
name: string;
36-
type: string;
37-
deleted?: boolean;
38-
modified?: boolean;
39-
};
40-
4121
// represents the contents of the config file stored in 'maxRevision.json'
4222
interface Contents {
4323
serverMaxRevisionCounter: number;
@@ -574,3 +554,25 @@ export class RemoteSourceTrackingService extends ConfigFile<RemoteSourceTracking
574554
}
575555
}
576556
}
557+
558+
/**
559+
* pass in an RCE, and this will return a pullable ChangeResult.
560+
* Useful for correcing bundle types where the files show change results with types but aren't resolvable
561+
*/
562+
export const remoteChangeElementToChangeResult = (rce: RemoteChangeElement): ChangeResult => {
563+
return {
564+
...rce,
565+
...(mappingsForSourceMemberTypesToMetadataType.has(rce.type)
566+
? {
567+
name: rce.name.split('/')[0],
568+
type: mappingsForSourceMemberTypesToMetadataType.get(rce.type),
569+
}
570+
: {}),
571+
origin: 'remote', // we know they're remote
572+
};
573+
};
574+
575+
const mappingsForSourceMemberTypesToMetadataType = new Map<string, string>([
576+
['AuraDefinition', 'AuraDefinitionBundle'],
577+
['LightningComponentResource', 'LightningComponentBundle'],
578+
]);

src/sourceTracking.ts

+10-18
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,14 @@ import {
1616
FileResponse,
1717
} from '@salesforce/source-deploy-retrieve';
1818

19-
import { RemoteSourceTrackingService, RemoteChangeElement, getMetadataKey } from './shared/remoteSourceTrackingService';
19+
import {
20+
RemoteSourceTrackingService,
21+
getMetadataKey,
22+
remoteChangeElementToChangeResult,
23+
} from './shared/remoteSourceTrackingService';
2024
import { ShadowRepo } from './shared/localShadowRepo';
2125
import { filenamesToVirtualTree } from './shared/filenamesToVirtualTree';
22-
import { RemoteSyncInput } from './shared/types';
26+
import { RemoteSyncInput, ChangeResult, RemoteChangeElement } from './shared/types';
2327

2428
export const getKeyFromObject = (element: RemoteChangeElement | ChangeResult): string => {
2529
if (element.type && element.name) {
@@ -44,20 +48,6 @@ export interface LocalUpdateOptions {
4448
deletedFiles?: string[];
4549
}
4650

47-
/**
48-
* Summary type that supports both local and remote change types
49-
*/
50-
export type ChangeResult = Partial<RemoteChangeElement> & {
51-
origin: 'local' | 'remote';
52-
filenames?: string[];
53-
};
54-
55-
export interface ConflictError {
56-
message: string;
57-
name: 'conflict';
58-
conflicts: ChangeResult[];
59-
}
60-
6151
export interface SourceTrackingOptions {
6252
org: Org;
6353
project: SfdxProject;
@@ -183,10 +173,12 @@ export class SourceTracking extends AsyncCreatable {
183173
filteredChanges = remoteChanges.filter((change) => !change.deleted);
184174
}
185175
if (options.format === 'ChangeResult') {
186-
return filteredChanges.map((change) => ({ ...change, origin: 'remote' })) as T[];
176+
return filteredChanges.map((change) => remoteChangeElementToChangeResult(change)) as T[];
187177
}
188178
if (options.format === 'ChangeResultWithPaths') {
189-
return this.populateFilePaths(filteredChanges.map((change) => ({ ...change, origin: 'remote' }))) as T[];
179+
return this.populateFilePaths(
180+
filteredChanges.map((change) => remoteChangeElementToChangeResult(change))
181+
) as T[];
190182
}
191183
// turn it into a componentSet to resolve filenames
192184
const remoteChangesAsComponentLike = filteredChanges.map((element) => ({

0 commit comments

Comments
 (0)