|
|
|
|
@ -0,0 +1,99 @@
|
|
|
|
|
# Environment
|
|
|
|
|
|
|
|
|
|
Current `Environment` Configuration holds sub config classes.
|
|
|
|
|
|
|
|
|
|
```typescript
|
|
|
|
|
export interface Environment {
|
|
|
|
|
apis: Apis;
|
|
|
|
|
application: Application;
|
|
|
|
|
hmr?: boolean;
|
|
|
|
|
localization?: { defaultResourceName?: string };
|
|
|
|
|
oAuthConfig: AuthConfig;
|
|
|
|
|
production: boolean;
|
|
|
|
|
remoteEnv?: RemoteEnv;
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Apis
|
|
|
|
|
|
|
|
|
|
```typescript
|
|
|
|
|
export interface Apis {
|
|
|
|
|
[key: string]: ApiConfig;
|
|
|
|
|
default: ApiConfig;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface ApiConfig {
|
|
|
|
|
[key: string]: string;
|
|
|
|
|
url: string;
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Api config has to have a default config and it may have some additional ones for different modules.
|
|
|
|
|
I.e. you may want to connect to different Apis for different modules.
|
|
|
|
|
|
|
|
|
|
Take a look at example
|
|
|
|
|
|
|
|
|
|
```json
|
|
|
|
|
{
|
|
|
|
|
...
|
|
|
|
|
"apis": {
|
|
|
|
|
"default": {
|
|
|
|
|
"url": "https://localhost:8080",
|
|
|
|
|
},
|
|
|
|
|
"AbpIdentity": {
|
|
|
|
|
"url": "https://localhost:9090",
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
When an api from `AbpIdentity` is called, the request will be sent to `"https://localhost:9090"`.
|
|
|
|
|
Everything else will be sent to `"https://localhost:8080"`
|
|
|
|
|
|
|
|
|
|
## Application
|
|
|
|
|
|
|
|
|
|
```typescript
|
|
|
|
|
export interface Application {
|
|
|
|
|
name: string;
|
|
|
|
|
baseUrl?: string;
|
|
|
|
|
logoUrl?: string;
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
* `name`: Name of the backend Application. It is also used by `logo.component` if `logoUrl` is not provided.
|
|
|
|
|
* `logoUrl`: Url of application logo. It is used by `logo.component`
|
|
|
|
|
* `baseUrl`: [For detailed information](./Multi-Tenancy.md#domain-tenant-resolver)
|
|
|
|
|
|
|
|
|
|
## Localization
|
|
|
|
|
|
|
|
|
|
You can read about `Localization` [here in detail](./Localization.md)
|
|
|
|
|
|
|
|
|
|
## OAuthConfig
|
|
|
|
|
|
|
|
|
|
.....
|
|
|
|
|
|
|
|
|
|
## RemoteEnvironment
|
|
|
|
|
|
|
|
|
|
To integrate an existing config json into environment, you need to set `remoteEnv`
|
|
|
|
|
|
|
|
|
|
```typescript
|
|
|
|
|
export type customMergeFn = (
|
|
|
|
|
localEnv: Partial<Config.Environment>,
|
|
|
|
|
remoteEnv: any,
|
|
|
|
|
) => Config.Environment;
|
|
|
|
|
|
|
|
|
|
export interface RemoteEnv {
|
|
|
|
|
url: string;
|
|
|
|
|
mergeStrategy: 'deepmerge' | 'overwrite' | customMergeFn;
|
|
|
|
|
method?: string;
|
|
|
|
|
headers?: ABP.Dictionary<string>;
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
* `url` *: Required. The url to be used to retrieve environment config
|
|
|
|
|
* `mergeStrategy`: Defines how local and remote environment json will be merged
|
|
|
|
|
* `deepmerge`: Both local and remote environment json will be merged recursively. If both config has same nested path, remote environment will be prioritized.
|
|
|
|
|
* `overwrite`: Remote environment will be used and local environment will be ignored.
|
|
|
|
|
* `customMergeFn`: You can also provide your own merge function as shown in the example. It will take two parameters, `localEnv: Partial<Config.Environment>` and `remoteEnv` and it needs to return a `Config.Environment` object.
|
|
|
|
|
* `method`: HTTP method to be used when retrieving environment config. Default: `GET`
|
|
|
|
|
* `headers`: If extra headers are needed for the request, it can be set through this field.
|