@tramvai/module-client-hints 2.70.1 → 2.72.3

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.
Files changed (34) hide show
  1. package/lib/browser/matchMedia.browser.js +34 -0
  2. package/lib/browser.js +12 -104
  3. package/lib/child-app/module.browser.js +21 -0
  4. package/lib/child-app/module.es.js +21 -0
  5. package/lib/child-app/module.js +23 -0
  6. package/lib/server/readMedia.es.js +48 -0
  7. package/lib/server/readMedia.js +56 -0
  8. package/lib/server/userAgent.es.js +65 -0
  9. package/lib/server/userAgent.js +69 -0
  10. package/lib/server.es.js +13 -174
  11. package/lib/server.js +30 -192
  12. package/lib/shared/constants.browser.js +3 -0
  13. package/lib/shared/constants.es.js +3 -0
  14. package/lib/shared/constants.js +7 -0
  15. package/lib/shared/mediaBreakpoints.browser.js +5 -0
  16. package/lib/shared/providers.browser.js +9 -0
  17. package/lib/shared/providers.es.js +9 -0
  18. package/lib/shared/providers.js +13 -0
  19. package/lib/shared/stores/media.browser.js +18 -0
  20. package/lib/shared/stores/media.es.js +18 -0
  21. package/lib/shared/stores/media.js +23 -0
  22. package/lib/shared/stores/mediaCheckers.browser.js +11 -0
  23. package/lib/shared/stores/mediaCheckers.es.js +11 -0
  24. package/lib/shared/stores/mediaCheckers.js +17 -0
  25. package/lib/shared/stores/mediaSelectors.browser.js +17 -0
  26. package/lib/shared/stores/mediaSelectors.es.js +17 -0
  27. package/lib/shared/stores/mediaSelectors.js +24 -0
  28. package/lib/shared/stores/userAgent.browser.js +8 -0
  29. package/lib/shared/stores/userAgent.es.js +8 -0
  30. package/lib/shared/stores/userAgent.js +13 -0
  31. package/lib/tokens.browser.js +6 -0
  32. package/lib/tokens.es.js +6 -0
  33. package/lib/tokens.js +11 -0
  34. package/package.json +11 -12
@@ -0,0 +1,34 @@
1
+ import debounce from '@tinkoff/utils/function/debounce';
2
+ import { setMedia } from '../shared/stores/media.browser.js';
3
+ import { COOKIE_NAME_MEDIA_INFO } from '../shared/constants.browser.js';
4
+ import { mediaBreakpoints } from '../shared/mediaBreakpoints.browser.js';
5
+
6
+ const isTouch = !!('ontouchstart' in window ||
7
+ (window.DocumentTouch && document instanceof window.DocumentTouch));
8
+ const getMediaInfo = () => ({
9
+ width: window.innerWidth,
10
+ height: window.innerHeight,
11
+ isTouch,
12
+ retina: window.matchMedia(mediaBreakpoints.retina).matches,
13
+ });
14
+ const matchMediaCommand = ({ context, cookieManager, }) => {
15
+ return function matchMedia() {
16
+ const setMediaInfo = () => {
17
+ const media = getMediaInfo();
18
+ cookieManager.set({
19
+ name: COOKIE_NAME_MEDIA_INFO,
20
+ value: JSON.stringify(media),
21
+ });
22
+ return context.dispatch(setMedia({
23
+ ...media,
24
+ supposed: false,
25
+ }));
26
+ };
27
+ const debouncedSetMediaInfo = debounce(300, setMediaInfo);
28
+ window.addEventListener('orientationchange', debouncedSetMediaInfo);
29
+ window.addEventListener('resize', debouncedSetMediaInfo);
30
+ return setMediaInfo();
31
+ };
32
+ };
33
+
34
+ export { matchMediaCommand };
package/lib/browser.js CHANGED
@@ -1,109 +1,17 @@
1
1
  import { __decorate } from 'tslib';
2
2
  import { Module, provide, commandLineListTokens } from '@tramvai/core';
3
- import { COMBINE_REDUCERS, STORE_TOKEN, CONTEXT_TOKEN } from '@tramvai/tokens-common';
3
+ import { STORE_TOKEN, CONTEXT_TOKEN } from '@tramvai/tokens-common';
4
4
  import { COOKIE_MANAGER_TOKEN } from '@tramvai/tokens-cookie';
5
- import { createToken } from '@tinkoff/dippy';
6
- import debounce from '@tinkoff/utils/function/debounce';
7
- import { createEvent, createReducer, useSelector } from '@tramvai/state';
8
- import { CHILD_APP_INTERNAL_ROOT_STATE_ALLOWED_STORE_TOKEN } from '@tramvai/tokens-child-app';
9
-
10
- const USER_AGENT_TOKEN = createToken('userAgent');
11
- const PARSER_CLIENT_HINTS_ENABLED = createToken('client-hints parserClientHints enabled');
12
-
13
- const setMedia = createEvent('setMedia');
14
- const initialState = {
15
- height: 0,
16
- width: 0,
17
- isTouch: false,
18
- retina: false,
19
- synchronized: false,
20
- };
21
- const MediaStore = createReducer('media', initialState).on(setMedia, (state, media) => {
22
- return {
23
- ...state,
24
- ...media,
25
- };
26
- });
27
-
28
- const COOKIE_NAME_MEDIA_INFO = 'mediaInfo';
29
-
30
- const mediaBreakpoints = {
31
- retina: '(-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi)',
32
- };
33
-
34
- const isTouch = !!('ontouchstart' in window ||
35
- (window.DocumentTouch && document instanceof window.DocumentTouch));
36
- const getMediaInfo = () => ({
37
- width: window.innerWidth,
38
- height: window.innerHeight,
39
- isTouch,
40
- retina: window.matchMedia(mediaBreakpoints.retina).matches,
41
- });
42
- const matchMediaCommand = ({ context, cookieManager, }) => {
43
- return function matchMedia() {
44
- const setMediaInfo = () => {
45
- const media = getMediaInfo();
46
- cookieManager.set({
47
- name: COOKIE_NAME_MEDIA_INFO,
48
- value: JSON.stringify(media),
49
- });
50
- return context.dispatch(setMedia({
51
- ...media,
52
- supposed: false,
53
- }));
54
- };
55
- const debouncedSetMediaInfo = debounce(300, setMediaInfo);
56
- window.addEventListener('orientationchange', debouncedSetMediaInfo);
57
- window.addEventListener('resize', debouncedSetMediaInfo);
58
- return setMediaInfo();
59
- };
60
- };
61
-
62
- const setUserAgent = createEvent('setUserAgent');
63
- const UserAgentStore = createReducer('userAgent', null).on(setUserAgent, (state, userAgent) => {
64
- return userAgent;
65
- });
66
-
67
- const providers = [
68
- { provide: COMBINE_REDUCERS, multi: true, useValue: [UserAgentStore, MediaStore] },
69
- ];
70
-
71
- function fromClientHints(media) {
72
- return !!media.synchronized;
73
- }
74
- function isSupposed(media) {
75
- return !!media.supposed;
76
- }
77
- function isRetina(media) {
78
- return !!media.retina;
79
- }
80
-
81
- function useMedia() {
82
- return useSelector('media', ({ media }) => media);
83
- }
84
- function useFromClientHints() {
85
- return fromClientHints(useMedia());
86
- }
87
- function useIsSupposed() {
88
- return isSupposed(useMedia());
89
- }
90
- function useIsRetina() {
91
- return isRetina(useMedia());
92
- }
93
-
94
- let ClientHintsChildAppModule = class ClientHintsChildAppModule {
95
- };
96
- ClientHintsChildAppModule = __decorate([
97
- Module({
98
- providers: [
99
- {
100
- provide: CHILD_APP_INTERNAL_ROOT_STATE_ALLOWED_STORE_TOKEN,
101
- multi: true,
102
- useValue: [MediaStore, UserAgentStore],
103
- },
104
- ],
105
- })
106
- ], ClientHintsChildAppModule);
5
+ import { USER_AGENT_TOKEN } from './tokens.browser.js';
6
+ export { PARSER_CLIENT_HINTS_ENABLED, USER_AGENT_TOKEN } from './tokens.browser.js';
7
+ import { matchMediaCommand } from './browser/matchMedia.browser.js';
8
+ import { providers } from './shared/providers.browser.js';
9
+ import { UserAgentStore } from './shared/stores/userAgent.browser.js';
10
+ export { UserAgentStore, setUserAgent } from './shared/stores/userAgent.browser.js';
11
+ export { fromClientHints, isRetina, isSupposed } from './shared/stores/mediaCheckers.browser.js';
12
+ export { useFromClientHints, useIsRetina, useIsSupposed, useMedia } from './shared/stores/mediaSelectors.browser.js';
13
+ export { MediaStore, setMedia } from './shared/stores/media.browser.js';
14
+ export { ClientHintsChildAppModule } from './child-app/module.browser.js';
107
15
 
108
16
  let ClientHintsModule = class ClientHintsModule {
109
17
  };
@@ -133,4 +41,4 @@ ClientHintsModule = __decorate([
133
41
  })
134
42
  ], ClientHintsModule);
135
43
 
136
- export { ClientHintsChildAppModule, ClientHintsModule, MediaStore, PARSER_CLIENT_HINTS_ENABLED, USER_AGENT_TOKEN, UserAgentStore, fromClientHints, isRetina, isSupposed, setMedia, setUserAgent, useFromClientHints, useIsRetina, useIsSupposed, useMedia };
44
+ export { ClientHintsModule };
@@ -0,0 +1,21 @@
1
+ import { __decorate } from 'tslib';
2
+ import { Module } from '@tramvai/core';
3
+ import { CHILD_APP_INTERNAL_ROOT_STATE_ALLOWED_STORE_TOKEN } from '@tramvai/tokens-child-app';
4
+ import { MediaStore } from '../shared/stores/media.browser.js';
5
+ import { UserAgentStore } from '../shared/stores/userAgent.browser.js';
6
+
7
+ let ClientHintsChildAppModule = class ClientHintsChildAppModule {
8
+ };
9
+ ClientHintsChildAppModule = __decorate([
10
+ Module({
11
+ providers: [
12
+ {
13
+ provide: CHILD_APP_INTERNAL_ROOT_STATE_ALLOWED_STORE_TOKEN,
14
+ multi: true,
15
+ useValue: [MediaStore, UserAgentStore],
16
+ },
17
+ ],
18
+ })
19
+ ], ClientHintsChildAppModule);
20
+
21
+ export { ClientHintsChildAppModule };
@@ -0,0 +1,21 @@
1
+ import { __decorate } from 'tslib';
2
+ import { Module } from '@tramvai/core';
3
+ import { CHILD_APP_INTERNAL_ROOT_STATE_ALLOWED_STORE_TOKEN } from '@tramvai/tokens-child-app';
4
+ import { MediaStore } from '../shared/stores/media.es.js';
5
+ import { UserAgentStore } from '../shared/stores/userAgent.es.js';
6
+
7
+ let ClientHintsChildAppModule = class ClientHintsChildAppModule {
8
+ };
9
+ ClientHintsChildAppModule = __decorate([
10
+ Module({
11
+ providers: [
12
+ {
13
+ provide: CHILD_APP_INTERNAL_ROOT_STATE_ALLOWED_STORE_TOKEN,
14
+ multi: true,
15
+ useValue: [MediaStore, UserAgentStore],
16
+ },
17
+ ],
18
+ })
19
+ ], ClientHintsChildAppModule);
20
+
21
+ export { ClientHintsChildAppModule };
@@ -0,0 +1,23 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var tslib = require('tslib');
6
+ var core = require('@tramvai/core');
7
+ var tokensChildApp = require('@tramvai/tokens-child-app');
8
+ var media = require('../shared/stores/media.js');
9
+ var userAgent = require('../shared/stores/userAgent.js');
10
+
11
+ exports.ClientHintsChildAppModule = class ClientHintsChildAppModule {
12
+ };
13
+ exports.ClientHintsChildAppModule = tslib.__decorate([
14
+ core.Module({
15
+ providers: [
16
+ {
17
+ provide: tokensChildApp.CHILD_APP_INTERNAL_ROOT_STATE_ALLOWED_STORE_TOKEN,
18
+ multi: true,
19
+ useValue: [media.MediaStore, userAgent.UserAgentStore],
20
+ },
21
+ ],
22
+ })
23
+ ], exports.ClientHintsChildAppModule);
@@ -0,0 +1,48 @@
1
+ import pathOr from '@tinkoff/utils/object/pathOr';
2
+ import { safeParseJSON } from '@tramvai/safe-strings';
3
+ import { COOKIE_NAME_MEDIA_INFO } from '../shared/constants.es.js';
4
+ import { setMedia } from '../shared/stores/media.es.js';
5
+ import { UserAgentStore } from '../shared/stores/userAgent.es.js';
6
+
7
+ const SUPPOSED_MEDIA = {
8
+ mobile: {
9
+ width: 300,
10
+ height: 500,
11
+ isTouch: true,
12
+ retina: false,
13
+ },
14
+ tablet: {
15
+ width: 600,
16
+ height: 800,
17
+ isTouch: true,
18
+ retina: false,
19
+ },
20
+ desktop: {
21
+ width: 1024,
22
+ height: 768,
23
+ isTouch: false,
24
+ retina: false,
25
+ },
26
+ };
27
+ const readMediaCommand = ({ context, cookieManager, }) => {
28
+ return function readMedia() {
29
+ var _a;
30
+ const mediaInfo = safeParseJSON((_a = cookieManager.get(COOKIE_NAME_MEDIA_INFO)) !== null && _a !== void 0 ? _a : '');
31
+ if (mediaInfo) {
32
+ return context.dispatch(setMedia({
33
+ ...mediaInfo,
34
+ supposed: false,
35
+ synchronized: true,
36
+ }));
37
+ }
38
+ const userAgent = context.getState(UserAgentStore);
39
+ const deviceType = pathOr(['device', 'type'], 'desktop', userAgent);
40
+ return context.dispatch(setMedia({
41
+ ...SUPPOSED_MEDIA[deviceType],
42
+ supposed: true,
43
+ synchronized: false,
44
+ }));
45
+ };
46
+ };
47
+
48
+ export { readMediaCommand };
@@ -0,0 +1,56 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var pathOr = require('@tinkoff/utils/object/pathOr');
6
+ var safeStrings = require('@tramvai/safe-strings');
7
+ var constants = require('../shared/constants.js');
8
+ var media = require('../shared/stores/media.js');
9
+ var userAgent = require('../shared/stores/userAgent.js');
10
+
11
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
12
+
13
+ var pathOr__default = /*#__PURE__*/_interopDefaultLegacy(pathOr);
14
+
15
+ const SUPPOSED_MEDIA = {
16
+ mobile: {
17
+ width: 300,
18
+ height: 500,
19
+ isTouch: true,
20
+ retina: false,
21
+ },
22
+ tablet: {
23
+ width: 600,
24
+ height: 800,
25
+ isTouch: true,
26
+ retina: false,
27
+ },
28
+ desktop: {
29
+ width: 1024,
30
+ height: 768,
31
+ isTouch: false,
32
+ retina: false,
33
+ },
34
+ };
35
+ const readMediaCommand = ({ context, cookieManager, }) => {
36
+ return function readMedia() {
37
+ var _a;
38
+ const mediaInfo = safeStrings.safeParseJSON((_a = cookieManager.get(constants.COOKIE_NAME_MEDIA_INFO)) !== null && _a !== void 0 ? _a : '');
39
+ if (mediaInfo) {
40
+ return context.dispatch(media.setMedia({
41
+ ...mediaInfo,
42
+ supposed: false,
43
+ synchronized: true,
44
+ }));
45
+ }
46
+ const userAgent$1 = context.getState(userAgent.UserAgentStore);
47
+ const deviceType = pathOr__default["default"](['device', 'type'], 'desktop', userAgent$1);
48
+ return context.dispatch(media.setMedia({
49
+ ...SUPPOSED_MEDIA[deviceType],
50
+ supposed: true,
51
+ synchronized: false,
52
+ }));
53
+ };
54
+ };
55
+
56
+ exports.readMediaCommand = readMediaCommand;
@@ -0,0 +1,65 @@
1
+ import { provide, Scope, commandLineListTokens } from '@tramvai/core';
2
+ import { CREATE_CACHE_TOKEN, STORE_TOKEN, RESPONSE_MANAGER_TOKEN, REQUEST_MANAGER_TOKEN } from '@tramvai/tokens-common';
3
+ import { parseClientHints, parseUserAgentHeader } from '@tinkoff/user-agent';
4
+ import { USER_AGENT_TOKEN, PARSER_CLIENT_HINTS_ENABLED } from '../tokens.es.js';
5
+ import { setUserAgent } from '../shared/stores/userAgent.es.js';
6
+
7
+ const userAgentProviders = [
8
+ provide({
9
+ provide: 'userAgentLruCache',
10
+ scope: Scope.SINGLETON,
11
+ useFactory: ({ createCache }) => {
12
+ return createCache('memory', { max: 50 });
13
+ },
14
+ deps: {
15
+ createCache: CREATE_CACHE_TOKEN,
16
+ },
17
+ }),
18
+ provide({
19
+ provide: commandLineListTokens.customerStart,
20
+ multi: true,
21
+ useFactory: ({ store, userAgent }) => {
22
+ return function initUserAgent() {
23
+ return store.dispatch(setUserAgent(userAgent));
24
+ };
25
+ },
26
+ deps: {
27
+ userAgent: USER_AGENT_TOKEN,
28
+ store: STORE_TOKEN,
29
+ },
30
+ }),
31
+ provide({
32
+ provide: commandLineListTokens.customerStart,
33
+ multi: true,
34
+ useFactory: ({ responseManager }) => {
35
+ return function setClientHintsHeaders() {
36
+ responseManager.setHeader('Accept-CH', 'Sec-CH-UA-Platform-Version, Sec-CH-UA-Arch, Sec-CH-UA-Model');
37
+ };
38
+ },
39
+ deps: {
40
+ responseManager: RESPONSE_MANAGER_TOKEN,
41
+ },
42
+ }),
43
+ provide({
44
+ provide: USER_AGENT_TOKEN,
45
+ useFactory: ({ requestManager, cache, parserClientHintsEnabled }) => {
46
+ if (parserClientHintsEnabled && requestManager.getHeader('sec-ch-ua')) {
47
+ return parseClientHints(requestManager.getHeaders());
48
+ }
49
+ const userAgentHeader = requestManager.getHeader('user-agent');
50
+ if (cache.has(userAgentHeader)) {
51
+ return cache.get(userAgentHeader);
52
+ }
53
+ const result = parseUserAgentHeader(userAgentHeader);
54
+ cache.set(userAgentHeader, result);
55
+ return result;
56
+ },
57
+ deps: {
58
+ requestManager: REQUEST_MANAGER_TOKEN,
59
+ parserClientHintsEnabled: PARSER_CLIENT_HINTS_ENABLED,
60
+ cache: 'userAgentLruCache',
61
+ },
62
+ }),
63
+ ];
64
+
65
+ export { userAgentProviders };
@@ -0,0 +1,69 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var core = require('@tramvai/core');
6
+ var tokensCommon = require('@tramvai/tokens-common');
7
+ var userAgent$1 = require('@tinkoff/user-agent');
8
+ var tokens = require('../tokens.js');
9
+ var userAgent = require('../shared/stores/userAgent.js');
10
+
11
+ const userAgentProviders = [
12
+ core.provide({
13
+ provide: 'userAgentLruCache',
14
+ scope: core.Scope.SINGLETON,
15
+ useFactory: ({ createCache }) => {
16
+ return createCache('memory', { max: 50 });
17
+ },
18
+ deps: {
19
+ createCache: tokensCommon.CREATE_CACHE_TOKEN,
20
+ },
21
+ }),
22
+ core.provide({
23
+ provide: core.commandLineListTokens.customerStart,
24
+ multi: true,
25
+ useFactory: ({ store, userAgent: userAgent$1 }) => {
26
+ return function initUserAgent() {
27
+ return store.dispatch(userAgent.setUserAgent(userAgent$1));
28
+ };
29
+ },
30
+ deps: {
31
+ userAgent: tokens.USER_AGENT_TOKEN,
32
+ store: tokensCommon.STORE_TOKEN,
33
+ },
34
+ }),
35
+ core.provide({
36
+ provide: core.commandLineListTokens.customerStart,
37
+ multi: true,
38
+ useFactory: ({ responseManager }) => {
39
+ return function setClientHintsHeaders() {
40
+ responseManager.setHeader('Accept-CH', 'Sec-CH-UA-Platform-Version, Sec-CH-UA-Arch, Sec-CH-UA-Model');
41
+ };
42
+ },
43
+ deps: {
44
+ responseManager: tokensCommon.RESPONSE_MANAGER_TOKEN,
45
+ },
46
+ }),
47
+ core.provide({
48
+ provide: tokens.USER_AGENT_TOKEN,
49
+ useFactory: ({ requestManager, cache, parserClientHintsEnabled }) => {
50
+ if (parserClientHintsEnabled && requestManager.getHeader('sec-ch-ua')) {
51
+ return userAgent$1.parseClientHints(requestManager.getHeaders());
52
+ }
53
+ const userAgentHeader = requestManager.getHeader('user-agent');
54
+ if (cache.has(userAgentHeader)) {
55
+ return cache.get(userAgentHeader);
56
+ }
57
+ const result = userAgent$1.parseUserAgentHeader(userAgentHeader);
58
+ cache.set(userAgentHeader, result);
59
+ return result;
60
+ },
61
+ deps: {
62
+ requestManager: tokensCommon.REQUEST_MANAGER_TOKEN,
63
+ parserClientHintsEnabled: tokens.PARSER_CLIENT_HINTS_ENABLED,
64
+ cache: 'userAgentLruCache',
65
+ },
66
+ }),
67
+ ];
68
+
69
+ exports.userAgentProviders = userAgentProviders;
package/lib/server.es.js CHANGED
@@ -1,178 +1,17 @@
1
1
  import { __decorate } from 'tslib';
2
- import { provide, Scope, commandLineListTokens, Module } from '@tramvai/core';
3
- import { COMBINE_REDUCERS, CREATE_CACHE_TOKEN, STORE_TOKEN, RESPONSE_MANAGER_TOKEN, REQUEST_MANAGER_TOKEN, CONTEXT_TOKEN } from '@tramvai/tokens-common';
2
+ import { Module, provide, commandLineListTokens } from '@tramvai/core';
3
+ import { CONTEXT_TOKEN } from '@tramvai/tokens-common';
4
4
  import { COOKIE_MANAGER_TOKEN } from '@tramvai/tokens-cookie';
5
- import pathOr from '@tinkoff/utils/object/pathOr';
6
- import { safeParseJSON } from '@tramvai/safe-strings';
7
- import { createEvent, createReducer, useSelector } from '@tramvai/state';
8
- import { parseClientHints, parseUserAgentHeader } from '@tinkoff/user-agent';
9
- import { createToken } from '@tinkoff/dippy';
10
- import { CHILD_APP_INTERNAL_ROOT_STATE_ALLOWED_STORE_TOKEN } from '@tramvai/tokens-child-app';
11
-
12
- const COOKIE_NAME_MEDIA_INFO = 'mediaInfo';
13
-
14
- const setMedia = createEvent('setMedia');
15
- const initialState = {
16
- height: 0,
17
- width: 0,
18
- isTouch: false,
19
- retina: false,
20
- synchronized: false,
21
- };
22
- const MediaStore = createReducer('media', initialState).on(setMedia, (state, media) => {
23
- return {
24
- ...state,
25
- ...media,
26
- };
27
- });
28
-
29
- const setUserAgent = createEvent('setUserAgent');
30
- const UserAgentStore = createReducer('userAgent', null).on(setUserAgent, (state, userAgent) => {
31
- return userAgent;
32
- });
33
-
34
- const SUPPOSED_MEDIA = {
35
- mobile: {
36
- width: 300,
37
- height: 500,
38
- isTouch: true,
39
- retina: false,
40
- },
41
- tablet: {
42
- width: 600,
43
- height: 800,
44
- isTouch: true,
45
- retina: false,
46
- },
47
- desktop: {
48
- width: 1024,
49
- height: 768,
50
- isTouch: false,
51
- retina: false,
52
- },
53
- };
54
- const readMediaCommand = ({ context, cookieManager, }) => {
55
- return function readMedia() {
56
- var _a;
57
- const mediaInfo = safeParseJSON((_a = cookieManager.get(COOKIE_NAME_MEDIA_INFO)) !== null && _a !== void 0 ? _a : '');
58
- if (mediaInfo) {
59
- return context.dispatch(setMedia({
60
- ...mediaInfo,
61
- supposed: false,
62
- synchronized: true,
63
- }));
64
- }
65
- const userAgent = context.getState(UserAgentStore);
66
- const deviceType = pathOr(['device', 'type'], 'desktop', userAgent);
67
- return context.dispatch(setMedia({
68
- ...SUPPOSED_MEDIA[deviceType],
69
- supposed: true,
70
- synchronized: false,
71
- }));
72
- };
73
- };
74
-
75
- const providers = [
76
- { provide: COMBINE_REDUCERS, multi: true, useValue: [UserAgentStore, MediaStore] },
77
- ];
78
-
79
- const USER_AGENT_TOKEN = createToken('userAgent');
80
- const PARSER_CLIENT_HINTS_ENABLED = createToken('client-hints parserClientHints enabled');
81
-
82
- const userAgentProviders = [
83
- provide({
84
- provide: 'userAgentLruCache',
85
- scope: Scope.SINGLETON,
86
- useFactory: ({ createCache }) => {
87
- return createCache('memory', { max: 50 });
88
- },
89
- deps: {
90
- createCache: CREATE_CACHE_TOKEN,
91
- },
92
- }),
93
- provide({
94
- provide: commandLineListTokens.customerStart,
95
- multi: true,
96
- useFactory: ({ store, userAgent }) => {
97
- return function initUserAgent() {
98
- return store.dispatch(setUserAgent(userAgent));
99
- };
100
- },
101
- deps: {
102
- userAgent: USER_AGENT_TOKEN,
103
- store: STORE_TOKEN,
104
- },
105
- }),
106
- provide({
107
- provide: commandLineListTokens.customerStart,
108
- multi: true,
109
- useFactory: ({ responseManager }) => {
110
- return function setClientHintsHeaders() {
111
- responseManager.setHeader('Accept-CH', 'Sec-CH-UA-Platform-Version, Sec-CH-UA-Arch, Sec-CH-UA-Model');
112
- };
113
- },
114
- deps: {
115
- responseManager: RESPONSE_MANAGER_TOKEN,
116
- },
117
- }),
118
- provide({
119
- provide: USER_AGENT_TOKEN,
120
- useFactory: ({ requestManager, cache, parserClientHintsEnabled }) => {
121
- if (parserClientHintsEnabled && requestManager.getHeader('sec-ch-ua')) {
122
- return parseClientHints(requestManager.getHeaders());
123
- }
124
- const userAgentHeader = requestManager.getHeader('user-agent');
125
- if (cache.has(userAgentHeader)) {
126
- return cache.get(userAgentHeader);
127
- }
128
- const result = parseUserAgentHeader(userAgentHeader);
129
- cache.set(userAgentHeader, result);
130
- return result;
131
- },
132
- deps: {
133
- requestManager: REQUEST_MANAGER_TOKEN,
134
- parserClientHintsEnabled: PARSER_CLIENT_HINTS_ENABLED,
135
- cache: 'userAgentLruCache',
136
- },
137
- }),
138
- ];
139
-
140
- function fromClientHints(media) {
141
- return !!media.synchronized;
142
- }
143
- function isSupposed(media) {
144
- return !!media.supposed;
145
- }
146
- function isRetina(media) {
147
- return !!media.retina;
148
- }
149
-
150
- function useMedia() {
151
- return useSelector('media', ({ media }) => media);
152
- }
153
- function useFromClientHints() {
154
- return fromClientHints(useMedia());
155
- }
156
- function useIsSupposed() {
157
- return isSupposed(useMedia());
158
- }
159
- function useIsRetina() {
160
- return isRetina(useMedia());
161
- }
162
-
163
- let ClientHintsChildAppModule = class ClientHintsChildAppModule {
164
- };
165
- ClientHintsChildAppModule = __decorate([
166
- Module({
167
- providers: [
168
- {
169
- provide: CHILD_APP_INTERNAL_ROOT_STATE_ALLOWED_STORE_TOKEN,
170
- multi: true,
171
- useValue: [MediaStore, UserAgentStore],
172
- },
173
- ],
174
- })
175
- ], ClientHintsChildAppModule);
5
+ import { readMediaCommand } from './server/readMedia.es.js';
6
+ import { providers } from './shared/providers.es.js';
7
+ import { userAgentProviders } from './server/userAgent.es.js';
8
+ import { PARSER_CLIENT_HINTS_ENABLED } from './tokens.es.js';
9
+ export { PARSER_CLIENT_HINTS_ENABLED, USER_AGENT_TOKEN } from './tokens.es.js';
10
+ export { fromClientHints, isRetina, isSupposed } from './shared/stores/mediaCheckers.es.js';
11
+ export { useFromClientHints, useIsRetina, useIsSupposed, useMedia } from './shared/stores/mediaSelectors.es.js';
12
+ export { MediaStore, setMedia } from './shared/stores/media.es.js';
13
+ export { UserAgentStore, setUserAgent } from './shared/stores/userAgent.es.js';
14
+ export { ClientHintsChildAppModule } from './child-app/module.es.js';
176
15
 
177
16
  let ClientHintsModule = class ClientHintsModule {
178
17
  };
@@ -198,4 +37,4 @@ ClientHintsModule = __decorate([
198
37
  })
199
38
  ], ClientHintsModule);
200
39
 
201
- export { ClientHintsChildAppModule, ClientHintsModule, MediaStore, PARSER_CLIENT_HINTS_ENABLED, USER_AGENT_TOKEN, UserAgentStore, fromClientHints, isRetina, isSupposed, setMedia, setUserAgent, useFromClientHints, useIsRetina, useIsSupposed, useMedia };
40
+ export { ClientHintsModule };
package/lib/server.js CHANGED
@@ -6,216 +6,54 @@ var tslib = require('tslib');
6
6
  var core = require('@tramvai/core');
7
7
  var tokensCommon = require('@tramvai/tokens-common');
8
8
  var tokensCookie = require('@tramvai/tokens-cookie');
9
- var pathOr = require('@tinkoff/utils/object/pathOr');
10
- var safeStrings = require('@tramvai/safe-strings');
11
- var state = require('@tramvai/state');
12
- var userAgent = require('@tinkoff/user-agent');
13
- var dippy = require('@tinkoff/dippy');
14
- var tokensChildApp = require('@tramvai/tokens-child-app');
15
-
16
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
17
-
18
- var pathOr__default = /*#__PURE__*/_interopDefaultLegacy(pathOr);
19
-
20
- const COOKIE_NAME_MEDIA_INFO = 'mediaInfo';
21
-
22
- const setMedia = state.createEvent('setMedia');
23
- const initialState = {
24
- height: 0,
25
- width: 0,
26
- isTouch: false,
27
- retina: false,
28
- synchronized: false,
29
- };
30
- const MediaStore = state.createReducer('media', initialState).on(setMedia, (state, media) => {
31
- return {
32
- ...state,
33
- ...media,
34
- };
35
- });
36
-
37
- const setUserAgent = state.createEvent('setUserAgent');
38
- const UserAgentStore = state.createReducer('userAgent', null).on(setUserAgent, (state, userAgent) => {
39
- return userAgent;
40
- });
41
-
42
- const SUPPOSED_MEDIA = {
43
- mobile: {
44
- width: 300,
45
- height: 500,
46
- isTouch: true,
47
- retina: false,
48
- },
49
- tablet: {
50
- width: 600,
51
- height: 800,
52
- isTouch: true,
53
- retina: false,
54
- },
55
- desktop: {
56
- width: 1024,
57
- height: 768,
58
- isTouch: false,
59
- retina: false,
60
- },
61
- };
62
- const readMediaCommand = ({ context, cookieManager, }) => {
63
- return function readMedia() {
64
- var _a;
65
- const mediaInfo = safeStrings.safeParseJSON((_a = cookieManager.get(COOKIE_NAME_MEDIA_INFO)) !== null && _a !== void 0 ? _a : '');
66
- if (mediaInfo) {
67
- return context.dispatch(setMedia({
68
- ...mediaInfo,
69
- supposed: false,
70
- synchronized: true,
71
- }));
72
- }
73
- const userAgent = context.getState(UserAgentStore);
74
- const deviceType = pathOr__default["default"](['device', 'type'], 'desktop', userAgent);
75
- return context.dispatch(setMedia({
76
- ...SUPPOSED_MEDIA[deviceType],
77
- supposed: true,
78
- synchronized: false,
79
- }));
80
- };
81
- };
82
-
83
- const providers = [
84
- { provide: tokensCommon.COMBINE_REDUCERS, multi: true, useValue: [UserAgentStore, MediaStore] },
85
- ];
86
-
87
- const USER_AGENT_TOKEN = dippy.createToken('userAgent');
88
- const PARSER_CLIENT_HINTS_ENABLED = dippy.createToken('client-hints parserClientHints enabled');
89
-
90
- const userAgentProviders = [
91
- core.provide({
92
- provide: 'userAgentLruCache',
93
- scope: core.Scope.SINGLETON,
94
- useFactory: ({ createCache }) => {
95
- return createCache('memory', { max: 50 });
96
- },
97
- deps: {
98
- createCache: tokensCommon.CREATE_CACHE_TOKEN,
99
- },
100
- }),
101
- core.provide({
102
- provide: core.commandLineListTokens.customerStart,
103
- multi: true,
104
- useFactory: ({ store, userAgent }) => {
105
- return function initUserAgent() {
106
- return store.dispatch(setUserAgent(userAgent));
107
- };
108
- },
109
- deps: {
110
- userAgent: USER_AGENT_TOKEN,
111
- store: tokensCommon.STORE_TOKEN,
112
- },
113
- }),
114
- core.provide({
115
- provide: core.commandLineListTokens.customerStart,
116
- multi: true,
117
- useFactory: ({ responseManager }) => {
118
- return function setClientHintsHeaders() {
119
- responseManager.setHeader('Accept-CH', 'Sec-CH-UA-Platform-Version, Sec-CH-UA-Arch, Sec-CH-UA-Model');
120
- };
121
- },
122
- deps: {
123
- responseManager: tokensCommon.RESPONSE_MANAGER_TOKEN,
124
- },
125
- }),
126
- core.provide({
127
- provide: USER_AGENT_TOKEN,
128
- useFactory: ({ requestManager, cache, parserClientHintsEnabled }) => {
129
- if (parserClientHintsEnabled && requestManager.getHeader('sec-ch-ua')) {
130
- return userAgent.parseClientHints(requestManager.getHeaders());
131
- }
132
- const userAgentHeader = requestManager.getHeader('user-agent');
133
- if (cache.has(userAgentHeader)) {
134
- return cache.get(userAgentHeader);
135
- }
136
- const result = userAgent.parseUserAgentHeader(userAgentHeader);
137
- cache.set(userAgentHeader, result);
138
- return result;
139
- },
140
- deps: {
141
- requestManager: tokensCommon.REQUEST_MANAGER_TOKEN,
142
- parserClientHintsEnabled: PARSER_CLIENT_HINTS_ENABLED,
143
- cache: 'userAgentLruCache',
144
- },
145
- }),
146
- ];
147
-
148
- function fromClientHints(media) {
149
- return !!media.synchronized;
150
- }
151
- function isSupposed(media) {
152
- return !!media.supposed;
153
- }
154
- function isRetina(media) {
155
- return !!media.retina;
156
- }
157
-
158
- function useMedia() {
159
- return state.useSelector('media', ({ media }) => media);
160
- }
161
- function useFromClientHints() {
162
- return fromClientHints(useMedia());
163
- }
164
- function useIsSupposed() {
165
- return isSupposed(useMedia());
166
- }
167
- function useIsRetina() {
168
- return isRetina(useMedia());
169
- }
170
-
171
- exports.ClientHintsChildAppModule = class ClientHintsChildAppModule {
172
- };
173
- exports.ClientHintsChildAppModule = tslib.__decorate([
174
- core.Module({
175
- providers: [
176
- {
177
- provide: tokensChildApp.CHILD_APP_INTERNAL_ROOT_STATE_ALLOWED_STORE_TOKEN,
178
- multi: true,
179
- useValue: [MediaStore, UserAgentStore],
180
- },
181
- ],
182
- })
183
- ], exports.ClientHintsChildAppModule);
9
+ var readMedia = require('./server/readMedia.js');
10
+ var providers = require('./shared/providers.js');
11
+ var userAgent$1 = require('./server/userAgent.js');
12
+ var tokens = require('./tokens.js');
13
+ var mediaCheckers = require('./shared/stores/mediaCheckers.js');
14
+ var mediaSelectors = require('./shared/stores/mediaSelectors.js');
15
+ var media = require('./shared/stores/media.js');
16
+ var userAgent = require('./shared/stores/userAgent.js');
17
+ var module$1 = require('./child-app/module.js');
184
18
 
185
19
  exports.ClientHintsModule = class ClientHintsModule {
186
20
  };
187
21
  exports.ClientHintsModule = tslib.__decorate([
188
22
  core.Module({
189
23
  providers: [
190
- ...providers,
191
- ...userAgentProviders,
24
+ ...providers.providers,
25
+ ...userAgent$1.userAgentProviders,
192
26
  core.provide({
193
27
  provide: core.commandLineListTokens.resolveUserDeps,
194
28
  multi: true,
195
- useFactory: readMediaCommand,
29
+ useFactory: readMedia.readMediaCommand,
196
30
  deps: {
197
31
  context: tokensCommon.CONTEXT_TOKEN,
198
32
  cookieManager: tokensCookie.COOKIE_MANAGER_TOKEN,
199
33
  },
200
34
  }),
201
35
  core.provide({
202
- provide: PARSER_CLIENT_HINTS_ENABLED,
36
+ provide: tokens.PARSER_CLIENT_HINTS_ENABLED,
203
37
  useValue: true,
204
38
  }),
205
39
  ],
206
40
  })
207
41
  ], exports.ClientHintsModule);
208
42
 
209
- exports.MediaStore = MediaStore;
210
- exports.PARSER_CLIENT_HINTS_ENABLED = PARSER_CLIENT_HINTS_ENABLED;
211
- exports.USER_AGENT_TOKEN = USER_AGENT_TOKEN;
212
- exports.UserAgentStore = UserAgentStore;
213
- exports.fromClientHints = fromClientHints;
214
- exports.isRetina = isRetina;
215
- exports.isSupposed = isSupposed;
216
- exports.setMedia = setMedia;
217
- exports.setUserAgent = setUserAgent;
218
- exports.useFromClientHints = useFromClientHints;
219
- exports.useIsRetina = useIsRetina;
220
- exports.useIsSupposed = useIsSupposed;
221
- exports.useMedia = useMedia;
43
+ exports.PARSER_CLIENT_HINTS_ENABLED = tokens.PARSER_CLIENT_HINTS_ENABLED;
44
+ exports.USER_AGENT_TOKEN = tokens.USER_AGENT_TOKEN;
45
+ exports.fromClientHints = mediaCheckers.fromClientHints;
46
+ exports.isRetina = mediaCheckers.isRetina;
47
+ exports.isSupposed = mediaCheckers.isSupposed;
48
+ exports.useFromClientHints = mediaSelectors.useFromClientHints;
49
+ exports.useIsRetina = mediaSelectors.useIsRetina;
50
+ exports.useIsSupposed = mediaSelectors.useIsSupposed;
51
+ exports.useMedia = mediaSelectors.useMedia;
52
+ exports.MediaStore = media.MediaStore;
53
+ exports.setMedia = media.setMedia;
54
+ exports.UserAgentStore = userAgent.UserAgentStore;
55
+ exports.setUserAgent = userAgent.setUserAgent;
56
+ Object.defineProperty(exports, 'ClientHintsChildAppModule', {
57
+ enumerable: true,
58
+ get: function () { return module$1.ClientHintsChildAppModule; }
59
+ });
@@ -0,0 +1,3 @@
1
+ const COOKIE_NAME_MEDIA_INFO = 'mediaInfo';
2
+
3
+ export { COOKIE_NAME_MEDIA_INFO };
@@ -0,0 +1,3 @@
1
+ const COOKIE_NAME_MEDIA_INFO = 'mediaInfo';
2
+
3
+ export { COOKIE_NAME_MEDIA_INFO };
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const COOKIE_NAME_MEDIA_INFO = 'mediaInfo';
6
+
7
+ exports.COOKIE_NAME_MEDIA_INFO = COOKIE_NAME_MEDIA_INFO;
@@ -0,0 +1,5 @@
1
+ const mediaBreakpoints = {
2
+ retina: '(-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi)',
3
+ };
4
+
5
+ export { mediaBreakpoints };
@@ -0,0 +1,9 @@
1
+ import { COMBINE_REDUCERS } from '@tramvai/tokens-common';
2
+ import { UserAgentStore } from './stores/userAgent.browser.js';
3
+ import { MediaStore } from './stores/media.browser.js';
4
+
5
+ const providers = [
6
+ { provide: COMBINE_REDUCERS, multi: true, useValue: [UserAgentStore, MediaStore] },
7
+ ];
8
+
9
+ export { providers };
@@ -0,0 +1,9 @@
1
+ import { COMBINE_REDUCERS } from '@tramvai/tokens-common';
2
+ import { UserAgentStore } from './stores/userAgent.es.js';
3
+ import { MediaStore } from './stores/media.es.js';
4
+
5
+ const providers = [
6
+ { provide: COMBINE_REDUCERS, multi: true, useValue: [UserAgentStore, MediaStore] },
7
+ ];
8
+
9
+ export { providers };
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var tokensCommon = require('@tramvai/tokens-common');
6
+ var userAgent = require('./stores/userAgent.js');
7
+ var media = require('./stores/media.js');
8
+
9
+ const providers = [
10
+ { provide: tokensCommon.COMBINE_REDUCERS, multi: true, useValue: [userAgent.UserAgentStore, media.MediaStore] },
11
+ ];
12
+
13
+ exports.providers = providers;
@@ -0,0 +1,18 @@
1
+ import { createEvent, createReducer } from '@tramvai/state';
2
+
3
+ const setMedia = createEvent('setMedia');
4
+ const initialState = {
5
+ height: 0,
6
+ width: 0,
7
+ isTouch: false,
8
+ retina: false,
9
+ synchronized: false,
10
+ };
11
+ const MediaStore = createReducer('media', initialState).on(setMedia, (state, media) => {
12
+ return {
13
+ ...state,
14
+ ...media,
15
+ };
16
+ });
17
+
18
+ export { MediaStore, setMedia };
@@ -0,0 +1,18 @@
1
+ import { createEvent, createReducer } from '@tramvai/state';
2
+
3
+ const setMedia = createEvent('setMedia');
4
+ const initialState = {
5
+ height: 0,
6
+ width: 0,
7
+ isTouch: false,
8
+ retina: false,
9
+ synchronized: false,
10
+ };
11
+ const MediaStore = createReducer('media', initialState).on(setMedia, (state, media) => {
12
+ return {
13
+ ...state,
14
+ ...media,
15
+ };
16
+ });
17
+
18
+ export { MediaStore, setMedia };
@@ -0,0 +1,23 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var state = require('@tramvai/state');
6
+
7
+ const setMedia = state.createEvent('setMedia');
8
+ const initialState = {
9
+ height: 0,
10
+ width: 0,
11
+ isTouch: false,
12
+ retina: false,
13
+ synchronized: false,
14
+ };
15
+ const MediaStore = state.createReducer('media', initialState).on(setMedia, (state, media) => {
16
+ return {
17
+ ...state,
18
+ ...media,
19
+ };
20
+ });
21
+
22
+ exports.MediaStore = MediaStore;
23
+ exports.setMedia = setMedia;
@@ -0,0 +1,11 @@
1
+ function fromClientHints(media) {
2
+ return !!media.synchronized;
3
+ }
4
+ function isSupposed(media) {
5
+ return !!media.supposed;
6
+ }
7
+ function isRetina(media) {
8
+ return !!media.retina;
9
+ }
10
+
11
+ export { fromClientHints, isRetina, isSupposed };
@@ -0,0 +1,11 @@
1
+ function fromClientHints(media) {
2
+ return !!media.synchronized;
3
+ }
4
+ function isSupposed(media) {
5
+ return !!media.supposed;
6
+ }
7
+ function isRetina(media) {
8
+ return !!media.retina;
9
+ }
10
+
11
+ export { fromClientHints, isRetina, isSupposed };
@@ -0,0 +1,17 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ function fromClientHints(media) {
6
+ return !!media.synchronized;
7
+ }
8
+ function isSupposed(media) {
9
+ return !!media.supposed;
10
+ }
11
+ function isRetina(media) {
12
+ return !!media.retina;
13
+ }
14
+
15
+ exports.fromClientHints = fromClientHints;
16
+ exports.isRetina = isRetina;
17
+ exports.isSupposed = isSupposed;
@@ -0,0 +1,17 @@
1
+ import { useSelector } from '@tramvai/state';
2
+ import { fromClientHints, isSupposed, isRetina } from './mediaCheckers.browser.js';
3
+
4
+ function useMedia() {
5
+ return useSelector('media', ({ media }) => media);
6
+ }
7
+ function useFromClientHints() {
8
+ return fromClientHints(useMedia());
9
+ }
10
+ function useIsSupposed() {
11
+ return isSupposed(useMedia());
12
+ }
13
+ function useIsRetina() {
14
+ return isRetina(useMedia());
15
+ }
16
+
17
+ export { useFromClientHints, useIsRetina, useIsSupposed, useMedia };
@@ -0,0 +1,17 @@
1
+ import { useSelector } from '@tramvai/state';
2
+ import { fromClientHints, isSupposed, isRetina } from './mediaCheckers.es.js';
3
+
4
+ function useMedia() {
5
+ return useSelector('media', ({ media }) => media);
6
+ }
7
+ function useFromClientHints() {
8
+ return fromClientHints(useMedia());
9
+ }
10
+ function useIsSupposed() {
11
+ return isSupposed(useMedia());
12
+ }
13
+ function useIsRetina() {
14
+ return isRetina(useMedia());
15
+ }
16
+
17
+ export { useFromClientHints, useIsRetina, useIsSupposed, useMedia };
@@ -0,0 +1,24 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var state = require('@tramvai/state');
6
+ var mediaCheckers = require('./mediaCheckers.js');
7
+
8
+ function useMedia() {
9
+ return state.useSelector('media', ({ media }) => media);
10
+ }
11
+ function useFromClientHints() {
12
+ return mediaCheckers.fromClientHints(useMedia());
13
+ }
14
+ function useIsSupposed() {
15
+ return mediaCheckers.isSupposed(useMedia());
16
+ }
17
+ function useIsRetina() {
18
+ return mediaCheckers.isRetina(useMedia());
19
+ }
20
+
21
+ exports.useFromClientHints = useFromClientHints;
22
+ exports.useIsRetina = useIsRetina;
23
+ exports.useIsSupposed = useIsSupposed;
24
+ exports.useMedia = useMedia;
@@ -0,0 +1,8 @@
1
+ import { createEvent, createReducer } from '@tramvai/state';
2
+
3
+ const setUserAgent = createEvent('setUserAgent');
4
+ const UserAgentStore = createReducer('userAgent', null).on(setUserAgent, (state, userAgent) => {
5
+ return userAgent;
6
+ });
7
+
8
+ export { UserAgentStore, setUserAgent };
@@ -0,0 +1,8 @@
1
+ import { createEvent, createReducer } from '@tramvai/state';
2
+
3
+ const setUserAgent = createEvent('setUserAgent');
4
+ const UserAgentStore = createReducer('userAgent', null).on(setUserAgent, (state, userAgent) => {
5
+ return userAgent;
6
+ });
7
+
8
+ export { UserAgentStore, setUserAgent };
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var state = require('@tramvai/state');
6
+
7
+ const setUserAgent = state.createEvent('setUserAgent');
8
+ const UserAgentStore = state.createReducer('userAgent', null).on(setUserAgent, (state, userAgent) => {
9
+ return userAgent;
10
+ });
11
+
12
+ exports.UserAgentStore = UserAgentStore;
13
+ exports.setUserAgent = setUserAgent;
@@ -0,0 +1,6 @@
1
+ import { createToken } from '@tinkoff/dippy';
2
+
3
+ const USER_AGENT_TOKEN = createToken('userAgent');
4
+ const PARSER_CLIENT_HINTS_ENABLED = createToken('client-hints parserClientHints enabled');
5
+
6
+ export { PARSER_CLIENT_HINTS_ENABLED, USER_AGENT_TOKEN };
@@ -0,0 +1,6 @@
1
+ import { createToken } from '@tinkoff/dippy';
2
+
3
+ const USER_AGENT_TOKEN = createToken('userAgent');
4
+ const PARSER_CLIENT_HINTS_ENABLED = createToken('client-hints parserClientHints enabled');
5
+
6
+ export { PARSER_CLIENT_HINTS_ENABLED, USER_AGENT_TOKEN };
package/lib/tokens.js ADDED
@@ -0,0 +1,11 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var dippy = require('@tinkoff/dippy');
6
+
7
+ const USER_AGENT_TOKEN = dippy.createToken('userAgent');
8
+ const PARSER_CLIENT_HINTS_ENABLED = dippy.createToken('client-hints parserClientHints enabled');
9
+
10
+ exports.PARSER_CLIENT_HINTS_ENABLED = PARSER_CLIENT_HINTS_ENABLED;
11
+ exports.USER_AGENT_TOKEN = USER_AGENT_TOKEN;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tramvai/module-client-hints",
3
- "version": "2.70.1",
3
+ "version": "2.72.3",
4
4
  "description": "",
5
5
  "main": "lib/server.js",
6
6
  "module": "lib/server.es.js",
@@ -15,22 +15,21 @@
15
15
  "url": "git@github.com:Tinkoff/tramvai.git"
16
16
  },
17
17
  "scripts": {
18
- "build": "tramvai-build --for-publish",
19
- "watch": "tsc -w",
20
- "build-for-publish": "true"
18
+ "build": "tramvai-build --forPublish --preserveModules",
19
+ "watch": "tsc -w"
21
20
  },
22
21
  "dependencies": {
23
- "@tinkoff/user-agent": "0.4.176",
22
+ "@tinkoff/user-agent": "0.4.181",
24
23
  "@tinkoff/utils": "^2.1.2",
25
- "@tramvai/safe-strings": "0.5.6",
26
- "@tramvai/tokens-common": "2.70.1",
27
- "@tramvai/tokens-cookie": "2.70.1",
28
- "@tramvai/tokens-child-app": "2.70.1"
24
+ "@tramvai/safe-strings": "0.5.7",
25
+ "@tramvai/tokens-common": "2.72.3",
26
+ "@tramvai/tokens-cookie": "2.72.3",
27
+ "@tramvai/tokens-child-app": "2.72.3"
29
28
  },
30
29
  "peerDependencies": {
31
- "@tramvai/core": "2.70.1",
32
- "@tramvai/state": "2.70.1",
33
- "@tinkoff/dippy": "0.8.12",
30
+ "@tramvai/core": "2.72.3",
31
+ "@tramvai/state": "2.72.3",
32
+ "@tinkoff/dippy": "0.8.13",
34
33
  "react": ">=16.14.0",
35
34
  "react-dom": ">=16.14.0",
36
35
  "tslib": "^2.4.0"