amocrm-client
Advanced tools
Comparing version 0.0.57 to 0.0.58
@@ -8,4 +8,4 @@ "use strict"; | ||
const ResourceCollection_1 = require("../api/ResourceCollection"); | ||
const Contact_1 = require("../api/models/Contact"); | ||
const util_1 = require("../util"); | ||
const ContactFactory_1 = require("../api/factories/ContactFactory"); | ||
class LossReasonDTO { | ||
@@ -16,3 +16,3 @@ } | ||
tslib_1.__decorate([ | ||
(0, util_1.TypeCollection)(Contact_1.Contact, this), | ||
(0, util_1.TypeCollection)(this, ContactFactory_1.ContactFactory), | ||
tslib_1.__metadata("design:type", ResourceCollection_1.ResourceCollection) | ||
@@ -19,0 +19,0 @@ ], LeadEmbeddedDTO.prototype, "contacts", void 0); |
@@ -0,3 +1,4 @@ | ||
import { IResourceEntity, IResourceFactory } from './interfaces/api'; | ||
export declare const delay: (ms: number) => Promise<unknown>; | ||
export declare function applyMixins(baseClass: any, mixins: any[]): any; | ||
export declare function TypeCollection<M, T>(entityClass: new () => M, factory: T): PropertyDecorator; | ||
export declare function TypeCollection<TE extends IResourceEntity<TF>, TF extends IResourceFactory<TE>, RE extends IResourceEntity<RF>, RF extends IResourceFactory<RE>>(currentEntity: TE, factory: new (...args: any) => RF): PropertyDecorator; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.TypeCollection = exports.applyMixins = exports.delay = void 0; | ||
const class_transformer_1 = require("class-transformer"); | ||
const ResourceCollection_1 = require("./api/ResourceCollection"); | ||
const delay = (ms) => new Promise(resolve => setTimeout(resolve, ms)); | ||
@@ -13,26 +15,27 @@ exports.delay = delay; | ||
exports.applyMixins = applyMixins; | ||
// export function TypeCollection<T>(collectionType: new () => T, ): PropertyDecorator { | ||
// return Transform(({ value, key, obj, options, type }) => { | ||
// console.log("fff", value, key, obj, options, type); | ||
// const data = value.map((item: any) => plainToClass(collectionType, item)); | ||
// return new ResourceCollection<T>(data); | ||
// }); | ||
// } | ||
function TypeCollection(entityClass, factory) { | ||
return (target, propertyKey) => { | ||
const type = Reflect.getMetadata('design:type', target, propertyKey); | ||
return { | ||
configurable: true, | ||
enumerable: true, | ||
get: function () { | ||
console.log("get", target, propertyKey, factory, entityClass); | ||
return null; | ||
}, | ||
set: function (value) { | ||
console.log("set", target, propertyKey, factory, entityClass, value); | ||
}, | ||
}; | ||
}; | ||
function TypeCollection(currentEntity, factory) { | ||
return (0, class_transformer_1.Transform)(({ value, key, obj, options, type }) => { | ||
const f = new factory(currentEntity.getFactory().getRequest()); | ||
const data = value.map((item) => f.from(item)); | ||
return new ResourceCollection_1.ResourceCollection(data); | ||
}); | ||
} | ||
exports.TypeCollection = TypeCollection; | ||
// export function TypeCollection<CurrentEntity extends IResourceEntity<CurrentFactory>, CurrentFactory extends IResourceFactory<CurrentEntity>, ReturnTypeEntity extends IResourceEntity<ReturnFactoty>, ReturnFactoty extends IResourceFactory<ReturnTypeEntity>>(currentEntity: CurrentEntity, returnEntity: new (...args: any) => ReturnTypeEntity, returnEntityFactory: new (...args: any) => ReturnFactoty): PropertyDecorator { | ||
// return (target, propertyKey) => { | ||
// const type = Reflect.getMetadata('design:type', target, propertyKey); | ||
// return { | ||
// configurable: true, | ||
// enumerable: true, | ||
// get: function () { | ||
// return this[propertyKey]; | ||
// }, | ||
// set: function (value: any[]) { | ||
// const factory = new returnEntityFactory(currentEntity.getFactory().getRequest()); | ||
// const data: ReturnTypeEntity[] = value.map((item: any) => factory.from(item)); | ||
// return data; | ||
// }, | ||
// }; | ||
// } | ||
// } | ||
//# sourceMappingURL=util.js.map |
{ | ||
"name": "amocrm-client", | ||
"version": "0.0.57", | ||
"version": "0.0.58", | ||
"description": "JS Library for AmoCRM", | ||
@@ -5,0 +5,0 @@ "main": "./dist/index.js", |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
518031
5627