@osdk/widget.vite-plugin 3.4.1 → 3.4.3

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 CHANGED
@@ -1,5 +1,20 @@
1
1
  # @osdk/widget.vite-plugin
2
2
 
3
+ ## 3.4.3
4
+
5
+ ### Patch Changes
6
+
7
+ - 58e5708: Add refreshHostDataOnAction
8
+ - 2d32b77: Revert node bump
9
+ - Updated dependencies [58e5708]
10
+ - @osdk/widget.api@3.4.3
11
+
12
+ ## 3.4.2
13
+
14
+ ### Patch Changes
15
+
16
+ - @osdk/widget.api@3.4.2
17
+
3
18
  ## 3.4.1
4
19
 
5
20
  ### Patch Changes
@@ -24,7 +24,7 @@ import { getInputHtmlEntrypoints } from "../common/getInputHtmlEntrypoints.js";
24
24
  import { buildWidgetSetManifest } from "./buildWidgetSetManifest.js";
25
25
  import { getWidgetBuildOutputs } from "./getWidgetBuildOutputs.js";
26
26
  import { getWidgetSetInputSpec } from "./getWidgetSetInputSpec.js";
27
- export function FoundryWidgetBuildPlugin() {
27
+ export function FoundryWidgetBuildPlugin(options) {
28
28
  // The root HTML entrypoints of the build process
29
29
  let htmlEntrypoints;
30
30
  // Store the resolved Vite config for use in later build steps
@@ -65,7 +65,7 @@ export function FoundryWidgetBuildPlugin() {
65
65
  const widgetSetVersion = await computeWidgetSetVersion(foundryConfig);
66
66
  const widgetBuilds = await Promise.all(htmlEntrypoints.map(input => getWidgetBuildOutputs(bundle, input, config.build.outDir, server)));
67
67
  const widgetSetInputSpec = await getWidgetSetInputSpec(path.resolve(process.cwd(), "package.json"));
68
- const widgetSetManifest = buildWidgetSetManifest(foundryConfig.foundryConfig.widgetSet.rid, widgetSetVersion, widgetBuilds, widgetSetInputSpec);
68
+ const widgetSetManifest = buildWidgetSetManifest(foundryConfig.foundryConfig.widgetSet.rid, widgetSetVersion, widgetBuilds, widgetSetInputSpec, options);
69
69
 
70
70
  // Write the manifest to the dist directory
71
71
  writeManifest(widgetSetManifest, config.build.outDir);
@@ -1 +1 @@
1
- {"version":3,"file":"FoundryWidgetBuildPlugin.js","names":["autoVersion","loadFoundryConfig","MANIFEST_FILE_LOCATION","fs","path","createServer","BUILD_PLUGIN_ID","MODULE_EVALUATION_MODE","getInputHtmlEntrypoints","buildWidgetSetManifest","getWidgetBuildOutputs","getWidgetSetInputSpec","FoundryWidgetBuildPlugin","htmlEntrypoints","config","name","enforce","apply","buildStart","options","configResolved","_config","writeBundle","_","bundle","foundryConfig","Error","server","createModuleEvaluationServer","widgetSetVersion","computeWidgetSetVersion","widgetBuilds","Promise","all","map","input","build","outDir","widgetSetInputSpec","resolve","process","cwd","widgetSetManifest","widgetSet","rid","writeManifest","close","configFile","mode","manifestPath","join","mkdirSync","dirname","recursive","writeFileSync","JSON","stringify"],"sources":["FoundryWidgetBuildPlugin.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 { LoadedFoundryConfig } from \"@osdk/foundry-config-json\";\nimport { autoVersion, loadFoundryConfig } from \"@osdk/foundry-config-json\";\nimport type { WidgetSetManifest } from \"@osdk/widget.api\";\nimport { MANIFEST_FILE_LOCATION } from \"@osdk/widget.api\";\nimport fs from \"fs\";\nimport path from \"path\";\nimport type { Plugin, ResolvedConfig, ViteDevServer } from \"vite\";\nimport { createServer } from \"vite\";\nimport {\n BUILD_PLUGIN_ID,\n MODULE_EVALUATION_MODE,\n} from \"../common/constants.js\";\nimport { getInputHtmlEntrypoints } from \"../common/getInputHtmlEntrypoints.js\";\nimport { buildWidgetSetManifest } from \"./buildWidgetSetManifest.js\";\nimport { getWidgetBuildOutputs } from \"./getWidgetBuildOutputs.js\";\nimport { getWidgetSetInputSpec } from \"./getWidgetSetInputSpec.js\";\n\nexport function FoundryWidgetBuildPlugin(): Plugin {\n // The root HTML entrypoints of the build process\n let htmlEntrypoints: string[];\n // Store the resolved Vite config for use in later build steps\n let config: ResolvedConfig;\n\n return {\n name: BUILD_PLUGIN_ID,\n enforce: \"pre\",\n // Only apply this plugin during build\n apply: \"build\",\n\n /**\n * Capture the entrypoints from the Vite config for use in later build steps.\n */\n buildStart(options) {\n htmlEntrypoints = getInputHtmlEntrypoints(options);\n },\n\n /**\n * Store the resolved Vite config for use in later build steps.\n */\n configResolved(_config) {\n config = _config;\n },\n\n /**\n * Once the build is complete, generate the widget set manifest based on the entrypoints and\n * configuration files that were found.\n *\n * Write the manifest to the expected location in the dist directory.\n */\n async writeBundle(_, bundle) {\n const foundryConfig = await loadFoundryConfig(\"widgetSet\");\n if (foundryConfig == null) {\n throw new Error(\"foundry.config.json file not found.\");\n }\n\n // Create a Vite server to evaluate widget config modules\n const server = await createModuleEvaluationServer(config);\n\n try {\n // Build widget set manifest\n const widgetSetVersion = await computeWidgetSetVersion(foundryConfig);\n const widgetBuilds = await Promise.all(\n htmlEntrypoints.map((input) =>\n getWidgetBuildOutputs(\n bundle,\n input,\n config.build.outDir,\n server,\n )\n ),\n );\n const widgetSetInputSpec = await getWidgetSetInputSpec(\n path.resolve(process.cwd(), \"package.json\"),\n );\n const widgetSetManifest = buildWidgetSetManifest(\n foundryConfig.foundryConfig.widgetSet.rid,\n widgetSetVersion,\n widgetBuilds,\n widgetSetInputSpec,\n );\n\n // Write the manifest to the dist directory\n writeManifest(widgetSetManifest, config.build.outDir);\n } finally {\n await server.close();\n }\n },\n };\n}\n\n/**\n * Create a Vite server for widget config module evaluation during the build process.\n * Must prevent loading the dev plugin to avoid triggering dev mode build steps.\n */\nasync function createModuleEvaluationServer(\n config: ResolvedConfig,\n): Promise<ViteDevServer> {\n return await createServer({\n // Reference the existing config file in order to respect any custom config\n configFile: config.configFile,\n // Custom mode to prevent dev plugin execution\n mode: MODULE_EVALUATION_MODE,\n });\n}\n\nasync function computeWidgetSetVersion(\n foundryConfig: LoadedFoundryConfig<\"widgetSet\">,\n): Promise<string> {\n return autoVersion(\n foundryConfig.foundryConfig.widgetSet.autoVersion\n ?? { \"type\": \"package-json\" },\n );\n}\n\nfunction writeManifest(\n widgetSetManifest: WidgetSetManifest,\n outDir: string,\n): void {\n const manifestPath = path.join(outDir, MANIFEST_FILE_LOCATION);\n fs.mkdirSync(path.dirname(manifestPath), { recursive: true });\n fs.writeFileSync(\n manifestPath,\n JSON.stringify(widgetSetManifest, null, 2),\n );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"FoundryWidgetBuildPlugin.js","names":["autoVersion","loadFoundryConfig","MANIFEST_FILE_LOCATION","fs","path","createServer","BUILD_PLUGIN_ID","MODULE_EVALUATION_MODE","getInputHtmlEntrypoints","buildWidgetSetManifest","getWidgetBuildOutputs","getWidgetSetInputSpec","FoundryWidgetBuildPlugin","options","htmlEntrypoints","config","name","enforce","apply","buildStart","configResolved","_config","writeBundle","_","bundle","foundryConfig","Error","server","createModuleEvaluationServer","widgetSetVersion","computeWidgetSetVersion","widgetBuilds","Promise","all","map","input","build","outDir","widgetSetInputSpec","resolve","process","cwd","widgetSetManifest","widgetSet","rid","writeManifest","close","configFile","mode","manifestPath","join","mkdirSync","dirname","recursive","writeFileSync","JSON","stringify"],"sources":["FoundryWidgetBuildPlugin.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 { LoadedFoundryConfig } from \"@osdk/foundry-config-json\";\nimport { autoVersion, loadFoundryConfig } from \"@osdk/foundry-config-json\";\nimport type { WidgetSetManifest } from \"@osdk/widget.api\";\nimport { MANIFEST_FILE_LOCATION } from \"@osdk/widget.api\";\nimport fs from \"fs\";\nimport path from \"path\";\nimport type { Plugin, ResolvedConfig, ViteDevServer } from \"vite\";\nimport { createServer } from \"vite\";\nimport {\n BUILD_PLUGIN_ID,\n MODULE_EVALUATION_MODE,\n} from \"../common/constants.js\";\nimport { getInputHtmlEntrypoints } from \"../common/getInputHtmlEntrypoints.js\";\nimport type { FoundryWidgetPluginOptions } from \"../index.js\";\nimport { buildWidgetSetManifest } from \"./buildWidgetSetManifest.js\";\nimport { getWidgetBuildOutputs } from \"./getWidgetBuildOutputs.js\";\nimport { getWidgetSetInputSpec } from \"./getWidgetSetInputSpec.js\";\n\nexport function FoundryWidgetBuildPlugin(\n options?: FoundryWidgetPluginOptions,\n): Plugin {\n // The root HTML entrypoints of the build process\n let htmlEntrypoints: string[];\n // Store the resolved Vite config for use in later build steps\n let config: ResolvedConfig;\n\n return {\n name: BUILD_PLUGIN_ID,\n enforce: \"pre\",\n // Only apply this plugin during build\n apply: \"build\",\n\n /**\n * Capture the entrypoints from the Vite config for use in later build steps.\n */\n buildStart(options) {\n htmlEntrypoints = getInputHtmlEntrypoints(options);\n },\n\n /**\n * Store the resolved Vite config for use in later build steps.\n */\n configResolved(_config) {\n config = _config;\n },\n\n /**\n * Once the build is complete, generate the widget set manifest based on the entrypoints and\n * configuration files that were found.\n *\n * Write the manifest to the expected location in the dist directory.\n */\n async writeBundle(_, bundle) {\n const foundryConfig = await loadFoundryConfig(\"widgetSet\");\n if (foundryConfig == null) {\n throw new Error(\"foundry.config.json file not found.\");\n }\n\n // Create a Vite server to evaluate widget config modules\n const server = await createModuleEvaluationServer(config);\n\n try {\n // Build widget set manifest\n const widgetSetVersion = await computeWidgetSetVersion(foundryConfig);\n const widgetBuilds = await Promise.all(\n htmlEntrypoints.map((input) =>\n getWidgetBuildOutputs(\n bundle,\n input,\n config.build.outDir,\n server,\n )\n ),\n );\n const widgetSetInputSpec = await getWidgetSetInputSpec(\n path.resolve(process.cwd(), \"package.json\"),\n );\n const widgetSetManifest = buildWidgetSetManifest(\n foundryConfig.foundryConfig.widgetSet.rid,\n widgetSetVersion,\n widgetBuilds,\n widgetSetInputSpec,\n options,\n );\n\n // Write the manifest to the dist directory\n writeManifest(widgetSetManifest, config.build.outDir);\n } finally {\n await server.close();\n }\n },\n };\n}\n\n/**\n * Create a Vite server for widget config module evaluation during the build process.\n * Must prevent loading the dev plugin to avoid triggering dev mode build steps.\n */\nasync function createModuleEvaluationServer(\n config: ResolvedConfig,\n): Promise<ViteDevServer> {\n return await createServer({\n // Reference the existing config file in order to respect any custom config\n configFile: config.configFile,\n // Custom mode to prevent dev plugin execution\n mode: MODULE_EVALUATION_MODE,\n });\n}\n\nasync function computeWidgetSetVersion(\n foundryConfig: LoadedFoundryConfig<\"widgetSet\">,\n): Promise<string> {\n return autoVersion(\n foundryConfig.foundryConfig.widgetSet.autoVersion\n ?? { \"type\": \"package-json\" },\n );\n}\n\nfunction writeManifest(\n widgetSetManifest: WidgetSetManifest,\n outDir: string,\n): void {\n const manifestPath = path.join(outDir, MANIFEST_FILE_LOCATION);\n fs.mkdirSync(path.dirname(manifestPath), { recursive: true });\n fs.writeFileSync(\n manifestPath,\n JSON.stringify(widgetSetManifest, null, 2),\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -143,6 +143,25 @@ describe("buildWidgetSetManifest", () => {
143
143
  expect(manifest.widgetSet.widgets.widget.entrypointJs[0].path).toBe("scripts/widget.js");
144
144
  expect(manifest.widgetSet.widgets.widget.entrypointCss[0].path).toBe("styles/widget.css");
145
145
  });
146
+ test("uses plugin-level refreshHostDataOnAction as default", () => {
147
+ const widgetBuild = createMockWidgetBuild("widget");
148
+ const manifest = buildWidgetSetManifest(WIDGET_SET_RID, WIDGET_SET_VERSION, [widgetBuild], {}, {
149
+ defaults: {
150
+ refreshHostDataOnAction: true
151
+ }
152
+ });
153
+ expect(manifest.widgetSet.widgets.widget.refreshHostDataOnAction).toBe(true);
154
+ });
155
+ test("widget-level refreshHostDataOnAction overrides plugin-level default", () => {
156
+ const widgetBuild = createMockWidgetBuild("widget");
157
+ widgetBuild.widgetConfig.refreshHostDataOnAction = false;
158
+ const manifest = buildWidgetSetManifest(WIDGET_SET_RID, WIDGET_SET_VERSION, [widgetBuild], {}, {
159
+ defaults: {
160
+ refreshHostDataOnAction: true
161
+ }
162
+ });
163
+ expect(manifest.widgetSet.widgets.widget.refreshHostDataOnAction).toBe(false);
164
+ });
146
165
  test("handles paths without leading slashes", () => {
147
166
  const widgetBuild = createMockWidgetBuild("widget", undefined, ["scripts/widget.js"], ["styles/widget.css"]);
148
167
  const manifest = buildWidgetSetManifest(WIDGET_SET_RID, WIDGET_SET_VERSION, [widgetBuild], {});
@@ -1 +1 @@
1
- {"version":3,"file":"buildWidgetSetManifest.test.js","names":["describe","expect","test","buildWidgetSetManifest","WIDGET_SET_RID","WIDGET_SET_VERSION","widgetBuilds","createMockWidgetBuild","widgetSetInputSpec","discovered","sdks","rid","version","manifest","toEqual","manifestVersion","widgetSet","widgets","widgetOne","id","name","description","type","entrypointJs","path","entrypointCss","parameters","stringParam","displayName","events","updateParameters","parameterUpdateIds","permissions","widgetTwo","inputSpec","widgetBuild","objectSetParam","allowedType","apiName","internalDoNotUseMetadata","widget","objectTypeRids","interfaceSetParam","undefined","toBe","scripts","stylesheets","map","src","scriptType","widgetConfig"],"sources":["buildWidgetSetManifest.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 { ParameterDefinition, WidgetSetInputSpec } from \"@osdk/widget.api\";\nimport { describe, expect, test } from \"vitest\";\nimport { buildWidgetSetManifest } from \"../buildWidgetSetManifest.js\";\nimport type { WidgetBuildOutputs } from \"../getWidgetBuildOutputs.js\";\n\ndescribe(\"buildWidgetSetManifest\", () => {\n const WIDGET_SET_RID = \"ri.widgetregistry..widget-set.test-widget-set\";\n const WIDGET_SET_VERSION = \"1.0.0\";\n\n test(\"builds a valid manifest with multiple widgets\", () => {\n const widgetBuilds: WidgetBuildOutputs[] = [\n createMockWidgetBuild(\"widgetOne\"),\n createMockWidgetBuild(\"widgetTwo\"),\n ];\n\n const widgetSetInputSpec: WidgetSetInputSpec = {\n discovered: {\n sdks: [\n {\n rid: \"ri.foundry.main.sdk.test-sdk\",\n version: \"2.0.0\",\n },\n ],\n },\n };\n\n const manifest = buildWidgetSetManifest(\n WIDGET_SET_RID,\n WIDGET_SET_VERSION,\n widgetBuilds,\n widgetSetInputSpec,\n );\n\n expect(manifest).toEqual({\n manifestVersion: \"1.0.0\",\n widgetSet: {\n rid: WIDGET_SET_RID,\n version: WIDGET_SET_VERSION,\n widgets: {\n widgetOne: {\n id: \"widgetOne\",\n name: \"Widget widgetOne\",\n description: \"Widget widgetOne Description\",\n type: \"workshopWidgetV1\",\n entrypointJs: [\n { path: \"scripts/widgetOne.js\", type: \"module\" },\n ],\n entrypointCss: [\n { path: \"styles/widgetOne.css\" },\n ],\n parameters: {\n stringParam: {\n type: \"string\",\n displayName: \"String Parameter\",\n },\n },\n events: {\n updateParameters: {\n displayName: \"Update Parameters\",\n parameterUpdateIds: [\"stringParam\"],\n },\n },\n permissions: [\"camera\"],\n },\n widgetTwo: {\n id: \"widgetTwo\",\n name: \"Widget widgetTwo\",\n description: \"Widget widgetTwo Description\",\n type: \"workshopWidgetV1\",\n entrypointJs: [\n { path: \"scripts/widgetTwo.js\", type: \"module\" },\n ],\n entrypointCss: [\n { path: \"styles/widgetTwo.css\" },\n ],\n parameters: {\n stringParam: {\n type: \"string\",\n displayName: \"String Parameter\",\n },\n },\n events: {\n updateParameters: {\n displayName: \"Update Parameters\",\n parameterUpdateIds: [\"stringParam\"],\n },\n },\n permissions: [\"camera\"],\n },\n },\n inputSpec: widgetSetInputSpec,\n },\n });\n });\n\n test(\"converts object set parameters correctly\", () => {\n const widgetBuild = createMockWidgetBuild(\"widget\", {\n objectSetParam: {\n type: \"objectSet\",\n displayName: \"Object Set Parameter\",\n allowedType: {\n type: \"object\",\n apiName: \"employee\",\n internalDoNotUseMetadata: {\n rid: \"ri.ontology.main.object-type.employee\",\n },\n },\n },\n });\n\n const widgetBuilds: WidgetBuildOutputs[] = [widgetBuild];\n const widgetSetInputSpec: WidgetSetInputSpec = {};\n\n const manifest = buildWidgetSetManifest(\n WIDGET_SET_RID,\n WIDGET_SET_VERSION,\n widgetBuilds,\n widgetSetInputSpec,\n );\n\n expect(manifest.widgetSet.widgets.widget.parameters.objectSetParam).toEqual(\n {\n type: \"objectSet\",\n displayName: \"Object Set Parameter\",\n objectTypeRids: [\"ri.ontology.main.object-type.employee\"],\n allowedType: \"ri.ontology.main.object-type.employee\",\n },\n );\n });\n\n test(\"converts interface set parameters correctly\", () => {\n const widgetBuild = createMockWidgetBuild(\"widget\", {\n interfaceSetParam: {\n type: \"objectSet\",\n displayName: \"Interface Set Parameter\",\n allowedType: {\n type: \"interface\",\n apiName: \"MyInterface\",\n internalDoNotUseMetadata: {\n rid: \"ri.ontology.main.interface.my-interface\",\n },\n },\n },\n });\n\n const widgetBuilds: WidgetBuildOutputs[] = [widgetBuild];\n const widgetSetInputSpec: WidgetSetInputSpec = {};\n\n const manifest = buildWidgetSetManifest(\n WIDGET_SET_RID,\n WIDGET_SET_VERSION,\n widgetBuilds,\n widgetSetInputSpec,\n );\n\n expect(\n manifest.widgetSet.widgets.widget.parameters.interfaceSetParam,\n ).toEqual({\n type: \"objectSet\",\n displayName: \"Interface Set Parameter\",\n objectTypeRids: [],\n allowedType: \"ri.ontology.main.interface.my-interface\",\n });\n });\n\n test(\"trims leading slashes from paths\", () => {\n const widgetBuild = createMockWidgetBuild(\n \"widget\",\n undefined,\n [\"/scripts/widget.js\"],\n [\"/styles/widget.css\"],\n );\n\n const widgetBuilds: WidgetBuildOutputs[] = [widgetBuild];\n const widgetSetInputSpec: WidgetSetInputSpec = {};\n\n const manifest = buildWidgetSetManifest(\n WIDGET_SET_RID,\n WIDGET_SET_VERSION,\n widgetBuilds,\n widgetSetInputSpec,\n );\n\n expect(manifest.widgetSet.widgets.widget.entrypointJs[0].path).toBe(\n \"scripts/widget.js\",\n );\n expect(manifest.widgetSet.widgets.widget.entrypointCss![0].path).toBe(\n \"styles/widget.css\",\n );\n });\n\n test(\"handles paths without leading slashes\", () => {\n const widgetBuild = createMockWidgetBuild(\n \"widget\",\n undefined,\n [\"scripts/widget.js\"],\n [\"styles/widget.css\"],\n );\n\n const widgetBuilds: WidgetBuildOutputs[] = [widgetBuild];\n const widgetSetInputSpec: WidgetSetInputSpec = {};\n\n const manifest = buildWidgetSetManifest(\n WIDGET_SET_RID,\n WIDGET_SET_VERSION,\n widgetBuilds,\n widgetSetInputSpec,\n );\n\n expect(manifest.widgetSet.widgets.widget.entrypointJs[0].path).toBe(\n \"scripts/widget.js\",\n );\n expect(manifest.widgetSet.widgets.widget.entrypointCss![0].path).toBe(\n \"styles/widget.css\",\n );\n });\n});\n\nfunction createMockWidgetBuild(\n id: string,\n parameters: Record<string, ParameterDefinition> = {\n stringParam: {\n type: \"string\",\n displayName: \"String Parameter\",\n },\n },\n scripts?: string[],\n stylesheets?: string[],\n): WidgetBuildOutputs {\n return {\n scripts: scripts?.map(src => ({\n type: \"script\" as const,\n scriptType: \"module\" as const,\n src,\n }))\n ?? [\n {\n type: \"script\",\n scriptType: \"module\",\n src: `/scripts/${id}.js`,\n },\n ],\n stylesheets: stylesheets ?? [`/styles/${id}.css`],\n widgetConfig: {\n id,\n name: `Widget ${id}`,\n description: `Widget ${id} Description`,\n type: \"workshop\",\n parameters,\n events: {\n updateParameters: {\n displayName: \"Update Parameters\",\n parameterUpdateIds: [\"stringParam\"],\n },\n },\n permissions: [\"camera\"],\n },\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"buildWidgetSetManifest.test.js","names":["describe","expect","test","buildWidgetSetManifest","WIDGET_SET_RID","WIDGET_SET_VERSION","widgetBuilds","createMockWidgetBuild","widgetSetInputSpec","discovered","sdks","rid","version","manifest","toEqual","manifestVersion","widgetSet","widgets","widgetOne","id","name","description","type","entrypointJs","path","entrypointCss","parameters","stringParam","displayName","events","updateParameters","parameterUpdateIds","permissions","widgetTwo","inputSpec","widgetBuild","objectSetParam","allowedType","apiName","internalDoNotUseMetadata","widget","objectTypeRids","interfaceSetParam","undefined","toBe","defaults","refreshHostDataOnAction","widgetConfig","scripts","stylesheets","map","src","scriptType"],"sources":["buildWidgetSetManifest.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 { ParameterDefinition, WidgetSetInputSpec } from \"@osdk/widget.api\";\nimport { describe, expect, test } from \"vitest\";\nimport { buildWidgetSetManifest } from \"../buildWidgetSetManifest.js\";\nimport type { WidgetBuildOutputs } from \"../getWidgetBuildOutputs.js\";\n\ndescribe(\"buildWidgetSetManifest\", () => {\n const WIDGET_SET_RID = \"ri.widgetregistry..widget-set.test-widget-set\";\n const WIDGET_SET_VERSION = \"1.0.0\";\n\n test(\"builds a valid manifest with multiple widgets\", () => {\n const widgetBuilds: WidgetBuildOutputs[] = [\n createMockWidgetBuild(\"widgetOne\"),\n createMockWidgetBuild(\"widgetTwo\"),\n ];\n\n const widgetSetInputSpec: WidgetSetInputSpec = {\n discovered: {\n sdks: [\n {\n rid: \"ri.foundry.main.sdk.test-sdk\",\n version: \"2.0.0\",\n },\n ],\n },\n };\n\n const manifest = buildWidgetSetManifest(\n WIDGET_SET_RID,\n WIDGET_SET_VERSION,\n widgetBuilds,\n widgetSetInputSpec,\n );\n\n expect(manifest).toEqual({\n manifestVersion: \"1.0.0\",\n widgetSet: {\n rid: WIDGET_SET_RID,\n version: WIDGET_SET_VERSION,\n widgets: {\n widgetOne: {\n id: \"widgetOne\",\n name: \"Widget widgetOne\",\n description: \"Widget widgetOne Description\",\n type: \"workshopWidgetV1\",\n entrypointJs: [\n { path: \"scripts/widgetOne.js\", type: \"module\" },\n ],\n entrypointCss: [\n { path: \"styles/widgetOne.css\" },\n ],\n parameters: {\n stringParam: {\n type: \"string\",\n displayName: \"String Parameter\",\n },\n },\n events: {\n updateParameters: {\n displayName: \"Update Parameters\",\n parameterUpdateIds: [\"stringParam\"],\n },\n },\n permissions: [\"camera\"],\n },\n widgetTwo: {\n id: \"widgetTwo\",\n name: \"Widget widgetTwo\",\n description: \"Widget widgetTwo Description\",\n type: \"workshopWidgetV1\",\n entrypointJs: [\n { path: \"scripts/widgetTwo.js\", type: \"module\" },\n ],\n entrypointCss: [\n { path: \"styles/widgetTwo.css\" },\n ],\n parameters: {\n stringParam: {\n type: \"string\",\n displayName: \"String Parameter\",\n },\n },\n events: {\n updateParameters: {\n displayName: \"Update Parameters\",\n parameterUpdateIds: [\"stringParam\"],\n },\n },\n permissions: [\"camera\"],\n },\n },\n inputSpec: widgetSetInputSpec,\n },\n });\n });\n\n test(\"converts object set parameters correctly\", () => {\n const widgetBuild = createMockWidgetBuild(\"widget\", {\n objectSetParam: {\n type: \"objectSet\",\n displayName: \"Object Set Parameter\",\n allowedType: {\n type: \"object\",\n apiName: \"employee\",\n internalDoNotUseMetadata: {\n rid: \"ri.ontology.main.object-type.employee\",\n },\n },\n },\n });\n\n const widgetBuilds: WidgetBuildOutputs[] = [widgetBuild];\n const widgetSetInputSpec: WidgetSetInputSpec = {};\n\n const manifest = buildWidgetSetManifest(\n WIDGET_SET_RID,\n WIDGET_SET_VERSION,\n widgetBuilds,\n widgetSetInputSpec,\n );\n\n expect(manifest.widgetSet.widgets.widget.parameters.objectSetParam).toEqual(\n {\n type: \"objectSet\",\n displayName: \"Object Set Parameter\",\n objectTypeRids: [\"ri.ontology.main.object-type.employee\"],\n allowedType: \"ri.ontology.main.object-type.employee\",\n },\n );\n });\n\n test(\"converts interface set parameters correctly\", () => {\n const widgetBuild = createMockWidgetBuild(\"widget\", {\n interfaceSetParam: {\n type: \"objectSet\",\n displayName: \"Interface Set Parameter\",\n allowedType: {\n type: \"interface\",\n apiName: \"MyInterface\",\n internalDoNotUseMetadata: {\n rid: \"ri.ontology.main.interface.my-interface\",\n },\n },\n },\n });\n\n const widgetBuilds: WidgetBuildOutputs[] = [widgetBuild];\n const widgetSetInputSpec: WidgetSetInputSpec = {};\n\n const manifest = buildWidgetSetManifest(\n WIDGET_SET_RID,\n WIDGET_SET_VERSION,\n widgetBuilds,\n widgetSetInputSpec,\n );\n\n expect(\n manifest.widgetSet.widgets.widget.parameters.interfaceSetParam,\n ).toEqual({\n type: \"objectSet\",\n displayName: \"Interface Set Parameter\",\n objectTypeRids: [],\n allowedType: \"ri.ontology.main.interface.my-interface\",\n });\n });\n\n test(\"trims leading slashes from paths\", () => {\n const widgetBuild = createMockWidgetBuild(\n \"widget\",\n undefined,\n [\"/scripts/widget.js\"],\n [\"/styles/widget.css\"],\n );\n\n const widgetBuilds: WidgetBuildOutputs[] = [widgetBuild];\n const widgetSetInputSpec: WidgetSetInputSpec = {};\n\n const manifest = buildWidgetSetManifest(\n WIDGET_SET_RID,\n WIDGET_SET_VERSION,\n widgetBuilds,\n widgetSetInputSpec,\n );\n\n expect(manifest.widgetSet.widgets.widget.entrypointJs[0].path).toBe(\n \"scripts/widget.js\",\n );\n expect(manifest.widgetSet.widgets.widget.entrypointCss![0].path).toBe(\n \"styles/widget.css\",\n );\n });\n\n test(\"uses plugin-level refreshHostDataOnAction as default\", () => {\n const widgetBuild = createMockWidgetBuild(\"widget\");\n const widgetSetInputSpec: WidgetSetInputSpec = {};\n\n const manifest = buildWidgetSetManifest(\n WIDGET_SET_RID,\n WIDGET_SET_VERSION,\n [widgetBuild],\n widgetSetInputSpec,\n { defaults: { refreshHostDataOnAction: true } },\n );\n\n expect(manifest.widgetSet.widgets.widget.refreshHostDataOnAction).toBe(\n true,\n );\n });\n\n test(\"widget-level refreshHostDataOnAction overrides plugin-level default\", () => {\n const widgetBuild = createMockWidgetBuild(\"widget\");\n widgetBuild.widgetConfig.refreshHostDataOnAction = false;\n const widgetSetInputSpec: WidgetSetInputSpec = {};\n\n const manifest = buildWidgetSetManifest(\n WIDGET_SET_RID,\n WIDGET_SET_VERSION,\n [widgetBuild],\n widgetSetInputSpec,\n { defaults: { refreshHostDataOnAction: true } },\n );\n\n expect(manifest.widgetSet.widgets.widget.refreshHostDataOnAction).toBe(\n false,\n );\n });\n\n test(\"handles paths without leading slashes\", () => {\n const widgetBuild = createMockWidgetBuild(\n \"widget\",\n undefined,\n [\"scripts/widget.js\"],\n [\"styles/widget.css\"],\n );\n\n const widgetBuilds: WidgetBuildOutputs[] = [widgetBuild];\n const widgetSetInputSpec: WidgetSetInputSpec = {};\n\n const manifest = buildWidgetSetManifest(\n WIDGET_SET_RID,\n WIDGET_SET_VERSION,\n widgetBuilds,\n widgetSetInputSpec,\n );\n\n expect(manifest.widgetSet.widgets.widget.entrypointJs[0].path).toBe(\n \"scripts/widget.js\",\n );\n expect(manifest.widgetSet.widgets.widget.entrypointCss![0].path).toBe(\n \"styles/widget.css\",\n );\n });\n});\n\nfunction createMockWidgetBuild(\n id: string,\n parameters: Record<string, ParameterDefinition> = {\n stringParam: {\n type: \"string\",\n displayName: \"String Parameter\",\n },\n },\n scripts?: string[],\n stylesheets?: string[],\n): WidgetBuildOutputs {\n return {\n scripts: scripts?.map(src => ({\n type: \"script\" as const,\n scriptType: \"module\" as const,\n src,\n }))\n ?? [\n {\n type: \"script\",\n scriptType: \"module\",\n src: `/scripts/${id}.js`,\n },\n ],\n stylesheets: stylesheets ?? [`/styles/${id}.css`],\n widgetConfig: {\n id,\n name: `Widget ${id}`,\n description: `Widget ${id} Description`,\n type: \"workshop\",\n parameters,\n events: {\n updateParameters: {\n displayName: \"Update Parameters\",\n parameterUpdateIds: [\"stringParam\"],\n },\n },\n permissions: [\"camera\"],\n },\n };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -15,19 +15,19 @@
15
15
  */
16
16
 
17
17
  import { validateWidgetSet } from "./validateWidgetSet.js";
18
- export function buildWidgetSetManifest(widgetSetRid, widgetSetVersion, widgetBuilds, widgetSetInputSpec) {
18
+ export function buildWidgetSetManifest(widgetSetRid, widgetSetVersion, widgetBuilds, widgetSetInputSpec, pluginOptions) {
19
19
  validateWidgetSet(widgetBuilds);
20
20
  return {
21
21
  manifestVersion: "1.0.0",
22
22
  widgetSet: {
23
23
  rid: widgetSetRid,
24
24
  version: widgetSetVersion,
25
- widgets: Object.fromEntries(widgetBuilds.map(buildWidgetManifest).map(widgetManifest => [widgetManifest.id, widgetManifest])),
25
+ widgets: Object.fromEntries(widgetBuilds.map(build => buildWidgetManifest(build, pluginOptions)).map(widgetManifest => [widgetManifest.id, widgetManifest])),
26
26
  inputSpec: widgetSetInputSpec
27
27
  }
28
28
  };
29
29
  }
30
- function buildWidgetManifest(widgetBuild) {
30
+ function buildWidgetManifest(widgetBuild, pluginOptions) {
31
31
  const widgetConfig = widgetBuild.widgetConfig;
32
32
  return {
33
33
  id: widgetConfig.id,
@@ -43,7 +43,8 @@ function buildWidgetManifest(widgetBuild) {
43
43
  })),
44
44
  parameters: convertParameters(widgetConfig.parameters),
45
45
  events: widgetConfig.events,
46
- permissions: widgetConfig.permissions
46
+ permissions: widgetConfig.permissions,
47
+ refreshHostDataOnAction: widgetConfig.refreshHostDataOnAction ?? pluginOptions?.defaults?.refreshHostDataOnAction
47
48
  };
48
49
  }
49
50
  function convertParameters(parameters) {
@@ -1 +1 @@
1
- {"version":3,"file":"buildWidgetSetManifest.js","names":["validateWidgetSet","buildWidgetSetManifest","widgetSetRid","widgetSetVersion","widgetBuilds","widgetSetInputSpec","manifestVersion","widgetSet","rid","version","widgets","Object","fromEntries","map","buildWidgetManifest","widgetManifest","id","inputSpec","widgetBuild","widgetConfig","name","description","type","entrypointJs","scripts","script","path","trimLeadingSlash","src","scriptType","entrypointCss","stylesheets","parameters","convertParameters","events","permissions","entries","key","param","convertParameter","parameter","allowedType","internalDoNotUseMetadata","Error","displayName","objectTypeRids","startsWith","slice"],"sources":["buildWidgetSetManifest.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 {\n ManifestParameterDefinition,\n ParameterDefinition,\n WidgetManifestConfig,\n WidgetSetInputSpec,\n WidgetSetManifest,\n} from \"@osdk/widget.api\";\nimport type { WidgetBuildOutputs } from \"./getWidgetBuildOutputs.js\";\nimport { validateWidgetSet } from \"./validateWidgetSet.js\";\n\nexport function buildWidgetSetManifest(\n widgetSetRid: string,\n widgetSetVersion: string,\n widgetBuilds: WidgetBuildOutputs[],\n widgetSetInputSpec: WidgetSetInputSpec,\n): WidgetSetManifest {\n validateWidgetSet(widgetBuilds);\n return {\n manifestVersion: \"1.0.0\",\n widgetSet: {\n rid: widgetSetRid,\n version: widgetSetVersion,\n widgets: Object.fromEntries(\n widgetBuilds\n .map(buildWidgetManifest)\n .map((widgetManifest) => [widgetManifest.id, widgetManifest]),\n ),\n inputSpec: widgetSetInputSpec,\n },\n };\n}\n\nfunction buildWidgetManifest(\n widgetBuild: WidgetBuildOutputs,\n): WidgetManifestConfig {\n const widgetConfig = widgetBuild.widgetConfig;\n return {\n id: widgetConfig.id,\n name: widgetConfig.name,\n description: widgetConfig.description,\n type: \"workshopWidgetV1\",\n entrypointJs: widgetBuild.scripts.map((script) => ({\n path: trimLeadingSlash(script.src),\n type: script.scriptType,\n })),\n entrypointCss: widgetBuild.stylesheets.map((path) => ({\n path: trimLeadingSlash(path),\n })),\n parameters: convertParameters(widgetConfig.parameters),\n events: widgetConfig.events,\n permissions: widgetConfig.permissions,\n };\n}\n\nfunction convertParameters(\n parameters: Record<string, ParameterDefinition>,\n): Record<string, ManifestParameterDefinition> {\n return Object.fromEntries(\n Object.entries(parameters).map(([key, param]) => [\n key,\n convertParameter(param),\n ]),\n );\n}\n\nfunction convertParameter(\n parameter: ParameterDefinition,\n): ManifestParameterDefinition {\n if (parameter.type === \"objectSet\") {\n // Config has already been validated so rid must be present\n if (parameter.allowedType.internalDoNotUseMetadata == null) {\n throw new Error(\"Expected internal metadata to be present\");\n }\n return {\n type: \"objectSet\",\n displayName: parameter.displayName,\n objectTypeRids: parameter.allowedType.type === \"object\"\n ? [parameter.allowedType.internalDoNotUseMetadata.rid]\n : [],\n allowedType: parameter.allowedType.internalDoNotUseMetadata.rid,\n };\n }\n return parameter;\n}\n\nfunction trimLeadingSlash(path: string): string {\n return path.startsWith(\"/\") ? path.slice(1) : path;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAUA,SAASA,iBAAiB,QAAQ,wBAAwB;AAE1D,OAAO,SAASC,sBAAsBA,CACpCC,YAAoB,EACpBC,gBAAwB,EACxBC,YAAkC,EAClCC,kBAAsC,EACnB;EACnBL,iBAAiB,CAACI,YAAY,CAAC;EAC/B,OAAO;IACLE,eAAe,EAAE,OAAO;IACxBC,SAAS,EAAE;MACTC,GAAG,EAAEN,YAAY;MACjBO,OAAO,EAAEN,gBAAgB;MACzBO,OAAO,EAAEC,MAAM,CAACC,WAAW,CACzBR,YAAY,CACTS,GAAG,CAACC,mBAAmB,CAAC,CACxBD,GAAG,CAAEE,cAAc,IAAK,CAACA,cAAc,CAACC,EAAE,EAAED,cAAc,CAAC,CAChE,CAAC;MACDE,SAAS,EAAEZ;IACb;EACF,CAAC;AACH;AAEA,SAASS,mBAAmBA,CAC1BI,WAA+B,EACT;EACtB,MAAMC,YAAY,GAAGD,WAAW,CAACC,YAAY;EAC7C,OAAO;IACLH,EAAE,EAAEG,YAAY,CAACH,EAAE;IACnBI,IAAI,EAAED,YAAY,CAACC,IAAI;IACvBC,WAAW,EAAEF,YAAY,CAACE,WAAW;IACrCC,IAAI,EAAE,kBAAkB;IACxBC,YAAY,EAAEL,WAAW,CAACM,OAAO,CAACX,GAAG,CAAEY,MAAM,KAAM;MACjDC,IAAI,EAAEC,gBAAgB,CAACF,MAAM,CAACG,GAAG,CAAC;MAClCN,IAAI,EAAEG,MAAM,CAACI;IACf,CAAC,CAAC,CAAC;IACHC,aAAa,EAAEZ,WAAW,CAACa,WAAW,CAAClB,GAAG,CAAEa,IAAI,KAAM;MACpDA,IAAI,EAAEC,gBAAgB,CAACD,IAAI;IAC7B,CAAC,CAAC,CAAC;IACHM,UAAU,EAAEC,iBAAiB,CAACd,YAAY,CAACa,UAAU,CAAC;IACtDE,MAAM,EAAEf,YAAY,CAACe,MAAM;IAC3BC,WAAW,EAAEhB,YAAY,CAACgB;EAC5B,CAAC;AACH;AAEA,SAASF,iBAAiBA,CACxBD,UAA+C,EACF;EAC7C,OAAOrB,MAAM,CAACC,WAAW,CACvBD,MAAM,CAACyB,OAAO,CAACJ,UAAU,CAAC,CAACnB,GAAG,CAAC,CAAC,CAACwB,GAAG,EAAEC,KAAK,CAAC,KAAK,CAC/CD,GAAG,EACHE,gBAAgB,CAACD,KAAK,CAAC,CACxB,CACH,CAAC;AACH;AAEA,SAASC,gBAAgBA,CACvBC,SAA8B,EACD;EAC7B,IAAIA,SAAS,CAAClB,IAAI,KAAK,WAAW,EAAE;IAClC;IACA,IAAIkB,SAAS,CAACC,WAAW,CAACC,wBAAwB,IAAI,IAAI,EAAE;MAC1D,MAAM,IAAIC,KAAK,CAAC,0CAA0C,CAAC;IAC7D;IACA,OAAO;MACLrB,IAAI,EAAE,WAAW;MACjBsB,WAAW,EAAEJ,SAAS,CAACI,WAAW;MAClCC,cAAc,EAAEL,SAAS,CAACC,WAAW,CAACnB,IAAI,KAAK,QAAQ,GACnD,CAACkB,SAAS,CAACC,WAAW,CAACC,wBAAwB,CAAClC,GAAG,CAAC,GACpD,EAAE;MACNiC,WAAW,EAAED,SAAS,CAACC,WAAW,CAACC,wBAAwB,CAAClC;IAC9D,CAAC;EACH;EACA,OAAOgC,SAAS;AAClB;AAEA,SAASb,gBAAgBA,CAACD,IAAY,EAAU;EAC9C,OAAOA,IAAI,CAACoB,UAAU,CAAC,GAAG,CAAC,GAAGpB,IAAI,CAACqB,KAAK,CAAC,CAAC,CAAC,GAAGrB,IAAI;AACpD","ignoreList":[]}
1
+ {"version":3,"file":"buildWidgetSetManifest.js","names":["validateWidgetSet","buildWidgetSetManifest","widgetSetRid","widgetSetVersion","widgetBuilds","widgetSetInputSpec","pluginOptions","manifestVersion","widgetSet","rid","version","widgets","Object","fromEntries","map","build","buildWidgetManifest","widgetManifest","id","inputSpec","widgetBuild","widgetConfig","name","description","type","entrypointJs","scripts","script","path","trimLeadingSlash","src","scriptType","entrypointCss","stylesheets","parameters","convertParameters","events","permissions","refreshHostDataOnAction","defaults","entries","key","param","convertParameter","parameter","allowedType","internalDoNotUseMetadata","Error","displayName","objectTypeRids","startsWith","slice"],"sources":["buildWidgetSetManifest.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 {\n ManifestParameterDefinition,\n ParameterDefinition,\n WidgetManifestConfig,\n WidgetSetInputSpec,\n WidgetSetManifest,\n} from \"@osdk/widget.api\";\nimport type { FoundryWidgetPluginOptions } from \"../index.js\";\nimport type { WidgetBuildOutputs } from \"./getWidgetBuildOutputs.js\";\nimport { validateWidgetSet } from \"./validateWidgetSet.js\";\n\nexport function buildWidgetSetManifest(\n widgetSetRid: string,\n widgetSetVersion: string,\n widgetBuilds: WidgetBuildOutputs[],\n widgetSetInputSpec: WidgetSetInputSpec,\n pluginOptions?: FoundryWidgetPluginOptions,\n): WidgetSetManifest {\n validateWidgetSet(widgetBuilds);\n return {\n manifestVersion: \"1.0.0\",\n widgetSet: {\n rid: widgetSetRid,\n version: widgetSetVersion,\n widgets: Object.fromEntries(\n widgetBuilds\n .map((build) => buildWidgetManifest(build, pluginOptions))\n .map((widgetManifest) => [widgetManifest.id, widgetManifest]),\n ),\n inputSpec: widgetSetInputSpec,\n },\n };\n}\n\nfunction buildWidgetManifest(\n widgetBuild: WidgetBuildOutputs,\n pluginOptions?: FoundryWidgetPluginOptions,\n): WidgetManifestConfig {\n const widgetConfig = widgetBuild.widgetConfig;\n return {\n id: widgetConfig.id,\n name: widgetConfig.name,\n description: widgetConfig.description,\n type: \"workshopWidgetV1\",\n entrypointJs: widgetBuild.scripts.map((script) => ({\n path: trimLeadingSlash(script.src),\n type: script.scriptType,\n })),\n entrypointCss: widgetBuild.stylesheets.map((path) => ({\n path: trimLeadingSlash(path),\n })),\n parameters: convertParameters(widgetConfig.parameters),\n events: widgetConfig.events,\n permissions: widgetConfig.permissions,\n refreshHostDataOnAction: widgetConfig.refreshHostDataOnAction\n ?? pluginOptions?.defaults?.refreshHostDataOnAction,\n };\n}\n\nfunction convertParameters(\n parameters: Record<string, ParameterDefinition>,\n): Record<string, ManifestParameterDefinition> {\n return Object.fromEntries(\n Object.entries(parameters).map(([key, param]) => [\n key,\n convertParameter(param),\n ]),\n );\n}\n\nfunction convertParameter(\n parameter: ParameterDefinition,\n): ManifestParameterDefinition {\n if (parameter.type === \"objectSet\") {\n // Config has already been validated so rid must be present\n if (parameter.allowedType.internalDoNotUseMetadata == null) {\n throw new Error(\"Expected internal metadata to be present\");\n }\n return {\n type: \"objectSet\",\n displayName: parameter.displayName,\n objectTypeRids: parameter.allowedType.type === \"object\"\n ? [parameter.allowedType.internalDoNotUseMetadata.rid]\n : [],\n allowedType: parameter.allowedType.internalDoNotUseMetadata.rid,\n };\n }\n return parameter;\n}\n\nfunction trimLeadingSlash(path: string): string {\n return path.startsWith(\"/\") ? path.slice(1) : path;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -16,7 +16,7 @@
16
16
 
17
17
  import { FoundryWidgetBuildPlugin } from "./build-plugin/FoundryWidgetBuildPlugin.js";
18
18
  import { FoundryWidgetDevPlugin } from "./dev-plugin/FoundryWidgetDevPlugin.js";
19
- export default function FoundryWidgetPlugin() {
20
- return [FoundryWidgetDevPlugin(), FoundryWidgetBuildPlugin()];
19
+ export default function FoundryWidgetPlugin(options) {
20
+ return [FoundryWidgetDevPlugin(), FoundryWidgetBuildPlugin(options)];
21
21
  }
22
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["FoundryWidgetBuildPlugin","FoundryWidgetDevPlugin","FoundryWidgetPlugin"],"sources":["index.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 { PluginOption } from \"vite\";\nimport { FoundryWidgetBuildPlugin } from \"./build-plugin/FoundryWidgetBuildPlugin.js\";\nimport { FoundryWidgetDevPlugin } from \"./dev-plugin/FoundryWidgetDevPlugin.js\";\n\nexport default function FoundryWidgetPlugin(): PluginOption {\n return [FoundryWidgetDevPlugin(), FoundryWidgetBuildPlugin()];\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,SAASA,wBAAwB,QAAQ,4CAA4C;AACrF,SAASC,sBAAsB,QAAQ,wCAAwC;AAE/E,eAAe,SAASC,mBAAmBA,CAAA,EAAiB;EAC1D,OAAO,CAACD,sBAAsB,CAAC,CAAC,EAAED,wBAAwB,CAAC,CAAC,CAAC;AAC/D","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["FoundryWidgetBuildPlugin","FoundryWidgetDevPlugin","FoundryWidgetPlugin","options"],"sources":["index.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 { PluginOption } from \"vite\";\nimport { FoundryWidgetBuildPlugin } from \"./build-plugin/FoundryWidgetBuildPlugin.js\";\nimport { FoundryWidgetDevPlugin } from \"./dev-plugin/FoundryWidgetDevPlugin.js\";\n\nexport interface FoundryWidgetPluginOptions {\n /**\n * Default values for widget configuration. Individual widget configs can override these values.\n */\n defaults?: {\n /**\n * When set to `true`, the host will refresh any Ontology data passed to the widget\n * when the widget is thought to have updated the Ontology by applying an action.\n */\n refreshHostDataOnAction?: boolean;\n };\n}\n\nexport default function FoundryWidgetPlugin(\n options?: FoundryWidgetPluginOptions,\n): PluginOption {\n return [FoundryWidgetDevPlugin(), FoundryWidgetBuildPlugin(options)];\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,SAASA,wBAAwB,QAAQ,4CAA4C;AACrF,SAASC,sBAAsB,QAAQ,wCAAwC;AAe/E,eAAe,SAASC,mBAAmBA,CACzCC,OAAoC,EACtB;EACd,OAAO,CAACF,sBAAsB,CAAC,CAAC,EAAED,wBAAwB,CAACG,OAAO,CAAC,CAAC;AACtE","ignoreList":[]}
@@ -1 +1 @@
1
- import{I as n}from"./index-DLOviMB1.js";import{I as e}from"./index-B-fsa5Ru.js";import{p as r,I as s}from"./index-y3oyBPN4.js";function I(o,t){var a=r(o);return t===s.STANDARD?n[a]:e[a]}function p(o){return r(o)}export{n as IconSvgPaths16,e as IconSvgPaths20,I as getIconPaths,p as iconNameToPathsRecordKey};
1
+ import{I as n}from"./index-DLOviMB1.js";import{I as e}from"./index-B-fsa5Ru.js";import{p as r,I as s}from"./index-BKM9P-Lm.js";function I(o,t){var a=r(o);return t===s.STANDARD?n[a]:e[a]}function p(o){return r(o)}export{n as IconSvgPaths16,e as IconSvgPaths20,I as getIconPaths,p as iconNameToPathsRecordKey};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./allPaths-DQ44lpsR.js","./index-DLOviMB1.js","./index-B-fsa5Ru.js","./index-y3oyBPN4.js","./index-BAmk2r3A.css"])))=>i.map(i=>d[i]);
2
- import{_ as o,a as i,b as n}from"./index-y3oyBPN4.js";var _=function(e,a){return o(void 0,void 0,void 0,function(){var t;return i(this,function(r){switch(r.label){case 0:return[4,n(()=>import("./allPaths-DQ44lpsR.js"),__vite__mapDeps([0,1,2,3,4]),import.meta.url)];case 1:return t=r.sent().getIconPaths,[2,t(e,a)]}})})};export{_ as allPathsLoader};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./allPaths-B8_17Xxf.js","./index-DLOviMB1.js","./index-B-fsa5Ru.js","./index-BKM9P-Lm.js","./index-7niI6nVb.css"])))=>i.map(i=>d[i]);
2
+ import{_ as o,a as i,b as n}from"./index-BKM9P-Lm.js";var _=function(e,a){return o(void 0,void 0,void 0,function(){var t;return i(this,function(r){switch(r.label){case 0:return[4,n(()=>import("./allPaths-B8_17Xxf.js"),__vite__mapDeps([0,1,2,3,4]),import.meta.url)];case 1:return t=r.sent().getIconPaths,[2,t(e,a)]}})})};export{_ as allPathsLoader};