Skip to content

Commit

Permalink
Merge pull request #118 from sima-land/38-examples-bun
Browse files Browse the repository at this point in the history
 Шаг 71 #38
  • Loading branch information
krutoo committed Mar 12, 2024
2 parents 2148d3b + 776c26d commit 74a8b3b
Show file tree
Hide file tree
Showing 14 changed files with 113 additions and 110 deletions.
8 changes: 3 additions & 5 deletions src/preset/bun-handler/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,9 @@
import { createPreset } from '../../di';
import { KnownToken } from '../../tokens';
import { PresetTuner } from '../isomorphic';
import {
provideAbortController,
provideFetch,
provideReduxMiddlewareSaga,
} from '../isomorphic/providers';
import { provideAbortController } from '../isomorphic/providers/abort-controller';
import { provideFetch } from '../isomorphic/providers/fetch';
import { provideReduxMiddlewareSaga } from '../isomorphic/providers/redux-middleware-saga';
import { providePageRender } from '../node-handler/providers/page-render';
import { SpecificExtras } from '../server/utils/specific-extras';
import { HandlerProviders } from './providers';
Expand Down
2 changes: 1 addition & 1 deletion src/preset/bun-handler/providers/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -206,7 +206,7 @@ export const HandlerProviders = {

defaultHeaders(getForwardedHeaders(config, context.request)),

// @todo metrics, tracing
// @todo tracing

// ВАЖНО: слой логирования запроса и ответа ПОСЛЕ остальных слоев чтобы использовать актуальные данные
getFetchLogging(logHandler),
Expand Down
2 changes: 1 addition & 1 deletion src/preset/bun/index.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { createPreset } from '../../di';
import { KnownToken } from '../../tokens';
import { PresetTuner } from '../isomorphic';
import { provideBaseConfig } from '../isomorphic/providers';
import { provideBaseConfig } from '../isomorphic/providers/base-config';
import { provideKnownHttpApiHosts } from '../node/providers/known-http-api-hosts';
import { provideSsrBridgeServerSide } from '../node/providers/ssr-bridge-server-side';
import { BunProviders } from './providers';
Expand Down
2 changes: 1 addition & 1 deletion src/preset/bun/providers/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { providePinoHandler } from '../../node/providers/log-handler-pino';
import { route, router } from '@krutoo/fetch-tools';
import { getCurrentHub, init, runWithAsyncContext } from '@sentry/bun';
import { createSentryHandler } from '../../../log/handler/sentry';
import { provideFetch } from '../../isomorphic/providers';
import { provideFetch } from '../../isomorphic/providers/fetch';
import { ServerHandler, ServerMiddleware } from '../../server/types';
import { getStatsHandler } from '../utils/get-stats-handler';
import { getHealthCheck } from '../../server/utils/get-health-check';
Expand Down
7 changes: 7 additions & 0 deletions src/preset/isomorphic/providers/abort-controller.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
/**
* Провайдер AbortController.
* @return AbortController.
*/
export function provideAbortController(): AbortController {
return new AbortController();
}
23 changes: 23 additions & 0 deletions src/preset/isomorphic/providers/axios-factory.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import { Resolve } from '../../../di';
import { KnownToken } from '../../../tokens';
import { CreateAxiosDefaults } from 'axios';
import { create } from 'middleware-axios';

/**
* Провайдер фабрики экземпляров AxiosInstanceWrapper.
* @param resolve Функция для получения зависимости по токену.
* @return Фабрика.
*/
export function provideAxiosFactory(resolve: Resolve) {
const middleware = resolve(KnownToken.Axios.middleware);

return (config: CreateAxiosDefaults = {}) => {
const instance = create(config);

for (const item of middleware) {
instance.use(item);
}

return instance;
};
}
15 changes: 15 additions & 0 deletions src/preset/isomorphic/providers/axios-log-handler.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import { Resolve } from '../../../di';
import { LogMiddlewareHandlerInit } from '../../../utils/axios/middleware/log';
import { KnownToken } from '../../../tokens';
import { AxiosLogging } from '../utils/axios-logging';

/**
* Провайдер обработчика логирования исходящих http-запросов.
* @param resolve Функция для получения зависимости по токену.
* @return Обработчик.
*/
export function provideAxiosLogHandler(resolve: Resolve): LogMiddlewareHandlerInit {
const logger = resolve(KnownToken.logger);

return data => new AxiosLogging(logger, data);
}
15 changes: 15 additions & 0 deletions src/preset/isomorphic/providers/base-config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import { createBaseConfig } from '../../../config/base';
import { BaseConfig } from '../../../config/types';
import { Resolve } from '../../../di';
import { KnownToken } from '../../../tokens';

/**
* Провайдер базовой конфигурации приложения.
* @param resolve Функция для получения зависимости по токену.
* @return Базовая конфигурация.
*/
export function provideBaseConfig(resolve: Resolve): BaseConfig {
const source = resolve(KnownToken.Config.source);

return createBaseConfig(source);
}
14 changes: 14 additions & 0 deletions src/preset/isomorphic/providers/fetch.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import { Resolve } from '../../../di';
import { KnownToken } from '../../../tokens';
import { applyMiddleware, configureFetch } from '../../../http';

/**
* Провайдер функции fetch.
* @param resolve Функция для получения зависимости по токену.
* @return Функция fetch.
*/
export function provideFetch(resolve: Resolve) {
const middleware = resolve(KnownToken.Http.Fetch.middleware);

return configureFetch(fetch, applyMiddleware(...middleware));
}
89 changes: 0 additions & 89 deletions src/preset/isomorphic/providers/index.ts

This file was deleted.

22 changes: 22 additions & 0 deletions src/preset/isomorphic/providers/redux-middleware-saga.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import { Resolve } from '../../../di';
import { KnownToken } from '../../../tokens';
import { SagaLogging } from '../utils/saga-logging';
import createSagaMiddleware, { SagaMiddleware } from 'redux-saga';

/**
* Провайдер промежуточного слоя redux-saga для redux-хранилища.
* @param resolve Функция для получения зависимости по токену.
* @return Промежуточный слой для redux-хранилища.
*/
export function provideReduxMiddlewareSaga(resolve: Resolve): SagaMiddleware {
const logger = resolve(KnownToken.logger);

const logHandler = new SagaLogging(logger);

return createSagaMiddleware({
/** @inheritdoc */
onError(error, errorInfo) {
logHandler.onSagaError(error, errorInfo);
},
});
}
8 changes: 3 additions & 5 deletions src/preset/node-handler/index.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
import { Preset, createPreset } from '../../di';
import { KnownToken } from '../../tokens';
import {
provideReduxMiddlewareSaga,
provideFetch,
provideAbortController,
} from '../isomorphic/providers';
import { provideReduxMiddlewareSaga } from '../isomorphic/providers/redux-middleware-saga';
import { provideFetch } from '../isomorphic/providers/fetch';
import { provideAbortController } from '../isomorphic/providers/abort-controller';
import { PresetTuner } from '../isomorphic/types';
import { provideAxiosMiddleware } from './providers/axios-middleware';
import { provideAxiosLogHandler } from './providers/axios-log-handler';
Expand Down
4 changes: 3 additions & 1 deletion src/preset/node/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import { KnownToken } from '../../tokens';
import { provideAxiosFactory, provideBaseConfig, provideFetch } from '../isomorphic/providers';
import { provideAxiosFactory } from '../isomorphic/providers/axios-factory';
import { provideFetch } from '../isomorphic/providers/fetch';
import { provideBaseConfig } from '../isomorphic/providers/base-config';
import { Preset, createPreset } from '../../di';
import { PresetTuner } from '../isomorphic/types';
import { healthCheck } from '../../utils/express/handler/health-check';
Expand Down
12 changes: 5 additions & 7 deletions src/preset/web/index.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
import { createPreset, Preset } from '../../di';
import { KnownToken } from '../../tokens';
import { PresetTuner } from '../isomorphic/types';
import {
provideBaseConfig,
provideFetch,
provideAxiosFactory,
provideAxiosLogHandler,
provideReduxMiddlewareSaga,
} from '../isomorphic/providers';
import { provideBaseConfig } from '../isomorphic/providers/base-config';
import { provideFetch } from '../isomorphic/providers/fetch';
import { provideAxiosFactory } from '../isomorphic/providers/axios-factory';
import { provideAxiosLogHandler } from '../isomorphic/providers/axios-log-handler';
import { provideReduxMiddlewareSaga } from '../isomorphic/providers/redux-middleware-saga';
import { provideConfigSource } from './providers/config-source';
import { provideLogger } from './providers/logger';
import { provideKnownHttpApiHosts } from './providers/known-http-api-hosts';
Expand Down

0 comments on commit 74a8b3b

Please sign in to comment.