@osdk/widget.client-react 3.5.0-beta.1 → 3.5.0-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +85 -0
- package/build/browser/client.js.map +1 -1
- package/build/browser/context.js.map +1 -1
- package/build/browser/utils/extendParametersWithObjectSets.js +1 -1
- package/build/browser/utils/extendParametersWithObjectSets.js.map +1 -1
- package/build/browser/utils/extendParametersWithObjectSets.test.js +7 -7
- package/build/browser/utils/extendParametersWithObjectSets.test.js.map +1 -1
- package/build/browser/utils/transformEmitEventPayload.test.js +5 -5
- package/build/browser/utils/transformEmitEventPayload.test.js.map +1 -1
- package/build/cjs/index.cjs +1 -1
- package/build/cjs/index.cjs.map +1 -1
- package/build/cjs/index.d.cts +9 -9
- package/build/esm/client.js.map +1 -1
- package/build/esm/context.js.map +1 -1
- package/build/esm/utils/extendParametersWithObjectSets.js +1 -1
- package/build/esm/utils/extendParametersWithObjectSets.js.map +1 -1
- package/build/esm/utils/extendParametersWithObjectSets.test.js +7 -7
- package/build/esm/utils/extendParametersWithObjectSets.test.js.map +1 -1
- package/build/esm/utils/transformEmitEventPayload.test.js +5 -5
- package/build/esm/utils/transformEmitEventPayload.test.js.map +1 -1
- package/build/types/client.d.ts +3 -3
- package/build/types/client.d.ts.map +1 -1
- package/build/types/context.d.ts +7 -7
- package/build/types/context.d.ts.map +1 -1
- package/build/types/utils/extendParametersWithObjectSets.d.ts.map +1 -1
- package/package.json +7 -7
package/build/cjs/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/context.ts","../../src/ErrorBoundary.tsx","../../src/utils/extendParametersWithObjectSets.ts","../../src/utils/initializeParameters.ts","../../src/utils/transformEmitEventPayload.ts","../../src/client.tsx"],"names":["FoundryHostEventTarget","useContext","React2","hydrateObjectSetFromRid","createAndFetchTempObjectSetRid","useMemo","createFoundryWidgetClient","React","useRef","useCallback","useEffect"],"mappings":"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","file":"index.cjs","sourcesContent":["/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software=\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FoundryHostEventTarget } from \"@osdk/widget.client\";\nimport React, { useContext } from \"react\";\n\n/**\n * Emits a widget event with parameter updates to the host Foundry UI.\n *\n * For object set parameters, pass `ObjectSet<T>` directly.\n * If the same event is emitted multiple times in quick succession and involves Object Set parameters, only the last call will be sent.\n * Errors (e.g., network failures when serializing ObjectSet parameters) are not surfaced to the caller.\n */\n\nexport const FoundryWidgetContext = /*#__PURE__*/React.createContext({\n emitEvent: () => {},\n hostEventTarget: new FoundryHostEventTarget(),\n asyncParameterValues: {},\n parameters: {\n state: \"not-started\",\n values: {}\n }\n});\n\n/**\n * @returns The current FoundryWidgetClientContext, in the context of your specific parameter configuration\n */\nexport function useFoundryWidgetContext() {\n return useContext(FoundryWidgetContext);\n}\n(function (_useFoundryWidgetContext) {\n function withTypes() {\n return () => {\n return useFoundryWidgetContext();\n };\n }\n _useFoundryWidgetContext.withTypes = withTypes;\n})(useFoundryWidgetContext || (useFoundryWidgetContext = {}));","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as React from \"react\";\n/**\n * Error boundary to catch and display errors in widget code.\n */\nexport class ErrorBoundary extends React.Component {\n state = {\n error: null\n };\n static getDerivedStateFromError(error) {\n return {\n error\n };\n }\n render() {\n if (this.state.error) {\n const errorDetails = this.state.error instanceof Error ? this.state.error.stack : \"See browser console for more details.\";\n return /*#__PURE__*/React.createElement(\"section\", {\n style: {\n padding: \"16px\"\n }\n }, /*#__PURE__*/React.createElement(\"h3\", {\n style: {\n margin: \"0 0 12px 0\",\n color: \"#c00\"\n }\n }, \"An uncaught error occurred\"), process.env.NODE_ENV !== \"production\" && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"p\", {\n style: {\n margin: \"0 0 8px 0\"\n }\n }, \"This error was caught by the widget framework's fallback error boundary.\"), /*#__PURE__*/React.createElement(\"ul\", {\n style: {\n margin: \"0 0 16px 0\"\n }\n }, /*#__PURE__*/React.createElement(\"li\", null, \"Ensure errors are properly handled in your code with try-catch blocks and promise rejection handling.\"), /*#__PURE__*/React.createElement(\"li\", null, \"Add your own error boundary to replace this fallback with a custom error message or recovery options for your users.\"), /*#__PURE__*/React.createElement(\"li\", null, \"See:\", \" \", /*#__PURE__*/React.createElement(\"code\", null, \"https://react.dev/reference/react/Component#catching-rendering-errors-with-an-error-boundary\")))), /*#__PURE__*/React.createElement(\"pre\", {\n style: {\n backgroundColor: \"#f5f5f5\",\n padding: \"12px\",\n overflow: \"auto\",\n fontSize: \"12px\",\n margin: 0\n }\n }, errorDetails));\n }\n return this.props.children;\n }\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { hydrateObjectSetFromRid } from \"@osdk/client/internal\";\n/**\n * Patches parameter values with hydrated object sets for object set parameters.\n *\n * The cache is used to avoid redundant hydration of the same object set RID, which\n * can cause unnecessary re-renders in React components consuming the parameters.\n */\nexport function extendParametersWithObjectSets(osdkClient, config, parameters, cache) {\n const extendedParameters = {\n ...parameters\n };\n for (const parameterId of Object.keys(extendedParameters)) {\n const param = config.parameters[parameterId];\n if (param.type === \"objectSet\" && extendedParameters[parameterId].type === \"objectSet\") {\n const parameterValue = extendedParameters[parameterId].value.value;\n if (parameterValue != null) {\n if (typeof parameterValue === \"object\" && \"objectSetRid\" in parameterValue && typeof parameterValue.objectSetRid === \"string\") {\n const objectSetRid = parameterValue.objectSetRid;\n const objectSet = getOrHydrateObjectSet(osdkClient, cache, parameterId, objectSetRid, param.objectType);\n parameterValue.objectSet = objectSet;\n } else {\n throw new Error(`Invalid object set parameter value for parameter \"${parameterId}\"`);\n }\n } else {\n cache.delete(parameterId);\n }\n }\n }\n return extendedParameters;\n}\nfunction getOrHydrateObjectSet(osdkClient, cache, paramKey, objectSetRid, definition) {\n if (osdkClient == null) {\n throw new Error(\"Not provided an OSDK client\");\n }\n const cached = cache.get(paramKey);\n if (cached?.objectSetRid === objectSetRid) {\n return cached.objectSet;\n }\n const objectSet = hydrateObjectSetFromRid(osdkClient, definition, objectSetRid);\n cache.set(paramKey, {\n objectSetRid,\n objectSet\n });\n return objectSet;\n}","/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Utility function to initialize a map of parameter values to either a loading or not-started loading state\n */\nexport function initializeParameters(config, initialLoadingState) {\n return Object.fromEntries(Object.entries(config.parameters).map(([key, parameterConfig]) => [key, {\n type: parameterConfig.type,\n value: {\n type: initialLoadingState\n }\n }]));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createAndFetchTempObjectSetRid } from \"@osdk/client/internal\";\nexport function transformEmitEventPayload(config, eventId, payload, osdkClient) {\n for (const paramId of Object.keys(payload.parameterUpdates)) {\n const paramConfig = config.parameters[paramId];\n if (paramConfig?.type === \"objectSet\") {\n return {\n type: \"async\",\n payload: transformEmitEventPayloadAsync(config, eventId, payload, osdkClient)\n };\n }\n }\n\n // No object set parameters, pass through synchronously\n return {\n type: \"passThrough\",\n payload: {\n parameterUpdates: payload.parameterUpdates\n }\n };\n}\n\n/**\n * Transforms an augmented emit event payload by creating temporary object sets\n * from ObjectSet instances.\n *\n * Multiple ObjectSet parameters are transformed in parallel for better performance.\n */\nexport async function transformEmitEventPayloadAsync(config, eventId, payload, osdkClient) {\n const event = config.events[eventId];\n if (event == null) {\n throw new Error(`Event with ID \"${eventId.toString()}\" not found in widget config`);\n }\n const entries = Object.entries(payload.parameterUpdates);\n const transformedEntries = await Promise.all(entries.map(async ([paramId, paramValue]) => {\n const paramConfig = config.parameters[paramId];\n if (paramConfig?.type === \"objectSet\") {\n if (osdkClient == null) {\n throw new Error(`Cannot emit event \"${eventId.toString()}\" with ObjectSet parameter \"${paramId}\" without an osdk client`);\n }\n const objectSetRid = await createAndFetchTempObjectSetRid(osdkClient, paramValue);\n return [paramId, {\n objectSetRid\n }];\n }\n return [paramId, paramValue];\n }));\n return {\n parameterUpdates: Object.fromEntries(transformedEntries)\n };\n}","/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createFoundryWidgetClient } from \"@osdk/widget.client\";\nimport React, { useCallback, useEffect, useMemo, useRef } from \"react\";\nimport { FoundryWidgetContext } from \"./context.js\";\nimport { ErrorBoundary } from \"./ErrorBoundary.js\";\nimport { extendParametersWithObjectSets } from \"./utils/extendParametersWithObjectSets.js\";\nimport { initializeParameters } from \"./utils/initializeParameters.js\";\nimport { transformEmitEventPayload } from \"./utils/transformEmitEventPayload.js\";\n/**\n * Handles subscribing to messages from the host Foundry UI and updating the widget's parameter values accordingly via React context\n */\nexport const FoundryWidget = ({\n children,\n config,\n initialValues,\n client: osdkClient\n}) => {\n const client = useMemo(() => createFoundryWidgetClient(), []);\n const [asyncParameterValues, setAsyncParameterValues] = React.useState(initialValues ?? initializeParameters(config, \"not-started\"));\n const [allParameterValues, setAllParameterValues] = React.useState({\n type: \"not-started\"\n });\n const objectSetCache = useRef(new Map());\n const emitEventCallIds = useRef(new Map());\n const emitEvent = useCallback((eventId, payload) => {\n const transformResult = transformEmitEventPayload(config, eventId, payload, osdkClient);\n if (transformResult.type === \"passThrough\") {\n client.emitEvent(eventId, transformResult.payload);\n return;\n }\n async function handleAsyncEmitEvent() {\n const eventKey = String(eventId);\n const thisCallId = (emitEventCallIds.current.get(eventKey) ?? 0) + 1;\n emitEventCallIds.current.set(eventKey, thisCallId);\n const transformedPayload = await transformResult.payload;\n if (thisCallId !== emitEventCallIds.current.get(eventKey)) {\n return;\n }\n client.emitEvent(eventId, transformedPayload);\n }\n void handleAsyncEmitEvent();\n }, [osdkClient, config, client]);\n useEffect(() => {\n client.subscribe();\n client.hostEventTarget.addEventListener(\"host.update-parameters\", payload => {\n const processedParameters = extendParametersWithObjectSets(osdkClient, config, payload.detail.parameters, objectSetCache.current);\n setAsyncParameterValues(currentParameters => ({\n ...currentParameters,\n ...processedParameters\n }));\n setAllParameterValues(currentParameters => {\n let aggregatedLoadedState = \"loaded\";\n let firstError;\n const newParameterValues = {};\n for (const key in processedParameters) {\n const value = processedParameters[key].value;\n // If any fails, consider the whole thing failed\n if (value.type === \"failed\") {\n aggregatedLoadedState = \"failed\";\n firstError = firstError ?? value.error;\n newParameterValues[key] = value.value;\n continue;\n }\n // If any is loading, consider all of it loading unless we have failed somewhere\n if (value.type === \"loading\" && aggregatedLoadedState !== \"failed\") {\n aggregatedLoadedState = \"loading\";\n continue;\n }\n // If any is reloading, consider it loading unless something is failed or loading for the first time\n if (value.type === \"reloading\" && aggregatedLoadedState !== \"failed\" && aggregatedLoadedState !== \"loading\") {\n aggregatedLoadedState = \"reloading\";\n newParameterValues[key] = value.value;\n continue;\n }\n if (value.type === \"not-started\" && aggregatedLoadedState !== \"failed\" && aggregatedLoadedState !== \"loading\" && aggregatedLoadedState !== \"reloading\") {\n aggregatedLoadedState = \"not-started\";\n }\n if (value.type === \"loaded\") {\n newParameterValues[key] = value.value;\n }\n }\n const currentParameterValue = currentParameters.type !== \"not-started\" && currentParameters.type !== \"loading\" ? currentParameters.value : {};\n if (aggregatedLoadedState !== \"not-started\" && aggregatedLoadedState !== \"loading\") {\n const updatedValue = {\n ...currentParameterValue,\n ...newParameterValues\n };\n return aggregatedLoadedState === \"failed\" ? {\n type: aggregatedLoadedState,\n value: updatedValue,\n error: firstError ?? new Error(\"Failed to load parameters\")\n } : {\n type: aggregatedLoadedState,\n value: updatedValue\n };\n } else {\n return {\n type: aggregatedLoadedState\n };\n }\n });\n });\n client.ready();\n const resizeObserver = new ResizeObserver(entries => {\n if (entries.length !== 1) {\n // eslint-disable-next-line no-console\n console.error(\"Expected exactly one resize observer entry but received:\", entries);\n return;\n }\n const entry = entries[0];\n if (entry.borderBoxSize.length !== 1) {\n // eslint-disable-next-line no-console\n console.error(\"Expected exactly one border box size but received:\", entry.borderBoxSize);\n return;\n }\n const {\n inlineSize: width,\n blockSize: height\n } = entry.borderBoxSize[0];\n client.resize({\n width,\n height\n });\n });\n resizeObserver.observe(document.body, {\n box: \"border-box\"\n });\n return () => {\n client.unsubscribe();\n resizeObserver.disconnect();\n };\n }, []);\n return /*#__PURE__*/React.createElement(FoundryWidgetContext.Provider, {\n value: {\n emitEvent,\n hostEventTarget: client.hostEventTarget,\n asyncParameterValues,\n parameters: {\n values: allParameterValues.value ?? {},\n state: allParameterValues.type\n }\n // Unfortunately the context is statically defined so we can't use the generic type, hence the cast\n }\n }, /*#__PURE__*/React.createElement(ErrorBoundary, null, children));\n};"]}
|
|
1
|
+
{"version":3,"sources":["../../src/context.ts","../../src/ErrorBoundary.tsx","../../src/utils/extendParametersWithObjectSets.ts","../../src/utils/initializeParameters.ts","../../src/utils/transformEmitEventPayload.ts","../../src/client.tsx"],"names":["FoundryHostEventTarget","useContext","React2","hydrateObjectSetFromRid","createAndFetchTempObjectSetRid","useMemo","createFoundryWidgetClient","React","useRef","useCallback","useEffect"],"mappings":"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","file":"index.cjs","sourcesContent":["/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software=\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FoundryHostEventTarget } from \"@osdk/widget.client\";\nimport React, { useContext } from \"react\";\n\n/**\n * Emits a widget event with parameter updates to the host Foundry UI.\n *\n * For object set parameters, pass `ObjectSet<T>` directly.\n * If the same event is emitted multiple times in quick succession and involves Object Set parameters, only the last call will be sent.\n * Errors (e.g., network failures when serializing ObjectSet parameters) are not surfaced to the caller.\n */\n\nexport const FoundryWidgetContext = /*#__PURE__*/React.createContext({\n emitEvent: () => {},\n hostEventTarget: new FoundryHostEventTarget(),\n asyncParameterValues: {},\n parameters: {\n state: \"not-started\",\n values: {}\n }\n});\n\n/**\n * @returns The current FoundryWidgetClientContext, in the context of your specific parameter configuration\n */\nexport function useFoundryWidgetContext() {\n return useContext(FoundryWidgetContext);\n}\n(function (_useFoundryWidgetContext) {\n function withTypes() {\n return () => {\n return useFoundryWidgetContext();\n };\n }\n _useFoundryWidgetContext.withTypes = withTypes;\n})(useFoundryWidgetContext || (useFoundryWidgetContext = {}));","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as React from \"react\";\n/**\n * Error boundary to catch and display errors in widget code.\n */\nexport class ErrorBoundary extends React.Component {\n state = {\n error: null\n };\n static getDerivedStateFromError(error) {\n return {\n error\n };\n }\n render() {\n if (this.state.error) {\n const errorDetails = this.state.error instanceof Error ? this.state.error.stack : \"See browser console for more details.\";\n return /*#__PURE__*/React.createElement(\"section\", {\n style: {\n padding: \"16px\"\n }\n }, /*#__PURE__*/React.createElement(\"h3\", {\n style: {\n margin: \"0 0 12px 0\",\n color: \"#c00\"\n }\n }, \"An uncaught error occurred\"), process.env.NODE_ENV !== \"production\" && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"p\", {\n style: {\n margin: \"0 0 8px 0\"\n }\n }, \"This error was caught by the widget framework's fallback error boundary.\"), /*#__PURE__*/React.createElement(\"ul\", {\n style: {\n margin: \"0 0 16px 0\"\n }\n }, /*#__PURE__*/React.createElement(\"li\", null, \"Ensure errors are properly handled in your code with try-catch blocks and promise rejection handling.\"), /*#__PURE__*/React.createElement(\"li\", null, \"Add your own error boundary to replace this fallback with a custom error message or recovery options for your users.\"), /*#__PURE__*/React.createElement(\"li\", null, \"See:\", \" \", /*#__PURE__*/React.createElement(\"code\", null, \"https://react.dev/reference/react/Component#catching-rendering-errors-with-an-error-boundary\")))), /*#__PURE__*/React.createElement(\"pre\", {\n style: {\n backgroundColor: \"#f5f5f5\",\n padding: \"12px\",\n overflow: \"auto\",\n fontSize: \"12px\",\n margin: 0\n }\n }, errorDetails));\n }\n return this.props.children;\n }\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { hydrateObjectSetFromRid } from \"@osdk/client/internal\";\n/**\n * Patches parameter values with hydrated object sets for object set parameters.\n *\n * The cache is used to avoid redundant hydration of the same object set RID, which\n * can cause unnecessary re-renders in React components consuming the parameters.\n */\nexport function extendParametersWithObjectSets(osdkClient, config, parameters, cache) {\n const extendedParameters = {\n ...parameters\n };\n for (const parameterId of Object.keys(extendedParameters)) {\n const param = config.parameters[parameterId];\n if (param.type === \"objectSet\" && extendedParameters[parameterId].type === \"objectSet\") {\n const parameterValue = extendedParameters[parameterId].value.value;\n if (parameterValue != null) {\n if (typeof parameterValue === \"object\" && \"objectSetRid\" in parameterValue && typeof parameterValue.objectSetRid === \"string\") {\n const objectSetRid = parameterValue.objectSetRid;\n const objectSet = getOrHydrateObjectSet(osdkClient, cache, parameterId, objectSetRid, param.allowedType);\n parameterValue.objectSet = objectSet;\n } else {\n throw new Error(`Invalid object set parameter value for parameter \"${parameterId}\"`);\n }\n } else {\n cache.delete(parameterId);\n }\n }\n }\n return extendedParameters;\n}\nfunction getOrHydrateObjectSet(osdkClient, cache, paramKey, objectSetRid, definition) {\n if (osdkClient == null) {\n throw new Error(\"Not provided an OSDK client\");\n }\n const cached = cache.get(paramKey);\n if (cached?.objectSetRid === objectSetRid) {\n return cached.objectSet;\n }\n const objectSet = hydrateObjectSetFromRid(osdkClient, definition, objectSetRid);\n cache.set(paramKey, {\n objectSetRid,\n objectSet\n });\n return objectSet;\n}","/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Utility function to initialize a map of parameter values to either a loading or not-started loading state\n */\nexport function initializeParameters(config, initialLoadingState) {\n return Object.fromEntries(Object.entries(config.parameters).map(([key, parameterConfig]) => [key, {\n type: parameterConfig.type,\n value: {\n type: initialLoadingState\n }\n }]));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createAndFetchTempObjectSetRid } from \"@osdk/client/internal\";\nexport function transformEmitEventPayload(config, eventId, payload, osdkClient) {\n for (const paramId of Object.keys(payload.parameterUpdates)) {\n const paramConfig = config.parameters[paramId];\n if (paramConfig?.type === \"objectSet\") {\n return {\n type: \"async\",\n payload: transformEmitEventPayloadAsync(config, eventId, payload, osdkClient)\n };\n }\n }\n\n // No object set parameters, pass through synchronously\n return {\n type: \"passThrough\",\n payload: {\n parameterUpdates: payload.parameterUpdates\n }\n };\n}\n\n/**\n * Transforms an augmented emit event payload by creating temporary object sets\n * from ObjectSet instances.\n *\n * Multiple ObjectSet parameters are transformed in parallel for better performance.\n */\nexport async function transformEmitEventPayloadAsync(config, eventId, payload, osdkClient) {\n const event = config.events[eventId];\n if (event == null) {\n throw new Error(`Event with ID \"${eventId.toString()}\" not found in widget config`);\n }\n const entries = Object.entries(payload.parameterUpdates);\n const transformedEntries = await Promise.all(entries.map(async ([paramId, paramValue]) => {\n const paramConfig = config.parameters[paramId];\n if (paramConfig?.type === \"objectSet\") {\n if (osdkClient == null) {\n throw new Error(`Cannot emit event \"${eventId.toString()}\" with ObjectSet parameter \"${paramId}\" without an osdk client`);\n }\n const objectSetRid = await createAndFetchTempObjectSetRid(osdkClient, paramValue);\n return [paramId, {\n objectSetRid\n }];\n }\n return [paramId, paramValue];\n }));\n return {\n parameterUpdates: Object.fromEntries(transformedEntries)\n };\n}","/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createFoundryWidgetClient } from \"@osdk/widget.client\";\nimport React, { useCallback, useEffect, useMemo, useRef } from \"react\";\nimport { FoundryWidgetContext } from \"./context.js\";\nimport { ErrorBoundary } from \"./ErrorBoundary.js\";\nimport { extendParametersWithObjectSets } from \"./utils/extendParametersWithObjectSets.js\";\nimport { initializeParameters } from \"./utils/initializeParameters.js\";\nimport { transformEmitEventPayload } from \"./utils/transformEmitEventPayload.js\";\n/**\n * Handles subscribing to messages from the host Foundry UI and updating the widget's parameter values accordingly via React context\n */\nexport const FoundryWidget = ({\n children,\n config,\n initialValues,\n client: osdkClient\n}) => {\n const client = useMemo(() => createFoundryWidgetClient(), []);\n const [asyncParameterValues, setAsyncParameterValues] = React.useState(initialValues ?? initializeParameters(config, \"not-started\"));\n const [allParameterValues, setAllParameterValues] = React.useState({\n type: \"not-started\"\n });\n const objectSetCache = useRef(new Map());\n const emitEventCallIds = useRef(new Map());\n const emitEvent = useCallback((eventId, payload) => {\n const transformResult = transformEmitEventPayload(config, eventId, payload, osdkClient);\n if (transformResult.type === \"passThrough\") {\n client.emitEvent(eventId, transformResult.payload);\n return;\n }\n async function handleAsyncEmitEvent() {\n const eventKey = String(eventId);\n const thisCallId = (emitEventCallIds.current.get(eventKey) ?? 0) + 1;\n emitEventCallIds.current.set(eventKey, thisCallId);\n const transformedPayload = await transformResult.payload;\n if (thisCallId !== emitEventCallIds.current.get(eventKey)) {\n return;\n }\n client.emitEvent(eventId, transformedPayload);\n }\n void handleAsyncEmitEvent();\n }, [osdkClient, config, client]);\n useEffect(() => {\n client.subscribe();\n client.hostEventTarget.addEventListener(\"host.update-parameters\", payload => {\n const processedParameters = extendParametersWithObjectSets(osdkClient, config, payload.detail.parameters, objectSetCache.current);\n setAsyncParameterValues(currentParameters => ({\n ...currentParameters,\n ...processedParameters\n }));\n setAllParameterValues(currentParameters => {\n let aggregatedLoadedState = \"loaded\";\n let firstError;\n const newParameterValues = {};\n for (const key in processedParameters) {\n const value = processedParameters[key].value;\n // If any fails, consider the whole thing failed\n if (value.type === \"failed\") {\n aggregatedLoadedState = \"failed\";\n firstError = firstError ?? value.error;\n newParameterValues[key] = value.value;\n continue;\n }\n // If any is loading, consider all of it loading unless we have failed somewhere\n if (value.type === \"loading\" && aggregatedLoadedState !== \"failed\") {\n aggregatedLoadedState = \"loading\";\n continue;\n }\n // If any is reloading, consider it loading unless something is failed or loading for the first time\n if (value.type === \"reloading\" && aggregatedLoadedState !== \"failed\" && aggregatedLoadedState !== \"loading\") {\n aggregatedLoadedState = \"reloading\";\n newParameterValues[key] = value.value;\n continue;\n }\n if (value.type === \"not-started\" && aggregatedLoadedState !== \"failed\" && aggregatedLoadedState !== \"loading\" && aggregatedLoadedState !== \"reloading\") {\n aggregatedLoadedState = \"not-started\";\n }\n if (value.type === \"loaded\") {\n newParameterValues[key] = value.value;\n }\n }\n const currentParameterValue = currentParameters.type !== \"not-started\" && currentParameters.type !== \"loading\" ? currentParameters.value : {};\n if (aggregatedLoadedState !== \"not-started\" && aggregatedLoadedState !== \"loading\") {\n const updatedValue = {\n ...currentParameterValue,\n ...newParameterValues\n };\n return aggregatedLoadedState === \"failed\" ? {\n type: aggregatedLoadedState,\n value: updatedValue,\n error: firstError ?? new Error(\"Failed to load parameters\")\n } : {\n type: aggregatedLoadedState,\n value: updatedValue\n };\n } else {\n return {\n type: aggregatedLoadedState\n };\n }\n });\n });\n client.ready();\n const resizeObserver = new ResizeObserver(entries => {\n if (entries.length !== 1) {\n // eslint-disable-next-line no-console\n console.error(\"Expected exactly one resize observer entry but received:\", entries);\n return;\n }\n const entry = entries[0];\n if (entry.borderBoxSize.length !== 1) {\n // eslint-disable-next-line no-console\n console.error(\"Expected exactly one border box size but received:\", entry.borderBoxSize);\n return;\n }\n const {\n inlineSize: width,\n blockSize: height\n } = entry.borderBoxSize[0];\n client.resize({\n width,\n height\n });\n });\n resizeObserver.observe(document.body, {\n box: \"border-box\"\n });\n return () => {\n client.unsubscribe();\n resizeObserver.disconnect();\n };\n }, []);\n return /*#__PURE__*/React.createElement(FoundryWidgetContext.Provider, {\n value: {\n emitEvent,\n hostEventTarget: client.hostEventTarget,\n asyncParameterValues,\n parameters: {\n values: allParameterValues.value ?? {},\n state: allParameterValues.type\n }\n // Unfortunately the context is statically defined so we can't use the generic type, hence the cast\n }\n }, /*#__PURE__*/React.createElement(ErrorBoundary, null, children));\n};"]}
|
package/build/cjs/index.d.cts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { ObjectSet, Client } from '@osdk/client';
|
|
2
|
-
import {
|
|
2
|
+
import { AllowedObjectSetParameterType, WidgetMessage, EventId, EventParameterValueMap } from '@osdk/widget.api';
|
|
3
3
|
import { WidgetConfig, AsyncParameterValueMap, AsyncValue, ParameterValueMap, FoundryHostEventTarget } from '@osdk/widget.client';
|
|
4
4
|
import React from 'react';
|
|
5
5
|
|
|
6
6
|
type AugmentedEventParameterValueMap<C extends WidgetConfig<C["parameters"]>, K extends EventId<C>> = {
|
|
7
7
|
[P in keyof EventParameterValueMap<C, K>]: P extends keyof C["parameters"] ? C["parameters"][P] extends {
|
|
8
8
|
type: "objectSet";
|
|
9
|
-
|
|
10
|
-
} ? T extends
|
|
9
|
+
allowedType: infer T;
|
|
10
|
+
} ? T extends AllowedObjectSetParameterType ? ObjectSet<T> : EventParameterValueMap<C, K>[P] : EventParameterValueMap<C, K>[P] : EventParameterValueMap<C, K>[P];
|
|
11
11
|
};
|
|
12
12
|
type AugmentedEmitEventIdMap<C extends WidgetConfig<C["parameters"]>> = {
|
|
13
13
|
[K in EventId<C>]: {
|
|
@@ -53,16 +53,16 @@ interface FoundryWidgetClientContext<C extends WidgetConfig<C["parameters"]>> {
|
|
|
53
53
|
type ExtendedParameterValueMap<C extends WidgetConfig<C["parameters"]>> = {
|
|
54
54
|
[K in keyof C["parameters"]]: K extends keyof ParameterValueMap<C> ? C["parameters"][K] extends {
|
|
55
55
|
type: "objectSet";
|
|
56
|
-
|
|
57
|
-
} ? T extends
|
|
56
|
+
allowedType: infer T;
|
|
57
|
+
} ? T extends AllowedObjectSetParameterType ? ParameterValueMap<C>[K] & {
|
|
58
58
|
objectSet: ObjectSet<T>;
|
|
59
59
|
} : ParameterValueMap<C>[K] : ParameterValueMap<C>[K] : never;
|
|
60
60
|
};
|
|
61
61
|
type ExtendedAsyncParameterValueMap<C extends WidgetConfig<C["parameters"]>> = {
|
|
62
62
|
[K in keyof C["parameters"]]: K extends keyof AsyncParameterValueMap<C> ? C["parameters"][K] extends {
|
|
63
63
|
type: "objectSet";
|
|
64
|
-
|
|
65
|
-
} ? T extends
|
|
64
|
+
allowedType: infer T;
|
|
65
|
+
} ? T extends AllowedObjectSetParameterType ? AsyncParameterValueMap<C>[K] & {
|
|
66
66
|
value: AsyncValue<ParameterValueMap<C>[K] & {
|
|
67
67
|
objectSet: ObjectSet<T>;
|
|
68
68
|
}>;
|
|
@@ -78,8 +78,8 @@ declare namespace useFoundryWidgetContext {
|
|
|
78
78
|
|
|
79
79
|
type ExtractObjectTypes<C extends WidgetConfig<C["parameters"]>> = C["parameters"][keyof C["parameters"]] extends infer Param ? Param extends {
|
|
80
80
|
type: "objectSet";
|
|
81
|
-
|
|
82
|
-
} ?
|
|
81
|
+
allowedType: infer AT;
|
|
82
|
+
} ? AT extends AllowedObjectSetParameterType ? AT : never : never : never;
|
|
83
83
|
type HasObjectSetParameters<C extends WidgetConfig<C["parameters"]>> = ExtractObjectTypes<C> extends never ? false : true;
|
|
84
84
|
type ObjectSetProps<C extends WidgetConfig<C["parameters"]>> = {
|
|
85
85
|
/**
|
package/build/esm/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","names":["createFoundryWidgetClient","React","useCallback","useEffect","useMemo","useRef","FoundryWidgetContext","ErrorBoundary","extendParametersWithObjectSets","initializeParameters","transformEmitEventPayload","FoundryWidget","children","config","initialValues","client","osdkClient","asyncParameterValues","setAsyncParameterValues","useState","allParameterValues","setAllParameterValues","type","objectSetCache","Map","emitEventCallIds","emitEvent","eventId","payload","transformResult","eventKey","String","thisCallId","current","get","set","transformedPayload","subscribe","hostEventTarget","addEventListener","processedParameters","detail","parameters","currentParameters","aggregatedLoadedState","firstError","newParameterValues","key","value","error","currentParameterValue","updatedValue","Error","ready","resizeObserver","ResizeObserver","entries","length","console","entry","borderBoxSize","inlineSize","width","blockSize","height","resize","observe","document","body","box","unsubscribe","disconnect","createElement","Provider","values","state"],"sources":["client.tsx"],"sourcesContent":["/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Client, ObjectSet } from \"@osdk/client\";\nimport type { ObjectType } from \"@osdk/widget.api\";\nimport {\n type AsyncValue,\n createFoundryWidgetClient,\n type FoundryWidgetClient,\n type ParameterConfig,\n type WidgetConfig,\n} from \"@osdk/widget.client\";\nimport React, { useCallback, useEffect, useMemo, useRef } from \"react\";\nimport type {\n AugmentedEmitEvent,\n ExtendedAsyncParameterValueMap,\n ExtendedParameterValueMap,\n FoundryWidgetClientContext,\n} from \"./context.js\";\nimport { FoundryWidgetContext } from \"./context.js\";\nimport { ErrorBoundary } from \"./ErrorBoundary.js\";\nimport { extendParametersWithObjectSets } from \"./utils/extendParametersWithObjectSets.js\";\nimport { initializeParameters } from \"./utils/initializeParameters.js\";\nimport { transformEmitEventPayload } from \"./utils/transformEmitEventPayload.js\";\n\ntype ExtractObjectTypes<C extends WidgetConfig<C[\"parameters\"]>> =\n C[\"parameters\"][keyof C[\"parameters\"]] extends infer Param\n ? Param extends { type: \"objectSet\"; objectType: infer OT }\n ? OT extends ObjectType ? OT\n : never\n : never\n : never;\n\ntype HasObjectSetParameters<C extends WidgetConfig<C[\"parameters\"]>> =\n ExtractObjectTypes<C> extends never ? false : true;\n\ntype ObjectSetProps<C extends WidgetConfig<C[\"parameters\"]>> = {\n /**\n * Used to hydrate object sets from their RIDs for object set parameters\n */\n client: Client;\n};\n\ntype FoundryWidgetProps<C extends WidgetConfig<C[\"parameters\"]>> =\n & {\n children: React.ReactNode;\n\n /**\n * Parameter configuration for the widget\n */\n config: C;\n\n /**\n * Customize what the initial value of each parameter should be\n *\n * @default Sets all parameters to the \"not-started\" loading state\n */\n initialValues?: ExtendedAsyncParameterValueMap<C>;\n }\n & Partial<ObjectSetProps<C>>\n & (HasObjectSetParameters<C> extends true ? ObjectSetProps<C> : {});\n\n/**\n * Handles subscribing to messages from the host Foundry UI and updating the widget's parameter values accordingly via React context\n */\nexport const FoundryWidget = <C extends WidgetConfig<C[\"parameters\"]>>({\n children,\n config,\n initialValues,\n client: osdkClient,\n}: FoundryWidgetProps<C>): React.ReactElement<FoundryWidgetProps<C>> => {\n const client = useMemo(() => createFoundryWidgetClient<C>(), []);\n const [asyncParameterValues, setAsyncParameterValues] = React.useState<\n ExtendedAsyncParameterValueMap<C>\n >(initialValues ?? initializeParameters(config, \"not-started\"));\n const [allParameterValues, setAllParameterValues] = React.useState<\n AsyncValue<ExtendedParameterValueMap<C>>\n >({\n type: \"not-started\",\n });\n\n const objectSetCache = useRef<\n Map<string, { objectSetRid: string; objectSet: ObjectSet }>\n >(new Map());\n\n const emitEventCallIds = useRef<Map<string, number>>(new Map());\n\n const emitEvent: AugmentedEmitEvent<C> = useCallback(\n (eventId: Parameters<FoundryWidgetClient<C>[\"emitEvent\"]>[0], payload) => {\n const transformResult = transformEmitEventPayload(\n config,\n eventId,\n payload,\n osdkClient,\n );\n if (transformResult.type === \"passThrough\") {\n client.emitEvent(\n eventId,\n transformResult.payload as Parameters<\n FoundryWidgetClient<C>[\"emitEvent\"]\n >[1],\n );\n return;\n }\n\n async function handleAsyncEmitEvent() {\n const eventKey = String(eventId);\n const thisCallId = (emitEventCallIds.current.get(eventKey) ?? 0) + 1;\n emitEventCallIds.current.set(eventKey, thisCallId);\n\n const transformedPayload = await transformResult.payload;\n\n if (thisCallId !== emitEventCallIds.current.get(eventKey)) {\n return;\n }\n\n client.emitEvent(\n eventId,\n transformedPayload as Parameters<\n FoundryWidgetClient<C>[\"emitEvent\"]\n >[1],\n );\n }\n\n void handleAsyncEmitEvent();\n },\n [osdkClient, config, client],\n );\n\n useEffect(() => {\n client.subscribe();\n client.hostEventTarget.addEventListener(\n \"host.update-parameters\",\n (payload) => {\n const processedParameters = extendParametersWithObjectSets(\n osdkClient,\n config,\n payload.detail.parameters,\n objectSetCache.current,\n );\n setAsyncParameterValues((currentParameters) => ({\n ...currentParameters,\n ...processedParameters,\n }));\n setAllParameterValues((currentParameters) => {\n let aggregatedLoadedState: AsyncValue<any>[\"type\"] = \"loaded\";\n let firstError: Error | undefined;\n const newParameterValues: ExtendedParameterValueMap<\n WidgetConfig<ParameterConfig>\n > = {};\n for (const key in processedParameters) {\n const value = processedParameters[key].value;\n // If any fails, consider the whole thing failed\n if (value.type === \"failed\") {\n aggregatedLoadedState = \"failed\";\n firstError = firstError ?? value.error;\n newParameterValues[key as any] = value.value as any;\n continue;\n }\n // If any is loading, consider all of it loading unless we have failed somewhere\n if (\n value.type === \"loading\"\n && aggregatedLoadedState !== \"failed\"\n ) {\n aggregatedLoadedState = \"loading\";\n continue;\n }\n // If any is reloading, consider it loading unless something is failed or loading for the first time\n if (\n value.type === \"reloading\"\n && aggregatedLoadedState !== \"failed\"\n && aggregatedLoadedState !== \"loading\"\n ) {\n aggregatedLoadedState = \"reloading\";\n newParameterValues[key as any] = value.value as any;\n continue;\n }\n if (\n value.type === \"not-started\"\n && aggregatedLoadedState !== \"failed\"\n && aggregatedLoadedState !== \"loading\"\n && aggregatedLoadedState !== \"reloading\"\n ) {\n aggregatedLoadedState = \"not-started\";\n }\n\n if (value.type === \"loaded\") {\n newParameterValues[key as any] = value.value as any;\n }\n }\n const currentParameterValue = currentParameters.type !== \"not-started\"\n && currentParameters.type !== \"loading\"\n ? currentParameters.value\n : {};\n if (\n aggregatedLoadedState !== \"not-started\"\n && aggregatedLoadedState !== \"loading\"\n ) {\n const updatedValue = {\n ...currentParameterValue,\n ...newParameterValues,\n } as ExtendedParameterValueMap<C>;\n return aggregatedLoadedState === \"failed\"\n ? {\n type: aggregatedLoadedState,\n value: updatedValue,\n error: firstError ?? new Error(\"Failed to load parameters\"),\n }\n : {\n type: aggregatedLoadedState,\n value: updatedValue,\n };\n } else {\n return { type: aggregatedLoadedState };\n }\n });\n },\n );\n client.ready();\n\n const resizeObserver = new ResizeObserver((entries) => {\n if (entries.length !== 1) {\n // eslint-disable-next-line no-console\n console.error(\n \"Expected exactly one resize observer entry but received:\",\n entries,\n );\n return;\n }\n const entry = entries[0];\n if (entry.borderBoxSize.length !== 1) {\n // eslint-disable-next-line no-console\n console.error(\n \"Expected exactly one border box size but received:\",\n entry.borderBoxSize,\n );\n return;\n }\n const { inlineSize: width, blockSize: height } = entry.borderBoxSize[0];\n client.resize({ width, height });\n });\n resizeObserver.observe(document.body, { box: \"border-box\" });\n\n return () => {\n client.unsubscribe();\n resizeObserver.disconnect();\n };\n }, []);\n\n return (\n <FoundryWidgetContext.Provider\n value={{\n emitEvent,\n hostEventTarget: client.hostEventTarget,\n asyncParameterValues,\n parameters: {\n values: allParameterValues.value ?? {},\n state: allParameterValues.type,\n },\n // Unfortunately the context is statically defined so we can't use the generic type, hence the cast\n } as FoundryWidgetClientContext<WidgetConfig<ParameterConfig>>}\n >\n <ErrorBoundary>\n {children}\n </ErrorBoundary>\n </FoundryWidgetContext.Provider>\n );\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"client.js","names":["createFoundryWidgetClient","React","useCallback","useEffect","useMemo","useRef","FoundryWidgetContext","ErrorBoundary","extendParametersWithObjectSets","initializeParameters","transformEmitEventPayload","FoundryWidget","children","config","initialValues","client","osdkClient","asyncParameterValues","setAsyncParameterValues","useState","allParameterValues","setAllParameterValues","type","objectSetCache","Map","emitEventCallIds","emitEvent","eventId","payload","transformResult","eventKey","String","thisCallId","current","get","set","transformedPayload","subscribe","hostEventTarget","addEventListener","processedParameters","detail","parameters","currentParameters","aggregatedLoadedState","firstError","newParameterValues","key","value","error","currentParameterValue","updatedValue","Error","ready","resizeObserver","ResizeObserver","entries","length","console","entry","borderBoxSize","inlineSize","width","blockSize","height","resize","observe","document","body","box","unsubscribe","disconnect","createElement","Provider","values","state"],"sources":["client.tsx"],"sourcesContent":["/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Client, ObjectSet } from \"@osdk/client\";\nimport type { AllowedObjectSetParameterType } from \"@osdk/widget.api\";\nimport {\n type AsyncValue,\n createFoundryWidgetClient,\n type FoundryWidgetClient,\n type ParameterConfig,\n type WidgetConfig,\n} from \"@osdk/widget.client\";\nimport React, { useCallback, useEffect, useMemo, useRef } from \"react\";\nimport type {\n AugmentedEmitEvent,\n ExtendedAsyncParameterValueMap,\n ExtendedParameterValueMap,\n FoundryWidgetClientContext,\n} from \"./context.js\";\nimport { FoundryWidgetContext } from \"./context.js\";\nimport { ErrorBoundary } from \"./ErrorBoundary.js\";\nimport { extendParametersWithObjectSets } from \"./utils/extendParametersWithObjectSets.js\";\nimport { initializeParameters } from \"./utils/initializeParameters.js\";\nimport { transformEmitEventPayload } from \"./utils/transformEmitEventPayload.js\";\n\ntype ExtractObjectTypes<C extends WidgetConfig<C[\"parameters\"]>> =\n C[\"parameters\"][keyof C[\"parameters\"]] extends infer Param\n ? Param extends { type: \"objectSet\"; allowedType: infer AT }\n ? AT extends AllowedObjectSetParameterType ? AT\n : never\n : never\n : never;\n\ntype HasObjectSetParameters<C extends WidgetConfig<C[\"parameters\"]>> =\n ExtractObjectTypes<C> extends never ? false : true;\n\ntype ObjectSetProps<C extends WidgetConfig<C[\"parameters\"]>> = {\n /**\n * Used to hydrate object sets from their RIDs for object set parameters\n */\n client: Client;\n};\n\ntype FoundryWidgetProps<C extends WidgetConfig<C[\"parameters\"]>> =\n & {\n children: React.ReactNode;\n\n /**\n * Parameter configuration for the widget\n */\n config: C;\n\n /**\n * Customize what the initial value of each parameter should be\n *\n * @default Sets all parameters to the \"not-started\" loading state\n */\n initialValues?: ExtendedAsyncParameterValueMap<C>;\n }\n & Partial<ObjectSetProps<C>>\n & (HasObjectSetParameters<C> extends true ? ObjectSetProps<C> : {});\n\n/**\n * Handles subscribing to messages from the host Foundry UI and updating the widget's parameter values accordingly via React context\n */\nexport const FoundryWidget = <C extends WidgetConfig<C[\"parameters\"]>>({\n children,\n config,\n initialValues,\n client: osdkClient,\n}: FoundryWidgetProps<C>): React.ReactElement<FoundryWidgetProps<C>> => {\n const client = useMemo(() => createFoundryWidgetClient<C>(), []);\n const [asyncParameterValues, setAsyncParameterValues] = React.useState<\n ExtendedAsyncParameterValueMap<C>\n >(initialValues ?? initializeParameters(config, \"not-started\"));\n const [allParameterValues, setAllParameterValues] = React.useState<\n AsyncValue<ExtendedParameterValueMap<C>>\n >({\n type: \"not-started\",\n });\n\n const objectSetCache = useRef<\n Map<string, { objectSetRid: string; objectSet: ObjectSet }>\n >(new Map());\n\n const emitEventCallIds = useRef<Map<string, number>>(new Map());\n\n const emitEvent: AugmentedEmitEvent<C> = useCallback(\n (eventId: Parameters<FoundryWidgetClient<C>[\"emitEvent\"]>[0], payload) => {\n const transformResult = transformEmitEventPayload(\n config,\n eventId,\n payload,\n osdkClient,\n );\n if (transformResult.type === \"passThrough\") {\n client.emitEvent(\n eventId,\n transformResult.payload as Parameters<\n FoundryWidgetClient<C>[\"emitEvent\"]\n >[1],\n );\n return;\n }\n\n async function handleAsyncEmitEvent() {\n const eventKey = String(eventId);\n const thisCallId = (emitEventCallIds.current.get(eventKey) ?? 0) + 1;\n emitEventCallIds.current.set(eventKey, thisCallId);\n\n const transformedPayload = await transformResult.payload;\n\n if (thisCallId !== emitEventCallIds.current.get(eventKey)) {\n return;\n }\n\n client.emitEvent(\n eventId,\n transformedPayload as Parameters<\n FoundryWidgetClient<C>[\"emitEvent\"]\n >[1],\n );\n }\n\n void handleAsyncEmitEvent();\n },\n [osdkClient, config, client],\n );\n\n useEffect(() => {\n client.subscribe();\n client.hostEventTarget.addEventListener(\n \"host.update-parameters\",\n (payload) => {\n const processedParameters = extendParametersWithObjectSets(\n osdkClient,\n config,\n payload.detail.parameters,\n objectSetCache.current,\n );\n setAsyncParameterValues((currentParameters) => ({\n ...currentParameters,\n ...processedParameters,\n }));\n setAllParameterValues((currentParameters) => {\n let aggregatedLoadedState: AsyncValue<any>[\"type\"] = \"loaded\";\n let firstError: Error | undefined;\n const newParameterValues: ExtendedParameterValueMap<\n WidgetConfig<ParameterConfig>\n > = {};\n for (const key in processedParameters) {\n const value = processedParameters[key].value;\n // If any fails, consider the whole thing failed\n if (value.type === \"failed\") {\n aggregatedLoadedState = \"failed\";\n firstError = firstError ?? value.error;\n newParameterValues[key as any] = value.value as any;\n continue;\n }\n // If any is loading, consider all of it loading unless we have failed somewhere\n if (\n value.type === \"loading\"\n && aggregatedLoadedState !== \"failed\"\n ) {\n aggregatedLoadedState = \"loading\";\n continue;\n }\n // If any is reloading, consider it loading unless something is failed or loading for the first time\n if (\n value.type === \"reloading\"\n && aggregatedLoadedState !== \"failed\"\n && aggregatedLoadedState !== \"loading\"\n ) {\n aggregatedLoadedState = \"reloading\";\n newParameterValues[key as any] = value.value as any;\n continue;\n }\n if (\n value.type === \"not-started\"\n && aggregatedLoadedState !== \"failed\"\n && aggregatedLoadedState !== \"loading\"\n && aggregatedLoadedState !== \"reloading\"\n ) {\n aggregatedLoadedState = \"not-started\";\n }\n\n if (value.type === \"loaded\") {\n newParameterValues[key as any] = value.value as any;\n }\n }\n const currentParameterValue = currentParameters.type !== \"not-started\"\n && currentParameters.type !== \"loading\"\n ? currentParameters.value\n : {};\n if (\n aggregatedLoadedState !== \"not-started\"\n && aggregatedLoadedState !== \"loading\"\n ) {\n const updatedValue = {\n ...currentParameterValue,\n ...newParameterValues,\n } as ExtendedParameterValueMap<C>;\n return aggregatedLoadedState === \"failed\"\n ? {\n type: aggregatedLoadedState,\n value: updatedValue,\n error: firstError ?? new Error(\"Failed to load parameters\"),\n }\n : {\n type: aggregatedLoadedState,\n value: updatedValue,\n };\n } else {\n return { type: aggregatedLoadedState };\n }\n });\n },\n );\n client.ready();\n\n const resizeObserver = new ResizeObserver((entries) => {\n if (entries.length !== 1) {\n // eslint-disable-next-line no-console\n console.error(\n \"Expected exactly one resize observer entry but received:\",\n entries,\n );\n return;\n }\n const entry = entries[0];\n if (entry.borderBoxSize.length !== 1) {\n // eslint-disable-next-line no-console\n console.error(\n \"Expected exactly one border box size but received:\",\n entry.borderBoxSize,\n );\n return;\n }\n const { inlineSize: width, blockSize: height } = entry.borderBoxSize[0];\n client.resize({ width, height });\n });\n resizeObserver.observe(document.body, { box: \"border-box\" });\n\n return () => {\n client.unsubscribe();\n resizeObserver.disconnect();\n };\n }, []);\n\n return (\n <FoundryWidgetContext.Provider\n value={{\n emitEvent,\n hostEventTarget: client.hostEventTarget,\n asyncParameterValues,\n parameters: {\n values: allParameterValues.value ?? {},\n state: allParameterValues.type,\n },\n // Unfortunately the context is statically defined so we can't use the generic type, hence the cast\n } as FoundryWidgetClientContext<WidgetConfig<ParameterConfig>>}\n >\n <ErrorBoundary>\n {children}\n </ErrorBoundary>\n </FoundryWidgetContext.Provider>\n );\n};\n"],"mappings":"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","ignoreList":[]}
|
package/build/esm/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","names":["FoundryHostEventTarget","React","useContext","FoundryWidgetContext","createContext","emitEvent","hostEventTarget","asyncParameterValues","parameters","state","values","useFoundryWidgetContext","_useFoundryWidgetContext","withTypes"],"sources":["context.ts"],"sourcesContent":["/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software=\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { ObjectSet } from \"@osdk/client\";\nimport type {\n
|
|
1
|
+
{"version":3,"file":"context.js","names":["FoundryHostEventTarget","React","useContext","FoundryWidgetContext","createContext","emitEvent","hostEventTarget","asyncParameterValues","parameters","state","values","useFoundryWidgetContext","_useFoundryWidgetContext","withTypes"],"sources":["context.ts"],"sourcesContent":["/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software=\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { ObjectSet } from \"@osdk/client\";\nimport type {\n AllowedObjectSetParameterType,\n EventId,\n EventParameterValueMap,\n WidgetMessage,\n} from \"@osdk/widget.api\";\nimport {\n type AsyncParameterValueMap,\n type AsyncValue,\n FoundryHostEventTarget,\n type ParameterConfig,\n type ParameterValueMap,\n type WidgetConfig,\n} from \"@osdk/widget.client\";\nimport React, { useContext } from \"react\";\n\nexport type AugmentedEventParameterValueMap<\n C extends WidgetConfig<C[\"parameters\"]>,\n K extends EventId<C>,\n> = {\n [P in keyof EventParameterValueMap<C, K>]: P extends keyof C[\"parameters\"]\n ? C[\"parameters\"][P] extends { type: \"objectSet\"; allowedType: infer T }\n ? T extends AllowedObjectSetParameterType ? ObjectSet<T>\n : EventParameterValueMap<C, K>[P]\n : EventParameterValueMap<C, K>[P]\n : EventParameterValueMap<C, K>[P];\n};\n\ntype AugmentedEmitEventIdMap<C extends WidgetConfig<C[\"parameters\"]>> = {\n [K in EventId<C>]: {\n eventId: K;\n parameterUpdates: AugmentedEventParameterValueMap<C, K>;\n };\n};\n\ninterface AugmentedWidgetEmitEvent<C extends WidgetConfig<C[\"parameters\"]>>\n extends Omit<WidgetMessage.EmitEvent<C>, \"payload\">\n{\n payload: AugmentedEmitEventIdMap<C>[EventId<C>];\n}\n\n/**\n * Emits a widget event with parameter updates to the host Foundry UI.\n *\n * For object set parameters, pass `ObjectSet<T>` directly.\n * If the same event is emitted multiple times in quick succession and involves Object Set parameters, only the last call will be sent.\n * Errors (e.g., network failures when serializing ObjectSet parameters) are not surfaced to the caller.\n */\nexport type AugmentedEmitEvent<C extends WidgetConfig<C[\"parameters\"]>> = <\n M extends AugmentedWidgetEmitEvent<C>,\n ID extends M[\"payload\"][\"eventId\"],\n>(\n eventId: ID,\n payload: Omit<Extract<M[\"payload\"], { eventId: ID }>, \"eventId\">,\n) => void;\n\nexport interface FoundryWidgetClientContext<\n C extends WidgetConfig<C[\"parameters\"]>,\n> {\n /**\n * Emits a widget event with parameter updates to the host Foundry UI.\n *\n * - For ObjectSet parameters, pass `ObjectSet<T>` directly\n * - If the same event is emitted multiple times rapidly and involves Object Set parameters, only the last call is sent\n * - Errors are not surfaced to the caller\n */\n emitEvent: AugmentedEmitEvent<C>;\n hostEventTarget: FoundryHostEventTarget<C>;\n\n /**\n * Object where the individual parameters have their async state represented\n */\n asyncParameterValues: ExtendedAsyncParameterValueMap<C>;\n\n /**\n * Convenience object that aggregates the value of all parameters, accounting for their loading states\n */\n parameters: {\n values: Partial<ExtendedParameterValueMap<C>>;\n state: AsyncValue<ParameterValueMap<C>>[\"type\"];\n };\n}\n\nexport type ExtendedParameterValueMap<C extends WidgetConfig<C[\"parameters\"]>> =\n {\n [K in keyof C[\"parameters\"]]: K extends keyof ParameterValueMap<C>\n ? C[\"parameters\"][K] extends { type: \"objectSet\"; allowedType: infer T }\n ? T extends AllowedObjectSetParameterType\n ? ParameterValueMap<C>[K] & { objectSet: ObjectSet<T> }\n : ParameterValueMap<C>[K]\n : ParameterValueMap<C>[K]\n : never;\n };\n\nexport type ExtendedAsyncParameterValueMap<\n C extends WidgetConfig<C[\"parameters\"]>,\n> = {\n [K in keyof C[\"parameters\"]]: K extends keyof AsyncParameterValueMap<C>\n ? C[\"parameters\"][K] extends { type: \"objectSet\"; allowedType: infer T }\n ? T extends AllowedObjectSetParameterType\n ? AsyncParameterValueMap<C>[K] & {\n value: AsyncValue<\n ParameterValueMap<C>[K] & { objectSet: ObjectSet<T> }\n >;\n }\n : AsyncParameterValueMap<C>[K]\n : AsyncParameterValueMap<C>[K]\n : never;\n};\n\nexport const FoundryWidgetContext: React.Context<\n FoundryWidgetClientContext<WidgetConfig<ParameterConfig>>\n> = React.createContext<\n FoundryWidgetClientContext<WidgetConfig<ParameterConfig>>\n>({\n emitEvent: () => {},\n hostEventTarget: new FoundryHostEventTarget<WidgetConfig<ParameterConfig>>(),\n asyncParameterValues: {},\n parameters: {\n state: \"not-started\",\n values: {},\n },\n});\n\n/**\n * @returns The current FoundryWidgetClientContext, in the context of your specific parameter configuration\n */\nexport function useFoundryWidgetContext<\n C extends WidgetConfig<C[\"parameters\"]>,\n>(): FoundryWidgetClientContext<C> {\n return useContext(FoundryWidgetContext) as FoundryWidgetClientContext<C>;\n}\n\nexport namespace useFoundryWidgetContext {\n export function withTypes<\n C extends WidgetConfig<C[\"parameters\"]>,\n >(): () => FoundryWidgetClientContext<C> {\n return () => {\n return useFoundryWidgetContext<C>();\n };\n }\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA,SAGEA,sBAAsB,QAIjB,qBAAqB;AAC5B,OAAOC,KAAK,IAAIC,UAAU,QAAQ,OAAO;;AA2BzC;AACA;AACA;AACA;AACA;AACA;AACA;;AA+DA,OAAO,MAAMC,oBAEZ,gBAAGF,KAAK,CAACG,aAAa,CAErB;EACAC,SAAS,EAAEA,CAAA,KAAM,CAAC,CAAC;EACnBC,eAAe,EAAE,IAAIN,sBAAsB,CAAgC,CAAC;EAC5EO,oBAAoB,EAAE,CAAC,CAAC;EACxBC,UAAU,EAAE;IACVC,KAAK,EAAE,aAAa;IACpBC,MAAM,EAAE,CAAC;EACX;AACF,CAAC,CAAC;;AAEF;AACA;AACA;AACA,OAAO,SAASC,uBAAuBA,CAAA,EAEJ;EACjC,OAAOT,UAAU,CAACC,oBAAoB,CAAC;AACzC;AAAC,WAAAS,wBAAA;EAAAA,wBAAA,CAAAC,SAAA,GAGQ,YAEkC;IACvC,OAAO,MAAM;MACX,OAAOF,uBAAuB,CAAI,CAAC;IACrC,CAAC;EACH,CAAC;AAAA,GAPcA,uBAAuB,KAAvBA,uBAAuB","ignoreList":[]}
|
|
@@ -32,7 +32,7 @@ export function extendParametersWithObjectSets(osdkClient, config, parameters, c
|
|
|
32
32
|
if (parameterValue != null) {
|
|
33
33
|
if (typeof parameterValue === "object" && "objectSetRid" in parameterValue && typeof parameterValue.objectSetRid === "string") {
|
|
34
34
|
const objectSetRid = parameterValue.objectSetRid;
|
|
35
|
-
const objectSet = getOrHydrateObjectSet(osdkClient, cache, parameterId, objectSetRid, param.
|
|
35
|
+
const objectSet = getOrHydrateObjectSet(osdkClient, cache, parameterId, objectSetRid, param.allowedType);
|
|
36
36
|
parameterValue.objectSet = objectSet;
|
|
37
37
|
} else {
|
|
38
38
|
throw new Error(`Invalid object set parameter value for parameter "${parameterId}"`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extendParametersWithObjectSets.js","names":["hydrateObjectSetFromRid","extendParametersWithObjectSets","osdkClient","config","parameters","cache","extendedParameters","parameterId","Object","keys","param","type","parameterValue","value","objectSetRid","objectSet","getOrHydrateObjectSet","
|
|
1
|
+
{"version":3,"file":"extendParametersWithObjectSets.js","names":["hydrateObjectSetFromRid","extendParametersWithObjectSets","osdkClient","config","parameters","cache","extendedParameters","parameterId","Object","keys","param","type","parameterValue","value","objectSetRid","objectSet","getOrHydrateObjectSet","allowedType","Error","delete","paramKey","definition","cached","get","set"],"sources":["extendParametersWithObjectSets.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Client, ObjectSet } from \"@osdk/client\";\nimport { hydrateObjectSetFromRid } from \"@osdk/client/internal\";\nimport type {\n AllowedObjectSetParameterType,\n AsyncParameterValueMap,\n WidgetConfig,\n} from \"@osdk/widget.api\";\nimport type { ExtendedAsyncParameterValueMap } from \"../context.js\";\n\n/**\n * Patches parameter values with hydrated object sets for object set parameters.\n *\n * The cache is used to avoid redundant hydration of the same object set RID, which\n * can cause unnecessary re-renders in React components consuming the parameters.\n */\nexport function extendParametersWithObjectSets<\n C extends WidgetConfig<C[\"parameters\"]>,\n>(\n osdkClient: Client | undefined,\n config: C,\n parameters: AsyncParameterValueMap<C>,\n cache: Map<string, { objectSetRid: string; objectSet: ObjectSet }>,\n): ExtendedAsyncParameterValueMap<C> {\n const extendedParameters = {\n ...parameters,\n } as ExtendedAsyncParameterValueMap<C>;\n\n for (const parameterId of Object.keys(extendedParameters)) {\n const param = config.parameters[parameterId];\n if (\n param.type === \"objectSet\"\n && extendedParameters[parameterId].type === \"objectSet\"\n ) {\n const parameterValue = extendedParameters[parameterId].value.value;\n if (parameterValue != null) {\n if (\n typeof parameterValue === \"object\"\n && \"objectSetRid\" in parameterValue\n && typeof parameterValue.objectSetRid === \"string\"\n ) {\n const objectSetRid = parameterValue.objectSetRid;\n const objectSet = getOrHydrateObjectSet(\n osdkClient,\n cache,\n parameterId,\n objectSetRid,\n param.allowedType,\n );\n (parameterValue as any).objectSet = objectSet;\n } else {\n throw new Error(\n `Invalid object set parameter value for parameter \"${parameterId}\"`,\n );\n }\n } else {\n cache.delete(parameterId);\n }\n }\n }\n\n return extendedParameters;\n}\n\nfunction getOrHydrateObjectSet<T extends AllowedObjectSetParameterType>(\n osdkClient: Client | undefined,\n cache: Map<string, { objectSetRid: string; objectSet: ObjectSet<T> }>,\n paramKey: string,\n objectSetRid: string,\n definition: T,\n) {\n if (osdkClient == null) {\n throw new Error(\"Not provided an OSDK client\");\n }\n const cached = cache.get(paramKey);\n if (cached?.objectSetRid === objectSetRid) {\n return cached.objectSet;\n }\n const objectSet = hydrateObjectSetFromRid(\n osdkClient,\n definition,\n objectSetRid,\n );\n cache.set(paramKey, { objectSetRid, objectSet });\n return objectSet;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,SAASA,uBAAuB,QAAQ,uBAAuB;AAQ/D;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,8BAA8BA,CAG5CC,UAA8B,EAC9BC,MAAS,EACTC,UAAqC,EACrCC,KAAkE,EAC/B;EACnC,MAAMC,kBAAkB,GAAG;IACzB,GAAGF;EACL,CAAsC;EAEtC,KAAK,MAAMG,WAAW,IAAIC,MAAM,CAACC,IAAI,CAACH,kBAAkB,CAAC,EAAE;IACzD,MAAMI,KAAK,GAAGP,MAAM,CAACC,UAAU,CAACG,WAAW,CAAC;IAC5C,IACEG,KAAK,CAACC,IAAI,KAAK,WAAW,IACvBL,kBAAkB,CAACC,WAAW,CAAC,CAACI,IAAI,KAAK,WAAW,EACvD;MACA,MAAMC,cAAc,GAAGN,kBAAkB,CAACC,WAAW,CAAC,CAACM,KAAK,CAACA,KAAK;MAClE,IAAID,cAAc,IAAI,IAAI,EAAE;QAC1B,IACE,OAAOA,cAAc,KAAK,QAAQ,IAC/B,cAAc,IAAIA,cAAc,IAChC,OAAOA,cAAc,CAACE,YAAY,KAAK,QAAQ,EAClD;UACA,MAAMA,YAAY,GAAGF,cAAc,CAACE,YAAY;UAChD,MAAMC,SAAS,GAAGC,qBAAqB,CACrCd,UAAU,EACVG,KAAK,EACLE,WAAW,EACXO,YAAY,EACZJ,KAAK,CAACO,WACR,CAAC;UACAL,cAAc,CAASG,SAAS,GAAGA,SAAS;QAC/C,CAAC,MAAM;UACL,MAAM,IAAIG,KAAK,CACb,qDAAqDX,WAAW,GAClE,CAAC;QACH;MACF,CAAC,MAAM;QACLF,KAAK,CAACc,MAAM,CAACZ,WAAW,CAAC;MAC3B;IACF;EACF;EAEA,OAAOD,kBAAkB;AAC3B;AAEA,SAASU,qBAAqBA,CAC5Bd,UAA8B,EAC9BG,KAAqE,EACrEe,QAAgB,EAChBN,YAAoB,EACpBO,UAAa,EACb;EACA,IAAInB,UAAU,IAAI,IAAI,EAAE;IACtB,MAAM,IAAIgB,KAAK,CAAC,6BAA6B,CAAC;EAChD;EACA,MAAMI,MAAM,GAAGjB,KAAK,CAACkB,GAAG,CAACH,QAAQ,CAAC;EAClC,IAAIE,MAAM,EAAER,YAAY,KAAKA,YAAY,EAAE;IACzC,OAAOQ,MAAM,CAACP,SAAS;EACzB;EACA,MAAMA,SAAS,GAAGf,uBAAuB,CACvCE,UAAU,EACVmB,UAAU,EACVP,YACF,CAAC;EACDT,KAAK,CAACmB,GAAG,CAACJ,QAAQ,EAAE;IAAEN,YAAY;IAAEC;EAAU,CAAC,CAAC;EAChD,OAAOA,SAAS;AAClB","ignoreList":[]}
|
|
@@ -65,7 +65,7 @@ describe("extendParametersWithObjectSets", () => {
|
|
|
65
65
|
myObjectSet: {
|
|
66
66
|
displayName: "My Object Set",
|
|
67
67
|
type: "objectSet",
|
|
68
|
-
|
|
68
|
+
allowedType: createMockObjectType()
|
|
69
69
|
},
|
|
70
70
|
myString: {
|
|
71
71
|
displayName: "My String",
|
|
@@ -130,12 +130,12 @@ describe("extendParametersWithObjectSets", () => {
|
|
|
130
130
|
objectsA: {
|
|
131
131
|
displayName: "Object Set A",
|
|
132
132
|
type: "objectSet",
|
|
133
|
-
|
|
133
|
+
allowedType: mockObjectType
|
|
134
134
|
},
|
|
135
135
|
objectsB: {
|
|
136
136
|
displayName: "Object Set B",
|
|
137
137
|
type: "objectSet",
|
|
138
|
-
|
|
138
|
+
allowedType: mockObjectType
|
|
139
139
|
}
|
|
140
140
|
},
|
|
141
141
|
events: {}
|
|
@@ -192,7 +192,7 @@ describe("extendParametersWithObjectSets", () => {
|
|
|
192
192
|
myObjectSet: {
|
|
193
193
|
displayName: "My Object Set",
|
|
194
194
|
type: "objectSet",
|
|
195
|
-
|
|
195
|
+
allowedType: createMockObjectType()
|
|
196
196
|
},
|
|
197
197
|
myString: {
|
|
198
198
|
displayName: "My String",
|
|
@@ -251,7 +251,7 @@ describe("extendParametersWithObjectSets", () => {
|
|
|
251
251
|
myObjectSet: {
|
|
252
252
|
displayName: "My Object Set",
|
|
253
253
|
type: "objectSet",
|
|
254
|
-
|
|
254
|
+
allowedType: createMockObjectType()
|
|
255
255
|
}
|
|
256
256
|
},
|
|
257
257
|
events: {}
|
|
@@ -270,7 +270,7 @@ describe("extendParametersWithObjectSets", () => {
|
|
|
270
270
|
myObjectSet: {
|
|
271
271
|
displayName: "My Object Set",
|
|
272
272
|
type: "objectSet",
|
|
273
|
-
|
|
273
|
+
allowedType: createMockObjectType()
|
|
274
274
|
}
|
|
275
275
|
},
|
|
276
276
|
events: {}
|
|
@@ -297,7 +297,7 @@ describe("extendParametersWithObjectSets", () => {
|
|
|
297
297
|
myObjectSet: {
|
|
298
298
|
displayName: "My Object Set",
|
|
299
299
|
type: "objectSet",
|
|
300
|
-
|
|
300
|
+
allowedType: createMockObjectType()
|
|
301
301
|
}
|
|
302
302
|
},
|
|
303
303
|
events: {}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extendParametersWithObjectSets.test.js","names":["hydrateObjectSetFromRid","defineConfig","beforeEach","describe","expect","it","vi","extendParametersWithObjectSets","mock","fn","client","cache","Map","createMockObjectType","rid","apiName","type","internalDoNotUseMetadata","createLoadedValue","value","createObjectSetParam","objectSetRid","createStringParam","createNumberParam","createMockObjectSet","name","Symbol","clearAllMocks","clear","config","id","parameters","myObjectSet","displayName","objectType","myString","events","mockObjectSet","mocked","mockReturnValue","result","toEqual","objectSet","myNumber","undefined","not","toHaveBeenCalled","mockObjectType","objectsA","objectsB","mockObjectSetA","mockObjectSetB","mockReturnValueOnce","expectHydratedParam","mockObjectSetB2","result2","get","toMatchObject","initialParameters","initialResult","failedParameters","error","Error","failedResult","has","toBe","toHaveBeenCalledTimes","toThrow","mockObjectSet1","toHaveBeenCalledWith","anything","reloadingResult","mockObjectSet2","newLoadedParameters","newLoadedResult","toHaveBeenLastCalledWith"],"sources":["extendParametersWithObjectSets.test.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Client, ObjectSet } from \"@osdk/client\";\nimport { hydrateObjectSetFromRid } from \"@osdk/client/internal\";\nimport type { AsyncParameterValueMap, ObjectType } from \"@osdk/widget.api\";\nimport { defineConfig } from \"@osdk/widget.client\";\nimport type { Mock } from \"vitest\";\nimport { beforeEach, describe, expect, it, vi } from \"vitest\";\nimport { extendParametersWithObjectSets } from \"./extendParametersWithObjectSets.js\";\n\nvi.mock(\"@osdk/client/internal\", () => ({\n hydrateObjectSetFromRid: vi.fn(),\n}));\n\ndescribe(\"extendParametersWithObjectSets\", () => {\n const client = vi.fn() as Mock<Client> & Client;\n const cache = new Map<\n string,\n { objectSetRid: string; objectSet: ObjectSet }\n >();\n\n // Test helpers\n const createMockObjectType = (rid = \"ri.object-type.123\"): ObjectType => ({\n apiName: \"MyObjectType\",\n type: \"object\",\n internalDoNotUseMetadata: { rid },\n });\n\n const createLoadedValue = <T>(value: T) => ({\n type: \"loaded\" as const,\n value,\n });\n\n const createObjectSetParam = (rid: string) => ({\n type: \"objectSet\" as const,\n value: createLoadedValue({ objectSetRid: rid }),\n });\n\n const createStringParam = (value: string) => ({\n type: \"string\" as const,\n value: createLoadedValue(value),\n });\n\n const createNumberParam = (value: number) => ({\n type: \"number\" as const,\n value: createLoadedValue(value),\n });\n\n const createMockObjectSet = (name = \"MockObjectSet\") =>\n Symbol(name) as unknown as ObjectSet;\n\n beforeEach(() => {\n vi.clearAllMocks();\n cache.clear();\n });\n\n it(\"should hydrate an object set for a valid objectSetRid\", () => {\n const config = defineConfig({\n id: \"testWidget\",\n name: \"Test Widget\",\n type: \"workshop\",\n parameters: {\n myObjectSet: {\n displayName: \"My Object Set\",\n type: \"objectSet\",\n objectType: createMockObjectType(),\n },\n myString: {\n displayName: \"My String\",\n type: \"string\",\n },\n },\n events: {},\n });\n\n const parameters: AsyncParameterValueMap<typeof config> = {\n myString: createStringParam(\"test string\"),\n myObjectSet: createObjectSetParam(\"ri.object-set.123\"),\n };\n\n const mockObjectSet = createMockObjectSet();\n vi.mocked(hydrateObjectSetFromRid).mockReturnValue(mockObjectSet);\n\n const result = extendParametersWithObjectSets(\n client,\n config,\n parameters,\n cache,\n );\n\n expect(result).toEqual({\n myString: parameters.myString,\n myObjectSet: {\n ...parameters.myObjectSet,\n value: {\n ...parameters.myObjectSet.value,\n value: {\n objectSetRid: \"ri.object-set.123\",\n objectSet: mockObjectSet,\n },\n },\n },\n });\n });\n\n it(\"should pass-through a config with no object set parameters\", () => {\n const config = defineConfig({\n id: \"testWidget\",\n name: \"Test Widget\",\n type: \"workshop\",\n parameters: {\n myNumber: {\n displayName: \"My Number\",\n type: \"number\",\n },\n myString: {\n displayName: \"My String\",\n type: \"string\",\n },\n },\n events: {},\n });\n\n const parameters: AsyncParameterValueMap<typeof config> = {\n myString: createStringParam(\"test string\"),\n myNumber: createNumberParam(123),\n };\n\n const result = extendParametersWithObjectSets(\n undefined,\n config,\n parameters,\n cache,\n );\n\n expect(result).toEqual(parameters);\n expect(hydrateObjectSetFromRid).not.toHaveBeenCalled();\n });\n\n it(\"should handle multiple object set parameters independently\", () => {\n const mockObjectType = createMockObjectType();\n const config = defineConfig({\n id: \"testWidget\",\n name: \"Test Widget\",\n type: \"workshop\",\n parameters: {\n objectsA: {\n displayName: \"Object Set A\",\n type: \"objectSet\",\n objectType: mockObjectType,\n },\n objectsB: {\n displayName: \"Object Set B\",\n type: \"objectSet\",\n objectType: mockObjectType,\n },\n },\n events: {},\n });\n\n // Setup initial parameters\n const mockObjectSetA = createMockObjectSet(\"MockObjectSetA\");\n const mockObjectSetB = createMockObjectSet(\"MockObjectSetB\");\n\n vi.mocked(hydrateObjectSetFromRid)\n .mockReturnValueOnce(mockObjectSetA)\n .mockReturnValueOnce(mockObjectSetB);\n\n let parameters: AsyncParameterValueMap<typeof config> = {\n objectsA: createObjectSetParam(\"ri.object-set.123\"),\n objectsB: createObjectSetParam(\"ri.object-set.456\"),\n };\n\n const result = extendParametersWithObjectSets(\n client,\n config,\n parameters,\n cache,\n );\n\n // Helper to create expected result with hydrated object set\n const expectHydratedParam = (rid: string, objectSet: ObjectSet) => ({\n type: \"objectSet\",\n value: createLoadedValue({\n objectSetRid: rid,\n objectSet,\n }),\n });\n\n expect(result).toEqual({\n objectsA: expectHydratedParam(\"ri.object-set.123\", mockObjectSetA),\n objectsB: expectHydratedParam(\"ri.object-set.456\", mockObjectSetB),\n });\n\n // Test parameter update\n const mockObjectSetB2 = createMockObjectSet(\"MockObjectSetB2\");\n vi.mocked(hydrateObjectSetFromRid).mockReturnValueOnce(mockObjectSetB2);\n\n parameters = {\n ...parameters,\n objectsB: createObjectSetParam(\"ri.object-set.789\"),\n };\n\n const result2 = extendParametersWithObjectSets(\n client,\n config,\n parameters,\n cache,\n );\n\n expect(result2).toEqual({\n objectsA: expectHydratedParam(\"ri.object-set.123\", mockObjectSetA),\n objectsB: expectHydratedParam(\"ri.object-set.789\", mockObjectSetB2),\n });\n\n // Verify cache updated correctly\n expect(cache.get(\"objectsB\")).toMatchObject({\n objectSetRid: \"ri.object-set.789\",\n objectSet: mockObjectSetB2,\n });\n });\n\n it(\"should clear cache and provide no object set when parameter transitions to failed state\", () => {\n const config = defineConfig({\n id: \"testWidget\",\n name: \"Test Widget\",\n type: \"workshop\",\n parameters: {\n myObjectSet: {\n displayName: \"My Object Set\",\n type: \"objectSet\",\n objectType: createMockObjectType(),\n },\n myString: {\n displayName: \"My String\",\n type: \"string\",\n },\n },\n events: {},\n });\n\n // Initially load an object set successfully\n const mockObjectSet = createMockObjectSet();\n vi.mocked(hydrateObjectSetFromRid).mockReturnValue(mockObjectSet);\n\n const initialParameters: AsyncParameterValueMap<typeof config> = {\n myString: createStringParam(\"test string\"),\n myObjectSet: createObjectSetParam(\"ri.object-set.123\"),\n };\n\n const initialResult = extendParametersWithObjectSets(\n client,\n config,\n initialParameters,\n cache,\n );\n\n // Verify initial state - object set is loaded and cached\n expect(initialResult.myObjectSet.value.value).toMatchObject({\n objectSetRid: \"ri.object-set.123\",\n objectSet: mockObjectSet,\n });\n expect(cache.get(\"myObjectSet\")).toMatchObject({\n objectSetRid: \"ri.object-set.123\",\n objectSet: mockObjectSet,\n });\n\n // Transition to failed state and omit value\n const failedParameters: AsyncParameterValueMap<typeof config> = {\n myString: createStringParam(\"test string\"),\n myObjectSet: {\n type: \"objectSet\",\n value: {\n type: \"failed\",\n error: new Error(\"Failed to load object set\"),\n value: undefined,\n },\n },\n };\n\n const failedResult = extendParametersWithObjectSets(\n client,\n config,\n failedParameters,\n cache,\n );\n\n // Verify failed state - no object set in result and cache is cleared\n expect(failedResult).toEqual(failedParameters);\n expect(cache.has(\"myObjectSet\")).toBe(false);\n\n // Verify hydrateObjectSetFromRid was not called again for the failed state\n expect(hydrateObjectSetFromRid).toHaveBeenCalledTimes(1);\n });\n\n it(\"should throw an error when osdkClient is undefined but object set parameters used\", () => {\n const config = defineConfig({\n id: \"testWidget\",\n name: \"Test Widget\",\n type: \"workshop\",\n parameters: {\n myObjectSet: {\n displayName: \"My Object Set\",\n type: \"objectSet\",\n objectType: createMockObjectType(),\n },\n },\n events: {},\n });\n\n const parameters: AsyncParameterValueMap<typeof config> = {\n myObjectSet: createObjectSetParam(\"ri.object-set.123\"),\n };\n\n expect(() =>\n extendParametersWithObjectSets(\n undefined,\n config,\n parameters,\n cache,\n )\n ).toThrow(\"Not provided an OSDK client\");\n });\n\n it(\"should pass through loading state without hydration\", () => {\n const config = defineConfig({\n id: \"testWidget\",\n name: \"Test Widget\",\n type: \"workshop\",\n parameters: {\n myObjectSet: {\n displayName: \"My Object Set\",\n type: \"objectSet\",\n objectType: createMockObjectType(),\n },\n },\n events: {},\n });\n\n const parameters: AsyncParameterValueMap<typeof config> = {\n myObjectSet: {\n type: \"objectSet\",\n value: {\n type: \"loading\",\n value: undefined,\n },\n },\n };\n\n const result = extendParametersWithObjectSets(\n client,\n config,\n parameters,\n cache,\n );\n\n expect(result).toEqual(parameters);\n expect(hydrateObjectSetFromRid).not.toHaveBeenCalled();\n });\n\n it(\"should handle transition from loaded to reloading to loaded with new rid\", () => {\n const config = defineConfig({\n id: \"testWidget\",\n name: \"Test Widget\",\n type: \"workshop\",\n parameters: {\n myObjectSet: {\n displayName: \"My Object Set\",\n type: \"objectSet\",\n objectType: createMockObjectType(),\n },\n },\n events: {},\n });\n\n // Step 1: Initial loaded state\n const mockObjectSet1 = createMockObjectSet(\"InitialObjectSet\");\n vi.mocked(hydrateObjectSetFromRid).mockReturnValue(mockObjectSet1);\n\n const initialParameters: AsyncParameterValueMap<typeof config> = {\n myObjectSet: createObjectSetParam(\"ri.object-set.123\"),\n };\n\n const initialResult = extendParametersWithObjectSets(\n client,\n config,\n initialParameters,\n cache,\n );\n\n // Verify initial state\n expect(initialResult.myObjectSet.value.value).toMatchObject({\n objectSetRid: \"ri.object-set.123\",\n objectSet: mockObjectSet1,\n });\n expect(cache.get(\"myObjectSet\")).toMatchObject({\n objectSetRid: \"ri.object-set.123\",\n objectSet: mockObjectSet1,\n });\n expect(hydrateObjectSetFromRid).toHaveBeenCalledTimes(1);\n expect(hydrateObjectSetFromRid).toHaveBeenCalledWith(\n client,\n expect.anything(),\n \"ri.object-set.123\",\n );\n\n // Step 2: Transition to reloading state (value persists during reload)\n const reloadingParameters: AsyncParameterValueMap<typeof config> = {\n myObjectSet: {\n type: \"objectSet\",\n value: {\n type: \"reloading\",\n value: {\n objectSetRid: \"ri.object-set.123\",\n },\n },\n },\n };\n\n const reloadingResult = extendParametersWithObjectSets(\n client,\n config,\n reloadingParameters,\n cache,\n );\n\n // During reloading, the cached objectSet should be reused (no new hydration)\n expect(reloadingResult.myObjectSet.value.value).toMatchObject({\n objectSetRid: \"ri.object-set.123\",\n objectSet: mockObjectSet1, // Same object set from cache\n });\n expect(cache.get(\"myObjectSet\")).toMatchObject({\n objectSetRid: \"ri.object-set.123\",\n objectSet: mockObjectSet1,\n });\n expect(hydrateObjectSetFromRid).toHaveBeenCalledTimes(1); // Still only 1 call\n\n // Step 3: Transition back to loaded with new rid\n const mockObjectSet2 = createMockObjectSet(\"UpdatedObjectSet\");\n vi.mocked(hydrateObjectSetFromRid).mockReturnValue(mockObjectSet2);\n\n const newLoadedParameters: AsyncParameterValueMap<typeof config> = {\n myObjectSet: createObjectSetParam(\"ri.object-set.456\"),\n };\n\n const newLoadedResult = extendParametersWithObjectSets(\n client,\n config,\n newLoadedParameters,\n cache,\n );\n\n // Verify new state - new object set hydrated and cache updated\n expect(newLoadedResult.myObjectSet.value.value).toMatchObject({\n objectSetRid: \"ri.object-set.456\",\n objectSet: mockObjectSet2,\n });\n expect(cache.get(\"myObjectSet\")).toMatchObject({\n objectSetRid: \"ri.object-set.456\",\n objectSet: mockObjectSet2,\n });\n expect(hydrateObjectSetFromRid).toHaveBeenCalledTimes(2);\n expect(hydrateObjectSetFromRid).toHaveBeenLastCalledWith(\n client,\n expect.anything(),\n \"ri.object-set.456\",\n );\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"extendParametersWithObjectSets.test.js","names":["hydrateObjectSetFromRid","defineConfig","beforeEach","describe","expect","it","vi","extendParametersWithObjectSets","mock","fn","client","cache","Map","createMockObjectType","rid","apiName","type","internalDoNotUseMetadata","createLoadedValue","value","createObjectSetParam","objectSetRid","createStringParam","createNumberParam","createMockObjectSet","name","Symbol","clearAllMocks","clear","config","id","parameters","myObjectSet","displayName","allowedType","myString","events","mockObjectSet","mocked","mockReturnValue","result","toEqual","objectSet","myNumber","undefined","not","toHaveBeenCalled","mockObjectType","objectsA","objectsB","mockObjectSetA","mockObjectSetB","mockReturnValueOnce","expectHydratedParam","mockObjectSetB2","result2","get","toMatchObject","initialParameters","initialResult","failedParameters","error","Error","failedResult","has","toBe","toHaveBeenCalledTimes","toThrow","mockObjectSet1","toHaveBeenCalledWith","anything","reloadingResult","mockObjectSet2","newLoadedParameters","newLoadedResult","toHaveBeenLastCalledWith"],"sources":["extendParametersWithObjectSets.test.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Client, ObjectSet } from \"@osdk/client\";\nimport { hydrateObjectSetFromRid } from \"@osdk/client/internal\";\nimport type {\n AllowedObjectSetParameterType,\n AsyncParameterValueMap,\n} from \"@osdk/widget.api\";\nimport { defineConfig } from \"@osdk/widget.client\";\nimport type { Mock } from \"vitest\";\nimport { beforeEach, describe, expect, it, vi } from \"vitest\";\nimport { extendParametersWithObjectSets } from \"./extendParametersWithObjectSets.js\";\n\nvi.mock(\"@osdk/client/internal\", () => ({\n hydrateObjectSetFromRid: vi.fn(),\n}));\n\ndescribe(\"extendParametersWithObjectSets\", () => {\n const client = vi.fn() as Mock<Client> & Client;\n const cache = new Map<\n string,\n { objectSetRid: string; objectSet: ObjectSet }\n >();\n\n // Test helpers\n const createMockObjectType = (\n rid = \"ri.object-type.123\",\n ): AllowedObjectSetParameterType => ({\n apiName: \"MyObjectType\",\n type: \"object\",\n internalDoNotUseMetadata: { rid },\n });\n\n const createLoadedValue = <T>(value: T) => ({\n type: \"loaded\" as const,\n value,\n });\n\n const createObjectSetParam = (rid: string) => ({\n type: \"objectSet\" as const,\n value: createLoadedValue({ objectSetRid: rid }),\n });\n\n const createStringParam = (value: string) => ({\n type: \"string\" as const,\n value: createLoadedValue(value),\n });\n\n const createNumberParam = (value: number) => ({\n type: \"number\" as const,\n value: createLoadedValue(value),\n });\n\n const createMockObjectSet = (name = \"MockObjectSet\") =>\n Symbol(name) as unknown as ObjectSet;\n\n beforeEach(() => {\n vi.clearAllMocks();\n cache.clear();\n });\n\n it(\"should hydrate an object set for a valid objectSetRid\", () => {\n const config = defineConfig({\n id: \"testWidget\",\n name: \"Test Widget\",\n type: \"workshop\",\n parameters: {\n myObjectSet: {\n displayName: \"My Object Set\",\n type: \"objectSet\",\n allowedType: createMockObjectType(),\n },\n myString: {\n displayName: \"My String\",\n type: \"string\",\n },\n },\n events: {},\n });\n\n const parameters: AsyncParameterValueMap<typeof config> = {\n myString: createStringParam(\"test string\"),\n myObjectSet: createObjectSetParam(\"ri.object-set.123\"),\n };\n\n const mockObjectSet = createMockObjectSet();\n vi.mocked(hydrateObjectSetFromRid).mockReturnValue(mockObjectSet);\n\n const result = extendParametersWithObjectSets(\n client,\n config,\n parameters,\n cache,\n );\n\n expect(result).toEqual({\n myString: parameters.myString,\n myObjectSet: {\n ...parameters.myObjectSet,\n value: {\n ...parameters.myObjectSet.value,\n value: {\n objectSetRid: \"ri.object-set.123\",\n objectSet: mockObjectSet,\n },\n },\n },\n });\n });\n\n it(\"should pass-through a config with no object set parameters\", () => {\n const config = defineConfig({\n id: \"testWidget\",\n name: \"Test Widget\",\n type: \"workshop\",\n parameters: {\n myNumber: {\n displayName: \"My Number\",\n type: \"number\",\n },\n myString: {\n displayName: \"My String\",\n type: \"string\",\n },\n },\n events: {},\n });\n\n const parameters: AsyncParameterValueMap<typeof config> = {\n myString: createStringParam(\"test string\"),\n myNumber: createNumberParam(123),\n };\n\n const result = extendParametersWithObjectSets(\n undefined,\n config,\n parameters,\n cache,\n );\n\n expect(result).toEqual(parameters);\n expect(hydrateObjectSetFromRid).not.toHaveBeenCalled();\n });\n\n it(\"should handle multiple object set parameters independently\", () => {\n const mockObjectType = createMockObjectType();\n const config = defineConfig({\n id: \"testWidget\",\n name: \"Test Widget\",\n type: \"workshop\",\n parameters: {\n objectsA: {\n displayName: \"Object Set A\",\n type: \"objectSet\",\n allowedType: mockObjectType,\n },\n objectsB: {\n displayName: \"Object Set B\",\n type: \"objectSet\",\n allowedType: mockObjectType,\n },\n },\n events: {},\n });\n\n // Setup initial parameters\n const mockObjectSetA = createMockObjectSet(\"MockObjectSetA\");\n const mockObjectSetB = createMockObjectSet(\"MockObjectSetB\");\n\n vi.mocked(hydrateObjectSetFromRid)\n .mockReturnValueOnce(mockObjectSetA)\n .mockReturnValueOnce(mockObjectSetB);\n\n let parameters: AsyncParameterValueMap<typeof config> = {\n objectsA: createObjectSetParam(\"ri.object-set.123\"),\n objectsB: createObjectSetParam(\"ri.object-set.456\"),\n };\n\n const result = extendParametersWithObjectSets(\n client,\n config,\n parameters,\n cache,\n );\n\n // Helper to create expected result with hydrated object set\n const expectHydratedParam = (rid: string, objectSet: ObjectSet) => ({\n type: \"objectSet\",\n value: createLoadedValue({\n objectSetRid: rid,\n objectSet,\n }),\n });\n\n expect(result).toEqual({\n objectsA: expectHydratedParam(\"ri.object-set.123\", mockObjectSetA),\n objectsB: expectHydratedParam(\"ri.object-set.456\", mockObjectSetB),\n });\n\n // Test parameter update\n const mockObjectSetB2 = createMockObjectSet(\"MockObjectSetB2\");\n vi.mocked(hydrateObjectSetFromRid).mockReturnValueOnce(mockObjectSetB2);\n\n parameters = {\n ...parameters,\n objectsB: createObjectSetParam(\"ri.object-set.789\"),\n };\n\n const result2 = extendParametersWithObjectSets(\n client,\n config,\n parameters,\n cache,\n );\n\n expect(result2).toEqual({\n objectsA: expectHydratedParam(\"ri.object-set.123\", mockObjectSetA),\n objectsB: expectHydratedParam(\"ri.object-set.789\", mockObjectSetB2),\n });\n\n // Verify cache updated correctly\n expect(cache.get(\"objectsB\")).toMatchObject({\n objectSetRid: \"ri.object-set.789\",\n objectSet: mockObjectSetB2,\n });\n });\n\n it(\"should clear cache and provide no object set when parameter transitions to failed state\", () => {\n const config = defineConfig({\n id: \"testWidget\",\n name: \"Test Widget\",\n type: \"workshop\",\n parameters: {\n myObjectSet: {\n displayName: \"My Object Set\",\n type: \"objectSet\",\n allowedType: createMockObjectType(),\n },\n myString: {\n displayName: \"My String\",\n type: \"string\",\n },\n },\n events: {},\n });\n\n // Initially load an object set successfully\n const mockObjectSet = createMockObjectSet();\n vi.mocked(hydrateObjectSetFromRid).mockReturnValue(mockObjectSet);\n\n const initialParameters: AsyncParameterValueMap<typeof config> = {\n myString: createStringParam(\"test string\"),\n myObjectSet: createObjectSetParam(\"ri.object-set.123\"),\n };\n\n const initialResult = extendParametersWithObjectSets(\n client,\n config,\n initialParameters,\n cache,\n );\n\n // Verify initial state - object set is loaded and cached\n expect(initialResult.myObjectSet.value.value).toMatchObject({\n objectSetRid: \"ri.object-set.123\",\n objectSet: mockObjectSet,\n });\n expect(cache.get(\"myObjectSet\")).toMatchObject({\n objectSetRid: \"ri.object-set.123\",\n objectSet: mockObjectSet,\n });\n\n // Transition to failed state and omit value\n const failedParameters: AsyncParameterValueMap<typeof config> = {\n myString: createStringParam(\"test string\"),\n myObjectSet: {\n type: \"objectSet\",\n value: {\n type: \"failed\",\n error: new Error(\"Failed to load object set\"),\n value: undefined,\n },\n },\n };\n\n const failedResult = extendParametersWithObjectSets(\n client,\n config,\n failedParameters,\n cache,\n );\n\n // Verify failed state - no object set in result and cache is cleared\n expect(failedResult).toEqual(failedParameters);\n expect(cache.has(\"myObjectSet\")).toBe(false);\n\n // Verify hydrateObjectSetFromRid was not called again for the failed state\n expect(hydrateObjectSetFromRid).toHaveBeenCalledTimes(1);\n });\n\n it(\"should throw an error when osdkClient is undefined but object set parameters used\", () => {\n const config = defineConfig({\n id: \"testWidget\",\n name: \"Test Widget\",\n type: \"workshop\",\n parameters: {\n myObjectSet: {\n displayName: \"My Object Set\",\n type: \"objectSet\",\n allowedType: createMockObjectType(),\n },\n },\n events: {},\n });\n\n const parameters: AsyncParameterValueMap<typeof config> = {\n myObjectSet: createObjectSetParam(\"ri.object-set.123\"),\n };\n\n expect(() =>\n extendParametersWithObjectSets(\n undefined,\n config,\n parameters,\n cache,\n )\n ).toThrow(\"Not provided an OSDK client\");\n });\n\n it(\"should pass through loading state without hydration\", () => {\n const config = defineConfig({\n id: \"testWidget\",\n name: \"Test Widget\",\n type: \"workshop\",\n parameters: {\n myObjectSet: {\n displayName: \"My Object Set\",\n type: \"objectSet\",\n allowedType: createMockObjectType(),\n },\n },\n events: {},\n });\n\n const parameters: AsyncParameterValueMap<typeof config> = {\n myObjectSet: {\n type: \"objectSet\",\n value: {\n type: \"loading\",\n value: undefined,\n },\n },\n };\n\n const result = extendParametersWithObjectSets(\n client,\n config,\n parameters,\n cache,\n );\n\n expect(result).toEqual(parameters);\n expect(hydrateObjectSetFromRid).not.toHaveBeenCalled();\n });\n\n it(\"should handle transition from loaded to reloading to loaded with new rid\", () => {\n const config = defineConfig({\n id: \"testWidget\",\n name: \"Test Widget\",\n type: \"workshop\",\n parameters: {\n myObjectSet: {\n displayName: \"My Object Set\",\n type: \"objectSet\",\n allowedType: createMockObjectType(),\n },\n },\n events: {},\n });\n\n // Step 1: Initial loaded state\n const mockObjectSet1 = createMockObjectSet(\"InitialObjectSet\");\n vi.mocked(hydrateObjectSetFromRid).mockReturnValue(mockObjectSet1);\n\n const initialParameters: AsyncParameterValueMap<typeof config> = {\n myObjectSet: createObjectSetParam(\"ri.object-set.123\"),\n };\n\n const initialResult = extendParametersWithObjectSets(\n client,\n config,\n initialParameters,\n cache,\n );\n\n // Verify initial state\n expect(initialResult.myObjectSet.value.value).toMatchObject({\n objectSetRid: \"ri.object-set.123\",\n objectSet: mockObjectSet1,\n });\n expect(cache.get(\"myObjectSet\")).toMatchObject({\n objectSetRid: \"ri.object-set.123\",\n objectSet: mockObjectSet1,\n });\n expect(hydrateObjectSetFromRid).toHaveBeenCalledTimes(1);\n expect(hydrateObjectSetFromRid).toHaveBeenCalledWith(\n client,\n expect.anything(),\n \"ri.object-set.123\",\n );\n\n // Step 2: Transition to reloading state (value persists during reload)\n const reloadingParameters: AsyncParameterValueMap<typeof config> = {\n myObjectSet: {\n type: \"objectSet\",\n value: {\n type: \"reloading\",\n value: {\n objectSetRid: \"ri.object-set.123\",\n },\n },\n },\n };\n\n const reloadingResult = extendParametersWithObjectSets(\n client,\n config,\n reloadingParameters,\n cache,\n );\n\n // During reloading, the cached objectSet should be reused (no new hydration)\n expect(reloadingResult.myObjectSet.value.value).toMatchObject({\n objectSetRid: \"ri.object-set.123\",\n objectSet: mockObjectSet1, // Same object set from cache\n });\n expect(cache.get(\"myObjectSet\")).toMatchObject({\n objectSetRid: \"ri.object-set.123\",\n objectSet: mockObjectSet1,\n });\n expect(hydrateObjectSetFromRid).toHaveBeenCalledTimes(1); // Still only 1 call\n\n // Step 3: Transition back to loaded with new rid\n const mockObjectSet2 = createMockObjectSet(\"UpdatedObjectSet\");\n vi.mocked(hydrateObjectSetFromRid).mockReturnValue(mockObjectSet2);\n\n const newLoadedParameters: AsyncParameterValueMap<typeof config> = {\n myObjectSet: createObjectSetParam(\"ri.object-set.456\"),\n };\n\n const newLoadedResult = extendParametersWithObjectSets(\n client,\n config,\n newLoadedParameters,\n cache,\n );\n\n // Verify new state - new object set hydrated and cache updated\n expect(newLoadedResult.myObjectSet.value.value).toMatchObject({\n objectSetRid: \"ri.object-set.456\",\n objectSet: mockObjectSet2,\n });\n expect(cache.get(\"myObjectSet\")).toMatchObject({\n objectSetRid: \"ri.object-set.456\",\n objectSet: mockObjectSet2,\n });\n expect(hydrateObjectSetFromRid).toHaveBeenCalledTimes(2);\n expect(hydrateObjectSetFromRid).toHaveBeenLastCalledWith(\n client,\n expect.anything(),\n \"ri.object-set.456\",\n );\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -43,7 +43,7 @@ describe("transformEmitEventPayload", () => {
|
|
|
43
43
|
myObjectSet: {
|
|
44
44
|
displayName: "My Object Set",
|
|
45
45
|
type: "objectSet",
|
|
46
|
-
|
|
46
|
+
allowedType: createMockObjectType()
|
|
47
47
|
},
|
|
48
48
|
myString: {
|
|
49
49
|
displayName: "My String",
|
|
@@ -84,12 +84,12 @@ describe("transformEmitEventPayload", () => {
|
|
|
84
84
|
objectSetA: {
|
|
85
85
|
displayName: "Object Set A",
|
|
86
86
|
type: "objectSet",
|
|
87
|
-
|
|
87
|
+
allowedType: createMockObjectType()
|
|
88
88
|
},
|
|
89
89
|
objectSetB: {
|
|
90
90
|
displayName: "Object Set B",
|
|
91
91
|
type: "objectSet",
|
|
92
|
-
|
|
92
|
+
allowedType: createMockObjectType()
|
|
93
93
|
}
|
|
94
94
|
},
|
|
95
95
|
events: {
|
|
@@ -129,7 +129,7 @@ describe("transformEmitEventPayload", () => {
|
|
|
129
129
|
myObjectSet: {
|
|
130
130
|
displayName: "My Object Set",
|
|
131
131
|
type: "objectSet",
|
|
132
|
-
|
|
132
|
+
allowedType: createMockObjectType()
|
|
133
133
|
}
|
|
134
134
|
},
|
|
135
135
|
events: {
|
|
@@ -193,7 +193,7 @@ describe("transformEmitEventPayload", () => {
|
|
|
193
193
|
myObjectSet: {
|
|
194
194
|
displayName: "My Object Set",
|
|
195
195
|
type: "objectSet",
|
|
196
|
-
|
|
196
|
+
allowedType: createMockObjectType()
|
|
197
197
|
}
|
|
198
198
|
},
|
|
199
199
|
events: {}
|