{"version":3,"sources":["Class.js"],"names":["PropertyWeakMap","NumPropertyName","nextNum","getValuePropertyName","map","throwIfIllegalKey","key","Error","Object","TypeError","num","generateNextNum","this","defineProperties","prototype","set","value","has","isKeyLegal","get","delete","valuePropertyName","PropertyWeakSet","mapByInstance","add","Class","WeakMap","window","WeakSet","noOp","FieldProxy","fieldsByInstance","field","validateSelf","args","isStatic","StaticField","fieldsByStaticField","getInitialValue","init","fields","InstanceField","fieldsByInstanceField","valueByInstance","instance","PropertyProxy","parseClassOptions","optionsStringOrObject","named","options","toString","call","modifiers","match","length","name","splice","NestedClassRegistration","NestedClass","NestedClassRegistration$getName","fromArgs","propertyName","toPropertyDescriptor","FieldRegistration","description","includes","getGetInitialValue","toField","MethodRegistration","fn","function","PropertyRegistration","backingField","optionsOrLazyValue","lazyValue","toProxy","InitializerRegistration","callback","ConstructorRegistration","access","privateKey","allRegisteredClasses","throwIfInvalidSelfArg","self","constructor","create","define","static","classIsStatic","base","BaseClass","nestedClassRegistrations","registerNestedClass","registration","push","fieldRegistrations","registerField","methodRegistrations","registerMethod","propertyRegistrations","registerProperty","initializerRegistrations","registerInitializer","constructorRegistrations","registerConstructor","privateConstruct","allClassInstancesThatHaveCalledBase","callBase","nestedClass","method","property","initializer","construct","instanceFields","filter","staticFields","instanceInitializers","staticInitializers","constructorIsPrivate","keyGiven","shift","forEach","descriptor","defineProperty"],"mappings":"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","file":"Class.js","sourcesContent":["const PropertyWeakMap = (() => {\r\n const PropertyNamePrefix = '*PropertyWeakMap8b6b9f3ba3e44a688a0544444b435164_';\r\n const NumPropertyName = `${PropertyNamePrefix}num`;\r\n\r\n let nextNum = 0;\r\n\r\n const generateNextNum = () => {\r\n const num = nextNum;\r\n nextNum += 1;\r\n return num;\r\n };\r\n\r\n const getValuePropertyName = map => {\r\n const num = map[NumPropertyName];\r\n return `${PropertyNamePrefix}${num}__value`;\r\n };\r\n\r\n const isKeyLegal = key => Object(key) === key;\r\n\r\n const throwIfIllegalKey = key => {\r\n if (typeof key === 'undefined') {\r\n throw new Error('key must not be undefined');\r\n }\r\n\r\n if (key === null) {\r\n throw new Error('key must not be null');\r\n }\r\n\r\n if (Object(key) !== key) {\r\n throw new Error('key must be an object');\r\n }\r\n };\r\n\r\n const PropertyWeakMap = function () {\r\n if (!new.target) {\r\n throw new TypeError('Constructor PropertyWeakMap requires \\'new\\'');\r\n }\r\n\r\n const num = generateNextNum();\r\n this[NumPropertyName] = num;\r\n };\r\n\r\n const PropertyWeakMap$set = function (key, value) {\r\n throwIfIllegalKey(key);\r\n\r\n const valuePropertyName = getValuePropertyName(this);\r\n key[valuePropertyName] = value;\r\n\r\n return this;\r\n };\r\n\r\n const PropertyWeakMap$has = function (key) {\r\n if (!isKeyLegal(key)) {\r\n return false;\r\n }\r\n\r\n const valuePropertyName = getValuePropertyName(this);\r\n return valuePropertyName in key;\r\n };\r\n\r\n const PropertyWeakMap$get = function (key) {\r\n throwIfIllegalKey(key);\r\n\r\n const valuePropertyName = getValuePropertyName(this);\r\n return key[valuePropertyName];\r\n };\r\n\r\n const PropertyWeakMap$delete = function (key) {\r\n throwIfIllegalKey(key);\r\n\r\n const valuePropertyName = getValuePropertyName(this);\r\n const mapHasKey = valuePropertyName in key;\r\n if (!mapHasKey) {\r\n return false;\r\n }\r\n delete key[valuePropertyName];\r\n return true;\r\n };\r\n\r\n Object.defineProperties(PropertyWeakMap.prototype, {\r\n set: { value: PropertyWeakMap$set },\r\n has: { value: PropertyWeakMap$has },\r\n get: { value: PropertyWeakMap$get },\r\n delete: { value: PropertyWeakMap$delete }\r\n });\r\n\r\n return PropertyWeakMap;\r\n})();\r\n\r\nconst PropertyWeakSet = (() => {\r\n const mapByInstance = new PropertyWeakMap();\r\n\r\n const PropertyWeakSet = function () {\r\n if (!new.target) {\r\n throw new TypeError('Constructor PropertyWeakSet requires \\'new\\'');\r\n }\r\n\r\n mapByInstance.set(this, new PropertyWeakMap());\r\n };\r\n\r\n const PropertyWeakSet$add = function (value) {\r\n const map = mapByInstance.get(this);\r\n map.set(value, null);\r\n return this;\r\n };\r\n\r\n const PropertyWeakSet$has = function (value) {\r\n const map = mapByInstance.get(this);\r\n return map.has(value);\r\n };\r\n\r\n const PropertyWeakSet$delete = function (value) {\r\n const map = mapByInstance.get(this);\r\n return map.delete(value);\r\n };\r\n\r\n Object.defineProperties(PropertyWeakSet.prototype, {\r\n add: { value: PropertyWeakSet$add },\r\n has: { value: PropertyWeakSet$has },\r\n delete: { value: PropertyWeakSet$delete }\r\n });\r\n\r\n return PropertyWeakSet;\r\n})();\r\n\r\nconst Class = (() => {\r\n const WeakMap = window.WeakMap || PropertyWeakMap;\r\n const WeakSet = window.WeakSet || PropertyWeakSet;\r\n\r\n const noOp = () => { };\r\n\r\n const FieldProxy = (() => {\r\n const fieldsByInstance = new WeakMap();\r\n\r\n const FieldProxy = function (field, validateSelf) {\r\n fieldsByInstance.set(this, {\r\n field,\r\n validateSelf\r\n });\r\n };\r\n\r\n const FieldProxy$get = function (...args) {\r\n const { field, validateSelf } = fieldsByInstance.get(this);\r\n\r\n if (!field.isStatic && validateSelf != null) {\r\n validateSelf(args[0]);\r\n }\r\n\r\n return field.get(...args);\r\n };\r\n\r\n const FieldProxy$set = function (...args) {\r\n const { field, validateSelf } = fieldsByInstance.get(this);\r\n\r\n if (!field.isStatic && validateSelf != null) {\r\n validateSelf(args[0]);\r\n }\r\n\r\n return field.set(...args);\r\n };\r\n\r\n Object.defineProperties(FieldProxy.prototype, {\r\n get: { value: FieldProxy$get },\r\n set: { value: FieldProxy$set }\r\n });\r\n\r\n return FieldProxy;\r\n })();\r\n\r\n const StaticField = (() => {\r\n const fieldsByStaticField = new WeakMap();\r\n\r\n const StaticField = function (getInitialValue) {\r\n fieldsByStaticField.set(this, {\r\n getInitialValue,\r\n value: null\r\n });\r\n };\r\n\r\n const StaticField$init = function () {\r\n const fields = fieldsByStaticField.get(this);\r\n const { getInitialValue } = fields;\r\n\r\n if (getInitialValue != null) {\r\n fields.value = getInitialValue();\r\n }\r\n };\r\n\r\n const StaticField$get = function () {\r\n const { value } = fieldsByStaticField.get(this);\r\n return value;\r\n };\r\n\r\n const StaticField$set = function (value) {\r\n const fields = fieldsByStaticField.get(this);\r\n fields.value = value;\r\n };\r\n\r\n Object.defineProperties(StaticField.prototype, {\r\n isStatic: { value: true },\r\n init: { value: StaticField$init },\r\n get: { value: StaticField$get },\r\n set: { value: StaticField$set }\r\n });\r\n\r\n return StaticField;\r\n })();\r\n\r\n const InstanceField = (() => {\r\n const fieldsByInstanceField = new WeakMap();\r\n\r\n const InstanceField = function (getInitialValue) {\r\n fieldsByInstanceField.set(this, {\r\n getInitialValue,\r\n valueByInstance: new WeakMap()\r\n });\r\n };\r\n\r\n const InstanceField$init = function (instance) {\r\n const { getInitialValue, valueByInstance } = fieldsByInstanceField.get(this);\r\n\r\n const value = getInitialValue == null ? null : getInitialValue(instance);\r\n valueByInstance.set(instance, value);\r\n };\r\n\r\n const InstanceField$get = function (instance) {\r\n const { valueByInstance } = fieldsByInstanceField.get(this);\r\n return valueByInstance.get(instance);\r\n };\r\n\r\n const InstanceField$set = function (instance, value) {\r\n const { valueByInstance } = fieldsByInstanceField.get(this);\r\n valueByInstance.set(instance, value);\r\n };\r\n\r\n Object.defineProperties(InstanceField.prototype, {\r\n isStatic: { value: false },\r\n init: { value: InstanceField$init },\r\n get: { value: InstanceField$get },\r\n set: { value: InstanceField$set }\r\n });\r\n\r\n return InstanceField;\r\n })();\r\n\r\n const PropertyProxy = (() => {\r\n const fieldsByInstance = new WeakMap();\r\n\r\n const PropertyProxy = function (get, set) {\r\n fieldsByInstance.set(this, {\r\n get,\r\n set\r\n });\r\n };\r\n\r\n const PropertyProxy$get = function (...args) {\r\n const { get } = fieldsByInstance.get(this);\r\n if (get == null) {\r\n throw new Error('Property has no get function');\r\n }\r\n\r\n return get(...args);\r\n };\r\n\r\n const PropertyProxy$set = function (...args) {\r\n const { set } = fieldsByInstance.get(this);\r\n if (set == null) {\r\n throw new Error('Property has no set function');\r\n }\r\n\r\n return set(...args);\r\n };\r\n\r\n Object.defineProperties(PropertyProxy.prototype, {\r\n get: { value: PropertyProxy$get },\r\n set: { value: PropertyProxy$set }\r\n });\r\n\r\n return PropertyProxy;\r\n })();\r\n\r\n const parseClassOptions = (optionsStringOrObject, { named } = { }) => {\r\n let options;\r\n if (optionsStringOrObject == null) {\r\n options = { };\r\n } else if (Object.prototype.toString.call(optionsStringOrObject) === '[object String]') {\r\n options = { };\r\n\r\n const modifiers = optionsStringOrObject.match(/\\S+/g);\r\n options.modifiers = modifiers;\r\n\r\n if (named && modifiers.length > 0) {\r\n const name = modifiers.splice(-1, 1)[0]; // splice removes last item\r\n options.name = name;\r\n }\r\n } else {\r\n options = optionsStringOrObject;\r\n }\r\n\r\n if (options.modifiers == null) {\r\n options.modifiers = [];\r\n }\r\n\r\n if (named && options.name == null) {\r\n throw new Error('Name is required');\r\n }\r\n\r\n return options;\r\n };\r\n\r\n const NestedClassRegistration = (() => {\r\n const fieldsByInstance = new WeakMap();\r\n\r\n const NestedClassRegistration = function (name, NestedClass) {\r\n fieldsByInstance.set(this, {\r\n name,\r\n NestedClass\r\n });\r\n };\r\n\r\n const NestedClassRegistration_fromArgs = (name, NestedClass) => {\r\n return new NestedClassRegistration(name, NestedClass);\r\n };\r\n\r\n const NestedClassRegistration$getIsStatic = function () { return true };\r\n\r\n const NestedClassRegistration$getName = function () {\r\n const { name } = fieldsByInstance.get(this);\r\n return name;\r\n };\r\n\r\n const NestedClassRegistration$getNestedClass = function () {\r\n const { NestedClass } = fieldsByInstance.get(this);\r\n return NestedClass;\r\n };\r\n\r\n const NestedClassRegistration$toPropertyDescriptor = function () {\r\n const { NestedClass } = fieldsByInstance.get(this);\r\n return { value: NestedClass };\r\n };\r\n\r\n Object.defineProperties(NestedClassRegistration, {\r\n fromArgs: { value: NestedClassRegistration_fromArgs }\r\n });\r\n\r\n Object.defineProperties(NestedClassRegistration.prototype, {\r\n isStatic: { get: NestedClassRegistration$getIsStatic },\r\n name: { get: NestedClassRegistration$getName },\r\n NestedClass: { get: NestedClassRegistration$getNestedClass },\r\n propertyName: { get: NestedClassRegistration$getName },\r\n toPropertyDescriptor: { value: NestedClassRegistration$toPropertyDescriptor }\r\n });\r\n\r\n return NestedClassRegistration;\r\n })();\r\n\r\n const FieldRegistration = (() => {\r\n const fieldsByInstance = new WeakMap();\r\n\r\n const FieldRegistration = function (isStatic, getInitialValue) {\r\n fieldsByInstance.set(this, {\r\n isStatic,\r\n getInitialValue\r\n });\r\n };\r\n\r\n const FieldRegistration_fromArgs = args => {\r\n let description;\r\n let getInitialValue;\r\n if (typeof args[0] === 'function') {\r\n description = null;\r\n getInitialValue = args[0];\r\n } else {\r\n description = args[0];\r\n getInitialValue = args[1];\r\n }\r\n\r\n const { modifiers } = parseClassOptions(description);\r\n \r\n const isStatic = modifiers.includes('static');\r\n \r\n return new FieldRegistration(isStatic, getInitialValue);\r\n };\r\n\r\n const FieldRegistration$getIsStatic = function () {\r\n const { isStatic } = fieldsByInstance.get(this);\r\n return isStatic;\r\n };\r\n\r\n const FieldRegistration$getGetInitialValue = function () {\r\n const { getInitialValue } = fieldsByInstance.get(this);\r\n return getInitialValue;\r\n };\r\n\r\n const FieldRegistration$toField = function () {\r\n const { isStatic, getInitialValue } = fieldsByInstance.get(this);\r\n return isStatic ? new StaticField(getInitialValue) : new InstanceField(getInitialValue);\r\n };\r\n\r\n Object.defineProperties(FieldRegistration, {\r\n fromArgs: { value: FieldRegistration_fromArgs }\r\n });\r\n\r\n Object.defineProperties(FieldRegistration.prototype, {\r\n isStatic: { get: FieldRegistration$getIsStatic },\r\n getGetInitialValue: { get: FieldRegistration$getGetInitialValue },\r\n toField: { value: FieldRegistration$toField }\r\n });\r\n\r\n return FieldRegistration;\r\n })();\r\n\r\n const MethodRegistration = (() => {\r\n const fieldsByInstance = new WeakMap();\r\n\r\n const MethodRegistration = function (isStatic, name, fn) {\r\n fieldsByInstance.set(this, {\r\n isStatic,\r\n name,\r\n fn\r\n });\r\n };\r\n\r\n const MethodRegistration_fromArgs = (description, fn) => {\r\n const { modifiers, name } = parseClassOptions(description, { named: true });\r\n\r\n const isStatic = modifiers.includes('static');\r\n \r\n return new MethodRegistration(isStatic, name, fn);\r\n };\r\n\r\n const MethodRegistration$getIsStatic = function () {\r\n const { isStatic } = fieldsByInstance.get(this);\r\n return isStatic;\r\n };\r\n\r\n const MethodRegistration$getPropertyName = function () {\r\n const { name } = fieldsByInstance.get(this);\r\n return name;\r\n };\r\n\r\n const MethodRegistration$getFunction = function () {\r\n const { fn } = fieldsByInstance.get(this);\r\n return fn;\r\n };\r\n\r\n const MethodRegistration$toPropertyDescriptor = function () {\r\n const { isStatic, fn } = fieldsByInstance.get(this);\r\n\r\n if (isStatic) {\r\n return { value: fn };\r\n }\r\n\r\n return {\r\n value: function (...args) {\r\n return fn(this, ...args);\r\n }\r\n };\r\n };\r\n\r\n Object.defineProperties(MethodRegistration, {\r\n fromArgs: { value: MethodRegistration_fromArgs }\r\n });\r\n\r\n Object.defineProperties(MethodRegistration.prototype, {\r\n isStatic: { get: MethodRegistration$getIsStatic },\r\n propertyName: { get: MethodRegistration$getPropertyName },\r\n function: { get: MethodRegistration$getFunction },\r\n toPropertyDescriptor: { value: MethodRegistration$toPropertyDescriptor }\r\n });\r\n\r\n return MethodRegistration;\r\n })();\r\n\r\n const PropertyRegistration = (() => {\r\n const fieldsByInstance = new WeakMap();\r\n\r\n const PropertyRegistration = function (isStatic, name, get, set, backingField) {\r\n fieldsByInstance.set(this, {\r\n isStatic,\r\n name,\r\n get,\r\n set,\r\n backingField\r\n });\r\n };\r\n\r\n const PropertyRegistration_fromArgs = (description, optionsOrLazyValue) => {\r\n const { modifiers, name } = parseClassOptions(description, { named: true });\r\n\r\n const isStatic = modifiers.includes('static');\r\n\r\n let options;\r\n let lazyValue;\r\n if (typeof optionsOrLazyValue === 'function') {\r\n lazyValue = optionsOrLazyValue;\r\n options = null;\r\n } else {\r\n lazyValue = null;\r\n options = optionsOrLazyValue;\r\n }\r\n\r\n let get;\r\n let set;\r\n let backingField;\r\n if (lazyValue == null) {\r\n if (options == null) {\r\n throw new Error('Get and set or a lazy value must be specified');\r\n }\r\n\r\n get = options.get;\r\n set = options.set;\r\n\r\n if (get == null && set == null) {\r\n throw new Error('Both get and set may not be null');\r\n }\r\n\r\n backingField = null;\r\n } else {\r\n if (isStatic) {\r\n backingField = new StaticField(lazyValue);\r\n get = function () {\r\n return backingField.get();\r\n };\r\n } else {\r\n backingField = new InstanceField(lazyValue);\r\n get = function (instance) {\r\n return backingField.get(instance);\r\n };\r\n }\r\n\r\n set = void 0;\r\n }\r\n \r\n return new PropertyRegistration(isStatic, name, get, set, backingField);\r\n };\r\n\r\n const PropertyRegistration$getIsStatic = function () {\r\n const { isStatic } = fieldsByInstance.get(this);\r\n return isStatic;\r\n };\r\n\r\n const PropertyRegistration$getPropertyName = function () {\r\n const { name } = fieldsByInstance.get(this);\r\n return name;\r\n };\r\n\r\n const PropertyRegistration$getBackingField = function () {\r\n const { backingField } = fieldsByInstance.get(this);\r\n return backingField;\r\n };\r\n\r\n const PropertyRegistration$toProxy = function () {\r\n const { get, set } = fieldsByInstance.get(this);\r\n return new PropertyProxy(get, set);\r\n };\r\n \r\n const PropertyRegistration$toPropertyDescriptor = function () {\r\n const { isStatic, get, set } = fieldsByInstance.get(this);\r\n\r\n if (isStatic) {\r\n return { get, set };\r\n }\r\n\r\n return {\r\n get: get && function () {\r\n return get(this);\r\n },\r\n set: set && function (value) {\r\n return set(this, value);\r\n }\r\n };\r\n };\r\n\r\n Object.defineProperties(PropertyRegistration, {\r\n fromArgs: { value: PropertyRegistration_fromArgs }\r\n });\r\n\r\n Object.defineProperties(PropertyRegistration.prototype, {\r\n isStatic: { get: PropertyRegistration$getIsStatic },\r\n propertyName: { get: PropertyRegistration$getPropertyName },\r\n backingField: { get: PropertyRegistration$getBackingField },\r\n toProxy: { value: PropertyRegistration$toProxy },\r\n toPropertyDescriptor: { value: PropertyRegistration$toPropertyDescriptor }\r\n });\r\n\r\n return PropertyRegistration;\r\n })();\r\n\r\n const InitializerRegistration = (() => {\r\n const fieldsByInstance = new WeakMap();\r\n\r\n const InitializerRegistration = function (isStatic, callback) {\r\n fieldsByInstance.set(this, {\r\n isStatic,\r\n callback\r\n });\r\n };\r\n\r\n const InitializerRegistration_fromArgs = args => {\r\n let description;\r\n let callback;\r\n if (typeof args[0] === 'function') {\r\n description = null;\r\n callback = args[0];\r\n } else {\r\n description = args[0];\r\n callback = args[1];\r\n }\r\n\r\n const { modifiers } = parseClassOptions(description);\r\n \r\n const isStatic = modifiers.includes('static');\r\n \r\n return new InitializerRegistration(isStatic, callback);\r\n };\r\n\r\n const InitializerRegistration$getIsStatic = function () {\r\n const { isStatic } = fieldsByInstance.get(this);\r\n return isStatic;\r\n };\r\n \r\n const InitializerRegistration$getCallback = function () {\r\n const { callback } = fieldsByInstance.get(this);\r\n return callback;\r\n };\r\n\r\n Object.defineProperties(InitializerRegistration, {\r\n fromArgs: { value: InitializerRegistration_fromArgs }\r\n });\r\n\r\n Object.defineProperties(InitializerRegistration.prototype, {\r\n isStatic: { get: InitializerRegistration$getIsStatic },\r\n callback: { get: InitializerRegistration$getCallback }\r\n });\r\n\r\n return InitializerRegistration;\r\n })();\r\n\r\n const ConstructorRegistration = (() => {\r\n const fieldsByInstance = new WeakMap();\r\n\r\n const ConstructorRegistration = function (access, fn) {\r\n fieldsByInstance.set(this, {\r\n access,\r\n fn\r\n });\r\n };\r\n\r\n const ConstructorRegistration_fromArgs = args => {\r\n if (args.length > 2) {\r\n throw new Error('Expected arguments: [access, ][fn]');\r\n }\r\n \r\n let access;\r\n let fn;\r\n if (args.length === 0) {\r\n access = 'public';\r\n fn = noOp;\r\n } else if (args.length === 1) {\r\n if (typeof args[0] === 'function') {\r\n access = 'public';\r\n fn = args[0];\r\n } else {\r\n access = args[0];\r\n fn = noOp;\r\n }\r\n } else { // args.length === 2\r\n access = args[0];\r\n fn = args[1];\r\n }\r\n\r\n if (access != null && access !== 'public' && access !== 'private') {\r\n throw new Error(`Access modifier \"${access}\" not recognized. Supported values: \"public\", \"private\"`);\r\n }\r\n \r\n return new ConstructorRegistration(access, fn);\r\n };\r\n\r\n const ConstructorRegistration$getAccess = function () {\r\n const { access } = fieldsByInstance.get(this);\r\n return access;\r\n };\r\n\r\n const ConstructorRegistration$getFunction = function () {\r\n const { fn } = fieldsByInstance.get(this);\r\n return fn;\r\n };\r\n\r\n Object.defineProperties(ConstructorRegistration, {\r\n fromArgs: { value: ConstructorRegistration_fromArgs }\r\n });\r\n\r\n Object.defineProperties(ConstructorRegistration.prototype, {\r\n access: { get: ConstructorRegistration$getAccess },\r\n function: { get: ConstructorRegistration$getFunction }\r\n });\r\n\r\n return ConstructorRegistration;\r\n })();\r\n\r\n const Class = {};\r\n\r\n const privateKey = {};\r\n\r\n const allRegisteredClasses = new WeakSet();\r\n const throwIfInvalidSelfArg = self => {\r\n if (typeof self === 'undefined') {\r\n throw new Error('Self argument missing');\r\n }\r\n\r\n if (self === null || !allRegisteredClasses.has(self.constructor)) {\r\n throw new Error('First argument is not self');\r\n }\r\n };\r\n\r\n const create = (...args) => {\r\n let options;\r\n let define;\r\n if (args.length === 0) {\r\n options = null;\r\n define = null;\r\n } else if (args.length === 1) {\r\n if (typeof args[0] === 'function') {\r\n options = null;\r\n define = args[0];\r\n } else {\r\n options = parseClassOptions(args[0]);\r\n define = null;\r\n }\r\n } else {\r\n options = parseClassOptions(args[0]);\r\n define = args[1];\r\n }\r\n\r\n let { static: classIsStatic, base: BaseClass } = (options || {});\r\n if (classIsStatic == null) {\r\n classIsStatic = false;\r\n }\r\n if (BaseClass == null) {\r\n BaseClass = Object;\r\n }\r\n\r\n let Class = null;\r\n\r\n /** @type [NestedClassRegistration] */\r\n const nestedClassRegistrations = [];\r\n const registerNestedClass = (name, NestedClass) => {\r\n if (Class !== null) {\r\n throw new Error('Nested class may not be registered after class has been created');\r\n }\r\n\r\n const registration = NestedClassRegistration.fromArgs(name, NestedClass);\r\n nestedClassRegistrations.push(registration);\r\n return registration.NestedClass;\r\n };\r\n\r\n /** @type [FieldRegistration] */\r\n const fieldRegistrations = [];\r\n const registerField = (...args) => {\r\n if (Class !== null) {\r\n throw new Error('Field may not be registered after class has been created');\r\n }\r\n\r\n const registration = FieldRegistration.fromArgs(args);\r\n const field = registration.toField();\r\n fieldRegistrations.push({ registration, field });\r\n return new FieldProxy(field, throwIfInvalidSelfArg);\r\n };\r\n\r\n /** @type [MethodRegistration] */\r\n const methodRegistrations = [];\r\n const registerMethod = (description, fn) => {\r\n if (Class !== null) {\r\n throw new Error('Method may not be registered after class has been created');\r\n }\r\n\r\n const registration = MethodRegistration.fromArgs(description, fn);\r\n methodRegistrations.push(registration);\r\n return registration.function;\r\n };\r\n\r\n /** @type [PropertyRegistration] */\r\n const propertyRegistrations = [];\r\n const registerProperty = (description, optionsOrLazyValue) => {\r\n if (Class !== null) {\r\n throw new Error('Property may not be registered after class has been created');\r\n }\r\n\r\n const registration = PropertyRegistration.fromArgs(description, optionsOrLazyValue);\r\n propertyRegistrations.push(registration);\r\n return registration.toProxy();\r\n };\r\n\r\n /** @type [InitializerRegistration] */\r\n const initializerRegistrations = [];\r\n const registerInitializer = (...args) => {\r\n if (Class !== null) {\r\n throw new Error('Initializer may not be registered after class has been created');\r\n }\r\n\r\n const registration = InitializerRegistration.fromArgs(args);\r\n initializerRegistrations.push(registration);\r\n };\r\n\r\n /** @type [ConstructorRegistration] */\r\n const constructorRegistrations = [];\r\n const registerConstructor = (...args) => {\r\n if (Class !== null) {\r\n throw new Error('Constructor may not be registered after class has been created');\r\n }\r\n\r\n const registration = ConstructorRegistration.fromArgs(args);\r\n constructorRegistrations.push(registration);\r\n };\r\n\r\n const privateConstruct = (...args) => {\r\n if (Class === null) {\r\n throw new Error('Class may not be constructed during creation');\r\n }\r\n\r\n return new Class(privateKey, ...args);\r\n };\r\n\r\n const allClassInstancesThatHaveCalledBase = new WeakSet();\r\n const callBase = (self, ...args) => {\r\n if (Class === null) {\r\n throw new Error('Base constructor may not be called during creation');\r\n }\r\n\r\n throwIfInvalidSelfArg(self);\r\n \r\n if (allClassInstancesThatHaveCalledBase.has(self)) {\r\n throw new Error('Base constructor has already been called', { allClassInstancesThatHaveCalledBase });\r\n }\r\n\r\n if (allRegisteredClasses.has(BaseClass)) {\r\n BaseClass.call(self, privateKey, ...args);\r\n } else {\r\n BaseClass.call(self, ...args);\r\n }\r\n \r\n allClassInstancesThatHaveCalledBase.add(self);\r\n \r\n };\r\n \r\n if (define != null) {\r\n define({\r\n nestedClass: registerNestedClass,\r\n field: registerField,\r\n method: registerMethod,\r\n property: registerProperty,\r\n initializer: registerInitializer,\r\n constructor: registerConstructor,\r\n construct: privateConstruct,\r\n base: callBase\r\n });\r\n }\r\n\r\n const instanceFields = [\r\n ...fieldRegistrations.filter(({ registration: { isStatic } }) => !isStatic).map(({ field }) => field),\r\n ...propertyRegistrations.filter(({ isStatic, backingField }) => !isStatic && backingField != null).map(({ backingField }) => backingField)\r\n ];\r\n const staticFields = [\r\n ...fieldRegistrations.filter(({ registration: { isStatic } }) => isStatic).map(({ field }) => field),\r\n ...propertyRegistrations.filter(({ isStatic, backingField }) => isStatic && backingField != null).map(({ backingField }) => backingField)\r\n ];\r\n\r\n const instanceInitializers = initializerRegistrations.filter(({ isStatic }) => !isStatic).map(({ callback }) => callback);\r\n const staticInitializers = initializerRegistrations.filter(({ isStatic }) => isStatic).map(({ callback }) => callback);\r\n\r\n if (constructorRegistrations.length > 1) {\r\n throw new Error('No more than 1 constructor may be registered');\r\n }\r\n\r\n let constructor;\r\n let constructorIsPrivate;\r\n if (constructorRegistrations.length === 0) {\r\n constructor = noOp;\r\n constructorIsPrivate = false;\r\n } else { // constructorRegistrations.length === 1\r\n const registration = constructorRegistrations[0];\r\n\r\n constructor = registration.function;\r\n constructorIsPrivate = registration.access === 'private';\r\n }\r\n\r\n Class = function (...args) {\r\n const keyGiven = args[0] === privateKey;\r\n if (keyGiven) {\r\n args.shift();\r\n }\r\n \r\n if (!new.target) {\r\n if (!keyGiven) {\r\n throw new TypeError('Constructor requires \\'new\\'');\r\n }\r\n\r\n if (constructorIsPrivate) {\r\n throw new TypeError('Base class has a private constructor. Inheritance not allowed.');\r\n }\r\n }\r\n\r\n if (constructorIsPrivate && !keyGiven) {\r\n throw new TypeError('Constructor is private. Instantiation not allowed.');\r\n }\r\n\r\n instanceFields.forEach(field => field.init(this));\r\n instanceInitializers.forEach(callback => callback(this));\r\n\r\n constructor(this, ...args);\r\n \r\n if (!allClassInstancesThatHaveCalledBase.has(this)) {\r\n callBase(this);\r\n }\r\n };\r\n allRegisteredClasses.add(Class);\r\n\r\n Class.prototype = Object.create(BaseClass.prototype);\r\n Class.prototype.constructor = Class;\r\n\r\n [...nestedClassRegistrations, ...methodRegistrations, ...propertyRegistrations].forEach(registration => {\r\n const isStatic = registration.isStatic;\r\n const name = registration.propertyName;\r\n const descriptor = registration.toPropertyDescriptor();\r\n\r\n if (isStatic) {\r\n Object.defineProperty(Class, name, descriptor);\r\n } else {\r\n Object.defineProperty(Class.prototype, name, descriptor);\r\n }\r\n });\r\n\r\n staticFields.forEach(field => field.init(Class));\r\n staticInitializers.forEach(callback => callback(Class));\r\n\r\n return Class;\r\n };\r\n\r\n Object.defineProperties(Class, {\r\n create: { value: create }\r\n });\r\n\r\n return Class;\r\n})();\r\n"]}