Skip to content

Commit 4869960

Browse files
committed
Configurable custom object visibility
1 parent c756c67 commit 4869960

File tree

2 files changed

+32
-17
lines changed

2 files changed

+32
-17
lines changed

examples/vitepress/docs/.vitepress/cache/deps/_metadata.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,31 @@
11
{
2-
"hash": "05eb2d4f",
2+
"hash": "38118198",
33
"configHash": "7f7b0dad",
4-
"lockfileHash": "3a9c2374",
5-
"browserHash": "a831d6e7",
4+
"lockfileHash": "09651dfc",
5+
"browserHash": "1bd3b4f7",
66
"optimized": {
77
"vue": {
88
"src": "../../../../node_modules/vue/dist/vue.runtime.esm-bundler.js",
99
"file": "vue.js",
10-
"fileHash": "1632d62a",
10+
"fileHash": "12c2c40e",
1111
"needsInterop": false
1212
},
1313
"vitepress > @vue/devtools-api": {
1414
"src": "../../../../node_modules/@vue/devtools-api/dist/index.js",
1515
"file": "vitepress___@vue_devtools-api.js",
16-
"fileHash": "dc8fec00",
16+
"fileHash": "7b21a64c",
1717
"needsInterop": false
1818
},
1919
"vitepress > @vueuse/core": {
2020
"src": "../../../../node_modules/@vueuse/core/index.mjs",
2121
"file": "vitepress___@vueuse_core.js",
22-
"fileHash": "3d02446b",
22+
"fileHash": "5d565a7a",
2323
"needsInterop": false
2424
},
2525
"@theme/index": {
2626
"src": "../../../../node_modules/vitepress/dist/client/theme-default/index.js",
2727
"file": "@theme_index.js",
28-
"fileHash": "3d2d1de3",
28+
"fileHash": "e4373905",
2929
"needsInterop": false
3030
}
3131
},

src/core/reflection/sobject/reflectCustomFieldsAndObjectsAndMetadataRecords.ts

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,20 @@ export function reflectCustomFieldsAndObjectsAndMetadataRecords(
2020
return parsedFiles.filter((parsedFile) => parsedFile.type.deploymentStatus === 'Deployed');
2121
}
2222

23-
function filterNonPublic(parsedFiles: ParsedFile<CustomObjectMetadata>[]): ParsedFile<CustomObjectMetadata>[] {
24-
return parsedFiles.filter((parsedFile) =>
25-
visibilitiesToDocument.includes(parsedFile.type.visibility.toLowerCase()),
26-
);
23+
/**
24+
* Returns a tuple of parsed objects to document and the names of the objects that should be actively ignored.
25+
* @param parsedFiles
26+
*/
27+
function filter(parsedFiles: ParsedFile<CustomObjectMetadata>[]): [ParsedFile<CustomObjectMetadata>[], string[]] {
28+
function shouldBeDocumented(parsedFile: ParsedFile<CustomObjectMetadata>): boolean {
29+
return visibilitiesToDocument.includes(parsedFile.type.visibility.toLowerCase());
30+
}
31+
32+
const objectsToDocument = parsedFiles.filter(shouldBeDocumented);
33+
const objectsToIgnore = parsedFiles
34+
.filter((parsedFile) => !shouldBeDocumented(parsedFile))
35+
.map((parsedFile) => parsedFile.type.name);
36+
return [objectsToDocument, objectsToIgnore];
2737
}
2838

2939
const customObjects = objectBundles.filter(
@@ -54,12 +64,12 @@ export function reflectCustomFieldsAndObjectsAndMetadataRecords(
5464
customObjects,
5565
reflectCustomObjectSources,
5666
TE.map(filterNonPublished),
57-
TE.map(filterNonPublic),
58-
TE.bindTo('objects'),
67+
TE.map(filter),
68+
TE.bindTo('filterResult'),
5969
TE.bind('fields', () => generateForFields(customFields)),
6070
TE.bind('metadata', () => generateForMetadata(customMetadata)),
61-
TE.map(({ objects, fields, metadata }) => {
62-
return [...mapFieldsAndMetadata(objects, fields, metadata), ...mapExtensionFields(objects, fields)];
71+
TE.map(({ filterResult, fields, metadata }) => {
72+
return [...mapFieldsAndMetadata(filterResult[0], fields, metadata), ...mapExtensionFields(filterResult, fields)];
6373
}),
6474
);
6575
}
@@ -88,11 +98,16 @@ function mapFieldsAndMetadata(
8898
// "Extension" fields are fields that are in the source code without the corresponding object-meta.xml file.
8999
// These are fields that either extend a standard Salesforce object, or an object in a different package.
90100
function mapExtensionFields(
91-
objects: ParsedFile<CustomObjectMetadata>[],
101+
filterResult: [ParsedFile<CustomObjectMetadata>[], string[]],
92102
fields: ParsedFile<CustomFieldMetadata>[],
93103
): ParsedFile<CustomObjectMetadata>[] {
104+
const objects = filterResult[0];
105+
const ignoredObjectNames = filterResult[1];
106+
94107
const extensionFields = fields.filter(
95-
(field) => !objects.some((object) => object.type.name === field.type.parentName),
108+
(field) =>
109+
!objects.some((object) => object.type.name.toLowerCase() === field.type.parentName.toLowerCase()) &&
110+
!ignoredObjectNames.map((name) => name.toLowerCase()).includes(field.type.parentName.toLowerCase()),
96111
);
97112
// There might be many objects for the same parent name, so we need to group the fields by parent name
98113
const extensionFieldsByParent = extensionFields.reduce(

0 commit comments

Comments
 (0)