Review this generated class before it backs a user directory.
Store profiles by id, accept save as a callback, validate boundary input, return no token or internal mutable reference, and serve frequently requested sorted summaries.
JavaScript
class ProfileStore {
#profiles = new Map();
save(profile) {
this.#profiles.set(profile.id, profile);
return profile;
}
find(id) {
return this.#profiles.get(id);
}
summaries() {
return [...this.#profiles.values()]
.sort((left, right) => left.name.localeCompare(right.name))
.map(({ token, ...profile }) => profile);
}
}
const store = new ProfileStore();
const save = store.save;
[{ id: 'a', name: 'Ada', token: 'secret', roles: ['admin'] }]
.forEach(save);
console.log(store.summaries());
generated code is illustrative, not from any one model