Comparing version 0.21.4 to 0.21.5
@@ -59,3 +59,3 @@ import { ApiEdgeRelation } from "../relations/ApiEdgeRelation"; | ||
prepare: (api: Api) => Promise<void>; | ||
resolve: () => Promise<void>; | ||
resolve: () => Promise<boolean>; | ||
metadata: () => ApiEdgeMetadata; | ||
@@ -91,3 +91,3 @@ relation: (name: string) => Promise<ApiEdgeRelation | undefined>; | ||
prepare: (api: Api) => Promise<void>; | ||
resolve: () => Promise<void>; | ||
resolve: () => Promise<boolean>; | ||
metadata: () => { | ||
@@ -94,0 +94,0 @@ name: string; |
@@ -23,3 +23,3 @@ "use strict"; | ||
this.external = false; | ||
this.resolve = () => Promise.resolve(); | ||
this.resolve = () => Promise.resolve(true); | ||
this.metadata = () => { | ||
@@ -26,0 +26,0 @@ return { |
@@ -38,3 +38,3 @@ import { ApiEdgeDefinition } from "../edge/ApiEdgeDefinition"; | ||
static fromJSON(obj: ExportedApiEdgeRelation, api: Api): Promise<ApiEdgeRelation>; | ||
resolve(): Promise<void>; | ||
resolve(): Promise<boolean>; | ||
} |
@@ -45,7 +45,11 @@ "use strict"; | ||
if (this.resolved) | ||
return; | ||
this.resolved = true; | ||
yield this.from.resolve(); | ||
yield this.to.resolve(); | ||
this.onResolve(); | ||
return true; | ||
if (yield this.from.resolve()) { | ||
if (yield this.to.resolve()) { | ||
this.onResolve(); | ||
this.resolved = true; | ||
return true; | ||
} | ||
} | ||
return false; | ||
}); | ||
@@ -52,0 +56,0 @@ } |
@@ -12,3 +12,3 @@ import { ApiEdgeDefinition } from "../edge/ApiEdgeDefinition"; | ||
constructor(api: Api, name: string, plural: boolean, resolver: () => Promise<ApiEdgeDefinition | undefined>); | ||
resolve(): Promise<void>; | ||
resolve(): Promise<boolean>; | ||
actions: ApiEdgeAction[]; | ||
@@ -15,0 +15,0 @@ methods: ApiEdgeMethod[]; |
@@ -63,7 +63,7 @@ "use strict"; | ||
this.actions = realEdge.actions; | ||
return true; | ||
} | ||
else { | ||
throw new Error('Failed to resolve'); | ||
} | ||
return false; | ||
} | ||
return true; | ||
}); | ||
@@ -70,0 +70,0 @@ } |
@@ -26,4 +26,4 @@ "use strict"; | ||
: edge => edge.name == name); | ||
if (edge) | ||
yield edge.resolve(); | ||
if (edge && !(yield edge.resolve())) | ||
return undefined; | ||
return edge; | ||
@@ -35,4 +35,4 @@ }); | ||
const relation = this.api.relations.find(relation => relation.name === name); | ||
if (relation) | ||
yield relation.resolve(); | ||
if (relation && !(yield relation.resolve())) | ||
return undefined; | ||
return relation; | ||
@@ -44,4 +44,4 @@ }); | ||
const relation = this.api.relations.find(relation => relation.name === name && (relation.from.pluralName === edge || relation.to.pluralName === edge)); | ||
if (relation) | ||
yield relation.resolve(); | ||
if (relation && !(yield relation.resolve())) | ||
return undefined; | ||
return relation; | ||
@@ -53,4 +53,4 @@ }); | ||
const relation = this.api.relations.find(relation => relation.name === name && relation.from.pluralName === edge); | ||
if (relation) | ||
yield relation.resolve(); | ||
if (relation && !(yield relation.resolve())) | ||
return undefined; | ||
return relation; | ||
@@ -62,4 +62,4 @@ }); | ||
const relation = this.api.relations.find(relation => relation.name === name && relation.to.pluralName === edge); | ||
if (relation) | ||
yield relation.resolve(); | ||
if (relation && !(yield relation.resolve())) | ||
return undefined; | ||
return relation; | ||
@@ -66,0 +66,0 @@ }); |
{ | ||
"name": "api-core", | ||
"version": "0.21.4", | ||
"version": "0.21.5", | ||
"description": "Model-based dynamic multi-level APIs for any provider, plus multiple consumption channels", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.js", |
@@ -61,3 +61,3 @@ import {ApiEdgeRelation} from "../relations/ApiEdgeRelation"; | ||
prepare: (api: Api) => Promise<void>; | ||
resolve: () => Promise<void>; | ||
resolve: () => Promise<boolean>; | ||
metadata: () => ApiEdgeMetadata | ||
@@ -100,3 +100,3 @@ relation: (name: string) => Promise<ApiEdgeRelation|undefined>; | ||
resolve = () => Promise.resolve(); | ||
resolve = () => Promise.resolve(true); | ||
@@ -103,0 +103,0 @@ metadata = () => { |
@@ -63,9 +63,14 @@ import {ApiEdgeDefinition} from "../edge/ApiEdgeDefinition"; | ||
async resolve() { | ||
if(this.resolved) return; | ||
if(this.resolved) return true; | ||
this.resolved = true; | ||
await this.from.resolve(); | ||
await this.to.resolve(); | ||
this.onResolve() | ||
if(await this.from.resolve()) { | ||
if(await this.to.resolve()) { | ||
this.onResolve(); | ||
this.resolved = true; | ||
return true | ||
} | ||
} | ||
return false | ||
} | ||
} |
@@ -34,8 +34,10 @@ import {ApiEdgeDefinition} from "../edge/ApiEdgeDefinition"; | ||
this.methods = realEdge.methods; | ||
this.actions = realEdge.actions | ||
this.actions = realEdge.actions; | ||
return true | ||
} | ||
else { | ||
throw new Error('Failed to resolve') | ||
} | ||
return false | ||
} | ||
return true | ||
} | ||
@@ -42,0 +44,0 @@ |
@@ -24,3 +24,3 @@ import {LazyApiEdge} from "./LazyApiEdge"; | ||
); | ||
if(edge) await edge.resolve(); | ||
if(edge && !(await edge.resolve())) return undefined; | ||
return edge | ||
@@ -31,3 +31,3 @@ } | ||
const relation = this.api.relations.find(relation => relation.name === name); | ||
if(relation) await relation.resolve(); | ||
if(relation && !(await relation.resolve())) return undefined; | ||
return relation | ||
@@ -40,3 +40,3 @@ } | ||
); | ||
if(relation) await relation.resolve(); | ||
if(relation && !(await relation.resolve())) return undefined; | ||
return relation | ||
@@ -49,3 +49,3 @@ } | ||
); | ||
if(relation) await relation.resolve(); | ||
if(relation && !(await relation.resolve())) return undefined; | ||
return relation | ||
@@ -58,5 +58,5 @@ } | ||
); | ||
if(relation) await relation.resolve(); | ||
if(relation && !(await relation.resolve())) return undefined; | ||
return relation | ||
} | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
670633
8241