Class: AbstractExtension<S, R, SS>
@ima/core.AbstractExtension
Abstract extension
Type parameters
Name | Type |
---|---|
S | extends PageState = {} |
R | extends RouteParams = {} |
SS | extends S = S |
Hierarchy
Extension
<S
,R
,SS
>↳
AbstractExtension
Indexable
▪ [key: PropertyKey
]: any
| EventBusEventHandler
Constructors
constructor
• new AbstractExtension<S
, R
, SS
>()
Type parameters
Name | Type |
---|---|
S | extends PageState = {} |
R | extends RouteParams = {} |
SS | extends PageState = S |
Inherited from
Properties
_pageStateManager
• Protected
Optional
_pageStateManager: PageStateManager
<SS
>
State manager.
Defined in
packages/core/src/extension/AbstractExtension.ts:24
_partialStateSymbol
• Protected
_partialStateSymbol: symbol
Defined in
packages/core/src/extension/AbstractExtension.ts:30
_usingStateManager
• Protected
_usingStateManager: boolean
= false
Flag indicating whether the PageStateManager should be used instead of partial state.
Defined in
packages/core/src/extension/AbstractExtension.ts:29
params
• params: R
The route parameters extracted from the current route.
Defined in
packages/core/src/extension/AbstractExtension.ts:39
status
• status: number
= 200
The HTTP response code to send to the client.
Defined in
packages/core/src/extension/AbstractExtension.ts:35
$dependencies
▪ Static
$dependencies: Dependencies
Overrides
Defined in
packages/core/src/extension/AbstractExtension.ts:17
$name
▪ Static
Optional
$name: string
Overrides
Defined in
packages/core/src/extension/AbstractExtension.ts:16
Methods
activate
▸ activate(): void
| Promise
<void
>
Callback for activating the extension in the UI. This is the last method invoked during controller (and extensions) initialization, called after all the promises returned from the load method have been resolved and the controller has configured the meta manager.
The extension may register any React and DOM event listeners in this method. The extension may start receiving event bus event after this method completes.
Returns
void
| Promise
<void
>
Overrides
Defined in
packages/core/src/extension/AbstractExtension.ts:58
beginStateTransaction
▸ beginStateTransaction(): void
Starts queueing state patches off the controller state. While the transaction
is active every setState
call has no effect on the current state.
Note that call to getState
after the transaction has begun will
return state as it was before the transaction.
Returns
void
Overrides
Extension.beginStateTransaction
Defined in
packages/core/src/extension/AbstractExtension.ts:109
cancelStateTransaction
▸ cancelStateTransaction(): void
Cancels ongoing state transaction. Uncommitted state changes are lost.
Returns
void
Overrides
Extension.cancelStateTransaction
Defined in
packages/core/src/extension/AbstractExtension.ts:127
clearPartialState
▸ clearPartialState(): void
Clears the current partial state of the extension and sets it value to empty object.
Returns
void
Overrides
Defined in
packages/core/src/extension/AbstractExtension.ts:155
commitStateTransaction
▸ commitStateTransaction(): void
Applies queued state patches to the controller state. All patches are squashed
and applied with one setState
call.
Returns
void
Overrides
Extension.commitStateTransaction
Defined in
packages/core/src/extension/AbstractExtension.ts:118
deactivate
▸ deactivate(): void
| Promise
<void
>
Callback for deactivating the extension in the UI. This is the first method invoked during extension deinitialization. This usually happens when the user navigates to a different URL.
This method is the lifecycle counterpart of the activate method.
The extension should deregister listeners registered and release all resources obtained in the activate method.
Returns
void
| Promise
<void
>
Overrides
Defined in
packages/core/src/extension/AbstractExtension.ts:65
destroy
▸ destroy(): void
| Promise
<void
>
Finalization callback, called when the controller is being discarded by the application. This usually happens when the user navigates to a different URL.
This method is the lifecycle counterpart of the init method.
The extension should release all resources obtained in the init method. The extension must release any resources that might not be released automatically when the extensions's instance is destroyed by the garbage collector.
Returns
void
| Promise
<void
>
Overrides
Defined in
packages/core/src/extension/AbstractExtension.ts:51
getAllowedStateKeys
▸ getAllowedStateKeys(): keyof S
[]
Returns array of allowed state keys for extension.
Returns
keyof S
[]
Overrides
Defined in
packages/core/src/extension/AbstractExtension.ts:204
getHttpStatus
▸ getHttpStatus(): number
Returns
number
Inherit Doc
Defined in
packages/core/src/extension/AbstractExtension.ts:197
getPartialState
▸ getPartialState(): Partial
<SS
>
Returns the current partial state of the extension.
Returns
Partial
<SS
>
The current partial state of the extension.
Overrides
Defined in
packages/core/src/extension/AbstractExtension.ts:148
getRouteParams
▸ getRouteParams(): R
Returns the current route parameters.
Returns
R
The current route parameters.
Overrides
Defined in
packages/core/src/extension/AbstractExtension.ts:169
getState
▸ getState(): SS
Returns the current state of the controller using this extension.
Returns
SS
The current state of the controller.
Overrides
Defined in
packages/core/src/extension/AbstractExtension.ts:98
init
▸ init(): void
| Promise
<void
>
Callback for initializing the controller extension after the route parameters have been set on this extension.
Returns
void
| Promise
<void
>
Overrides
Defined in
packages/core/src/extension/AbstractExtension.ts:44
load
▸ load(): S
| Promise
<S
>
Callback the extension uses to request the resources it needs to render its related parts of the view. This method is invoked after the init method.
The extension should request all resources it needs in this method, and represent each resource request as a promise that will resolve once the resource is ready for use (these can be data fetched over HTTP(S), database connections, etc).
The method must return a plain flat object. The field names of the object identify the resources being fetched and prepared, each value must be either the resource (e.g. view configuration or a value retrieved synchronously) or a Promise that will resolve to the resource.
The IMA will use the object to set the state of the controller.
Any returned promise that gets rejected will redirect the application to the error page. The error page that will be used depends on the status code of the error.
Returns
S
| Promise
<S
>
A map object of promises resolved when all resources the controller requires are ready. The resolved values will be pushed to the controller's state.
Overrides
Defined in
packages/core/src/extension/AbstractExtension.ts:72
setPageStateManager
▸ setPageStateManager(pageStateManager?
): void
Sets the state manager used to manage the controller's state..
Parameters
Name | Type | Description |
---|---|---|
pageStateManager? | PageStateManager <SS > | The current state manager to use. |
Returns
void
Overrides
Defined in
packages/core/src/extension/AbstractExtension.ts:176
setPartialState
▸ setPartialState(partialStatePatch
): void
Patches the partial state of the extension. The extension is able during its load and update phase receive state from active controller using this extension and from previously loaded/updated extensions.
Parameters
Name | Type | Description |
---|---|---|
partialStatePatch | S | Patch of the controller's state to apply. |
Returns
void
Overrides
Defined in
packages/core/src/extension/AbstractExtension.ts:136
setRouteParams
▸ setRouteParams(params?
): void
Sets the current route parameters. This method is invoked before the init method.
Parameters
Name | Type | Description |
---|---|---|
params | R | The current route parameters. |
Returns
void
Overrides
Defined in
packages/core/src/extension/AbstractExtension.ts:162
setState
▸ setState<K
>(statePatch
): void
Patches the state of the controller using this extension by using the provided object by copying the provided patch object fields to the controller's state object.
Note that the state is not patched recursively but by replacing the values of the top-level fields of the state object.
Note that the extension may modify only the fields of the state that it has specified by its getAllowedStateKeys method.
Type parameters
Name | Type |
---|---|
K | extends string | number | symbol |
Parameters
Name | Type | Description |
---|---|---|
statePatch | null | S | Pick <S , K > | Patch of the controller's state to apply. |
Returns
void
Overrides
Defined in
packages/core/src/extension/AbstractExtension.ts:89
switchToPartialState
▸ switchToPartialState(): void
Disables using PageStateManager for getting state.
Returns
void
Overrides
Extension.switchToPartialState
Defined in
packages/core/src/extension/AbstractExtension.ts:190
switchToStateManager
▸ switchToStateManager(): void
Enables using PageStateManager for getting state.
Returns
void
Overrides
Extension.switchToStateManager
Defined in
packages/core/src/extension/AbstractExtension.ts:183
update
▸ update(prevParams?
): S
| Promise
<S
>
Callback for updating the extension after a route update. This method
is invoked if the current route has the onlyUpdate
flag set to true
and
the current controller and view match those used by the previously active
route, or, the onlyUpdate
option of the current route is a callback and
returned true
.
The method must return an object with the same semantics as the result of the load method. The controller's state will then be patched by the returned object.
The other extension lifecycle callbacks (init, load, activate, deactivate, Extension#deinit) are not call in case this method is used.
Parameters
Name | Type | Description |
---|---|---|
prevParams | R | Previous route parameters. |
Returns
S
| Promise
<S
>
A map object of promises resolved when all resources the controller requires are ready. The resolved values will be pushed to the controller's state.