UNPKG

@metadev/essential-core

Version:

Core SDK Metamodeling Framework. Essential

1 lines 8.36 kB
{"version":3,"sources":["../src/modelElement.ts","../src/essential.ts"],"names":["VisitMode","Essential","load","fileName","callback","save","model","getHashCode","input","hash","i","len","length","charCodeAt","isModelElement","obj","Object","prototype","hasOwnProperty","call","isModelElementCollection","arr","first","asModelElement","asModelElementCollection","collectionToJson","col","str","map","it","toJson","reduce","t1","t2","toEssential","m","res","visit","PreOrder","refToEssential","me","getId","collectionToEssential","primitiveTypeToEssential","value","toString","_Essential"],"mappings":"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","file":"essential.cjs","sourcesContent":["// ModelElement, Error definitions\r\n\r\nexport enum ErrorType {\r\n None = 0,\r\n Info = 1,\r\n Warning = 2,\r\n Error = 3\r\n}\r\nexport interface Location {\r\n filename: string;\r\n start: Position;\r\n end: Position;\r\n}\r\nexport interface Position {\r\n line: number;\r\n col: number;\r\n}\r\n\r\nexport interface IError {\r\n message: string;\r\n element?: ModelElement;\r\n type: ErrorType;\r\n location: Location;\r\n}\r\nexport enum VisitMode {\r\n PreOrder = 0,\r\n PostOrder = 1\r\n}\r\nexport interface MetaInfo {\r\n id: string;\r\n model?: Model;\r\n parent?: ModelElement;\r\n location?: Location;\r\n}\r\nexport interface ModelElement {\r\n _meta: MetaInfo;\r\n\r\n getId(): string;\r\n getTypeName(): string;\r\n toString(): string;\r\n toJson(): string;\r\n toEssential(): string;\r\n validate(): IError[];\r\n visit(visitMode: VisitMode, action: (el: ModelElement) => void): void;\r\n\r\n // equality. to be overrided\r\n identity(): unknown;\r\n hashCodeElement(): number;\r\n\r\n // equality. generic\r\n hashCode(): number;\r\n sameConcept(b: ModelElement | null | undefined): boolean;\r\n equals(b: ModelElement): boolean;\r\n\r\n // mergeWith(b: ModelElement): void;\r\n // diffWith(b: ModelElement): Difference[];\r\n}\r\n\r\nexport interface Model extends ModelElement {\r\n modelName: string;\r\n version: string;\r\n}\r\n","import { ModelElement, Model, VisitMode } from './modelElement';\r\n\r\nexport class Essential {\r\n static load(fileName: string, callback: () => void) {\r\n callback();\r\n }\r\n static save(model: Model, fileName: string, callback: () => void): void {\r\n callback();\r\n }\r\n\r\n /**\r\n * Fast hashcode function for strings\r\n */\r\n static getHashCode(input: string): number {\r\n if (input === null || input === undefined) {\r\n return 0;\r\n }\r\n let hash = 0;\r\n let i = 0;\r\n const len = input.length;\r\n while (i < len) {\r\n hash = ((hash << 5) - hash + input.charCodeAt(i++)) << 0;\r\n }\r\n return hash;\r\n }\r\n\r\n static isModelElement(obj: unknown): obj is ModelElement {\r\n if (!obj) {\r\n return false;\r\n }\r\n if (!(typeof obj === <string>'object')) {\r\n return false;\r\n }\r\n // todo (check ModelElement with duck typing)\r\n if ((obj as unknown[]).length >= 0) {\r\n return false;\r\n } // collection\r\n return Object.prototype.hasOwnProperty.call(obj, '_meta');\r\n }\r\n static isModelElementCollection(obj: unknown): obj is ModelElement[] {\r\n if (!obj) {\r\n return false;\r\n }\r\n if (!(typeof obj === <string>'object')) {\r\n return false;\r\n }\r\n if (Object.prototype.hasOwnProperty.call(obj, 'length')) {\r\n const arr = obj as unknown[];\r\n if (arr.length > 0 && arr[0]) {\r\n const first = arr[0];\r\n return Essential.isModelElement(first);\r\n }\r\n return true; // Empty array []\r\n }\r\n return false; // Not an array\r\n }\r\n static asModelElement(obj: unknown): ModelElement | null {\r\n if (Essential.isModelElement(obj)) {\r\n return <ModelElement>obj;\r\n }\r\n return null;\r\n }\r\n static asModelElementCollection(obj: unknown): ModelElement[] | null {\r\n if (Essential.isModelElementCollection(obj)) {\r\n return <ModelElement[]>obj;\r\n }\r\n return null;\r\n }\r\n\r\n static collectionToJson(col: ModelElement[]): string {\r\n if (!col) {\r\n return 'null';\r\n }\r\n const str = col.map((it: ModelElement) => {\r\n return it.toJson();\r\n });\r\n if (str.length === 0) {\r\n return '[]';\r\n }\r\n const res = str.reduce((t1, t2) => {\r\n return t1 + ',' + t2;\r\n });\r\n return '[' + res + ']';\r\n }\r\n\r\n static toEssential(m: ModelElement): string {\r\n let res = '';\r\n if (!m) {\r\n return '';\r\n }\r\n m.visit(VisitMode.PreOrder, (it) => {\r\n res += it.toEssential();\r\n });\r\n return res;\r\n }\r\n static refToEssential(me: ModelElement): string {\r\n return me.getId();\r\n }\r\n static collectionToEssential(col: ModelElement[]): string {\r\n if (!col || col.length === 0) {\r\n return '[]';\r\n }\r\n const strs = col.map((it) => {\r\n return Essential.refToEssential(it);\r\n });\r\n const res = strs.reduce((t1, t2) => {\r\n return t1 + ', ' + t2;\r\n });\r\n return '[' + res + ']';\r\n }\r\n static primitiveTypeToEssential(value: unknown): string | null {\r\n if (!value) {\r\n return null;\r\n }\r\n if (value === true) {\r\n return 'true';\r\n }\r\n if (value === false) {\r\n return 'false';\r\n }\r\n if (typeof value === 'number') {\r\n return value.toString();\r\n }\r\n return '\"' + value.toString() + '\"';\r\n }\r\n}\r\n"]}