UNPKG

@xmobitea/gn-typescript-client

Version:

GearN Typescript Client SDK by XmobiTea (Pro)

212 lines (211 loc) 5.19 kB
export class GNData { get(k, def) { return def; } getBoolean(k, def) { return this.get(k, def); } getObject(k, def) { return this.get(k, def); } getString(k, def) { return this.get(k, def); } getNumber(k, def) { return this.get(k, def); } getGNHashtable(k, def) { return this.get(k, def); } getGNArray(k, def) { return this.get(k, def); } static createGNHashtableFromObject(value) { let answer = new GNHashtable(); let valueKeys = Object.keys(value); for (let i = 0; i < valueKeys.length; i++) { let key = valueKeys[i]; answer.add(key, value[key]); } return answer; } static createGNArrayFromArray(value) { let answer = new GNArray(); let valueArr = value; for (let i = 0; i < valueArr.length; i++) { answer.add(valueArr[i]); } return answer; } static createUseDataFromOriginData(value) { if (value == null) return null; let typeOfValue = typeof value; if (typeOfValue === "string") return value; if (typeOfValue === "number") return value; if (typeOfValue === "boolean") return value; if (value instanceof GNArray) return value; if (value instanceof GNHashtable) return value; if (typeOfValue === "object") { if (Array.isArray(value)) return this.createGNArrayFromArray(value); else return this.createGNHashtableFromObject(value); } return null; } static createDataFromUseData(value) { if (value == null) return null; if (value instanceof GNArray) { return value.toData(); } if (value instanceof GNHashtable) { return value.toData(); } return value; } } export class GNHashtableBuilder { add(k, value) { this.dict[k] = value; return this; } addAll(dict) { let keys = Object.keys(dict); keys.forEach(keyStr => { this.add(keyStr, dict[keyStr]); }); return this; } constructor() { this.dict = {}; this.dict = {}; } build() { let answer = new GNHashtable(); let keys = Object.keys(this.dict); keys.forEach(keyStr => { answer.add(keyStr, this.dict[keyStr]); }); return answer; } } export class GNHashtable extends GNData { constructor() { super(...arguments); this.dict = {}; } clear() { this.dict = {}; } remove(k) { if (this.containsKey(k)) { delete this.dict[k]; return true; } return false; } count() { return Object.keys(this.dict).length; } containsKey(k) { let keys = Object.keys(this.dict); let kStr = k.toString(); return keys.indexOf(kStr) != -1; } get(k, def) { let value = this.dict[k]; if (value == null) return def; return value; } add(k, value) { this.dict[k] = GNData.createUseDataFromOriginData(value); } toData() { let anwser = {}; let keys = Object.keys(this.dict); for (let i = 0; i < keys.length; i++) { let key = keys[i]; anwser[key] = GNData.createDataFromUseData(this.dict[key]); } return anwser; } static builder() { return new GNHashtableBuilder(); } toString() { return JSON.stringify(this.dict); } } export class GNArrayBuilder { add(value) { this.array.push(value); return this; } addAll(array) { array.forEach(o => { this.add(o); }); return this; } build() { let awnser = new GNArray(); this.array.forEach(o => { awnser.add(o); }); return awnser; } constructor() { this.array = []; this.array = []; } } export class GNArray extends GNData { constructor() { super(...arguments); this.array = []; } clear() { this.array = []; } remove(k) { if (k < 0 || k >= this.array.length) return false; this.array.splice(k, 1); return true; } count() { return this.array.length; } get(k, def) { if (k < 0 || k >= this.array.length) return null; let value = this.array[k]; if (value == null) return def; return value; } add(value) { this.array.push(GNData.createUseDataFromOriginData(value)); } toData() { let anwser = []; for (let i = 0; i < this.array.length; i++) { anwser.push(GNData.createDataFromUseData(this.array[i])); } return anwser; } static builder() { return new GNArrayBuilder(); } toString() { return JSON.stringify(this.array); } }