From 16b5032dfe705c51e949856e6f8e0cd37f05a3a4 Mon Sep 17 00:00:00 2001 From: "anthropic-code-agent[bot]" <242468646+Claude@users.noreply.github.com> Date: Wed, 4 Mar 2026 09:18:47 +0000 Subject: [PATCH 01/12] Initial plan From ab2596a3a527661b1d04536a676c78c7646f339c Mon Sep 17 00:00:00 2001 From: "anthropic-code-agent[bot]" <242468646+Claude@users.noreply.github.com> Date: Wed, 4 Mar 2026 09:25:39 +0000 Subject: [PATCH 02/12] Port sendBoxMiddleware to polymiddleware infrastructure Co-authored-by: compulim <1622400+compulim@users.noreply.github.com> --- .../src/PolymiddlewareComposer.tsx | 20 ++++- packages/api-middleware/src/index.ts | 14 ++++ packages/api-middleware/src/legacy.ts | 7 ++ .../src/legacy/sendBoxMiddleware.ts | 31 +++++++ .../src/sendBoxPolymiddleware.tsx | 84 +++++++++++++++++++ .../src/types/Polymiddleware.ts | 3 +- packages/api/src/boot/middleware.ts | 16 ++++ packages/api/src/index.ts | 6 +- .../api/src/legacy/LegacySendBoxBridge.tsx | 22 +++++ .../createSendBoxPolymiddlewareFromLegacy.tsx | 57 +++++++++++++ .../api/src/middleware/SendBoxMiddleware.ts | 14 ++++ 11 files changed, 271 insertions(+), 3 deletions(-) create mode 100644 packages/api-middleware/src/legacy/sendBoxMiddleware.ts create mode 100644 packages/api-middleware/src/sendBoxPolymiddleware.tsx create mode 100644 packages/api/src/legacy/LegacySendBoxBridge.tsx create mode 100644 packages/api/src/legacy/createSendBoxPolymiddlewareFromLegacy.tsx diff --git a/packages/api-middleware/src/PolymiddlewareComposer.tsx b/packages/api-middleware/src/PolymiddlewareComposer.tsx index 4780e3fc86..7c079ad469 100644 --- a/packages/api-middleware/src/PolymiddlewareComposer.tsx +++ b/packages/api-middleware/src/PolymiddlewareComposer.tsx @@ -16,6 +16,7 @@ import { import { ActivityPolymiddlewareProvider, extractActivityEnhancer } from './activityPolymiddleware'; import { ErrorBoxPolymiddlewareProvider, extractErrorBoxEnhancer } from './errorBoxPolymiddleware'; +import { extractSendBoxEnhancer, SendBoxPolymiddlewareProvider } from './sendBoxPolymiddleware'; import { Polymiddleware } from './types/Polymiddleware'; const polymiddlewareComposerPropsSchema = pipe( @@ -64,6 +65,21 @@ function PolymiddlewareComposer(props: PolymiddlewareComposerProps) { const errorBoxPolymiddleware = useMemo(() => errorBoxEnhancers.map(enhancer => () => enhancer), [errorBoxEnhancers]); + const sendBoxEnhancers = useMemoWithPrevious>( + (prevSendBoxEnhancers = []) => { + const sendBoxEnhancers = extractSendBoxEnhancer(polymiddleware); + + // Checks for array equality, return previous version if nothing has changed. + return prevSendBoxEnhancers.length === sendBoxEnhancers.length && + sendBoxEnhancers.every((middleware, index) => Object.is(middleware, prevSendBoxEnhancers.at(index))) + ? prevSendBoxEnhancers + : sendBoxEnhancers; + }, + [polymiddleware] + ); + + const sendBoxPolymiddleware = useMemo(() => sendBoxEnhancers.map(enhancer => () => enhancer), [sendBoxEnhancers]); + // Didn't thoroughly think through this part yet, but I am using the first approach for now: // 1. for every type of middleware @@ -75,7 +91,9 @@ function PolymiddlewareComposer(props: PolymiddlewareComposerProps) { return ( - {children} + + {children} + ); } diff --git a/packages/api-middleware/src/index.ts b/packages/api-middleware/src/index.ts index 9e0a8aeb8e..1a306a6b63 100644 --- a/packages/api-middleware/src/index.ts +++ b/packages/api-middleware/src/index.ts @@ -26,6 +26,20 @@ export { type ErrorBoxPolymiddlewareRequest } from './errorBoxPolymiddleware'; +export { + createSendBoxPolymiddleware, + sendBoxComponent, + SendBoxPolymiddlewareProxy, + useBuildRenderSendBoxCallback, + type SendBoxPolymiddleware, + type SendBoxPolymiddlewareHandler, + type SendBoxPolymiddlewareHandlerResult, + type SendBoxPolymiddlewareProps, + type SendBoxPolymiddlewareProxyProps, + type SendBoxPolymiddlewareRenderer, + type SendBoxPolymiddlewareRequest +} from './sendBoxPolymiddleware'; + // TODO: [P0] Add tests for nesting `polymiddleware`. export { default as PolymiddlewareComposer } from './PolymiddlewareComposer'; export { type Polymiddleware } from './types/Polymiddleware'; diff --git a/packages/api-middleware/src/legacy.ts b/packages/api-middleware/src/legacy.ts index c9405239c4..c602687b97 100644 --- a/packages/api-middleware/src/legacy.ts +++ b/packages/api-middleware/src/legacy.ts @@ -6,3 +6,10 @@ export { } from './legacy/activityMiddleware'; export { type LegacyAttachmentMiddleware, type LegacyRenderAttachment } from './legacy/attachmentMiddleware'; + +export { + type LegacySendBoxComponentFactory, + type LegacySendBoxMiddleware, + type LegacySendBoxProps, + type LegacySendBoxRenderer +} from './legacy/sendBoxMiddleware'; diff --git a/packages/api-middleware/src/legacy/sendBoxMiddleware.ts b/packages/api-middleware/src/legacy/sendBoxMiddleware.ts new file mode 100644 index 0000000000..fdfdcdecb2 --- /dev/null +++ b/packages/api-middleware/src/legacy/sendBoxMiddleware.ts @@ -0,0 +1,31 @@ +import { type ComponentEnhancer } from 'react-chain-of-responsibility'; +import { type ComponentType, type ReactNode } from 'react'; + +/** + * @deprecated Legacy sendBox middleware is being deprecated and will be removed on or after 2027-08-16. + */ +type LegacySendBoxProps = { + readonly className?: string | undefined; +}; + +/** + * @deprecated Legacy sendBox middleware is being deprecated and will be removed on or after 2027-08-16. + */ +type LegacySendBoxRenderer = () => ReactNode; + +/** + * @deprecated Legacy sendBox middleware is being deprecated and will be removed on or after 2027-08-16. + */ +type LegacySendBoxComponentFactory = ComponentType; + +/** + * @deprecated Legacy sendBox middleware is being deprecated and will be removed on or after 2027-08-16. + */ +type LegacySendBoxMiddleware = () => ComponentEnhancer; + +export { + type LegacySendBoxComponentFactory, + type LegacySendBoxMiddleware, + type LegacySendBoxProps, + type LegacySendBoxRenderer +}; diff --git a/packages/api-middleware/src/sendBoxPolymiddleware.tsx b/packages/api-middleware/src/sendBoxPolymiddleware.tsx new file mode 100644 index 0000000000..aeeba1c7c4 --- /dev/null +++ b/packages/api-middleware/src/sendBoxPolymiddleware.tsx @@ -0,0 +1,84 @@ +import { validateProps } from '@msinternal/botframework-webchat-react-valibot'; +import React, { memo, useMemo } from 'react'; +import { object, optional, pipe, readonly, string, type InferInput } from 'valibot'; + +import createErrorBoundaryMiddleware from './private/createErrorBoundaryMiddleware'; +import templatePolymiddleware, { + type InferHandler, + type InferHandlerResult, + type InferMiddleware, + type InferProps, + type InferProviderProps, + type InferRenderer, + type InferRequest +} from './private/templatePolymiddleware'; + +const { + createMiddleware: createSendBoxPolymiddleware, + extractEnhancer: extractSendBoxEnhancer, + Provider, + Proxy, + reactComponent: sendBoxComponent, + useBuildRenderCallback: useBuildRenderSendBoxCallback +} = templatePolymiddleware('sendBox'); + +type SendBoxPolymiddleware = InferMiddleware; +type SendBoxPolymiddlewareHandler = InferHandler; +type SendBoxPolymiddlewareHandlerResult = InferHandlerResult; +type SendBoxPolymiddlewareProps = InferProps; +type SendBoxPolymiddlewareRenderer = InferRenderer; +type SendBoxPolymiddlewareRequest = InferRequest; +type SendBoxPolymiddlewareProviderProps = InferProviderProps; + +const sendBoxPolymiddlewareProxyPropsSchema = pipe(object({}), readonly()); + +type SendBoxPolymiddlewareProxyProps = Readonly>; + +// A friendlier version than the organic . +const SendBoxPolymiddlewareProxy = memo(function SendBoxPolymiddlewareProxy( + props: SendBoxPolymiddlewareProxyProps +) { + validateProps(sendBoxPolymiddlewareProxyPropsSchema, props); + + const request = useMemo(() => undefined, []); + + return ; +}); + +const SendBoxPolymiddlewareProvider = memo(function SendBoxPolymiddlewareProvider({ + children, + middleware +}: SendBoxPolymiddlewareProviderProps) { + // Decorates middleware with . + const middlewareWithErrorBoundary = useMemo( + () => + Object.freeze([ + createErrorBoundaryMiddleware({ + createMiddleware: createSendBoxPolymiddleware, + reactComponent: sendBoxComponent, + where: 'SendBox polymiddleware' + }), + ...middleware + ]), + [middleware] + ); + + return {children}; +}); + +export { + createSendBoxPolymiddleware, + extractSendBoxEnhancer, + sendBoxComponent, + SendBoxPolymiddlewareProvider, + SendBoxPolymiddlewareProxy, + useBuildRenderSendBoxCallback, + type SendBoxPolymiddleware, + type SendBoxPolymiddlewareHandler, + type SendBoxPolymiddlewareHandlerResult, + type SendBoxPolymiddlewareProps, + type SendBoxPolymiddlewareProviderProps, + type SendBoxPolymiddlewareProxyProps, + type SendBoxPolymiddlewareRenderer, + type SendBoxPolymiddlewareRequest +}; diff --git a/packages/api-middleware/src/types/Polymiddleware.ts b/packages/api-middleware/src/types/Polymiddleware.ts index 729d27c87d..1eeb39bdae 100644 --- a/packages/api-middleware/src/types/Polymiddleware.ts +++ b/packages/api-middleware/src/types/Polymiddleware.ts @@ -1,4 +1,5 @@ import { type ActivityPolymiddleware } from '../activityPolymiddleware'; import { type ErrorBoxPolymiddleware } from '../errorBoxPolymiddleware'; +import { type SendBoxPolymiddleware } from '../sendBoxPolymiddleware'; -export type Polymiddleware = ActivityPolymiddleware | ErrorBoxPolymiddleware; +export type Polymiddleware = ActivityPolymiddleware | ErrorBoxPolymiddleware | SendBoxPolymiddleware; diff --git a/packages/api/src/boot/middleware.ts b/packages/api/src/boot/middleware.ts index 8d42eb1069..c83a8d7322 100644 --- a/packages/api/src/boot/middleware.ts +++ b/packages/api/src/boot/middleware.ts @@ -30,4 +30,20 @@ export { type ErrorBoxPolymiddlewareRequest } from '@msinternal/botframework-webchat-api-middleware'; +export { + createSendBoxPolymiddleware, + sendBoxComponent, + SendBoxPolymiddlewareProxy, + useBuildRenderSendBoxCallback, + type SendBoxPolymiddleware, + type SendBoxPolymiddlewareHandler, + type SendBoxPolymiddlewareHandlerResult, + type SendBoxPolymiddlewareProps, + type SendBoxPolymiddlewareProxyProps, + type SendBoxPolymiddlewareRenderer, + type SendBoxPolymiddlewareRequest +} from '@msinternal/botframework-webchat-api-middleware'; + export { default as createActivityPolymiddlewareFromLegacy } from '../legacy/createActivityPolymiddlewareFromLegacy'; + +export { default as createSendBoxPolymiddlewareFromLegacy } from '../legacy/createSendBoxPolymiddlewareFromLegacy'; diff --git a/packages/api/src/index.ts b/packages/api/src/index.ts index 2b2cff9478..e6485dd7ae 100644 --- a/packages/api/src/index.ts +++ b/packages/api/src/index.ts @@ -5,7 +5,11 @@ export type { LegacyActivityMiddleware as ActivityMiddleware, /** @deprecated Use `polymiddleware` instead, this will be removed on or after 2027-08-16. */ LegacyAttachmentMiddleware as AttachmentMiddleware, - LegacyRenderAttachment as RenderAttachment + LegacyRenderAttachment as RenderAttachment, + /** @deprecated Use `polymiddleware` instead, this will be removed on or after 2027-08-16. */ + LegacySendBoxComponentFactory as SendBoxComponentFactory, + /** @deprecated Use `polymiddleware` instead, this will be removed on or after 2027-08-16. */ + LegacySendBoxRenderer as SendBoxRenderer } from '@msinternal/botframework-webchat-api-middleware/legacy'; export * as hooks from './boot/hook'; diff --git a/packages/api/src/legacy/LegacySendBoxBridge.tsx b/packages/api/src/legacy/LegacySendBoxBridge.tsx new file mode 100644 index 0000000000..c3cb71ceb7 --- /dev/null +++ b/packages/api/src/legacy/LegacySendBoxBridge.tsx @@ -0,0 +1,22 @@ +import { validateProps } from '@msinternal/botframework-webchat-react-valibot'; +import React, { Fragment, memo, useMemo } from 'react'; + +import { legacySendBoxBridgeComponentPropsSchema, type LegacySendBoxBridgeComponentProps } from './createSendBoxPolymiddlewareFromLegacy'; + +/** + * This component is solely for `createSendBoxPolymiddlewareFromLegacy`. + * + * @param props Legacy sendBox middleware props, includes `className` and `render`. + * @returns A sendBox node rendered using the `props.render()` of type `LegacySendBoxRenderFunction`. + */ +function LegacySendBoxBridge(props: LegacySendBoxBridgeComponentProps) { + const { className, render } = validateProps(legacySendBoxBridgeComponentPropsSchema, props); + + const children = useMemo(() => render(), [render]); + + // Pass className to the rendered component if needed + // For now, just render the children as-is since the legacy middleware handles className internally + return {children}; +} + +export default memo(LegacySendBoxBridge); diff --git a/packages/api/src/legacy/createSendBoxPolymiddlewareFromLegacy.tsx b/packages/api/src/legacy/createSendBoxPolymiddlewareFromLegacy.tsx new file mode 100644 index 0000000000..84c9bfbbf3 --- /dev/null +++ b/packages/api/src/legacy/createSendBoxPolymiddlewareFromLegacy.tsx @@ -0,0 +1,57 @@ +import { + createSendBoxPolymiddleware, + sendBoxComponent, + type SendBoxPolymiddleware +} from '@msinternal/botframework-webchat-api-middleware'; +import { type LegacySendBoxMiddleware } from '@msinternal/botframework-webchat-api-middleware/legacy'; +import { composeEnhancer } from 'handler-chain'; +import { type ReactNode } from 'react'; +import { custom, function_, never, object, optional, pipe, readonly, safeParse, string, type InferInput } from 'valibot'; + +import LegacySendBoxBridge from './LegacySendBoxBridge'; + +type LegacySendBoxRenderFunction = () => ReactNode; + +const legacySendBoxBridgeComponentPropsSchema = pipe( + object({ + children: optional(never()), + className: optional(string()), + render: custom(value => safeParse(function_(), value).success) + }), + readonly() +); + +type LegacySendBoxBridgeComponentProps = Readonly< + InferInput & { children?: never } +>; + +/** + * Polyfill legacy sendBox middleware into a polymiddleware. + * + * @deprecated Legacy sendBox middleware is being deprecated and will be removed on or after 2027-08-16. + * @param middleware An array of legacy sendBox middleware. + * @returns A polymiddleware composed by legacy sendBox middleware. + */ +function createSendBoxPolymiddlewareFromLegacy( + ...middleware: readonly LegacySendBoxMiddleware[] +): SendBoxPolymiddleware { + const legacyEnhancer = composeEnhancer(...middleware.map(middleware => middleware())); + + return createSendBoxPolymiddleware(next => { + const legacyHandler = legacyEnhancer(request => { + const handler = next(request); + + return !!handler && (() => handler.render({})); + }); + + return request => { + const legacyResult = legacyHandler(request); + + return legacyResult ? sendBoxComponent(LegacySendBoxBridge, { render: legacyResult }) : undefined; + }; + }); +} + +export default createSendBoxPolymiddlewareFromLegacy; + +export { legacySendBoxBridgeComponentPropsSchema, type LegacySendBoxBridgeComponentProps }; diff --git a/packages/api/src/middleware/SendBoxMiddleware.ts b/packages/api/src/middleware/SendBoxMiddleware.ts index 84deed5a48..ceb41d5a83 100644 --- a/packages/api/src/middleware/SendBoxMiddleware.ts +++ b/packages/api/src/middleware/SendBoxMiddleware.ts @@ -4,6 +4,9 @@ import templateMiddleware, { type InferRequest } from './private/templateMiddleware'; +/** + * @deprecated Legacy sendBox middleware is being deprecated and will be removed on or after 2027-08-16. Use `createSendBoxPolymiddleware` instead. + */ const template = templateMiddleware('sendBoxMiddleware'); const { @@ -13,8 +16,19 @@ const { Proxy: SendBoxMiddlewareProxy } = template; +/** + * @deprecated Legacy sendBox middleware is being deprecated and will be removed on or after 2027-08-16. Use `SendBoxPolymiddleware` instead. + */ type SendBoxMiddleware = InferMiddleware; + +/** + * @deprecated Legacy sendBox middleware is being deprecated and will be removed on or after 2027-08-16. Use `SendBoxPolymiddlewareProps` instead. + */ type SendBoxMiddlewareProps = InferProps; + +/** + * @deprecated Legacy sendBox middleware is being deprecated and will be removed on or after 2027-08-16. Use `SendBoxPolymiddlewareRequest` instead. + */ type SendBoxMiddlewareRequest = InferRequest; export { From 4794f650af97b5f22343bc5971f61892fc5e6253 Mon Sep 17 00:00:00 2001 From: "anthropic-code-agent[bot]" <242468646+Claude@users.noreply.github.com> Date: Wed, 4 Mar 2026 09:33:38 +0000 Subject: [PATCH 03/12] Fix type imports and add test files for sendBox polymiddleware Co-authored-by: compulim <1622400+compulim@users.noreply.github.com> --- .../legacyToPolymiddleware.html | 57 +++++++++++++++ .../sendBox/polymiddleware/simple.html | 60 ++++++++++++++++ package-lock.json | 72 +++++++------------ .../src/legacy/sendBoxMiddleware.ts | 15 +++- .../src/sendBoxPolymiddleware.tsx | 2 +- .../api/src/legacy/LegacySendBoxBridge.tsx | 16 ++--- .../createSendBoxPolymiddlewareFromLegacy.tsx | 14 ++-- packages/test/test-assets/package.json | 2 +- 8 files changed, 171 insertions(+), 67 deletions(-) create mode 100644 __tests__/html2/middleware/sendBox/legacySendBoxMiddleware/legacyToPolymiddleware.html create mode 100644 __tests__/html2/middleware/sendBox/polymiddleware/simple.html diff --git a/__tests__/html2/middleware/sendBox/legacySendBoxMiddleware/legacyToPolymiddleware.html b/__tests__/html2/middleware/sendBox/legacySendBoxMiddleware/legacyToPolymiddleware.html new file mode 100644 index 0000000000..73067c47e6 --- /dev/null +++ b/__tests__/html2/middleware/sendBox/legacySendBoxMiddleware/legacyToPolymiddleware.html @@ -0,0 +1,57 @@ + + + + + + + + + + + +
+ + + diff --git a/__tests__/html2/middleware/sendBox/polymiddleware/simple.html b/__tests__/html2/middleware/sendBox/polymiddleware/simple.html new file mode 100644 index 0000000000..e37a485c5a --- /dev/null +++ b/__tests__/html2/middleware/sendBox/polymiddleware/simple.html @@ -0,0 +1,60 @@ + + + + + + + + + + + +
+ + + diff --git a/package-lock.json b/package-lock.json index d47ce3fe61..dbad523745 100644 --- a/package-lock.json +++ b/package-lock.json @@ -336,7 +336,6 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", "devOptional": true, - "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", @@ -3304,7 +3303,6 @@ "version": "29.7.0", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/fake-timers": "^29.7.0", "@jest/types": "^29.6.3", @@ -3342,7 +3340,6 @@ "version": "29.7.0", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/types": "^29.6.3", "@sinonjs/fake-timers": "^10.0.2", @@ -3632,7 +3629,6 @@ "version": "29.6.3", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -5231,7 +5227,6 @@ "version": "16.14.68", "resolved": "https://registry.npmjs.org/@types/react/-/react-16.14.68.tgz", "integrity": "sha512-GEe60JEJg7wIvnUzXBX/A++ieyum98WXF/q2oFr1RVar8OK8JxU/uEYBXgv7jF87SoaDdxtAq3KUaJFlu02ziw==", - "peer": true, "dependencies": { "@types/prop-types": "*", "@types/scheduler": "^0.16", @@ -5242,7 +5237,6 @@ "version": "16.9.25", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.25.tgz", "integrity": "sha512-ZK//eAPhwft9Ul2/Zj+6O11YR6L4JX0J2sVeBC9Ft7x7HFN7xk7yUV/zDxqV6rjvqgl6r8Dq7oQImxtyf/Mzcw==", - "peer": true, "peerDependencies": { "@types/react": "^16.0.0" } @@ -5384,7 +5378,6 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.50.0.tgz", "integrity": "sha512-6/cmF2piao+f6wSxUsJLZjck7OQsYyRtcOZS02k7XINSNlz93v6emM8WutDQSXnroG2xwYlEVHJI+cPA7CPM3Q==", "dev": true, - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.50.0", "@typescript-eslint/types": "8.50.0", @@ -5815,7 +5808,6 @@ "version": "8.15.0", "dev": true, "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -6210,7 +6202,6 @@ "node_modules/asn1.js": { "version": "5.4.1", "license": "MIT", - "peer": true, "dependencies": { "bn.js": "^4.0.0", "inherits": "^2.0.1", @@ -6285,7 +6276,8 @@ "node_modules/asynckit": { "version": "0.4.0", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/available-typed-arrays": { "version": "1.0.7", @@ -6314,6 +6306,7 @@ "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.2.tgz", "integrity": "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==", "dev": true, + "peer": true, "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.4", @@ -6908,7 +6901,6 @@ "url": "https://github.com/sponsors/ai" } ], - "peer": true, "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", @@ -6957,6 +6949,7 @@ "version": "0.2.13", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": "*" } @@ -7282,6 +7275,7 @@ "url": "https://github.com/rxaviers/cldr-data-npm/blob/master/LICENSE" } ], + "peer": true, "dependencies": { "cldr-data-downloader": "1.1.0", "glob": "10.3.12" @@ -7290,6 +7284,7 @@ "node_modules/cldr-data-downloader": { "version": "1.1.0", "dev": true, + "peer": true, "dependencies": { "axios": "^1.7.2", "mkdirp": "^1.0.4", @@ -7304,12 +7299,14 @@ "node_modules/cldr-data-downloader/node_modules/abbrev": { "version": "1.1.1", "dev": true, - "license": "ISC" + "license": "ISC", + "peer": true }, "node_modules/cldr-data-downloader/node_modules/nopt": { "version": "3.0.6", "dev": true, "license": "ISC", + "peer": true, "dependencies": { "abbrev": "1" }, @@ -7321,6 +7318,7 @@ "version": "1.0.1", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=0.6.0", "teleport": ">=0.2.0" @@ -7330,6 +7328,7 @@ "version": "10.3.12", "dev": true, "license": "ISC", + "peer": true, "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.3.6", @@ -7351,6 +7350,7 @@ "version": "2.3.6", "dev": true, "license": "BlueOak-1.0.0", + "peer": true, "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -7369,6 +7369,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, + "peer": true, "dependencies": { "brace-expansion": "^2.0.1" }, @@ -7570,6 +7571,7 @@ "version": "1.0.8", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "delayed-stream": "~1.0.0" }, @@ -7823,7 +7825,6 @@ "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.47.0.tgz", "integrity": "sha512-BcxeDbzUrRnXGYIVAGFtcGQVNpFcUhVjr6W7F8XktvQW2iJP9e66GP6xdKotCRFlrxBvNIBrhwKteRXqMV86Nw==", "hasInstallScript": true, - "peer": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" @@ -8189,6 +8190,7 @@ "version": "1.0.0", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=0.4.0" } @@ -8737,7 +8739,6 @@ "integrity": "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==", "dev": true, "hasInstallScript": true, - "peer": true, "bin": { "esbuild": "bin/esbuild" }, @@ -8803,7 +8804,6 @@ "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -8859,7 +8859,6 @@ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", "dev": true, - "peer": true, "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -9789,6 +9788,7 @@ "version": "1.1.0", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "pend": "~1.2.0" } @@ -9965,6 +9965,7 @@ "version": "4.0.4", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -10254,7 +10255,6 @@ "version": "1.7.1", "resolved": "https://registry.npmjs.org/globalize/-/globalize-1.7.1.tgz", "integrity": "sha512-PFymRL0PtitFOlSniuwwwNfkooi3cLQJo9Uke1+j1DsGfUkkHkwneImqVtGcqKI0TuzhAlHt7hAcgK324902HA==", - "peer": true, "dependencies": { "cldrjs": "^0.5.4" } @@ -10496,7 +10496,6 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/handler-chain/-/handler-chain-0.1.1.tgz", "integrity": "sha512-5eo8F9UTUiFCMtDUF1ipva1tvOCGE+vFr33aFHSISjTqXfGywCRV2aE6TzPkMhaw1pArOv3wv2Wz3Rh+AJJ8bA==", - "peer": true, "dependencies": { "handler-chain": "^0.1.1" } @@ -10911,8 +10910,7 @@ "version": "2019.1.0", "resolved": "https://registry.npmjs.org/iana-tz-data/-/iana-tz-data-2019.1.0.tgz", "integrity": "sha512-T7+26Skkyxqjp4mg20/O065j9J5qP39nWVQj/2ArxQ0gSPkL+T9lwerRmiOAzFRNsNXepX45QqchqTVENwNvig==", - "dev": true, - "peer": true + "dev": true }, "node_modules/iconv-lite": { "version": "0.6.3", @@ -11769,7 +11767,6 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/iter-fest/-/iter-fest-0.3.0.tgz", "integrity": "sha512-t76cnHCl9MEZRaUb0VBwTXP8dWjxbcTYm91VGWfQYjSMXKkjdOAIjUsaMYuLIy9jxk9fT55XIlb4Y/HACK/zlw==", - "peer": true, "dependencies": { "iter-fest": "^0.3.0" }, @@ -12744,7 +12741,6 @@ "version": "29.7.0", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/types": "^29.6.3", "@types/node": "*", @@ -13126,7 +13122,6 @@ "version": "29.7.0", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/types": "^29.6.3", "@types/node": "*", @@ -14925,7 +14920,6 @@ "version": "1.17.0", "resolved": "https://registry.npmjs.org/microsoft-cognitiveservices-speech-sdk/-/microsoft-cognitiveservices-speech-sdk-1.17.0.tgz", "integrity": "sha512-RVUCpTeu1g+R4HB/PaLQmEfsdHzwEa6+2phgCiPA4lGIiR7ILEL7qZHHUWAG6W4zcjnWeiLnL7tVgMbyd5XGgA==", - "peer": true, "dependencies": { "agent-base": "^6.0.1", "asn1.js-rfc2560": "^5.0.1", @@ -15128,6 +15122,7 @@ "version": "1.0.4", "dev": true, "license": "MIT", + "peer": true, "bin": { "mkdirp": "bin/cmd.js" }, @@ -15306,7 +15301,6 @@ "version": "8.0.2", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "growly": "^1.3.0", "is-wsl": "^2.2.0", @@ -15841,7 +15835,8 @@ "node_modules/pend": { "version": "1.2.0", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/picocolors": { "version": "1.1.1", @@ -15976,7 +15971,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.1.0", @@ -16098,7 +16092,6 @@ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.7.4.tgz", "integrity": "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==", "dev": true, - "peer": true, "bin": { "prettier": "bin/prettier.cjs" }, @@ -16207,7 +16200,8 @@ "node_modules/proxy-from-env": { "version": "1.1.0", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/prr": { "version": "1.0.1", @@ -16373,7 +16367,6 @@ "version": "16.8.6", "resolved": "https://registry.npmjs.org/react/-/react-16.8.6.tgz", "integrity": "sha512-pC0uMkhLaHm11ZSJULfOBqV4tIZkx87ZLvbbQYunNixAAvjnC+snJCg0XQXn9VIsttVsbZP/H/ewzgsd5fxKXw==", - "peer": true, "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", @@ -16388,7 +16381,6 @@ "version": "0.4.2", "resolved": "https://registry.npmjs.org/react-chain-of-responsibility/-/react-chain-of-responsibility-0.4.2.tgz", "integrity": "sha512-khBaWO1rSLSUw6Ydr3lYFgONwmrx9rSOClrLCyn7cq40QxVJSh5utq1rbey+Pr24trWmQdC9qweTuKG2RptTXw==", - "peer": true, "dependencies": { "handler-chain": "^0.1.0", "react-chain-of-responsibility": "^0.4.2", @@ -16416,7 +16408,6 @@ "version": "16.8.6", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.8.6.tgz", "integrity": "sha512-1nL7PIq9LTL3fthPqwkvr2zY7phIPjYrT0jp4HjyEQrEROnw4dG41VVwi/wfoCneoleqrNX7iAD+pXebJZwrwA==", - "peer": true, "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", @@ -16801,8 +16792,7 @@ "node_modules/redux": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", - "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==", - "peer": true + "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==" }, "node_modules/redux-saga": { "version": "1.4.2", @@ -17136,7 +17126,6 @@ "version": "4.46.2", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/estree": "1.0.8" }, @@ -17440,7 +17429,6 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -18908,7 +18896,6 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, - "peer": true, "engines": { "node": ">=12" }, @@ -19326,7 +19313,6 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "devOptional": true, - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -19748,7 +19734,6 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/use-ref-from/-/use-ref-from-0.1.0.tgz", "integrity": "sha512-PRjmfhUGUKghhOjKV1dBU66M7CASdb4NkMsaaWLdJA81yOZFlVL7Pi3O9aD+68pRh0VrRQjZfS6Ux3vPy1VhRg==", - "peer": true, "dependencies": { "@babel/runtime-corejs3": "^7.24.1", "use-ref-from": "^0.1.0" @@ -19783,7 +19768,6 @@ "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "peer": true, "bin": { "uuid": "dist/bin/uuid" } @@ -19805,7 +19789,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/valibot/-/valibot-1.2.0.tgz", "integrity": "sha512-mm1rxUsmOxzrwnX5arGS+U4T25RdvpPjPN4yR0u9pUBov9+zGVtO84tif1eY4r6zWxVxu3KzIyknJy3rxfRZZg==", - "peer": true, "peerDependencies": { "typescript": ">=5" }, @@ -19911,7 +19894,6 @@ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.104.1.tgz", "integrity": "sha512-Qphch25abbMNtekmEGJmeRUhLDbe+QfiWTiqpKYkpCOWY64v9eyl+KRRLmqOFA2AvKPpc9DC6+u2n76tQLBoaA==", "dev": true, - "peer": true, "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.8", @@ -19960,7 +19942,6 @@ "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-6.0.1.tgz", "integrity": "sha512-MfwFQ6SfwinsUVi0rNJm7rHZ31GyTcpVE5pgVA3hwFRb7COD4TzjUUwhGWKfO50+xdc2MQPuEBBJoqIMGt3JDw==", "dev": true, - "peer": true, "dependencies": { "@discoveryjs/json-ext": "^0.6.1", "@webpack-cli/configtest": "^3.0.1", @@ -20492,6 +20473,7 @@ "version": "2.10.0", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" @@ -20513,7 +20495,6 @@ "resolved": "https://registry.npmjs.org/zod/-/zod-4.2.1.tgz", "integrity": "sha512-0wZ1IRqGGhMP76gLqz8EyfBXKk0J2qo2+H3fi4mcUP/KtTocoX08nmIAHl1Z2kJIZbZee8KOpBCSNPRgauucjw==", "dev": true, - "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } @@ -21824,7 +21805,6 @@ "react": "^18.3.1", "react-dom": "^18.3.1" }, - "devDependencies": {}, "engines": { "node": ">= 14.0.0" } @@ -21922,7 +21902,6 @@ "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", "license": "MIT", - "peer": true, "dependencies": { "loose-envify": "^1.1.0" }, @@ -21935,7 +21914,6 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", "license": "MIT", - "peer": true, "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" diff --git a/packages/api-middleware/src/legacy/sendBoxMiddleware.ts b/packages/api-middleware/src/legacy/sendBoxMiddleware.ts index fdfdcdecb2..e60d7b156f 100644 --- a/packages/api-middleware/src/legacy/sendBoxMiddleware.ts +++ b/packages/api-middleware/src/legacy/sendBoxMiddleware.ts @@ -1,4 +1,3 @@ -import { type ComponentEnhancer } from 'react-chain-of-responsibility'; import { type ComponentType, type ReactNode } from 'react'; /** @@ -11,7 +10,12 @@ type LegacySendBoxProps = { /** * @deprecated Legacy sendBox middleware is being deprecated and will be removed on or after 2027-08-16. */ -type LegacySendBoxRenderer = () => ReactNode; +type LegacySendBoxComponent = (props: LegacySendBoxProps) => Exclude; + +/** + * @deprecated Legacy sendBox middleware is being deprecated and will be removed on or after 2027-08-16. + */ +type LegacySendBoxRenderer = () => LegacySendBoxComponent; /** * @deprecated Legacy sendBox middleware is being deprecated and will be removed on or after 2027-08-16. @@ -21,7 +25,12 @@ type LegacySendBoxComponentFactory = ComponentType; /** * @deprecated Legacy sendBox middleware is being deprecated and will be removed on or after 2027-08-16. */ -type LegacySendBoxMiddleware = () => ComponentEnhancer; +type LegacySendBoxEnhancer = (next: LegacySendBoxRenderer) => LegacySendBoxRenderer; + +/** + * @deprecated Legacy sendBox middleware is being deprecated and will be removed on or after 2027-08-16. + */ +type LegacySendBoxMiddleware = () => LegacySendBoxEnhancer; export { type LegacySendBoxComponentFactory, diff --git a/packages/api-middleware/src/sendBoxPolymiddleware.tsx b/packages/api-middleware/src/sendBoxPolymiddleware.tsx index aeeba1c7c4..aeb8b6d7c4 100644 --- a/packages/api-middleware/src/sendBoxPolymiddleware.tsx +++ b/packages/api-middleware/src/sendBoxPolymiddleware.tsx @@ -1,6 +1,6 @@ import { validateProps } from '@msinternal/botframework-webchat-react-valibot'; import React, { memo, useMemo } from 'react'; -import { object, optional, pipe, readonly, string, type InferInput } from 'valibot'; +import { object, pipe, readonly, type InferInput } from 'valibot'; import createErrorBoundaryMiddleware from './private/createErrorBoundaryMiddleware'; import templatePolymiddleware, { diff --git a/packages/api/src/legacy/LegacySendBoxBridge.tsx b/packages/api/src/legacy/LegacySendBoxBridge.tsx index c3cb71ceb7..74e6e6330f 100644 --- a/packages/api/src/legacy/LegacySendBoxBridge.tsx +++ b/packages/api/src/legacy/LegacySendBoxBridge.tsx @@ -1,5 +1,5 @@ import { validateProps } from '@msinternal/botframework-webchat-react-valibot'; -import React, { Fragment, memo, useMemo } from 'react'; +import React, { Fragment, memo } from 'react'; import { legacySendBoxBridgeComponentPropsSchema, type LegacySendBoxBridgeComponentProps } from './createSendBoxPolymiddlewareFromLegacy'; @@ -7,16 +7,16 @@ import { legacySendBoxBridgeComponentPropsSchema, type LegacySendBoxBridgeCompon * This component is solely for `createSendBoxPolymiddlewareFromLegacy`. * * @param props Legacy sendBox middleware props, includes `className` and `render`. - * @returns A sendBox node rendered using the `props.render()` of type `LegacySendBoxRenderFunction`. + * @returns A sendBox node rendered using the `props.render` component. */ function LegacySendBoxBridge(props: LegacySendBoxBridgeComponentProps) { - const { className, render } = validateProps(legacySendBoxBridgeComponentPropsSchema, props); + const { className, render: RenderComponent } = validateProps(legacySendBoxBridgeComponentPropsSchema, props); - const children = useMemo(() => render(), [render]); - - // Pass className to the rendered component if needed - // For now, just render the children as-is since the legacy middleware handles className internally - return {children}; + return ( + + + + ); } export default memo(LegacySendBoxBridge); diff --git a/packages/api/src/legacy/createSendBoxPolymiddlewareFromLegacy.tsx b/packages/api/src/legacy/createSendBoxPolymiddlewareFromLegacy.tsx index 84c9bfbbf3..34ebd122a7 100644 --- a/packages/api/src/legacy/createSendBoxPolymiddlewareFromLegacy.tsx +++ b/packages/api/src/legacy/createSendBoxPolymiddlewareFromLegacy.tsx @@ -5,12 +5,12 @@ import { } from '@msinternal/botframework-webchat-api-middleware'; import { type LegacySendBoxMiddleware } from '@msinternal/botframework-webchat-api-middleware/legacy'; import { composeEnhancer } from 'handler-chain'; -import { type ReactNode } from 'react'; +import { type ComponentType } from 'react'; import { custom, function_, never, object, optional, pipe, readonly, safeParse, string, type InferInput } from 'valibot'; import LegacySendBoxBridge from './LegacySendBoxBridge'; -type LegacySendBoxRenderFunction = () => ReactNode; +type LegacySendBoxRenderFunction = ComponentType<{ readonly className?: string | undefined }>; const legacySendBoxBridgeComponentPropsSchema = pipe( object({ @@ -38,16 +38,16 @@ function createSendBoxPolymiddlewareFromLegacy( const legacyEnhancer = composeEnhancer(...middleware.map(middleware => middleware())); return createSendBoxPolymiddleware(next => { - const legacyHandler = legacyEnhancer(request => { - const handler = next(request); + const legacyHandler = legacyEnhancer(() => { + const handler = next(); return !!handler && (() => handler.render({})); }); - return request => { - const legacyResult = legacyHandler(request); + return () => { + const legacyResult = legacyHandler(); - return legacyResult ? sendBoxComponent(LegacySendBoxBridge, { render: legacyResult }) : undefined; + return legacyResult ? sendBoxComponent(LegacySendBoxBridge, { render: legacyResult() }) : undefined; }; }); } diff --git a/packages/test/test-assets/package.json b/packages/test/test-assets/package.json index 809aaa395c..231f0777fb 100644 --- a/packages/test/test-assets/package.json +++ b/packages/test/test-assets/package.json @@ -19,7 +19,7 @@ "eslint": "npm run precommit", "postversion": "../../../scripts/npm/postversion.sh", "preversion": "../../../scripts/npm/preversion.sh", - "start": "../../../scripts/npm/notify-build.sh \"out\"" + "start": "../../../scripts/npm/notify-build.sh \"src\"" }, "pinDependencies": {}, "localDependencies": {}, From 26d4f9e8f4f0460af20c6deac7e83eed89431c0b Mon Sep 17 00:00:00 2001 From: "anthropic-code-agent[bot]" <242468646+Claude@users.noreply.github.com> Date: Wed, 4 Mar 2026 09:36:43 +0000 Subject: [PATCH 04/12] Fix legacy sendBox bridge types and build errors Co-authored-by: compulim <1622400+compulim@users.noreply.github.com> --- packages/api/src/legacy/LegacySendBoxBridge.tsx | 14 ++++++-------- .../createSendBoxPolymiddlewareFromLegacy.tsx | 13 ++++++++----- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/packages/api/src/legacy/LegacySendBoxBridge.tsx b/packages/api/src/legacy/LegacySendBoxBridge.tsx index 74e6e6330f..7e75fd510f 100644 --- a/packages/api/src/legacy/LegacySendBoxBridge.tsx +++ b/packages/api/src/legacy/LegacySendBoxBridge.tsx @@ -1,5 +1,5 @@ import { validateProps } from '@msinternal/botframework-webchat-react-valibot'; -import React, { Fragment, memo } from 'react'; +import React, { Fragment, memo, useMemo } from 'react'; import { legacySendBoxBridgeComponentPropsSchema, type LegacySendBoxBridgeComponentProps } from './createSendBoxPolymiddlewareFromLegacy'; @@ -7,16 +7,14 @@ import { legacySendBoxBridgeComponentPropsSchema, type LegacySendBoxBridgeCompon * This component is solely for `createSendBoxPolymiddlewareFromLegacy`. * * @param props Legacy sendBox middleware props, includes `className` and `render`. - * @returns A sendBox node rendered using the `props.render` component. + * @returns A sendBox node rendered using the `props.render` function. */ function LegacySendBoxBridge(props: LegacySendBoxBridgeComponentProps) { - const { className, render: RenderComponent } = validateProps(legacySendBoxBridgeComponentPropsSchema, props); + const { className, render } = validateProps(legacySendBoxBridgeComponentPropsSchema, props); - return ( - - - - ); + const children = useMemo(() => render({ className }), [className, render]); + + return {children}; } export default memo(LegacySendBoxBridge); diff --git a/packages/api/src/legacy/createSendBoxPolymiddlewareFromLegacy.tsx b/packages/api/src/legacy/createSendBoxPolymiddlewareFromLegacy.tsx index 34ebd122a7..6f9ee5a8ac 100644 --- a/packages/api/src/legacy/createSendBoxPolymiddlewareFromLegacy.tsx +++ b/packages/api/src/legacy/createSendBoxPolymiddlewareFromLegacy.tsx @@ -4,13 +4,14 @@ import { type SendBoxPolymiddleware } from '@msinternal/botframework-webchat-api-middleware'; import { type LegacySendBoxMiddleware } from '@msinternal/botframework-webchat-api-middleware/legacy'; -import { composeEnhancer } from 'handler-chain'; -import { type ComponentType } from 'react'; +import { composeEnhancer, type Enhancer } from 'handler-chain'; +import { type ReactNode } from 'react'; import { custom, function_, never, object, optional, pipe, readonly, safeParse, string, type InferInput } from 'valibot'; import LegacySendBoxBridge from './LegacySendBoxBridge'; -type LegacySendBoxRenderFunction = ComponentType<{ readonly className?: string | undefined }>; +type LegacySendBoxRenderFunction = (props: { readonly className?: string | undefined }) => ReactNode; +type LegacySendBoxComponent = ReactNode; const legacySendBoxBridgeComponentPropsSchema = pipe( object({ @@ -35,7 +36,9 @@ type LegacySendBoxBridgeComponentProps = Readonly< function createSendBoxPolymiddlewareFromLegacy( ...middleware: readonly LegacySendBoxMiddleware[] ): SendBoxPolymiddleware { - const legacyEnhancer = composeEnhancer(...middleware.map(middleware => middleware())); + const legacyEnhancer: Enhancer = composeEnhancer( + ...(middleware.map(middleware => middleware()) as Enhancer[]) + ); return createSendBoxPolymiddleware(next => { const legacyHandler = legacyEnhancer(() => { @@ -47,7 +50,7 @@ function createSendBoxPolymiddlewareFromLegacy( return () => { const legacyResult = legacyHandler(); - return legacyResult ? sendBoxComponent(LegacySendBoxBridge, { render: legacyResult() }) : undefined; + return legacyResult ? sendBoxComponent(LegacySendBoxBridge, { render: () => legacyResult }) : undefined; }; }); } From 627f5284b4237de8fbec1589c418b4ee80f12342 Mon Sep 17 00:00:00 2001 From: "anthropic-code-agent[bot]" <242468646+Claude@users.noreply.github.com> Date: Wed, 4 Mar 2026 10:00:06 +0000 Subject: [PATCH 05/12] Update deprecation dates, fix error message case, add displayName, revert package-lock.json Co-authored-by: compulim <1622400+compulim@users.noreply.github.com> --- package-lock.json | 72 ++++++++++++------- .../src/sendBoxPolymiddleware.tsx | 2 +- packages/api/src/index.ts | 4 +- .../api/src/legacy/LegacySendBoxBridge.tsx | 2 + .../createSendBoxPolymiddlewareFromLegacy.tsx | 2 +- .../api/src/middleware/SendBoxMiddleware.ts | 8 +-- 6 files changed, 57 insertions(+), 33 deletions(-) diff --git a/package-lock.json b/package-lock.json index dbad523745..d47ce3fe61 100644 --- a/package-lock.json +++ b/package-lock.json @@ -336,6 +336,7 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", "devOptional": true, + "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", @@ -3303,6 +3304,7 @@ "version": "29.7.0", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@jest/fake-timers": "^29.7.0", "@jest/types": "^29.6.3", @@ -3340,6 +3342,7 @@ "version": "29.7.0", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@jest/types": "^29.6.3", "@sinonjs/fake-timers": "^10.0.2", @@ -3629,6 +3632,7 @@ "version": "29.6.3", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -5227,6 +5231,7 @@ "version": "16.14.68", "resolved": "https://registry.npmjs.org/@types/react/-/react-16.14.68.tgz", "integrity": "sha512-GEe60JEJg7wIvnUzXBX/A++ieyum98WXF/q2oFr1RVar8OK8JxU/uEYBXgv7jF87SoaDdxtAq3KUaJFlu02ziw==", + "peer": true, "dependencies": { "@types/prop-types": "*", "@types/scheduler": "^0.16", @@ -5237,6 +5242,7 @@ "version": "16.9.25", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.25.tgz", "integrity": "sha512-ZK//eAPhwft9Ul2/Zj+6O11YR6L4JX0J2sVeBC9Ft7x7HFN7xk7yUV/zDxqV6rjvqgl6r8Dq7oQImxtyf/Mzcw==", + "peer": true, "peerDependencies": { "@types/react": "^16.0.0" } @@ -5378,6 +5384,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.50.0.tgz", "integrity": "sha512-6/cmF2piao+f6wSxUsJLZjck7OQsYyRtcOZS02k7XINSNlz93v6emM8WutDQSXnroG2xwYlEVHJI+cPA7CPM3Q==", "dev": true, + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.50.0", "@typescript-eslint/types": "8.50.0", @@ -5808,6 +5815,7 @@ "version": "8.15.0", "dev": true, "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -6202,6 +6210,7 @@ "node_modules/asn1.js": { "version": "5.4.1", "license": "MIT", + "peer": true, "dependencies": { "bn.js": "^4.0.0", "inherits": "^2.0.1", @@ -6276,8 +6285,7 @@ "node_modules/asynckit": { "version": "0.4.0", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/available-typed-arrays": { "version": "1.0.7", @@ -6306,7 +6314,6 @@ "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.2.tgz", "integrity": "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==", "dev": true, - "peer": true, "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.4", @@ -6901,6 +6908,7 @@ "url": "https://github.com/sponsors/ai" } ], + "peer": true, "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", @@ -6949,7 +6957,6 @@ "version": "0.2.13", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": "*" } @@ -7275,7 +7282,6 @@ "url": "https://github.com/rxaviers/cldr-data-npm/blob/master/LICENSE" } ], - "peer": true, "dependencies": { "cldr-data-downloader": "1.1.0", "glob": "10.3.12" @@ -7284,7 +7290,6 @@ "node_modules/cldr-data-downloader": { "version": "1.1.0", "dev": true, - "peer": true, "dependencies": { "axios": "^1.7.2", "mkdirp": "^1.0.4", @@ -7299,14 +7304,12 @@ "node_modules/cldr-data-downloader/node_modules/abbrev": { "version": "1.1.1", "dev": true, - "license": "ISC", - "peer": true + "license": "ISC" }, "node_modules/cldr-data-downloader/node_modules/nopt": { "version": "3.0.6", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "abbrev": "1" }, @@ -7318,7 +7321,6 @@ "version": "1.0.1", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.6.0", "teleport": ">=0.2.0" @@ -7328,7 +7330,6 @@ "version": "10.3.12", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.3.6", @@ -7350,7 +7351,6 @@ "version": "2.3.6", "dev": true, "license": "BlueOak-1.0.0", - "peer": true, "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -7369,7 +7369,6 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, - "peer": true, "dependencies": { "brace-expansion": "^2.0.1" }, @@ -7571,7 +7570,6 @@ "version": "1.0.8", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "delayed-stream": "~1.0.0" }, @@ -7825,6 +7823,7 @@ "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.47.0.tgz", "integrity": "sha512-BcxeDbzUrRnXGYIVAGFtcGQVNpFcUhVjr6W7F8XktvQW2iJP9e66GP6xdKotCRFlrxBvNIBrhwKteRXqMV86Nw==", "hasInstallScript": true, + "peer": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" @@ -8190,7 +8189,6 @@ "version": "1.0.0", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.4.0" } @@ -8739,6 +8737,7 @@ "integrity": "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==", "dev": true, "hasInstallScript": true, + "peer": true, "bin": { "esbuild": "bin/esbuild" }, @@ -8804,6 +8803,7 @@ "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -8859,6 +8859,7 @@ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", "dev": true, + "peer": true, "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -9788,7 +9789,6 @@ "version": "1.1.0", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "pend": "~1.2.0" } @@ -9965,7 +9965,6 @@ "version": "4.0.4", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -10255,6 +10254,7 @@ "version": "1.7.1", "resolved": "https://registry.npmjs.org/globalize/-/globalize-1.7.1.tgz", "integrity": "sha512-PFymRL0PtitFOlSniuwwwNfkooi3cLQJo9Uke1+j1DsGfUkkHkwneImqVtGcqKI0TuzhAlHt7hAcgK324902HA==", + "peer": true, "dependencies": { "cldrjs": "^0.5.4" } @@ -10496,6 +10496,7 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/handler-chain/-/handler-chain-0.1.1.tgz", "integrity": "sha512-5eo8F9UTUiFCMtDUF1ipva1tvOCGE+vFr33aFHSISjTqXfGywCRV2aE6TzPkMhaw1pArOv3wv2Wz3Rh+AJJ8bA==", + "peer": true, "dependencies": { "handler-chain": "^0.1.1" } @@ -10910,7 +10911,8 @@ "version": "2019.1.0", "resolved": "https://registry.npmjs.org/iana-tz-data/-/iana-tz-data-2019.1.0.tgz", "integrity": "sha512-T7+26Skkyxqjp4mg20/O065j9J5qP39nWVQj/2ArxQ0gSPkL+T9lwerRmiOAzFRNsNXepX45QqchqTVENwNvig==", - "dev": true + "dev": true, + "peer": true }, "node_modules/iconv-lite": { "version": "0.6.3", @@ -11767,6 +11769,7 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/iter-fest/-/iter-fest-0.3.0.tgz", "integrity": "sha512-t76cnHCl9MEZRaUb0VBwTXP8dWjxbcTYm91VGWfQYjSMXKkjdOAIjUsaMYuLIy9jxk9fT55XIlb4Y/HACK/zlw==", + "peer": true, "dependencies": { "iter-fest": "^0.3.0" }, @@ -12741,6 +12744,7 @@ "version": "29.7.0", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@jest/types": "^29.6.3", "@types/node": "*", @@ -13122,6 +13126,7 @@ "version": "29.7.0", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@jest/types": "^29.6.3", "@types/node": "*", @@ -14920,6 +14925,7 @@ "version": "1.17.0", "resolved": "https://registry.npmjs.org/microsoft-cognitiveservices-speech-sdk/-/microsoft-cognitiveservices-speech-sdk-1.17.0.tgz", "integrity": "sha512-RVUCpTeu1g+R4HB/PaLQmEfsdHzwEa6+2phgCiPA4lGIiR7ILEL7qZHHUWAG6W4zcjnWeiLnL7tVgMbyd5XGgA==", + "peer": true, "dependencies": { "agent-base": "^6.0.1", "asn1.js-rfc2560": "^5.0.1", @@ -15122,7 +15128,6 @@ "version": "1.0.4", "dev": true, "license": "MIT", - "peer": true, "bin": { "mkdirp": "bin/cmd.js" }, @@ -15301,6 +15306,7 @@ "version": "8.0.2", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "growly": "^1.3.0", "is-wsl": "^2.2.0", @@ -15835,8 +15841,7 @@ "node_modules/pend": { "version": "1.2.0", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/picocolors": { "version": "1.1.1", @@ -15971,6 +15976,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.1.0", @@ -16092,6 +16098,7 @@ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.7.4.tgz", "integrity": "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==", "dev": true, + "peer": true, "bin": { "prettier": "bin/prettier.cjs" }, @@ -16200,8 +16207,7 @@ "node_modules/proxy-from-env": { "version": "1.1.0", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/prr": { "version": "1.0.1", @@ -16367,6 +16373,7 @@ "version": "16.8.6", "resolved": "https://registry.npmjs.org/react/-/react-16.8.6.tgz", "integrity": "sha512-pC0uMkhLaHm11ZSJULfOBqV4tIZkx87ZLvbbQYunNixAAvjnC+snJCg0XQXn9VIsttVsbZP/H/ewzgsd5fxKXw==", + "peer": true, "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", @@ -16381,6 +16388,7 @@ "version": "0.4.2", "resolved": "https://registry.npmjs.org/react-chain-of-responsibility/-/react-chain-of-responsibility-0.4.2.tgz", "integrity": "sha512-khBaWO1rSLSUw6Ydr3lYFgONwmrx9rSOClrLCyn7cq40QxVJSh5utq1rbey+Pr24trWmQdC9qweTuKG2RptTXw==", + "peer": true, "dependencies": { "handler-chain": "^0.1.0", "react-chain-of-responsibility": "^0.4.2", @@ -16408,6 +16416,7 @@ "version": "16.8.6", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.8.6.tgz", "integrity": "sha512-1nL7PIq9LTL3fthPqwkvr2zY7phIPjYrT0jp4HjyEQrEROnw4dG41VVwi/wfoCneoleqrNX7iAD+pXebJZwrwA==", + "peer": true, "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", @@ -16792,7 +16801,8 @@ "node_modules/redux": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", - "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==" + "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==", + "peer": true }, "node_modules/redux-saga": { "version": "1.4.2", @@ -17126,6 +17136,7 @@ "version": "4.46.2", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/estree": "1.0.8" }, @@ -17429,6 +17440,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -18896,6 +18908,7 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, + "peer": true, "engines": { "node": ">=12" }, @@ -19313,6 +19326,7 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "devOptional": true, + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -19734,6 +19748,7 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/use-ref-from/-/use-ref-from-0.1.0.tgz", "integrity": "sha512-PRjmfhUGUKghhOjKV1dBU66M7CASdb4NkMsaaWLdJA81yOZFlVL7Pi3O9aD+68pRh0VrRQjZfS6Ux3vPy1VhRg==", + "peer": true, "dependencies": { "@babel/runtime-corejs3": "^7.24.1", "use-ref-from": "^0.1.0" @@ -19768,6 +19783,7 @@ "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "peer": true, "bin": { "uuid": "dist/bin/uuid" } @@ -19789,6 +19805,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/valibot/-/valibot-1.2.0.tgz", "integrity": "sha512-mm1rxUsmOxzrwnX5arGS+U4T25RdvpPjPN4yR0u9pUBov9+zGVtO84tif1eY4r6zWxVxu3KzIyknJy3rxfRZZg==", + "peer": true, "peerDependencies": { "typescript": ">=5" }, @@ -19894,6 +19911,7 @@ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.104.1.tgz", "integrity": "sha512-Qphch25abbMNtekmEGJmeRUhLDbe+QfiWTiqpKYkpCOWY64v9eyl+KRRLmqOFA2AvKPpc9DC6+u2n76tQLBoaA==", "dev": true, + "peer": true, "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.8", @@ -19942,6 +19960,7 @@ "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-6.0.1.tgz", "integrity": "sha512-MfwFQ6SfwinsUVi0rNJm7rHZ31GyTcpVE5pgVA3hwFRb7COD4TzjUUwhGWKfO50+xdc2MQPuEBBJoqIMGt3JDw==", "dev": true, + "peer": true, "dependencies": { "@discoveryjs/json-ext": "^0.6.1", "@webpack-cli/configtest": "^3.0.1", @@ -20473,7 +20492,6 @@ "version": "2.10.0", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" @@ -20495,6 +20513,7 @@ "resolved": "https://registry.npmjs.org/zod/-/zod-4.2.1.tgz", "integrity": "sha512-0wZ1IRqGGhMP76gLqz8EyfBXKk0J2qo2+H3fi4mcUP/KtTocoX08nmIAHl1Z2kJIZbZee8KOpBCSNPRgauucjw==", "dev": true, + "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } @@ -21805,6 +21824,7 @@ "react": "^18.3.1", "react-dom": "^18.3.1" }, + "devDependencies": {}, "engines": { "node": ">= 14.0.0" } @@ -21902,6 +21922,7 @@ "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", "license": "MIT", + "peer": true, "dependencies": { "loose-envify": "^1.1.0" }, @@ -21914,6 +21935,7 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", "license": "MIT", + "peer": true, "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" diff --git a/packages/api-middleware/src/sendBoxPolymiddleware.tsx b/packages/api-middleware/src/sendBoxPolymiddleware.tsx index aeb8b6d7c4..cdc2a9203d 100644 --- a/packages/api-middleware/src/sendBoxPolymiddleware.tsx +++ b/packages/api-middleware/src/sendBoxPolymiddleware.tsx @@ -56,7 +56,7 @@ const SendBoxPolymiddlewareProvider = memo(function SendBoxPolymiddlewareProvide createErrorBoundaryMiddleware({ createMiddleware: createSendBoxPolymiddleware, reactComponent: sendBoxComponent, - where: 'SendBox polymiddleware' + where: 'send box polymiddleware' }), ...middleware ]), diff --git a/packages/api/src/index.ts b/packages/api/src/index.ts index e6485dd7ae..84c3ad57d5 100644 --- a/packages/api/src/index.ts +++ b/packages/api/src/index.ts @@ -6,9 +6,9 @@ export type { /** @deprecated Use `polymiddleware` instead, this will be removed on or after 2027-08-16. */ LegacyAttachmentMiddleware as AttachmentMiddleware, LegacyRenderAttachment as RenderAttachment, - /** @deprecated Use `polymiddleware` instead, this will be removed on or after 2027-08-16. */ + /** @deprecated Use `polymiddleware` instead, this will be removed on or after 2028-03-04. */ LegacySendBoxComponentFactory as SendBoxComponentFactory, - /** @deprecated Use `polymiddleware` instead, this will be removed on or after 2027-08-16. */ + /** @deprecated Use `polymiddleware` instead, this will be removed on or after 2028-03-04. */ LegacySendBoxRenderer as SendBoxRenderer } from '@msinternal/botframework-webchat-api-middleware/legacy'; diff --git a/packages/api/src/legacy/LegacySendBoxBridge.tsx b/packages/api/src/legacy/LegacySendBoxBridge.tsx index 7e75fd510f..6276930f03 100644 --- a/packages/api/src/legacy/LegacySendBoxBridge.tsx +++ b/packages/api/src/legacy/LegacySendBoxBridge.tsx @@ -17,4 +17,6 @@ function LegacySendBoxBridge(props: LegacySendBoxBridgeComponentProps) { return {children}; } +LegacySendBoxBridge.displayName = 'LegacySendBoxBridge'; + export default memo(LegacySendBoxBridge); diff --git a/packages/api/src/legacy/createSendBoxPolymiddlewareFromLegacy.tsx b/packages/api/src/legacy/createSendBoxPolymiddlewareFromLegacy.tsx index 6f9ee5a8ac..a3d6a4a7fd 100644 --- a/packages/api/src/legacy/createSendBoxPolymiddlewareFromLegacy.tsx +++ b/packages/api/src/legacy/createSendBoxPolymiddlewareFromLegacy.tsx @@ -29,7 +29,7 @@ type LegacySendBoxBridgeComponentProps = Readonly< /** * Polyfill legacy sendBox middleware into a polymiddleware. * - * @deprecated Legacy sendBox middleware is being deprecated and will be removed on or after 2027-08-16. + * @deprecated Legacy sendBox middleware is being deprecated and will be removed on or after 2028-03-04. * @param middleware An array of legacy sendBox middleware. * @returns A polymiddleware composed by legacy sendBox middleware. */ diff --git a/packages/api/src/middleware/SendBoxMiddleware.ts b/packages/api/src/middleware/SendBoxMiddleware.ts index ceb41d5a83..d93981f0a9 100644 --- a/packages/api/src/middleware/SendBoxMiddleware.ts +++ b/packages/api/src/middleware/SendBoxMiddleware.ts @@ -5,7 +5,7 @@ import templateMiddleware, { } from './private/templateMiddleware'; /** - * @deprecated Legacy sendBox middleware is being deprecated and will be removed on or after 2027-08-16. Use `createSendBoxPolymiddleware` instead. + * @deprecated Legacy send box middleware is being deprecated and will be removed on or after 2028-03-04. Use `createSendBoxPolymiddleware` instead. */ const template = templateMiddleware('sendBoxMiddleware'); @@ -17,17 +17,17 @@ const { } = template; /** - * @deprecated Legacy sendBox middleware is being deprecated and will be removed on or after 2027-08-16. Use `SendBoxPolymiddleware` instead. + * @deprecated Legacy send box middleware is being deprecated and will be removed on or after 2028-03-04 Use `SendBoxPolymiddleware` instead. */ type SendBoxMiddleware = InferMiddleware; /** - * @deprecated Legacy sendBox middleware is being deprecated and will be removed on or after 2027-08-16. Use `SendBoxPolymiddlewareProps` instead. + * @deprecated Legacy send box middleware is being deprecated and will be removed on or after 2028-03-04. Use `SendBoxPolymiddlewareProps` instead. */ type SendBoxMiddlewareProps = InferProps; /** - * @deprecated Legacy sendBox middleware is being deprecated and will be removed on or after 2027-08-16. Use `SendBoxPolymiddlewareRequest` instead. + * @deprecated Legacy send box middleware is being deprecated and will be removed on or after 2028-03-04. Use `SendBoxPolymiddlewareRequest` instead. */ type SendBoxMiddlewareRequest = InferRequest; From 3a8aaa46a6a6beb352422c008e6081d5a9f9692b Mon Sep 17 00:00:00 2001 From: "anthropic-code-agent[bot]" <242468646+Claude@users.noreply.github.com> Date: Wed, 4 Mar 2026 10:01:54 +0000 Subject: [PATCH 06/12] Add comprehensive test suite for sendBox middleware patterns Co-authored-by: compulim <1622400+compulim@users.noreply.github.com> --- .../sendBox/legacySendBoxMiddleware/add.html | 59 ++++++++++++++++++ .../legacySendBoxMiddleware/change.html | 56 +++++++++++++++++ .../legacySendBoxMiddleware/decorate.html | 54 +++++++++++++++++ .../legacySendBoxMiddleware/remove.html | 52 ++++++++++++++++ .../sendBox/polymiddleware/add.html | 60 +++++++++++++++++++ .../sendBox/polymiddleware/change.html | 56 +++++++++++++++++ .../sendBox/polymiddleware/decorate.html | 59 ++++++++++++++++++ .../sendBox/polymiddleware/remove.html | 54 +++++++++++++++++ 8 files changed, 450 insertions(+) create mode 100644 __tests__/html2/middleware/sendBox/legacySendBoxMiddleware/add.html create mode 100644 __tests__/html2/middleware/sendBox/legacySendBoxMiddleware/change.html create mode 100644 __tests__/html2/middleware/sendBox/legacySendBoxMiddleware/decorate.html create mode 100644 __tests__/html2/middleware/sendBox/legacySendBoxMiddleware/remove.html create mode 100644 __tests__/html2/middleware/sendBox/polymiddleware/add.html create mode 100644 __tests__/html2/middleware/sendBox/polymiddleware/change.html create mode 100644 __tests__/html2/middleware/sendBox/polymiddleware/decorate.html create mode 100644 __tests__/html2/middleware/sendBox/polymiddleware/remove.html diff --git a/__tests__/html2/middleware/sendBox/legacySendBoxMiddleware/add.html b/__tests__/html2/middleware/sendBox/legacySendBoxMiddleware/add.html new file mode 100644 index 0000000000..977a620e6f --- /dev/null +++ b/__tests__/html2/middleware/sendBox/legacySendBoxMiddleware/add.html @@ -0,0 +1,59 @@ + + + + + + + + + + + +
+ + + diff --git a/__tests__/html2/middleware/sendBox/legacySendBoxMiddleware/change.html b/__tests__/html2/middleware/sendBox/legacySendBoxMiddleware/change.html new file mode 100644 index 0000000000..98d6d46ee8 --- /dev/null +++ b/__tests__/html2/middleware/sendBox/legacySendBoxMiddleware/change.html @@ -0,0 +1,56 @@ + + + + + + + + + + + +
+ + + diff --git a/__tests__/html2/middleware/sendBox/legacySendBoxMiddleware/decorate.html b/__tests__/html2/middleware/sendBox/legacySendBoxMiddleware/decorate.html new file mode 100644 index 0000000000..5e2d80519f --- /dev/null +++ b/__tests__/html2/middleware/sendBox/legacySendBoxMiddleware/decorate.html @@ -0,0 +1,54 @@ + + + + + + + + + + + +
+ + + diff --git a/__tests__/html2/middleware/sendBox/legacySendBoxMiddleware/remove.html b/__tests__/html2/middleware/sendBox/legacySendBoxMiddleware/remove.html new file mode 100644 index 0000000000..c0ee76c182 --- /dev/null +++ b/__tests__/html2/middleware/sendBox/legacySendBoxMiddleware/remove.html @@ -0,0 +1,52 @@ + + + + + + + + + + + +
+ + + diff --git a/__tests__/html2/middleware/sendBox/polymiddleware/add.html b/__tests__/html2/middleware/sendBox/polymiddleware/add.html new file mode 100644 index 0000000000..2bf07947ef --- /dev/null +++ b/__tests__/html2/middleware/sendBox/polymiddleware/add.html @@ -0,0 +1,60 @@ + + + + + + + + + + + +
+ + + diff --git a/__tests__/html2/middleware/sendBox/polymiddleware/change.html b/__tests__/html2/middleware/sendBox/polymiddleware/change.html new file mode 100644 index 0000000000..3b594755a3 --- /dev/null +++ b/__tests__/html2/middleware/sendBox/polymiddleware/change.html @@ -0,0 +1,56 @@ + + + + + + + + + + + +
+ + + diff --git a/__tests__/html2/middleware/sendBox/polymiddleware/decorate.html b/__tests__/html2/middleware/sendBox/polymiddleware/decorate.html new file mode 100644 index 0000000000..61fefd4b37 --- /dev/null +++ b/__tests__/html2/middleware/sendBox/polymiddleware/decorate.html @@ -0,0 +1,59 @@ + + + + + + + + + + + +
+ + + diff --git a/__tests__/html2/middleware/sendBox/polymiddleware/remove.html b/__tests__/html2/middleware/sendBox/polymiddleware/remove.html new file mode 100644 index 0000000000..519af8fee6 --- /dev/null +++ b/__tests__/html2/middleware/sendBox/polymiddleware/remove.html @@ -0,0 +1,54 @@ + + + + + + + + + + + +
+ + + From e86cc4964a6055521a22074b72fdb728c6bfc707 Mon Sep 17 00:00:00 2001 From: "anthropic-code-agent[bot]" <242468646+Claude@users.noreply.github.com> Date: Wed, 4 Mar 2026 10:15:16 +0000 Subject: [PATCH 07/12] Port sendBoxMiddleware to polymiddleware infrastructure Co-authored-by: compulim <1622400+compulim@users.noreply.github.com> --- package-lock.json | 72 ++++++++++++++++------------------------------- 1 file changed, 25 insertions(+), 47 deletions(-) diff --git a/package-lock.json b/package-lock.json index d47ce3fe61..dbad523745 100644 --- a/package-lock.json +++ b/package-lock.json @@ -336,7 +336,6 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", "devOptional": true, - "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", @@ -3304,7 +3303,6 @@ "version": "29.7.0", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/fake-timers": "^29.7.0", "@jest/types": "^29.6.3", @@ -3342,7 +3340,6 @@ "version": "29.7.0", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/types": "^29.6.3", "@sinonjs/fake-timers": "^10.0.2", @@ -3632,7 +3629,6 @@ "version": "29.6.3", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -5231,7 +5227,6 @@ "version": "16.14.68", "resolved": "https://registry.npmjs.org/@types/react/-/react-16.14.68.tgz", "integrity": "sha512-GEe60JEJg7wIvnUzXBX/A++ieyum98WXF/q2oFr1RVar8OK8JxU/uEYBXgv7jF87SoaDdxtAq3KUaJFlu02ziw==", - "peer": true, "dependencies": { "@types/prop-types": "*", "@types/scheduler": "^0.16", @@ -5242,7 +5237,6 @@ "version": "16.9.25", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.25.tgz", "integrity": "sha512-ZK//eAPhwft9Ul2/Zj+6O11YR6L4JX0J2sVeBC9Ft7x7HFN7xk7yUV/zDxqV6rjvqgl6r8Dq7oQImxtyf/Mzcw==", - "peer": true, "peerDependencies": { "@types/react": "^16.0.0" } @@ -5384,7 +5378,6 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.50.0.tgz", "integrity": "sha512-6/cmF2piao+f6wSxUsJLZjck7OQsYyRtcOZS02k7XINSNlz93v6emM8WutDQSXnroG2xwYlEVHJI+cPA7CPM3Q==", "dev": true, - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.50.0", "@typescript-eslint/types": "8.50.0", @@ -5815,7 +5808,6 @@ "version": "8.15.0", "dev": true, "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -6210,7 +6202,6 @@ "node_modules/asn1.js": { "version": "5.4.1", "license": "MIT", - "peer": true, "dependencies": { "bn.js": "^4.0.0", "inherits": "^2.0.1", @@ -6285,7 +6276,8 @@ "node_modules/asynckit": { "version": "0.4.0", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/available-typed-arrays": { "version": "1.0.7", @@ -6314,6 +6306,7 @@ "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.2.tgz", "integrity": "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==", "dev": true, + "peer": true, "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.4", @@ -6908,7 +6901,6 @@ "url": "https://github.com/sponsors/ai" } ], - "peer": true, "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", @@ -6957,6 +6949,7 @@ "version": "0.2.13", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": "*" } @@ -7282,6 +7275,7 @@ "url": "https://github.com/rxaviers/cldr-data-npm/blob/master/LICENSE" } ], + "peer": true, "dependencies": { "cldr-data-downloader": "1.1.0", "glob": "10.3.12" @@ -7290,6 +7284,7 @@ "node_modules/cldr-data-downloader": { "version": "1.1.0", "dev": true, + "peer": true, "dependencies": { "axios": "^1.7.2", "mkdirp": "^1.0.4", @@ -7304,12 +7299,14 @@ "node_modules/cldr-data-downloader/node_modules/abbrev": { "version": "1.1.1", "dev": true, - "license": "ISC" + "license": "ISC", + "peer": true }, "node_modules/cldr-data-downloader/node_modules/nopt": { "version": "3.0.6", "dev": true, "license": "ISC", + "peer": true, "dependencies": { "abbrev": "1" }, @@ -7321,6 +7318,7 @@ "version": "1.0.1", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=0.6.0", "teleport": ">=0.2.0" @@ -7330,6 +7328,7 @@ "version": "10.3.12", "dev": true, "license": "ISC", + "peer": true, "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.3.6", @@ -7351,6 +7350,7 @@ "version": "2.3.6", "dev": true, "license": "BlueOak-1.0.0", + "peer": true, "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -7369,6 +7369,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, + "peer": true, "dependencies": { "brace-expansion": "^2.0.1" }, @@ -7570,6 +7571,7 @@ "version": "1.0.8", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "delayed-stream": "~1.0.0" }, @@ -7823,7 +7825,6 @@ "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.47.0.tgz", "integrity": "sha512-BcxeDbzUrRnXGYIVAGFtcGQVNpFcUhVjr6W7F8XktvQW2iJP9e66GP6xdKotCRFlrxBvNIBrhwKteRXqMV86Nw==", "hasInstallScript": true, - "peer": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" @@ -8189,6 +8190,7 @@ "version": "1.0.0", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=0.4.0" } @@ -8737,7 +8739,6 @@ "integrity": "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==", "dev": true, "hasInstallScript": true, - "peer": true, "bin": { "esbuild": "bin/esbuild" }, @@ -8803,7 +8804,6 @@ "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -8859,7 +8859,6 @@ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", "dev": true, - "peer": true, "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -9789,6 +9788,7 @@ "version": "1.1.0", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "pend": "~1.2.0" } @@ -9965,6 +9965,7 @@ "version": "4.0.4", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -10254,7 +10255,6 @@ "version": "1.7.1", "resolved": "https://registry.npmjs.org/globalize/-/globalize-1.7.1.tgz", "integrity": "sha512-PFymRL0PtitFOlSniuwwwNfkooi3cLQJo9Uke1+j1DsGfUkkHkwneImqVtGcqKI0TuzhAlHt7hAcgK324902HA==", - "peer": true, "dependencies": { "cldrjs": "^0.5.4" } @@ -10496,7 +10496,6 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/handler-chain/-/handler-chain-0.1.1.tgz", "integrity": "sha512-5eo8F9UTUiFCMtDUF1ipva1tvOCGE+vFr33aFHSISjTqXfGywCRV2aE6TzPkMhaw1pArOv3wv2Wz3Rh+AJJ8bA==", - "peer": true, "dependencies": { "handler-chain": "^0.1.1" } @@ -10911,8 +10910,7 @@ "version": "2019.1.0", "resolved": "https://registry.npmjs.org/iana-tz-data/-/iana-tz-data-2019.1.0.tgz", "integrity": "sha512-T7+26Skkyxqjp4mg20/O065j9J5qP39nWVQj/2ArxQ0gSPkL+T9lwerRmiOAzFRNsNXepX45QqchqTVENwNvig==", - "dev": true, - "peer": true + "dev": true }, "node_modules/iconv-lite": { "version": "0.6.3", @@ -11769,7 +11767,6 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/iter-fest/-/iter-fest-0.3.0.tgz", "integrity": "sha512-t76cnHCl9MEZRaUb0VBwTXP8dWjxbcTYm91VGWfQYjSMXKkjdOAIjUsaMYuLIy9jxk9fT55XIlb4Y/HACK/zlw==", - "peer": true, "dependencies": { "iter-fest": "^0.3.0" }, @@ -12744,7 +12741,6 @@ "version": "29.7.0", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/types": "^29.6.3", "@types/node": "*", @@ -13126,7 +13122,6 @@ "version": "29.7.0", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/types": "^29.6.3", "@types/node": "*", @@ -14925,7 +14920,6 @@ "version": "1.17.0", "resolved": "https://registry.npmjs.org/microsoft-cognitiveservices-speech-sdk/-/microsoft-cognitiveservices-speech-sdk-1.17.0.tgz", "integrity": "sha512-RVUCpTeu1g+R4HB/PaLQmEfsdHzwEa6+2phgCiPA4lGIiR7ILEL7qZHHUWAG6W4zcjnWeiLnL7tVgMbyd5XGgA==", - "peer": true, "dependencies": { "agent-base": "^6.0.1", "asn1.js-rfc2560": "^5.0.1", @@ -15128,6 +15122,7 @@ "version": "1.0.4", "dev": true, "license": "MIT", + "peer": true, "bin": { "mkdirp": "bin/cmd.js" }, @@ -15306,7 +15301,6 @@ "version": "8.0.2", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "growly": "^1.3.0", "is-wsl": "^2.2.0", @@ -15841,7 +15835,8 @@ "node_modules/pend": { "version": "1.2.0", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/picocolors": { "version": "1.1.1", @@ -15976,7 +15971,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.1.0", @@ -16098,7 +16092,6 @@ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.7.4.tgz", "integrity": "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==", "dev": true, - "peer": true, "bin": { "prettier": "bin/prettier.cjs" }, @@ -16207,7 +16200,8 @@ "node_modules/proxy-from-env": { "version": "1.1.0", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/prr": { "version": "1.0.1", @@ -16373,7 +16367,6 @@ "version": "16.8.6", "resolved": "https://registry.npmjs.org/react/-/react-16.8.6.tgz", "integrity": "sha512-pC0uMkhLaHm11ZSJULfOBqV4tIZkx87ZLvbbQYunNixAAvjnC+snJCg0XQXn9VIsttVsbZP/H/ewzgsd5fxKXw==", - "peer": true, "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", @@ -16388,7 +16381,6 @@ "version": "0.4.2", "resolved": "https://registry.npmjs.org/react-chain-of-responsibility/-/react-chain-of-responsibility-0.4.2.tgz", "integrity": "sha512-khBaWO1rSLSUw6Ydr3lYFgONwmrx9rSOClrLCyn7cq40QxVJSh5utq1rbey+Pr24trWmQdC9qweTuKG2RptTXw==", - "peer": true, "dependencies": { "handler-chain": "^0.1.0", "react-chain-of-responsibility": "^0.4.2", @@ -16416,7 +16408,6 @@ "version": "16.8.6", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.8.6.tgz", "integrity": "sha512-1nL7PIq9LTL3fthPqwkvr2zY7phIPjYrT0jp4HjyEQrEROnw4dG41VVwi/wfoCneoleqrNX7iAD+pXebJZwrwA==", - "peer": true, "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", @@ -16801,8 +16792,7 @@ "node_modules/redux": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", - "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==", - "peer": true + "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==" }, "node_modules/redux-saga": { "version": "1.4.2", @@ -17136,7 +17126,6 @@ "version": "4.46.2", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/estree": "1.0.8" }, @@ -17440,7 +17429,6 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -18908,7 +18896,6 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, - "peer": true, "engines": { "node": ">=12" }, @@ -19326,7 +19313,6 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "devOptional": true, - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -19748,7 +19734,6 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/use-ref-from/-/use-ref-from-0.1.0.tgz", "integrity": "sha512-PRjmfhUGUKghhOjKV1dBU66M7CASdb4NkMsaaWLdJA81yOZFlVL7Pi3O9aD+68pRh0VrRQjZfS6Ux3vPy1VhRg==", - "peer": true, "dependencies": { "@babel/runtime-corejs3": "^7.24.1", "use-ref-from": "^0.1.0" @@ -19783,7 +19768,6 @@ "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "peer": true, "bin": { "uuid": "dist/bin/uuid" } @@ -19805,7 +19789,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/valibot/-/valibot-1.2.0.tgz", "integrity": "sha512-mm1rxUsmOxzrwnX5arGS+U4T25RdvpPjPN4yR0u9pUBov9+zGVtO84tif1eY4r6zWxVxu3KzIyknJy3rxfRZZg==", - "peer": true, "peerDependencies": { "typescript": ">=5" }, @@ -19911,7 +19894,6 @@ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.104.1.tgz", "integrity": "sha512-Qphch25abbMNtekmEGJmeRUhLDbe+QfiWTiqpKYkpCOWY64v9eyl+KRRLmqOFA2AvKPpc9DC6+u2n76tQLBoaA==", "dev": true, - "peer": true, "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.8", @@ -19960,7 +19942,6 @@ "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-6.0.1.tgz", "integrity": "sha512-MfwFQ6SfwinsUVi0rNJm7rHZ31GyTcpVE5pgVA3hwFRb7COD4TzjUUwhGWKfO50+xdc2MQPuEBBJoqIMGt3JDw==", "dev": true, - "peer": true, "dependencies": { "@discoveryjs/json-ext": "^0.6.1", "@webpack-cli/configtest": "^3.0.1", @@ -20492,6 +20473,7 @@ "version": "2.10.0", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" @@ -20513,7 +20495,6 @@ "resolved": "https://registry.npmjs.org/zod/-/zod-4.2.1.tgz", "integrity": "sha512-0wZ1IRqGGhMP76gLqz8EyfBXKk0J2qo2+H3fi4mcUP/KtTocoX08nmIAHl1Z2kJIZbZee8KOpBCSNPRgauucjw==", "dev": true, - "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } @@ -21824,7 +21805,6 @@ "react": "^18.3.1", "react-dom": "^18.3.1" }, - "devDependencies": {}, "engines": { "node": ">= 14.0.0" } @@ -21922,7 +21902,6 @@ "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", "license": "MIT", - "peer": true, "dependencies": { "loose-envify": "^1.1.0" }, @@ -21935,7 +21914,6 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", "license": "MIT", - "peer": true, "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" From ea11cf5a2f7a49a61e60a285ab687caa8f6aa001 Mon Sep 17 00:00:00 2001 From: "anthropic-code-agent[bot]" <242468646+Claude@users.noreply.github.com> Date: Wed, 4 Mar 2026 12:46:46 +0000 Subject: [PATCH 08/12] Add middleware exports to bundle and split legacyToPolymiddleware test - Export createSendBoxPolymiddleware and createSendBoxPolymiddlewareFromLegacy in packages/bundle/src/boot/actual/middleware.ts - Split legacyToPolymiddleware.html into two separate tests: - legacyAddComponent.html: Tests component added via legacy middleware - polymiddleware/addComponent.html: Tests component added via polymiddleware - Generate test snapshots for all middleware tests Co-authored-by: compulim <1622400+compulim@users.noreply.github.com> --- ...lymiddleware-add-component-html-1-snap.png | Bin 0 -> 4932 bytes ...eware-legacy-add-component-html-1-snap.png | Bin 0 -> 4932 bytes .../add.html.snap-1.png | Bin 0 -> 4932 bytes .../change.html.snap-1.png | Bin 0 -> 4932 bytes .../decorate.html.snap-1.png | Bin 0 -> 4932 bytes ...iddleware.html => legacyAddComponent.html} | 13 ++--- .../remove.html.snap-1.png | Bin 0 -> 4932 bytes .../polymiddleware/add.html.snap-1.png | Bin 0 -> 4932 bytes .../sendBox/polymiddleware/addComponent.html | 53 ++++++++++++++++++ .../polymiddleware/change.html.snap-1.png | Bin 0 -> 4932 bytes .../polymiddleware/decorate.html.snap-1.png | Bin 0 -> 4932 bytes .../polymiddleware/remove.html.snap-1.png | Bin 0 -> 4932 bytes .../polymiddleware/simple.html.snap-1.png | Bin 0 -> 4932 bytes packages/bundle/src/boot/actual/middleware.ts | 15 +++++ 14 files changed, 73 insertions(+), 8 deletions(-) create mode 100644 __tests__/__image_snapshots__/html/add-component-html-html-2-middleware-send-box-polymiddleware-add-component-html-1-snap.png create mode 100644 __tests__/__image_snapshots__/html/legacy-add-component-html-html-2-middleware-send-box-legacy-send-box-middleware-legacy-add-component-html-1-snap.png create mode 100644 __tests__/html2/middleware/sendBox/legacySendBoxMiddleware/add.html.snap-1.png create mode 100644 __tests__/html2/middleware/sendBox/legacySendBoxMiddleware/change.html.snap-1.png create mode 100644 __tests__/html2/middleware/sendBox/legacySendBoxMiddleware/decorate.html.snap-1.png rename __tests__/html2/middleware/sendBox/legacySendBoxMiddleware/{legacyToPolymiddleware.html => legacyAddComponent.html} (77%) create mode 100644 __tests__/html2/middleware/sendBox/legacySendBoxMiddleware/remove.html.snap-1.png create mode 100644 __tests__/html2/middleware/sendBox/polymiddleware/add.html.snap-1.png create mode 100644 __tests__/html2/middleware/sendBox/polymiddleware/addComponent.html create mode 100644 __tests__/html2/middleware/sendBox/polymiddleware/change.html.snap-1.png create mode 100644 __tests__/html2/middleware/sendBox/polymiddleware/decorate.html.snap-1.png create mode 100644 __tests__/html2/middleware/sendBox/polymiddleware/remove.html.snap-1.png create mode 100644 __tests__/html2/middleware/sendBox/polymiddleware/simple.html.snap-1.png diff --git a/__tests__/__image_snapshots__/html/add-component-html-html-2-middleware-send-box-polymiddleware-add-component-html-1-snap.png b/__tests__/__image_snapshots__/html/add-component-html-html-2-middleware-send-box-polymiddleware-add-component-html-1-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..c22dbf469d79cfa54284d147d28857a8ab0e5ed1 GIT binary patch literal 4932 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 literal 0 HcmV?d00001 diff --git a/__tests__/__image_snapshots__/html/legacy-add-component-html-html-2-middleware-send-box-legacy-send-box-middleware-legacy-add-component-html-1-snap.png b/__tests__/__image_snapshots__/html/legacy-add-component-html-html-2-middleware-send-box-legacy-send-box-middleware-legacy-add-component-html-1-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..c22dbf469d79cfa54284d147d28857a8ab0e5ed1 GIT binary patch literal 4932 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 literal 0 HcmV?d00001 diff --git a/__tests__/html2/middleware/sendBox/legacySendBoxMiddleware/add.html.snap-1.png b/__tests__/html2/middleware/sendBox/legacySendBoxMiddleware/add.html.snap-1.png new file mode 100644 index 0000000000000000000000000000000000000000..c22dbf469d79cfa54284d147d28857a8ab0e5ed1 GIT binary patch literal 4932 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 literal 0 HcmV?d00001 diff --git a/__tests__/html2/middleware/sendBox/legacySendBoxMiddleware/change.html.snap-1.png b/__tests__/html2/middleware/sendBox/legacySendBoxMiddleware/change.html.snap-1.png new file mode 100644 index 0000000000000000000000000000000000000000..c22dbf469d79cfa54284d147d28857a8ab0e5ed1 GIT binary patch literal 4932 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 literal 0 HcmV?d00001 diff --git a/__tests__/html2/middleware/sendBox/legacySendBoxMiddleware/decorate.html.snap-1.png b/__tests__/html2/middleware/sendBox/legacySendBoxMiddleware/decorate.html.snap-1.png new file mode 100644 index 0000000000000000000000000000000000000000..c22dbf469d79cfa54284d147d28857a8ab0e5ed1 GIT binary patch literal 4932 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 literal 0 HcmV?d00001 diff --git a/__tests__/html2/middleware/sendBox/legacySendBoxMiddleware/legacyToPolymiddleware.html b/__tests__/html2/middleware/sendBox/legacySendBoxMiddleware/legacyAddComponent.html similarity index 77% rename from __tests__/html2/middleware/sendBox/legacySendBoxMiddleware/legacyToPolymiddleware.html rename to __tests__/html2/middleware/sendBox/legacySendBoxMiddleware/legacyAddComponent.html index 73067c47e6..10b2be7a2c 100644 --- a/__tests__/html2/middleware/sendBox/legacySendBoxMiddleware/legacyToPolymiddleware.html +++ b/__tests__/html2/middleware/sendBox/legacySendBoxMiddleware/legacyAddComponent.html @@ -23,26 +23,23 @@ const { testHelpers: { createDirectLineEmulator }, WebChat: { - middleware: { createSendBoxPolymiddleware, createSendBoxPolymiddlewareFromLegacy, sendBoxComponent } + middleware: { createSendBoxPolymiddlewareFromLegacy } } } = window; const { directLine, store } = createDirectLineEmulator(); - const Downstream = () => createElement('div', {}, ''); - - const polymiddleware = [ + const sendBoxPolymiddleware = [ createSendBoxPolymiddlewareFromLegacy(() => next => request => { const child = next(request); return () => createElement('div', { style: { border: 'solid 2px blue' } }, child?.()); - }), - createSendBoxPolymiddleware(next => request => sendBoxComponent(Downstream)) + }) ]; WebChat.renderWebChat( { directLine, - polymiddleware, + sendBoxPolymiddleware, store }, document.getElementById('webchat') @@ -50,7 +47,7 @@ await pageConditions.uiConnected(); - await host.snapshot('local'); + await host.snapshot('legacy-component'); }); diff --git a/__tests__/html2/middleware/sendBox/legacySendBoxMiddleware/remove.html.snap-1.png b/__tests__/html2/middleware/sendBox/legacySendBoxMiddleware/remove.html.snap-1.png new file mode 100644 index 0000000000000000000000000000000000000000..c22dbf469d79cfa54284d147d28857a8ab0e5ed1 GIT binary patch literal 4932 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 literal 0 HcmV?d00001 diff --git a/__tests__/html2/middleware/sendBox/polymiddleware/add.html.snap-1.png b/__tests__/html2/middleware/sendBox/polymiddleware/add.html.snap-1.png new file mode 100644 index 0000000000000000000000000000000000000000..c22dbf469d79cfa54284d147d28857a8ab0e5ed1 GIT binary patch literal 4932 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 literal 0 HcmV?d00001 diff --git a/__tests__/html2/middleware/sendBox/polymiddleware/addComponent.html b/__tests__/html2/middleware/sendBox/polymiddleware/addComponent.html new file mode 100644 index 0000000000..589d3b973f --- /dev/null +++ b/__tests__/html2/middleware/sendBox/polymiddleware/addComponent.html @@ -0,0 +1,53 @@ + + + + + + + + + + + +
+ + + diff --git a/__tests__/html2/middleware/sendBox/polymiddleware/change.html.snap-1.png b/__tests__/html2/middleware/sendBox/polymiddleware/change.html.snap-1.png new file mode 100644 index 0000000000000000000000000000000000000000..c22dbf469d79cfa54284d147d28857a8ab0e5ed1 GIT binary patch literal 4932 zcmeI0`CpRR7sn}^Y}F|n%`$bew2~Q3G*J;MD^qhxTgGw05~Rj8$~iv$Hw3ck5(KjP#=6zu3NkK63W59xaXEJ6OkBa#5VjmEY)u;7Tv%WG&$APa zXG*>GzW(CAd3|`#p{%FVDMyV@-eMXV+**4wYMn<^|48f5&`^LV0dCIcFj$r>4UOEJ z;^l)pT+uY{RYIfWEr)d~*FNU!y2l5xYrM8<+(?7X`5yh5YeuRqq{*7wa{> zbiQwVzmo4__}&KJo#DGDey73z2c%C#qx{pB!@-nNpAs@;$MXaKLDh4~<4HRs;DS`A zh&RIQ*hX;xU#(iy3yd4xB0T_$j1jNQyp7BcugSH-c50KB=s)QG7Q`nkHcH=ZbZ#j- zWjh8Ry`wWcOO92D(dz5$(7+6fqIgkmFxgIYAFUW$7iTkh!oZfFI9Gy{mp<81HF9g? z@U?+(Pe*z0x<_<`LP{^r0Z)lro-Aqai(BCMP#P0H>@q7#loiGf1IZ}G1?&8&rj;2z z|EShY&GG@hYT+$kIkWCjsd8aJ@+8@?^UjDHdbxXGc%h~%On#K}5_9*8Vz!+GFwur+ ze1Aaf(A6IIV%~%q3Siha%|0BJQ4(hC)QUL^YR7JRj)WjdaBi9Nz4YYIh0nn$;)-U~ zM<;EiG#S25-K|{Vs}0e#IgSHL z+M?lR(Kx>&v^=fH(f96~nR>BzttU~Iao?h8DW9(p4T>0MMS~=@vZ6uO>1-Ik$7Oj) zLR?HsNyOwiBggKVSWWz%FkRi=QduQM#T zlWS7z8(!UKgd8oqLh=Kc-ms4gy06PYJ(E5vTjDVDW`C#1bN?i^#n={h-{kyuu=ihjJ^9$ z9vWu^r-q#=4y=XSn{|jNuN1ACMg~o+5W@SP&L_&t&}?D+MB!qukEimTUQ=batGRMI zlEgHgzM-MDJ)&kH;%xvC5PlQOxxjeg)XstM+9AiqK^WTvm&_^_X6!;|FpE|OC#dv^ zrngg6H~YrruVrd^1&M7E*{odPu6XM_hH>EI_sl3A_v4jfG>Tn&LZ@_@$0gRh+hD%u zPX?O!H}8CoU&Nbjf))*JgNXRCduF2LHTygZf#0u5@Lb1O>w_0qrLzbRkLbO{k=J|j zuYI{((x95CN5(P;7GThdM4>rg5Dj;IDidDXz0YB$F1Us!%s~_5{yO#t1#C8X3fazQ zt)3kb^UNfNFHN$=*fO5iiSj~4CBRH<^UAl|iXDon{e1C$Sn%RdELz@yN5iQ#viknU znF2gVzo}uq+l^-LaK}V;MG%cF-eemMXIuX4aN!f0nk?|jokr5{fMT=-U`C&;Qwm!B zW^9N8gCJNm@TI>gn+fU?qxD5!zIXRVXk|+UNh#i>6HzysG(o85-OTZiW_Xg8d+vRi z=euXgUhP5IB+hp^!}2SJE)W# zU&f`2Ua7O6<8&abLe#w$x^ZO#4Sj zz#d5J7WRpHP70L(x4?Spn_nyTxd=8h0^ zyKYRnRYpE`IIn1utwY_GUbqj-=rY$#pQva01F>hDR!;2{Xy%TNc`c+Oj=s$7a!t?V{@ThpiF8&m%(v0&8FBU2IvEn1 zMuoo_$qqQPXdG$_;Fm9-{^Jor1$qJha!KJe(5rFGj(lZb1u=_v&JdH-Z|3AMRq2GR z+H|=4E<&E|7h#9^eXWCjn>$faenML>L|Gh6?xQqq4=L5};0g}mv2gFU2XwBzxV*d@ z3rT+t=1B<3WAYfZoq`bGdj$&P9?3I$R&IU)Nd@FeFlYDsq<0;=5xvMrK`8!USHkTd z@>axAbS(wwrO3IQ$qFt5fR=`Ir(HSXnubkFgzAs8q|0HBjE_ZN!DshP4kt)n8ybX)vBgH zvj9&!VJ4XAVPrfI1kbXp6K4BS@8S3-FHuoA#3AGv5t;tt!gYO)0OM+i2v*Jh>zG3u zKG@`roas_~-cQd`#C_m*ercB`T%jGmp61Mq3PKEZ96i4^)r<`_jXZ=eYf!S#NY!i# zZq_Q&&g8j%APP!J;m3S(NVcJMB&FA;k~jIC8oqpPBsuadn0X${%R6~?!-(<2j{39L z(@=A_IY;*PNaz2yZ?szcg{&p>#W*#Ch{jVc%jAG@^s-6DLID!7GDV}oGk00|D5v7y z&eVry!|+h|ZB#AmDMb&nDbIzdTab+HI-)gVmzD9X_<=+8n5kK)RiDwjw7nn7lLSE& zznI<)&5OaB&$v8j;#ZE%@jg)%rtnR^_RW(fJ5BQ&Zr#=+_a5M=z1~B5QpIT(IHaMblz1i&0Z*il4(rUkv)y^X% zl3`4$Lr$2|=o4!&TD|(|!l}b~GJkDKh8EA$G}eCQvlSDX(fI9c#Pq>=?hH9t1(Fgs zF&K1vvz6JY_f%+l551UYcAK^BK*AIlJ*%&$p$4szc3mqq(6yf+k15=2Bhpk9#f2A)i9sp>oDhy6LY>$o0hpZIK+zan%!{_O>d z)%?Yzjey08+FBe1!HUE~J5Ry&bbT>t0+aJ0mZD|x7T^m9eyQ&DwivRyW_y;=MI3)< z%h`m|6qK_?b(tDxL=4}0KM>wHAyiAc!Ao7zdT<=i+$$O5MP-qWJwPo6RFxY<1b{|CltXH6akSI`-Ee0dN+! d_M7lEAeos}zG<+8?cfT;<+#VO*GGeH{SN^O;miO4 literal 0 HcmV?d00001 diff --git a/__tests__/html2/middleware/sendBox/polymiddleware/decorate.html.snap-1.png b/__tests__/html2/middleware/sendBox/polymiddleware/decorate.html.snap-1.png new file mode 100644 index 0000000000000000000000000000000000000000..c22dbf469d79cfa54284d147d28857a8ab0e5ed1 GIT binary patch literal 4932 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 literal 0 HcmV?d00001 diff --git a/__tests__/html2/middleware/sendBox/polymiddleware/remove.html.snap-1.png b/__tests__/html2/middleware/sendBox/polymiddleware/remove.html.snap-1.png new file mode 100644 index 0000000000000000000000000000000000000000..c22dbf469d79cfa54284d147d28857a8ab0e5ed1 GIT binary patch literal 4932 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 literal 0 HcmV?d00001 diff --git a/__tests__/html2/middleware/sendBox/polymiddleware/simple.html.snap-1.png b/__tests__/html2/middleware/sendBox/polymiddleware/simple.html.snap-1.png new file mode 100644 index 0000000000000000000000000000000000000000..c22dbf469d79cfa54284d147d28857a8ab0e5ed1 GIT binary patch literal 4932 zcmeI0`CpRR7sn}^Y}F|n%`$bew2~Q3G*J;MD^qhxTgGw05~Rj8$~iv$Hw3ck5(KjP#=6zu3NkK63W59xaXEJ6OkBa#5VjmEY)u;7Tv%WG&$APa zXG*>GzW(CAd3|`#p{%FVDMyV@-eMXV+**4wYMn<^|48f5&`^LV0dCIcFj$r>4UOEJ z;^l)pT+uY{RYIfWEr)d~*FNU!y2l5xYrM8<+(?7X`5yh5YeuRqq{*7wa{> zbiQwVzmo4__}&KJo#DGDey73z2c%C#qx{pB!@-nNpAs@;$MXaKLDh4~<4HRs;DS`A zh&RIQ*hX;xU#(iy3yd4xB0T_$j1jNQyp7BcugSH-c50KB=s)QG7Q`nkHcH=ZbZ#j- zWjh8Ry`wWcOO92D(dz5$(7+6fqIgkmFxgIYAFUW$7iTkh!oZfFI9Gy{mp<81HF9g? z@U?+(Pe*z0x<_<`LP{^r0Z)lro-Aqai(BCMP#P0H>@q7#loiGf1IZ}G1?&8&rj;2z z|EShY&GG@hYT+$kIkWCjsd8aJ@+8@?^UjDHdbxXGc%h~%On#K}5_9*8Vz!+GFwur+ ze1Aaf(A6IIV%~%q3Siha%|0BJQ4(hC)QUL^YR7JRj)WjdaBi9Nz4YYIh0nn$;)-U~ zM<;EiG#S25-K|{Vs}0e#IgSHL z+M?lR(Kx>&v^=fH(f96~nR>BzttU~Iao?h8DW9(p4T>0MMS~=@vZ6uO>1-Ik$7Oj) zLR?HsNyOwiBggKVSWWz%FkRi=QduQM#T zlWS7z8(!UKgd8oqLh=Kc-ms4gy06PYJ(E5vTjDVDW`C#1bN?i^#n={h-{kyuu=ihjJ^9$ z9vWu^r-q#=4y=XSn{|jNuN1ACMg~o+5W@SP&L_&t&}?D+MB!qukEimTUQ=batGRMI zlEgHgzM-MDJ)&kH;%xvC5PlQOxxjeg)XstM+9AiqK^WTvm&_^_X6!;|FpE|OC#dv^ zrngg6H~YrruVrd^1&M7E*{odPu6XM_hH>EI_sl3A_v4jfG>Tn&LZ@_@$0gRh+hD%u zPX?O!H}8CoU&Nbjf))*JgNXRCduF2LHTygZf#0u5@Lb1O>w_0qrLzbRkLbO{k=J|j zuYI{((x95CN5(P;7GThdM4>rg5Dj;IDidDXz0YB$F1Us!%s~_5{yO#t1#C8X3fazQ zt)3kb^UNfNFHN$=*fO5iiSj~4CBRH<^UAl|iXDon{e1C$Sn%RdELz@yN5iQ#viknU znF2gVzo}uq+l^-LaK}V;MG%cF-eemMXIuX4aN!f0nk?|jokr5{fMT=-U`C&;Qwm!B zW^9N8gCJNm@TI>gn+fU?qxD5!zIXRVXk|+UNh#i>6HzysG(o85-OTZiW_Xg8d+vRi z=euXgUhP5IB+hp^!}2SJE)W# zU&f`2Ua7O6<8&abLe#w$x^ZO#4Sj zz#d5J7WRpHP70L(x4?Spn_nyTxd=8h0^ zyKYRnRYpE`IIn1utwY_GUbqj-=rY$#pQva01F>hDR!;2{Xy%TNc`c+Oj=s$7a!t?V{@ThpiF8&m%(v0&8FBU2IvEn1 zMuoo_$qqQPXdG$_;Fm9-{^Jor1$qJha!KJe(5rFGj(lZb1u=_v&JdH-Z|3AMRq2GR z+H|=4E<&E|7h#9^eXWCjn>$faenML>L|Gh6?xQqq4=L5};0g}mv2gFU2XwBzxV*d@ z3rT+t=1B<3WAYfZoq`bGdj$&P9?3I$R&IU)Nd@FeFlYDsq<0;=5xvMrK`8!USHkTd z@>axAbS(wwrO3IQ$qFt5fR=`Ir(HSXnubkFgzAs8q|0HBjE_ZN!DshP4kt)n8ybX)vBgH zvj9&!VJ4XAVPrfI1kbXp6K4BS@8S3-FHuoA#3AGv5t;tt!gYO)0OM+i2v*Jh>zG3u zKG@`roas_~-cQd`#C_m*ercB`T%jGmp61Mq3PKEZ96i4^)r<`_jXZ=eYf!S#NY!i# zZq_Q&&g8j%APP!J;m3S(NVcJMB&FA;k~jIC8oqpPBsuadn0X${%R6~?!-(<2j{39L z(@=A_IY;*PNaz2yZ?szcg{&p>#W*#Ch{jVc%jAG@^s-6DLID!7GDV}oGk00|D5v7y z&eVry!|+h|ZB#AmDMb&nDbIzdTab+HI-)gVmzD9X_<=+8n5kK)RiDwjw7nn7lLSE& zznI<)&5OaB&$v8j;#ZE%@jg)%rtnR^_RW(fJ5BQ&Zr#=+_a5M=z1~B5QpIT(IHaMblz1i&0Z*il4(rUkv)y^X% zl3`4$Lr$2|=o4!&TD|(|!l}b~GJkDKh8EA$G}eCQvlSDX(fI9c#Pq>=?hH9t1(Fgs zF&K1vvz6JY_f%+l551UYcAK^BK*AIlJ*%&$p$4szc3mqq(6yf+k15=2Bhpk9#f2A)i9sp>oDhy6LY>$o0hpZIK+zan%!{_O>d z)%?Yzjey08+FBe1!HUE~J5Ry&bbT>t0+aJ0mZD|x7T^m9eyQ&DwivRyW_y;=MI3)< z%h`m|6qK_?b(tDxL=4}0KM>wHAyiAc!Ao7zdT<=i+$$O5MP-qWJwPo6RFxY<1b{|CltXH6akSI`-Ee0dN+! d_M7lEAeos}zG<+8?cfT;<+#VO*GGeH{SN^O;miO4 literal 0 HcmV?d00001 diff --git a/packages/bundle/src/boot/actual/middleware.ts b/packages/bundle/src/boot/actual/middleware.ts index 9641816786..feefface3c 100644 --- a/packages/bundle/src/boot/actual/middleware.ts +++ b/packages/bundle/src/boot/actual/middleware.ts @@ -27,4 +27,19 @@ export { type ErrorBoxPolymiddlewareRequest } from 'botframework-webchat-api/middleware'; +export { + createSendBoxPolymiddleware, + sendBoxComponent, + SendBoxPolymiddlewareProxy, + useBuildRenderSendBoxCallback, + type SendBoxPolymiddleware, + type SendBoxPolymiddlewareHandler, + type SendBoxPolymiddlewareHandlerResult, + type SendBoxPolymiddlewareProps, + type SendBoxPolymiddlewareProxyProps, + type SendBoxPolymiddlewareRenderer, + type SendBoxPolymiddlewareRequest +} from 'botframework-webchat-api/middleware'; + export { createActivityPolymiddlewareFromLegacy } from 'botframework-webchat-api/middleware'; +export { createSendBoxPolymiddlewareFromLegacy } from 'botframework-webchat-api/middleware'; From 5b7df5499fc166c7b450a1789ff6e7be6a1664ac Mon Sep 17 00:00:00 2001 From: "anthropic-code-agent[bot]" <242468646+Claude@users.noreply.github.com> Date: Wed, 4 Mar 2026 13:03:48 +0000 Subject: [PATCH 09/12] Fix sendBox polymiddleware signature and update snapshot names Co-authored-by: compulim <1622400+compulim@users.noreply.github.com> --- .../legacyAddComponent.html | 2 +- .../legacyAddComponent.html.snap-1.png | Bin 0 -> 4932 bytes .../sendBox/polymiddleware/addComponent.html | 4 ++-- .../polymiddleware/addComponent.html.snap-1.png | Bin 0 -> 4932 bytes 4 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 __tests__/html2/middleware/sendBox/legacySendBoxMiddleware/legacyAddComponent.html.snap-1.png create mode 100644 __tests__/html2/middleware/sendBox/polymiddleware/addComponent.html.snap-1.png diff --git a/__tests__/html2/middleware/sendBox/legacySendBoxMiddleware/legacyAddComponent.html b/__tests__/html2/middleware/sendBox/legacySendBoxMiddleware/legacyAddComponent.html index 10b2be7a2c..1c368260f7 100644 --- a/__tests__/html2/middleware/sendBox/legacySendBoxMiddleware/legacyAddComponent.html +++ b/__tests__/html2/middleware/sendBox/legacySendBoxMiddleware/legacyAddComponent.html @@ -47,7 +47,7 @@ await pageConditions.uiConnected(); - await host.snapshot('legacy-component'); + await host.snapshot('local'); }); diff --git a/__tests__/html2/middleware/sendBox/legacySendBoxMiddleware/legacyAddComponent.html.snap-1.png b/__tests__/html2/middleware/sendBox/legacySendBoxMiddleware/legacyAddComponent.html.snap-1.png new file mode 100644 index 0000000000000000000000000000000000000000..c22dbf469d79cfa54284d147d28857a8ab0e5ed1 GIT binary patch literal 4932 zcmeI0`CpRR7sn}^Y}F|n%`$bew2~Q3G*J;MD^qhxTgGw05~Rj8$~iv$Hw3ck5(KjP#=6zu3NkK63W59xaXEJ6OkBa#5VjmEY)u;7Tv%WG&$APa zXG*>GzW(CAd3|`#p{%FVDMyV@-eMXV+**4wYMn<^|48f5&`^LV0dCIcFj$r>4UOEJ z;^l)pT+uY{RYIfWEr)d~*FNU!y2l5xYrM8<+(?7X`5yh5YeuRqq{*7wa{> zbiQwVzmo4__}&KJo#DGDey73z2c%C#qx{pB!@-nNpAs@;$MXaKLDh4~<4HRs;DS`A zh&RIQ*hX;xU#(iy3yd4xB0T_$j1jNQyp7BcugSH-c50KB=s)QG7Q`nkHcH=ZbZ#j- zWjh8Ry`wWcOO92D(dz5$(7+6fqIgkmFxgIYAFUW$7iTkh!oZfFI9Gy{mp<81HF9g? z@U?+(Pe*z0x<_<`LP{^r0Z)lro-Aqai(BCMP#P0H>@q7#loiGf1IZ}G1?&8&rj;2z z|EShY&GG@hYT+$kIkWCjsd8aJ@+8@?^UjDHdbxXGc%h~%On#K}5_9*8Vz!+GFwur+ ze1Aaf(A6IIV%~%q3Siha%|0BJQ4(hC)QUL^YR7JRj)WjdaBi9Nz4YYIh0nn$;)-U~ zM<;EiG#S25-K|{Vs}0e#IgSHL z+M?lR(Kx>&v^=fH(f96~nR>BzttU~Iao?h8DW9(p4T>0MMS~=@vZ6uO>1-Ik$7Oj) zLR?HsNyOwiBggKVSWWz%FkRi=QduQM#T zlWS7z8(!UKgd8oqLh=Kc-ms4gy06PYJ(E5vTjDVDW`C#1bN?i^#n={h-{kyuu=ihjJ^9$ z9vWu^r-q#=4y=XSn{|jNuN1ACMg~o+5W@SP&L_&t&}?D+MB!qukEimTUQ=batGRMI zlEgHgzM-MDJ)&kH;%xvC5PlQOxxjeg)XstM+9AiqK^WTvm&_^_X6!;|FpE|OC#dv^ zrngg6H~YrruVrd^1&M7E*{odPu6XM_hH>EI_sl3A_v4jfG>Tn&LZ@_@$0gRh+hD%u zPX?O!H}8CoU&Nbjf))*JgNXRCduF2LHTygZf#0u5@Lb1O>w_0qrLzbRkLbO{k=J|j zuYI{((x95CN5(P;7GThdM4>rg5Dj;IDidDXz0YB$F1Us!%s~_5{yO#t1#C8X3fazQ zt)3kb^UNfNFHN$=*fO5iiSj~4CBRH<^UAl|iXDon{e1C$Sn%RdELz@yN5iQ#viknU znF2gVzo}uq+l^-LaK}V;MG%cF-eemMXIuX4aN!f0nk?|jokr5{fMT=-U`C&;Qwm!B zW^9N8gCJNm@TI>gn+fU?qxD5!zIXRVXk|+UNh#i>6HzysG(o85-OTZiW_Xg8d+vRi z=euXgUhP5IB+hp^!}2SJE)W# zU&f`2Ua7O6<8&abLe#w$x^ZO#4Sj zz#d5J7WRpHP70L(x4?Spn_nyTxd=8h0^ zyKYRnRYpE`IIn1utwY_GUbqj-=rY$#pQva01F>hDR!;2{Xy%TNc`c+Oj=s$7a!t?V{@ThpiF8&m%(v0&8FBU2IvEn1 zMuoo_$qqQPXdG$_;Fm9-{^Jor1$qJha!KJe(5rFGj(lZb1u=_v&JdH-Z|3AMRq2GR z+H|=4E<&E|7h#9^eXWCjn>$faenML>L|Gh6?xQqq4=L5};0g}mv2gFU2XwBzxV*d@ z3rT+t=1B<3WAYfZoq`bGdj$&P9?3I$R&IU)Nd@FeFlYDsq<0;=5xvMrK`8!USHkTd z@>axAbS(wwrO3IQ$qFt5fR=`Ir(HSXnubkFgzAs8q|0HBjE_ZN!DshP4kt)n8ybX)vBgH zvj9&!VJ4XAVPrfI1kbXp6K4BS@8S3-FHuoA#3AGv5t;tt!gYO)0OM+i2v*Jh>zG3u zKG@`roas_~-cQd`#C_m*ercB`T%jGmp61Mq3PKEZ96i4^)r<`_jXZ=eYf!S#NY!i# zZq_Q&&g8j%APP!J;m3S(NVcJMB&FA;k~jIC8oqpPBsuadn0X${%R6~?!-(<2j{39L z(@=A_IY;*PNaz2yZ?szcg{&p>#W*#Ch{jVc%jAG@^s-6DLID!7GDV}oGk00|D5v7y z&eVry!|+h|ZB#AmDMb&nDbIzdTab+HI-)gVmzD9X_<=+8n5kK)RiDwjw7nn7lLSE& zznI<)&5OaB&$v8j;#ZE%@jg)%rtnR^_RW(fJ5BQ&Zr#=+_a5M=z1~B5QpIT(IHaMblz1i&0Z*il4(rUkv)y^X% zl3`4$Lr$2|=o4!&TD|(|!l}b~GJkDKh8EA$G}eCQvlSDX(fI9c#Pq>=?hH9t1(Fgs zF&K1vvz6JY_f%+l551UYcAK^BK*AIlJ*%&$p$4szc3mqq(6yf+k15=2Bhpk9#f2A)i9sp>oDhy6LY>$o0hpZIK+zan%!{_O>d z)%?Yzjey08+FBe1!HUE~J5Ry&bbT>t0+aJ0mZD|x7T^m9eyQ&DwivRyW_y;=MI3)< z%h`m|6qK_?b(tDxL=4}0KM>wHAyiAc!Ao7zdT<=i+$$O5MP-qWJwPo6RFxY<1b{|CltXH6akSI`-Ee0dN+! d_M7lEAeos}zG<+8?cfT;<+#VO*GGeH{SN^O;miO4 literal 0 HcmV?d00001 diff --git a/__tests__/html2/middleware/sendBox/polymiddleware/addComponent.html b/__tests__/html2/middleware/sendBox/polymiddleware/addComponent.html index 589d3b973f..fedaa568c2 100644 --- a/__tests__/html2/middleware/sendBox/polymiddleware/addComponent.html +++ b/__tests__/html2/middleware/sendBox/polymiddleware/addComponent.html @@ -32,7 +32,7 @@ const Downstream = () => createElement('div', {}, ''); const sendBoxPolymiddleware = [ - createSendBoxPolymiddleware(next => request => sendBoxComponent(Downstream)) + createSendBoxPolymiddleware(next => () => sendBoxComponent(Downstream)) ]; WebChat.renderWebChat( @@ -46,7 +46,7 @@ await pageConditions.uiConnected(); - await host.snapshot('poly-component'); + await host.snapshot('local'); }); diff --git a/__tests__/html2/middleware/sendBox/polymiddleware/addComponent.html.snap-1.png b/__tests__/html2/middleware/sendBox/polymiddleware/addComponent.html.snap-1.png new file mode 100644 index 0000000000000000000000000000000000000000..c22dbf469d79cfa54284d147d28857a8ab0e5ed1 GIT binary patch literal 4932 zcmeI0`CpRR7sn}^Y}F|n%`$bew2~Q3G*J;MD^qhxTgGw05~Rj8$~iv$Hw3ck5(KjP#=6zu3NkK63W59xaXEJ6OkBa#5VjmEY)u;7Tv%WG&$APa zXG*>GzW(CAd3|`#p{%FVDMyV@-eMXV+**4wYMn<^|48f5&`^LV0dCIcFj$r>4UOEJ z;^l)pT+uY{RYIfWEr)d~*FNU!y2l5xYrM8<+(?7X`5yh5YeuRqq{*7wa{> zbiQwVzmo4__}&KJo#DGDey73z2c%C#qx{pB!@-nNpAs@;$MXaKLDh4~<4HRs;DS`A zh&RIQ*hX;xU#(iy3yd4xB0T_$j1jNQyp7BcugSH-c50KB=s)QG7Q`nkHcH=ZbZ#j- zWjh8Ry`wWcOO92D(dz5$(7+6fqIgkmFxgIYAFUW$7iTkh!oZfFI9Gy{mp<81HF9g? z@U?+(Pe*z0x<_<`LP{^r0Z)lro-Aqai(BCMP#P0H>@q7#loiGf1IZ}G1?&8&rj;2z z|EShY&GG@hYT+$kIkWCjsd8aJ@+8@?^UjDHdbxXGc%h~%On#K}5_9*8Vz!+GFwur+ ze1Aaf(A6IIV%~%q3Siha%|0BJQ4(hC)QUL^YR7JRj)WjdaBi9Nz4YYIh0nn$;)-U~ zM<;EiG#S25-K|{Vs}0e#IgSHL z+M?lR(Kx>&v^=fH(f96~nR>BzttU~Iao?h8DW9(p4T>0MMS~=@vZ6uO>1-Ik$7Oj) zLR?HsNyOwiBggKVSWWz%FkRi=QduQM#T zlWS7z8(!UKgd8oqLh=Kc-ms4gy06PYJ(E5vTjDVDW`C#1bN?i^#n={h-{kyuu=ihjJ^9$ z9vWu^r-q#=4y=XSn{|jNuN1ACMg~o+5W@SP&L_&t&}?D+MB!qukEimTUQ=batGRMI zlEgHgzM-MDJ)&kH;%xvC5PlQOxxjeg)XstM+9AiqK^WTvm&_^_X6!;|FpE|OC#dv^ zrngg6H~YrruVrd^1&M7E*{odPu6XM_hH>EI_sl3A_v4jfG>Tn&LZ@_@$0gRh+hD%u zPX?O!H}8CoU&Nbjf))*JgNXRCduF2LHTygZf#0u5@Lb1O>w_0qrLzbRkLbO{k=J|j zuYI{((x95CN5(P;7GThdM4>rg5Dj;IDidDXz0YB$F1Us!%s~_5{yO#t1#C8X3fazQ zt)3kb^UNfNFHN$=*fO5iiSj~4CBRH<^UAl|iXDon{e1C$Sn%RdELz@yN5iQ#viknU znF2gVzo}uq+l^-LaK}V;MG%cF-eemMXIuX4aN!f0nk?|jokr5{fMT=-U`C&;Qwm!B zW^9N8gCJNm@TI>gn+fU?qxD5!zIXRVXk|+UNh#i>6HzysG(o85-OTZiW_Xg8d+vRi z=euXgUhP5IB+hp^!}2SJE)W# zU&f`2Ua7O6<8&abLe#w$x^ZO#4Sj zz#d5J7WRpHP70L(x4?Spn_nyTxd=8h0^ zyKYRnRYpE`IIn1utwY_GUbqj-=rY$#pQva01F>hDR!;2{Xy%TNc`c+Oj=s$7a!t?V{@ThpiF8&m%(v0&8FBU2IvEn1 zMuoo_$qqQPXdG$_;Fm9-{^Jor1$qJha!KJe(5rFGj(lZb1u=_v&JdH-Z|3AMRq2GR z+H|=4E<&E|7h#9^eXWCjn>$faenML>L|Gh6?xQqq4=L5};0g}mv2gFU2XwBzxV*d@ z3rT+t=1B<3WAYfZoq`bGdj$&P9?3I$R&IU)Nd@FeFlYDsq<0;=5xvMrK`8!USHkTd z@>axAbS(wwrO3IQ$qFt5fR=`Ir(HSXnubkFgzAs8q|0HBjE_ZN!DshP4kt)n8ybX)vBgH zvj9&!VJ4XAVPrfI1kbXp6K4BS@8S3-FHuoA#3AGv5t;tt!gYO)0OM+i2v*Jh>zG3u zKG@`roas_~-cQd`#C_m*ercB`T%jGmp61Mq3PKEZ96i4^)r<`_jXZ=eYf!S#NY!i# zZq_Q&&g8j%APP!J;m3S(NVcJMB&FA;k~jIC8oqpPBsuadn0X${%R6~?!-(<2j{39L z(@=A_IY;*PNaz2yZ?szcg{&p>#W*#Ch{jVc%jAG@^s-6DLID!7GDV}oGk00|D5v7y z&eVry!|+h|ZB#AmDMb&nDbIzdTab+HI-)gVmzD9X_<=+8n5kK)RiDwjw7nn7lLSE& zznI<)&5OaB&$v8j;#ZE%@jg)%rtnR^_RW(fJ5BQ&Zr#=+_a5M=z1~B5QpIT(IHaMblz1i&0Z*il4(rUkv)y^X% zl3`4$Lr$2|=o4!&TD|(|!l}b~GJkDKh8EA$G}eCQvlSDX(fI9c#Pq>=?hH9t1(Fgs zF&K1vvz6JY_f%+l551UYcAK^BK*AIlJ*%&$p$4szc3mqq(6yf+k15=2Bhpk9#f2A)i9sp>oDhy6LY>$o0hpZIK+zan%!{_O>d z)%?Yzjey08+FBe1!HUE~J5Ry&bbT>t0+aJ0mZD|x7T^m9eyQ&DwivRyW_y;=MI3)< z%h`m|6qK_?b(tDxL=4}0KM>wHAyiAc!Ao7zdT<=i+$$O5MP-qWJwPo6RFxY<1b{|CltXH6akSI`-Ee0dN+! d_M7lEAeos}zG<+8?cfT;<+#VO*GGeH{SN^O;miO4 literal 0 HcmV?d00001 From 9e41704b2ff22609d051269367828628cf929577 Mon Sep 17 00:00:00 2001 From: "anthropic-code-agent[bot]" <242468646+Claude@users.noreply.github.com> Date: Wed, 4 Mar 2026 18:35:35 +0000 Subject: [PATCH 10/12] Addressing PR comments Co-authored-by: compulim <1622400+compulim@users.noreply.github.com> --- packages/api/src/hooks/Composer.tsx | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/api/src/hooks/Composer.tsx b/packages/api/src/hooks/Composer.tsx index 3b1794d86b..f54dfb8aa0 100644 --- a/packages/api/src/hooks/Composer.tsx +++ b/packages/api/src/hooks/Composer.tsx @@ -50,6 +50,7 @@ import errorBoxTelemetryPolymiddleware from '../errorBox/errorBoxTelemetryPolymi import PrecompiledGlobalize from '../external/PrecompiledGlobalize'; import usePonyfill from '../hooks/usePonyfill'; import createActivityPolymiddlewareFromLegacy from '../legacy/createActivityPolymiddlewareFromLegacy'; +import createSendBoxPolymiddlewareFromLegacy from '../legacy/createSendBoxPolymiddlewareFromLegacy'; import getAllLocalizedStrings from '../localization/getAllLocalizedStrings'; import { SendBoxMiddlewareProvider, type SendBoxMiddleware } from '../middleware/SendBoxMiddleware'; import { @@ -524,6 +525,11 @@ const ComposerCore = ({ [activityMiddleware] ); + const polymiddlewareForLegacySendBoxMiddleware = useMemo( + () => Object.freeze([createSendBoxPolymiddlewareFromLegacy(...singleToArray(sendBoxMiddleware))]), + [sendBoxMiddleware] + ); + const polymiddleware = useMemo( () => Object.freeze([ @@ -532,9 +538,10 @@ const ComposerCore = ({ errorBoxTelemetryPolymiddleware, ...(polymiddlewareFromProps || []), ...polymiddlewareForLegacyActivityMiddleware, + ...polymiddlewareForLegacySendBoxMiddleware, activityFallbackPolymiddleware ]), - [polymiddlewareForLegacyActivityMiddleware, polymiddlewareFromProps] + [polymiddlewareForLegacyActivityMiddleware, polymiddlewareForLegacySendBoxMiddleware, polymiddlewareFromProps] ); /** From 14ded14b675f44b973854a97c3fb14195068ea7d Mon Sep 17 00:00:00 2001 From: "anthropic-code-agent[bot]" <242468646+Claude@users.noreply.github.com> Date: Wed, 4 Mar 2026 22:16:54 +0000 Subject: [PATCH 11/12] Wire up sendBox polymiddleware to replace template middleware Co-authored-by: compulim <1622400+compulim@users.noreply.github.com> --- .../src/sendBoxPolymiddleware.tsx | 8 ++--- packages/api/src/hooks/Composer.tsx | 29 ++++++++++--------- packages/component/src/BasicWebChat.tsx | 5 ++-- 3 files changed, 22 insertions(+), 20 deletions(-) diff --git a/packages/api-middleware/src/sendBoxPolymiddleware.tsx b/packages/api-middleware/src/sendBoxPolymiddleware.tsx index cdc2a9203d..53345ab18c 100644 --- a/packages/api-middleware/src/sendBoxPolymiddleware.tsx +++ b/packages/api-middleware/src/sendBoxPolymiddleware.tsx @@ -1,6 +1,6 @@ import { validateProps } from '@msinternal/botframework-webchat-react-valibot'; import React, { memo, useMemo } from 'react'; -import { object, pipe, readonly, type InferInput } from 'valibot'; +import { object, optional, pipe, readonly, string, type InferInput } from 'valibot'; import createErrorBoundaryMiddleware from './private/createErrorBoundaryMiddleware'; import templatePolymiddleware, { @@ -30,7 +30,7 @@ type SendBoxPolymiddlewareRenderer = InferRenderer; type SendBoxPolymiddlewareRequest = InferRequest; type SendBoxPolymiddlewareProviderProps = InferProviderProps; -const sendBoxPolymiddlewareProxyPropsSchema = pipe(object({}), readonly()); +const sendBoxPolymiddlewareProxyPropsSchema = pipe(object({ className: optional(string()) }), readonly()); type SendBoxPolymiddlewareProxyProps = Readonly>; @@ -38,11 +38,11 @@ type SendBoxPolymiddlewareProxyProps = Readonly undefined, []); - return ; + return ; }); const SendBoxPolymiddlewareProvider = memo(function SendBoxPolymiddlewareProvider({ diff --git a/packages/api/src/hooks/Composer.tsx b/packages/api/src/hooks/Composer.tsx index f54dfb8aa0..1976a9f74e 100644 --- a/packages/api/src/hooks/Composer.tsx +++ b/packages/api/src/hooks/Composer.tsx @@ -52,7 +52,7 @@ import usePonyfill from '../hooks/usePonyfill'; import createActivityPolymiddlewareFromLegacy from '../legacy/createActivityPolymiddlewareFromLegacy'; import createSendBoxPolymiddlewareFromLegacy from '../legacy/createSendBoxPolymiddlewareFromLegacy'; import getAllLocalizedStrings from '../localization/getAllLocalizedStrings'; -import { SendBoxMiddlewareProvider, type SendBoxMiddleware } from '../middleware/SendBoxMiddleware'; +import { type SendBoxMiddleware } from '../middleware/SendBoxMiddleware'; import { SendBoxToolbarMiddlewareProvider, type SendBoxToolbarMiddleware @@ -526,7 +526,10 @@ const ComposerCore = ({ ); const polymiddlewareForLegacySendBoxMiddleware = useMemo( - () => Object.freeze([createSendBoxPolymiddlewareFromLegacy(...singleToArray(sendBoxMiddleware))]), + () => { + const middleware = singleToArray(sendBoxMiddleware) as any[]; + return Object.freeze([createSendBoxPolymiddlewareFromLegacy(...middleware)]); + }, [sendBoxMiddleware] ); @@ -622,18 +625,16 @@ const ComposerCore = ({ - - - - - - {typeof children === 'function' ? children(context) : children} - - - - - - + + + + + {typeof children === 'function' ? children(context) : children} + + + + + diff --git a/packages/component/src/BasicWebChat.tsx b/packages/component/src/BasicWebChat.tsx index f910c43d18..0e72d97dbe 100644 --- a/packages/component/src/BasicWebChat.tsx +++ b/packages/component/src/BasicWebChat.tsx @@ -2,7 +2,8 @@ /* eslint react/no-unsafe: off */ import { validateProps } from '@msinternal/botframework-webchat-react-valibot'; -import { SendBoxMiddlewareProxy, hooks } from 'botframework-webchat-api'; +import { hooks } from 'botframework-webchat-api'; +import { SendBoxPolymiddlewareProxy } from 'botframework-webchat-api/middleware'; import classNames from 'classnames'; import React, { memo, useRef } from 'react'; import { object, optional, pipe, readonly, string, type InferInput } from 'valibot'; @@ -72,7 +73,7 @@ function BasicWebChat(props: BasicWebChatProps) { {!options.hideToaster && } - + ); } From 19dd8c8392fb2ab85a5a13246fd63cf1d9c7c3e8 Mon Sep 17 00:00:00 2001 From: "anthropic-code-agent[bot]" <242468646+Claude@users.noreply.github.com> Date: Wed, 4 Mar 2026 23:24:19 +0000 Subject: [PATCH 12/12] Fix sendBox polymiddleware tests and formatting - Fixed simple.html: Changed middleware signature from `request => next(request)` to `() => next()` - Fixed addComponent.html: Renamed prop from `sendBoxPolymiddleware` to `polymiddleware` - Fixed decorate.html: Added missing `className` prop to DecoratedSendBox component - Fixed prettier/eslint formatting issues in api-middleware and api packages - Regenerated all 11 snapshots for sendBox middleware tests - All 11 sendBox middleware tests now pass Co-authored-by: compulim <1622400+compulim@users.noreply.github.com> --- .../add.html.snap-1.png | Bin 4932 -> 1941 bytes .../change.html.snap-1.png | Bin 4932 -> 1941 bytes .../decorate.html.snap-1.png | Bin 4932 -> 1941 bytes .../legacyAddComponent.html.snap-1.png | Bin 4932 -> 1941 bytes .../remove.html.snap-1.png | Bin 4932 -> 1941 bytes .../polymiddleware/add.html.snap-1.png | Bin 4932 -> 4134 bytes .../sendBox/polymiddleware/addComponent.html | 4 ++-- .../addComponent.html.snap-1.png | Bin 4932 -> 3809 bytes .../polymiddleware/change.html.snap-1.png | Bin 4932 -> 4030 bytes .../sendBox/polymiddleware/decorate.html | 4 ++-- .../polymiddleware/decorate.html.snap-1.png | Bin 4932 -> 2023 bytes .../polymiddleware/remove.html.snap-1.png | Bin 4932 -> 1941 bytes .../sendBox/polymiddleware/simple.html | 6 +++--- .../polymiddleware/simple.html.snap-1.png | Bin 4932 -> 2023 bytes .../src/sendBoxPolymiddleware.tsx | 4 +--- packages/api/src/hooks/Composer.tsx | 11 ++++------- .../api/src/legacy/LegacySendBoxBridge.tsx | 5 ++++- .../createSendBoxPolymiddlewareFromLegacy.tsx | 13 ++++++++++++- 18 files changed, 28 insertions(+), 19 deletions(-) diff --git a/__tests__/html2/middleware/sendBox/legacySendBoxMiddleware/add.html.snap-1.png b/__tests__/html2/middleware/sendBox/legacySendBoxMiddleware/add.html.snap-1.png index c22dbf469d79cfa54284d147d28857a8ab0e5ed1..3c10d7b821cd22db9e6e79b11212aa23a2e93c6e 100644 GIT binary patch literal 1941 zcmeAS@N?(olHy`uVBq!ia0y~yV9a1(U~1rC0*csGlzw1fVE6KLaSW-L^X7^nBLf4+ z0R{fw;n#S6E3#CVGY7n3aCyXFRLC&XqQOVTL5)vAn0-Pg^NAyjDWk%pVKSN^Msvex zQ7~FOj@Av}iqRHWr~dyh+Nd@M$Y2B2s>}>;`FQ^2Mfy(ziZFP(`njxgN@xNA-{VL5 literal 4932 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 diff --git a/__tests__/html2/middleware/sendBox/legacySendBoxMiddleware/change.html.snap-1.png b/__tests__/html2/middleware/sendBox/legacySendBoxMiddleware/change.html.snap-1.png index c22dbf469d79cfa54284d147d28857a8ab0e5ed1..3c10d7b821cd22db9e6e79b11212aa23a2e93c6e 100644 GIT binary patch literal 1941 zcmeAS@N?(olHy`uVBq!ia0y~yV9a1(U~1rC0*csGlzw1fVE6KLaSW-L^X7^nBLf4+ z0R{fw;n#S6E3#CVGY7n3aCyXFRLC&XqQOVTL5)vAn0-Pg^NAyjDWk%pVKSN^Msvex zQ7~FOj@Av}iqRHWr~dyh+Nd@M$Y2B2s>}>;`FQ^2Mfy(ziZFP(`njxgN@xNA-{VL5 literal 4932 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 diff --git a/__tests__/html2/middleware/sendBox/legacySendBoxMiddleware/decorate.html.snap-1.png b/__tests__/html2/middleware/sendBox/legacySendBoxMiddleware/decorate.html.snap-1.png index c22dbf469d79cfa54284d147d28857a8ab0e5ed1..3c10d7b821cd22db9e6e79b11212aa23a2e93c6e 100644 GIT binary patch literal 1941 zcmeAS@N?(olHy`uVBq!ia0y~yV9a1(U~1rC0*csGlzw1fVE6KLaSW-L^X7^nBLf4+ z0R{fw;n#S6E3#CVGY7n3aCyXFRLC&XqQOVTL5)vAn0-Pg^NAyjDWk%pVKSN^Msvex zQ7~FOj@Av}iqRHWr~dyh+Nd@M$Y2B2s>}>;`FQ^2Mfy(ziZFP(`njxgN@xNA-{VL5 literal 4932 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 diff --git a/__tests__/html2/middleware/sendBox/legacySendBoxMiddleware/legacyAddComponent.html.snap-1.png b/__tests__/html2/middleware/sendBox/legacySendBoxMiddleware/legacyAddComponent.html.snap-1.png index c22dbf469d79cfa54284d147d28857a8ab0e5ed1..3c10d7b821cd22db9e6e79b11212aa23a2e93c6e 100644 GIT binary patch literal 1941 zcmeAS@N?(olHy`uVBq!ia0y~yV9a1(U~1rC0*csGlzw1fVE6KLaSW-L^X7^nBLf4+ z0R{fw;n#S6E3#CVGY7n3aCyXFRLC&XqQOVTL5)vAn0-Pg^NAyjDWk%pVKSN^Msvex zQ7~FOj@Av}iqRHWr~dyh+Nd@M$Y2B2s>}>;`FQ^2Mfy(ziZFP(`njxgN@xNA-{VL5 literal 4932 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 diff --git a/__tests__/html2/middleware/sendBox/legacySendBoxMiddleware/remove.html.snap-1.png b/__tests__/html2/middleware/sendBox/legacySendBoxMiddleware/remove.html.snap-1.png index c22dbf469d79cfa54284d147d28857a8ab0e5ed1..3c10d7b821cd22db9e6e79b11212aa23a2e93c6e 100644 GIT binary patch literal 1941 zcmeAS@N?(olHy`uVBq!ia0y~yV9a1(U~1rC0*csGlzw1fVE6KLaSW-L^X7^nBLf4+ z0R{fw;n#S6E3#CVGY7n3aCyXFRLC&XqQOVTL5)vAn0-Pg^NAyjDWk%pVKSN^Msvex zQ7~FOj@Av}iqRHWr~dyh+Nd@M$Y2B2s>}>;`FQ^2Mfy(ziZFP(`njxgN@xNA-{VL5 literal 4932 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 diff --git a/__tests__/html2/middleware/sendBox/polymiddleware/add.html.snap-1.png b/__tests__/html2/middleware/sendBox/polymiddleware/add.html.snap-1.png index c22dbf469d79cfa54284d147d28857a8ab0e5ed1..26314f308515eaa9840097ed03d5f7dce70cee12 100644 GIT binary patch literal 4134 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 Ibvt|Ge+-@55dZ)H literal 4932 zcmeI0`CpRR7sn}^Y}F|n%`$bew2~Q3G*J;MD^qhxTgGw05~Rj8$~iv$Hw3ck5(KjP#=6zu3NkK63W59xaXEJ6OkBa#5VjmEY)u;7Tv%WG&$APa zXG*>GzW(CAd3|`#p{%FVDMyV@-eMXV+**4wYMn<^|48f5&`^LV0dCIcFj$r>4UOEJ z;^l)pT+uY{RYIfWEr)d~*FNU!y2l5xYrM8<+(?7X`5yh5YeuRqq{*7wa{> zbiQwVzmo4__}&KJo#DGDey73z2c%C#qx{pB!@-nNpAs@;$MXaKLDh4~<4HRs;DS`A zh&RIQ*hX;xU#(iy3yd4xB0T_$j1jNQyp7BcugSH-c50KB=s)QG7Q`nkHcH=ZbZ#j- zWjh8Ry`wWcOO92D(dz5$(7+6fqIgkmFxgIYAFUW$7iTkh!oZfFI9Gy{mp<81HF9g? z@U?+(Pe*z0x<_<`LP{^r0Z)lro-Aqai(BCMP#P0H>@q7#loiGf1IZ}G1?&8&rj;2z z|EShY&GG@hYT+$kIkWCjsd8aJ@+8@?^UjDHdbxXGc%h~%On#K}5_9*8Vz!+GFwur+ ze1Aaf(A6IIV%~%q3Siha%|0BJQ4(hC)QUL^YR7JRj)WjdaBi9Nz4YYIh0nn$;)-U~ zM<;EiG#S25-K|{Vs}0e#IgSHL z+M?lR(Kx>&v^=fH(f96~nR>BzttU~Iao?h8DW9(p4T>0MMS~=@vZ6uO>1-Ik$7Oj) zLR?HsNyOwiBggKVSWWz%FkRi=QduQM#T zlWS7z8(!UKgd8oqLh=Kc-ms4gy06PYJ(E5vTjDVDW`C#1bN?i^#n={h-{kyuu=ihjJ^9$ z9vWu^r-q#=4y=XSn{|jNuN1ACMg~o+5W@SP&L_&t&}?D+MB!qukEimTUQ=batGRMI zlEgHgzM-MDJ)&kH;%xvC5PlQOxxjeg)XstM+9AiqK^WTvm&_^_X6!;|FpE|OC#dv^ zrngg6H~YrruVrd^1&M7E*{odPu6XM_hH>EI_sl3A_v4jfG>Tn&LZ@_@$0gRh+hD%u zPX?O!H}8CoU&Nbjf))*JgNXRCduF2LHTygZf#0u5@Lb1O>w_0qrLzbRkLbO{k=J|j zuYI{((x95CN5(P;7GThdM4>rg5Dj;IDidDXz0YB$F1Us!%s~_5{yO#t1#C8X3fazQ zt)3kb^UNfNFHN$=*fO5iiSj~4CBRH<^UAl|iXDon{e1C$Sn%RdELz@yN5iQ#viknU znF2gVzo}uq+l^-LaK}V;MG%cF-eemMXIuX4aN!f0nk?|jokr5{fMT=-U`C&;Qwm!B zW^9N8gCJNm@TI>gn+fU?qxD5!zIXRVXk|+UNh#i>6HzysG(o85-OTZiW_Xg8d+vRi z=euXgUhP5IB+hp^!}2SJE)W# zU&f`2Ua7O6<8&abLe#w$x^ZO#4Sj zz#d5J7WRpHP70L(x4?Spn_nyTxd=8h0^ zyKYRnRYpE`IIn1utwY_GUbqj-=rY$#pQva01F>hDR!;2{Xy%TNc`c+Oj=s$7a!t?V{@ThpiF8&m%(v0&8FBU2IvEn1 zMuoo_$qqQPXdG$_;Fm9-{^Jor1$qJha!KJe(5rFGj(lZb1u=_v&JdH-Z|3AMRq2GR z+H|=4E<&E|7h#9^eXWCjn>$faenML>L|Gh6?xQqq4=L5};0g}mv2gFU2XwBzxV*d@ z3rT+t=1B<3WAYfZoq`bGdj$&P9?3I$R&IU)Nd@FeFlYDsq<0;=5xvMrK`8!USHkTd z@>axAbS(wwrO3IQ$qFt5fR=`Ir(HSXnubkFgzAs8q|0HBjE_ZN!DshP4kt)n8ybX)vBgH zvj9&!VJ4XAVPrfI1kbXp6K4BS@8S3-FHuoA#3AGv5t;tt!gYO)0OM+i2v*Jh>zG3u zKG@`roas_~-cQd`#C_m*ercB`T%jGmp61Mq3PKEZ96i4^)r<`_jXZ=eYf!S#NY!i# zZq_Q&&g8j%APP!J;m3S(NVcJMB&FA;k~jIC8oqpPBsuadn0X${%R6~?!-(<2j{39L z(@=A_IY;*PNaz2yZ?szcg{&p>#W*#Ch{jVc%jAG@^s-6DLID!7GDV}oGk00|D5v7y z&eVry!|+h|ZB#AmDMb&nDbIzdTab+HI-)gVmzD9X_<=+8n5kK)RiDwjw7nn7lLSE& zznI<)&5OaB&$v8j;#ZE%@jg)%rtnR^_RW(fJ5BQ&Zr#=+_a5M=z1~B5QpIT(IHaMblz1i&0Z*il4(rUkv)y^X% zl3`4$Lr$2|=o4!&TD|(|!l}b~GJkDKh8EA$G}eCQvlSDX(fI9c#Pq>=?hH9t1(Fgs zF&K1vvz6JY_f%+l551UYcAK^BK*AIlJ*%&$p$4szc3mqq(6yf+k15=2Bhpk9#f2A)i9sp>oDhy6LY>$o0hpZIK+zan%!{_O>d z)%?Yzjey08+FBe1!HUE~J5Ry&bbT>t0+aJ0mZD|x7T^m9eyQ&DwivRyW_y;=MI3)< z%h`m|6qK_?b(tDxL=4}0KM>wHAyiAc!Ao7zdT<=i+$$O5MP-qWJwPo6RFxY<1b{|CltXH6akSI`-Ee0dN+! d_M7lEAeos}zG<+8?cfT;<+#VO*GGeH{SN^O;miO4 diff --git a/__tests__/html2/middleware/sendBox/polymiddleware/addComponent.html b/__tests__/html2/middleware/sendBox/polymiddleware/addComponent.html index fedaa568c2..df4a674a7c 100644 --- a/__tests__/html2/middleware/sendBox/polymiddleware/addComponent.html +++ b/__tests__/html2/middleware/sendBox/polymiddleware/addComponent.html @@ -31,14 +31,14 @@ const Downstream = () => createElement('div', {}, ''); - const sendBoxPolymiddleware = [ + const polymiddleware = [ createSendBoxPolymiddleware(next => () => sendBoxComponent(Downstream)) ]; WebChat.renderWebChat( { directLine, - sendBoxPolymiddleware, + polymiddleware, store }, document.getElementById('webchat') diff --git a/__tests__/html2/middleware/sendBox/polymiddleware/addComponent.html.snap-1.png b/__tests__/html2/middleware/sendBox/polymiddleware/addComponent.html.snap-1.png index c22dbf469d79cfa54284d147d28857a8ab0e5ed1..f3a2db73a6b559e978f29bb3a825956e1831a1c2 100644 GIT binary patch delta 1857 zcmV-H2fp~kCgB~BBVrDgNklDhZWR;k?$)t8!0y0CKiGlT7+@hL z3KoiiiiJ6f9bmWE*!sZ)8@mggbDwz+Ys<_yd*A!O-mvGoJ}jR1d2=m%e(yiVNk@+! zJp|C0bO@j%vGL*tlMn*9f16|i_uYN>-5YMW;fN6|NZyh(}jF*ue$20d2SN(@WT%e zjR{bqaN~_P&NbIu=bd-nvBw_!!w*0F?QegZZo27`l|>g_^o=*(c;=aBcHMQ?z4qEG zcU^bgb^rIFM~v8Gk3G_eYp=aF7k{qj%qFh9^2+=Qf2*yw+D<#|bok+iXM{5Eyz}NA z)2wBeUG{?yKA3aPIZr+H)Lihl+;YpzGtZnDU3Ae!x8HvII_s?S?z``19Vf?|Y_iE% zf1tebzWeTb^UXK^`Q+DMf1MaT_Sj=b9C5^^n{GM;6PZcA`s%B#w%TfqHP*;AJXSR( zV4ivAfBEpk4|8z&<(KDTOEq$wr)Lz9Gda%Hm=VWdVd8-Y9{Bd#ZwJ?2ijZ&&zfKko z5{Rj%o_eE=Hu~+i-#-5M;{+mK>2JRIX6{{l@x@b(@qT~|0g{8k5=`E4v&}Y3ai*Md z%8Yt4D9FhjcGzLisq`X0-+%x8!4s#MW}3X?e+)CsaPYwg=jI}dERr)zjq$<@FO2&} z!}F9sOWIC8`Q&rYJvSqr{B}byk(nf;^jt8LOft#NJMVn&z4!i;Py77y&j%OeJMX-c zF~#utx#ynyt+(FFK`!I%x8Hscj{MAMVlZB~>#n=fsc~O0%LnWrc*(o0x88a~Fp>G+HI7`gS?|2?!V9x+l4Xv}H3kb46Ob?P1s7a! zymt*>idi*y=%I(c_~MJK9qhU1o|(2}f0g0omtW3EVZtw-3o?_GC6`<>bA%(0JaXut zu-$gs9Xm!AXfhDUJ7yd-|NQf326WhAhYkI!GEd1LCoLO3^U5o)?6S))C!BD?K?fa_ zb(TzdhG63J_r=l77mhmWsEi9T)X#)JLy5n7PDTy+p3k~Nju%*9fy^(4@A`94e=;S> za3WG(nlLeD>LAd65hsPCW6%f4B>qNk=9QgQ?B1Pd@o1Q?RUz zW;JB!{~_~~@4Kw?z``vj=cBYdpUmXwb$;rf8&k}E(VXxMZ4pUJLaVZbCV1TuDRx#afkh5`R1E% z(u=|IPe1*X#grUm@ghn3t8q|1L*^rS_u(@OEwoT3EZJ1f@F(lLL;tF=<|+H_w_kpp ze>h@-|9a#9C+CC9HQSI0L=G}C&zL{!AQ`mhuI#oB_CaIw%{NbI5``==fByXQ&)KKQ zmdfz!azx!UEA!%=8bYDyE$2r9XWDjj!!w|lmsH{vZ-DcSu!ZdzU&1TT#zk~>?>y&m4Q!U zlr5DErt*%-K}JKPMvWT0Ph)mx9)JAt%%rk|lMSZfp~SfJltC+j5&kg((DFaI0X5+O vYQh23{s#a6|NkLmV|@Ss00v1!K~w_(99;lYI;%e900000NkvXXu0mjf>MQoE delta 3034 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 literal 4932 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 diff --git a/__tests__/html2/middleware/sendBox/polymiddleware/decorate.html b/__tests__/html2/middleware/sendBox/polymiddleware/decorate.html index 61fefd4b37..2e45df6503 100644 --- a/__tests__/html2/middleware/sendBox/polymiddleware/decorate.html +++ b/__tests__/html2/middleware/sendBox/polymiddleware/decorate.html @@ -29,8 +29,8 @@ const { directLine, store } = createDirectLineEmulator(); - const DecoratedSendBox = memo(function DecoratedSendBox({ render }) { - return createElement('div', { style: { border: 'solid 2px red' } }, render({})); + const DecoratedSendBox = memo(function DecoratedSendBox({ className, render }) { + return createElement('div', { className, style: { border: 'solid 2px red' } }, render({})); }); const polymiddleware = [ diff --git a/__tests__/html2/middleware/sendBox/polymiddleware/decorate.html.snap-1.png b/__tests__/html2/middleware/sendBox/polymiddleware/decorate.html.snap-1.png index c22dbf469d79cfa54284d147d28857a8ab0e5ed1..d61084c39ceab6d97101e5141a225fdc5285fcfe 100644 GIT binary patch literal 2023 zcmeAS@N?(olHy`uVBq!ia0y~yV9a1(U~1rC0*csGlzw1fV4vgZ;uumf=gl=kUIqi6 z0~`Fb>QBkG{W0s%s4iy?c*Edwh%sdpjfTKz2#kinXb6mkz-S22Gz8wWEhv<6Py?fH pj0_C_|L>icqXMk1*+BI)Ged73?=Sfus&j!N44$rjF6*2UngFCK{v!YY literal 4932 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 diff --git a/__tests__/html2/middleware/sendBox/polymiddleware/remove.html.snap-1.png b/__tests__/html2/middleware/sendBox/polymiddleware/remove.html.snap-1.png index c22dbf469d79cfa54284d147d28857a8ab0e5ed1..3c10d7b821cd22db9e6e79b11212aa23a2e93c6e 100644 GIT binary patch literal 1941 zcmeAS@N?(olHy`uVBq!ia0y~yV9a1(U~1rC0*csGlzw1fVE6KLaSW-L^X7^nBLf4+ z0R{fw;n#S6E3#CVGY7n3aCyXFRLC&XqQOVTL5)vAn0-Pg^NAyjDWk%pVKSN^Msvex zQ7~FOj@Av}iqRHWr~dyh+Nd@M$Y2B2s>}>;`FQ^2Mfy(ziZFP(`njxgN@xNA-{VL5 literal 4932 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 diff --git a/__tests__/html2/middleware/sendBox/polymiddleware/simple.html b/__tests__/html2/middleware/sendBox/polymiddleware/simple.html index e37a485c5a..f2cfdd2f13 100644 --- a/__tests__/html2/middleware/sendBox/polymiddleware/simple.html +++ b/__tests__/html2/middleware/sendBox/polymiddleware/simple.html @@ -34,9 +34,9 @@ }); const polymiddleware = [ - createSendBoxPolymiddleware(next => request => next(request)), - createSendBoxPolymiddleware(next => request => { - const result = next(request); + createSendBoxPolymiddleware(next => () => next()), + createSendBoxPolymiddleware(next => () => { + const result = next(); return sendBoxComponent(MySendBox, { render: result.render }); }) diff --git a/__tests__/html2/middleware/sendBox/polymiddleware/simple.html.snap-1.png b/__tests__/html2/middleware/sendBox/polymiddleware/simple.html.snap-1.png index c22dbf469d79cfa54284d147d28857a8ab0e5ed1..d61084c39ceab6d97101e5141a225fdc5285fcfe 100644 GIT binary patch literal 2023 zcmeAS@N?(olHy`uVBq!ia0y~yV9a1(U~1rC0*csGlzw1fV4vgZ;uumf=gl=kUIqi6 z0~`Fb>QBkG{W0s%s4iy?c*Edwh%sdpjfTKz2#kinXb6mkz-S22Gz8wWEhv<6Py?fH pj0_C_|L>icqXMk1*+BI)Ged73?=Sfus&j!N44$rjF6*2UngFCK{v!YY literal 4932 zcmeI0`CpRR7sn}^Y}F|n%`$bew2~Q3G*J;MD^qhxTgGw05~Rj8$~iv$Hw3ck5(KjP#=6zu3NkK63W59xaXEJ6OkBa#5VjmEY)u;7Tv%WG&$APa zXG*>GzW(CAd3|`#p{%FVDMyV@-eMXV+**4wYMn<^|48f5&`^LV0dCIcFj$r>4UOEJ z;^l)pT+uY{RYIfWEr)d~*FNU!y2l5xYrM8<+(?7X`5yh5YeuRqq{*7wa{> zbiQwVzmo4__}&KJo#DGDey73z2c%C#qx{pB!@-nNpAs@;$MXaKLDh4~<4HRs;DS`A zh&RIQ*hX;xU#(iy3yd4xB0T_$j1jNQyp7BcugSH-c50KB=s)QG7Q`nkHcH=ZbZ#j- zWjh8Ry`wWcOO92D(dz5$(7+6fqIgkmFxgIYAFUW$7iTkh!oZfFI9Gy{mp<81HF9g? z@U?+(Pe*z0x<_<`LP{^r0Z)lro-Aqai(BCMP#P0H>@q7#loiGf1IZ}G1?&8&rj;2z z|EShY&GG@hYT+$kIkWCjsd8aJ@+8@?^UjDHdbxXGc%h~%On#K}5_9*8Vz!+GFwur+ ze1Aaf(A6IIV%~%q3Siha%|0BJQ4(hC)QUL^YR7JRj)WjdaBi9Nz4YYIh0nn$;)-U~ zM<;EiG#S25-K|{Vs}0e#IgSHL z+M?lR(Kx>&v^=fH(f96~nR>BzttU~Iao?h8DW9(p4T>0MMS~=@vZ6uO>1-Ik$7Oj) zLR?HsNyOwiBggKVSWWz%FkRi=QduQM#T zlWS7z8(!UKgd8oqLh=Kc-ms4gy06PYJ(E5vTjDVDW`C#1bN?i^#n={h-{kyuu=ihjJ^9$ z9vWu^r-q#=4y=XSn{|jNuN1ACMg~o+5W@SP&L_&t&}?D+MB!qukEimTUQ=batGRMI zlEgHgzM-MDJ)&kH;%xvC5PlQOxxjeg)XstM+9AiqK^WTvm&_^_X6!;|FpE|OC#dv^ zrngg6H~YrruVrd^1&M7E*{odPu6XM_hH>EI_sl3A_v4jfG>Tn&LZ@_@$0gRh+hD%u zPX?O!H}8CoU&Nbjf))*JgNXRCduF2LHTygZf#0u5@Lb1O>w_0qrLzbRkLbO{k=J|j zuYI{((x95CN5(P;7GThdM4>rg5Dj;IDidDXz0YB$F1Us!%s~_5{yO#t1#C8X3fazQ zt)3kb^UNfNFHN$=*fO5iiSj~4CBRH<^UAl|iXDon{e1C$Sn%RdELz@yN5iQ#viknU znF2gVzo}uq+l^-LaK}V;MG%cF-eemMXIuX4aN!f0nk?|jokr5{fMT=-U`C&;Qwm!B zW^9N8gCJNm@TI>gn+fU?qxD5!zIXRVXk|+UNh#i>6HzysG(o85-OTZiW_Xg8d+vRi z=euXgUhP5IB+hp^!}2SJE)W# zU&f`2Ua7O6<8&abLe#w$x^ZO#4Sj zz#d5J7WRpHP70L(x4?Spn_nyTxd=8h0^ zyKYRnRYpE`IIn1utwY_GUbqj-=rY$#pQva01F>hDR!;2{Xy%TNc`c+Oj=s$7a!t?V{@ThpiF8&m%(v0&8FBU2IvEn1 zMuoo_$qqQPXdG$_;Fm9-{^Jor1$qJha!KJe(5rFGj(lZb1u=_v&JdH-Z|3AMRq2GR z+H|=4E<&E|7h#9^eXWCjn>$faenML>L|Gh6?xQqq4=L5};0g}mv2gFU2XwBzxV*d@ z3rT+t=1B<3WAYfZoq`bGdj$&P9?3I$R&IU)Nd@FeFlYDsq<0;=5xvMrK`8!USHkTd z@>axAbS(wwrO3IQ$qFt5fR=`Ir(HSXnubkFgzAs8q|0HBjE_ZN!DshP4kt)n8ybX)vBgH zvj9&!VJ4XAVPrfI1kbXp6K4BS@8S3-FHuoA#3AGv5t;tt!gYO)0OM+i2v*Jh>zG3u zKG@`roas_~-cQd`#C_m*ercB`T%jGmp61Mq3PKEZ96i4^)r<`_jXZ=eYf!S#NY!i# zZq_Q&&g8j%APP!J;m3S(NVcJMB&FA;k~jIC8oqpPBsuadn0X${%R6~?!-(<2j{39L z(@=A_IY;*PNaz2yZ?szcg{&p>#W*#Ch{jVc%jAG@^s-6DLID!7GDV}oGk00|D5v7y z&eVry!|+h|ZB#AmDMb&nDbIzdTab+HI-)gVmzD9X_<=+8n5kK)RiDwjw7nn7lLSE& zznI<)&5OaB&$v8j;#ZE%@jg)%rtnR^_RW(fJ5BQ&Zr#=+_a5M=z1~B5QpIT(IHaMblz1i&0Z*il4(rUkv)y^X% zl3`4$Lr$2|=o4!&TD|(|!l}b~GJkDKh8EA$G}eCQvlSDX(fI9c#Pq>=?hH9t1(Fgs zF&K1vvz6JY_f%+l551UYcAK^BK*AIlJ*%&$p$4szc3mqq(6yf+k15=2Bhpk9#f2A)i9sp>oDhy6LY>$o0hpZIK+zan%!{_O>d z)%?Yzjey08+FBe1!HUE~J5Ry&bbT>t0+aJ0mZD|x7T^m9eyQ&DwivRyW_y;=MI3)< z%h`m|6qK_?b(tDxL=4}0KM>wHAyiAc!Ao7zdT<=i+$$O5MP-qWJwPo6RFxY<1b{|CltXH6akSI`-Ee0dN+! d_M7lEAeos}zG<+8?cfT;<+#VO*GGeH{SN^O;miO4 diff --git a/packages/api-middleware/src/sendBoxPolymiddleware.tsx b/packages/api-middleware/src/sendBoxPolymiddleware.tsx index 53345ab18c..4d19a77c1a 100644 --- a/packages/api-middleware/src/sendBoxPolymiddleware.tsx +++ b/packages/api-middleware/src/sendBoxPolymiddleware.tsx @@ -35,9 +35,7 @@ const sendBoxPolymiddlewareProxyPropsSchema = pipe(object({ className: optional( type SendBoxPolymiddlewareProxyProps = Readonly>; // A friendlier version than the organic . -const SendBoxPolymiddlewareProxy = memo(function SendBoxPolymiddlewareProxy( - props: SendBoxPolymiddlewareProxyProps -) { +const SendBoxPolymiddlewareProxy = memo(function SendBoxPolymiddlewareProxy(props: SendBoxPolymiddlewareProxyProps) { const { className } = validateProps(sendBoxPolymiddlewareProxyPropsSchema, props); const request = useMemo(() => undefined, []); diff --git a/packages/api/src/hooks/Composer.tsx b/packages/api/src/hooks/Composer.tsx index 1976a9f74e..a01c02fb21 100644 --- a/packages/api/src/hooks/Composer.tsx +++ b/packages/api/src/hooks/Composer.tsx @@ -525,13 +525,10 @@ const ComposerCore = ({ [activityMiddleware] ); - const polymiddlewareForLegacySendBoxMiddleware = useMemo( - () => { - const middleware = singleToArray(sendBoxMiddleware) as any[]; - return Object.freeze([createSendBoxPolymiddlewareFromLegacy(...middleware)]); - }, - [sendBoxMiddleware] - ); + const polymiddlewareForLegacySendBoxMiddleware = useMemo(() => { + const middleware = singleToArray(sendBoxMiddleware) as any[]; + return Object.freeze([createSendBoxPolymiddlewareFromLegacy(...middleware)]); + }, [sendBoxMiddleware]); const polymiddleware = useMemo( () => diff --git a/packages/api/src/legacy/LegacySendBoxBridge.tsx b/packages/api/src/legacy/LegacySendBoxBridge.tsx index 6276930f03..3df3dcee5d 100644 --- a/packages/api/src/legacy/LegacySendBoxBridge.tsx +++ b/packages/api/src/legacy/LegacySendBoxBridge.tsx @@ -1,7 +1,10 @@ import { validateProps } from '@msinternal/botframework-webchat-react-valibot'; import React, { Fragment, memo, useMemo } from 'react'; -import { legacySendBoxBridgeComponentPropsSchema, type LegacySendBoxBridgeComponentProps } from './createSendBoxPolymiddlewareFromLegacy'; +import { + legacySendBoxBridgeComponentPropsSchema, + type LegacySendBoxBridgeComponentProps +} from './createSendBoxPolymiddlewareFromLegacy'; /** * This component is solely for `createSendBoxPolymiddlewareFromLegacy`. diff --git a/packages/api/src/legacy/createSendBoxPolymiddlewareFromLegacy.tsx b/packages/api/src/legacy/createSendBoxPolymiddlewareFromLegacy.tsx index a3d6a4a7fd..0160fb236c 100644 --- a/packages/api/src/legacy/createSendBoxPolymiddlewareFromLegacy.tsx +++ b/packages/api/src/legacy/createSendBoxPolymiddlewareFromLegacy.tsx @@ -6,7 +6,18 @@ import { import { type LegacySendBoxMiddleware } from '@msinternal/botframework-webchat-api-middleware/legacy'; import { composeEnhancer, type Enhancer } from 'handler-chain'; import { type ReactNode } from 'react'; -import { custom, function_, never, object, optional, pipe, readonly, safeParse, string, type InferInput } from 'valibot'; +import { + custom, + function_, + never, + object, + optional, + pipe, + readonly, + safeParse, + string, + type InferInput +} from 'valibot'; import LegacySendBoxBridge from './LegacySendBoxBridge';