Skip to content

Commit

Permalink
Merge pull request #9 from mrmilu/fix/PEPE70-248
Browse files Browse the repository at this point in the history
Fix/PEPE70-248
  • Loading branch information
arnaugomez authored May 27, 2024
2 parents 48a21fc + 673724b commit 7a61853
Showing 1 changed file with 21 additions and 18 deletions.
39 changes: 21 additions & 18 deletions packages/core/src/decorators/expose_all.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,29 +11,32 @@ interface ExposeAllOptions {
nameCasing?: ExposeAllCasing;
}

function getExposeMetadataOptions(propertyName: string, options: ExposeAllOptions = {}): ExposeOptions {
const exposeOptions: ExposeOptions = {};
switch (options.nameCasing) {
case "camelCase":
exposeOptions.name = camelCase(propertyName);
break;
case "snakeCase":
exposeOptions.name = snakeCase(propertyName);
break;
}
return exposeOptions;
}

export function ExposeAll(options?: ExposeAllOptions) {
const { nameCasing } = options || {};
// eslint-disable-next-line @typescript-eslint/no-explicit-any
return function (target: any) {
const object = new target();
Object.entries(object).forEach(([key]) => {
const exists = defaultMetadataStorage.findExposeMetadata(target, key);
if (exists) return;

const options: ExposeOptions = {};
switch (nameCasing) {
case "camelCase":
options.name = camelCase(key);
break;
case "snakeCase":
options.name = snakeCase(key);
break;
}

Object.keys(object).forEach((propertyName) => {
const exposeMetadata = defaultMetadataStorage.findExposeMetadata(target, propertyName);
defaultMetadataStorage.addExposeMetadata({
target: target,
propertyName: key,
options
target,
propertyName,
options: {
...getExposeMetadataOptions(propertyName, options),
...exposeMetadata?.options
}
});
});
};
Expand Down

0 comments on commit 7a61853

Please sign in to comment.