@osdk/maker 0.15.0-beta.5 → 0.15.0-beta.7

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.
Files changed (154) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/build/browser/api/action/ActionParameter.js.map +1 -1
  3. package/build/browser/api/action/ActionParameterConfiguration.js.map +1 -1
  4. package/build/browser/api/defineAction.js +65 -22
  5. package/build/browser/api/defineAction.js.map +1 -1
  6. package/build/browser/api/defineCreateInterfaceObjectAction.js +28 -8
  7. package/build/browser/api/defineCreateInterfaceObjectAction.js.map +1 -1
  8. package/build/browser/api/defineInterface.js +40 -34
  9. package/build/browser/api/defineInterface.js.map +1 -1
  10. package/build/browser/api/defineModifyInterfaceObjectAction.js +31 -8
  11. package/build/browser/api/defineModifyInterfaceObjectAction.js.map +1 -1
  12. package/build/browser/api/defineObject.js +53 -14
  13. package/build/browser/api/defineObject.js.map +1 -1
  14. package/build/browser/api/defineSpt.js.map +1 -1
  15. package/build/browser/api/interface/InterfacePropertyType.js +22 -1
  16. package/build/browser/api/interface/InterfacePropertyType.js.map +1 -1
  17. package/build/browser/api/interface/InterfaceType.js.map +1 -1
  18. package/build/browser/api/interface/getFlattenedInterfaceProperties.js +9 -3
  19. package/build/browser/api/interface/getFlattenedInterfaceProperties.js.map +1 -1
  20. package/build/browser/api/object/ObjectType.js.map +1 -1
  21. package/build/browser/api/object/ObjectTypeDefinition.js.map +1 -1
  22. package/build/browser/api/properties/PropertyTypeType.js +1 -1
  23. package/build/browser/api/properties/PropertyTypeType.js.map +1 -1
  24. package/build/browser/api/properties/SharedPropertyType.js.map +1 -1
  25. package/build/browser/api/test/actions.test.js +6105 -5850
  26. package/build/browser/api/test/actions.test.js.map +1 -1
  27. package/build/browser/api/test/interfaces.test.js +723 -470
  28. package/build/browser/api/test/interfaces.test.js.map +1 -1
  29. package/build/browser/api/test/links.test.js +1334 -1325
  30. package/build/browser/api/test/links.test.js.map +1 -1
  31. package/build/browser/api/test/misc.test.js +262 -11
  32. package/build/browser/api/test/misc.test.js.map +1 -1
  33. package/build/browser/api/test/objects.test.js +1872 -1412
  34. package/build/browser/api/test/objects.test.js.map +1 -1
  35. package/build/browser/api/test/spt.test.js +250 -103
  36. package/build/browser/api/test/spt.test.js.map +1 -1
  37. package/build/browser/cli/main.js +1 -1
  38. package/build/browser/conversion/toMarketplace/convertActionValidation.js +1 -1
  39. package/build/browser/conversion/toMarketplace/convertActionValidation.js.map +1 -1
  40. package/build/browser/conversion/toMarketplace/convertInterface.js +2 -2
  41. package/build/browser/conversion/toMarketplace/convertInterface.js.map +1 -1
  42. package/build/browser/conversion/toMarketplace/convertInterfacePropertyType.js +66 -0
  43. package/build/browser/conversion/toMarketplace/convertInterfacePropertyType.js.map +1 -0
  44. package/build/browser/conversion/toMarketplace/convertMappingValue.js +35 -0
  45. package/build/browser/conversion/toMarketplace/convertMappingValue.js.map +1 -1
  46. package/build/browser/conversion/toMarketplace/convertObject.js +4 -2
  47. package/build/browser/conversion/toMarketplace/convertObject.js.map +1 -1
  48. package/build/browser/conversion/toMarketplace/convertObjectPropertyType.js +2 -1
  49. package/build/browser/conversion/toMarketplace/convertObjectPropertyType.js.map +1 -1
  50. package/build/browser/conversion/toMarketplace/convertSpt.js +4 -2
  51. package/build/browser/conversion/toMarketplace/convertSpt.js.map +1 -1
  52. package/build/browser/conversion/toMarketplace/propertyTypeTypeToOntologyIrInterfaceType.js +143 -0
  53. package/build/browser/conversion/toMarketplace/propertyTypeTypeToOntologyIrInterfaceType.js.map +1 -0
  54. package/build/browser/conversion/toMarketplace/propertyTypeTypeToOntologyIrType.js +4 -0
  55. package/build/browser/conversion/toMarketplace/propertyTypeTypeToOntologyIrType.js.map +1 -1
  56. package/build/browser/index.js.map +1 -1
  57. package/build/cjs/index.cjs +417 -114
  58. package/build/cjs/index.cjs.map +1 -1
  59. package/build/cjs/index.d.cts +28 -13
  60. package/build/esm/api/action/ActionParameter.js.map +1 -1
  61. package/build/esm/api/action/ActionParameterConfiguration.js.map +1 -1
  62. package/build/esm/api/defineAction.js +65 -22
  63. package/build/esm/api/defineAction.js.map +1 -1
  64. package/build/esm/api/defineCreateInterfaceObjectAction.js +28 -8
  65. package/build/esm/api/defineCreateInterfaceObjectAction.js.map +1 -1
  66. package/build/esm/api/defineInterface.js +40 -34
  67. package/build/esm/api/defineInterface.js.map +1 -1
  68. package/build/esm/api/defineModifyInterfaceObjectAction.js +31 -8
  69. package/build/esm/api/defineModifyInterfaceObjectAction.js.map +1 -1
  70. package/build/esm/api/defineObject.js +53 -14
  71. package/build/esm/api/defineObject.js.map +1 -1
  72. package/build/esm/api/defineSpt.js.map +1 -1
  73. package/build/esm/api/interface/InterfacePropertyType.js +22 -1
  74. package/build/esm/api/interface/InterfacePropertyType.js.map +1 -1
  75. package/build/esm/api/interface/InterfaceType.js.map +1 -1
  76. package/build/esm/api/interface/getFlattenedInterfaceProperties.js +9 -3
  77. package/build/esm/api/interface/getFlattenedInterfaceProperties.js.map +1 -1
  78. package/build/esm/api/object/ObjectType.js.map +1 -1
  79. package/build/esm/api/object/ObjectTypeDefinition.js.map +1 -1
  80. package/build/esm/api/properties/PropertyTypeType.js +1 -1
  81. package/build/esm/api/properties/PropertyTypeType.js.map +1 -1
  82. package/build/esm/api/properties/SharedPropertyType.js.map +1 -1
  83. package/build/esm/api/test/actions.test.js +6105 -5850
  84. package/build/esm/api/test/actions.test.js.map +1 -1
  85. package/build/esm/api/test/interfaces.test.js +723 -470
  86. package/build/esm/api/test/interfaces.test.js.map +1 -1
  87. package/build/esm/api/test/links.test.js +1334 -1325
  88. package/build/esm/api/test/links.test.js.map +1 -1
  89. package/build/esm/api/test/misc.test.js +262 -11
  90. package/build/esm/api/test/misc.test.js.map +1 -1
  91. package/build/esm/api/test/objects.test.js +1872 -1412
  92. package/build/esm/api/test/objects.test.js.map +1 -1
  93. package/build/esm/api/test/spt.test.js +250 -103
  94. package/build/esm/api/test/spt.test.js.map +1 -1
  95. package/build/esm/cli/main.js +1 -1
  96. package/build/esm/conversion/toMarketplace/convertActionValidation.js +1 -1
  97. package/build/esm/conversion/toMarketplace/convertActionValidation.js.map +1 -1
  98. package/build/esm/conversion/toMarketplace/convertInterface.js +2 -2
  99. package/build/esm/conversion/toMarketplace/convertInterface.js.map +1 -1
  100. package/build/esm/conversion/toMarketplace/convertInterfacePropertyType.js +66 -0
  101. package/build/esm/conversion/toMarketplace/convertInterfacePropertyType.js.map +1 -0
  102. package/build/esm/conversion/toMarketplace/convertMappingValue.js +35 -0
  103. package/build/esm/conversion/toMarketplace/convertMappingValue.js.map +1 -1
  104. package/build/esm/conversion/toMarketplace/convertObject.js +4 -2
  105. package/build/esm/conversion/toMarketplace/convertObject.js.map +1 -1
  106. package/build/esm/conversion/toMarketplace/convertObjectPropertyType.js +2 -1
  107. package/build/esm/conversion/toMarketplace/convertObjectPropertyType.js.map +1 -1
  108. package/build/esm/conversion/toMarketplace/convertSpt.js +4 -2
  109. package/build/esm/conversion/toMarketplace/convertSpt.js.map +1 -1
  110. package/build/esm/conversion/toMarketplace/propertyTypeTypeToOntologyIrInterfaceType.js +143 -0
  111. package/build/esm/conversion/toMarketplace/propertyTypeTypeToOntologyIrInterfaceType.js.map +1 -0
  112. package/build/esm/conversion/toMarketplace/propertyTypeTypeToOntologyIrType.js +4 -0
  113. package/build/esm/conversion/toMarketplace/propertyTypeTypeToOntologyIrType.js.map +1 -1
  114. package/build/esm/index.js.map +1 -1
  115. package/build/types/api/action/ActionParameter.d.ts +2 -1
  116. package/build/types/api/action/ActionParameter.d.ts.map +1 -1
  117. package/build/types/api/action/ActionParameterConfiguration.d.ts +2 -1
  118. package/build/types/api/action/ActionParameterConfiguration.d.ts.map +1 -1
  119. package/build/types/api/defineAction.d.ts +4 -3
  120. package/build/types/api/defineAction.d.ts.map +1 -1
  121. package/build/types/api/defineCreateInterfaceObjectAction.d.ts.map +1 -1
  122. package/build/types/api/defineInterface.d.ts +5 -5
  123. package/build/types/api/defineInterface.d.ts.map +1 -1
  124. package/build/types/api/defineModifyInterfaceObjectAction.d.ts.map +1 -1
  125. package/build/types/api/defineObject.d.ts.map +1 -1
  126. package/build/types/api/defineSpt.d.ts +3 -0
  127. package/build/types/api/defineSpt.d.ts.map +1 -1
  128. package/build/types/api/interface/InterfacePropertyType.d.ts +12 -2
  129. package/build/types/api/interface/InterfacePropertyType.d.ts.map +1 -1
  130. package/build/types/api/interface/InterfaceType.d.ts +3 -2
  131. package/build/types/api/interface/InterfaceType.d.ts.map +1 -1
  132. package/build/types/api/interface/getFlattenedInterfaceProperties.d.ts +1 -1
  133. package/build/types/api/interface/getFlattenedInterfaceProperties.d.ts.map +1 -1
  134. package/build/types/api/object/ObjectType.d.ts +1 -0
  135. package/build/types/api/object/ObjectType.d.ts.map +1 -1
  136. package/build/types/api/object/ObjectTypeDefinition.d.ts +1 -0
  137. package/build/types/api/object/ObjectTypeDefinition.d.ts.map +1 -1
  138. package/build/types/api/properties/PropertyTypeType.d.ts +1 -0
  139. package/build/types/api/properties/PropertyTypeType.d.ts.map +1 -1
  140. package/build/types/api/properties/SharedPropertyType.d.ts +1 -0
  141. package/build/types/api/properties/SharedPropertyType.d.ts.map +1 -1
  142. package/build/types/conversion/toMarketplace/convertInterface.d.ts.map +1 -1
  143. package/build/types/conversion/toMarketplace/convertInterfacePropertyType.d.ts +3 -0
  144. package/build/types/conversion/toMarketplace/convertInterfacePropertyType.d.ts.map +1 -0
  145. package/build/types/conversion/toMarketplace/convertMappingValue.d.ts +2 -1
  146. package/build/types/conversion/toMarketplace/convertMappingValue.d.ts.map +1 -1
  147. package/build/types/conversion/toMarketplace/convertObject.d.ts.map +1 -1
  148. package/build/types/conversion/toMarketplace/convertSpt.d.ts +1 -1
  149. package/build/types/conversion/toMarketplace/convertSpt.d.ts.map +1 -1
  150. package/build/types/conversion/toMarketplace/propertyTypeTypeToOntologyIrInterfaceType.d.ts +3 -0
  151. package/build/types/conversion/toMarketplace/propertyTypeTypeToOntologyIrInterfaceType.d.ts.map +1 -0
  152. package/build/types/index.d.ts +1 -0
  153. package/build/types/index.d.ts.map +1 -1
  154. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"defineCreateInterfaceObjectAction.js","names":["convertMappingValue","addNamespaceToActionDefinition","convertValidationRule","CREATE_INTERFACE_OBJECT_PARAMETER","createDefaultParameterOrdering","createParameters","defineAction","getInterfaceParameterName","getNonNamespacedParameterName","isPropertyParameter","kebab","validateActionParameters","validateParameterOrdering","getFlattenedInterfaceProperties","defineCreateInterfaceObjectAction","def","allProperties","interfaceType","Object","keys","apiName","sptNames","filter","sharedPropertyType","type","parameterNames","Set","map","propertyMap","fromEntries","entries","id","prop","parameterConfiguration","forEach","param","add","actionApiName","split","pop","objectType","undefined","parameterOrdering","includes","unshift","parameters","required","mappings","nonParameterMappings","value","displayName","displayMetadata","status","entities","affectedInterfaceTypes","affectedObjectTypes","affectedLinkTypes","typeGroups","rules","addInterfaceRule","interfaceApiName","objectTypeParameter","sharedPropertyValues","parameterId","useNonNamespacedParameters","Array","from","actionLevelValidation","validation","defaultFormat","enableLayoutSwitch","tableConfiguration","displayAndFormat","table","sections","section","submissionMetadata","icon"],"sources":["defineCreateInterfaceObjectAction.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 { convertMappingValue } from \"../conversion/toMarketplace/convertMappingValue.js\";\nimport { type ActionType } from \"./action/ActionType.js\";\nimport type { InterfaceActionTypeUserDefinition } from \"./defineAction.js\";\nimport {\n addNamespaceToActionDefinition,\n convertValidationRule,\n CREATE_INTERFACE_OBJECT_PARAMETER,\n createDefaultParameterOrdering,\n createParameters,\n defineAction,\n getInterfaceParameterName,\n getNonNamespacedParameterName,\n isPropertyParameter,\n kebab,\n validateActionParameters,\n validateParameterOrdering,\n} from \"./defineAction.js\";\nimport { getFlattenedInterfaceProperties } from \"./interface/getFlattenedInterfaceProperties.js\";\n\nexport function defineCreateInterfaceObjectAction(\n def: InterfaceActionTypeUserDefinition,\n): ActionType {\n addNamespaceToActionDefinition(def);\n const allProperties = getFlattenedInterfaceProperties(def.interfaceType);\n validateActionParameters(\n def,\n Object.keys(allProperties),\n def.interfaceType.apiName,\n );\n const sptNames = Object.keys(allProperties).filter(apiName =>\n isPropertyParameter(\n def,\n apiName,\n allProperties[apiName].sharedPropertyType.type,\n )\n );\n const parameterNames = new Set(\n sptNames.map(apiName => getInterfaceParameterName(def, apiName)),\n );\n const propertyMap = Object.fromEntries(\n Object.entries(allProperties).map((\n [id, prop],\n ) => [getInterfaceParameterName(def, id), prop.sharedPropertyType]),\n );\n\n Object.keys(def.parameterConfiguration ?? {}).forEach(param =>\n parameterNames.add(getInterfaceParameterName(def, param))\n );\n parameterNames.add(CREATE_INTERFACE_OBJECT_PARAMETER);\n const actionApiName = def.apiName ?? `create-${\n kebab(\n def.interfaceType.apiName.split(\".\").pop() ?? def.interfaceType.apiName,\n )\n }${\n def.objectType === undefined\n ? \"\"\n : `-${\n kebab(\n def.objectType.apiName.split(\".\").pop() ?? def.objectType.apiName,\n )\n }`\n }`;\n if (def.parameterOrdering) {\n if (!def.parameterOrdering.includes(CREATE_INTERFACE_OBJECT_PARAMETER)) {\n def.parameterOrdering.unshift(CREATE_INTERFACE_OBJECT_PARAMETER);\n }\n validateParameterOrdering(\n def.parameterOrdering,\n parameterNames,\n actionApiName,\n );\n }\n const parameters = createParameters(\n def,\n propertyMap,\n parameterNames,\n Object.fromEntries(\n Object.entries(allProperties).map(([id, prop]) => [id, prop.required]),\n ),\n );\n const mappings = Object.fromEntries(\n Object.entries(def.nonParameterMappings ?? {}).map((\n [id, value],\n ) => [id, convertMappingValue(value)]),\n );\n\n return defineAction({\n apiName: actionApiName,\n displayName: def.displayName\n ?? `Create ${def.interfaceType.displayMetadata.displayName}`,\n parameters: parameters,\n status: def.status ?? (def.interfaceType.status.type !== \"deprecated\"\n ? def.interfaceType.status.type\n : def.interfaceType.status),\n entities: {\n affectedInterfaceTypes: [def.interfaceType.apiName],\n affectedObjectTypes: [],\n affectedLinkTypes: [],\n typeGroups: [],\n },\n rules: [\n {\n type: \"addInterfaceRule\",\n addInterfaceRule: {\n interfaceApiName: def.interfaceType.apiName,\n objectTypeParameter: CREATE_INTERFACE_OBJECT_PARAMETER,\n sharedPropertyValues: {\n ...Object.fromEntries(\n sptNames.map(\n id => [id, {\n type: \"parameterId\",\n parameterId: def.useNonNamespacedParameters\n ? getNonNamespacedParameterName(def, id)\n : id,\n }],\n ),\n ),\n ...mappings,\n },\n },\n },\n ],\n parameterOrdering: def.parameterOrdering\n ?? createDefaultParameterOrdering(\n def,\n Array.from(parameterNames),\n parameters,\n CREATE_INTERFACE_OBJECT_PARAMETER,\n ),\n ...(def.actionLevelValidation\n ? {\n validation: convertValidationRule(\n def.actionLevelValidation,\n parameters,\n ),\n }\n : {}),\n ...(def.defaultFormat && { defaultFormat: def.defaultFormat }),\n ...(def.enableLayoutSwitch\n && { enableLayoutSwitch: def.enableLayoutSwitch }),\n ...(def.tableConfiguration && {\n displayAndFormat: {\n table: def.tableConfiguration,\n },\n }),\n ...(def.sections\n && {\n sections: Object.fromEntries(\n def.sections.map(section => [section.id, section]),\n ),\n }),\n ...(def.submissionMetadata\n && { submissionMetadata: def.submissionMetadata }),\n ...(def.icon && { icon: def.icon }),\n });\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"defineCreateInterfaceObjectAction.js","names":["convertInterfacePropertyMappingValue","convertMappingValue","convertValidationRule","CREATE_INTERFACE_OBJECT_PARAMETER","createDefaultParameterOrdering","createParameters","defineAction","getInterfaceParameterName","getNonNamespacedParameterName","isPropertyParameter","kebab","validateActionParameters","validateParameterOrdering","getFlattenedInterfaceProperties","getInterfacePropertyTypeType","isInterfaceSharedPropertyType","defineCreateInterfaceObjectAction","def","allProperties","interfaceType","Object","keys","apiName","actionInterfaceProperties","entries","filter","type","sptNames","_apiName","map","parameterNames","Set","_type","propertyMap","fromEntries","id","prop","parameterConfiguration","forEach","param","add","actionApiName","split","pop","objectType","undefined","parameterOrdering","includes","unshift","parameters","required","sptMappings","mappings","nonParameterMappings","value","displayName","displayMetadata","status","entities","affectedInterfaceTypes","affectedObjectTypes","affectedLinkTypes","typeGroups","rules","addInterfaceRule","interfaceApiName","objectTypeParameter","sharedPropertyValues","parameterId","useNonNamespacedParameters","interfacePropertyValues","logicRuleValue","Array","from","actionLevelValidation","validation","defaultFormat","enableLayoutSwitch","tableConfiguration","displayAndFormat","table","sections","section","submissionMetadata","icon"],"sources":["defineCreateInterfaceObjectAction.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 {\n convertInterfacePropertyMappingValue,\n convertMappingValue,\n} from \"../conversion/toMarketplace/convertMappingValue.js\";\nimport { type ActionType } from \"./action/ActionType.js\";\nimport type { InterfaceActionTypeUserDefinition } from \"./defineAction.js\";\nimport {\n convertValidationRule,\n CREATE_INTERFACE_OBJECT_PARAMETER,\n createDefaultParameterOrdering,\n createParameters,\n defineAction,\n getInterfaceParameterName,\n getNonNamespacedParameterName,\n isPropertyParameter,\n kebab,\n validateActionParameters,\n validateParameterOrdering,\n} from \"./defineAction.js\";\nimport { getFlattenedInterfaceProperties } from \"./interface/getFlattenedInterfaceProperties.js\";\nimport {\n getInterfacePropertyTypeType,\n isInterfaceSharedPropertyType,\n} from \"./interface/InterfacePropertyType.js\";\n\nexport function defineCreateInterfaceObjectAction(\n def: InterfaceActionTypeUserDefinition,\n): ActionType {\n const allProperties = getFlattenedInterfaceProperties(def.interfaceType);\n validateActionParameters(\n def,\n Object.keys(allProperties),\n def.interfaceType.apiName,\n );\n const actionInterfaceProperties = Object.entries(allProperties).filter((\n [apiName, type],\n ) =>\n isPropertyParameter(\n def,\n apiName,\n getInterfacePropertyTypeType(type),\n )\n );\n const sptNames = actionInterfaceProperties\n .filter(([_apiName, type]) => isInterfaceSharedPropertyType(type))\n .map(([apiName]) => apiName);\n\n const parameterNames = new Set(\n actionInterfaceProperties.map(([apiName, _type]) =>\n getInterfaceParameterName(def, apiName)\n ),\n );\n const propertyMap = Object.fromEntries(\n Object.entries(allProperties).map((\n [id, prop],\n ) => [getInterfaceParameterName(def, id), prop]),\n );\n\n Object.keys(def.parameterConfiguration ?? {}).forEach(param =>\n parameterNames.add(getInterfaceParameterName(def, param))\n );\n parameterNames.add(CREATE_INTERFACE_OBJECT_PARAMETER);\n const actionApiName = def.apiName ?? `create-${\n kebab(\n def.interfaceType.apiName.split(\".\").pop() ?? def.interfaceType.apiName,\n )\n }${\n def.objectType === undefined\n ? \"\"\n : `-${\n kebab(\n def.objectType.apiName.split(\".\").pop() ?? def.objectType.apiName,\n )\n }`\n }`;\n if (def.parameterOrdering) {\n if (!def.parameterOrdering.includes(CREATE_INTERFACE_OBJECT_PARAMETER)) {\n def.parameterOrdering.unshift(CREATE_INTERFACE_OBJECT_PARAMETER);\n }\n validateParameterOrdering(\n def.parameterOrdering,\n parameterNames,\n actionApiName,\n );\n }\n const parameters = createParameters(\n def,\n propertyMap,\n parameterNames,\n Object.fromEntries(\n Object.entries(allProperties).map((\n [id, prop],\n ) => [id, prop.required ?? true]),\n ),\n );\n let sptMappings = {};\n const mappings = Object.fromEntries(\n Object.entries(def.nonParameterMappings ?? {}).map((\n [id, value],\n ) => {\n if (sptNames.includes(id)) {\n sptMappings = {\n ...sptMappings,\n [id]: convertMappingValue(value),\n };\n }\n return [id, convertInterfacePropertyMappingValue(value)];\n }),\n );\n\n return defineAction({\n apiName: actionApiName,\n displayName: def.displayName\n ?? `Create ${def.interfaceType.displayMetadata.displayName}`,\n parameters: parameters,\n status: def.status ?? (def.interfaceType.status.type !== \"deprecated\"\n ? def.interfaceType.status.type\n : def.interfaceType.status),\n entities: {\n affectedInterfaceTypes: [def.interfaceType.apiName],\n affectedObjectTypes: [],\n affectedLinkTypes: [],\n typeGroups: [],\n },\n rules: [\n {\n type: \"addInterfaceRule\",\n addInterfaceRule: {\n interfaceApiName: def.interfaceType.apiName,\n objectTypeParameter: CREATE_INTERFACE_OBJECT_PARAMETER,\n sharedPropertyValues: {\n ...Object.fromEntries(\n sptNames.map(\n id => [id, {\n type: \"parameterId\",\n parameterId: def.useNonNamespacedParameters\n ? getNonNamespacedParameterName(def, id)\n : id,\n }],\n ),\n ),\n ...sptMappings,\n },\n interfacePropertyValues: {\n ...Object.fromEntries(\n actionInterfaceProperties\n .map(([id, _type]) => [\n id,\n {\n type: \"logicRuleValue\",\n logicRuleValue: {\n type: \"parameterId\",\n parameterId: def.useNonNamespacedParameters\n ? getNonNamespacedParameterName(def, id)\n : id,\n },\n },\n ]),\n ),\n ...mappings,\n },\n },\n },\n ],\n parameterOrdering: def.parameterOrdering\n ?? createDefaultParameterOrdering(\n def,\n Array.from(parameterNames),\n parameters,\n CREATE_INTERFACE_OBJECT_PARAMETER,\n ),\n ...(def.actionLevelValidation\n ? {\n validation: convertValidationRule(\n def.actionLevelValidation,\n parameters,\n ),\n }\n : {}),\n ...(def.defaultFormat && { defaultFormat: def.defaultFormat }),\n ...(def.enableLayoutSwitch\n && { enableLayoutSwitch: def.enableLayoutSwitch }),\n ...(def.tableConfiguration && {\n displayAndFormat: {\n table: def.tableConfiguration,\n },\n }),\n ...(def.sections\n && {\n sections: Object.fromEntries(\n def.sections.map(section => [section.id, section]),\n ),\n }),\n ...(def.submissionMetadata\n && { submissionMetadata: def.submissionMetadata }),\n ...(def.icon && { icon: def.icon }),\n });\n}\n"],"mappings":"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","ignoreList":[]}
@@ -17,29 +17,44 @@
17
17
  import invariant from "tiny-invariant";
18
18
  import { OntologyEntityTypeEnum } from "./common/OntologyEntityTypeEnum.js";
19
19
  import { namespace, ontologyDefinition, updateOntology, withoutNamespace } from "./defineOntology.js";
20
- import { defineSharedPropertyType } from "./defineSpt.js";
20
+ import { isInterfaceSharedPropertyType } from "./interface/InterfacePropertyType.js";
21
21
  import { mapSimplifiedStatusToInterfaceTypeStatus } from "./interface/mapSimplifiedStatusToInterfaceTypeStatus.js";
22
22
  import { combineApiNamespaceIfMissing } from "./namespace/combineApiNamespaceIfMissing.js";
23
- import { isPropertyTypeType } from "./properties/PropertyTypeType.js";
23
+ import { isExotic, isPropertyTypeType } from "./properties/PropertyTypeType.js";
24
24
  export function defineInterface(interfaceDef) {
25
25
  const apiName = namespace + interfaceDef.apiName;
26
26
  !(ontologyDefinition[OntologyEntityTypeEnum.INTERFACE_TYPE][apiName] === undefined) ? process.env.NODE_ENV !== "production" ? invariant(false, `Interface ${apiName} already exists`) : invariant(false) : void 0;
27
- const properties = Object.fromEntries(Object.entries(interfaceDef.properties ?? {}).map(([unNamespacedPropApiName, type]) => {
28
- if (typeof type === "object" && "propertyDefinition" in type) {
29
- // If the property is an imported SPT, use the SPT's apiName
30
- const apiName = combineApiNamespaceIfMissing(namespace, typeof type.propertyDefinition === "object" && "apiName" in type.propertyDefinition ? type.propertyDefinition.apiName : unNamespacedPropApiName);
27
+
28
+ // legacy support for propertiesV2 (only SPTs)
29
+ const spts = Object.fromEntries(Object.entries(interfaceDef.properties ?? {}).filter(([_name, prop]) => {
30
+ return isInterfaceSharedPropertyType(prop) || "apiName" in prop;
31
+ }).map(([s, spt]) => {
32
+ const required = isInterfaceSharedPropertyType(spt) ? spt.required : true;
33
+ return [s, {
34
+ sharedPropertyType: isInterfaceSharedPropertyType(spt) ? spt.sharedPropertyType : spt,
35
+ required: required
36
+ }];
37
+ }));
38
+ const propertiesV2 = Object.fromEntries(Object.entries(spts).map(([propName, type]) => {
39
+ const sptApiName = combineApiNamespaceIfMissing(namespace, type.sharedPropertyType.apiName);
40
+ return [sptApiName, {
41
+ required: type.required,
42
+ sharedPropertyType: verifyBasePropertyDefinition(namespace, propName, type.sharedPropertyType)
43
+ }];
44
+ }));
45
+ const propertiesV3 = Object.fromEntries(Object.entries(interfaceDef.properties ?? {}).map(([apiName, prop]) => {
46
+ const required = typeof prop === "object" && isInterfaceSharedPropertyType(prop) ? prop.required : true;
47
+ const propertyBase = typeof prop === "object" && isInterfaceSharedPropertyType(prop) ? prop.sharedPropertyType : prop;
48
+ if (typeof propertyBase === "object" && "nonNameSpacedApiName" in propertyBase) {
49
+ // SPT
31
50
  return [apiName, {
32
- required: type.required,
33
- sharedPropertyType: unifyBasePropertyDefinition(namespace, unNamespacedPropApiName, type.propertyDefinition)
51
+ required: required,
52
+ sharedPropertyType: propertyBase
34
53
  }];
54
+ } else {
55
+ // IDP
56
+ return [apiName, propertyBase];
35
57
  }
36
-
37
- // If the property is an imported SPT, use the SPT's apiName
38
- const apiName = combineApiNamespaceIfMissing(namespace, typeof type === "object" && "apiName" in type ? type.apiName : unNamespacedPropApiName);
39
- return [apiName, {
40
- required: true,
41
- sharedPropertyType: unifyBasePropertyDefinition(namespace, unNamespacedPropApiName, type)
42
- }];
43
58
  }));
44
59
  const extendsInterfaces = interfaceDef.extends ? Array.isArray(interfaceDef.extends) ? interfaceDef.extends : [interfaceDef.extends] : [];
45
60
  const status = mapSimplifiedStatusToInterfaceTypeStatus(interfaceDef.status ?? {
@@ -62,30 +77,21 @@ export function defineInterface(interfaceDef) {
62
77
  extendsInterfaces,
63
78
  links: [],
64
79
  status,
65
- propertiesV2: properties,
80
+ propertiesV2: propertiesV2,
81
+ propertiesV3: propertiesV3,
66
82
  searchable: interfaceDef.searchable ?? true,
67
83
  __type: OntologyEntityTypeEnum.INTERFACE_TYPE
68
84
  };
69
85
  updateOntology(fullInterface);
70
86
  return fullInterface;
71
87
  }
72
- function unifyBasePropertyDefinition(namespace, apiName, type) {
73
- if (typeof type === "string" || typeof type === "object" && !("apiName" in type)) {
74
- !isPropertyTypeType(type) ? process.env.NODE_ENV !== "production" ? invariant(false, `Invalid data type ${JSON.stringify(type)} for property ${apiName} on InterfaceType ${apiName}`) : invariant(false) : void 0;
75
- const spt = defineSharedPropertyType({
76
- apiName,
77
- displayName: apiName,
78
- type,
79
- array: false
80
- });
81
- return spt;
82
- } else {
83
- const unNamespacedTypeApiName = withoutNamespace(type.apiName);
84
- !(namespace + apiName === type.apiName || apiName === unNamespacedTypeApiName) ? process.env.NODE_ENV !== "production" ? invariant(false, `property key and it's apiName must be identical. ${JSON.stringify({
85
- key: apiName,
86
- apiName: type.apiName
87
- })}`) : invariant(false) : void 0;
88
- return type;
89
- }
88
+ function verifyBasePropertyDefinition(namespace, apiName, type) {
89
+ const unNamespacedTypeApiName = withoutNamespace(type.apiName);
90
+ !(isPropertyTypeType(type.type) || isExotic(type.type)) ? process.env.NODE_ENV !== "production" ? invariant(false, `Invalid data type ${JSON.stringify(type)} for property ${apiName} on InterfaceType ${apiName}`) : invariant(false) : void 0;
91
+ !(namespace + apiName === type.apiName || apiName === unNamespacedTypeApiName) ? process.env.NODE_ENV !== "production" ? invariant(false, `property key and it's apiName must be identical. ${JSON.stringify({
92
+ key: apiName,
93
+ apiName: type.apiName
94
+ })}`) : invariant(false) : void 0;
95
+ return type;
90
96
  }
91
97
  //# sourceMappingURL=defineInterface.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"defineInterface.js","names":["invariant","OntologyEntityTypeEnum","namespace","ontologyDefinition","updateOntology","withoutNamespace","defineSharedPropertyType","mapSimplifiedStatusToInterfaceTypeStatus","combineApiNamespaceIfMissing","isPropertyTypeType","defineInterface","interfaceDef","apiName","INTERFACE_TYPE","undefined","process","env","NODE_ENV","properties","Object","fromEntries","entries","map","unNamespacedPropApiName","type","propertyDefinition","required","sharedPropertyType","unifyBasePropertyDefinition","extendsInterfaces","extends","Array","isArray","status","deprecated","message","deadline","fullInterface","displayMetadata","displayName","description","icon","blueprint","color","locator","links","propertiesV2","searchable","__type","JSON","stringify","spt","array","unNamespacedTypeApiName","key"],"sources":["defineInterface.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 { InterfaceTypeStatus } from \"@osdk/client.unstable\";\nimport invariant from \"tiny-invariant\";\nimport type { BlueprintIcon } from \"./common/BlueprintIcons.js\";\nimport { OntologyEntityTypeEnum } from \"./common/OntologyEntityTypeEnum.js\";\nimport {\n namespace,\n ontologyDefinition,\n updateOntology,\n withoutNamespace,\n} from \"./defineOntology.js\";\nimport { defineSharedPropertyType } from \"./defineSpt.js\";\nimport { type InterfaceType } from \"./interface/InterfaceType.js\";\nimport { mapSimplifiedStatusToInterfaceTypeStatus } from \"./interface/mapSimplifiedStatusToInterfaceTypeStatus.js\";\nimport { combineApiNamespaceIfMissing } from \"./namespace/combineApiNamespaceIfMissing.js\";\nimport {\n isPropertyTypeType,\n type PropertyTypeType,\n} from \"./properties/PropertyTypeType.js\";\nimport { type SharedPropertyType } from \"./properties/SharedPropertyType.js\";\n\nexport type SimplifiedInterfaceTypeStatus =\n | { type: \"deprecated\"; message: string; deadline: string }\n | { type: \"active\" }\n | { type: \"experimental\" };\n\ntype PropertyBase = SharedPropertyType | PropertyTypeType;\ntype PropertyWithOptional = {\n required: boolean;\n propertyDefinition: PropertyBase;\n};\n\nexport type InterfaceTypeDefinition = {\n apiName: string;\n displayName?: string;\n description?: string;\n icon?: { locator: BlueprintIcon; color: string };\n status?: SimplifiedInterfaceTypeStatus;\n properties?: Record<\n string,\n PropertyBase | PropertyWithOptional\n >;\n extends?: InterfaceType | InterfaceType[];\n searchable?: boolean;\n};\n\nexport function defineInterface(\n interfaceDef: InterfaceTypeDefinition,\n): InterfaceType {\n const apiName = namespace + interfaceDef.apiName;\n invariant(\n ontologyDefinition[OntologyEntityTypeEnum.INTERFACE_TYPE][apiName]\n === undefined,\n `Interface ${apiName} already exists`,\n );\n\n const properties = Object.fromEntries(\n Object.entries(interfaceDef.properties ?? {}).map<\n [string, { required: boolean; sharedPropertyType: SharedPropertyType }]\n >(\n ([unNamespacedPropApiName, type]) => {\n if (typeof type === \"object\" && \"propertyDefinition\" in type) {\n // If the property is an imported SPT, use the SPT's apiName\n const apiName = combineApiNamespaceIfMissing(\n namespace,\n typeof type.propertyDefinition === \"object\"\n && \"apiName\" in type.propertyDefinition\n ? type.propertyDefinition.apiName\n : unNamespacedPropApiName,\n );\n\n return [apiName, {\n required: type.required,\n sharedPropertyType: unifyBasePropertyDefinition(\n namespace,\n unNamespacedPropApiName,\n type.propertyDefinition,\n ),\n }];\n }\n\n // If the property is an imported SPT, use the SPT's apiName\n const apiName = combineApiNamespaceIfMissing(\n namespace,\n typeof type === \"object\" && \"apiName\" in type\n ? type.apiName\n : unNamespacedPropApiName,\n );\n return [apiName, {\n required: true,\n sharedPropertyType: unifyBasePropertyDefinition(\n namespace,\n unNamespacedPropApiName,\n type,\n ),\n }];\n },\n ),\n );\n\n const extendsInterfaces = interfaceDef.extends\n ? (Array.isArray(interfaceDef.extends)\n ? interfaceDef.extends\n : [interfaceDef.extends])\n : [];\n\n const status: InterfaceTypeStatus = mapSimplifiedStatusToInterfaceTypeStatus(\n interfaceDef.status ?? { type: \"active\" },\n );\n\n invariant(\n status.type !== \"deprecated\"\n || (status.deprecated.message && status.deprecated.deadline),\n `Deprecated status must include message and deadline properties.`,\n );\n\n const fullInterface: InterfaceType = {\n apiName,\n displayMetadata: {\n displayName: interfaceDef.displayName ?? interfaceDef.apiName,\n description: interfaceDef.description ?? interfaceDef.displayName\n ?? interfaceDef.apiName,\n icon: interfaceDef.icon !== undefined\n ? {\n type: \"blueprint\",\n blueprint: {\n color: interfaceDef.icon.color,\n locator: interfaceDef.icon.locator,\n },\n }\n : undefined,\n },\n extendsInterfaces,\n links: [],\n status,\n propertiesV2: properties,\n searchable: interfaceDef.searchable ?? true,\n __type: OntologyEntityTypeEnum.INTERFACE_TYPE,\n };\n\n updateOntology(fullInterface);\n return fullInterface;\n}\n\nfunction unifyBasePropertyDefinition(\n namespace: string,\n apiName: string,\n type: PropertyBase,\n): SharedPropertyType {\n if (\n typeof type === \"string\"\n || (typeof type === \"object\" && !(\"apiName\" in type))\n ) {\n invariant(\n isPropertyTypeType(type),\n `Invalid data type ${\n JSON.stringify(type)\n } for property ${apiName} on InterfaceType ${apiName}`,\n );\n\n const spt = defineSharedPropertyType({\n apiName,\n displayName: apiName,\n type,\n array: false,\n });\n return spt;\n } else {\n const unNamespacedTypeApiName = withoutNamespace(type.apiName);\n invariant(\n namespace + apiName === type.apiName\n || apiName === unNamespacedTypeApiName,\n `property key and it's apiName must be identical. ${\n JSON.stringify({ key: apiName, apiName: type.apiName })\n }`,\n );\n return type;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"defineInterface.js","names":["invariant","OntologyEntityTypeEnum","namespace","ontologyDefinition","updateOntology","withoutNamespace","isInterfaceSharedPropertyType","mapSimplifiedStatusToInterfaceTypeStatus","combineApiNamespaceIfMissing","isExotic","isPropertyTypeType","defineInterface","interfaceDef","apiName","INTERFACE_TYPE","undefined","process","env","NODE_ENV","spts","Object","fromEntries","entries","properties","filter","_name","prop","map","s","spt","required","sharedPropertyType","propertiesV2","propName","type","sptApiName","verifyBasePropertyDefinition","propertiesV3","propertyBase","extendsInterfaces","extends","Array","isArray","status","deprecated","message","deadline","fullInterface","displayMetadata","displayName","description","icon","blueprint","color","locator","links","searchable","__type","unNamespacedTypeApiName","JSON","stringify","key"],"sources":["defineInterface.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 { InterfaceTypeStatus } from \"@osdk/client.unstable\";\nimport invariant from \"tiny-invariant\";\nimport type { BlueprintIcon } from \"./common/BlueprintIcons.js\";\nimport { OntologyEntityTypeEnum } from \"./common/OntologyEntityTypeEnum.js\";\nimport {\n namespace,\n ontologyDefinition,\n updateOntology,\n withoutNamespace,\n} from \"./defineOntology.js\";\nimport {\n type InterfaceDefinedProperty,\n type InterfacePropertyType,\n isInterfaceSharedPropertyType,\n} from \"./interface/InterfacePropertyType.js\";\nimport { type InterfaceType } from \"./interface/InterfaceType.js\";\nimport { mapSimplifiedStatusToInterfaceTypeStatus } from \"./interface/mapSimplifiedStatusToInterfaceTypeStatus.js\";\nimport { combineApiNamespaceIfMissing } from \"./namespace/combineApiNamespaceIfMissing.js\";\nimport { isExotic, isPropertyTypeType } from \"./properties/PropertyTypeType.js\";\nimport { type SharedPropertyType } from \"./properties/SharedPropertyType.js\";\n\nexport type SimplifiedInterfaceTypeStatus =\n | { type: \"deprecated\"; message: string; deadline: string }\n | { type: \"active\" }\n | { type: \"experimental\" };\n\ntype PropertyBase =\n | SharedPropertyType\n | InterfaceDefinedProperty;\ntype SptWithOptional = {\n required: boolean;\n sharedPropertyType: SharedPropertyType;\n};\n\nexport type InterfaceTypeDefinition = {\n apiName: string;\n displayName?: string;\n description?: string;\n icon?: { locator: BlueprintIcon; color: string };\n status?: SimplifiedInterfaceTypeStatus;\n properties?: Record<\n string,\n PropertyBase | SptWithOptional\n >;\n extends?: InterfaceType | InterfaceType[];\n searchable?: boolean;\n};\n\nexport function defineInterface(\n interfaceDef: InterfaceTypeDefinition,\n): InterfaceType {\n const apiName = namespace + interfaceDef.apiName;\n invariant(\n ontologyDefinition[OntologyEntityTypeEnum.INTERFACE_TYPE][apiName]\n === undefined,\n `Interface ${apiName} already exists`,\n );\n\n // legacy support for propertiesV2 (only SPTs)\n const spts: Record<string, SptWithOptional> = Object.fromEntries(\n Object.entries(interfaceDef.properties ?? {}).filter(([_name, prop]) => {\n return isInterfaceSharedPropertyType(prop) || \"apiName\" in prop;\n }).map(([s, spt]) => {\n const required = isInterfaceSharedPropertyType(spt) ? spt.required : true;\n return [s, {\n sharedPropertyType: (isInterfaceSharedPropertyType(spt)\n ? spt.sharedPropertyType\n : spt) as SharedPropertyType,\n required: required,\n }];\n }),\n );\n const propertiesV2 = Object.fromEntries(\n Object.entries(spts).map<\n [string, { required: boolean; sharedPropertyType: SharedPropertyType }]\n >(\n ([propName, type]) => {\n const sptApiName = combineApiNamespaceIfMissing(\n namespace,\n type.sharedPropertyType.apiName,\n );\n return [sptApiName, {\n required: type.required,\n sharedPropertyType: verifyBasePropertyDefinition(\n namespace,\n propName,\n type.sharedPropertyType,\n ),\n }];\n },\n ),\n );\n\n const propertiesV3 = Object.fromEntries(\n Object.entries(interfaceDef.properties ?? {}).map<\n [string, InterfacePropertyType]\n >(([apiName, prop]) => {\n const required =\n (typeof prop === \"object\" && isInterfaceSharedPropertyType(prop))\n ? prop.required\n : true;\n const propertyBase: PropertyBase =\n (typeof prop === \"object\" && isInterfaceSharedPropertyType(prop))\n ? prop.sharedPropertyType\n : prop;\n if (\n typeof propertyBase === \"object\"\n && \"nonNameSpacedApiName\" in propertyBase\n ) {\n // SPT\n return [apiName, {\n required: required,\n sharedPropertyType: propertyBase,\n }];\n } else {\n // IDP\n return [apiName, propertyBase];\n }\n }),\n );\n\n const extendsInterfaces = interfaceDef.extends\n ? (Array.isArray(interfaceDef.extends)\n ? interfaceDef.extends\n : [interfaceDef.extends])\n : [];\n\n const status: InterfaceTypeStatus = mapSimplifiedStatusToInterfaceTypeStatus(\n interfaceDef.status ?? { type: \"active\" },\n );\n\n invariant(\n status.type !== \"deprecated\"\n || (status.deprecated.message && status.deprecated.deadline),\n `Deprecated status must include message and deadline properties.`,\n );\n\n const fullInterface: InterfaceType = {\n apiName,\n displayMetadata: {\n displayName: interfaceDef.displayName ?? interfaceDef.apiName,\n description: interfaceDef.description ?? interfaceDef.displayName\n ?? interfaceDef.apiName,\n icon: interfaceDef.icon !== undefined\n ? {\n type: \"blueprint\",\n blueprint: {\n color: interfaceDef.icon.color,\n locator: interfaceDef.icon.locator,\n },\n }\n : undefined,\n },\n extendsInterfaces,\n links: [],\n status,\n propertiesV2: propertiesV2,\n propertiesV3: propertiesV3,\n searchable: interfaceDef.searchable ?? true,\n __type: OntologyEntityTypeEnum.INTERFACE_TYPE,\n };\n\n updateOntology(fullInterface);\n return fullInterface;\n}\n\nfunction verifyBasePropertyDefinition(\n namespace: string,\n apiName: string,\n type: SharedPropertyType,\n): SharedPropertyType {\n const unNamespacedTypeApiName = withoutNamespace(type.apiName);\n invariant(\n isPropertyTypeType(type.type) || isExotic(type.type),\n `Invalid data type ${\n JSON.stringify(type)\n } for property ${apiName} on InterfaceType ${apiName}`,\n );\n invariant(\n namespace + apiName === type.apiName\n || apiName === unNamespacedTypeApiName,\n `property key and it's apiName must be identical. ${\n JSON.stringify({ key: apiName, apiName: type.apiName })\n }`,\n );\n return type;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -14,16 +14,19 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import { convertMappingValue } from "../conversion/toMarketplace/convertMappingValue.js";
18
- import { addNamespaceToActionDefinition, convertValidationRule, createDefaultParameterOrdering, createParameters, defineAction, getInterfaceParameterName, getNonNamespacedParameterName, isPropertyParameter, kebab, MODIFY_INTERFACE_OBJECT_PARAMETER, validateActionParameters, validateParameterOrdering } from "./defineAction.js";
17
+ import { convertInterfacePropertyMappingValue, convertMappingValue } from "../conversion/toMarketplace/convertMappingValue.js";
18
+ import { convertValidationRule, createDefaultParameterOrdering, createParameters, defineAction, getInterfaceParameterName, getNonNamespacedParameterName, isPropertyParameter, kebab, MODIFY_INTERFACE_OBJECT_PARAMETER, validateActionParameters, validateParameterOrdering } from "./defineAction.js";
19
19
  import { getFlattenedInterfaceProperties } from "./interface/getFlattenedInterfaceProperties.js";
20
+ import { getInterfacePropertyTypeType, isInterfaceSharedPropertyType } from "./interface/InterfacePropertyType.js";
20
21
  export function defineModifyInterfaceObjectAction(def) {
21
- addNamespaceToActionDefinition(def);
22
22
  const allProperties = getFlattenedInterfaceProperties(def.interfaceType);
23
23
  validateActionParameters(def, Object.keys(allProperties), def.interfaceType.apiName);
24
- const sptNames = Object.keys(allProperties).filter(apiName => isPropertyParameter(def, apiName, allProperties[apiName].sharedPropertyType.type));
25
- const parameterNames = new Set(sptNames.map(apiName => getInterfaceParameterName(def, apiName)));
26
- const propertyMap = Object.fromEntries(Object.entries(allProperties).map(([id, prop]) => [getInterfaceParameterName(def, id), prop.sharedPropertyType]));
24
+ const actionInterfaceProperties = Object.entries(allProperties).filter(([apiName, type]) => {
25
+ return isPropertyParameter(def, apiName, getInterfacePropertyTypeType(type));
26
+ });
27
+ const sptNames = actionInterfaceProperties.filter(([_apiName, type]) => isInterfaceSharedPropertyType(type)).map(([apiName]) => apiName);
28
+ const parameterNames = new Set(actionInterfaceProperties.map(([apiName, _type]) => getInterfaceParameterName(def, apiName)));
29
+ const propertyMap = Object.fromEntries(Object.entries(allProperties).map(([id, prop]) => [getInterfaceParameterName(def, id), prop]));
27
30
  Object.keys(def.parameterConfiguration ?? {}).forEach(param => parameterNames.add(getInterfaceParameterName(def, param)));
28
31
  parameterNames.add(MODIFY_INTERFACE_OBJECT_PARAMETER);
29
32
  const actionApiName = def.apiName ?? `modify-${kebab(def.interfaceType.apiName.split(".").pop() ?? def.interfaceType.apiName)}${def.objectType === undefined ? "" : `-${kebab(def.objectType.apiName.split(".").pop() ?? def.objectType.apiName)}`}`;
@@ -33,8 +36,17 @@ export function defineModifyInterfaceObjectAction(def) {
33
36
  }
34
37
  validateParameterOrdering(def.parameterOrdering, parameterNames, actionApiName);
35
38
  }
36
- const parameters = createParameters(def, propertyMap, parameterNames, Object.fromEntries(Object.entries(allProperties).map(([id, prop]) => [id, prop.required])));
37
- const mappings = Object.fromEntries(Object.entries(def.nonParameterMappings ?? {}).map(([id, value]) => [id, convertMappingValue(value)]));
39
+ const parameters = createParameters(def, propertyMap, parameterNames, Object.fromEntries(Object.entries(allProperties).map(([id, prop]) => [id, prop.required ?? true])));
40
+ let sptMappings = {};
41
+ const mappings = Object.fromEntries(Object.entries(def.nonParameterMappings ?? {}).map(([id, value]) => {
42
+ if (sptNames.includes(id)) {
43
+ sptMappings = {
44
+ ...sptMappings,
45
+ [id]: convertMappingValue(value)
46
+ };
47
+ }
48
+ return [id, convertInterfacePropertyMappingValue(value)];
49
+ }));
38
50
  return defineAction({
39
51
  apiName: actionApiName,
40
52
  displayName: def.displayName ?? `Modify ${def.interfaceType.displayMetadata.displayName}`,
@@ -49,12 +61,23 @@ export function defineModifyInterfaceObjectAction(def) {
49
61
  rules: [{
50
62
  type: "modifyInterfaceRule",
51
63
  modifyInterfaceRule: {
64
+ interfaceApiName: def.interfaceType.apiName,
52
65
  interfaceObjectToModifyParameter: "interfaceObjectToModifyParameter",
53
66
  sharedPropertyValues: {
54
67
  ...Object.fromEntries(sptNames.map(id => [id, {
55
68
  type: "parameterId",
56
69
  parameterId: def.useNonNamespacedParameters ? getNonNamespacedParameterName(def, id) : id
57
70
  }])),
71
+ ...sptMappings
72
+ },
73
+ interfacePropertyValues: {
74
+ ...Object.fromEntries(actionInterfaceProperties.map(([id, _type]) => [id, {
75
+ type: "logicRuleValue",
76
+ logicRuleValue: {
77
+ type: "parameterId",
78
+ parameterId: def.useNonNamespacedParameters ? getNonNamespacedParameterName(def, id) : id
79
+ }
80
+ }])),
58
81
  ...mappings
59
82
  }
60
83
  }
@@ -1 +1 @@
1
- {"version":3,"file":"defineModifyInterfaceObjectAction.js","names":["convertMappingValue","addNamespaceToActionDefinition","convertValidationRule","createDefaultParameterOrdering","createParameters","defineAction","getInterfaceParameterName","getNonNamespacedParameterName","isPropertyParameter","kebab","MODIFY_INTERFACE_OBJECT_PARAMETER","validateActionParameters","validateParameterOrdering","getFlattenedInterfaceProperties","defineModifyInterfaceObjectAction","def","allProperties","interfaceType","Object","keys","apiName","sptNames","filter","sharedPropertyType","type","parameterNames","Set","map","propertyMap","fromEntries","entries","id","prop","parameterConfiguration","forEach","param","add","actionApiName","split","pop","objectType","undefined","parameterOrdering","includes","unshift","parameters","required","mappings","nonParameterMappings","value","displayName","displayMetadata","status","entities","affectedInterfaceTypes","affectedObjectTypes","affectedLinkTypes","typeGroups","rules","modifyInterfaceRule","interfaceObjectToModifyParameter","sharedPropertyValues","parameterId","useNonNamespacedParameters","Array","from","actionLevelValidation","validation","defaultFormat","enableLayoutSwitch","tableConfiguration","displayAndFormat","table","sections","section","submissionMetadata","icon"],"sources":["defineModifyInterfaceObjectAction.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 { convertMappingValue } from \"../conversion/toMarketplace/convertMappingValue.js\";\nimport { type ActionType } from \"./action/ActionType.js\";\nimport type { InterfaceActionTypeUserDefinition } from \"./defineAction.js\";\nimport {\n addNamespaceToActionDefinition,\n convertValidationRule,\n createDefaultParameterOrdering,\n createParameters,\n defineAction,\n getInterfaceParameterName,\n getNonNamespacedParameterName,\n isPropertyParameter,\n kebab,\n MODIFY_INTERFACE_OBJECT_PARAMETER,\n validateActionParameters,\n validateParameterOrdering,\n} from \"./defineAction.js\";\nimport { getFlattenedInterfaceProperties } from \"./interface/getFlattenedInterfaceProperties.js\";\n\nexport function defineModifyInterfaceObjectAction(\n def: InterfaceActionTypeUserDefinition,\n): ActionType {\n addNamespaceToActionDefinition(def);\n const allProperties = getFlattenedInterfaceProperties(def.interfaceType);\n validateActionParameters(\n def,\n Object.keys(allProperties),\n def.interfaceType.apiName,\n );\n const sptNames = Object.keys(allProperties).filter(apiName =>\n isPropertyParameter(\n def,\n apiName,\n allProperties[apiName].sharedPropertyType.type,\n )\n );\n const parameterNames = new Set(\n sptNames.map(apiName => getInterfaceParameterName(def, apiName)),\n );\n const propertyMap = Object.fromEntries(\n Object.entries(allProperties).map((\n [id, prop],\n ) => [getInterfaceParameterName(def, id), prop.sharedPropertyType]),\n );\n\n Object.keys(def.parameterConfiguration ?? {}).forEach(param =>\n parameterNames.add(\n getInterfaceParameterName(def, param),\n )\n );\n parameterNames.add(MODIFY_INTERFACE_OBJECT_PARAMETER);\n const actionApiName = def.apiName ?? `modify-${\n kebab(\n def.interfaceType.apiName.split(\".\").pop() ?? def.interfaceType.apiName,\n )\n }${\n def.objectType === undefined\n ? \"\"\n : `-${\n kebab(\n def.objectType.apiName.split(\".\").pop() ?? def.objectType.apiName,\n )\n }`\n }`;\n if (def.parameterOrdering) {\n if (!def.parameterOrdering.includes(MODIFY_INTERFACE_OBJECT_PARAMETER)) {\n def.parameterOrdering.unshift(MODIFY_INTERFACE_OBJECT_PARAMETER);\n }\n validateParameterOrdering(\n def.parameterOrdering,\n parameterNames,\n actionApiName,\n );\n }\n const parameters = createParameters(\n def,\n propertyMap,\n parameterNames,\n Object.fromEntries(\n Object.entries(allProperties).map(([id, prop]) => [id, prop.required]),\n ),\n );\n const mappings = Object.fromEntries(\n Object.entries(def.nonParameterMappings ?? {}).map((\n [id, value],\n ) => [id, convertMappingValue(value)]),\n );\n\n return defineAction({\n apiName: actionApiName,\n displayName: def.displayName\n ?? `Modify ${def.interfaceType.displayMetadata.displayName}`,\n parameters: parameters,\n status: def.status ?? (def.interfaceType.status.type !== \"deprecated\"\n ? def.interfaceType.status.type\n : def.interfaceType.status),\n entities: {\n affectedInterfaceTypes: [def.interfaceType.apiName],\n affectedObjectTypes: [],\n affectedLinkTypes: [],\n typeGroups: [],\n },\n rules: [\n {\n type: \"modifyInterfaceRule\",\n modifyInterfaceRule: {\n interfaceObjectToModifyParameter: \"interfaceObjectToModifyParameter\",\n sharedPropertyValues: {\n ...Object.fromEntries(\n sptNames.map(\n id => [id, {\n type: \"parameterId\",\n parameterId: def.useNonNamespacedParameters\n ? getNonNamespacedParameterName(def, id)\n : id,\n }],\n ),\n ),\n ...mappings,\n },\n },\n },\n ],\n parameterOrdering: def.parameterOrdering\n ?? createDefaultParameterOrdering(\n def,\n Array.from(parameterNames),\n parameters,\n MODIFY_INTERFACE_OBJECT_PARAMETER,\n ),\n ...(def.actionLevelValidation\n ? {\n validation: convertValidationRule(\n def.actionLevelValidation,\n parameters,\n ),\n }\n : {}),\n ...(def.defaultFormat && { defaultFormat: def.defaultFormat }),\n ...(def.enableLayoutSwitch\n && { enableLayoutSwitch: def.enableLayoutSwitch }),\n ...(def.tableConfiguration && {\n displayAndFormat: {\n table: def.tableConfiguration,\n },\n }),\n ...(def.sections\n && {\n sections: Object.fromEntries(\n def.sections.map(section => [section.id, section]),\n ),\n }),\n ...(def.submissionMetadata\n && { submissionMetadata: def.submissionMetadata }),\n ...(def.icon && { icon: def.icon }),\n });\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"defineModifyInterfaceObjectAction.js","names":["convertInterfacePropertyMappingValue","convertMappingValue","convertValidationRule","createDefaultParameterOrdering","createParameters","defineAction","getInterfaceParameterName","getNonNamespacedParameterName","isPropertyParameter","kebab","MODIFY_INTERFACE_OBJECT_PARAMETER","validateActionParameters","validateParameterOrdering","getFlattenedInterfaceProperties","getInterfacePropertyTypeType","isInterfaceSharedPropertyType","defineModifyInterfaceObjectAction","def","allProperties","interfaceType","Object","keys","apiName","actionInterfaceProperties","entries","filter","type","sptNames","_apiName","map","parameterNames","Set","_type","propertyMap","fromEntries","id","prop","parameterConfiguration","forEach","param","add","actionApiName","split","pop","objectType","undefined","parameterOrdering","includes","unshift","parameters","required","sptMappings","mappings","nonParameterMappings","value","displayName","displayMetadata","status","entities","affectedInterfaceTypes","affectedObjectTypes","affectedLinkTypes","typeGroups","rules","modifyInterfaceRule","interfaceApiName","interfaceObjectToModifyParameter","sharedPropertyValues","parameterId","useNonNamespacedParameters","interfacePropertyValues","logicRuleValue","Array","from","actionLevelValidation","validation","defaultFormat","enableLayoutSwitch","tableConfiguration","displayAndFormat","table","sections","section","submissionMetadata","icon"],"sources":["defineModifyInterfaceObjectAction.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 {\n convertInterfacePropertyMappingValue,\n convertMappingValue,\n} from \"../conversion/toMarketplace/convertMappingValue.js\";\nimport { type ActionType } from \"./action/ActionType.js\";\nimport type { InterfaceActionTypeUserDefinition } from \"./defineAction.js\";\nimport {\n convertValidationRule,\n createDefaultParameterOrdering,\n createParameters,\n defineAction,\n getInterfaceParameterName,\n getNonNamespacedParameterName,\n isPropertyParameter,\n kebab,\n MODIFY_INTERFACE_OBJECT_PARAMETER,\n validateActionParameters,\n validateParameterOrdering,\n} from \"./defineAction.js\";\nimport { getFlattenedInterfaceProperties } from \"./interface/getFlattenedInterfaceProperties.js\";\nimport {\n getInterfacePropertyTypeType,\n isInterfaceSharedPropertyType,\n} from \"./interface/InterfacePropertyType.js\";\n\nexport function defineModifyInterfaceObjectAction(\n def: InterfaceActionTypeUserDefinition,\n): ActionType {\n const allProperties = getFlattenedInterfaceProperties(def.interfaceType);\n validateActionParameters(\n def,\n Object.keys(allProperties),\n def.interfaceType.apiName,\n );\n const actionInterfaceProperties = Object.entries(allProperties).filter(\n ([apiName, type]) => {\n return isPropertyParameter(\n def,\n apiName,\n getInterfacePropertyTypeType(type),\n );\n },\n );\n const sptNames = actionInterfaceProperties\n .filter(([_apiName, type]) => isInterfaceSharedPropertyType(type))\n .map(([apiName]) => apiName);\n const parameterNames = new Set(\n actionInterfaceProperties.map(([apiName, _type]) =>\n getInterfaceParameterName(def, apiName)\n ),\n );\n const propertyMap = Object.fromEntries(\n Object.entries(allProperties).map((\n [id, prop],\n ) => [getInterfaceParameterName(def, id), prop]),\n );\n\n Object.keys(def.parameterConfiguration ?? {}).forEach(param =>\n parameterNames.add(\n getInterfaceParameterName(def, param),\n )\n );\n parameterNames.add(MODIFY_INTERFACE_OBJECT_PARAMETER);\n const actionApiName = def.apiName ?? `modify-${\n kebab(\n def.interfaceType.apiName.split(\".\").pop() ?? def.interfaceType.apiName,\n )\n }${\n def.objectType === undefined\n ? \"\"\n : `-${\n kebab(\n def.objectType.apiName.split(\".\").pop() ?? def.objectType.apiName,\n )\n }`\n }`;\n if (def.parameterOrdering) {\n if (!def.parameterOrdering.includes(MODIFY_INTERFACE_OBJECT_PARAMETER)) {\n def.parameterOrdering.unshift(MODIFY_INTERFACE_OBJECT_PARAMETER);\n }\n validateParameterOrdering(\n def.parameterOrdering,\n parameterNames,\n actionApiName,\n );\n }\n const parameters = createParameters(\n def,\n propertyMap,\n parameterNames,\n Object.fromEntries(\n Object.entries(allProperties).map((\n [id, prop],\n ) => [id, prop.required ?? true]),\n ),\n );\n let sptMappings = {};\n const mappings = Object.fromEntries(\n Object.entries(def.nonParameterMappings ?? {}).map((\n [id, value],\n ) => {\n if (sptNames.includes(id)) {\n sptMappings = {\n ...sptMappings,\n [id]: convertMappingValue(value),\n };\n }\n return [id, convertInterfacePropertyMappingValue(value)];\n }),\n );\n\n return defineAction({\n apiName: actionApiName,\n displayName: def.displayName\n ?? `Modify ${def.interfaceType.displayMetadata.displayName}`,\n parameters: parameters,\n status: def.status ?? (def.interfaceType.status.type !== \"deprecated\"\n ? def.interfaceType.status.type\n : def.interfaceType.status),\n entities: {\n affectedInterfaceTypes: [def.interfaceType.apiName],\n affectedObjectTypes: [],\n affectedLinkTypes: [],\n typeGroups: [],\n },\n rules: [\n {\n type: \"modifyInterfaceRule\",\n modifyInterfaceRule: {\n interfaceApiName: def.interfaceType.apiName,\n interfaceObjectToModifyParameter: \"interfaceObjectToModifyParameter\",\n sharedPropertyValues: {\n ...Object.fromEntries(\n sptNames.map(\n id => [id, {\n type: \"parameterId\",\n parameterId: def.useNonNamespacedParameters\n ? getNonNamespacedParameterName(def, id)\n : id,\n }],\n ),\n ),\n ...sptMappings,\n },\n interfacePropertyValues: {\n ...Object.fromEntries(\n actionInterfaceProperties\n .map(([id, _type]) => [\n id,\n {\n type: \"logicRuleValue\",\n logicRuleValue: {\n type: \"parameterId\",\n parameterId: def.useNonNamespacedParameters\n ? getNonNamespacedParameterName(def, id)\n : id,\n },\n },\n ]),\n ),\n ...mappings,\n },\n },\n },\n ],\n parameterOrdering: def.parameterOrdering\n ?? createDefaultParameterOrdering(\n def,\n Array.from(parameterNames),\n parameters,\n MODIFY_INTERFACE_OBJECT_PARAMETER,\n ),\n ...(def.actionLevelValidation\n ? {\n validation: convertValidationRule(\n def.actionLevelValidation,\n parameters,\n ),\n }\n : {}),\n ...(def.defaultFormat && { defaultFormat: def.defaultFormat }),\n ...(def.enableLayoutSwitch\n && { enableLayoutSwitch: def.enableLayoutSwitch }),\n ...(def.tableConfiguration && {\n displayAndFormat: {\n table: def.tableConfiguration,\n },\n }),\n ...(def.sections\n && {\n sections: Object.fromEntries(\n def.sections.map(section => [section.id, section]),\n ),\n }),\n ...(def.submissionMetadata\n && { submissionMetadata: def.submissionMetadata }),\n ...(def.icon && { icon: def.icon }),\n });\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SACEA,oCAAoC,EACpCC,mBAAmB,QACd,oDAAoD;AAG3D,SACEC,qBAAqB,EACrBC,8BAA8B,EAC9BC,gBAAgB,EAChBC,YAAY,EACZC,yBAAyB,EACzBC,6BAA6B,EAC7BC,mBAAmB,EACnBC,KAAK,EACLC,iCAAiC,EACjCC,wBAAwB,EACxBC,yBAAyB,QACpB,mBAAmB;AAC1B,SAASC,+BAA+B,QAAQ,gDAAgD;AAChG,SACEC,4BAA4B,EAC5BC,6BAA6B,QACxB,sCAAsC;AAE7C,OAAO,SAASC,iCAAiCA,CAC/CC,GAAsC,EAC1B;EACZ,MAAMC,aAAa,GAAGL,+BAA+B,CAACI,GAAG,CAACE,aAAa,CAAC;EACxER,wBAAwB,CACtBM,GAAG,EACHG,MAAM,CAACC,IAAI,CAACH,aAAa,CAAC,EAC1BD,GAAG,CAACE,aAAa,CAACG,OACpB,CAAC;EACD,MAAMC,yBAAyB,GAAGH,MAAM,CAACI,OAAO,CAACN,aAAa,CAAC,CAACO,MAAM,CACpE,CAAC,CAACH,OAAO,EAAEI,IAAI,CAAC,KAAK;IACnB,OAAOlB,mBAAmB,CACxBS,GAAG,EACHK,OAAO,EACPR,4BAA4B,CAACY,IAAI,CACnC,CAAC;EACH,CACF,CAAC;EACD,MAAMC,QAAQ,GAAGJ,yBAAyB,CACvCE,MAAM,CAAC,CAAC,CAACG,QAAQ,EAAEF,IAAI,CAAC,KAAKX,6BAA6B,CAACW,IAAI,CAAC,CAAC,CACjEG,GAAG,CAAC,CAAC,CAACP,OAAO,CAAC,KAAKA,OAAO,CAAC;EAC9B,MAAMQ,cAAc,GAAG,IAAIC,GAAG,CAC5BR,yBAAyB,CAACM,GAAG,CAAC,CAAC,CAACP,OAAO,EAAEU,KAAK,CAAC,KAC7C1B,yBAAyB,CAACW,GAAG,EAAEK,OAAO,CACxC,CACF,CAAC;EACD,MAAMW,WAAW,GAAGb,MAAM,CAACc,WAAW,CACpCd,MAAM,CAACI,OAAO,CAACN,aAAa,CAAC,CAACW,GAAG,CAAC,CAChC,CAACM,EAAE,EAAEC,IAAI,CAAC,KACP,CAAC9B,yBAAyB,CAACW,GAAG,EAAEkB,EAAE,CAAC,EAAEC,IAAI,CAAC,CACjD,CAAC;EAEDhB,MAAM,CAACC,IAAI,CAACJ,GAAG,CAACoB,sBAAsB,IAAI,CAAC,CAAC,CAAC,CAACC,OAAO,CAACC,KAAK,IACzDT,cAAc,CAACU,GAAG,CAChBlC,yBAAyB,CAACW,GAAG,EAAEsB,KAAK,CACtC,CACF,CAAC;EACDT,cAAc,CAACU,GAAG,CAAC9B,iCAAiC,CAAC;EACrD,MAAM+B,aAAa,GAAGxB,GAAG,CAACK,OAAO,IAAI,UACnCb,KAAK,CACHQ,GAAG,CAACE,aAAa,CAACG,OAAO,CAACoB,KAAK,CAAC,GAAG,CAAC,CAACC,GAAG,CAAC,CAAC,IAAI1B,GAAG,CAACE,aAAa,CAACG,OAClE,CAAC,GAEDL,GAAG,CAAC2B,UAAU,KAAKC,SAAS,GACxB,EAAE,GACF,IACApC,KAAK,CACHQ,GAAG,CAAC2B,UAAU,CAACtB,OAAO,CAACoB,KAAK,CAAC,GAAG,CAAC,CAACC,GAAG,CAAC,CAAC,IAAI1B,GAAG,CAAC2B,UAAU,CAACtB,OAC5D,CAAC,EACD,EACJ;EACF,IAAIL,GAAG,CAAC6B,iBAAiB,EAAE;IACzB,IAAI,CAAC7B,GAAG,CAAC6B,iBAAiB,CAACC,QAAQ,CAACrC,iCAAiC,CAAC,EAAE;MACtEO,GAAG,CAAC6B,iBAAiB,CAACE,OAAO,CAACtC,iCAAiC,CAAC;IAClE;IACAE,yBAAyB,CACvBK,GAAG,CAAC6B,iBAAiB,EACrBhB,cAAc,EACdW,aACF,CAAC;EACH;EACA,MAAMQ,UAAU,GAAG7C,gBAAgB,CACjCa,GAAG,EACHgB,WAAW,EACXH,cAAc,EACdV,MAAM,CAACc,WAAW,CAChBd,MAAM,CAACI,OAAO,CAACN,aAAa,CAAC,CAACW,GAAG,CAAC,CAChC,CAACM,EAAE,EAAEC,IAAI,CAAC,KACP,CAACD,EAAE,EAAEC,IAAI,CAACc,QAAQ,IAAI,IAAI,CAAC,CAClC,CACF,CAAC;EACD,IAAIC,WAAW,GAAG,CAAC,CAAC;EACpB,MAAMC,QAAQ,GAAGhC,MAAM,CAACc,WAAW,CACjCd,MAAM,CAACI,OAAO,CAACP,GAAG,CAACoC,oBAAoB,IAAI,CAAC,CAAC,CAAC,CAACxB,GAAG,CAAC,CACjD,CAACM,EAAE,EAAEmB,KAAK,CAAC,KACR;IACH,IAAI3B,QAAQ,CAACoB,QAAQ,CAACZ,EAAE,CAAC,EAAE;MACzBgB,WAAW,GAAG;QACZ,GAAGA,WAAW;QACd,CAAChB,EAAE,GAAGlC,mBAAmB,CAACqD,KAAK;MACjC,CAAC;IACH;IACA,OAAO,CAACnB,EAAE,EAAEnC,oCAAoC,CAACsD,KAAK,CAAC,CAAC;EAC1D,CAAC,CACH,CAAC;EAED,OAAOjD,YAAY,CAAC;IAClBiB,OAAO,EAAEmB,aAAa;IACtBc,WAAW,EAAEtC,GAAG,CAACsC,WAAW,IACvB,UAAUtC,GAAG,CAACE,aAAa,CAACqC,eAAe,CAACD,WAAW,EAAE;IAC9DN,UAAU,EAAEA,UAAU;IACtBQ,MAAM,EAAExC,GAAG,CAACwC,MAAM,KAAKxC,GAAG,CAACE,aAAa,CAACsC,MAAM,CAAC/B,IAAI,KAAK,YAAY,GACjET,GAAG,CAACE,aAAa,CAACsC,MAAM,CAAC/B,IAAI,GAC7BT,GAAG,CAACE,aAAa,CAACsC,MAAM,CAAC;IAC7BC,QAAQ,EAAE;MACRC,sBAAsB,EAAE,CAAC1C,GAAG,CAACE,aAAa,CAACG,OAAO,CAAC;MACnDsC,mBAAmB,EAAE,EAAE;MACvBC,iBAAiB,EAAE,EAAE;MACrBC,UAAU,EAAE;IACd,CAAC;IACDC,KAAK,EAAE,CACL;MACErC,IAAI,EAAE,qBAAqB;MAC3BsC,mBAAmB,EAAE;QACnBC,gBAAgB,EAAEhD,GAAG,CAACE,aAAa,CAACG,OAAO;QAC3C4C,gCAAgC,EAAE,kCAAkC;QACpEC,oBAAoB,EAAE;UACpB,GAAG/C,MAAM,CAACc,WAAW,CACnBP,QAAQ,CAACE,GAAG,CACVM,EAAE,IAAI,CAACA,EAAE,EAAE;YACTT,IAAI,EAAE,aAAa;YACnB0C,WAAW,EAAEnD,GAAG,CAACoD,0BAA0B,GACvC9D,6BAA6B,CAACU,GAAG,EAAEkB,EAAE,CAAC,GACtCA;UACN,CAAC,CACH,CACF,CAAC;UACD,GAAGgB;QACL,CAAC;QACDmB,uBAAuB,EAAE;UACvB,GAAGlD,MAAM,CAACc,WAAW,CACnBX,yBAAyB,CACtBM,GAAG,CAAC,CAAC,CAACM,EAAE,EAAEH,KAAK,CAAC,KAAK,CACpBG,EAAE,EACF;YACET,IAAI,EAAE,gBAAgB;YACtB6C,cAAc,EAAE;cACd7C,IAAI,EAAE,aAAa;cACnB0C,WAAW,EAAEnD,GAAG,CAACoD,0BAA0B,GACvC9D,6BAA6B,CAACU,GAAG,EAAEkB,EAAE,CAAC,GACtCA;YACN;UACF,CAAC,CACF,CACL,CAAC;UACD,GAAGiB;QACL;MACF;IACF,CAAC,CACF;IACDN,iBAAiB,EAAE7B,GAAG,CAAC6B,iBAAiB,IACnC3C,8BAA8B,CAC/Bc,GAAG,EACHuD,KAAK,CAACC,IAAI,CAAC3C,cAAc,CAAC,EAC1BmB,UAAU,EACVvC,iCACF,CAAC;IACH,IAAIO,GAAG,CAACyD,qBAAqB,GACzB;MACAC,UAAU,EAAEzE,qBAAqB,CAC/Be,GAAG,CAACyD,qBAAqB,EACzBzB,UACF;IACF,CAAC,GACC,CAAC,CAAC,CAAC;IACP,IAAIhC,GAAG,CAAC2D,aAAa,IAAI;MAAEA,aAAa,EAAE3D,GAAG,CAAC2D;IAAc,CAAC,CAAC;IAC9D,IAAI3D,GAAG,CAAC4D,kBAAkB,IACrB;MAAEA,kBAAkB,EAAE5D,GAAG,CAAC4D;IAAmB,CAAC,CAAC;IACpD,IAAI5D,GAAG,CAAC6D,kBAAkB,IAAI;MAC5BC,gBAAgB,EAAE;QAChBC,KAAK,EAAE/D,GAAG,CAAC6D;MACb;IACF,CAAC,CAAC;IACF,IAAI7D,GAAG,CAACgE,QAAQ,IACX;MACDA,QAAQ,EAAE7D,MAAM,CAACc,WAAW,CAC1BjB,GAAG,CAACgE,QAAQ,CAACpD,GAAG,CAACqD,OAAO,IAAI,CAACA,OAAO,CAAC/C,EAAE,EAAE+C,OAAO,CAAC,CACnD;IACF,CAAC,CAAC;IACJ,IAAIjE,GAAG,CAACkE,kBAAkB,IACrB;MAAEA,kBAAkB,EAAElE,GAAG,CAACkE;IAAmB,CAAC,CAAC;IACpD,IAAIlE,GAAG,CAACmE,IAAI,IAAI;MAAEA,IAAI,EAAEnE,GAAG,CAACmE;IAAK,CAAC;EACpC,CAAC,CAAC;AACJ","ignoreList":[]}
@@ -17,9 +17,11 @@
17
17
  import invariant from "tiny-invariant";
18
18
  import { getObject } from "../conversion/toMarketplace/convertLink.js";
19
19
  import { OntologyEntityTypeEnum } from "./common/OntologyEntityTypeEnum.js";
20
- import { addNamespaceIfNone, importedTypes, namespace, ontologyDefinition, updateOntology } from "./defineOntology.js";
20
+ import { addNamespaceIfNone, importedTypes, namespace, ontologyDefinition, updateOntology, withoutNamespace } from "./defineOntology.js";
21
21
  import { getFlattenedInterfaceProperties } from "./interface/getFlattenedInterfaceProperties.js";
22
+ import { getInterfacePropertyTypeType, isInterfaceSharedPropertyType } from "./interface/InterfacePropertyType.js";
22
23
  import { isExotic } from "./properties/PropertyTypeType.js";
24
+
23
25
  // From https://stackoverflow.com/a/79288714
24
26
  const ISO_8601_DURATION = /^P(?!$)(?:(?:((?:\d+Y)|(?:\d+(?:\.|,)\d+Y$))?((?:\d+M)|(?:\d+(?:\.|,)\d+M$))?((?:\d+D)|(?:\d+(?:\.|,)\d+D$))?(T((?:\d+H)|(?:\d+(?:\.|,)\d+H$))?((?:\d+M)|(?:\d+(?:\.|,)\d+M$))?((?:\d+S)|(?:\d+(?:\.|,)\d+S$))?)?)|(?:\d+(?:(?:\.|,)\d+)?W))$/;
25
27
 
@@ -67,18 +69,19 @@ export function defineObject(objectDef) {
67
69
  !!isExotic(objectDef.properties?.[objectDef.primaryKeyPropertyApiName]?.type) ? process.env.NODE_ENV !== "production" ? invariant(false, `Primary key property ${objectDef.primaryKeyPropertyApiName} can only be primitive types`) : invariant(false) : void 0;
68
70
  objectDef.implementsInterfaces?.forEach(interfaceImpl => {
69
71
  const allInterfaceProperties = getFlattenedInterfaceProperties(interfaceImpl.implements);
70
- const nonExistentInterfaceProperties = interfaceImpl.propertyMapping.map(val => val.interfaceProperty).filter(interfaceProperty => allInterfaceProperties[addNamespaceIfNone(interfaceProperty)] === undefined).map(interfaceProp => ({
72
+ const nonExistentInterfaceProperties = interfaceImpl.propertyMapping.map(val => val.interfaceProperty).filter(interfaceProperty => allInterfaceProperties[addNamespaceIfNone(interfaceProperty)] === undefined && allInterfaceProperties[withoutNamespace(interfaceProperty)] === undefined).map(interfaceProp => ({
71
73
  type: "invalid",
72
74
  reason: `Interface property ${interfaceProp} referenced in ${objectDef.apiName} object does not exist`
73
75
  }));
74
- const interfaceToObjectProperties = Object.fromEntries(interfaceImpl.propertyMapping.map(mapping => [addNamespaceIfNone(mapping.interfaceProperty), mapping.mapsTo]));
76
+ const interfaceToObjectProperties = Object.fromEntries(interfaceImpl.propertyMapping.map(mapping => [mapping.interfaceProperty, mapping.mapsTo]));
75
77
  const validateProperty = interfaceProp => {
76
- if (interfaceProp[1].sharedPropertyType.apiName in interfaceToObjectProperties) {
77
- return validateInterfaceImplProperty(interfaceProp[1].sharedPropertyType, interfaceToObjectProperties[interfaceProp[0]], objectDef);
78
+ const apiName = isInterfaceSharedPropertyType(interfaceProp[1]) ? interfaceProp[1].sharedPropertyType.apiName : interfaceProp[0];
79
+ if (apiName in interfaceToObjectProperties) {
80
+ return validateInterfaceImplProperty(interfaceProp[1], apiName, interfaceToObjectProperties[interfaceProp[0]], objectDef);
78
81
  }
79
82
  return {
80
83
  type: "invalid",
81
- reason: `Interface property ${interfaceProp[1].sharedPropertyType.apiName} not implemented by ${objectDef.apiName} object definition`
84
+ reason: `Interface spt ${apiName} not implemented by ${objectDef.apiName} object definition`
82
85
  };
83
86
  };
84
87
  const validations = Object.entries(getFlattenedInterfaceProperties(interfaceImpl.implements)).map(validateProperty);
@@ -101,7 +104,7 @@ function formatValidationErrors(error) {
101
104
  }
102
105
 
103
106
  // Validate that the object and the interface property match up
104
- function validateInterfaceImplProperty(spt, mappedObjectProp, object) {
107
+ function validateInterfaceImplProperty(type, apiName, mappedObjectProp, object) {
105
108
  const objProp = object.properties?.[mappedObjectProp];
106
109
  if (objProp === undefined) {
107
110
  return {
@@ -109,10 +112,11 @@ function validateInterfaceImplProperty(spt, mappedObjectProp, object) {
109
112
  reason: `Object property mapped to interface does not exist. Object Property Mapped: ${mappedObjectProp}`
110
113
  };
111
114
  }
112
- if (JSON.stringify(spt.type) !== JSON.stringify(objProp?.type)) {
115
+ const propertyType = getInterfacePropertyTypeType(type);
116
+ if (JSON.stringify(propertyType) !== JSON.stringify(objProp?.type)) {
113
117
  return {
114
118
  type: "invalid",
115
- reason: `Object property type does not match the interface property it is mapped to. Interface Property: ${spt.apiName}, objectProperty: ${mappedObjectProp}`
119
+ reason: `Object property type does not match the interface property it is mapped to. Interface Property: ${apiName}, objectProperty: ${mappedObjectProp}`
116
120
  };
117
121
  }
118
122
  return {
@@ -158,12 +162,43 @@ function validateDerivedDatasource(objectDef, datasource) {
158
162
  validateAggregations(datasource, objectDef);
159
163
  }
160
164
  }
161
- function validateLinkedProperties(datasource) {
165
+
166
+ /**
167
+ * Gets properties for validation, handling self-referential links where
168
+ * the target object is the same as the object being defined (not yet in registry).
169
+ */
170
+ function getPropertiesForValidation(linkObject, objectDef) {
171
+ const targetApiName = typeof linkObject === "string" ? linkObject : linkObject.apiName;
172
+ const selfApiName = namespace + objectDef.apiName;
173
+
174
+ // Self-referential: use objectDef directly (not yet in registry)
175
+ if (targetApiName === selfApiName) {
176
+ return {
177
+ apiName: selfApiName,
178
+ hasProperty: propName => objectDef.properties?.[propName] !== undefined
179
+ };
180
+ }
181
+
182
+ // Non-self-referential: look up from registry
183
+ const {
184
+ apiName,
185
+ object
186
+ } = getObject(linkObject);
187
+ return {
188
+ apiName,
189
+ hasProperty: propName => object.properties?.find(p => p.apiName === propName) !== undefined
190
+ };
191
+ }
192
+ function validateLinkedProperties(datasource, objectDef) {
162
193
  const foreignProperties = Object.values(datasource.propertyMapping);
163
194
  // the foreign property must exist in the final object in the link chain
164
- const finalObject = getObject(datasource.linkDefinition.at(-1).linkType.toMany.object).object;
195
+ const targetObject = datasource.linkDefinition.at(-1).linkType.toMany.object;
196
+ const {
197
+ apiName,
198
+ hasProperty
199
+ } = getPropertiesForValidation(targetObject, objectDef);
165
200
  foreignProperties.forEach(prop => {
166
- !(finalObject.properties?.find(p => p.apiName === prop) !== undefined) ? process.env.NODE_ENV !== "production" ? invariant(false, `Property '${prop}' on object '${finalObject.apiName}' is not defined`) : invariant(false) : void 0;
201
+ !hasProperty(prop) ? process.env.NODE_ENV !== "production" ? invariant(false, `Property '${prop}' on object '${apiName}' is not defined`) : invariant(false) : void 0;
167
202
  });
168
203
  }
169
204
  function validateAggregations(datasource, objectDef) {
@@ -199,8 +234,12 @@ function validateAggregations(datasource, objectDef) {
199
234
  // if a foreign property is referenced, it must exist in the final object
200
235
  if (agg.type !== "count") {
201
236
  const foreignProperty = agg.property;
202
- const finalObject = getObject(datasource.linkDefinition.at(-1).linkType.toMany.object).object;
203
- !(finalObject.properties?.find(p => p.apiName === foreignProperty) !== undefined) ? process.env.NODE_ENV !== "production" ? invariant(false, `Property '${foreignProperty}' on object '${finalObject.apiName}' is not defined`) : invariant(false) : void 0;
237
+ const targetObject = datasource.linkDefinition.at(-1).linkType.toMany.object;
238
+ const {
239
+ apiName,
240
+ hasProperty
241
+ } = getPropertiesForValidation(targetObject, objectDef);
242
+ !hasProperty(foreignProperty) ? process.env.NODE_ENV !== "production" ? invariant(false, `Property '${foreignProperty}' on object '${apiName}' is not defined`) : invariant(false) : void 0;
204
243
  }
205
244
  });
206
245
  }