UNPKG

immutable-class

Version:

A template for creating immutable classes

69 lines (68 loc) 2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Bicycle = exports.Rider = void 0; const base_immutable_1 = require("./base-immutable"); class Rider extends base_immutable_1.BaseImmutable { static fromJS(params) { return new Rider(base_immutable_1.BaseImmutable.jsToValue(Rider.PROPERTIES, params)); } constructor(params) { super(params); Object.defineProperty(this, "getName", { enumerable: true, configurable: true, writable: true, value: void 0 }); Object.defineProperty(this, "changeName", { enumerable: true, configurable: true, writable: true, value: void 0 }); } } exports.Rider = Rider; Object.defineProperty(Rider, "PROPERTIES", { enumerable: true, configurable: true, writable: true, value: [{ name: 'name', defaultValue: null }] }); base_immutable_1.BaseImmutable.finalize(Rider); class Bicycle extends base_immutable_1.BaseImmutable { static fromJS(params) { return new Bicycle(base_immutable_1.BaseImmutable.jsToValue(Bicycle.PROPERTIES, params)); } constructor(params) { super(params); Object.defineProperty(this, "name", { enumerable: true, configurable: true, writable: true, value: void 0 }); this.name = params.name; } } exports.Bicycle = Bicycle; Object.defineProperty(Bicycle, "PROPERTIES", { enumerable: true, configurable: true, writable: true, value: [ { name: 'name', validate: (n) => { if (n.toLowerCase() !== n) throw new Error('must be lowercase'); }, }, { name: 'fuel', defaultValue: 'turnip', possibleValues: ['potato', 'turnip'], }, ] }); base_immutable_1.BaseImmutable.finalize(Bicycle);