@jesuferanmi/resource-transformer
Version:
Laravel-style API resources for NestJS apps
34 lines (33 loc) • 955 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ResourceCollection = void 0;
class ResourceCollection {
constructor(resources, ResourceClass) {
this.resources = resources;
this.ResourceClass = ResourceClass;
this.additionalMeta = {};
}
/**
* Transform the collection of resources into an array of JSON objects
*/
toJSON() {
return this.resources.map(item => new this.ResourceClass(item).toJSON());
}
/**
* Add or merge additional metadata to the collection response
*/
withMeta(meta) {
this.additionalMeta = { ...this.additionalMeta, ...meta };
return this;
}
/**
* Return the full collection response with data and metadata
*/
toResponse() {
return {
data: this.toJSON(),
meta: this.additionalMeta,
};
}
}
exports.ResourceCollection = ResourceCollection;