Skip to content

Commit 7c2650c

Browse files
DaniilDaniil Yankouski
authored andcommitted
Implement Auth module for example
1 parent 4e12560 commit 7c2650c

File tree

86 files changed

+1018
-1780
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

86 files changed

+1018
-1780
lines changed

configs/.eslintrc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@
102102
"prettier/prettier": "error",
103103
"@typescript-eslint/no-explicit-any": "off",
104104
"@typescript-eslint/no-namespace": "off",
105-
"@typescript-eslint/member-delimiter-style": "error"
105+
"@typescript-eslint/member-delimiter-style": "error",
106+
"@typescript-eslint/array-type": "error"
106107
}
107108
}

configs/jest/config.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import type { Config } from '@jest/types';
2-
import globalOptions from '../vite/define';
2+
import {BuildDefine} from '../vite/define';
33

44
type JestConfig = Partial<
55
Omit<Config.ProjectConfig, 'moduleNameMapper' | 'transform'> & Config.GlobalConfig
@@ -32,7 +32,7 @@ const config: JestConfig = {
3232
'ts-jest': {
3333
tsconfig: '<rootDir>/tsconfig.json',
3434
},
35-
...globalOptions,
35+
...BuildDefine,
3636
},
3737
moduleDirectories: ['<rootDir>/node_modules', '<rootDir>/node_modules/@types', '<rootDir>/src'],
3838
moduleNameMapper: {

configs/vite/config.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,30 @@
11
import { defineConfig } from 'vite';
22
import build from './build';
3-
import defineOptions from './define';
3+
import {BuildDefine, DevDefine } from './define';
44
import { BuildPlugins, DevPlugins } from './plugins';
55
import server from './server';
66
import styles from './styles';
77

88
const defaultConfig = {
99
css: styles,
10-
define: defineOptions,
1110
};
1211

1312
// https://vitejs.dev/config/
14-
export default ({ command, mode }) => {
13+
export default ({ command }) => {
1514
switch (command) {
1615
case 'build':
1716
return defineConfig({
1817
...defaultConfig,
1918
build,
19+
define: BuildDefine,
2020
plugins: BuildPlugins,
2121
});
2222
default:
2323
return defineConfig({
2424
...defaultConfig,
25-
plugins: DevPlugins,
2625
server,
26+
define: DevDefine,
27+
plugins: DevPlugins,
2728
});
2829
}
2930
};

configs/vite/define.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,17 @@ const ENV_CONFIG = {
44
TOKEN: '<token>',
55
};
66

7-
const defineOptions = {
7+
const DEFAULT_DEFINE = {
88
ENV_CONFIG,
9-
UI_VERSION: JSON.stringify(pkg.version),
9+
UI_VERSION: JSON.stringify(pkg.version)
10+
}
11+
12+
export const DevDefine = {
13+
...DEFAULT_DEFINE,
14+
DEV: true,
1015
};
1116

12-
export default defineOptions;
17+
export const BuildDefine = {
18+
...DEFAULT_DEFINE,
19+
DEV: false,
20+
};

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@
6969
"prettier": "2.4.1",
7070
"ts-jest": "27.0.5",
7171
"ts-node": "10.2.1",
72-
"typescript": "4.4.3",
72+
"typescript": "4.5.2",
7373
"vite": "2.5.10",
7474
"vite-plugin-cdn-import": "0.3.5",
7575
"vite-plugin-compression": "0.3.5",

src/containers/base/index.ts

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,25 @@
11
import { ContainerModule } from 'inversify';
2-
import { AxiosAdapter, BrowserCookieAdapter, LocalStorageAdapter } from 'core/adapters';
3-
import { HttpClientType } from 'core/http';
4-
import { CookieStorageType, LocalStorageType } from 'core/storage';
2+
import {
3+
AxiosAbortAdapter,
4+
AxiosAbortName,
5+
AxiosAdapter,
6+
AxiosMemoAdapter,
7+
AxiosMemoName,
8+
BrowserCookieAdapter,
9+
LocalStorageAdapter,
10+
SessionStorageAdapter,
11+
ReactHookFormAdapter,
12+
} from 'core/adapters';
13+
import { FormType } from 'core/form';
14+
import { HttpClientAdapterType, HttpClientType } from 'core/http';
15+
import { StorageType, CookieStorageName, LocalStorageName, SessionStorageName } from 'core/storage';
516

617
export const baseAdapters = new ContainerModule(bind => {
7-
bind(CookieStorageType).to(BrowserCookieAdapter);
8-
bind(LocalStorageType).to(LocalStorageAdapter);
18+
bind(StorageType).to(BrowserCookieAdapter).whenTargetNamed(CookieStorageName);
19+
bind(StorageType).to(LocalStorageAdapter).whenTargetNamed(LocalStorageName);
20+
bind(StorageType).to(SessionStorageAdapter).whenTargetNamed(SessionStorageName);
21+
bind(HttpClientAdapterType).to(AxiosAbortAdapter).whenTargetNamed(AxiosAbortName);
22+
bind(HttpClientAdapterType).to(AxiosMemoAdapter).whenTargetNamed(AxiosMemoName);
923
bind(HttpClientType).to(AxiosAdapter);
24+
bind(FormType).to(ReactHookFormAdapter);
1025
});

src/containers/config.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
2+
import * as inversify from 'inversify';
3+
import type { interfaces } from 'inversify';
4+
import { ServiceIdentifierOrFunc } from 'inversify/lib/annotation/inject';
5+
6+
export type ServiceIdentifier<T> = interfaces.ServiceIdentifier<T>;
7+
8+
export class Container extends inversify.Container {}
9+
10+
export class ContainerModule extends inversify.ContainerModule {}
11+
12+
export const Injectable = inversify.injectable;
13+
14+
export const Inject = inversify.inject;
15+
16+
export const Named = inversify.named;
17+
18+
export const PostConstruct = inversify.postConstruct;
19+
20+
export const InjectNamed =
21+
(serviceIdentifier: ServiceIdentifierOrFunc, name: string | number | symbol) =>
22+
(target: any, targetKey: string, index?: number): void => {
23+
Inject(serviceIdentifier)(target, targetKey, index);
24+
Named(name)(target, targetKey, index);
25+
};

src/containers/containers.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { baseAdapters } from './base';
2-
import { Container } from './core';
2+
import { Container } from './config';
33

44
export const containers = new Container({
55
autoBindInjectable: true,

src/containers/core.ts

Lines changed: 0 additions & 12 deletions
This file was deleted.

src/core/adapters/axios-adapter/__tests__/axios.adapter.mock.ts

Lines changed: 0 additions & 12 deletions
This file was deleted.

0 commit comments

Comments
 (0)