@osdk/widget.vite-plugin 3.5.0-beta.2 → 3.5.0-beta.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,16 @@
1
1
  # @osdk/widget.vite-plugin
2
2
 
3
+ ## 3.5.0-beta.3
4
+
5
+ ### Minor Changes
6
+
7
+ - b9066dd: Support interfaces in object set parameters
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies [b9066dd]
12
+ - @osdk/widget.api@3.5.0-beta.3
13
+
3
14
  ## 3.5.0-beta.2
4
15
 
5
16
  ### Patch Changes
@@ -98,7 +98,7 @@ describe("buildWidgetSetManifest", () => {
98
98
  objectSetParam: {
99
99
  type: "objectSet",
100
100
  displayName: "Object Set Parameter",
101
- objectType: {
101
+ allowedType: {
102
102
  type: "object",
103
103
  apiName: "employee",
104
104
  internalDoNotUseMetadata: {
@@ -111,7 +111,30 @@ describe("buildWidgetSetManifest", () => {
111
111
  expect(manifest.widgetSet.widgets.widget.parameters.objectSetParam).toEqual({
112
112
  type: "objectSet",
113
113
  displayName: "Object Set Parameter",
114
- objectTypeRids: ["ri.ontology.main.object-type.employee"]
114
+ objectTypeRids: ["ri.ontology.main.object-type.employee"],
115
+ allowedType: "ri.ontology.main.object-type.employee"
116
+ });
117
+ });
118
+ test("converts interface set parameters correctly", () => {
119
+ const widgetBuild = createMockWidgetBuild("widget", {
120
+ interfaceSetParam: {
121
+ type: "objectSet",
122
+ displayName: "Interface Set Parameter",
123
+ allowedType: {
124
+ type: "interface",
125
+ apiName: "MyInterface",
126
+ internalDoNotUseMetadata: {
127
+ rid: "ri.ontology.main.interface.my-interface"
128
+ }
129
+ }
130
+ }
131
+ });
132
+ const manifest = buildWidgetSetManifest(WIDGET_SET_RID, WIDGET_SET_VERSION, [widgetBuild], {});
133
+ expect(manifest.widgetSet.widgets.widget.parameters.interfaceSetParam).toEqual({
134
+ type: "objectSet",
135
+ displayName: "Interface Set Parameter",
136
+ objectTypeRids: [],
137
+ allowedType: "ri.ontology.main.interface.my-interface"
115
138
  });
116
139
  });
117
140
  test("trims leading slashes from paths", () => {
@@ -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","objectType","apiName","internalDoNotUseMetadata","widget","objectTypeRids","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 objectType: {\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 },\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","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":[]}
@@ -52,13 +52,14 @@ function convertParameters(parameters) {
52
52
  function convertParameter(parameter) {
53
53
  if (parameter.type === "objectSet") {
54
54
  // Config has already been validated so rid must be present
55
- if (parameter.objectType.internalDoNotUseMetadata == null) {
55
+ if (parameter.allowedType.internalDoNotUseMetadata == null) {
56
56
  throw new Error("Expected internal metadata to be present");
57
57
  }
58
58
  return {
59
59
  type: "objectSet",
60
60
  displayName: parameter.displayName,
61
- objectTypeRids: [parameter.objectType.internalDoNotUseMetadata.rid]
61
+ objectTypeRids: parameter.allowedType.type === "object" ? [parameter.allowedType.internalDoNotUseMetadata.rid] : [],
62
+ allowedType: parameter.allowedType.internalDoNotUseMetadata.rid
62
63
  };
63
64
  }
64
65
  return parameter;
@@ -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","objectType","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.objectType.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.objectType.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,UAAU,CAACC,wBAAwB,IAAI,IAAI,EAAE;MACzD,MAAM,IAAIC,KAAK,CAAC,0CAA0C,CAAC;IAC7D;IACA,OAAO;MACLrB,IAAI,EAAE,WAAW;MACjBsB,WAAW,EAAEJ,SAAS,CAACI,WAAW;MAClCC,cAAc,EAAE,CAACL,SAAS,CAACC,UAAU,CAACC,wBAAwB,CAAClC,GAAG;IACpE,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","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":[]}
@@ -85,12 +85,12 @@ describe("validateWidgetConfig", () => {
85
85
  };
86
86
  expect(() => validateWidgetConfig(invalidConfig)).toThrow("Parameter id length can be at most 100 characters");
87
87
  });
88
- test("accepts valid object set parameter", () => {
88
+ test("accepts valid object set parameter using object types", () => {
89
89
  const validConfig = getValidConfig();
90
90
  validConfig.parameters.myObjectSet = {
91
91
  type: "objectSet",
92
92
  displayName: "My Object Set",
93
- objectType: {
93
+ allowedType: {
94
94
  type: "object",
95
95
  apiName: "employee",
96
96
  internalDoNotUseMetadata: {
@@ -100,12 +100,27 @@ describe("validateWidgetConfig", () => {
100
100
  };
101
101
  expect(() => validateWidgetConfig(validConfig)).not.toThrow();
102
102
  });
103
+ test("accepts valid object set parameter using interfaces", () => {
104
+ const validConfig = getValidConfig();
105
+ validConfig.parameters.myInterfaceSet = {
106
+ type: "objectSet",
107
+ displayName: "My Object Set",
108
+ allowedType: {
109
+ type: "interface",
110
+ apiName: "MyInterface",
111
+ internalDoNotUseMetadata: {
112
+ rid: "ri.ontology.main.interface.my-interface"
113
+ }
114
+ }
115
+ };
116
+ expect(() => validateWidgetConfig(validConfig)).not.toThrow();
117
+ });
103
118
  test("throws for invalid object set parameter", () => {
104
119
  const invalidConfig = getValidConfig();
105
120
  invalidConfig.parameters.myObjectSet = {
106
121
  type: "objectSet",
107
122
  displayName: "My Object Set",
108
- objectType: {
123
+ allowedType: {
109
124
  type: "object",
110
125
  apiName: "employee"
111
126
  }
@@ -1 +1 @@
1
- {"version":3,"file":"validateWidgetConfig.test.js","names":["describe","expect","test","validateWidgetConfig","validConfig","getValidConfig","not","toThrow","invalidConfig","id","repeat","testCases","message","name","description","parameters","displayName","type","longParamId","myObjectSet","objectType","apiName","internalDoNotUseMetadata","rid","paramOne","events","updateParameters","parameterUpdateIds"],"sources":["validateWidgetConfig.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 { ParameterConfig, WidgetConfig } from \"@osdk/widget.api\";\nimport { describe, expect, test } from \"vitest\";\nimport { validateWidgetConfig } from \"../validateWidgetConfig.js\";\n\ndescribe(\"validateWidgetConfig\", () => {\n test(\"accepts valid widget configuration\", () => {\n const validConfig = getValidConfig();\n expect(() => validateWidgetConfig(validConfig)).not.toThrow();\n });\n\n test(\"throws for widget id that exceeds max length\", () => {\n const invalidConfig = getValidConfig();\n invalidConfig.id = \"a\".repeat(101);\n\n expect(() => validateWidgetConfig(invalidConfig)).toThrow(\n \"Widget id length can be at most 100 characters\",\n );\n });\n\n test(\"throws for widget id that is not camelCase\", () => {\n const testCases = [\n { id: \"TestWidget\", message: \"does not match allowed pattern\" },\n { id: \"test-widget\", message: \"does not match allowed pattern\" },\n { id: \"test_widget\", message: \"does not match allowed pattern\" },\n { id: \"1testWidget\", message: \"does not match allowed pattern\" },\n ];\n\n for (const { id, message } of testCases) {\n const invalidConfig = getValidConfig();\n invalidConfig.id = id;\n expect(() => validateWidgetConfig(invalidConfig)).toThrow(message);\n }\n });\n\n test(\"throws for widget name that exceeds max length\", () => {\n const invalidConfig = getValidConfig();\n invalidConfig.name = \"A\".repeat(101);\n\n expect(() => validateWidgetConfig(invalidConfig)).toThrow(\n \"Widget name length can be at most 100 characters\",\n );\n });\n\n test(\"throws for widget description that exceeds max length\", () => {\n const invalidConfig = getValidConfig();\n invalidConfig.description = \"A\".repeat(251);\n\n expect(() => validateWidgetConfig(invalidConfig)).toThrow(\n \"Widget description length can be at most 250 characters\",\n );\n });\n\n test(\"accepts undefined widget description\", () => {\n const validConfig = getValidConfig();\n delete validConfig.description;\n\n expect(() => validateWidgetConfig(validConfig)).not.toThrow();\n });\n\n test(\"throws for parameter id that is not camelCase\", () => {\n const invalidConfig = getValidConfig();\n invalidConfig.parameters = {\n \"Invalid-Param\": {\n displayName: \"Invalid Parameter\",\n type: \"string\",\n },\n };\n\n expect(() => validateWidgetConfig(invalidConfig)).toThrow(\n \"Parameter id \\\"Invalid-Param\\\" does not match allowed pattern (must be camelCase)\",\n );\n });\n\n test(\"throws for parameter id that exceeds max length\", () => {\n const invalidConfig = getValidConfig();\n const longParamId = \"param\" + \"a\".repeat(96); // 101 chars total\n invalidConfig.parameters = {\n [longParamId]: {\n displayName: \"Long Parameter\",\n type: \"string\",\n },\n };\n\n expect(() => validateWidgetConfig(invalidConfig)).toThrow(\n \"Parameter id length can be at most 100 characters\",\n );\n });\n\n test(\"accepts valid object set parameter\", () => {\n const validConfig = getValidConfig();\n validConfig.parameters.myObjectSet = {\n type: \"objectSet\",\n displayName: \"My Object Set\",\n objectType: {\n type: \"object\",\n apiName: \"employee\",\n internalDoNotUseMetadata: {\n rid: \"ri.object-type.employee\",\n },\n },\n };\n expect(() => validateWidgetConfig(validConfig)).not.toThrow();\n });\n\n test(\"throws for invalid object set parameter\", () => {\n const invalidConfig = getValidConfig();\n invalidConfig.parameters.myObjectSet = {\n type: \"objectSet\",\n displayName: \"My Object Set\",\n objectType: {\n type: \"object\",\n apiName: \"employee\",\n },\n };\n expect(() => validateWidgetConfig(invalidConfig)).toThrow(\n \"ObjectSet parameter \\\"myObjectSet\\\" must have a valid rid in its metadata, make sure your OSDK was generated with a generator version >=2.6.2\",\n );\n });\n});\n\nfunction getValidConfig(): WidgetConfig<ParameterConfig> {\n return {\n id: \"testWidget\",\n name: \"Test Widget\",\n description: \"A test widget\",\n type: \"workshop\",\n parameters: {\n paramOne: {\n displayName: \"Parameter One\",\n type: \"string\",\n },\n },\n events: {\n updateParameters: {\n displayName: \"Update Parameters\",\n parameterUpdateIds: [\"paramOne\"],\n },\n },\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"validateWidgetConfig.test.js","names":["describe","expect","test","validateWidgetConfig","validConfig","getValidConfig","not","toThrow","invalidConfig","id","repeat","testCases","message","name","description","parameters","displayName","type","longParamId","myObjectSet","allowedType","apiName","internalDoNotUseMetadata","rid","myInterfaceSet","paramOne","events","updateParameters","parameterUpdateIds"],"sources":["validateWidgetConfig.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 { ParameterConfig, WidgetConfig } from \"@osdk/widget.api\";\nimport { describe, expect, test } from \"vitest\";\nimport { validateWidgetConfig } from \"../validateWidgetConfig.js\";\n\ndescribe(\"validateWidgetConfig\", () => {\n test(\"accepts valid widget configuration\", () => {\n const validConfig = getValidConfig();\n expect(() => validateWidgetConfig(validConfig)).not.toThrow();\n });\n\n test(\"throws for widget id that exceeds max length\", () => {\n const invalidConfig = getValidConfig();\n invalidConfig.id = \"a\".repeat(101);\n\n expect(() => validateWidgetConfig(invalidConfig)).toThrow(\n \"Widget id length can be at most 100 characters\",\n );\n });\n\n test(\"throws for widget id that is not camelCase\", () => {\n const testCases = [\n { id: \"TestWidget\", message: \"does not match allowed pattern\" },\n { id: \"test-widget\", message: \"does not match allowed pattern\" },\n { id: \"test_widget\", message: \"does not match allowed pattern\" },\n { id: \"1testWidget\", message: \"does not match allowed pattern\" },\n ];\n\n for (const { id, message } of testCases) {\n const invalidConfig = getValidConfig();\n invalidConfig.id = id;\n expect(() => validateWidgetConfig(invalidConfig)).toThrow(message);\n }\n });\n\n test(\"throws for widget name that exceeds max length\", () => {\n const invalidConfig = getValidConfig();\n invalidConfig.name = \"A\".repeat(101);\n\n expect(() => validateWidgetConfig(invalidConfig)).toThrow(\n \"Widget name length can be at most 100 characters\",\n );\n });\n\n test(\"throws for widget description that exceeds max length\", () => {\n const invalidConfig = getValidConfig();\n invalidConfig.description = \"A\".repeat(251);\n\n expect(() => validateWidgetConfig(invalidConfig)).toThrow(\n \"Widget description length can be at most 250 characters\",\n );\n });\n\n test(\"accepts undefined widget description\", () => {\n const validConfig = getValidConfig();\n delete validConfig.description;\n\n expect(() => validateWidgetConfig(validConfig)).not.toThrow();\n });\n\n test(\"throws for parameter id that is not camelCase\", () => {\n const invalidConfig = getValidConfig();\n invalidConfig.parameters = {\n \"Invalid-Param\": {\n displayName: \"Invalid Parameter\",\n type: \"string\",\n },\n };\n\n expect(() => validateWidgetConfig(invalidConfig)).toThrow(\n \"Parameter id \\\"Invalid-Param\\\" does not match allowed pattern (must be camelCase)\",\n );\n });\n\n test(\"throws for parameter id that exceeds max length\", () => {\n const invalidConfig = getValidConfig();\n const longParamId = \"param\" + \"a\".repeat(96); // 101 chars total\n invalidConfig.parameters = {\n [longParamId]: {\n displayName: \"Long Parameter\",\n type: \"string\",\n },\n };\n\n expect(() => validateWidgetConfig(invalidConfig)).toThrow(\n \"Parameter id length can be at most 100 characters\",\n );\n });\n\n test(\"accepts valid object set parameter using object types\", () => {\n const validConfig = getValidConfig();\n validConfig.parameters.myObjectSet = {\n type: \"objectSet\",\n displayName: \"My Object Set\",\n allowedType: {\n type: \"object\",\n apiName: \"employee\",\n internalDoNotUseMetadata: {\n rid: \"ri.object-type.employee\",\n },\n },\n };\n expect(() => validateWidgetConfig(validConfig)).not.toThrow();\n });\n\n test(\"accepts valid object set parameter using interfaces\", () => {\n const validConfig = getValidConfig();\n validConfig.parameters.myInterfaceSet = {\n type: \"objectSet\",\n displayName: \"My Object Set\",\n allowedType: {\n type: \"interface\",\n apiName: \"MyInterface\",\n internalDoNotUseMetadata: {\n rid: \"ri.ontology.main.interface.my-interface\",\n },\n },\n };\n expect(() => validateWidgetConfig(validConfig)).not.toThrow();\n });\n\n test(\"throws for invalid object set parameter\", () => {\n const invalidConfig = getValidConfig();\n invalidConfig.parameters.myObjectSet = {\n type: \"objectSet\",\n displayName: \"My Object Set\",\n allowedType: {\n type: \"object\",\n apiName: \"employee\",\n },\n };\n expect(() => validateWidgetConfig(invalidConfig)).toThrow(\n \"ObjectSet parameter \\\"myObjectSet\\\" must have a valid rid in its metadata, make sure your OSDK was generated with a generator version >=2.6.2\",\n );\n });\n});\n\nfunction getValidConfig(): WidgetConfig<ParameterConfig> {\n return {\n id: \"testWidget\",\n name: \"Test Widget\",\n description: \"A test widget\",\n type: \"workshop\",\n parameters: {\n paramOne: {\n displayName: \"Parameter One\",\n type: \"string\",\n },\n },\n events: {\n updateParameters: {\n displayName: \"Update Parameters\",\n parameterUpdateIds: [\"paramOne\"],\n },\n },\n };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -56,8 +56,8 @@ function validateWidgetParameters(parameters) {
56
56
  throw new Error(`Parameter id "${parameterId}" does not match allowed pattern (must be camelCase)`);
57
57
  }
58
58
  if (parameterConfig.type === "objectSet") {
59
- if (typeof parameterConfig.objectType.internalDoNotUseMetadata?.rid !== "string") {
60
- throw new Error(`ObjectSet parameter "${parameterId}" must have a valid rid in its metadata, make sure your OSDK was generated with a generator version >=2.6.2. Provided type: '${JSON.stringify(parameterConfig.objectType)}'`);
59
+ if (typeof parameterConfig.allowedType.internalDoNotUseMetadata?.rid !== "string") {
60
+ throw new Error(`ObjectSet parameter "${parameterId}" must have a valid rid in its metadata, make sure your OSDK was generated with a generator version >=2.6.2. Provided type: '${JSON.stringify(parameterConfig.allowedType)}'`);
61
61
  }
62
62
  }
63
63
  }
@@ -1 +1 @@
1
- {"version":3,"file":"validateWidgetConfig.js","names":["ID_PATTERN","ID_MAX_LENGTH","NAME_MAX_LENGTH","DESCRIPTION_MAX_LENGTH","validateWidgetConfig","config","validateWidgetId","id","validateWidgetName","name","validateWidgetDescription","description","validateWidgetParameters","parameters","length","Error","test","parameterId","parameterConfig","Object","entries","type","objectType","internalDoNotUseMetadata","rid","JSON","stringify"],"sources":["validateWidgetConfig.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 { ParameterConfig, WidgetConfig } from \"@osdk/widget.api\";\n\nconst ID_PATTERN = /^([a-z][a-z0-9]*)([A-Z][a-z0-9]*)*$/;\nconst ID_MAX_LENGTH = 100;\nconst NAME_MAX_LENGTH = 100;\nconst DESCRIPTION_MAX_LENGTH = 250;\n\n/**\n * Validates the requirements that can't be expressed via TypeScript type-checking\n * for a widget config (e.g. that widget IDs and parameter IDs are camelCase.)\n */\nexport function validateWidgetConfig(\n config: WidgetConfig<ParameterConfig>,\n): void {\n validateWidgetId(config.id);\n validateWidgetName(config.name);\n validateWidgetDescription(config.description);\n validateWidgetParameters(config.parameters);\n}\n\nfunction validateWidgetId(id: string): void {\n if (id.length > ID_MAX_LENGTH) {\n throw new Error(\n `Widget id length can be at most ${ID_MAX_LENGTH} characters`,\n );\n }\n if (!ID_PATTERN.test(id)) {\n throw new Error(\n `Widget id \"${id}\" does not match allowed pattern (must be camelCase)`,\n );\n }\n}\n\nfunction validateWidgetName(name: string): void {\n if (name.length > NAME_MAX_LENGTH) {\n throw new Error(\n `Widget name length can be at most ${NAME_MAX_LENGTH} characters`,\n );\n }\n}\n\nfunction validateWidgetDescription(description?: string): void {\n if (description != null && description.length > DESCRIPTION_MAX_LENGTH) {\n throw new Error(\n `Widget description length can be at most ${DESCRIPTION_MAX_LENGTH} characters`,\n );\n }\n}\n\nfunction validateWidgetParameters(parameters: ParameterConfig): void {\n for (const [parameterId, parameterConfig] of Object.entries(parameters)) {\n if (parameterId.length > ID_MAX_LENGTH) {\n throw new Error(\n `Parameter id length can be at most ${ID_MAX_LENGTH} characters`,\n );\n }\n if (!ID_PATTERN.test(parameterId)) {\n throw new Error(\n `Parameter id \"${parameterId}\" does not match allowed pattern (must be camelCase)`,\n );\n }\n if (parameterConfig.type === \"objectSet\") {\n if (\n typeof parameterConfig.objectType.internalDoNotUseMetadata?.rid\n !== \"string\"\n ) {\n throw new Error(\n `ObjectSet parameter \"${parameterId}\" must have a valid rid in its metadata, make sure your OSDK was generated with a generator version >=2.6.2. Provided type: '${\n JSON.stringify(parameterConfig.objectType)\n }'`,\n );\n }\n }\n }\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA,MAAMA,UAAU,GAAG,qCAAqC;AACxD,MAAMC,aAAa,GAAG,GAAG;AACzB,MAAMC,eAAe,GAAG,GAAG;AAC3B,MAAMC,sBAAsB,GAAG,GAAG;;AAElC;AACA;AACA;AACA;AACA,OAAO,SAASC,oBAAoBA,CAClCC,MAAqC,EAC/B;EACNC,gBAAgB,CAACD,MAAM,CAACE,EAAE,CAAC;EAC3BC,kBAAkB,CAACH,MAAM,CAACI,IAAI,CAAC;EAC/BC,yBAAyB,CAACL,MAAM,CAACM,WAAW,CAAC;EAC7CC,wBAAwB,CAACP,MAAM,CAACQ,UAAU,CAAC;AAC7C;AAEA,SAASP,gBAAgBA,CAACC,EAAU,EAAQ;EAC1C,IAAIA,EAAE,CAACO,MAAM,GAAGb,aAAa,EAAE;IAC7B,MAAM,IAAIc,KAAK,CACb,mCAAmCd,aAAa,aAClD,CAAC;EACH;EACA,IAAI,CAACD,UAAU,CAACgB,IAAI,CAACT,EAAE,CAAC,EAAE;IACxB,MAAM,IAAIQ,KAAK,CACb,cAAcR,EAAE,sDAClB,CAAC;EACH;AACF;AAEA,SAASC,kBAAkBA,CAACC,IAAY,EAAQ;EAC9C,IAAIA,IAAI,CAACK,MAAM,GAAGZ,eAAe,EAAE;IACjC,MAAM,IAAIa,KAAK,CACb,qCAAqCb,eAAe,aACtD,CAAC;EACH;AACF;AAEA,SAASQ,yBAAyBA,CAACC,WAAoB,EAAQ;EAC7D,IAAIA,WAAW,IAAI,IAAI,IAAIA,WAAW,CAACG,MAAM,GAAGX,sBAAsB,EAAE;IACtE,MAAM,IAAIY,KAAK,CACb,4CAA4CZ,sBAAsB,aACpE,CAAC;EACH;AACF;AAEA,SAASS,wBAAwBA,CAACC,UAA2B,EAAQ;EACnE,KAAK,MAAM,CAACI,WAAW,EAAEC,eAAe,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACP,UAAU,CAAC,EAAE;IACvE,IAAII,WAAW,CAACH,MAAM,GAAGb,aAAa,EAAE;MACtC,MAAM,IAAIc,KAAK,CACb,sCAAsCd,aAAa,aACrD,CAAC;IACH;IACA,IAAI,CAACD,UAAU,CAACgB,IAAI,CAACC,WAAW,CAAC,EAAE;MACjC,MAAM,IAAIF,KAAK,CACb,iBAAiBE,WAAW,sDAC9B,CAAC;IACH;IACA,IAAIC,eAAe,CAACG,IAAI,KAAK,WAAW,EAAE;MACxC,IACE,OAAOH,eAAe,CAACI,UAAU,CAACC,wBAAwB,EAAEC,GAAG,KACzD,QAAQ,EACd;QACA,MAAM,IAAIT,KAAK,CACb,wBAAwBE,WAAW,gIACjCQ,IAAI,CAACC,SAAS,CAACR,eAAe,CAACI,UAAU,CAAC,GAE9C,CAAC;MACH;IACF;EACF;AACF","ignoreList":[]}
1
+ {"version":3,"file":"validateWidgetConfig.js","names":["ID_PATTERN","ID_MAX_LENGTH","NAME_MAX_LENGTH","DESCRIPTION_MAX_LENGTH","validateWidgetConfig","config","validateWidgetId","id","validateWidgetName","name","validateWidgetDescription","description","validateWidgetParameters","parameters","length","Error","test","parameterId","parameterConfig","Object","entries","type","allowedType","internalDoNotUseMetadata","rid","JSON","stringify"],"sources":["validateWidgetConfig.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 { ParameterConfig, WidgetConfig } from \"@osdk/widget.api\";\n\nconst ID_PATTERN = /^([a-z][a-z0-9]*)([A-Z][a-z0-9]*)*$/;\nconst ID_MAX_LENGTH = 100;\nconst NAME_MAX_LENGTH = 100;\nconst DESCRIPTION_MAX_LENGTH = 250;\n\n/**\n * Validates the requirements that can't be expressed via TypeScript type-checking\n * for a widget config (e.g. that widget IDs and parameter IDs are camelCase.)\n */\nexport function validateWidgetConfig(\n config: WidgetConfig<ParameterConfig>,\n): void {\n validateWidgetId(config.id);\n validateWidgetName(config.name);\n validateWidgetDescription(config.description);\n validateWidgetParameters(config.parameters);\n}\n\nfunction validateWidgetId(id: string): void {\n if (id.length > ID_MAX_LENGTH) {\n throw new Error(\n `Widget id length can be at most ${ID_MAX_LENGTH} characters`,\n );\n }\n if (!ID_PATTERN.test(id)) {\n throw new Error(\n `Widget id \"${id}\" does not match allowed pattern (must be camelCase)`,\n );\n }\n}\n\nfunction validateWidgetName(name: string): void {\n if (name.length > NAME_MAX_LENGTH) {\n throw new Error(\n `Widget name length can be at most ${NAME_MAX_LENGTH} characters`,\n );\n }\n}\n\nfunction validateWidgetDescription(description?: string): void {\n if (description != null && description.length > DESCRIPTION_MAX_LENGTH) {\n throw new Error(\n `Widget description length can be at most ${DESCRIPTION_MAX_LENGTH} characters`,\n );\n }\n}\n\nfunction validateWidgetParameters(parameters: ParameterConfig): void {\n for (const [parameterId, parameterConfig] of Object.entries(parameters)) {\n if (parameterId.length > ID_MAX_LENGTH) {\n throw new Error(\n `Parameter id length can be at most ${ID_MAX_LENGTH} characters`,\n );\n }\n if (!ID_PATTERN.test(parameterId)) {\n throw new Error(\n `Parameter id \"${parameterId}\" does not match allowed pattern (must be camelCase)`,\n );\n }\n if (parameterConfig.type === \"objectSet\") {\n if (\n typeof parameterConfig.allowedType.internalDoNotUseMetadata?.rid\n !== \"string\"\n ) {\n throw new Error(\n `ObjectSet parameter \"${parameterId}\" must have a valid rid in its metadata, make sure your OSDK was generated with a generator version >=2.6.2. Provided type: '${\n JSON.stringify(parameterConfig.allowedType)\n }'`,\n );\n }\n }\n }\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA,MAAMA,UAAU,GAAG,qCAAqC;AACxD,MAAMC,aAAa,GAAG,GAAG;AACzB,MAAMC,eAAe,GAAG,GAAG;AAC3B,MAAMC,sBAAsB,GAAG,GAAG;;AAElC;AACA;AACA;AACA;AACA,OAAO,SAASC,oBAAoBA,CAClCC,MAAqC,EAC/B;EACNC,gBAAgB,CAACD,MAAM,CAACE,EAAE,CAAC;EAC3BC,kBAAkB,CAACH,MAAM,CAACI,IAAI,CAAC;EAC/BC,yBAAyB,CAACL,MAAM,CAACM,WAAW,CAAC;EAC7CC,wBAAwB,CAACP,MAAM,CAACQ,UAAU,CAAC;AAC7C;AAEA,SAASP,gBAAgBA,CAACC,EAAU,EAAQ;EAC1C,IAAIA,EAAE,CAACO,MAAM,GAAGb,aAAa,EAAE;IAC7B,MAAM,IAAIc,KAAK,CACb,mCAAmCd,aAAa,aAClD,CAAC;EACH;EACA,IAAI,CAACD,UAAU,CAACgB,IAAI,CAACT,EAAE,CAAC,EAAE;IACxB,MAAM,IAAIQ,KAAK,CACb,cAAcR,EAAE,sDAClB,CAAC;EACH;AACF;AAEA,SAASC,kBAAkBA,CAACC,IAAY,EAAQ;EAC9C,IAAIA,IAAI,CAACK,MAAM,GAAGZ,eAAe,EAAE;IACjC,MAAM,IAAIa,KAAK,CACb,qCAAqCb,eAAe,aACtD,CAAC;EACH;AACF;AAEA,SAASQ,yBAAyBA,CAACC,WAAoB,EAAQ;EAC7D,IAAIA,WAAW,IAAI,IAAI,IAAIA,WAAW,CAACG,MAAM,GAAGX,sBAAsB,EAAE;IACtE,MAAM,IAAIY,KAAK,CACb,4CAA4CZ,sBAAsB,aACpE,CAAC;EACH;AACF;AAEA,SAASS,wBAAwBA,CAACC,UAA2B,EAAQ;EACnE,KAAK,MAAM,CAACI,WAAW,EAAEC,eAAe,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACP,UAAU,CAAC,EAAE;IACvE,IAAII,WAAW,CAACH,MAAM,GAAGb,aAAa,EAAE;MACtC,MAAM,IAAIc,KAAK,CACb,sCAAsCd,aAAa,aACrD,CAAC;IACH;IACA,IAAI,CAACD,UAAU,CAACgB,IAAI,CAACC,WAAW,CAAC,EAAE;MACjC,MAAM,IAAIF,KAAK,CACb,iBAAiBE,WAAW,sDAC9B,CAAC;IACH;IACA,IAAIC,eAAe,CAACG,IAAI,KAAK,WAAW,EAAE;MACxC,IACE,OAAOH,eAAe,CAACI,WAAW,CAACC,wBAAwB,EAAEC,GAAG,KAC1D,QAAQ,EACd;QACA,MAAM,IAAIT,KAAK,CACb,wBAAwBE,WAAW,gIACjCQ,IAAI,CAACC,SAAS,CAACR,eAAe,CAACI,WAAW,CAAC,GAE/C,CAAC;MACH;IACF;EACF;AACF","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@osdk/widget.vite-plugin",
3
- "version": "3.5.0-beta.2",
3
+ "version": "3.5.0-beta.3",
4
4
  "description": "A vite plugin that will extract parameter definitions from TS/JS files + entrypoint info into a manifest file to be uploaded to Foundry ",
5
5
  "access": "public",
6
6
  "license": "Apache-2.0",
@@ -30,8 +30,8 @@
30
30
  "picocolors": "^1.1.1",
31
31
  "resolve-package-path": "^4.0.3",
32
32
  "sirv": "^3.0.2",
33
- "@osdk/widget.api": "~3.5.0-beta.2",
34
- "@osdk/foundry-config-json": "~1.7.0-beta.1"
33
+ "@osdk/foundry-config-json": "~1.7.0-beta.1",
34
+ "@osdk/widget.api": "~3.5.0-beta.3"
35
35
  },
36
36
  "peerDependencies": {
37
37
  "vite": "^6.3.5"