@tramvai/module-child-app 2.64.0 → 2.66.0

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/README.md CHANGED
@@ -421,6 +421,14 @@ You may specify a full config to debug to a specific child-app:
421
421
  ```
422
422
  2. Run root-app with `CHILD_APP_DEBUG` environment variable with value of child-app names needed to debug
423
423
 
424
+ ## Limitations
425
+
426
+ ### Usage of envs
427
+
428
+ Child-app cannot control the environment variables and therefore should not use token `ENV_USED_TOKEN` at all. If you try to specify `ENV_USED_TOKEN` provider you will get error in development mode and in prod mode it will just be ignored.
429
+
430
+ Controlling of the envs content should be fully delegated to the root-app itself. Child-app can only use final values through `ENV_MANAGER_TOKEN` or any other options that passes data from root-app to child-app.
431
+
424
432
  ## Known issues
425
433
 
426
434
  ### This Suspense boundary received an update before it finished hydrating
@@ -3,7 +3,7 @@ import { provide, COMMAND_LINE_RUNNER_TOKEN, walkOfModules, getModuleParameters,
3
3
  import { Container, ChildContainer, Scope, DI_TOKEN } from '@tinkoff/dippy';
4
4
  import { commandLineListTokens, CHILD_APP_INTERNAL_ROOT_STATE_SUBSCRIPTION_TOKEN, CHILD_APP_INTERNAL_ACTION_TOKEN, CHILD_APP_INTERNAL_CONFIG_TOKEN, IS_CHILD_APP_DI_TOKEN, CHILD_APP_INTERNAL_ROOT_DI_BORROW_TOKEN, CHILD_APP_INTERNAL_ROOT_STATE_ALLOWED_STORE_TOKEN, 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_DI_MANAGER_TOKEN, CHILD_APP_COMMAND_LINE_RUNNER_TOKEN, CHILD_APP_PRELOAD_MANAGER_TOKEN, CHILD_APP_RENDER_MANAGER_TOKEN, CHILD_APP_COMMON_INITIAL_STATE_TOKEN, CHILD_APP_INTERNAL_RENDER_TOKEN } from '@tramvai/tokens-child-app';
5
5
  export * from '@tramvai/tokens-child-app';
6
- import { CONTEXT_TOKEN, ACTION_PAGE_RUNNER_TOKEN, LOGGER_TOKEN, DISPATCHER_TOKEN, STORE_TOKEN, DISPATCHER_CONTEXT_TOKEN, STORE_MIDDLEWARE, INITIAL_APP_STATE_TOKEN, COMBINE_REDUCERS, ENV_MANAGER_TOKEN, REGISTER_CLEAR_CACHE_TOKEN, CLEAR_CACHE_TOKEN, ENV_USED_TOKEN } from '@tramvai/tokens-common';
6
+ import { CONTEXT_TOKEN, ACTION_PAGE_RUNNER_TOKEN, LOGGER_TOKEN, DISPATCHER_TOKEN, STORE_TOKEN, ENV_USED_TOKEN, DISPATCHER_CONTEXT_TOKEN, STORE_MIDDLEWARE, INITIAL_APP_STATE_TOKEN, COMBINE_REDUCERS, ENV_MANAGER_TOKEN, REGISTER_CLEAR_CACHE_TOKEN, CLEAR_CACHE_TOKEN } from '@tramvai/tokens-common';
7
7
  import { RENDER_SLOTS, EXTEND_RENDER } from '@tramvai/tokens-render';
8
8
  import { ROUTER_SPA_ACTIONS_RUN_MODE_TOKEN, PAGE_SERVICE_TOKEN, ROUTER_TOKEN } from '@tramvai/tokens-router';
9
9
  import { resolveLazyComponent, UniversalErrorBoundary, useDi } from '@tramvai/react';
@@ -130,6 +130,14 @@ const commonModuleStubs = [
130
130
  };
131
131
  });
132
132
 
133
+ const validateChildAppProvider = (provider) => {
134
+ if (provider.provide.name === ENV_USED_TOKEN.name) {
135
+ throw new Error(`child-app Cannot use 'ENV_USED_TOKEN' as envs should be controlled by the root-app.
136
+ Consider passing configs from the root-app to child-app explicitly and remove defining 'ENV_USED_TOKEN' in the child-app itself.
137
+ You can still use 'ENV_MANAGER_TOKEN' in child-app to get env values`);
138
+ }
139
+ };
140
+
133
141
  class SingletonDiManager {
134
142
  constructor({ logger, appDi, loader, }) {
135
143
  this.cache = new Map();
@@ -191,6 +199,9 @@ class SingletonDiManager {
191
199
  });
192
200
  });
193
201
  providers.forEach((provider) => {
202
+ if (process.env.NODE_ENV === 'development') {
203
+ validateChildAppProvider(provider);
204
+ }
194
205
  di.register(provider);
195
206
  });
196
207
  di.register({
package/lib/server.es.js CHANGED
@@ -3,7 +3,7 @@ import { provide, COMMAND_LINE_RUNNER_TOKEN, walkOfModules, getModuleParameters,
3
3
  import { Container, ChildContainer, Scope, DI_TOKEN } from '@tinkoff/dippy';
4
4
  import { commandLineListTokens, CHILD_APP_INTERNAL_ACTION_TOKEN, CHILD_APP_INTERNAL_CONFIG_TOKEN, IS_CHILD_APP_DI_TOKEN, CHILD_APP_INTERNAL_ROOT_DI_BORROW_TOKEN, CHILD_APP_INTERNAL_ROOT_STATE_ALLOWED_STORE_TOKEN, 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_DI_MANAGER_TOKEN, CHILD_APP_COMMAND_LINE_RUNNER_TOKEN, CHILD_APP_PRELOAD_MANAGER_TOKEN, CHILD_APP_RENDER_MANAGER_TOKEN, CHILD_APP_INTERNAL_ROOT_STATE_SUBSCRIPTION_TOKEN, CHILD_APP_STATE_MANAGER_TOKEN, CHILD_APP_INTERNAL_RENDER_TOKEN } from '@tramvai/tokens-child-app';
5
5
  export * from '@tramvai/tokens-child-app';
6
- import { ACTION_PAGE_RUNNER_TOKEN, LOGGER_TOKEN, DISPATCHER_TOKEN, STORE_TOKEN, CONTEXT_TOKEN, DISPATCHER_CONTEXT_TOKEN, STORE_MIDDLEWARE, INITIAL_APP_STATE_TOKEN, COMBINE_REDUCERS, ENV_MANAGER_TOKEN, REGISTER_CLEAR_CACHE_TOKEN, CLEAR_CACHE_TOKEN, ENV_USED_TOKEN, CREATE_CACHE_TOKEN } from '@tramvai/tokens-common';
6
+ import { ACTION_PAGE_RUNNER_TOKEN, LOGGER_TOKEN, DISPATCHER_TOKEN, STORE_TOKEN, CONTEXT_TOKEN, ENV_USED_TOKEN, DISPATCHER_CONTEXT_TOKEN, STORE_MIDDLEWARE, INITIAL_APP_STATE_TOKEN, COMBINE_REDUCERS, ENV_MANAGER_TOKEN, REGISTER_CLEAR_CACHE_TOKEN, CLEAR_CACHE_TOKEN, CREATE_CACHE_TOKEN } from '@tramvai/tokens-common';
7
7
  import { RENDER_SLOTS, EXTEND_RENDER, ResourceType, ResourceSlot, RESOURCES_REGISTRY } from '@tramvai/tokens-render';
8
8
  import { PAGE_SERVICE_TOKEN } from '@tramvai/tokens-router';
9
9
  import { resolveLazyComponent, UniversalErrorBoundary, useDi } from '@tramvai/react';
@@ -68,6 +68,14 @@ const commonModuleStubs = [
68
68
  };
69
69
  });
70
70
 
71
+ const validateChildAppProvider = (provider) => {
72
+ if (provider.provide.name === ENV_USED_TOKEN.name) {
73
+ throw new Error(`child-app Cannot use 'ENV_USED_TOKEN' as envs should be controlled by the root-app.
74
+ Consider passing configs from the root-app to child-app explicitly and remove defining 'ENV_USED_TOKEN' in the child-app itself.
75
+ You can still use 'ENV_MANAGER_TOKEN' in child-app to get env values`);
76
+ }
77
+ };
78
+
71
79
  class SingletonDiManager {
72
80
  constructor({ logger, appDi, loader, }) {
73
81
  this.cache = new Map();
@@ -129,6 +137,9 @@ class SingletonDiManager {
129
137
  });
130
138
  });
131
139
  providers.forEach((provider) => {
140
+ if (process.env.NODE_ENV === 'development') {
141
+ validateChildAppProvider(provider);
142
+ }
132
143
  di.register(provider);
133
144
  });
134
145
  di.register({
package/lib/server.js CHANGED
@@ -77,6 +77,14 @@ const commonModuleStubs = [
77
77
  };
78
78
  });
79
79
 
80
+ const validateChildAppProvider = (provider) => {
81
+ if (provider.provide.name === tokensCommon.ENV_USED_TOKEN.name) {
82
+ throw new Error(`child-app Cannot use 'ENV_USED_TOKEN' as envs should be controlled by the root-app.
83
+ Consider passing configs from the root-app to child-app explicitly and remove defining 'ENV_USED_TOKEN' in the child-app itself.
84
+ You can still use 'ENV_MANAGER_TOKEN' in child-app to get env values`);
85
+ }
86
+ };
87
+
80
88
  class SingletonDiManager {
81
89
  constructor({ logger, appDi, loader, }) {
82
90
  this.cache = new Map();
@@ -138,6 +146,9 @@ class SingletonDiManager {
138
146
  });
139
147
  });
140
148
  providers.forEach((provider) => {
149
+ if (process.env.NODE_ENV === 'development') {
150
+ validateChildAppProvider(provider);
151
+ }
141
152
  di.register(provider);
142
153
  });
143
154
  di.register({
@@ -0,0 +1,2 @@
1
+ import type { Provider } from '@tinkoff/dippy';
2
+ export declare const validateChildAppProvider: (provider: Provider) => void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tramvai/module-child-app",
3
- "version": "2.64.0",
3
+ "version": "2.66.0",
4
4
  "description": "Module for child apps",
5
5
  "browser": {
6
6
  "./lib/server.js": "./lib/browser.js",
@@ -31,21 +31,21 @@
31
31
  "@tinkoff/env-validators": "0.1.4",
32
32
  "@tinkoff/module-loader-client": "0.4.4",
33
33
  "@tinkoff/module-loader-server": "0.5.6",
34
- "@tramvai/child-app-core": "2.64.0",
35
- "@tramvai/module-router": "2.64.0",
34
+ "@tramvai/child-app-core": "2.66.0",
35
+ "@tramvai/module-router": "2.66.0",
36
36
  "@tramvai/safe-strings": "0.5.6",
37
- "@tramvai/tokens-child-app": "2.64.0"
37
+ "@tramvai/tokens-child-app": "2.66.0"
38
38
  },
39
39
  "devDependencies": {},
40
40
  "peerDependencies": {
41
- "@tinkoff/dippy": "0.8.11",
41
+ "@tinkoff/dippy": "0.8.12",
42
42
  "@tinkoff/utils": "^2.1.2",
43
- "@tramvai/core": "2.64.0",
44
- "@tramvai/state": "2.64.0",
45
- "@tramvai/react": "2.64.0",
46
- "@tramvai/tokens-common": "2.64.0",
47
- "@tramvai/tokens-render": "2.64.0",
48
- "@tramvai/tokens-router": "2.64.0",
43
+ "@tramvai/core": "2.66.0",
44
+ "@tramvai/state": "2.66.0",
45
+ "@tramvai/react": "2.66.0",
46
+ "@tramvai/tokens-common": "2.66.0",
47
+ "@tramvai/tokens-render": "2.66.0",
48
+ "@tramvai/tokens-router": "2.66.0",
49
49
  "react": ">=16.14.0",
50
50
  "react-dom": ">=16.14.0",
51
51
  "object-assign": "^4.1.1",