Skip to content

Commit c7943e8

Browse files
committed
Remove init and clean types
1 parent d8262f5 commit c7943e8

17 files changed

Lines changed: 108 additions & 140 deletions

packages/api/src/decorator.ts

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,21 @@
11
// Decorator general
22

33
export { default as DecoratorComposer } from './decorator/DecoratorComposer';
4-
export { activityBorderMiddleware, activityGroupingMiddleware, type DecoratorMiddleware } from './decorator/types';
4+
export { type DecoratorMiddleware } from './decorator/types';
55

66
// ActivityBorderDecorator
77

8-
export { default as ActivityBorderDecorator } from './decorator/ActivityBorder/ActivityBorderDecorator';
8+
export {
9+
default as ActivityBorderDecorator,
10+
createActivityBorderMiddleware,
11+
type ActivityBorderDecoratorMiddlewareProps,
12+
type ActivityBorderDecoratorMiddlewareRequest,
13+
type ActivityBorderDecoratorProps
14+
} from './decorator/ActivityBorder/ActivityBorderDecorator';
915

1016
// ActivityGroupingDecorator
1117

12-
export { default as ActivityGroupingDecorator } from './decorator/ActivityGrouping/ActivityGroupingDecorator';
18+
export {
19+
default as ActivityGroupingDecorator,
20+
createActivityGroupingMiddleware
21+
} from './decorator/ActivityGrouping/ActivityGroupingDecorator';

packages/api/src/decorator/ActivityBorder/ActivityBorderDecorator.tsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ import React, { memo, useMemo, type ReactNode } from 'react';
33
import PassthroughFallback from '../private/PassthroughFallback';
44
import {
55
ActivityBorderDecoratorMiddlewareProxy,
6+
createActivityBorderMiddleware,
7+
type ActivityBorderDecoratorMiddlewareProps,
68
type ActivityBorderDecoratorMiddlewareRequest
79
} from './private/ActivityBorderDecoratorMiddleware';
810

@@ -45,4 +47,9 @@ function ActivityBorderDecorator({ activity, children }: ActivityBorderDecorator
4547
}
4648

4749
export default memo(ActivityBorderDecorator);
48-
export { type ActivityBorderDecoratorProps };
50+
export {
51+
createActivityBorderMiddleware,
52+
type ActivityBorderDecoratorMiddlewareProps,
53+
type ActivityBorderDecoratorMiddlewareRequest,
54+
type ActivityBorderDecoratorProps
55+
};

packages/api/src/decorator/ActivityBorder/private/ActivityBorderDecoratorMiddleware.ts

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
1-
import type { EmptyObject } from 'type-fest';
1+
import { type ReactNode } from 'react';
22
import templateMiddleware, {
3-
type InferInit,
43
type InferMiddleware,
54
type InferProps,
65
type InferRequest
7-
} from '../../private/templateMiddleware';
8-
import { type activityBorderDecoratorTypeName } from '../types';
6+
} from '../../../middleware/private/templateMiddleware';
97

108
type Request = Readonly<{
119
/**
@@ -29,30 +27,27 @@ type Request = Readonly<{
2927
from: 'bot' | 'channel' | `user` | undefined;
3028
}>;
3129

32-
type Props = EmptyObject;
30+
type Props = Readonly<{ children?: ReactNode | undefined }>;
3331

34-
const template = templateMiddleware<typeof activityBorderDecoratorTypeName, Request, Props>(
35-
'ActivityBorderDecoratorMiddleware'
36-
);
32+
const template = templateMiddleware<Request, Props>('ActivityBorderDecoratorMiddleware');
3733

3834
const {
39-
initMiddleware: initActivityBorderDecoratorMiddleware,
35+
createMiddleware: createActivityBorderMiddleware,
36+
extractMiddleware: extractActivityBorderDecoratorMiddleware,
4037
Provider: ActivityBorderDecoratorMiddlewareProvider,
41-
Proxy: ActivityBorderDecoratorMiddlewareProxy,
42-
'~types': _types
38+
Proxy: ActivityBorderDecoratorMiddlewareProxy
4339
} = template;
4440

4541
type ActivityBorderDecoratorMiddleware = InferMiddleware<typeof template>;
46-
type ActivityBorderDecoratorMiddlewareInit = InferInit<typeof template>;
4742
type ActivityBorderDecoratorMiddlewareProps = InferProps<typeof template>;
4843
type ActivityBorderDecoratorMiddlewareRequest = InferRequest<typeof template>;
4944

5045
export {
5146
ActivityBorderDecoratorMiddlewareProvider,
5247
ActivityBorderDecoratorMiddlewareProxy,
53-
initActivityBorderDecoratorMiddleware,
48+
createActivityBorderMiddleware,
49+
extractActivityBorderDecoratorMiddleware,
5450
type ActivityBorderDecoratorMiddleware,
55-
type ActivityBorderDecoratorMiddlewareInit,
5651
type ActivityBorderDecoratorMiddlewareProps,
5752
type ActivityBorderDecoratorMiddlewareRequest
5853
};

packages/api/src/decorator/ActivityGrouping/ActivityGroupingDecorator.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import React, { memo, useMemo, type ReactNode } from 'react';
44
import PassthroughFallback from '../private/PassthroughFallback';
55
import {
66
ActivityGroupingDecoratorMiddlewareProxy,
7+
createActivityGroupingMiddleware,
78
type ActivityGroupingDecoratorMiddlewareRequest
89
} from './private/ActivityGroupingDecoratorMiddleware';
910

@@ -28,4 +29,4 @@ function ActivityGroupingDecorator({ activities, children, groupingName }: Activ
2829
}
2930

3031
export default memo(ActivityGroupingDecorator);
31-
export { type ActivityGroupingDecoratorProps };
32+
export { createActivityGroupingMiddleware, type ActivityGroupingDecoratorProps };
Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
import { type WebChatActivity } from 'botframework-webchat-core';
22
import templateMiddleware, {
3-
type InferInit,
43
type InferMiddleware,
54
type InferProps,
65
type InferRequest
7-
} from '../../private/templateMiddleware';
8-
import { type activityGroupingDecoratorTypeName } from '../types';
6+
} from '../../../middleware/private/templateMiddleware';
97

108
type Request = Readonly<{
119
/**
@@ -18,28 +16,25 @@ type Props = Readonly<{
1816
activities: readonly WebChatActivity[];
1917
}>;
2018

21-
const template = templateMiddleware<typeof activityGroupingDecoratorTypeName, Request, Props>(
22-
'ActivityGroupingDecoratorMiddleware'
23-
);
19+
const template = templateMiddleware<Request, Props>('ActivityGroupingDecoratorMiddleware');
2420

2521
const {
26-
initMiddleware: initActivityGroupingDecoratorMiddleware,
22+
createMiddleware: createActivityGroupingMiddleware,
23+
extractMiddleware: extractActivityGroupingDecoratorMiddleware,
2724
Provider: ActivityGroupingDecoratorMiddlewareProvider,
28-
Proxy: ActivityGroupingDecoratorMiddlewareProxy,
29-
'~types': _types
25+
Proxy: ActivityGroupingDecoratorMiddlewareProxy
3026
} = template;
3127

3228
type ActivityGroupingDecoratorMiddleware = InferMiddleware<typeof template>;
33-
type ActivityGroupingDecoratorMiddlewareInit = InferInit<typeof template>;
3429
type ActivityGroupingDecoratorMiddlewareProps = InferProps<typeof template>;
3530
type ActivityGroupingDecoratorMiddlewareRequest = InferRequest<typeof template>;
3631

3732
export {
3833
ActivityGroupingDecoratorMiddlewareProvider,
3934
ActivityGroupingDecoratorMiddlewareProxy,
40-
initActivityGroupingDecoratorMiddleware,
35+
createActivityGroupingMiddleware,
36+
extractActivityGroupingDecoratorMiddleware,
4137
type ActivityGroupingDecoratorMiddleware,
42-
type ActivityGroupingDecoratorMiddlewareInit,
4338
type ActivityGroupingDecoratorMiddlewareProps,
4439
type ActivityGroupingDecoratorMiddlewareRequest
4540
};

packages/api/src/decorator/internal/InternalDecoratorComposer.tsx

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
import React, { memo, useContext, useMemo, type ReactNode } from 'react';
22
import {
33
ActivityBorderDecoratorMiddlewareProvider,
4-
initActivityBorderDecoratorMiddleware
4+
extractActivityBorderDecoratorMiddleware
55
} from '../ActivityBorder/private/ActivityBorderDecoratorMiddleware';
6-
import { activityBorderDecoratorTypeName } from '../ActivityBorder/types';
76
import {
87
ActivityGroupingDecoratorMiddlewareProvider,
9-
initActivityGroupingDecoratorMiddleware
8+
extractActivityGroupingDecoratorMiddleware
109
} from '../ActivityGrouping/private/ActivityGroupingDecoratorMiddleware';
11-
import { activityGroupingDecoratorTypeName } from '../ActivityGrouping/types';
1210
import DecoratorComposerContext from '../private/DecoratorComposerContext';
1311
import { type DecoratorMiddleware } from '../types';
1412

@@ -34,13 +32,10 @@ function InternalDecoratorComposer({
3432
[existingContext, middlewareFromProps, priority]
3533
);
3634

37-
const activityBorderMiddleware = useMemo(
38-
() => initActivityBorderDecoratorMiddleware(middleware, activityBorderDecoratorTypeName),
39-
[middleware]
40-
);
35+
const activityBorderMiddleware = useMemo(() => extractActivityBorderDecoratorMiddleware(middleware), [middleware]);
4136

4237
const activityGroupingMiddleware = useMemo(
43-
() => initActivityGroupingDecoratorMiddleware(middleware, activityGroupingDecoratorTypeName),
38+
() => extractActivityGroupingDecoratorMiddleware(middleware),
4439
[middleware]
4540
);
4641

Lines changed: 4 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,6 @@
1-
import { type ActivityBorderDecoratorMiddleware } from './ActivityBorder/private/ActivityBorderDecoratorMiddleware';
2-
import { activityBorderDecoratorTypeName } from './ActivityBorder/types';
3-
import { type ActivityGroupingDecoratorMiddleware } from './ActivityGrouping/private/ActivityGroupingDecoratorMiddleware';
4-
import { activityGroupingDecoratorTypeName } from './ActivityGrouping/types';
1+
import { createActivityBorderMiddleware } from './ActivityBorder/private/ActivityBorderDecoratorMiddleware';
2+
import { createActivityGroupingMiddleware } from './ActivityGrouping/private/ActivityGroupingDecoratorMiddleware';
53

64
export type DecoratorMiddleware =
7-
| ((init: typeof activityBorderDecoratorTypeName) => ReturnType<ActivityBorderDecoratorMiddleware> | false)
8-
| ((init: typeof activityGroupingDecoratorTypeName) => ReturnType<ActivityGroupingDecoratorMiddleware> | false);
9-
10-
export function activityBorderMiddleware(
11-
enhancer: ReturnType<ActivityBorderDecoratorMiddleware>
12-
): (init: string) => ReturnType<ActivityBorderDecoratorMiddleware> | false {
13-
return init => init === activityBorderDecoratorTypeName && enhancer;
14-
}
15-
16-
export function activityGroupingMiddleware(
17-
enhancer: ReturnType<ActivityGroupingDecoratorMiddleware>
18-
): (init: string) => ReturnType<ActivityGroupingDecoratorMiddleware> | false {
19-
return init => init === activityGroupingDecoratorTypeName && enhancer;
20-
}
5+
| ReturnType<typeof createActivityBorderMiddleware>
6+
| ReturnType<typeof createActivityGroupingMiddleware>;

packages/api/src/hooks/Composer.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,11 @@ import updateIn from 'simple-update-in';
4040
import StyleOptions from '../StyleOptions';
4141
import usePonyfill from '../hooks/usePonyfill';
4242
import getAllLocalizedStrings from '../localization/getAllLocalizedStrings';
43+
import { SendBoxMiddlewareProvider, type SendBoxMiddleware } from '../middleware/SendBoxMiddleware';
44+
import {
45+
SendBoxToolbarMiddlewareProvider,
46+
type SendBoxToolbarMiddleware
47+
} from '../middleware/SendBoxToolbarMiddleware';
4348
import normalizeStyleOptions from '../normalizeStyleOptions';
4449
import patchStyleOptionsFromDeprecatedProps from '../patchStyleOptionsFromDeprecatedProps';
4550
import ActivityAcknowledgementComposer from '../providers/ActivityAcknowledgement/ActivityAcknowledgementComposer';
@@ -67,8 +72,6 @@ import createCustomEvent from '../utils/createCustomEvent';
6772
import isObject from '../utils/isObject';
6873
import mapMap from '../utils/mapMap';
6974
import normalizeLanguage from '../utils/normalizeLanguage';
70-
import { SendBoxMiddlewareProvider, type SendBoxMiddleware } from './internal/SendBoxMiddleware';
71-
import { SendBoxToolbarMiddlewareProvider, type SendBoxToolbarMiddleware } from './internal/SendBoxToolbarMiddleware';
7275
import Tracker from './internal/Tracker';
7376
import WebChatAPIContext, { type WebChatAPIContextType } from './internal/WebChatAPIContext';
7477
import WebChatReduxContext, { useDispatch } from './internal/WebChatReduxContext';

packages/api/src/hooks/internal/private/templateMiddleware.ts

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

packages/api/src/index.ts

Lines changed: 20 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,8 @@
1+
// TODO: Move the pattern to re-export.
12
import StyleOptions, { StrictStyleOptions } from './StyleOptions';
23
import defaultStyleOptions from './defaultStyleOptions';
34
import Composer, { ComposerProps } from './hooks/Composer';
45
import * as hooks from './hooks/index';
5-
import {
6-
SendBoxMiddlewareProxy,
7-
initSendBoxMiddleware,
8-
type SendBoxMiddleware,
9-
type SendBoxMiddlewareProps,
10-
type SendBoxMiddlewareRequest
11-
} from './hooks/internal/SendBoxMiddleware';
12-
import {
13-
SendBoxToolbarMiddlewareProxy,
14-
initSendBoxToolbarMiddleware,
15-
type SendBoxToolbarMiddleware,
16-
type SendBoxToolbarMiddlewareProps,
17-
type SendBoxToolbarMiddlewareRequest
18-
} from './hooks/internal/SendBoxToolbarMiddleware';
196
import concatMiddleware from './hooks/middleware/concatMiddleware';
207
import { type ActivityStatusRenderer } from './hooks/useCreateActivityStatusRenderer'; // TODO: [P1] This line should export the one from the version from "middleware rework" workstream.
218
import { type DebouncedNotification, type DebouncedNotifications } from './hooks/useDebouncedNotifications';
@@ -43,26 +30,31 @@ import TypingIndicatorMiddleware, { type RenderTypingIndicator } from './types/T
4330
import { type WebSpeechPonyfill } from './types/WebSpeechPonyfill';
4431
import { type WebSpeechPonyfillFactory } from './types/WebSpeechPonyfillFactory';
4532

33+
// #region Re-export
34+
export {
35+
extractSendBoxMiddleware,
36+
SendBoxMiddlewareProxy,
37+
type SendBoxMiddleware,
38+
type SendBoxMiddlewareProps,
39+
type SendBoxMiddlewareRequest
40+
} from './middleware/SendBoxMiddleware';
41+
42+
export {
43+
extractSendBoxToolbarMiddleware,
44+
SendBoxToolbarMiddlewareProxy,
45+
type SendBoxToolbarMiddleware,
46+
type SendBoxToolbarMiddlewareProps,
47+
type SendBoxToolbarMiddlewareRequest
48+
} from './middleware/SendBoxToolbarMiddleware';
49+
// #endregion
50+
4651
const buildTool = process.env.build_tool;
4752
const moduleFormat = process.env.module_format;
4853
const version = process.env.npm_package_version;
4954

5055
const buildInfo = { buildTool, moduleFormat, version };
5156

52-
export {
53-
Composer,
54-
SendBoxMiddlewareProxy,
55-
SendBoxToolbarMiddlewareProxy,
56-
buildInfo,
57-
concatMiddleware,
58-
defaultStyleOptions,
59-
hooks,
60-
initSendBoxMiddleware,
61-
initSendBoxToolbarMiddleware,
62-
localize,
63-
normalizeStyleOptions,
64-
version
65-
};
57+
export { buildInfo, Composer, concatMiddleware, defaultStyleOptions, hooks, localize, normalizeStyleOptions, version };
6658

6759
export type {
6860
ActivityComponentFactory,
@@ -90,12 +82,6 @@ export type {
9082
RenderTypingIndicator,
9183
ScrollToEndButtonComponentFactory,
9284
ScrollToEndButtonMiddleware,
93-
SendBoxMiddleware,
94-
SendBoxMiddlewareProps,
95-
SendBoxMiddlewareRequest,
96-
SendBoxToolbarMiddleware,
97-
SendBoxToolbarMiddlewareProps,
98-
SendBoxToolbarMiddlewareRequest,
9985
SendStatus,
10086
StrictStyleOptions,
10187
StyleOptions,

0 commit comments

Comments
 (0)