@tramvai/module-child-app 5.15.3 → 5.16.2
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.
- package/lib/shared/child/singletonProviders.browser.js +15 -5
- package/lib/shared/child/singletonProviders.es.js +15 -5
- package/lib/shared/child/singletonProviders.js +15 -5
- package/lib/shared/command.browser.js +33 -3
- package/lib/shared/command.d.ts +5 -2
- package/lib/shared/command.es.js +33 -3
- package/lib/shared/command.js +32 -2
- package/lib/shared/providers.browser.js +2 -1
- package/lib/shared/providers.es.js +2 -1
- package/lib/shared/providers.js +1 -0
- package/package.json +12 -11
|
@@ -71,11 +71,21 @@ const getChildProviders = (appDi, loadableStats) => {
|
|
|
71
71
|
provide: DISPATCHER_CONTEXT_TOKEN,
|
|
72
72
|
scope: Scope.REQUEST,
|
|
73
73
|
useFactory: ({ dispatcher, middlewares, initialState, parentAllowedStores }) => {
|
|
74
|
-
const parentDispatcherContext =
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
74
|
+
const parentDispatcherContext = typeof window !== 'undefined'
|
|
75
|
+
? // ALS is not existing on the client,
|
|
76
|
+
// also if we resolve `DISPATCHER_CONTEXT_TOKEN` from Root DI in the server-side,
|
|
77
|
+
// it will lead to memory leak (with circular dependency) because of reducers event handlers:
|
|
78
|
+
// RootDi.recordValues -> DispatcherContext.storeInstances -> ReducerStore.listeners -> listener.this -> ChildDispatcherContext.parentDispatcherContext -> DispatcherContext
|
|
79
|
+
appDi.get(DISPATCHER_CONTEXT_TOKEN)
|
|
80
|
+
: appDi
|
|
81
|
+
.get(optional(ASYNC_LOCAL_STORAGE_TOKEN))
|
|
82
|
+
?.getStore()
|
|
83
|
+
?.tramvaiRequestDi?.get(DISPATCHER_CONTEXT_TOKEN);
|
|
84
|
+
if (!parentDispatcherContext) {
|
|
85
|
+
// this should not happen because we add subscribtion to root execution context abortSignal
|
|
86
|
+
// for Child Apps command line runner, and this token will not be resolved
|
|
87
|
+
throw Error('Cannot find DispatcherContext for current request, unexpected critical error');
|
|
88
|
+
}
|
|
79
89
|
return new ChildDispatcherContext({
|
|
80
90
|
dispatcher,
|
|
81
91
|
// context will be set later by the CONTEXT_TOKEN
|
|
@@ -71,11 +71,21 @@ const getChildProviders = (appDi, loadableStats) => {
|
|
|
71
71
|
provide: DISPATCHER_CONTEXT_TOKEN,
|
|
72
72
|
scope: Scope.REQUEST,
|
|
73
73
|
useFactory: ({ dispatcher, middlewares, initialState, parentAllowedStores }) => {
|
|
74
|
-
const parentDispatcherContext =
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
74
|
+
const parentDispatcherContext = typeof window !== 'undefined'
|
|
75
|
+
? // ALS is not existing on the client,
|
|
76
|
+
// also if we resolve `DISPATCHER_CONTEXT_TOKEN` from Root DI in the server-side,
|
|
77
|
+
// it will lead to memory leak (with circular dependency) because of reducers event handlers:
|
|
78
|
+
// RootDi.recordValues -> DispatcherContext.storeInstances -> ReducerStore.listeners -> listener.this -> ChildDispatcherContext.parentDispatcherContext -> DispatcherContext
|
|
79
|
+
appDi.get(DISPATCHER_CONTEXT_TOKEN)
|
|
80
|
+
: appDi
|
|
81
|
+
.get(optional(ASYNC_LOCAL_STORAGE_TOKEN))
|
|
82
|
+
?.getStore()
|
|
83
|
+
?.tramvaiRequestDi?.get(DISPATCHER_CONTEXT_TOKEN);
|
|
84
|
+
if (!parentDispatcherContext) {
|
|
85
|
+
// this should not happen because we add subscribtion to root execution context abortSignal
|
|
86
|
+
// for Child Apps command line runner, and this token will not be resolved
|
|
87
|
+
throw Error('Cannot find DispatcherContext for current request, unexpected critical error');
|
|
88
|
+
}
|
|
79
89
|
return new ChildDispatcherContext({
|
|
80
90
|
dispatcher,
|
|
81
91
|
// context will be set later by the CONTEXT_TOKEN
|
|
@@ -79,11 +79,21 @@ const getChildProviders = (appDi, loadableStats) => {
|
|
|
79
79
|
provide: tokensCommon.DISPATCHER_CONTEXT_TOKEN,
|
|
80
80
|
scope: core.Scope.REQUEST,
|
|
81
81
|
useFactory: ({ dispatcher, middlewares, initialState, parentAllowedStores }) => {
|
|
82
|
-
const parentDispatcherContext =
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
82
|
+
const parentDispatcherContext = typeof window !== 'undefined'
|
|
83
|
+
? // ALS is not existing on the client,
|
|
84
|
+
// also if we resolve `DISPATCHER_CONTEXT_TOKEN` from Root DI in the server-side,
|
|
85
|
+
// it will lead to memory leak (with circular dependency) because of reducers event handlers:
|
|
86
|
+
// RootDi.recordValues -> DispatcherContext.storeInstances -> ReducerStore.listeners -> listener.this -> ChildDispatcherContext.parentDispatcherContext -> DispatcherContext
|
|
87
|
+
appDi.get(tokensCommon.DISPATCHER_CONTEXT_TOKEN)
|
|
88
|
+
: appDi
|
|
89
|
+
.get(core.optional(tokensCommon.ASYNC_LOCAL_STORAGE_TOKEN))
|
|
90
|
+
?.getStore()
|
|
91
|
+
?.tramvaiRequestDi?.get(tokensCommon.DISPATCHER_CONTEXT_TOKEN);
|
|
92
|
+
if (!parentDispatcherContext) {
|
|
93
|
+
// this should not happen because we add subscribtion to root execution context abortSignal
|
|
94
|
+
// for Child Apps command line runner, and this token will not be resolved
|
|
95
|
+
throw Error('Cannot find DispatcherContext for current request, unexpected critical error');
|
|
96
|
+
}
|
|
87
97
|
return new state.ChildDispatcherContext({
|
|
88
98
|
dispatcher,
|
|
89
99
|
// context will be set later by the CONTEXT_TOKEN
|
|
@@ -1,16 +1,37 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { isSilentError } from '@tinkoff/errors';
|
|
2
|
+
import { COMMAND_LINE_RUNNER_TOKEN, provide } from '@tramvai/core';
|
|
3
|
+
import { ROOT_EXECUTION_CONTEXT_TOKEN } from '@tramvai/tokens-common';
|
|
2
4
|
|
|
3
5
|
class CommandLineRunner {
|
|
4
|
-
constructor({ logger, rootCommandLineRunner, diManager, }) {
|
|
6
|
+
constructor({ logger, rootCommandLineRunner, diManager, commandLineExecutionContext, }) {
|
|
5
7
|
this.log = logger('child-app:command-line-runner');
|
|
6
8
|
this.rootCommandLineRunner = rootCommandLineRunner;
|
|
7
9
|
this.diManager = diManager;
|
|
10
|
+
this.commandLineExecutionContext = commandLineExecutionContext;
|
|
8
11
|
}
|
|
9
12
|
async run(type, status, config) {
|
|
10
13
|
const di = this.diManager.getChildDi(config);
|
|
14
|
+
const executionContext = this.commandLineExecutionContext();
|
|
11
15
|
if (!di) {
|
|
12
16
|
return;
|
|
13
17
|
}
|
|
18
|
+
// Root App command line can be aborted before Child App command line run,
|
|
19
|
+
// for example in case of sync `RedirectFoundError` in page action (`resolvePageDeps` command),
|
|
20
|
+
// we need to prevent Child Apps preloading (also on `resolvePageDeps` command)
|
|
21
|
+
if (executionContext?.abortSignal?.aborted ||
|
|
22
|
+
(typeof window === 'undefined' && !executionContext)) {
|
|
23
|
+
this.log.error({
|
|
24
|
+
event: 'host-exection-context-aborted',
|
|
25
|
+
message: `Child App command line run was prevented from executing because ${executionContext?.abortSignal?.aborted
|
|
26
|
+
? 'host command line was aborted'
|
|
27
|
+
: 'execution context is already destroyed'}`,
|
|
28
|
+
reason: executionContext?.abortSignal.reason,
|
|
29
|
+
type,
|
|
30
|
+
status,
|
|
31
|
+
childApp: { name: config.name, version: config.version, tag: config.tag },
|
|
32
|
+
});
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
14
35
|
try {
|
|
15
36
|
const commandLineRunner = di.get({ token: COMMAND_LINE_RUNNER_TOKEN, optional: true });
|
|
16
37
|
if (commandLineRunner && commandLineRunner !== this.rootCommandLineRunner) {
|
|
@@ -18,12 +39,21 @@ class CommandLineRunner {
|
|
|
18
39
|
// for now just reuse metrics implementation from root as otherwise it fails after attempt to create metrics instance with the same name
|
|
19
40
|
// @ts-ignore
|
|
20
41
|
commandLineRunner.metricsInstance = this.rootCommandLineRunner.metricsInstance;
|
|
42
|
+
// provide current Root App execution context as Child App root execution context
|
|
43
|
+
if (executionContext) {
|
|
44
|
+
di.register(provide({
|
|
45
|
+
provide: ROOT_EXECUTION_CONTEXT_TOKEN,
|
|
46
|
+
useValue: executionContext,
|
|
47
|
+
}));
|
|
48
|
+
}
|
|
21
49
|
await commandLineRunner.run(type, status, [], di);
|
|
22
50
|
}
|
|
23
51
|
}
|
|
24
52
|
catch (error) {
|
|
25
53
|
if (error.code !== 'E_STUB') {
|
|
26
|
-
this.log
|
|
54
|
+
this.log[
|
|
55
|
+
// for example, we don't need to log Child App run as failed in case of RedirectFoundError
|
|
56
|
+
isSilentError(error) || (error.reason && isSilentError(error.reason)) ? 'debug' : 'error']({
|
|
27
57
|
event: 'run-failed',
|
|
28
58
|
error,
|
|
29
59
|
type,
|
package/lib/shared/command.d.ts
CHANGED
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
import type { CommandLineDescription, CommandLines } from '@tramvai/core';
|
|
2
2
|
import { COMMAND_LINE_RUNNER_TOKEN } from '@tramvai/core';
|
|
3
3
|
import type { ChildAppCommandLineRunner, ChildAppDiManager, ChildAppFinalConfig } from '@tramvai/tokens-child-app';
|
|
4
|
-
import type {
|
|
4
|
+
import type { COMMAND_LINE_EXECUTION_CONTEXT_TOKEN } from '@tramvai/tokens-common';
|
|
5
|
+
import { type LOGGER_TOKEN } from '@tramvai/tokens-common';
|
|
5
6
|
export declare class CommandLineRunner implements ChildAppCommandLineRunner {
|
|
6
7
|
private readonly log;
|
|
7
8
|
private readonly rootCommandLineRunner;
|
|
8
9
|
private readonly diManager;
|
|
9
|
-
|
|
10
|
+
private readonly commandLineExecutionContext;
|
|
11
|
+
constructor({ logger, rootCommandLineRunner, diManager, commandLineExecutionContext, }: {
|
|
10
12
|
logger: typeof LOGGER_TOKEN;
|
|
11
13
|
rootCommandLineRunner: typeof COMMAND_LINE_RUNNER_TOKEN;
|
|
12
14
|
diManager: ChildAppDiManager;
|
|
15
|
+
commandLineExecutionContext: typeof COMMAND_LINE_EXECUTION_CONTEXT_TOKEN;
|
|
13
16
|
});
|
|
14
17
|
run(type: keyof CommandLines, status: keyof CommandLineDescription, config: ChildAppFinalConfig): Promise<void>;
|
|
15
18
|
}
|
package/lib/shared/command.es.js
CHANGED
|
@@ -1,16 +1,37 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { isSilentError } from '@tinkoff/errors';
|
|
2
|
+
import { COMMAND_LINE_RUNNER_TOKEN, provide } from '@tramvai/core';
|
|
3
|
+
import { ROOT_EXECUTION_CONTEXT_TOKEN } from '@tramvai/tokens-common';
|
|
2
4
|
|
|
3
5
|
class CommandLineRunner {
|
|
4
|
-
constructor({ logger, rootCommandLineRunner, diManager, }) {
|
|
6
|
+
constructor({ logger, rootCommandLineRunner, diManager, commandLineExecutionContext, }) {
|
|
5
7
|
this.log = logger('child-app:command-line-runner');
|
|
6
8
|
this.rootCommandLineRunner = rootCommandLineRunner;
|
|
7
9
|
this.diManager = diManager;
|
|
10
|
+
this.commandLineExecutionContext = commandLineExecutionContext;
|
|
8
11
|
}
|
|
9
12
|
async run(type, status, config) {
|
|
10
13
|
const di = this.diManager.getChildDi(config);
|
|
14
|
+
const executionContext = this.commandLineExecutionContext();
|
|
11
15
|
if (!di) {
|
|
12
16
|
return;
|
|
13
17
|
}
|
|
18
|
+
// Root App command line can be aborted before Child App command line run,
|
|
19
|
+
// for example in case of sync `RedirectFoundError` in page action (`resolvePageDeps` command),
|
|
20
|
+
// we need to prevent Child Apps preloading (also on `resolvePageDeps` command)
|
|
21
|
+
if (executionContext?.abortSignal?.aborted ||
|
|
22
|
+
(typeof window === 'undefined' && !executionContext)) {
|
|
23
|
+
this.log.error({
|
|
24
|
+
event: 'host-exection-context-aborted',
|
|
25
|
+
message: `Child App command line run was prevented from executing because ${executionContext?.abortSignal?.aborted
|
|
26
|
+
? 'host command line was aborted'
|
|
27
|
+
: 'execution context is already destroyed'}`,
|
|
28
|
+
reason: executionContext?.abortSignal.reason,
|
|
29
|
+
type,
|
|
30
|
+
status,
|
|
31
|
+
childApp: { name: config.name, version: config.version, tag: config.tag },
|
|
32
|
+
});
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
14
35
|
try {
|
|
15
36
|
const commandLineRunner = di.get({ token: COMMAND_LINE_RUNNER_TOKEN, optional: true });
|
|
16
37
|
if (commandLineRunner && commandLineRunner !== this.rootCommandLineRunner) {
|
|
@@ -18,12 +39,21 @@ class CommandLineRunner {
|
|
|
18
39
|
// for now just reuse metrics implementation from root as otherwise it fails after attempt to create metrics instance with the same name
|
|
19
40
|
// @ts-ignore
|
|
20
41
|
commandLineRunner.metricsInstance = this.rootCommandLineRunner.metricsInstance;
|
|
42
|
+
// provide current Root App execution context as Child App root execution context
|
|
43
|
+
if (executionContext) {
|
|
44
|
+
di.register(provide({
|
|
45
|
+
provide: ROOT_EXECUTION_CONTEXT_TOKEN,
|
|
46
|
+
useValue: executionContext,
|
|
47
|
+
}));
|
|
48
|
+
}
|
|
21
49
|
await commandLineRunner.run(type, status, [], di);
|
|
22
50
|
}
|
|
23
51
|
}
|
|
24
52
|
catch (error) {
|
|
25
53
|
if (error.code !== 'E_STUB') {
|
|
26
|
-
this.log
|
|
54
|
+
this.log[
|
|
55
|
+
// for example, we don't need to log Child App run as failed in case of RedirectFoundError
|
|
56
|
+
isSilentError(error) || (error.reason && isSilentError(error.reason)) ? 'debug' : 'error']({
|
|
27
57
|
event: 'run-failed',
|
|
28
58
|
error,
|
|
29
59
|
type,
|
package/lib/shared/command.js
CHANGED
|
@@ -2,19 +2,40 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
+
var errors = require('@tinkoff/errors');
|
|
5
6
|
var core = require('@tramvai/core');
|
|
7
|
+
var tokensCommon = require('@tramvai/tokens-common');
|
|
6
8
|
|
|
7
9
|
class CommandLineRunner {
|
|
8
|
-
constructor({ logger, rootCommandLineRunner, diManager, }) {
|
|
10
|
+
constructor({ logger, rootCommandLineRunner, diManager, commandLineExecutionContext, }) {
|
|
9
11
|
this.log = logger('child-app:command-line-runner');
|
|
10
12
|
this.rootCommandLineRunner = rootCommandLineRunner;
|
|
11
13
|
this.diManager = diManager;
|
|
14
|
+
this.commandLineExecutionContext = commandLineExecutionContext;
|
|
12
15
|
}
|
|
13
16
|
async run(type, status, config) {
|
|
14
17
|
const di = this.diManager.getChildDi(config);
|
|
18
|
+
const executionContext = this.commandLineExecutionContext();
|
|
15
19
|
if (!di) {
|
|
16
20
|
return;
|
|
17
21
|
}
|
|
22
|
+
// Root App command line can be aborted before Child App command line run,
|
|
23
|
+
// for example in case of sync `RedirectFoundError` in page action (`resolvePageDeps` command),
|
|
24
|
+
// we need to prevent Child Apps preloading (also on `resolvePageDeps` command)
|
|
25
|
+
if (executionContext?.abortSignal?.aborted ||
|
|
26
|
+
(typeof window === 'undefined' && !executionContext)) {
|
|
27
|
+
this.log.error({
|
|
28
|
+
event: 'host-exection-context-aborted',
|
|
29
|
+
message: `Child App command line run was prevented from executing because ${executionContext?.abortSignal?.aborted
|
|
30
|
+
? 'host command line was aborted'
|
|
31
|
+
: 'execution context is already destroyed'}`,
|
|
32
|
+
reason: executionContext?.abortSignal.reason,
|
|
33
|
+
type,
|
|
34
|
+
status,
|
|
35
|
+
childApp: { name: config.name, version: config.version, tag: config.tag },
|
|
36
|
+
});
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
18
39
|
try {
|
|
19
40
|
const commandLineRunner = di.get({ token: core.COMMAND_LINE_RUNNER_TOKEN, optional: true });
|
|
20
41
|
if (commandLineRunner && commandLineRunner !== this.rootCommandLineRunner) {
|
|
@@ -22,12 +43,21 @@ class CommandLineRunner {
|
|
|
22
43
|
// for now just reuse metrics implementation from root as otherwise it fails after attempt to create metrics instance with the same name
|
|
23
44
|
// @ts-ignore
|
|
24
45
|
commandLineRunner.metricsInstance = this.rootCommandLineRunner.metricsInstance;
|
|
46
|
+
// provide current Root App execution context as Child App root execution context
|
|
47
|
+
if (executionContext) {
|
|
48
|
+
di.register(core.provide({
|
|
49
|
+
provide: tokensCommon.ROOT_EXECUTION_CONTEXT_TOKEN,
|
|
50
|
+
useValue: executionContext,
|
|
51
|
+
}));
|
|
52
|
+
}
|
|
25
53
|
await commandLineRunner.run(type, status, [], di);
|
|
26
54
|
}
|
|
27
55
|
}
|
|
28
56
|
catch (error) {
|
|
29
57
|
if (error.code !== 'E_STUB') {
|
|
30
|
-
this.log
|
|
58
|
+
this.log[
|
|
59
|
+
// for example, we don't need to log Child App run as failed in case of RedirectFoundError
|
|
60
|
+
errors.isSilentError(error) || (error.reason && errors.isSilentError(error.reason)) ? 'debug' : 'error']({
|
|
31
61
|
event: 'run-failed',
|
|
32
62
|
error,
|
|
33
63
|
type,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Scope, DI_TOKEN, optional } from '@tinkoff/dippy';
|
|
2
2
|
import { provide, commandLineListTokens, COMMAND_LINE_RUNNER_TOKEN } from '@tramvai/core';
|
|
3
3
|
import { CHILD_APP_RESOLUTION_CONFIG_MANAGER_TOKEN, CHILD_APP_RESOLUTION_CONFIGS_TOKEN, CHILD_APP_RESOLVE_CONFIG_TOKEN, CHILD_APP_RESOLVE_BASE_URL_TOKEN, CHILD_APP_SINGLETON_DI_MANAGER_TOKEN, CHILD_APP_LOADER_TOKEN, CHILD_APP_ROOT_DI_ACCESS_MODE_TOKEN, CHILD_APP_CONTRACT_MANAGER, CHILD_APP_DI_MANAGER_TOKEN, CHILD_APP_COMMAND_LINE_RUNNER_TOKEN, CHILD_APP_PRELOAD_MANAGER_TOKEN, CHILD_APP_RENDER_MANAGER_TOKEN, HOST_PROVIDED_CONTRACTS, CHILD_APP_ERROR_BOUNDARY_TOKEN } from '@tramvai/tokens-child-app';
|
|
4
|
-
import { COMBINE_REDUCERS, LOGGER_TOKEN, ENV_MANAGER_TOKEN, REGISTER_CLEAR_CACHE_TOKEN, CLEAR_CACHE_TOKEN, ENV_USED_TOKEN, COMPONENT_REGISTRY_TOKEN, LIMIT_ACTION_GLOBAL_TIME_RUN, ACTION_CONDITIONALS } from '@tramvai/tokens-common';
|
|
4
|
+
import { COMBINE_REDUCERS, LOGGER_TOKEN, ENV_MANAGER_TOKEN, COMMAND_LINE_EXECUTION_CONTEXT_TOKEN, REGISTER_CLEAR_CACHE_TOKEN, CLEAR_CACHE_TOKEN, ENV_USED_TOKEN, COMPONENT_REGISTRY_TOKEN, LIMIT_ACTION_GLOBAL_TIME_RUN, ACTION_CONDITIONALS } from '@tramvai/tokens-common';
|
|
5
5
|
import { EXTEND_RENDER } from '@tramvai/tokens-render';
|
|
6
6
|
import { ROUTER_TOKEN, PAGE_SERVICE_TOKEN, LINK_PREFETCH_MANAGER_TOKEN, ROUTER_SPA_ACTIONS_RUN_MODE_TOKEN } from '@tramvai/tokens-router';
|
|
7
7
|
import { SingletonDiManager } from './singletonDi.browser.js';
|
|
@@ -143,6 +143,7 @@ const sharedProviders = [
|
|
|
143
143
|
logger: LOGGER_TOKEN,
|
|
144
144
|
rootCommandLineRunner: COMMAND_LINE_RUNNER_TOKEN,
|
|
145
145
|
diManager: CHILD_APP_DI_MANAGER_TOKEN,
|
|
146
|
+
commandLineExecutionContext: COMMAND_LINE_EXECUTION_CONTEXT_TOKEN,
|
|
146
147
|
},
|
|
147
148
|
}),
|
|
148
149
|
provide({
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Scope, DI_TOKEN, optional } from '@tinkoff/dippy';
|
|
2
2
|
import { provide, commandLineListTokens, COMMAND_LINE_RUNNER_TOKEN } from '@tramvai/core';
|
|
3
3
|
import { CHILD_APP_RESOLUTION_CONFIG_MANAGER_TOKEN, CHILD_APP_RESOLUTION_CONFIGS_TOKEN, CHILD_APP_RESOLVE_CONFIG_TOKEN, CHILD_APP_RESOLVE_BASE_URL_TOKEN, CHILD_APP_SINGLETON_DI_MANAGER_TOKEN, CHILD_APP_LOADER_TOKEN, CHILD_APP_ROOT_DI_ACCESS_MODE_TOKEN, CHILD_APP_CONTRACT_MANAGER, CHILD_APP_DI_MANAGER_TOKEN, CHILD_APP_COMMAND_LINE_RUNNER_TOKEN, CHILD_APP_PRELOAD_MANAGER_TOKEN, CHILD_APP_RENDER_MANAGER_TOKEN, HOST_PROVIDED_CONTRACTS, CHILD_APP_ERROR_BOUNDARY_TOKEN } from '@tramvai/tokens-child-app';
|
|
4
|
-
import { COMBINE_REDUCERS, LOGGER_TOKEN, ENV_MANAGER_TOKEN, REGISTER_CLEAR_CACHE_TOKEN, CLEAR_CACHE_TOKEN, ENV_USED_TOKEN, COMPONENT_REGISTRY_TOKEN, LIMIT_ACTION_GLOBAL_TIME_RUN, ACTION_CONDITIONALS } from '@tramvai/tokens-common';
|
|
4
|
+
import { COMBINE_REDUCERS, LOGGER_TOKEN, ENV_MANAGER_TOKEN, COMMAND_LINE_EXECUTION_CONTEXT_TOKEN, REGISTER_CLEAR_CACHE_TOKEN, CLEAR_CACHE_TOKEN, ENV_USED_TOKEN, COMPONENT_REGISTRY_TOKEN, LIMIT_ACTION_GLOBAL_TIME_RUN, ACTION_CONDITIONALS } from '@tramvai/tokens-common';
|
|
5
5
|
import { EXTEND_RENDER } from '@tramvai/tokens-render';
|
|
6
6
|
import { ROUTER_TOKEN, PAGE_SERVICE_TOKEN, LINK_PREFETCH_MANAGER_TOKEN, ROUTER_SPA_ACTIONS_RUN_MODE_TOKEN } from '@tramvai/tokens-router';
|
|
7
7
|
import { SingletonDiManager } from './singletonDi.es.js';
|
|
@@ -143,6 +143,7 @@ const sharedProviders = [
|
|
|
143
143
|
logger: LOGGER_TOKEN,
|
|
144
144
|
rootCommandLineRunner: COMMAND_LINE_RUNNER_TOKEN,
|
|
145
145
|
diManager: CHILD_APP_DI_MANAGER_TOKEN,
|
|
146
|
+
commandLineExecutionContext: COMMAND_LINE_EXECUTION_CONTEXT_TOKEN,
|
|
146
147
|
},
|
|
147
148
|
}),
|
|
148
149
|
provide({
|
package/lib/shared/providers.js
CHANGED
|
@@ -147,6 +147,7 @@ const sharedProviders = [
|
|
|
147
147
|
logger: tokensCommon.LOGGER_TOKEN,
|
|
148
148
|
rootCommandLineRunner: core.COMMAND_LINE_RUNNER_TOKEN,
|
|
149
149
|
diManager: tokensChildApp.CHILD_APP_DI_MANAGER_TOKEN,
|
|
150
|
+
commandLineExecutionContext: tokensCommon.COMMAND_LINE_EXECUTION_CONTEXT_TOKEN,
|
|
150
151
|
},
|
|
151
152
|
}),
|
|
152
153
|
core.provide({
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tramvai/module-child-app",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.16.2",
|
|
4
4
|
"description": "Module for child apps",
|
|
5
5
|
"browser": {
|
|
6
6
|
"./lib/server.js": "./lib/browser.js",
|
|
@@ -33,23 +33,24 @@
|
|
|
33
33
|
"@tinkoff/env-validators": "0.4.2",
|
|
34
34
|
"@tinkoff/module-loader-client": "0.7.3",
|
|
35
35
|
"@tinkoff/module-loader-server": "0.8.4",
|
|
36
|
-
"@tramvai/module-common": "5.
|
|
36
|
+
"@tramvai/module-common": "5.16.2",
|
|
37
37
|
"@tinkoff/url": "0.11.2",
|
|
38
|
-
"@
|
|
38
|
+
"@tinkoff/errors": "0.6.2",
|
|
39
|
+
"@tramvai/child-app-core": "5.16.2",
|
|
39
40
|
"@tramvai/safe-strings": "0.8.4",
|
|
40
|
-
"@tramvai/tokens-child-app": "5.
|
|
41
|
+
"@tramvai/tokens-child-app": "5.16.2"
|
|
41
42
|
},
|
|
42
43
|
"devDependencies": {},
|
|
43
44
|
"peerDependencies": {
|
|
44
45
|
"@tinkoff/dippy": "0.11.3",
|
|
45
|
-
"@tinkoff/router": "0.5.
|
|
46
|
+
"@tinkoff/router": "0.5.54",
|
|
46
47
|
"@tinkoff/utils": "^2.1.2",
|
|
47
|
-
"@tramvai/core": "5.
|
|
48
|
-
"@tramvai/state": "5.
|
|
49
|
-
"@tramvai/react": "5.
|
|
50
|
-
"@tramvai/tokens-common": "5.
|
|
51
|
-
"@tramvai/tokens-render": "5.
|
|
52
|
-
"@tramvai/tokens-router": "5.
|
|
48
|
+
"@tramvai/core": "5.16.2",
|
|
49
|
+
"@tramvai/state": "5.16.2",
|
|
50
|
+
"@tramvai/react": "5.16.2",
|
|
51
|
+
"@tramvai/tokens-common": "5.16.2",
|
|
52
|
+
"@tramvai/tokens-render": "5.16.2",
|
|
53
|
+
"@tramvai/tokens-router": "5.16.2",
|
|
53
54
|
"react": ">=16.14.0",
|
|
54
55
|
"react-dom": ">=16.14.0",
|
|
55
56
|
"object-assign": "^4.1.1",
|