@tramvai/module-router 2.70.0 → 2.72.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/lib/components/link.browser.js +55 -0
- package/lib/components/link.es.js +49 -0
- package/lib/components/link.js +53 -0
- package/lib/hooks/usePageService.browser.js +10 -0
- package/lib/hooks/usePageService.es.js +10 -0
- package/lib/hooks/usePageService.js +14 -0
- package/lib/hooks/usePrefetch.browser.browser.js +42 -0
- package/lib/index.browser.js +7 -906
- package/lib/index.es.js +6 -764
- package/lib/index.js +34 -788
- package/lib/modules/child-app.browser.js +31 -0
- package/lib/modules/child-app.es.js +31 -0
- package/lib/modules/child-app.js +33 -0
- package/lib/modules/clientCommon.browser.js +70 -0
- package/lib/modules/common.browser.js +137 -0
- package/lib/modules/common.es.js +137 -0
- package/lib/modules/common.js +145 -0
- package/lib/modules/fileSystemPages.browser.js +27 -0
- package/lib/modules/fileSystemPages.es.js +27 -0
- package/lib/modules/fileSystemPages.js +31 -0
- package/lib/modules/guards/common/index.browser.js +32 -0
- package/lib/modules/guards/common/index.es.js +32 -0
- package/lib/modules/guards/common/index.js +36 -0
- package/lib/modules/guards/common/internalError.browser.js +14 -0
- package/lib/modules/guards/common/internalError.es.js +14 -0
- package/lib/modules/guards/common/internalError.js +18 -0
- package/lib/modules/guards/common/loadBundle.browser.js +67 -0
- package/lib/modules/guards/common/loadBundle.es.js +67 -0
- package/lib/modules/guards/common/loadBundle.js +75 -0
- package/lib/modules/guards/server/httpMethod.es.js +20 -0
- package/lib/modules/guards/server/httpMethod.js +24 -0
- package/lib/modules/guards/server/index.es.js +18 -0
- package/lib/modules/guards/server/index.js +22 -0
- package/lib/modules/hooks/common/fillRouterStore.browser.js +9 -0
- package/lib/modules/hooks/common/fillRouterStore.es.js +9 -0
- package/lib/modules/hooks/common/fillRouterStore.js +13 -0
- package/lib/modules/hooks/common/index.browser.js +16 -0
- package/lib/modules/hooks/common/index.es.js +16 -0
- package/lib/modules/hooks/common/index.js +20 -0
- package/lib/modules/hooks/runActions.browser.js +34 -0
- package/lib/modules/hooks/runActions.es.js +34 -0
- package/lib/modules/hooks/runActions.js +42 -0
- package/lib/modules/hooks/server/httpStatus.es.js +7 -0
- package/lib/modules/hooks/server/httpStatus.js +11 -0
- package/lib/modules/hooks/server/index.es.js +17 -0
- package/lib/modules/hooks/server/index.js +21 -0
- package/lib/modules/hooks/spa/index.browser.js +70 -0
- package/lib/modules/hooks/spa/runCommands.browser.js +12 -0
- package/lib/modules/no-spa.browser.js +21 -0
- package/lib/modules/server.es.js +59 -0
- package/lib/modules/server.js +63 -0
- package/lib/modules/spa.browser.js +23 -0
- package/lib/modules/tokens/browser/index.browser.js +5 -0
- package/lib/modules/tokens/browser/prefetch.browser.js +112 -0
- package/lib/modules/tokens/common/index.browser.js +40 -0
- package/lib/modules/tokens/common/index.es.js +40 -0
- package/lib/modules/tokens/common/index.js +44 -0
- package/lib/modules/tokens/common/render.browser.js +14 -0
- package/lib/modules/tokens/common/render.es.js +14 -0
- package/lib/modules/tokens/common/render.js +18 -0
- package/lib/modules/tokens/common/routeNormalize.browser.js +10 -0
- package/lib/modules/tokens/common/routeNormalize.es.js +10 -0
- package/lib/modules/tokens/common/routeNormalize.js +18 -0
- package/lib/modules/tokens/common/routeSetDefaults.browser.js +13 -0
- package/lib/modules/tokens/common/routeSetDefaults.es.js +13 -0
- package/lib/modules/tokens/common/routeSetDefaults.js +17 -0
- package/lib/modules/tokens/common/routeTransform.browser.js +12 -0
- package/lib/modules/tokens/common/routeTransform.es.js +12 -0
- package/lib/modules/tokens/common/routeTransform.js +22 -0
- package/lib/modules/tokens/server/bundleInfo.es.js +35 -0
- package/lib/modules/tokens/server/bundleInfo.js +44 -0
- package/lib/modules/tokens/server/index.es.js +25 -0
- package/lib/modules/tokens/server/index.js +29 -0
- package/lib/modules/tokens/server/prefetch.es.js +15 -0
- package/lib/modules/tokens/server/prefetch.js +19 -0
- package/lib/modules/tokens/server/routerOptions.es.js +37 -0
- package/lib/modules/tokens/server/routerOptions.js +41 -0
- package/lib/modules/tokens.browser.js +22 -0
- package/lib/modules/tokens.es.js +22 -0
- package/lib/modules/tokens.js +35 -0
- package/lib/modules/utils/forRoot.browser.js +22 -0
- package/lib/modules/utils/forRoot.es.js +22 -0
- package/lib/modules/utils/forRoot.js +26 -0
- package/lib/services/page.browser.js +63 -0
- package/lib/services/page.es.js +63 -0
- package/lib/services/page.js +67 -0
- package/lib/stores/RouterStore.browser.js +29 -0
- package/lib/stores/RouterStore.es.js +29 -0
- package/lib/stores/RouterStore.js +35 -0
- package/lib/utils/requestIdleCallback.browser.js +10 -0
- package/package.json +22 -23
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
const routeSetDefaults = (route) => {
|
|
6
|
+
const config = {
|
|
7
|
+
bundle: 'mainDefault',
|
|
8
|
+
pageComponent: 'pageDefault',
|
|
9
|
+
...route.config,
|
|
10
|
+
};
|
|
11
|
+
return {
|
|
12
|
+
...route,
|
|
13
|
+
config,
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
exports.routeSetDefaults = routeSetDefaults;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import identity from '@tinkoff/utils/function/identity';
|
|
2
|
+
import compose from '@tinkoff/utils/function/compose';
|
|
3
|
+
import flatten from '@tinkoff/utils/array/flatten';
|
|
4
|
+
|
|
5
|
+
const routeTransform = ({ transformers, }) => {
|
|
6
|
+
if (!transformers || transformers.length === 0) {
|
|
7
|
+
return identity;
|
|
8
|
+
}
|
|
9
|
+
return compose(...flatten(transformers));
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export { routeTransform };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import identity from '@tinkoff/utils/function/identity';
|
|
2
|
+
import compose from '@tinkoff/utils/function/compose';
|
|
3
|
+
import flatten from '@tinkoff/utils/array/flatten';
|
|
4
|
+
|
|
5
|
+
const routeTransform = ({ transformers, }) => {
|
|
6
|
+
if (!transformers || transformers.length === 0) {
|
|
7
|
+
return identity;
|
|
8
|
+
}
|
|
9
|
+
return compose(...flatten(transformers));
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export { routeTransform };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var identity = require('@tinkoff/utils/function/identity');
|
|
6
|
+
var compose = require('@tinkoff/utils/function/compose');
|
|
7
|
+
var flatten = require('@tinkoff/utils/array/flatten');
|
|
8
|
+
|
|
9
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
10
|
+
|
|
11
|
+
var identity__default = /*#__PURE__*/_interopDefaultLegacy(identity);
|
|
12
|
+
var compose__default = /*#__PURE__*/_interopDefaultLegacy(compose);
|
|
13
|
+
var flatten__default = /*#__PURE__*/_interopDefaultLegacy(flatten);
|
|
14
|
+
|
|
15
|
+
const routeTransform = ({ transformers, }) => {
|
|
16
|
+
if (!transformers || transformers.length === 0) {
|
|
17
|
+
return identity__default["default"];
|
|
18
|
+
}
|
|
19
|
+
return compose__default["default"](...flatten__default["default"](transformers));
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
exports.routeTransform = routeTransform;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import flatten from '@tinkoff/utils/array/flatten';
|
|
2
|
+
import prop from '@tinkoff/utils/object/prop';
|
|
3
|
+
import { createPapiMethod } from '@tramvai/papi';
|
|
4
|
+
import { ROUTES_TOKEN } from '@tramvai/tokens-router';
|
|
5
|
+
import { isWildcard, isHistoryFallback } from '@tinkoff/router';
|
|
6
|
+
import { routeTransformToken, routerBundleInfoAdditionalToken } from '../../tokens.es.js';
|
|
7
|
+
|
|
8
|
+
const deduplicateArray = (list) => {
|
|
9
|
+
return Array.from(new Set(list));
|
|
10
|
+
};
|
|
11
|
+
const bundleInfoPapi = createPapiMethod({
|
|
12
|
+
method: 'get',
|
|
13
|
+
path: '/bundleInfo',
|
|
14
|
+
async handler() {
|
|
15
|
+
var _a;
|
|
16
|
+
const { getAdditionalRoutes, routes, routeTransform } = this.deps;
|
|
17
|
+
const loadAdditional = getAdditionalRoutes !== null && getAdditionalRoutes !== void 0 ? getAdditionalRoutes : (() => []);
|
|
18
|
+
return deduplicateArray(flatten(routes || [])
|
|
19
|
+
.concat((_a = (await loadAdditional())) !== null && _a !== void 0 ? _a : [])
|
|
20
|
+
.map(routeTransform)
|
|
21
|
+
.map(prop('path'))
|
|
22
|
+
.filter((path) => !isWildcard(path) && !isHistoryFallback(path))
|
|
23
|
+
.sort());
|
|
24
|
+
},
|
|
25
|
+
deps: {
|
|
26
|
+
routes: {
|
|
27
|
+
token: ROUTES_TOKEN,
|
|
28
|
+
optional: true,
|
|
29
|
+
},
|
|
30
|
+
routeTransform: routeTransformToken,
|
|
31
|
+
getAdditionalRoutes: { token: routerBundleInfoAdditionalToken, optional: true },
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
export { bundleInfoPapi };
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var flatten = require('@tinkoff/utils/array/flatten');
|
|
6
|
+
var prop = require('@tinkoff/utils/object/prop');
|
|
7
|
+
var papi = require('@tramvai/papi');
|
|
8
|
+
var tokensRouter = require('@tramvai/tokens-router');
|
|
9
|
+
var router = require('@tinkoff/router');
|
|
10
|
+
var tokens = require('../../tokens.js');
|
|
11
|
+
|
|
12
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
13
|
+
|
|
14
|
+
var flatten__default = /*#__PURE__*/_interopDefaultLegacy(flatten);
|
|
15
|
+
var prop__default = /*#__PURE__*/_interopDefaultLegacy(prop);
|
|
16
|
+
|
|
17
|
+
const deduplicateArray = (list) => {
|
|
18
|
+
return Array.from(new Set(list));
|
|
19
|
+
};
|
|
20
|
+
const bundleInfoPapi = papi.createPapiMethod({
|
|
21
|
+
method: 'get',
|
|
22
|
+
path: '/bundleInfo',
|
|
23
|
+
async handler() {
|
|
24
|
+
var _a;
|
|
25
|
+
const { getAdditionalRoutes, routes, routeTransform } = this.deps;
|
|
26
|
+
const loadAdditional = getAdditionalRoutes !== null && getAdditionalRoutes !== void 0 ? getAdditionalRoutes : (() => []);
|
|
27
|
+
return deduplicateArray(flatten__default["default"](routes || [])
|
|
28
|
+
.concat((_a = (await loadAdditional())) !== null && _a !== void 0 ? _a : [])
|
|
29
|
+
.map(routeTransform)
|
|
30
|
+
.map(prop__default["default"]('path'))
|
|
31
|
+
.filter((path) => !router.isWildcard(path) && !router.isHistoryFallback(path))
|
|
32
|
+
.sort());
|
|
33
|
+
},
|
|
34
|
+
deps: {
|
|
35
|
+
routes: {
|
|
36
|
+
token: tokensRouter.ROUTES_TOKEN,
|
|
37
|
+
optional: true,
|
|
38
|
+
},
|
|
39
|
+
routeTransform: tokens.routeTransformToken,
|
|
40
|
+
getAdditionalRoutes: { token: tokens.routerBundleInfoAdditionalToken, optional: true },
|
|
41
|
+
},
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
exports.bundleInfoPapi = bundleInfoPapi;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { REQUEST_MANAGER_TOKEN, RESPONSE_MANAGER_TOKEN } from '@tramvai/tokens-common';
|
|
2
|
+
import { SERVER_MODULE_PAPI_PUBLIC_ROUTE } from '@tramvai/tokens-server';
|
|
3
|
+
import { additionalRouterParameters } from '../../tokens.es.js';
|
|
4
|
+
import { routerOptions } from './routerOptions.es.js';
|
|
5
|
+
import { bundleInfoPapi } from './bundleInfo.es.js';
|
|
6
|
+
import { prefetchProviders } from './prefetch.es.js';
|
|
7
|
+
|
|
8
|
+
const serverTokens = [
|
|
9
|
+
{
|
|
10
|
+
provide: additionalRouterParameters,
|
|
11
|
+
useFactory: routerOptions,
|
|
12
|
+
deps: {
|
|
13
|
+
requestManager: REQUEST_MANAGER_TOKEN,
|
|
14
|
+
responseManager: RESPONSE_MANAGER_TOKEN,
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
provide: SERVER_MODULE_PAPI_PUBLIC_ROUTE,
|
|
19
|
+
multi: true,
|
|
20
|
+
useValue: bundleInfoPapi,
|
|
21
|
+
},
|
|
22
|
+
...prefetchProviders,
|
|
23
|
+
];
|
|
24
|
+
|
|
25
|
+
export { serverTokens };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var tokensCommon = require('@tramvai/tokens-common');
|
|
6
|
+
var tokensServer = require('@tramvai/tokens-server');
|
|
7
|
+
var tokens = require('../../tokens.js');
|
|
8
|
+
var routerOptions = require('./routerOptions.js');
|
|
9
|
+
var bundleInfo = require('./bundleInfo.js');
|
|
10
|
+
var prefetch = require('./prefetch.js');
|
|
11
|
+
|
|
12
|
+
const serverTokens = [
|
|
13
|
+
{
|
|
14
|
+
provide: tokens.additionalRouterParameters,
|
|
15
|
+
useFactory: routerOptions.routerOptions,
|
|
16
|
+
deps: {
|
|
17
|
+
requestManager: tokensCommon.REQUEST_MANAGER_TOKEN,
|
|
18
|
+
responseManager: tokensCommon.RESPONSE_MANAGER_TOKEN,
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
provide: tokensServer.SERVER_MODULE_PAPI_PUBLIC_ROUTE,
|
|
23
|
+
multi: true,
|
|
24
|
+
useValue: bundleInfo.bundleInfoPapi,
|
|
25
|
+
},
|
|
26
|
+
...prefetch.prefetchProviders,
|
|
27
|
+
];
|
|
28
|
+
|
|
29
|
+
exports.serverTokens = serverTokens;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { provide } from '@tramvai/core';
|
|
2
|
+
import { LINK_PREFETCH_MANAGER_TOKEN } from '@tramvai/tokens-router';
|
|
3
|
+
|
|
4
|
+
// do nothing on server side
|
|
5
|
+
const prefetchManager = {
|
|
6
|
+
prefetch: async (url) => { },
|
|
7
|
+
};
|
|
8
|
+
const prefetchProviders = [
|
|
9
|
+
provide({
|
|
10
|
+
provide: LINK_PREFETCH_MANAGER_TOKEN,
|
|
11
|
+
useValue: prefetchManager,
|
|
12
|
+
}),
|
|
13
|
+
];
|
|
14
|
+
|
|
15
|
+
export { prefetchProviders };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var core = require('@tramvai/core');
|
|
6
|
+
var tokensRouter = require('@tramvai/tokens-router');
|
|
7
|
+
|
|
8
|
+
// do nothing on server side
|
|
9
|
+
const prefetchManager = {
|
|
10
|
+
prefetch: async (url) => { },
|
|
11
|
+
};
|
|
12
|
+
const prefetchProviders = [
|
|
13
|
+
core.provide({
|
|
14
|
+
provide: tokensRouter.LINK_PREFETCH_MANAGER_TOKEN,
|
|
15
|
+
useValue: prefetchManager,
|
|
16
|
+
}),
|
|
17
|
+
];
|
|
18
|
+
|
|
19
|
+
exports.prefetchProviders = prefetchProviders;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { RedirectFoundError, makeErrorSilent, HttpError } from '@tinkoff/errors';
|
|
2
|
+
|
|
3
|
+
const routerOptions = ({ requestManager, responseManager, }) => {
|
|
4
|
+
const getUrl = (navigation) => { var _a, _b; return (_b = (_a = navigation.url) === null || _a === void 0 ? void 0 : _a.path) !== null && _b !== void 0 ? _b : requestManager.getUrl(); };
|
|
5
|
+
const throwError = ({ defaultStatus, url }) => {
|
|
6
|
+
const error = new HttpError({
|
|
7
|
+
url,
|
|
8
|
+
httpStatus: responseManager.getStatus() >= 300 ? responseManager.getStatus() : defaultStatus,
|
|
9
|
+
});
|
|
10
|
+
makeErrorSilent(error);
|
|
11
|
+
throw error;
|
|
12
|
+
};
|
|
13
|
+
return {
|
|
14
|
+
onNotFound: async (navigation) => {
|
|
15
|
+
// isSilent is used to prevent command line error logs,
|
|
16
|
+
// because 404 errors is expected behavior
|
|
17
|
+
throwError({ defaultStatus: 404, url: getUrl(navigation) });
|
|
18
|
+
},
|
|
19
|
+
onRedirect: async (navigation) => {
|
|
20
|
+
const { fromUrl, url, code } = navigation;
|
|
21
|
+
const error = new RedirectFoundError({
|
|
22
|
+
url: getUrl(navigation),
|
|
23
|
+
nextUrl: fromUrl.origin !== url.origin ? url.href : url.path,
|
|
24
|
+
httpStatus: code,
|
|
25
|
+
silent: true,
|
|
26
|
+
});
|
|
27
|
+
makeErrorSilent(error);
|
|
28
|
+
throw error;
|
|
29
|
+
},
|
|
30
|
+
onBlock: async (navigation) => {
|
|
31
|
+
throwError({ defaultStatus: 500, url: getUrl(navigation) });
|
|
32
|
+
},
|
|
33
|
+
defaultRedirectCode: requestManager.getMethod() === 'GET' ? 301 : 308,
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
export { routerOptions };
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var errors = require('@tinkoff/errors');
|
|
6
|
+
|
|
7
|
+
const routerOptions = ({ requestManager, responseManager, }) => {
|
|
8
|
+
const getUrl = (navigation) => { var _a, _b; return (_b = (_a = navigation.url) === null || _a === void 0 ? void 0 : _a.path) !== null && _b !== void 0 ? _b : requestManager.getUrl(); };
|
|
9
|
+
const throwError = ({ defaultStatus, url }) => {
|
|
10
|
+
const error = new errors.HttpError({
|
|
11
|
+
url,
|
|
12
|
+
httpStatus: responseManager.getStatus() >= 300 ? responseManager.getStatus() : defaultStatus,
|
|
13
|
+
});
|
|
14
|
+
errors.makeErrorSilent(error);
|
|
15
|
+
throw error;
|
|
16
|
+
};
|
|
17
|
+
return {
|
|
18
|
+
onNotFound: async (navigation) => {
|
|
19
|
+
// isSilent is used to prevent command line error logs,
|
|
20
|
+
// because 404 errors is expected behavior
|
|
21
|
+
throwError({ defaultStatus: 404, url: getUrl(navigation) });
|
|
22
|
+
},
|
|
23
|
+
onRedirect: async (navigation) => {
|
|
24
|
+
const { fromUrl, url, code } = navigation;
|
|
25
|
+
const error = new errors.RedirectFoundError({
|
|
26
|
+
url: getUrl(navigation),
|
|
27
|
+
nextUrl: fromUrl.origin !== url.origin ? url.href : url.path,
|
|
28
|
+
httpStatus: code,
|
|
29
|
+
silent: true,
|
|
30
|
+
});
|
|
31
|
+
errors.makeErrorSilent(error);
|
|
32
|
+
throw error;
|
|
33
|
+
},
|
|
34
|
+
onBlock: async (navigation) => {
|
|
35
|
+
throwError({ defaultStatus: 500, url: getUrl(navigation) });
|
|
36
|
+
},
|
|
37
|
+
defaultRedirectCode: requestManager.getMethod() === 'GET' ? 301 : 308,
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
exports.routerOptions = routerOptions;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { createToken } from '@tinkoff/dippy';
|
|
2
|
+
|
|
3
|
+
const routerClassToken = createToken('router routerClassToken');
|
|
4
|
+
const additionalRouterParameters = createToken('router additionalParameters');
|
|
5
|
+
const onChangeHooksToken = createToken('router onChangeHooks', {
|
|
6
|
+
multi: true,
|
|
7
|
+
});
|
|
8
|
+
const beforeResolveHooksToken = createToken('router beforeResolveHooks', {
|
|
9
|
+
multi: true,
|
|
10
|
+
});
|
|
11
|
+
const beforeNavigateHooksToken = createToken('router beforeNavigateHooks', {
|
|
12
|
+
multi: true,
|
|
13
|
+
});
|
|
14
|
+
const afterNavigateHooksToken = createToken('router afterNavigateHooks', {
|
|
15
|
+
multi: true,
|
|
16
|
+
});
|
|
17
|
+
const beforeUpdateCurrentHooksToken = createToken('router beforeUpdateCurrentHooks', { multi: true });
|
|
18
|
+
const afterUpdateCurrentHooksToken = createToken('router afterUpdateCurrentHooks', { multi: true });
|
|
19
|
+
const routeTransformToken = createToken('router finalRouteTransform');
|
|
20
|
+
createToken('router bundleInfoAdditional');
|
|
21
|
+
|
|
22
|
+
export { additionalRouterParameters, afterNavigateHooksToken, afterUpdateCurrentHooksToken, beforeNavigateHooksToken, beforeResolveHooksToken, beforeUpdateCurrentHooksToken, onChangeHooksToken, routeTransformToken, routerClassToken };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { createToken } from '@tinkoff/dippy';
|
|
2
|
+
|
|
3
|
+
const routerClassToken = createToken('router routerClassToken');
|
|
4
|
+
const additionalRouterParameters = createToken('router additionalParameters');
|
|
5
|
+
const onChangeHooksToken = createToken('router onChangeHooks', {
|
|
6
|
+
multi: true,
|
|
7
|
+
});
|
|
8
|
+
const beforeResolveHooksToken = createToken('router beforeResolveHooks', {
|
|
9
|
+
multi: true,
|
|
10
|
+
});
|
|
11
|
+
const beforeNavigateHooksToken = createToken('router beforeNavigateHooks', {
|
|
12
|
+
multi: true,
|
|
13
|
+
});
|
|
14
|
+
const afterNavigateHooksToken = createToken('router afterNavigateHooks', {
|
|
15
|
+
multi: true,
|
|
16
|
+
});
|
|
17
|
+
const beforeUpdateCurrentHooksToken = createToken('router beforeUpdateCurrentHooks', { multi: true });
|
|
18
|
+
const afterUpdateCurrentHooksToken = createToken('router afterUpdateCurrentHooks', { multi: true });
|
|
19
|
+
const routeTransformToken = createToken('router finalRouteTransform');
|
|
20
|
+
const routerBundleInfoAdditionalToken = createToken('router bundleInfoAdditional');
|
|
21
|
+
|
|
22
|
+
export { additionalRouterParameters, afterNavigateHooksToken, afterUpdateCurrentHooksToken, beforeNavigateHooksToken, beforeResolveHooksToken, beforeUpdateCurrentHooksToken, onChangeHooksToken, routeTransformToken, routerBundleInfoAdditionalToken, routerClassToken };
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var dippy = require('@tinkoff/dippy');
|
|
6
|
+
|
|
7
|
+
const routerClassToken = dippy.createToken('router routerClassToken');
|
|
8
|
+
const additionalRouterParameters = dippy.createToken('router additionalParameters');
|
|
9
|
+
const onChangeHooksToken = dippy.createToken('router onChangeHooks', {
|
|
10
|
+
multi: true,
|
|
11
|
+
});
|
|
12
|
+
const beforeResolveHooksToken = dippy.createToken('router beforeResolveHooks', {
|
|
13
|
+
multi: true,
|
|
14
|
+
});
|
|
15
|
+
const beforeNavigateHooksToken = dippy.createToken('router beforeNavigateHooks', {
|
|
16
|
+
multi: true,
|
|
17
|
+
});
|
|
18
|
+
const afterNavigateHooksToken = dippy.createToken('router afterNavigateHooks', {
|
|
19
|
+
multi: true,
|
|
20
|
+
});
|
|
21
|
+
const beforeUpdateCurrentHooksToken = dippy.createToken('router beforeUpdateCurrentHooks', { multi: true });
|
|
22
|
+
const afterUpdateCurrentHooksToken = dippy.createToken('router afterUpdateCurrentHooks', { multi: true });
|
|
23
|
+
const routeTransformToken = dippy.createToken('router finalRouteTransform');
|
|
24
|
+
const routerBundleInfoAdditionalToken = dippy.createToken('router bundleInfoAdditional');
|
|
25
|
+
|
|
26
|
+
exports.additionalRouterParameters = additionalRouterParameters;
|
|
27
|
+
exports.afterNavigateHooksToken = afterNavigateHooksToken;
|
|
28
|
+
exports.afterUpdateCurrentHooksToken = afterUpdateCurrentHooksToken;
|
|
29
|
+
exports.beforeNavigateHooksToken = beforeNavigateHooksToken;
|
|
30
|
+
exports.beforeResolveHooksToken = beforeResolveHooksToken;
|
|
31
|
+
exports.beforeUpdateCurrentHooksToken = beforeUpdateCurrentHooksToken;
|
|
32
|
+
exports.onChangeHooksToken = onChangeHooksToken;
|
|
33
|
+
exports.routeTransformToken = routeTransformToken;
|
|
34
|
+
exports.routerBundleInfoAdditionalToken = routerBundleInfoAdditionalToken;
|
|
35
|
+
exports.routerClassToken = routerClassToken;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ROUTES_TOKEN, ROUTER_SPA_ACTIONS_RUN_MODE_TOKEN } from '@tramvai/tokens-router';
|
|
2
|
+
|
|
3
|
+
const generateForRoot = (mainModule) => {
|
|
4
|
+
return (routes, options = {}) => {
|
|
5
|
+
return {
|
|
6
|
+
mainModule,
|
|
7
|
+
providers: [
|
|
8
|
+
{
|
|
9
|
+
provide: ROUTES_TOKEN,
|
|
10
|
+
multi: true,
|
|
11
|
+
useValue: routes,
|
|
12
|
+
},
|
|
13
|
+
options.spaActionsMode && {
|
|
14
|
+
provide: ROUTER_SPA_ACTIONS_RUN_MODE_TOKEN,
|
|
15
|
+
useValue: options.spaActionsMode,
|
|
16
|
+
},
|
|
17
|
+
].filter(Boolean),
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export { generateForRoot };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ROUTES_TOKEN, ROUTER_SPA_ACTIONS_RUN_MODE_TOKEN } from '@tramvai/tokens-router';
|
|
2
|
+
|
|
3
|
+
const generateForRoot = (mainModule) => {
|
|
4
|
+
return (routes, options = {}) => {
|
|
5
|
+
return {
|
|
6
|
+
mainModule,
|
|
7
|
+
providers: [
|
|
8
|
+
{
|
|
9
|
+
provide: ROUTES_TOKEN,
|
|
10
|
+
multi: true,
|
|
11
|
+
useValue: routes,
|
|
12
|
+
},
|
|
13
|
+
options.spaActionsMode && {
|
|
14
|
+
provide: ROUTER_SPA_ACTIONS_RUN_MODE_TOKEN,
|
|
15
|
+
useValue: options.spaActionsMode,
|
|
16
|
+
},
|
|
17
|
+
].filter(Boolean),
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export { generateForRoot };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var tokensRouter = require('@tramvai/tokens-router');
|
|
6
|
+
|
|
7
|
+
const generateForRoot = (mainModule) => {
|
|
8
|
+
return (routes, options = {}) => {
|
|
9
|
+
return {
|
|
10
|
+
mainModule,
|
|
11
|
+
providers: [
|
|
12
|
+
{
|
|
13
|
+
provide: tokensRouter.ROUTES_TOKEN,
|
|
14
|
+
multi: true,
|
|
15
|
+
useValue: routes,
|
|
16
|
+
},
|
|
17
|
+
options.spaActionsMode && {
|
|
18
|
+
provide: tokensRouter.ROUTER_SPA_ACTIONS_RUN_MODE_TOKEN,
|
|
19
|
+
useValue: options.spaActionsMode,
|
|
20
|
+
},
|
|
21
|
+
].filter(Boolean),
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
exports.generateForRoot = generateForRoot;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { isFileSystemPageComponent } from '@tramvai/experiments';
|
|
2
|
+
|
|
3
|
+
class PageService {
|
|
4
|
+
constructor({ router, componentRegistry }) {
|
|
5
|
+
this.router = router;
|
|
6
|
+
this.componentRegistry = componentRegistry;
|
|
7
|
+
}
|
|
8
|
+
getCurrentRoute() {
|
|
9
|
+
return this.router.getCurrentRoute();
|
|
10
|
+
}
|
|
11
|
+
getCurrentUrl() {
|
|
12
|
+
return this.router.getCurrentUrl();
|
|
13
|
+
}
|
|
14
|
+
getConfig() {
|
|
15
|
+
var _a, _b;
|
|
16
|
+
return (_b = (_a = this.getCurrentRoute()) === null || _a === void 0 ? void 0 : _a.config) !== null && _b !== void 0 ? _b : {};
|
|
17
|
+
}
|
|
18
|
+
getContent() {
|
|
19
|
+
var _a;
|
|
20
|
+
return (_a = this.getConfig().content) !== null && _a !== void 0 ? _a : {};
|
|
21
|
+
}
|
|
22
|
+
getMeta() {
|
|
23
|
+
var _a;
|
|
24
|
+
return (_a = this.getConfig().meta) !== null && _a !== void 0 ? _a : {};
|
|
25
|
+
}
|
|
26
|
+
navigate(options) {
|
|
27
|
+
return this.router.navigate(options);
|
|
28
|
+
}
|
|
29
|
+
updateCurrentRoute(options) {
|
|
30
|
+
return this.router.updateCurrentRoute(options);
|
|
31
|
+
}
|
|
32
|
+
back(options) {
|
|
33
|
+
return this.router.back(options);
|
|
34
|
+
}
|
|
35
|
+
forward() {
|
|
36
|
+
return this.router.forward();
|
|
37
|
+
}
|
|
38
|
+
go(to, options) {
|
|
39
|
+
return this.router.go(to, options);
|
|
40
|
+
}
|
|
41
|
+
addComponent(name, component) {
|
|
42
|
+
const group = this.getComponentsGroupName();
|
|
43
|
+
return this.componentRegistry.add(name, component, group);
|
|
44
|
+
}
|
|
45
|
+
getComponent(name) {
|
|
46
|
+
const group = this.getComponentsGroupName();
|
|
47
|
+
return this.componentRegistry.get(name, group);
|
|
48
|
+
}
|
|
49
|
+
resolveComponentFromConfig(property) {
|
|
50
|
+
var _a;
|
|
51
|
+
const configName = `${property}Component`;
|
|
52
|
+
const defaultComponent = `${property}Default`;
|
|
53
|
+
const componentName = (_a = this.getConfig()[configName]) !== null && _a !== void 0 ? _a : defaultComponent;
|
|
54
|
+
return this.getComponent(componentName) || this.getComponent(defaultComponent);
|
|
55
|
+
}
|
|
56
|
+
getComponentsGroupName() {
|
|
57
|
+
const { bundle, pageComponent } = this.getConfig();
|
|
58
|
+
const group = isFileSystemPageComponent(pageComponent) ? pageComponent : bundle;
|
|
59
|
+
return group;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export { PageService };
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { isFileSystemPageComponent } from '@tramvai/experiments';
|
|
2
|
+
|
|
3
|
+
class PageService {
|
|
4
|
+
constructor({ router, componentRegistry }) {
|
|
5
|
+
this.router = router;
|
|
6
|
+
this.componentRegistry = componentRegistry;
|
|
7
|
+
}
|
|
8
|
+
getCurrentRoute() {
|
|
9
|
+
return this.router.getCurrentRoute();
|
|
10
|
+
}
|
|
11
|
+
getCurrentUrl() {
|
|
12
|
+
return this.router.getCurrentUrl();
|
|
13
|
+
}
|
|
14
|
+
getConfig() {
|
|
15
|
+
var _a, _b;
|
|
16
|
+
return (_b = (_a = this.getCurrentRoute()) === null || _a === void 0 ? void 0 : _a.config) !== null && _b !== void 0 ? _b : {};
|
|
17
|
+
}
|
|
18
|
+
getContent() {
|
|
19
|
+
var _a;
|
|
20
|
+
return (_a = this.getConfig().content) !== null && _a !== void 0 ? _a : {};
|
|
21
|
+
}
|
|
22
|
+
getMeta() {
|
|
23
|
+
var _a;
|
|
24
|
+
return (_a = this.getConfig().meta) !== null && _a !== void 0 ? _a : {};
|
|
25
|
+
}
|
|
26
|
+
navigate(options) {
|
|
27
|
+
return this.router.navigate(options);
|
|
28
|
+
}
|
|
29
|
+
updateCurrentRoute(options) {
|
|
30
|
+
return this.router.updateCurrentRoute(options);
|
|
31
|
+
}
|
|
32
|
+
back(options) {
|
|
33
|
+
return this.router.back(options);
|
|
34
|
+
}
|
|
35
|
+
forward() {
|
|
36
|
+
return this.router.forward();
|
|
37
|
+
}
|
|
38
|
+
go(to, options) {
|
|
39
|
+
return this.router.go(to, options);
|
|
40
|
+
}
|
|
41
|
+
addComponent(name, component) {
|
|
42
|
+
const group = this.getComponentsGroupName();
|
|
43
|
+
return this.componentRegistry.add(name, component, group);
|
|
44
|
+
}
|
|
45
|
+
getComponent(name) {
|
|
46
|
+
const group = this.getComponentsGroupName();
|
|
47
|
+
return this.componentRegistry.get(name, group);
|
|
48
|
+
}
|
|
49
|
+
resolveComponentFromConfig(property) {
|
|
50
|
+
var _a;
|
|
51
|
+
const configName = `${property}Component`;
|
|
52
|
+
const defaultComponent = `${property}Default`;
|
|
53
|
+
const componentName = (_a = this.getConfig()[configName]) !== null && _a !== void 0 ? _a : defaultComponent;
|
|
54
|
+
return this.getComponent(componentName) || this.getComponent(defaultComponent);
|
|
55
|
+
}
|
|
56
|
+
getComponentsGroupName() {
|
|
57
|
+
const { bundle, pageComponent } = this.getConfig();
|
|
58
|
+
const group = isFileSystemPageComponent(pageComponent) ? pageComponent : bundle;
|
|
59
|
+
return group;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export { PageService };
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var experiments = require('@tramvai/experiments');
|
|
6
|
+
|
|
7
|
+
class PageService {
|
|
8
|
+
constructor({ router, componentRegistry }) {
|
|
9
|
+
this.router = router;
|
|
10
|
+
this.componentRegistry = componentRegistry;
|
|
11
|
+
}
|
|
12
|
+
getCurrentRoute() {
|
|
13
|
+
return this.router.getCurrentRoute();
|
|
14
|
+
}
|
|
15
|
+
getCurrentUrl() {
|
|
16
|
+
return this.router.getCurrentUrl();
|
|
17
|
+
}
|
|
18
|
+
getConfig() {
|
|
19
|
+
var _a, _b;
|
|
20
|
+
return (_b = (_a = this.getCurrentRoute()) === null || _a === void 0 ? void 0 : _a.config) !== null && _b !== void 0 ? _b : {};
|
|
21
|
+
}
|
|
22
|
+
getContent() {
|
|
23
|
+
var _a;
|
|
24
|
+
return (_a = this.getConfig().content) !== null && _a !== void 0 ? _a : {};
|
|
25
|
+
}
|
|
26
|
+
getMeta() {
|
|
27
|
+
var _a;
|
|
28
|
+
return (_a = this.getConfig().meta) !== null && _a !== void 0 ? _a : {};
|
|
29
|
+
}
|
|
30
|
+
navigate(options) {
|
|
31
|
+
return this.router.navigate(options);
|
|
32
|
+
}
|
|
33
|
+
updateCurrentRoute(options) {
|
|
34
|
+
return this.router.updateCurrentRoute(options);
|
|
35
|
+
}
|
|
36
|
+
back(options) {
|
|
37
|
+
return this.router.back(options);
|
|
38
|
+
}
|
|
39
|
+
forward() {
|
|
40
|
+
return this.router.forward();
|
|
41
|
+
}
|
|
42
|
+
go(to, options) {
|
|
43
|
+
return this.router.go(to, options);
|
|
44
|
+
}
|
|
45
|
+
addComponent(name, component) {
|
|
46
|
+
const group = this.getComponentsGroupName();
|
|
47
|
+
return this.componentRegistry.add(name, component, group);
|
|
48
|
+
}
|
|
49
|
+
getComponent(name) {
|
|
50
|
+
const group = this.getComponentsGroupName();
|
|
51
|
+
return this.componentRegistry.get(name, group);
|
|
52
|
+
}
|
|
53
|
+
resolveComponentFromConfig(property) {
|
|
54
|
+
var _a;
|
|
55
|
+
const configName = `${property}Component`;
|
|
56
|
+
const defaultComponent = `${property}Default`;
|
|
57
|
+
const componentName = (_a = this.getConfig()[configName]) !== null && _a !== void 0 ? _a : defaultComponent;
|
|
58
|
+
return this.getComponent(componentName) || this.getComponent(defaultComponent);
|
|
59
|
+
}
|
|
60
|
+
getComponentsGroupName() {
|
|
61
|
+
const { bundle, pageComponent } = this.getConfig();
|
|
62
|
+
const group = experiments.isFileSystemPageComponent(pageComponent) ? pageComponent : bundle;
|
|
63
|
+
return group;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
exports.PageService = PageService;
|