Skip to content

Commit 46f5b91

Browse files
chore: add comments when generating whitelist.mdg
Add comments from where is each line in whitelist.mdg file.
1 parent 03ea822 commit 46f5b91

File tree

3 files changed

+40
-17
lines changed

3 files changed

+40
-17
lines changed

lib/definitions/metadata-filtering-service.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/**
2-
* Describes the content of the native-api-usage.json file located in `<path to project's App_Resources>/<platform> directory.
2+
* Describes service used to generate necessary files to filter the native metadata generation.
33
*/
44
interface INativeApiUsageConfiguartion {
55
/**

lib/services/metadata-filtering-service.ts

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,16 +29,28 @@ export class MetadataFilteringService implements IMetadataFilteringService {
2929
const pathToPluginsMetadataConfig = path.join(pathToPlatformsDir, MetadataFilteringConstants.NATIVE_API_USAGE_FILE_NAME);
3030
if (this.$fs.exists(pathToPluginsMetadataConfig)) {
3131
const pluginConfig: INativeApiUsagePluginConfiguration = this.$fs.readJson(pathToPluginsMetadataConfig) || {};
32-
this.$logger.trace(`Adding content of ${pathToPluginsMetadataConfig} to whitelisted items of metadata filtering.`);
33-
whitelistedItems.push(...(pluginConfig.uses || []));
32+
this.$logger.trace(`Adding content of ${pathToPluginsMetadataConfig} to whitelisted items of metadata filtering: ${JSON.stringify(pluginConfig, null, 2)}`);
33+
const itemsToAdd = pluginConfig.uses || [];
34+
if (itemsToAdd.length) {
35+
whitelistedItems.push(`// Added from: ${pathToPluginsMetadataConfig}`);
36+
whitelistedItems.push(...itemsToAdd);
37+
whitelistedItems.push(`// Finished part from ${pathToPluginsMetadataConfig}${os.EOL}`);
38+
}
3439
}
3540
}
3641
}
3742

38-
whitelistedItems.push(...(nativeApiConfiguration.whitelist || []));
43+
const applicationWhitelistedItems = nativeApiConfiguration.whitelist || [];
44+
if (applicationWhitelistedItems.length) {
45+
this.$logger.trace(`Adding content from application to whitelisted items of metadata filtering: ${JSON.stringify(applicationWhitelistedItems, null, 2)}`);
46+
47+
whitelistedItems.push(`// Added from application`);
48+
whitelistedItems.push(...applicationWhitelistedItems);
49+
whitelistedItems.push(`// Finished part from application${os.EOL}`);
50+
}
3951

4052
if (whitelistedItems.length) {
41-
this.$fs.writeFile(pathToWhitelistFile, _.uniq(whitelistedItems).sort().join(os.EOL));
53+
this.$fs.writeFile(pathToWhitelistFile, whitelistedItems.join(os.EOL));
4254
}
4355
}
4456
}
@@ -53,7 +65,7 @@ export class MetadataFilteringService implements IMetadataFilteringService {
5365
const blacklistedItems: string[] = nativeApiConfiguration.blacklist || [];
5466

5567
if (blacklistedItems.length) {
56-
this.$fs.writeFile(pathToBlacklistFile, _.uniq(blacklistedItems).sort().join(os.EOL));
68+
this.$fs.writeFile(pathToBlacklistFile, blacklistedItems.join(os.EOL));
5769
}
5870
} else {
5971
this.$logger.trace(`There's no application configuration for metadata filtering for platform ${platform}. Full metadata will be generated.`);

test/services/metadata-filtering-service.ts

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ describe("metadataFilteringService", () => {
1818
const appResourcesNativeApiUsageFilePath = path.join(projectData.appResourcesDirectoryPath, platform, MetadataFilteringConstants.NATIVE_API_USAGE_FILE_NAME);
1919
const pluginPlatformsDir = path.join("pluginDir", platform);
2020
const pluginNativeApiUsageFilePath = path.join(pluginPlatformsDir, MetadataFilteringConstants.NATIVE_API_USAGE_FILE_NAME);
21-
const pluginsUses: string[] = ["whitelisted1", "pluginUses1", "pluginUses2"];
21+
const pluginsUses: string[] = ["pluginUses1", "pluginUses2"];
2222

2323
const createTestInjector = (input?: { hasPlugins: boolean }): IInjector => {
2424
const testInjector = new Yok();
@@ -98,6 +98,23 @@ describe("metadataFilteringService", () => {
9898
assert.deepEqual(dataWritten, { [path.join(projectRoot, MetadataFilteringConstants.BLACKLIST_FILE_NAME)]: blacklistArray.join(EOL) });
9999
});
100100

101+
const getExpectedWhitelistContent = (input: { applicationWhitelist?: string[], pluginWhitelist?: string[] }): string => {
102+
let finalContent = "";
103+
if (input.pluginWhitelist) {
104+
finalContent += `// Added from: ${pluginNativeApiUsageFilePath}${EOL}${input.pluginWhitelist.join(EOL)}${EOL}// Finished part from ${pluginNativeApiUsageFilePath}${EOL}`;
105+
}
106+
107+
if (input.applicationWhitelist) {
108+
if (finalContent !== "") {
109+
finalContent += EOL;
110+
}
111+
112+
finalContent += `// Added from application${EOL}${input.applicationWhitelist.join(EOL)}${EOL}// Finished part from application${EOL}`;
113+
}
114+
115+
return finalContent;
116+
};
117+
101118
it(`generates ${MetadataFilteringConstants.WHITELIST_FILE_NAME} when the file ${MetadataFilteringConstants.NATIVE_API_USAGE_FILE_NAME} exists in App_Resources/<platform>`, () => {
102119
const testInjector = createTestInjector();
103120
const metadataFilteringService: IMetadataFilteringService = testInjector.resolve(MetadataFilteringService);
@@ -108,7 +125,7 @@ describe("metadataFilteringService", () => {
108125
});
109126

110127
metadataFilteringService.generateMetadataFilters(projectData, platform);
111-
assert.deepEqual(dataWritten, { [path.join(projectRoot, MetadataFilteringConstants.WHITELIST_FILE_NAME)]: whitelistArray.join(EOL) });
128+
assert.deepEqual(dataWritten, { [path.join(projectRoot, MetadataFilteringConstants.WHITELIST_FILE_NAME)]: getExpectedWhitelistContent({ applicationWhitelist: whitelistArray }) });
112129
});
113130

114131
it(`generates ${MetadataFilteringConstants.WHITELIST_FILE_NAME} with content from plugins when the file ${MetadataFilteringConstants.NATIVE_API_USAGE_FILE_NAME} exists in App_Resources/<platform> and whitelist-plugins-usages is true`, () => {
@@ -124,7 +141,7 @@ describe("metadataFilteringService", () => {
124141
});
125142

126143
metadataFilteringService.generateMetadataFilters(projectData, platform);
127-
assert.deepEqual(dataWritten, { [path.join(projectRoot, MetadataFilteringConstants.WHITELIST_FILE_NAME)]: whitelistArray.join(EOL) });
144+
assert.deepEqual(dataWritten, { [path.join(projectRoot, MetadataFilteringConstants.WHITELIST_FILE_NAME)]: getExpectedWhitelistContent({ pluginWhitelist: whitelistArray }) });
128145
});
129146

130147
it(`generates all files when both plugins and applications filters are included`, () => {
@@ -144,11 +161,7 @@ describe("metadataFilteringService", () => {
144161
});
145162

146163
metadataFilteringService.generateMetadataFilters(projectData, platform);
147-
const expectedWhitelist = [
148-
"pluginUses1",
149-
"pluginUses2",
150-
...whitelistArray
151-
].join(EOL);
164+
const expectedWhitelist = getExpectedWhitelistContent({ pluginWhitelist: pluginsUses, applicationWhitelist: whitelistArray });
152165

153166
assert.deepEqual(dataWritten, {
154167
[path.join(projectRoot, MetadataFilteringConstants.WHITELIST_FILE_NAME)]: expectedWhitelist,
@@ -173,9 +186,7 @@ describe("metadataFilteringService", () => {
173186
});
174187

175188
metadataFilteringService.generateMetadataFilters(projectData, "platform");
176-
const expectedWhitelist = [
177-
...whitelistArray
178-
].join(EOL);
189+
const expectedWhitelist = getExpectedWhitelistContent({ applicationWhitelist: whitelistArray });
179190

180191
assert.deepEqual(dataWritten, {
181192
[path.join(projectRoot, MetadataFilteringConstants.WHITELIST_FILE_NAME)]: expectedWhitelist,

0 commit comments

Comments
 (0)