import Assert from '@cafetextual/util/dist/src/assert/Assert'; import UID, { MTypeDef } from '@cafetextual/util'; import { ITypeManifest, IIterator } from '@cafetextual/util'; import { resolve } from 'url'; export default class DynamicTypeManifest implements ITypeManifest { types: Array = [] _types = {} setParent(v: ITypeManifest): void { // no implementation } resolveTypeDef(typeName: string): MTypeDef { var def:MTypeDef = this._types[typeName] if (!def) { def = {typeName: typeName, create: ()=> {return {__cls:typeName }} } this._types[typeName]= def } return def } createType(name: string): any { var def:MTypeDef = this.resolveTypeDef(name) return def.create() } isA(v: any, type: string):boolean { try { return v.__cls == type } catch(e) { } return false } typeOf(v: any): string { return v.__cls } iterator(): IIterator { Assert.fail() // return null } init(parent: ITypeManifest): ITypeManifest { return this } }