kodo-core 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -753,6 +753,9 @@ class NodeTranslator {
753
753
  constructor() {
754
754
  this.linkNodes = [];
755
755
  }
756
+ all() {
757
+ return this.linkNodes;
758
+ }
756
759
  //always match for use.
757
760
  match(dn) {
758
761
  return true;
@@ -1 +1 @@
1
- {"version":3,"file":"kodo-core.min.js","mappings":"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","sources":["webpack://kodo-core/webpack/universalModuleDefinition","webpack://kodo-core/./src/expressions/_defines.ts","webpack://kodo-core/./src/expressions/index.ts","webpack://kodo-core/./src/expressions/linkExpression.ts","webpack://kodo-core/./src/expressions/queryExpression.ts","webpack://kodo-core/./src/index.ts","webpack://kodo-core/./src/kodo.ts","webpack://kodo-core/./src/nodes/dataNode.ts","webpack://kodo-core/./src/nodes/index.ts","webpack://kodo-core/./src/nodes/linkNode.ts","webpack://kodo-core/./src/nodes/nodeBase.ts","webpack://kodo-core/./src/nodes/queryNode.ts","webpack://kodo-core/./src/providers/iDataProvider.ts","webpack://kodo-core/./src/providers/index.ts","webpack://kodo-core/./src/providers/memoryProvider.ts","webpack://kodo-core/./src/translators/iNodeTranslator.ts","webpack://kodo-core/./src/translators/index.ts","webpack://kodo-core/./src/translators/nodeTranslator.ts","webpack://kodo-core/./src/utils/hash.ts","webpack://kodo-core/./src/utils/index.ts","webpack://kodo-core/./src/utils/objectUtil.ts","webpack://kodo-core/webpack/bootstrap","webpack://kodo-core/webpack/before-startup","webpack://kodo-core/webpack/startup","webpack://kodo-core/webpack/after-startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"kodo-core\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"kodo-core\"] = factory();\n\telse\n\t\troot[\"kodo-core\"] = factory();\n})(global, () => {\nreturn ","\nexport declare type LinkOperator = \">=\" | \">\" | \"<\" | \"<=\" | \"==\" | \"!=\" | \"->\";\nexport declare type ROperator_Atom = \">=\" | \">\" | \"<\" | \"<=\" | \"==\" | \"===\" | \"!=\" | \"!==\";\nexport declare type ROperator_Array = \"IN\" | \"!IN\";\nexport declare type ROperator = ROperator_Atom | ROperator_Array;\nexport declare type BOperator = \"&&\" | \"||\";\n\nexport function revertLinkOperator(op: LinkOperator): LinkOperator | null {\n switch(op) {\n case \">\":\n return \"<\";\n case \">=\":\n return \"<=\";\n case \"<\":\n return \">\";\n case \"<=\":\n return \">=\";\n case \"->\": //single op\n return null;\n default:\n return op;\n }\n}\n\nexport function convertLP2RO(op: LinkOperator): ROperator | null {\n switch (op) {\n case \"->\": //single op\n return \"==\";\n default:\n return op;\n }\n}","\nexport * from \"./_defines\";\nexport * from \"./linkExpression\";\nexport * from \"./queryExpression\";","import { BOperator, LinkOperator, ROperator } from \"./_defines\";\n\nexport type LinkOn<TFrom, TTo> = {\n $from?: keyof TFrom,\n $op?: LinkOperator,\n $to?: keyof TTo\n};\n\nexport type LinkExpressionWhere<TFrom, TTo> = {\n $with?: BOperator;\n $where?: Array<LinkExpression<TFrom, TTo>>;\n};\n\nexport type LinkExpression<TFrom, TTo> = LinkExpressionWhere<TFrom, TTo> & LinkOn<TFrom, TTo>;\n\nexport function isLinkExpressionKey(key: string): boolean {\n return (key === \"$with\" || key === \"$where\");\n}\n","import { BOperator, ROperator_Atom, ROperator_Array } from \"./_defines\";\n\n/*\nexport interface IObject<T extends ObjectType> {\n type: T\n parameters: ParameterMap[T]\n};\ntype ParameterMap = {\n \"==\": string\n \"IN\": string[]\n};\nexport type ObjectType = keyof ParameterMap;\nlet test: IObject<\"IN\"> = {\n type: \"==\",\n parameters: \"test\"\n};\n*/\n\nexport type QueryOnAtomValue<T, P extends keyof T> = {\n $op?: ROperator_Atom;\n $val: T[P] | null | undefined;\n};\n\nexport type QueryOnArrayValue<T, P extends keyof T> = {\n $op?: ROperator_Array;\n $val: T[P][];\n};\n\nexport type QueryOnValue<T, P extends keyof T> = QueryOnAtomValue<T, P> | QueryOnArrayValue<T, P>;\n\nexport type QueryOn<T> = {\n [P in keyof T]?: QueryOnValue<T, P> | T[P];\n};\n\nexport type QueryExpressionWhere<T> = {\n $with?: BOperator;\n $where?: Array<QueryExpression<T>>;\n};\n\nexport type QueryExpression<T> = QueryExpressionWhere<T> & QueryOn<T>;\n\nexport function isQueryExpressionKey(key: string): boolean {\n return (key === \"$with\" || key === \"$where\");\n}\n","\nexport * from \"./providers\";\nexport * from \"./kodo\";\nexport * from \"./nodes/\";\nexport * from \"./expressions\";\nexport * from \"./translators\";\nexport * from \"./utils\";\n","import { DataNode, DataNodeMap, LinkNode, QueryNode } from \"./nodes\";\nimport { IDataProvider } from \"./providers\";\nimport { INodeTranslator } from \"./translators\";\nimport { generateHashCode } from \"./utils\";\n\nexport interface ExploreOption {\n tierLimit: number;\n}\n\nexport interface KodoOption extends ExploreOption {\n cache: boolean;\n recursion: boolean;\n}\n\n//It's bulky, but it's powerful\nexport class Kodo {\n\n private translators: INodeTranslator[];\n private providers: IDataProvider[];\n private nodes: DataNodeMap;\n private opt: KodoOption;\n\n private getDefaultOption(opt?: Partial<KodoOption>): KodoOption {\n let defaultOpt: KodoOption = {\n cache: true,\n recursion: true,\n tierLimit: 0\n };\n\n let theOpt = Object.assign(defaultOpt, opt || {});\n return theOpt;\n }\n\n constructor(protected name: string, opt?: Partial<KodoOption>) {\n this.translators = [];\n this.providers = [];\n this.nodes = new DataNodeMap();\n this.opt = this.getDefaultOption(opt);\n }\n\n setOption(opt: Partial<KodoOption>) {\n this.opt = Object.assign(this.opt, opt);\n }\n\n linkExpression(expression: string, params?: string[]): void {\n //TODO here:\n //this.expressions.push(expression);\n }\n\n registerTranslator(translator: INodeTranslator) {\n this.translators.push(translator);\n }\n\n registerProvider(provider: IDataProvider) {\n this.providers.push(provider);\n }\n\n loopExplore<T>(startup: QueryNode<T>, exlpreOpt: ExploreOption): void {\n if (!this.opt.recursion) {\n if (this.nodes.existNS(startup.$ns)) { return; }\n }\n if (this.opt.tierLimit) {\n if (exlpreOpt.tierLimit >= this.opt.tierLimit) { return; }\n }\n\n //let dNodes: DataNode<any>[] = [];\n let foundList: DataNode<any>[] = [];\n\n //1. load data from provider\n this.providers.forEach(p => {\n\n //1. query\n let founds = p.lookup(startup);\n \n founds.forEach(f => {\n let added = this.nodes.tryAdd(f);\n if (added) { foundList.push(f); }\n });\n });\n\n if (foundList.length <= 0) { return; }\n\n foundList.forEach(dn => {\n \n this.translators.forEach(t => {\n if (!t.match(dn)) { return; }\n\n //2. translate\n let qn = t.translate<any, any>(dn);\n \n //3. continue search\n qn.forEach(q => {\n this.loopExplore(q, {\n tierLimit: exlpreOpt.tierLimit + 1\n });\n });\n });\n });\n }\n\n explore<T>(startup: QueryNode<T>): DataNode<any>[] {\n if (!this.opt.cache) {\n this.nodes.clear();\n }\n\n if (!startup.$id) {\n let qnid = generateHashCode(startup);\n startup.$id = `qn-${startup.$ns}-$startup-${qnid}`;\n }\n this.loopExplore(startup, {\n tierLimit: 0\n });\n \n return this.nodes.getList();\n }\n}\n","import { NodeBase } from \"./nodeBase\";\nimport { QueryNode } from \"./queryNode\";\n\n/*\nexport type DataNodeObject<T> = {\n [P in keyof T]?: {\n //$expression?: LinkExpression;\n $from?: QueryNode<T>;\n $val: T[P];\n };\n};\n*/\n\nexport class DataNode<T> extends NodeBase {\n $fromQN?: QueryNode<T>;\n\n data: Partial<T>;\n}\n\nexport class DataNodeMap {\n nodes: Map<string, DataNode<any>>;\n ns: Map<string, DataNode<any>[]>;\n\n constructor() {\n this.nodes = new Map<string, DataNode<any>>();\n this.ns = new Map<string, DataNode<any>[]>();\n }\n\n tryAdd<T>(node: DataNode<T>): boolean {\n let nodeid = `${node.$ns}-${node.$id}`;\n\n //do not add if exist.\n if (this.nodes.get(nodeid)) {\n return false;\n }\n\n //add node map\n this.nodes.set(nodeid, node);\n\n //add ns map\n let nodeNS = this.ns.get(node.$ns);\n if (!nodeNS) {\n nodeNS = [];\n this.ns.set(node.$ns, nodeNS);\n }\n nodeNS.push(node);\n\n return true;\n }\n\n getList(): DataNode<any>[] {\n return Array.from(this.nodes.values());\n }\n\n clear(): void {\n this.nodes.clear();\n this.ns.clear();\n }\n\n existNS(ns: string): boolean {\n let rtn = this.ns.get(ns);\n\n return !!rtn;\n }\n}","\nexport * from \"./nodeBase\";\nexport * from \"./dataNode\";\nexport * from \"./queryNode\";\nexport * from \"./linkNode\";\n","import { LinkExpression } from \"../expressions\";\nimport { NodeBase } from \"./nodeBase\";\n\nexport class LinkNode<TFrom, TTo> extends NodeBase {\n $fromNS: string;\n $toNS: string;\n\n expression: LinkExpression<TFrom, TTo>;\n\n private static revertExpression<TFrom, TTo>(origin: LinkExpression<TFrom, TTo>): LinkExpression<TTo, TFrom> {\n let rtn: LinkExpression<TTo, TFrom> = {\n $from: origin.$to,\n $to: origin.$from,\n $with: origin.$with,\n $where: []\n };\n\n //when ==, means A->B && B->A\n if (origin.$op === \"==\") {\n rtn.$op = origin.$op;\n origin.$where?.forEach(m => {\n let r = this.revertExpression(m);\n if (r) { rtn.$where.push(r); }\n });\n }\n\n return rtn;\n }\n\n static revert<TFrom, TTo>(node: LinkNode<TFrom, TTo>): LinkNode<TTo, TFrom> | null {\n let rExp = LinkNode.revertExpression(node.expression);\n if (!rExp) { return null; }\n\n let rtn: LinkNode<TTo, TFrom> = new LinkNode<TTo, TFrom>();\n rtn.$id = `${node.$id}-r`;\n rtn.$ns = node.$ns;\n rtn.$fromNS = node.$toNS;\n rtn.$toNS = node.$fromNS;\n rtn.expression = rExp;\n\n return rtn;\n }\n}\n","\nexport abstract class NodeBase {\n $id?: number | string;\n $ns: string;\n}","import { QueryExpression } from \"../expressions/queryExpression\";\nimport { DataNode } from \"./dataNode\";\nimport { LinkNode } from \"./linkNode\";\nimport { NodeBase } from \"./nodeBase\";\n\n/*\nexport type NNodeValueType = Date | string | number | null;\n\nexport class NNodeValue {\n [prop: string]: NNodeValueType;\n}\n*/\n\nexport class QueryNode<T> extends NodeBase {\n $fromDN?: DataNode<any>;\n $fromLN?: LinkNode<any, T>;\n\n expression: QueryExpression<T>;\n}\n","import { DataNode, QueryNode } from \"../nodes\";\n\nexport interface IDataProvider {\n lookup<T>(node: QueryNode<T>): DataNode<any>[];\n}\n","\nexport * from \"./iDataProvider\";\nexport * from \"./memoryProvider\";\n","import { DataNode } from \"../nodes\";\nimport { QueryNode } from \"../nodes/queryNode\";\nimport { QueryExpression, ROperator, BOperator, isQueryExpressionKey, QueryOn, QueryOnValue } from \"../expressions\";\nimport { IDataProvider } from \"./iDataProvider\";\nimport { generateHashCode, isNullOrUndefined } from \"../utils\";\n\n//defer means delay to judge\ndeclare type MatchResult = true | false | \"defer\";\n\nexport class MemoryData<T> {\n ns: string;\n val: T;\n}\n\nexport class MemoryProvider implements IDataProvider {\n private objs: MemoryData<any>[];\n\n constructor() {\n this.objs = [];\n }\n\n add<T>(namespace: string, obj: T) {\n this.objs.push({\n ns: namespace,\n val: obj\n });\n }\n\n private copmareNull(op: ROperator, val: any, dataVal: any): boolean {\n switch (op) {\n case \"==\":\n return isNullOrUndefined(dataVal);\n case \"!=\":\n return !isNullOrUndefined(dataVal);\n case \"===\":\n return (dataVal === val);\n case \"!==\":\n return (dataVal !== val);\n default:\n return false;\n }\n }\n\n private isMatchData(key: string, op: ROperator, opVal: any, data: any): boolean {\n let dataVal = data[key];\n\n if (isNullOrUndefined(opVal)) {\n return this.copmareNull(op, opVal, dataVal);\n }\n\n op ||= \"==\";\n switch (op) {\n case \"==\":\n return (dataVal == opVal);\n case \"===\":\n return (dataVal === opVal);\n case \"!=\":\n return (dataVal != opVal);\n case \"!==\":\n return (dataVal !== opVal);\n case \">\":\n return (dataVal > opVal);\n case \">=\":\n return (dataVal >= opVal);\n case \"<\":\n return (dataVal < opVal);\n case \"<=\":\n return (dataVal <= opVal);\n case \"IN\":\n if (opVal instanceof Array) {\n return opVal.some(m => m == dataVal);\n }\n return false;\n case \"!IN\":\n if (opVal instanceof Array) {\n return !opVal.some(m => m == dataVal);\n }\n return false;\n default:\n break;\n }\n \n throw { key: \"MemoryProvider.isMatchData\", exp: \"Not implemented yet.\" };\n }\n\n private assumeMatchList(matchList: MatchResult[], bVal: boolean): MatchResult {\n let rtn: MatchResult = \"defer\";\n\n matchList.every(m => {\n //continue\n if (m === \"defer\") { return true; }\n\n if (m === bVal) {\n rtn = bVal;\n\n return false; //break;\n } else {\n rtn = !bVal;\n }\n\n //continue;\n return true;\n });\n\n return rtn;\n }\n\n private isAllMatchWith(con: BOperator, matchList: MatchResult[]): MatchResult {\n if (matchList.length <= 0) {\n return \"defer\";\n }\n\n if (con === \"&&\") {\n /*\n let rtn: MatchResult = \"defer\";\n matchList.every(m => {\n if (m === false) {\n rtn = false;\n return false; //break;\n }\n\n if (m === true) {\n rtn = true;\n }\n\n //continue;\n return true;\n });\n */\n let rtn = this.assumeMatchList(matchList, false);\n\n return rtn;\n } else if (con === \"||\") {\n /*\n let rtn: MatchResult = \"defer\";\n matchList.every(m => {\n if (m === true) {\n rtn = true;\n return false; //break;\n }\n\n if (m === false) {\n rtn = false;\n }\n\n //continue;\n return true;\n });\n */\n \n let rtn = this.assumeMatchList(matchList, true);\n return rtn;\n } else {\n throw { key: \"MemoryProvider.isMatchWith\", exp: `QueryCondition ${con} not allowed.` };\n }\n }\n\n private matchOnData<T>(where: QueryExpression<T>, data: any): MatchResult {\n let con: BOperator = where.$with || \"&&\";\n let isAnd = (con === \"&&\");\n let matchList: boolean[] = [];\n\n for (let key in where as QueryOn<T>) {\n if (isQueryExpressionKey(key)) { continue; }\n\n let val: any = where[key];\n\n let match: boolean = false;\n\n if (typeof val === \"object\") {\n let theVal = val as QueryOnValue<T, keyof T>;\n\n match = this.isMatchData(key, theVal.$op, theVal.$val, data);\n } else {\n match = this.isMatchData(key, \"==\", val, data);\n }\n\n matchList.push(match);\n\n if (!match && isAnd) { return false; }\n }\n\n return this.isAllMatchWith(con, matchList);\n }\n\n private match<T>(expression: QueryExpression<T>, data: any): MatchResult {\n \n let matchList: MatchResult[] = [];\n\n let con: BOperator = expression.$with || \"&&\";\n let isAnd = (con === \"&&\");\n\n let matched = this.matchOnData(expression, data);\n if (!matched && isAnd) { return false; }\n \n matchList.push(matched);\n\n if (expression.$where?.length > 0) {\n expression.$where.every(w => {\n let match = this.match<T>(w, data);\n matchList.push(match);\n \n //break:\n if (!matched && isAnd) { return false; }\n\n return true;\n });\n }\n\n let rtn = this.isAllMatchWith(con, matchList);\n return rtn;\n }\n\n lookup<T>(qNode: QueryNode<T>): DataNode<any>[] {\n //find match\n let list = this.objs.filter(m => {\n if (qNode.$ns !== m.ns) { return false; }\n\n let rtn = this.match(qNode.expression, m.val);\n\n //regards the final \"defer\" as false\n if (rtn === \"defer\") { return false; }\n else { return rtn; }\n });\n\n //convert to data node\n let rtn = list.map(m => {\n let node = new DataNode<T>();\n node.$fromQN = qNode;\n node.$ns = m.ns;\n node.data = m.val;\n node.$id = m.val?.id || generateHashCode(m.val); //TODO here: use hashcode to generate?\n return node;\n });\n\n return rtn;\n }\n}","import { DataNode, LinkNode, QueryNode } from \"../nodes\";\n\nexport interface INodeTranslator {\n link<TFrom, TTo>(ln: LinkNode<TFrom, TTo>): boolean;\n match<TFrom>(dn: DataNode<TFrom>): boolean;\n translate<TFrom, TTo>(data: DataNode<TFrom>): QueryNode<TTo>[];\n}\n","\nexport * from \"./iNodeTranslator\";\nexport * from \"./nodeTranslator\";","import { LinkExpression, QueryExpression, QueryOnValue, convertLP2RO, revertLinkOperator } from \"../expressions\";\nimport { DataNode, LinkNode, QueryNode } from \"../nodes\";\nimport { generateHashCode } from \"../utils\";\nimport { INodeTranslator } from \"./iNodeTranslator\";\n\n//DataNode + LinkNode => QueryNode\nexport class NodeTranslator implements INodeTranslator {\n private linkNodes: LinkNode<any, any>[];\n\n constructor() {\n this.linkNodes = [];\n }\n\n //always match for use.\n match<TFrom>(dn: DataNode<TFrom>): boolean {\n return true;\n }\n\n link<TFrom, TTo>(ln: LinkNode<TFrom, TTo>): boolean {\n if (!ln.$id) {\n let lnid = generateHashCode(ln);\n ln.$id = `ln-${ln.$fromNS}-${ln.$toNS}-${lnid}`;\n }\n this.linkNodes.push(ln);\n\n let revertLink = LinkNode.revert(ln);\n if (revertLink) { this.linkNodes.push(revertLink); }\n\n return true;\n }\n\n private tryMapOnData<TFrom, TTo>(rtnQE: QueryExpression<TTo>, where: LinkExpression<TFrom, TTo>, data: DataNode<TFrom>): boolean {\n let dataVal = data.data[where.$from];\n if (dataVal === undefined) { return false; }\n\n let rop = revertLinkOperator(where.$op);\n if (!rop) { return false; }\n\n rtnQE.$with = where.$with;\n\n rtnQE[where.$to] ||= {} as any;\n (rtnQE[where.$to] as QueryOnValue<TTo, keyof TTo>).$op = convertLP2RO(rop);\n (rtnQE[where.$to] as QueryOnValue<TTo, keyof TTo>).$val = dataVal as any; //TODO here: better strong type?\n }\n\n private tryMap<TFrom, TTo>(rtnQE: QueryExpression<TTo>, expression: LinkExpression<TFrom, TTo>, data: DataNode<TFrom>): void {\n rtnQE.$with = expression.$with;\n\n this.tryMapOnData(rtnQE, expression, data);\n\n if (expression.$where?.length > 0) {\n expression.$where.forEach(w => {\n let qeWhere: QueryExpression<TTo> = {};\n qeWhere.$with = w.$with;\n qeWhere.$where = [];\n this.tryMap(qeWhere, w, data);\n rtnQE.$where.push(qeWhere);\n });\n }\n }\n\n //DataNode + LinkNode => QueryNode\n translate<TFrom, TTo>(data: DataNode<TFrom>): QueryNode<TTo>[] {\n let rtn = [];\n\n this.linkNodes.forEach(ln => {\n if (ln.$fromNS !== data.$ns) { return; }\n\n let qn = new QueryNode<TTo>();\n qn.$id = `qn-${data.$ns}-${data.$id}-${ln.$id}`;\n qn.$ns = ln.$toNS;\n qn.$fromDN = data;\n qn.$fromLN = ln;\n qn.expression = {};\n qn.expression.$where = [];\n this.tryMap(qn.expression, ln.expression as LinkExpression<TFrom, TTo>, data);\n \n rtn.push(qn);\n });\n\n return rtn;\n }\n}\n","\nconst SEED_DEFAULT = Math.ceil(Math.random() * 100000);\n\nfunction objToString(obj: any): string {\n let str = \"null\";\n let type = typeof obj;\n switch (type) {\n case \"undefined\":\n str = \"undefined\";\n break;\n case \"string\":\n str = obj;\n break;\n case \"boolean\":\n case \"number\":\n case \"bigint\":\n case \"function\":\n case \"symbol\":\n str = obj;\n break;\n case \"object\":\n try {\n obj = obj || null;\n str = JSON.stringify(obj || null);\n }\n catch(e) {\n //swallow exception\n }\n break;\n default:\n break;\n };\n\n return str;\n}\n\nexport function generateHashCode(obj: any,\n opt?: {\n seed?: number\n }): string {\n //let seed = opt?.seed || Math.ceil(Math.random() * 100000);\n let seed = opt?.seed || SEED_DEFAULT;\n\n let str = objToString(obj);\n let hash = seed;\n for (let i = 0; i < str.length; i++) {\n hash = (hash << 5) - hash + str.charCodeAt(i)\n hash |= 0 //to 32bit integer\n }\n\n //ensure positive num\n hash = hash & 0x7FFFFFFF;\n\n //console.warn(hash);\n\n return hash.toString();\n}\n","\nexport * from \"./hash\";\nexport * from \"./objectUtil\";","\n\nexport function isNullOrUndefined(obj: any) {\n return (obj === null || obj === undefined);\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(\"./src/index.ts\");\n",""],"names":[],"sourceRoot":""}
1
+ {"version":3,"file":"kodo-core.min.js","mappings":"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","sources":["webpack://kodo-core/webpack/universalModuleDefinition","webpack://kodo-core/./src/expressions/_defines.ts","webpack://kodo-core/./src/expressions/index.ts","webpack://kodo-core/./src/expressions/linkExpression.ts","webpack://kodo-core/./src/expressions/queryExpression.ts","webpack://kodo-core/./src/index.ts","webpack://kodo-core/./src/kodo.ts","webpack://kodo-core/./src/nodes/dataNode.ts","webpack://kodo-core/./src/nodes/index.ts","webpack://kodo-core/./src/nodes/linkNode.ts","webpack://kodo-core/./src/nodes/nodeBase.ts","webpack://kodo-core/./src/nodes/queryNode.ts","webpack://kodo-core/./src/providers/iDataProvider.ts","webpack://kodo-core/./src/providers/index.ts","webpack://kodo-core/./src/providers/memoryProvider.ts","webpack://kodo-core/./src/translators/iNodeTranslator.ts","webpack://kodo-core/./src/translators/index.ts","webpack://kodo-core/./src/translators/nodeTranslator.ts","webpack://kodo-core/./src/utils/hash.ts","webpack://kodo-core/./src/utils/index.ts","webpack://kodo-core/./src/utils/objectUtil.ts","webpack://kodo-core/webpack/bootstrap","webpack://kodo-core/webpack/before-startup","webpack://kodo-core/webpack/startup","webpack://kodo-core/webpack/after-startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"kodo-core\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"kodo-core\"] = factory();\n\telse\n\t\troot[\"kodo-core\"] = factory();\n})(global, () => {\nreturn ","\nexport declare type LinkOperator = \">=\" | \">\" | \"<\" | \"<=\" | \"==\" | \"!=\" | \"->\";\nexport declare type ROperator_Atom = \">=\" | \">\" | \"<\" | \"<=\" | \"==\" | \"===\" | \"!=\" | \"!==\";\nexport declare type ROperator_Array = \"IN\" | \"!IN\";\nexport declare type ROperator = ROperator_Atom | ROperator_Array;\nexport declare type BOperator = \"&&\" | \"||\";\n\nexport function revertLinkOperator(op: LinkOperator): LinkOperator | null {\n switch(op) {\n case \">\":\n return \"<\";\n case \">=\":\n return \"<=\";\n case \"<\":\n return \">\";\n case \"<=\":\n return \">=\";\n case \"->\": //single op\n return null;\n default:\n return op;\n }\n}\n\nexport function convertLP2RO(op: LinkOperator): ROperator | null {\n switch (op) {\n case \"->\": //single op\n return \"==\";\n default:\n return op;\n }\n}","\nexport * from \"./_defines\";\nexport * from \"./linkExpression\";\nexport * from \"./queryExpression\";","import { BOperator, LinkOperator, ROperator } from \"./_defines\";\n\nexport type LinkOn<TFrom, TTo> = {\n $from?: keyof TFrom,\n $op?: LinkOperator,\n $to?: keyof TTo\n};\n\nexport type LinkExpressionWhere<TFrom, TTo> = {\n $with?: BOperator;\n $where?: Array<LinkExpression<TFrom, TTo>>;\n};\n\nexport type LinkExpression<TFrom, TTo> = LinkExpressionWhere<TFrom, TTo> & LinkOn<TFrom, TTo>;\n\nexport function isLinkExpressionKey(key: string): boolean {\n return (key === \"$with\" || key === \"$where\");\n}\n","import { BOperator, ROperator_Atom, ROperator_Array } from \"./_defines\";\n\n/*\nexport interface IObject<T extends ObjectType> {\n type: T\n parameters: ParameterMap[T]\n};\ntype ParameterMap = {\n \"==\": string\n \"IN\": string[]\n};\nexport type ObjectType = keyof ParameterMap;\nlet test: IObject<\"IN\"> = {\n type: \"==\",\n parameters: \"test\"\n};\n*/\n\nexport type QueryOnAtomValue<T, P extends keyof T> = {\n $op?: ROperator_Atom;\n $val: T[P] | null | undefined;\n};\n\nexport type QueryOnArrayValue<T, P extends keyof T> = {\n $op?: ROperator_Array;\n $val: T[P][];\n};\n\nexport type QueryOnValue<T, P extends keyof T> = QueryOnAtomValue<T, P> | QueryOnArrayValue<T, P>;\n\nexport type QueryOn<T> = {\n [P in keyof T]?: QueryOnValue<T, P> | T[P];\n};\n\nexport type QueryExpressionWhere<T> = {\n $with?: BOperator;\n $where?: Array<QueryExpression<T>>;\n};\n\nexport type QueryExpression<T> = QueryExpressionWhere<T> & QueryOn<T>;\n\nexport function isQueryExpressionKey(key: string): boolean {\n return (key === \"$with\" || key === \"$where\");\n}\n","\nexport * from \"./providers\";\nexport * from \"./kodo\";\nexport * from \"./nodes/\";\nexport * from \"./expressions\";\nexport * from \"./translators\";\nexport * from \"./utils\";\n","import { DataNode, DataNodeMap, LinkNode, QueryNode } from \"./nodes\";\nimport { IDataProvider } from \"./providers\";\nimport { INodeTranslator } from \"./translators\";\nimport { generateHashCode } from \"./utils\";\n\nexport interface ExploreOption {\n tierLimit: number;\n}\n\nexport interface KodoOption extends ExploreOption {\n cache: boolean;\n recursion: boolean;\n}\n\n//It's bulky, but it's powerful\nexport class Kodo {\n\n translators: INodeTranslator[];\n providers: IDataProvider[];\n nodes: DataNodeMap;\n opt: KodoOption;\n\n private getDefaultOption(opt?: Partial<KodoOption>): KodoOption {\n let defaultOpt: KodoOption = {\n cache: true,\n recursion: true,\n tierLimit: 0\n };\n\n let theOpt = Object.assign(defaultOpt, opt || {});\n return theOpt;\n }\n\n constructor(protected name: string, opt?: Partial<KodoOption>) {\n this.translators = [];\n this.providers = [];\n this.nodes = new DataNodeMap();\n this.opt = this.getDefaultOption(opt);\n }\n\n setOption(opt: Partial<KodoOption>) {\n this.opt = Object.assign(this.opt, opt);\n }\n\n linkExpression(expression: string, params?: string[]): void {\n //TODO here:\n //this.expressions.push(expression);\n }\n\n registerTranslator(translator: INodeTranslator) {\n this.translators.push(translator);\n }\n\n registerProvider(provider: IDataProvider) {\n this.providers.push(provider);\n }\n\n loopExplore<T>(startup: QueryNode<T>, exlpreOpt: ExploreOption): void {\n if (!this.opt.recursion) {\n if (this.nodes.existNS(startup.$ns)) { return; }\n }\n if (this.opt.tierLimit) {\n if (exlpreOpt.tierLimit >= this.opt.tierLimit) { return; }\n }\n\n //let dNodes: DataNode<any>[] = [];\n let foundList: DataNode<any>[] = [];\n\n //1. load data from provider\n this.providers.forEach(p => {\n\n //1. query\n let founds = p.lookup(startup);\n \n founds.forEach(f => {\n let added = this.nodes.tryAdd(f);\n if (added) { foundList.push(f); }\n });\n });\n\n if (foundList.length <= 0) { return; }\n\n foundList.forEach(dn => {\n \n this.translators.forEach(t => {\n if (!t.match(dn)) { return; }\n\n //2. translate\n let qn = t.translate<any, any>(dn);\n \n //3. continue search\n qn.forEach(q => {\n this.loopExplore(q, {\n tierLimit: exlpreOpt.tierLimit + 1\n });\n });\n });\n });\n }\n\n explore<T>(startup: QueryNode<T>): DataNode<any>[] {\n if (!this.opt.cache) {\n this.nodes.clear();\n }\n\n if (!startup.$id) {\n let qnid = generateHashCode(startup);\n startup.$id = `qn-${startup.$ns}-$startup-${qnid}`;\n }\n this.loopExplore(startup, {\n tierLimit: 0\n });\n \n return this.nodes.getList();\n }\n}\n","import { NodeBase } from \"./nodeBase\";\nimport { QueryNode } from \"./queryNode\";\n\n/*\nexport type DataNodeObject<T> = {\n [P in keyof T]?: {\n //$expression?: LinkExpression;\n $from?: QueryNode<T>;\n $val: T[P];\n };\n};\n*/\n\nexport class DataNode<T> extends NodeBase {\n $fromQN?: QueryNode<T>;\n\n data: Partial<T>;\n}\n\nexport class DataNodeMap {\n nodes: Map<string, DataNode<any>>;\n ns: Map<string, DataNode<any>[]>;\n\n constructor() {\n this.nodes = new Map<string, DataNode<any>>();\n this.ns = new Map<string, DataNode<any>[]>();\n }\n\n tryAdd<T>(node: DataNode<T>): boolean {\n let nodeid = `${node.$ns}-${node.$id}`;\n\n //do not add if exist.\n if (this.nodes.get(nodeid)) {\n return false;\n }\n\n //add node map\n this.nodes.set(nodeid, node);\n\n //add ns map\n let nodeNS = this.ns.get(node.$ns);\n if (!nodeNS) {\n nodeNS = [];\n this.ns.set(node.$ns, nodeNS);\n }\n nodeNS.push(node);\n\n return true;\n }\n\n getList(): DataNode<any>[] {\n return Array.from(this.nodes.values());\n }\n\n clear(): void {\n this.nodes.clear();\n this.ns.clear();\n }\n\n existNS(ns: string): boolean {\n let rtn = this.ns.get(ns);\n\n return !!rtn;\n }\n}","\nexport * from \"./nodeBase\";\nexport * from \"./dataNode\";\nexport * from \"./queryNode\";\nexport * from \"./linkNode\";\n","import { LinkExpression } from \"../expressions\";\nimport { NodeBase } from \"./nodeBase\";\n\nexport class LinkNode<TFrom, TTo> extends NodeBase {\n $fromNS: string;\n $toNS: string;\n\n expression: LinkExpression<TFrom, TTo>;\n\n private static revertExpression<TFrom, TTo>(origin: LinkExpression<TFrom, TTo>): LinkExpression<TTo, TFrom> {\n let rtn: LinkExpression<TTo, TFrom> = {\n $from: origin.$to,\n $to: origin.$from,\n $with: origin.$with,\n $where: []\n };\n\n //when ==, means A->B && B->A\n if (origin.$op === \"==\") {\n rtn.$op = origin.$op;\n origin.$where?.forEach(m => {\n let r = this.revertExpression(m);\n if (r) { rtn.$where.push(r); }\n });\n }\n\n return rtn;\n }\n\n static revert<TFrom, TTo>(node: LinkNode<TFrom, TTo>): LinkNode<TTo, TFrom> | null {\n let rExp = LinkNode.revertExpression(node.expression);\n if (!rExp) { return null; }\n\n let rtn: LinkNode<TTo, TFrom> = new LinkNode<TTo, TFrom>();\n rtn.$id = `${node.$id}-r`;\n rtn.$ns = node.$ns;\n rtn.$fromNS = node.$toNS;\n rtn.$toNS = node.$fromNS;\n rtn.expression = rExp;\n\n return rtn;\n }\n}\n","\nexport abstract class NodeBase {\n $id?: number | string;\n $ns: string;\n}","import { QueryExpression } from \"../expressions/queryExpression\";\nimport { DataNode } from \"./dataNode\";\nimport { LinkNode } from \"./linkNode\";\nimport { NodeBase } from \"./nodeBase\";\n\n/*\nexport type NNodeValueType = Date | string | number | null;\n\nexport class NNodeValue {\n [prop: string]: NNodeValueType;\n}\n*/\n\nexport class QueryNode<T> extends NodeBase {\n $fromDN?: DataNode<any>;\n $fromLN?: LinkNode<any, T>;\n\n expression: QueryExpression<T>;\n}\n","import { DataNode, QueryNode } from \"../nodes\";\n\nexport interface IDataProvider {\n lookup<T>(node: QueryNode<T>): DataNode<any>[];\n}\n","\nexport * from \"./iDataProvider\";\nexport * from \"./memoryProvider\";\n","import { DataNode } from \"../nodes\";\nimport { QueryNode } from \"../nodes/queryNode\";\nimport { QueryExpression, ROperator, BOperator, isQueryExpressionKey, QueryOn, QueryOnValue } from \"../expressions\";\nimport { IDataProvider } from \"./iDataProvider\";\nimport { generateHashCode, isNullOrUndefined } from \"../utils\";\n\n//defer means delay to judge\ndeclare type MatchResult = true | false | \"defer\";\n\nexport class MemoryData<T> {\n ns: string;\n val: T;\n}\n\nexport class MemoryProvider implements IDataProvider {\n private objs: MemoryData<any>[];\n\n constructor() {\n this.objs = [];\n }\n\n add<T>(namespace: string, obj: T) {\n this.objs.push({\n ns: namespace,\n val: obj\n });\n }\n\n private copmareNull(op: ROperator, val: any, dataVal: any): boolean {\n switch (op) {\n case \"==\":\n return isNullOrUndefined(dataVal);\n case \"!=\":\n return !isNullOrUndefined(dataVal);\n case \"===\":\n return (dataVal === val);\n case \"!==\":\n return (dataVal !== val);\n default:\n return false;\n }\n }\n\n private isMatchData(key: string, op: ROperator, opVal: any, data: any): boolean {\n let dataVal = data[key];\n\n if (isNullOrUndefined(opVal)) {\n return this.copmareNull(op, opVal, dataVal);\n }\n\n op ||= \"==\";\n switch (op) {\n case \"==\":\n return (dataVal == opVal);\n case \"===\":\n return (dataVal === opVal);\n case \"!=\":\n return (dataVal != opVal);\n case \"!==\":\n return (dataVal !== opVal);\n case \">\":\n return (dataVal > opVal);\n case \">=\":\n return (dataVal >= opVal);\n case \"<\":\n return (dataVal < opVal);\n case \"<=\":\n return (dataVal <= opVal);\n case \"IN\":\n if (opVal instanceof Array) {\n return opVal.some(m => m == dataVal);\n }\n return false;\n case \"!IN\":\n if (opVal instanceof Array) {\n return !opVal.some(m => m == dataVal);\n }\n return false;\n default:\n break;\n }\n \n throw { key: \"MemoryProvider.isMatchData\", exp: \"Not implemented yet.\" };\n }\n\n private assumeMatchList(matchList: MatchResult[], bVal: boolean): MatchResult {\n let rtn: MatchResult = \"defer\";\n\n matchList.every(m => {\n //continue\n if (m === \"defer\") { return true; }\n\n if (m === bVal) {\n rtn = bVal;\n\n return false; //break;\n } else {\n rtn = !bVal;\n }\n\n //continue;\n return true;\n });\n\n return rtn;\n }\n\n private isAllMatchWith(con: BOperator, matchList: MatchResult[]): MatchResult {\n if (matchList.length <= 0) {\n return \"defer\";\n }\n\n if (con === \"&&\") {\n /*\n let rtn: MatchResult = \"defer\";\n matchList.every(m => {\n if (m === false) {\n rtn = false;\n return false; //break;\n }\n\n if (m === true) {\n rtn = true;\n }\n\n //continue;\n return true;\n });\n */\n let rtn = this.assumeMatchList(matchList, false);\n\n return rtn;\n } else if (con === \"||\") {\n /*\n let rtn: MatchResult = \"defer\";\n matchList.every(m => {\n if (m === true) {\n rtn = true;\n return false; //break;\n }\n\n if (m === false) {\n rtn = false;\n }\n\n //continue;\n return true;\n });\n */\n \n let rtn = this.assumeMatchList(matchList, true);\n return rtn;\n } else {\n throw { key: \"MemoryProvider.isMatchWith\", exp: `QueryCondition ${con} not allowed.` };\n }\n }\n\n private matchOnData<T>(where: QueryExpression<T>, data: any): MatchResult {\n let con: BOperator = where.$with || \"&&\";\n let isAnd = (con === \"&&\");\n let matchList: boolean[] = [];\n\n for (let key in where as QueryOn<T>) {\n if (isQueryExpressionKey(key)) { continue; }\n\n let val: any = where[key];\n\n let match: boolean = false;\n\n if (typeof val === \"object\") {\n let theVal = val as QueryOnValue<T, keyof T>;\n\n match = this.isMatchData(key, theVal.$op, theVal.$val, data);\n } else {\n match = this.isMatchData(key, \"==\", val, data);\n }\n\n matchList.push(match);\n\n if (!match && isAnd) { return false; }\n }\n\n return this.isAllMatchWith(con, matchList);\n }\n\n private match<T>(expression: QueryExpression<T>, data: any): MatchResult {\n \n let matchList: MatchResult[] = [];\n\n let con: BOperator = expression.$with || \"&&\";\n let isAnd = (con === \"&&\");\n\n let matched = this.matchOnData(expression, data);\n if (!matched && isAnd) { return false; }\n \n matchList.push(matched);\n\n if (expression.$where?.length > 0) {\n expression.$where.every(w => {\n let match = this.match<T>(w, data);\n matchList.push(match);\n \n //break:\n if (!matched && isAnd) { return false; }\n\n return true;\n });\n }\n\n let rtn = this.isAllMatchWith(con, matchList);\n return rtn;\n }\n\n lookup<T>(qNode: QueryNode<T>): DataNode<any>[] {\n //find match\n let list = this.objs.filter(m => {\n if (qNode.$ns !== m.ns) { return false; }\n\n let rtn = this.match(qNode.expression, m.val);\n\n //regards the final \"defer\" as false\n if (rtn === \"defer\") { return false; }\n else { return rtn; }\n });\n\n //convert to data node\n let rtn = list.map(m => {\n let node = new DataNode<T>();\n node.$fromQN = qNode;\n node.$ns = m.ns;\n node.data = m.val;\n node.$id = m.val?.id || generateHashCode(m.val); //TODO here: use hashcode to generate?\n return node;\n });\n\n return rtn;\n }\n}","import { DataNode, LinkNode, QueryNode } from \"../nodes\";\n\nexport interface INodeTranslator {\n all(): LinkNode<any, any>[];\n link<TFrom, TTo>(ln: LinkNode<TFrom, TTo>): boolean;\n match<TFrom>(dn: DataNode<TFrom>): boolean;\n translate<TFrom, TTo>(data: DataNode<TFrom>): QueryNode<TTo>[];\n}\n","\nexport * from \"./iNodeTranslator\";\nexport * from \"./nodeTranslator\";","import { LinkExpression, QueryExpression, QueryOnValue, convertLP2RO, revertLinkOperator } from \"../expressions\";\nimport { DataNode, LinkNode, QueryNode } from \"../nodes\";\nimport { generateHashCode } from \"../utils\";\nimport { INodeTranslator } from \"./iNodeTranslator\";\n\n//DataNode + LinkNode => QueryNode\nexport class NodeTranslator implements INodeTranslator {\n private linkNodes: LinkNode<any, any>[];\n\n constructor() {\n this.linkNodes = [];\n }\n\n all(): LinkNode<any, any>[] {\n return this.linkNodes;\n }\n\n //always match for use.\n match<TFrom>(dn: DataNode<TFrom>): boolean {\n return true;\n }\n\n link<TFrom, TTo>(ln: LinkNode<TFrom, TTo>): boolean {\n if (!ln.$id) {\n let lnid = generateHashCode(ln);\n ln.$id = `ln-${ln.$fromNS}-${ln.$toNS}-${lnid}`;\n }\n this.linkNodes.push(ln);\n\n let revertLink = LinkNode.revert(ln);\n if (revertLink) { this.linkNodes.push(revertLink); }\n\n return true;\n }\n\n private tryMapOnData<TFrom, TTo>(rtnQE: QueryExpression<TTo>, where: LinkExpression<TFrom, TTo>, data: DataNode<TFrom>): boolean {\n let dataVal = data.data[where.$from];\n if (dataVal === undefined) { return false; }\n\n let rop = revertLinkOperator(where.$op);\n if (!rop) { return false; }\n\n rtnQE.$with = where.$with;\n\n rtnQE[where.$to] ||= {} as any;\n (rtnQE[where.$to] as QueryOnValue<TTo, keyof TTo>).$op = convertLP2RO(rop);\n (rtnQE[where.$to] as QueryOnValue<TTo, keyof TTo>).$val = dataVal as any; //TODO here: better strong type?\n }\n\n private tryMap<TFrom, TTo>(rtnQE: QueryExpression<TTo>, expression: LinkExpression<TFrom, TTo>, data: DataNode<TFrom>): void {\n rtnQE.$with = expression.$with;\n\n this.tryMapOnData(rtnQE, expression, data);\n\n if (expression.$where?.length > 0) {\n expression.$where.forEach(w => {\n let qeWhere: QueryExpression<TTo> = {};\n qeWhere.$with = w.$with;\n qeWhere.$where = [];\n this.tryMap(qeWhere, w, data);\n rtnQE.$where.push(qeWhere);\n });\n }\n }\n\n //DataNode + LinkNode => QueryNode\n translate<TFrom, TTo>(data: DataNode<TFrom>): QueryNode<TTo>[] {\n let rtn = [];\n\n this.linkNodes.forEach(ln => {\n if (ln.$fromNS !== data.$ns) { return; }\n\n let qn = new QueryNode<TTo>();\n qn.$id = `qn-${data.$ns}-${data.$id}-${ln.$id}`;\n qn.$ns = ln.$toNS;\n qn.$fromDN = data;\n qn.$fromLN = ln;\n qn.expression = {};\n qn.expression.$where = [];\n this.tryMap(qn.expression, ln.expression as LinkExpression<TFrom, TTo>, data);\n \n rtn.push(qn);\n });\n\n return rtn;\n }\n}\n","\nconst SEED_DEFAULT = Math.ceil(Math.random() * 100000);\n\nfunction objToString(obj: any): string {\n let str = \"null\";\n let type = typeof obj;\n switch (type) {\n case \"undefined\":\n str = \"undefined\";\n break;\n case \"string\":\n str = obj;\n break;\n case \"boolean\":\n case \"number\":\n case \"bigint\":\n case \"function\":\n case \"symbol\":\n str = obj;\n break;\n case \"object\":\n try {\n obj = obj || null;\n str = JSON.stringify(obj || null);\n }\n catch(e) {\n //swallow exception\n }\n break;\n default:\n break;\n };\n\n return str;\n}\n\nexport function generateHashCode(obj: any,\n opt?: {\n seed?: number\n }): string {\n //let seed = opt?.seed || Math.ceil(Math.random() * 100000);\n let seed = opt?.seed || SEED_DEFAULT;\n\n let str = objToString(obj);\n let hash = seed;\n for (let i = 0; i < str.length; i++) {\n hash = (hash << 5) - hash + str.charCodeAt(i)\n hash |= 0 //to 32bit integer\n }\n\n //ensure positive num\n hash = hash & 0x7FFFFFFF;\n\n //console.warn(hash);\n\n return hash.toString();\n}\n","\nexport * from \"./hash\";\nexport * from \"./objectUtil\";","\n\nexport function isNullOrUndefined(obj: any) {\n return (obj === null || obj === undefined);\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(\"./src/index.ts\");\n",""],"names":[],"sourceRoot":""}
package/dist/kodo.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { DataNode, QueryNode } from "./nodes";
1
+ import { DataNode, DataNodeMap, QueryNode } from "./nodes";
2
2
  import { IDataProvider } from "./providers";
3
3
  import { INodeTranslator } from "./translators";
4
4
  export interface ExploreOption {
@@ -10,10 +10,10 @@ export interface KodoOption extends ExploreOption {
10
10
  }
11
11
  export declare class Kodo {
12
12
  protected name: string;
13
- private translators;
14
- private providers;
15
- private nodes;
16
- private opt;
13
+ translators: INodeTranslator[];
14
+ providers: IDataProvider[];
15
+ nodes: DataNodeMap;
16
+ opt: KodoOption;
17
17
  private getDefaultOption;
18
18
  constructor(name: string, opt?: Partial<KodoOption>);
19
19
  setOption(opt: Partial<KodoOption>): void;
@@ -1,5 +1,6 @@
1
1
  import { DataNode, LinkNode, QueryNode } from "../nodes";
2
2
  export interface INodeTranslator {
3
+ all(): LinkNode<any, any>[];
3
4
  link<TFrom, TTo>(ln: LinkNode<TFrom, TTo>): boolean;
4
5
  match<TFrom>(dn: DataNode<TFrom>): boolean;
5
6
  translate<TFrom, TTo>(data: DataNode<TFrom>): QueryNode<TTo>[];
@@ -3,6 +3,7 @@ import { INodeTranslator } from "./iNodeTranslator";
3
3
  export declare class NodeTranslator implements INodeTranslator {
4
4
  private linkNodes;
5
5
  constructor();
6
+ all(): LinkNode<any, any>[];
6
7
  match<TFrom>(dn: DataNode<TFrom>): boolean;
7
8
  link<TFrom, TTo>(ln: LinkNode<TFrom, TTo>): boolean;
8
9
  private tryMapOnData;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kodo-core",
3
- "version": "0.0.2",
3
+ "version": "0.0.3",
4
4
  "main": "dist/kodo-core.min.js",
5
5
  "types": "./dist/index.d.ts",
6
6
  "repository": "git@github.com:ShadowLei/kodo-core.git",