boring-router
Advanced tools
Comparing version 0.3.0-alpha.31 to 0.3.0-alpha.32
@@ -27,2 +27,3 @@ import { OmitValueOfKey, OmitValueWithType } from 'tslang'; | ||
export declare type RouteAfterLeave = () => void; | ||
export declare type RouteHookRemovalCallback = () => void; | ||
export declare type RouteInterceptCallback<TRouteMatch extends RouteMatch = RouteMatch> = (next: TRouteMatch['$next']) => Promise<boolean | void> | boolean | void; | ||
@@ -70,10 +71,10 @@ export declare type RouteReactCallback = () => void; | ||
readonly $exact: boolean; | ||
$beforeEnter(callback: RouteBeforeEnter<this>): this; | ||
$beforeUpdate(callback: RouteBeforeUpdate<this>): this; | ||
$beforeLeave(callback: RouteBeforeLeave): this; | ||
$afterEnter(callback: RouteAfterEnter): this; | ||
$afterUpdate(callback: RouteAfterUpdate): this; | ||
$afterLeave(callback: RouteAfterLeave): this; | ||
$intercept(callback: RouteInterceptCallback): this; | ||
$react(callback: RouteReactCallback): this; | ||
$beforeEnter(callback: RouteBeforeEnter<this>): RouteHookRemovalCallback; | ||
$beforeUpdate(callback: RouteBeforeUpdate<this>): RouteHookRemovalCallback; | ||
$beforeLeave(callback: RouteBeforeLeave): RouteHookRemovalCallback; | ||
$afterEnter(callback: RouteAfterEnter): RouteHookRemovalCallback; | ||
$afterUpdate(callback: RouteAfterUpdate): RouteHookRemovalCallback; | ||
$afterLeave(callback: RouteAfterLeave): RouteHookRemovalCallback; | ||
$intercept(callback: RouteInterceptCallback): RouteHookRemovalCallback; | ||
$react(callback: RouteReactCallback): RouteHookRemovalCallback; | ||
$service(factory: RouteServiceFactory<this>): this; | ||
@@ -80,0 +81,0 @@ $parallel(options: RouteMatchParallelOptions<TGroupName>): void; |
@@ -12,13 +12,13 @@ "use strict"; | ||
/** @internal */ | ||
this._beforeEnterCallbacks = []; | ||
this._beforeEnterCallbackSet = new Set(); | ||
/** @internal */ | ||
this._beforeUpdateCallbacks = []; | ||
this._beforeUpdateCallbackSet = new Set(); | ||
/** @internal */ | ||
this._beforeLeaveCallbacks = []; | ||
this._beforeLeaveCallbackSet = new Set(); | ||
/** @internal */ | ||
this._afterEnterCallbacks = []; | ||
this._afterEnterCallbackSet = new Set(); | ||
/** @internal */ | ||
this._afterUpdateCallbacks = []; | ||
this._afterUpdateCallbackSet = new Set(); | ||
/** @internal */ | ||
this._afterLeaveCallbacks = []; | ||
this._afterLeaveCallbackSet = new Set(); | ||
for (let [key, defaultValue] of Object.entries(extension)) { | ||
@@ -50,34 +50,52 @@ Object.defineProperty(this, key, { | ||
$beforeEnter(callback) { | ||
this._beforeEnterCallbacks.push(callback); | ||
return this; | ||
this._beforeEnterCallbackSet.add(callback); | ||
return () => { | ||
this._beforeEnterCallbackSet.delete(callback); | ||
}; | ||
} | ||
$beforeUpdate(callback) { | ||
this._beforeUpdateCallbacks.push(callback); | ||
return this; | ||
this._beforeUpdateCallbackSet.add(callback); | ||
return () => { | ||
this._beforeUpdateCallbackSet.delete(callback); | ||
}; | ||
} | ||
$beforeLeave(callback) { | ||
this._beforeLeaveCallbacks.push(callback); | ||
return this; | ||
this._beforeLeaveCallbackSet.add(callback); | ||
return () => { | ||
this._beforeLeaveCallbackSet.delete(callback); | ||
}; | ||
} | ||
$afterEnter(callback) { | ||
this._afterEnterCallbacks.push(callback); | ||
return this; | ||
this._afterEnterCallbackSet.add(callback); | ||
return () => { | ||
this._afterEnterCallbackSet.delete(callback); | ||
}; | ||
} | ||
$afterUpdate(callback) { | ||
this._afterUpdateCallbacks.push(callback); | ||
return this; | ||
this._afterUpdateCallbackSet.add(callback); | ||
return () => { | ||
this._afterUpdateCallbackSet.delete(callback); | ||
}; | ||
} | ||
$afterLeave(callback) { | ||
this._afterLeaveCallbacks.push(callback); | ||
return this; | ||
this._afterLeaveCallbackSet.add(callback); | ||
return () => { | ||
this._afterLeaveCallbackSet.delete(callback); | ||
}; | ||
} | ||
$intercept(callback) { | ||
this._beforeEnterCallbacks.push(callback); | ||
this._beforeUpdateCallbacks.push(callback); | ||
return this; | ||
this._beforeEnterCallbackSet.add(callback); | ||
this._beforeUpdateCallbackSet.add(callback); | ||
return () => { | ||
this._beforeEnterCallbackSet.delete(callback); | ||
this._beforeUpdateCallbackSet.delete(callback); | ||
}; | ||
} | ||
$react(callback) { | ||
this._afterEnterCallbacks.push(callback); | ||
this._afterUpdateCallbacks.push(callback); | ||
return this; | ||
this._afterEnterCallbackSet.add(callback); | ||
this._afterUpdateCallbackSet.add(callback); | ||
return () => { | ||
this._afterEnterCallbackSet.delete(callback); | ||
this._afterUpdateCallbackSet.delete(callback); | ||
}; | ||
} | ||
@@ -193,3 +211,3 @@ $service(factory) { | ||
let results = yield Promise.all([ | ||
...this._beforeLeaveCallbacks.map(callback => _utils_1.tolerate(callback)), | ||
...Array.from(this._beforeLeaveCallbackSet).map(callback => _utils_1.tolerate(callback)), | ||
(() => tslib_1.__awaiter(this, void 0, void 0, function* () { | ||
@@ -211,3 +229,3 @@ let service = yield this._getService(); | ||
let results = yield Promise.all([ | ||
...this._beforeEnterCallbacks.map(callback => _utils_1.tolerate(callback, next)), | ||
...Array.from(this._beforeEnterCallbackSet).map(callback => _utils_1.tolerate(callback, next)), | ||
(() => tslib_1.__awaiter(this, void 0, void 0, function* () { | ||
@@ -229,3 +247,3 @@ let service = yield this._getService(); | ||
let results = yield Promise.all([ | ||
...this._beforeUpdateCallbacks.map(callback => _utils_1.tolerate(callback, next)), | ||
...Array.from(this._beforeUpdateCallbackSet).map(callback => _utils_1.tolerate(callback, next)), | ||
(() => tslib_1.__awaiter(this, void 0, void 0, function* () { | ||
@@ -245,3 +263,3 @@ let service = yield this._getService(); | ||
return tslib_1.__awaiter(this, void 0, void 0, function* () { | ||
for (let callback of this._afterLeaveCallbacks) { | ||
for (let callback of this._afterLeaveCallbackSet) { | ||
_utils_1.tolerate(callback); | ||
@@ -259,3 +277,3 @@ } | ||
return tslib_1.__awaiter(this, void 0, void 0, function* () { | ||
for (let callback of this._afterEnterCallbacks) { | ||
for (let callback of this._afterEnterCallbackSet) { | ||
_utils_1.tolerate(callback); | ||
@@ -273,3 +291,3 @@ } | ||
return tslib_1.__awaiter(this, void 0, void 0, function* () { | ||
for (let callback of this._afterUpdateCallbacks) { | ||
for (let callback of this._afterUpdateCallbackSet) { | ||
_utils_1.tolerate(callback); | ||
@@ -276,0 +294,0 @@ } |
{ | ||
"name": "boring-router", | ||
"version": "0.3.0-alpha.31", | ||
"version": "0.3.0-alpha.32", | ||
"description": "A light-weight, type-safe, yet reactive router service using MobX.", | ||
@@ -39,3 +39,3 @@ "repository": { | ||
}, | ||
"gitHead": "a56609e60175a6874c275831cf1ddf29079196d8" | ||
"gitHead": "04ea10508b68ebe13634ad49d88796d64cb45cff" | ||
} |
@@ -46,2 +46,4 @@ import {observable} from 'mobx'; | ||
export type RouteHookRemovalCallback = () => void; | ||
export type RouteInterceptCallback< | ||
@@ -123,18 +125,18 @@ TRouteMatch extends RouteMatch = RouteMatch | ||
/** @internal */ | ||
private _beforeEnterCallbacks: RouteBeforeEnter[] = []; | ||
private _beforeEnterCallbackSet = new Set<RouteBeforeEnter>(); | ||
/** @internal */ | ||
private _beforeUpdateCallbacks: RouteBeforeUpdate[] = []; | ||
private _beforeUpdateCallbackSet = new Set<RouteBeforeUpdate>(); | ||
/** @internal */ | ||
private _beforeLeaveCallbacks: RouteBeforeLeave[] = []; | ||
private _beforeLeaveCallbackSet = new Set<RouteBeforeLeave>(); | ||
/** @internal */ | ||
private _afterEnterCallbacks: RouteAfterEnter[] = []; | ||
private _afterEnterCallbackSet = new Set<RouteAfterEnter>(); | ||
/** @internal */ | ||
private _afterUpdateCallbacks: RouteAfterUpdate[] = []; | ||
private _afterUpdateCallbackSet = new Set<RouteAfterUpdate>(); | ||
/** @internal */ | ||
private _afterLeaveCallbacks: RouteAfterLeave[] = []; | ||
private _afterLeaveCallbackSet = new Set<RouteAfterLeave>(); | ||
@@ -201,44 +203,68 @@ /** @internal */ | ||
$beforeEnter(callback: RouteBeforeEnter<this>): this { | ||
this._beforeEnterCallbacks.push(callback as RouteBeforeEnter); | ||
return this; | ||
$beforeEnter(callback: RouteBeforeEnter<this>): RouteHookRemovalCallback { | ||
this._beforeEnterCallbackSet.add(callback as RouteBeforeEnter); | ||
return () => { | ||
this._beforeEnterCallbackSet.delete(callback); | ||
}; | ||
} | ||
$beforeUpdate(callback: RouteBeforeUpdate<this>): this { | ||
this._beforeUpdateCallbacks.push(callback as RouteBeforeUpdate); | ||
return this; | ||
$beforeUpdate(callback: RouteBeforeUpdate<this>): RouteHookRemovalCallback { | ||
this._beforeUpdateCallbackSet.add(callback as RouteBeforeUpdate); | ||
return () => { | ||
this._beforeUpdateCallbackSet.delete(callback); | ||
}; | ||
} | ||
$beforeLeave(callback: RouteBeforeLeave): this { | ||
this._beforeLeaveCallbacks.push(callback); | ||
return this; | ||
$beforeLeave(callback: RouteBeforeLeave): RouteHookRemovalCallback { | ||
this._beforeLeaveCallbackSet.add(callback); | ||
return () => { | ||
this._beforeLeaveCallbackSet.delete(callback); | ||
}; | ||
} | ||
$afterEnter(callback: RouteAfterEnter): this { | ||
this._afterEnterCallbacks.push(callback); | ||
return this; | ||
$afterEnter(callback: RouteAfterEnter): RouteHookRemovalCallback { | ||
this._afterEnterCallbackSet.add(callback); | ||
return () => { | ||
this._afterEnterCallbackSet.delete(callback); | ||
}; | ||
} | ||
$afterUpdate(callback: RouteAfterUpdate): this { | ||
this._afterUpdateCallbacks.push(callback); | ||
return this; | ||
$afterUpdate(callback: RouteAfterUpdate): RouteHookRemovalCallback { | ||
this._afterUpdateCallbackSet.add(callback); | ||
return () => { | ||
this._afterUpdateCallbackSet.delete(callback); | ||
}; | ||
} | ||
$afterLeave(callback: RouteAfterLeave): this { | ||
this._afterLeaveCallbacks.push(callback); | ||
return this; | ||
$afterLeave(callback: RouteAfterLeave): RouteHookRemovalCallback { | ||
this._afterLeaveCallbackSet.add(callback); | ||
return () => { | ||
this._afterLeaveCallbackSet.delete(callback); | ||
}; | ||
} | ||
$intercept(callback: RouteInterceptCallback): this { | ||
this._beforeEnterCallbacks.push(callback); | ||
this._beforeUpdateCallbacks.push(callback); | ||
$intercept(callback: RouteInterceptCallback): RouteHookRemovalCallback { | ||
this._beforeEnterCallbackSet.add(callback); | ||
this._beforeUpdateCallbackSet.add(callback); | ||
return this; | ||
return () => { | ||
this._beforeEnterCallbackSet.delete(callback); | ||
this._beforeUpdateCallbackSet.delete(callback); | ||
}; | ||
} | ||
$react(callback: RouteReactCallback): this { | ||
this._afterEnterCallbacks.push(callback); | ||
this._afterUpdateCallbacks.push(callback); | ||
$react(callback: RouteReactCallback): RouteHookRemovalCallback { | ||
this._afterEnterCallbackSet.add(callback); | ||
this._afterUpdateCallbackSet.add(callback); | ||
return this; | ||
return () => { | ||
this._afterEnterCallbackSet.delete(callback); | ||
this._afterUpdateCallbackSet.delete(callback); | ||
}; | ||
} | ||
@@ -398,3 +424,5 @@ | ||
let results = await Promise.all([ | ||
...this._beforeLeaveCallbacks.map(callback => tolerate(callback)), | ||
...Array.from(this._beforeLeaveCallbackSet).map(callback => | ||
tolerate(callback), | ||
), | ||
(async () => { | ||
@@ -419,3 +447,5 @@ let service = await this._getService(); | ||
let results = await Promise.all([ | ||
...this._beforeEnterCallbacks.map(callback => tolerate(callback, next)), | ||
...Array.from(this._beforeEnterCallbackSet).map(callback => | ||
tolerate(callback, next), | ||
), | ||
(async () => { | ||
@@ -440,3 +470,5 @@ let service = await this._getService(); | ||
let results = await Promise.all([ | ||
...this._beforeUpdateCallbacks.map(callback => tolerate(callback, next)), | ||
...Array.from(this._beforeUpdateCallbackSet).map(callback => | ||
tolerate(callback, next), | ||
), | ||
(async () => { | ||
@@ -458,3 +490,3 @@ let service = await this._getService(); | ||
async _afterLeave(): Promise<void> { | ||
for (let callback of this._afterLeaveCallbacks) { | ||
for (let callback of this._afterLeaveCallbackSet) { | ||
tolerate(callback); | ||
@@ -474,3 +506,3 @@ } | ||
async _afterEnter(): Promise<void> { | ||
for (let callback of this._afterEnterCallbacks) { | ||
for (let callback of this._afterEnterCallbackSet) { | ||
tolerate(callback); | ||
@@ -490,3 +522,3 @@ } | ||
async _afterUpdate(): Promise<void> { | ||
for (let callback of this._afterUpdateCallbacks) { | ||
for (let callback of this._afterUpdateCallbackSet) { | ||
tolerate(callback); | ||
@@ -493,0 +525,0 @@ } |
Sorry, the diff of this file is not supported yet
153595
3287