@osdk/maker 0.12.0-beta.8 → 0.12.0-rc.23

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 (59) hide show
  1. package/CHANGELOG.md +138 -0
  2. package/README.md +88 -62
  3. package/build/browser/api/defineAction.js +403 -106
  4. package/build/browser/api/defineAction.js.map +1 -1
  5. package/build/browser/api/defineLink.js +2 -2
  6. package/build/browser/api/defineLink.js.map +1 -1
  7. package/build/browser/api/defineObject.js +6 -2
  8. package/build/browser/api/defineObject.js.map +1 -1
  9. package/build/browser/api/defineOntology.js +80 -35
  10. package/build/browser/api/defineOntology.js.map +1 -1
  11. package/build/browser/api/defineSpt.js.map +1 -1
  12. package/build/browser/api/ontologyUtils.js +80 -0
  13. package/build/browser/api/ontologyUtils.js.map +1 -1
  14. package/build/browser/api/overall.test.js +4741 -2358
  15. package/build/browser/api/overall.test.js.map +1 -1
  16. package/build/browser/api/types.js +2 -0
  17. package/build/browser/api/types.js.map +1 -1
  18. package/build/browser/cli/main.js +2 -10
  19. package/build/browser/cli/main.js.map +1 -1
  20. package/build/browser/index.js +5 -4
  21. package/build/browser/index.js.map +1 -1
  22. package/build/cjs/index.cjs +575 -153
  23. package/build/cjs/index.cjs.map +1 -1
  24. package/build/cjs/index.d.cts +98 -20
  25. package/build/esm/api/defineAction.js +403 -106
  26. package/build/esm/api/defineAction.js.map +1 -1
  27. package/build/esm/api/defineLink.js +2 -2
  28. package/build/esm/api/defineLink.js.map +1 -1
  29. package/build/esm/api/defineObject.js +6 -2
  30. package/build/esm/api/defineObject.js.map +1 -1
  31. package/build/esm/api/defineOntology.js +80 -35
  32. package/build/esm/api/defineOntology.js.map +1 -1
  33. package/build/esm/api/defineSpt.js.map +1 -1
  34. package/build/esm/api/ontologyUtils.js +80 -0
  35. package/build/esm/api/ontologyUtils.js.map +1 -1
  36. package/build/esm/api/overall.test.js +4741 -2358
  37. package/build/esm/api/overall.test.js.map +1 -1
  38. package/build/esm/api/types.js +2 -0
  39. package/build/esm/api/types.js.map +1 -1
  40. package/build/esm/cli/main.js +2 -10
  41. package/build/esm/cli/main.js.map +1 -1
  42. package/build/esm/index.js +5 -4
  43. package/build/esm/index.js.map +1 -1
  44. package/build/types/api/defineAction.d.ts +7 -6
  45. package/build/types/api/defineAction.d.ts.map +1 -1
  46. package/build/types/api/defineObject.d.ts +2 -2
  47. package/build/types/api/defineObject.d.ts.map +1 -1
  48. package/build/types/api/defineOntology.d.ts +3 -2
  49. package/build/types/api/defineOntology.d.ts.map +1 -1
  50. package/build/types/api/defineSpt.d.ts +2 -2
  51. package/build/types/api/defineSpt.d.ts.map +1 -1
  52. package/build/types/api/ontologyUtils.d.ts +5 -2
  53. package/build/types/api/ontologyUtils.d.ts.map +1 -1
  54. package/build/types/api/types.d.ts +83 -12
  55. package/build/types/api/types.d.ts.map +1 -1
  56. package/build/types/cli/main.d.ts.map +1 -1
  57. package/build/types/index.d.ts +6 -5
  58. package/build/types/index.d.ts.map +1 -1
  59. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"defineAction.js","names":["consola","invariant","getAllInterfaceProperties","namespace","ontologyDefinition","updateOntology","convertConditionDefinition","OntologyEntityTypeEnum","defineCreateInterfaceObjectAction","interfaceType","objectType","validation","allProperties","Object","entries","filter","_","prop","isStruct","sharedPropertyType","type","length","info","apiName","defineAction","kebab","split","pop","undefined","displayName","displayMetadata","parameters","id","objectTypeReference","interfaceTypeRids","required","allowedValues","interfaceTypes","oneOf","label","value","objectTypeId","map","nonNameSpacedApiName","extractActionParameterType","typeClasses","array","listLength","extractAllowedValuesFromType","status","entities","affectedInterfaceTypes","affectedObjectTypes","affectedLinkTypes","typeGroups","rules","addInterfaceRule","interfaceApiName","objectTypeParameter","sharedPropertyValues","fromEntries","_prop","parameterId","convertValidationRule","defineCreateObjectAction","filteredProperties","properties","nullability","noEmptyCollections","min","noNulls","addObjectRule","propertyValues","p","structFieldValues","defineModifyInterfaceObjectAction","interfaceReference","interfaceTypeRid","modifyInterfaceRule","interfaceObjectToModifyParameter","defineModifyObjectAction","primaryKeyPropertyApiName","warn","objectReference","modifyObjectRule","objectToModify","defineDeleteObjectAction","deleteObjectRule","objectToDelete","actionDef","parameterIds","ACTION_TYPE","Error","test","process","env","NODE_ENV","parameterIdsSet","Set","size","parameterIdsNotFound","Array","from","referencedParameterIds","has","JSON","stringify","definedSectionIds","keys","sections","undefinedSectionsInOrdering","formContentOrdering","flatMap","s","sectionId","sId","forEach","rule","some","fullAction","__type","validateActionValidation","values","pId","add","item","sanitize","k","v","addOrModifyObjectRuleV2","staticValue","integer","max","markingType","pt","typeType","maybeAddList","isActionParameterTypePrimitive","includes","replace","toLowerCase","actionValidation","condition","failureMessage","action","seenParameterIds","param","conditionalOverrides","override","validateActionCondition","currentParameterId","overrideParamId","conditions","c"],"sources":["defineAction.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 { ParameterId } from \"@osdk/client.unstable\";\nimport { consola } from \"consola\";\nimport invariant from \"tiny-invariant\";\nimport { getAllInterfaceProperties } from \"./defineObject.js\";\nimport {\n namespace,\n ontologyDefinition,\n updateOntology,\n} from \"./defineOntology.js\";\nimport { convertConditionDefinition } from \"./ontologyUtils.js\";\nimport {\n type ActionLevelValidationDefinition,\n type ActionParameter,\n type ActionParameterAllowedValues,\n type ActionParameterType,\n type ActionParameterTypePrimitive,\n type ActionType,\n type ActionTypeDefinition,\n type ActionValidationRule,\n type ConditionDefinition,\n type InterfaceType,\n type ObjectPropertyType,\n type ObjectType,\n OntologyEntityTypeEnum,\n type PropertyTypeType,\n type PropertyTypeTypeStruct,\n type SharedPropertyType,\n} from \"./types.js\";\n\nexport function defineCreateInterfaceObjectAction(\n interfaceType: InterfaceType,\n objectType?: ObjectType,\n validation?: ActionLevelValidationDefinition,\n): ActionType {\n const allProperties = Object.entries(getAllInterfaceProperties(interfaceType))\n .filter(([_, prop]) => !isStruct(prop.sharedPropertyType.type));\n if (\n allProperties.length\n !== Object.entries(getAllInterfaceProperties(interfaceType)).length\n ) {\n consola.info(\n `Some properties on ${interfaceType.apiName} were skipped in the create action because they are structs`,\n );\n }\n return defineAction({\n apiName: `create-${\n kebab(interfaceType.apiName.split(\".\").pop() ?? interfaceType.apiName)\n }${\n objectType === undefined\n ? \"\"\n : `-${kebab(objectType.apiName.split(\".\").pop() ?? objectType.apiName)}`\n }`,\n displayName: `Create ${interfaceType.displayMetadata.displayName}`,\n parameters: [\n {\n id: \"objectTypeParameter\",\n displayName: \"Object type to create\",\n type: {\n type: \"objectTypeReference\",\n objectTypeReference: { interfaceTypeRids: [interfaceType.apiName] },\n },\n validation: {\n required: true,\n allowedValues: objectType === undefined\n ? {\n type: \"objectTypeReference\",\n interfaceTypes: [interfaceType.apiName],\n }\n : {\n type: \"oneOf\",\n oneOf: [{\n label: objectType.displayName,\n value: {\n type: \"objectType\",\n objectType: { objectTypeId: objectType.apiName },\n },\n }],\n },\n },\n },\n ...allProperties.map((\n [id, prop],\n ) => ({\n id,\n displayName: prop.sharedPropertyType.displayName\n ?? prop.sharedPropertyType.nonNameSpacedApiName,\n type: extractActionParameterType(prop.sharedPropertyType),\n typeClasses: prop.sharedPropertyType.typeClasses ?? [],\n validation: {\n required: (prop.sharedPropertyType.array ?? false)\n ? { listLength: {} }\n : prop.required,\n allowedValues: extractAllowedValuesFromType(\n prop.sharedPropertyType.type,\n ),\n },\n })),\n ],\n status: interfaceType.status.type !== \"deprecated\"\n ? interfaceType.status.type\n : interfaceType.status,\n entities: {\n affectedInterfaceTypes: [interfaceType.apiName],\n affectedObjectTypes: [],\n affectedLinkTypes: [],\n typeGroups: [],\n },\n rules: [\n {\n type: \"addInterfaceRule\",\n addInterfaceRule: {\n interfaceApiName: interfaceType.apiName,\n objectTypeParameter: \"objectTypeParameter\",\n sharedPropertyValues: Object.fromEntries(\n allProperties.map((\n [id, _prop],\n ) => [id, { type: \"parameterId\", parameterId: id }]),\n ),\n },\n },\n ],\n ...(validation\n ? {\n validation: [\n convertValidationRule(validation),\n ],\n }\n : {}),\n });\n}\n\nexport function defineCreateObjectAction(\n objectType: ObjectType,\n validation?: ActionLevelValidationDefinition,\n): ActionType {\n const filteredProperties =\n objectType.properties?.filter(prop => !isStruct(prop.type)) ?? [];\n if (\n filteredProperties.length !== (objectType.properties?.length ?? 0)\n ) {\n consola.info(\n `Some properties on ${objectType.apiName} were skipped in the create action because they are structs`,\n );\n }\n return defineAction({\n apiName: `create-object-${\n kebab(objectType.apiName.split(\".\").pop() ?? objectType.apiName)\n }`,\n displayName: `Create ${objectType.displayName}`,\n parameters: [\n ...filteredProperties.map(prop => ({\n id: prop.apiName,\n displayName: prop.displayName,\n type: extractActionParameterType(prop),\n typeClasses: prop.typeClasses ?? [],\n validation: {\n required: (prop.array ?? false)\n ? {\n listLength: prop.nullability?.noEmptyCollections\n ? { min: 1 }\n : {},\n }\n : prop.nullability?.noNulls ?? true,\n allowedValues: extractAllowedValuesFromType(prop.type),\n },\n })),\n ],\n status: \"active\",\n entities: {\n affectedInterfaceTypes: [],\n affectedObjectTypes: [objectType.apiName],\n affectedLinkTypes: [],\n typeGroups: [],\n },\n rules: [{\n type: \"addObjectRule\",\n addObjectRule: {\n objectTypeId: objectType.apiName,\n propertyValues: filteredProperties.length > 0\n ? Object.fromEntries(\n filteredProperties.map(\n p => [p.apiName, { type: \"parameterId\", parameterId: p.apiName }],\n ),\n )\n : {},\n structFieldValues: {},\n },\n }],\n ...(validation\n ? {\n validation: [\n convertValidationRule(validation),\n ],\n }\n : {}),\n });\n}\n\nexport function defineModifyInterfaceObjectAction(\n interfaceType: InterfaceType,\n objectType?: ObjectType,\n validation?: ActionLevelValidationDefinition,\n): ActionType {\n const allProperties = Object.entries(getAllInterfaceProperties(interfaceType))\n .filter(([_, prop]) => !isStruct(prop.sharedPropertyType.type));\n if (\n allProperties.length\n !== Object.entries(getAllInterfaceProperties(interfaceType)).length\n ) {\n consola.info(\n `Some properties on ${interfaceType.apiName} were skipped in the modify action because they are structs`,\n );\n }\n return defineAction({\n apiName: `modify-${\n kebab(interfaceType.apiName.split(\".\").pop() ?? interfaceType.apiName)\n }${\n objectType === undefined\n ? \"\"\n : `-${kebab(objectType.apiName.split(\".\").pop() ?? objectType.apiName)}`\n }`,\n displayName: `Modify ${interfaceType.displayMetadata.displayName}`,\n parameters: [\n {\n id: \"interfaceObjectToModifyParameter\",\n displayName: \"Object type to modify\",\n type: {\n type: \"interfaceReference\",\n interfaceReference: { interfaceTypeRid: interfaceType.apiName },\n },\n validation: {\n required: true,\n allowedValues: objectType === undefined\n ? { type: \"interfaceObjectQuery\" }\n : {\n type: \"oneOf\",\n oneOf: [{\n label: objectType.displayName,\n value: {\n type: \"objectType\",\n objectType: { objectTypeId: objectType.apiName },\n },\n }],\n },\n },\n },\n ...allProperties.map((\n [id, prop],\n ) => ({\n id,\n displayName: prop.sharedPropertyType.displayName\n ?? prop.sharedPropertyType.nonNameSpacedApiName,\n type: extractActionParameterType(prop.sharedPropertyType),\n typeClasses: prop.sharedPropertyType.typeClasses ?? [],\n validation: {\n required: (prop.sharedPropertyType.array ?? false)\n ? { listLength: {} }\n : prop.required,\n allowedValues: extractAllowedValuesFromType(\n prop.sharedPropertyType.type,\n ),\n },\n })),\n ],\n status: interfaceType.status.type !== \"deprecated\"\n ? interfaceType.status.type\n : interfaceType.status,\n entities: {\n affectedInterfaceTypes: [interfaceType.apiName],\n affectedObjectTypes: [],\n affectedLinkTypes: [],\n typeGroups: [],\n },\n rules: [\n {\n type: \"modifyInterfaceRule\",\n modifyInterfaceRule: {\n interfaceObjectToModifyParameter: \"interfaceObjectToModifyParameter\",\n sharedPropertyValues: Object.fromEntries(\n allProperties.map((\n [id, _prop],\n ) => [id, { type: \"parameterId\", parameterId: id }]),\n ),\n },\n },\n ],\n ...(validation\n ? {\n validation: [\n convertValidationRule(validation),\n ],\n }\n : {}),\n });\n}\n\nexport function defineModifyObjectAction(\n objectType: ObjectType,\n validation?: ActionLevelValidationDefinition,\n): ActionType {\n const properties = objectType.properties ?? [];\n\n const filteredProperties = properties.filter(\n prop =>\n !isStruct(prop.type)\n && prop.apiName !== objectType.primaryKeyPropertyApiName,\n );\n\n if (filteredProperties.length < properties.length) {\n consola.warn(\n `Some properties on ${objectType.apiName} were skipped in the modify action because they were structs, or were the object's primary key which cannot be edited.`,\n );\n }\n return defineAction({\n apiName: `modify-object-${\n kebab(objectType.apiName.split(\".\").pop() ?? objectType.apiName)\n }`,\n displayName: `Modify ${objectType.displayName}`,\n parameters: [\n {\n id: \"objectToModifyParameter\",\n displayName: \"Modify object\",\n type: {\n type: \"objectReference\",\n objectReference: { objectTypeId: objectType.apiName },\n },\n validation: {\n allowedValues: { type: \"objectQuery\" },\n required: true,\n },\n },\n ...filteredProperties.map(prop => ({\n id: prop.apiName,\n displayName: prop.displayName,\n type: extractActionParameterType(prop),\n typeClasses: prop.typeClasses ?? [],\n validation: {\n required: (prop.array ?? false)\n ? {\n listLength: prop.nullability?.noEmptyCollections\n ? { min: 1 }\n : {},\n }\n : prop.nullability?.noNulls ?? false,\n allowedValues: extractAllowedValuesFromType(prop.type),\n },\n })),\n ],\n status: \"active\",\n entities: {\n affectedInterfaceTypes: [],\n affectedObjectTypes: [objectType.apiName],\n affectedLinkTypes: [],\n typeGroups: [],\n },\n rules: [\n {\n type: \"modifyObjectRule\",\n modifyObjectRule: {\n objectToModify: \"objectToModifyParameter\",\n propertyValues: filteredProperties.length > 0\n ? Object.fromEntries(\n filteredProperties.map(\n p => [p.apiName, {\n type: \"parameterId\",\n parameterId: p.apiName,\n }],\n ),\n )\n : {},\n structFieldValues: {},\n },\n },\n ],\n ...(validation\n ? {\n validation: [\n convertValidationRule(validation),\n ],\n }\n : {}),\n });\n}\n\nexport function defineDeleteObjectAction(\n objectType: ObjectType,\n validation?: ActionLevelValidationDefinition,\n): ActionType {\n return defineAction({\n apiName: `delete-object-${\n kebab(objectType.apiName.split(\".\").pop() ?? objectType.apiName)\n }`,\n displayName: `Delete ${objectType.displayName}`,\n parameters: [\n {\n id: \"objectToDeleteParameter\",\n displayName: \"Delete object\",\n type: {\n type: \"objectReference\",\n objectReference: { objectTypeId: objectType.apiName },\n },\n validation: {\n required: true,\n allowedValues: { type: \"objectQuery\" },\n },\n },\n ],\n status: \"active\",\n entities: {\n affectedInterfaceTypes: [],\n affectedObjectTypes: [objectType.apiName],\n affectedLinkTypes: [],\n typeGroups: [],\n },\n rules: [\n {\n type: \"deleteObjectRule\",\n deleteObjectRule: {\n objectToDelete: \"objectToDeleteParameter\",\n },\n },\n ],\n ...(validation\n ? {\n validation: [\n convertValidationRule(validation),\n ],\n }\n : {}),\n });\n}\n\nexport function defineAction(actionDef: ActionTypeDefinition): ActionType {\n const apiName = namespace + actionDef.apiName;\n const parameterIds = (actionDef.parameters ?? []).map(p => p.id);\n\n if (\n ontologyDefinition[OntologyEntityTypeEnum.ACTION_TYPE][apiName]\n !== undefined\n ) {\n throw new Error(\n `Action type with apiName ${actionDef.apiName} is already defined`,\n );\n }\n invariant(\n /^[a-z0-9]+(-[a-z0-9]+)*$/.test(actionDef.apiName),\n `Action type apiName \"${actionDef.apiName}\" must be alphanumeric, lowercase, and kebab-case`,\n );\n\n const parameterIdsSet = new Set(parameterIds);\n invariant(\n parameterIdsSet.size === parameterIds.length,\n `Parameter ids must be unique`,\n );\n\n const parameterIdsNotFound = Array.from(referencedParameterIds(actionDef))\n .filter(p => !parameterIdsSet.has(p));\n invariant(\n parameterIdsNotFound.length === 0,\n `Parameters ${\n JSON.stringify(parameterIdsNotFound)\n } were referenced but not defined`,\n );\n\n const definedSectionIds = new Set(Object.keys(actionDef.sections ?? []));\n const undefinedSectionsInOrdering = (actionDef.formContentOrdering ?? [])\n .flatMap(\n s => s.type === \"parameterId\" ? [] : [s.sectionId],\n ).filter(sId => !definedSectionIds.has(sId));\n invariant(\n undefinedSectionsInOrdering.length === 0,\n `Sections [${undefinedSectionsInOrdering}] were referenced in content ordering but not defined`,\n );\n\n invariant(\n actionDef.rules.length > 0,\n `Action type ${actionDef.apiName} must have at least one logic rule`,\n );\n actionDef.rules.forEach(rule => {\n if (rule.type === \"modifyObjectRule\") {\n invariant(\n parameterIds.some(id => id === rule.modifyObjectRule.objectToModify),\n `Object to modify parameter must be defined in parameters`,\n );\n }\n if (rule.type === \"deleteObjectRule\") {\n invariant(\n parameterIds.some(id => id === rule.deleteObjectRule.objectToDelete),\n `Object to delete parameter must be defined in parameters`,\n );\n }\n });\n\n const fullAction = {\n ...actionDef,\n apiName: apiName,\n entities: actionDef.entities ?? {\n affectedInterfaceTypes: [],\n affectedObjectTypes: [],\n affectedLinkTypes: [],\n typeGroups: [],\n },\n __type: OntologyEntityTypeEnum.ACTION_TYPE,\n } as ActionType;\n validateActionValidation(fullAction);\n updateOntology(fullAction);\n return fullAction;\n}\n\nfunction referencedParameterIds(\n actionDef: ActionTypeDefinition,\n): Set<ParameterId> {\n const parameterIds: Set<ParameterId> = new Set();\n\n // section definitions\n Object.values(actionDef.sections ?? {})\n .flatMap(p => p).forEach(pId => parameterIds.add(pId));\n\n // form content ordering\n (actionDef.formContentOrdering ?? []).forEach(item => {\n if (item.type === \"parameterId\") {\n parameterIds.add(item.parameterId);\n }\n });\n\n // logic rules\n actionDef.rules.forEach(rule => {\n // when visiting each rule, we also do drive-by namespace prefixing\n switch (rule.type) {\n case \"addInterfaceRule\":\n rule.addInterfaceRule.interfaceApiName = sanitize(\n rule.addInterfaceRule.interfaceApiName,\n );\n parameterIds.add(rule.addInterfaceRule.objectTypeParameter);\n Object.entries(rule.addInterfaceRule.sharedPropertyValues).forEach(\n ([k, v]) => {\n if (v.type === \"parameterId\") {\n parameterIds.add(v.parameterId);\n }\n delete rule.addInterfaceRule.sharedPropertyValues[k];\n rule.addInterfaceRule.sharedPropertyValues[sanitize(k)] = v;\n },\n );\n break;\n case \"modifyInterfaceRule\":\n parameterIds.add(\n rule.modifyInterfaceRule.interfaceObjectToModifyParameter,\n );\n Object.entries(rule.modifyInterfaceRule.sharedPropertyValues).forEach(\n ([k, v]) => {\n if (v.type === \"parameterId\") {\n parameterIds.add(v.parameterId);\n }\n delete rule.modifyInterfaceRule.sharedPropertyValues[k];\n rule.modifyInterfaceRule.sharedPropertyValues[sanitize(k)] = v;\n },\n );\n break;\n case \"addObjectRule\":\n Object.entries(rule.addObjectRule.propertyValues).forEach(([k, v]) => {\n if (v.type === \"parameterId\") {\n parameterIds.add(v.parameterId);\n }\n });\n break;\n case \"modifyObjectRule\":\n Object.entries(rule.modifyObjectRule.propertyValues).forEach(\n ([k, v]) => {\n if (v.type === \"parameterId\") {\n parameterIds.add(v.parameterId);\n }\n },\n );\n break;\n case \"addOrModifyObjectRuleV2\":\n Object.entries(rule.addOrModifyObjectRuleV2.propertyValues).forEach(\n ([k, v]) => {\n if (v.type === \"parameterId\") {\n parameterIds.add(v.parameterId);\n }\n },\n );\n break;\n }\n });\n return parameterIds;\n}\n\nfunction extractAllowedValuesFromType(\n type: PropertyTypeType,\n): ActionParameterAllowedValues {\n switch (type) {\n case \"boolean\":\n return { type: \"boolean\" };\n case \"byte\":\n return {\n type: \"range\",\n min: {\n type: \"staticValue\",\n staticValue: { type: \"integer\", integer: 0 },\n },\n max: {\n type: \"staticValue\",\n staticValue: { type: \"integer\", integer: 255 },\n },\n };\n case \"timestamp\":\n case \"date\":\n return { type: \"datetime\" };\n case \"decimal\":\n case \"double\":\n case \"float\":\n case \"integer\":\n case \"long\":\n return { type: \"range\" };\n case \"short\":\n return {\n type: \"range\",\n min: {\n type: \"staticValue\",\n staticValue: { type: \"integer\", integer: 0 },\n },\n max: {\n type: \"staticValue\",\n staticValue: { type: \"integer\", integer: 65535 },\n },\n };\n case \"string\":\n return { type: \"text\" };\n case \"geopoint\":\n return { type: \"geohash\" };\n case \"geoshape\":\n return { type: \"geoshape\" };\n case \"mediaReference\":\n return { type: \"mediaReference\" };\n case \"geotimeSeries\":\n return { type: \"geotimeSeriesReference\" };\n default:\n switch (type.type) {\n case \"marking\":\n return type.markingType === \"CBAC\"\n ? { type: \"cbacMarking\" }\n : { type: \"mandatoryMarking\" };\n case \"struct\":\n throw new Error(\"Structs are not supported yet\");\n default:\n throw new Error(\"Unknown type\");\n }\n break;\n }\n}\n\nfunction extractActionParameterType(\n pt: SharedPropertyType | ObjectPropertyType,\n): ActionParameterType {\n const typeType = pt.type;\n if (typeof typeType === \"object\") {\n switch (typeType.type) {\n case \"marking\":\n return maybeAddList(\"marking\", pt);\n case \"struct\":\n throw new Error(\"Structs are not supported yet\");\n default:\n throw new Error(`Unknown type`);\n }\n }\n if (\n typeof typeType === \"string\" && isActionParameterTypePrimitive(typeType)\n ) {\n return maybeAddList(typeType, pt);\n }\n switch (typeType) {\n case \"byte\":\n case \"short\":\n return maybeAddList(\"integer\", pt);\n case \"geopoint\":\n return maybeAddList(\"geohash\", pt);\n case \"float\":\n return maybeAddList(\"double\", pt);\n case \"geotimeSeries\":\n return maybeAddList(\"geotimeSeriesReference\", pt);\n default:\n throw new Error(\"Unknown type\");\n }\n}\n\nfunction maybeAddList(\n type: ActionParameterTypePrimitive,\n pt: SharedPropertyType | ObjectPropertyType,\n): ActionParameterType {\n return ((pt.array ?? false) ? type + \"List\" : type) as ActionParameterType;\n}\n\nfunction isActionParameterTypePrimitive(\n type: string,\n): type is ActionParameterTypePrimitive {\n return [\n \"boolean\",\n \"booleanList\",\n \"integer\",\n \"integerList\",\n \"long\",\n \"longList\",\n \"double\",\n \"doubleList\",\n \"string\",\n \"stringList\",\n \"decimal\",\n \"decimalList\",\n \"timestamp\",\n \"timestampList\",\n \"geohash\",\n \"geohashList\",\n \"geoshape\",\n \"geoshapeList\",\n \"timeSeriesReference\",\n \"date\",\n \"dateList\",\n \"objectTypeReference\",\n \"objectReference\",\n \"attachment\",\n \"attachmentList\",\n \"marking\",\n \"markingList\",\n \"mediaReference\",\n \"mediaReferenceList\",\n \"geotimeSeriesReference\",\n \"geotimeSeriesReferenceList\",\n ].includes(type);\n}\n\nfunction isStruct(type: PropertyTypeType): type is PropertyTypeTypeStruct {\n return typeof type === \"object\" && type.type === \"struct\";\n}\n\nfunction kebab(s: string): string {\n return s\n .replace(/([a-z])([A-Z])/g, \"$1-$2\")\n .replace(/([A-Z])([A-Z][a-z])/g, \"$1-$2\")\n .replace(/\\./g, \"-\")\n .toLowerCase();\n}\n\nfunction sanitize(s: string): string {\n return s.includes(\".\") ? s : namespace + s;\n}\n\nfunction convertValidationRule(\n actionValidation: ActionLevelValidationDefinition,\n): ActionValidationRule {\n return {\n condition: convertConditionDefinition(actionValidation.condition),\n displayMetadata: actionValidation.displayMetadata ?? {\n failureMessage: \"Did not satisfy validation\",\n typeClasses: [],\n },\n };\n}\n\nfunction validateActionValidation(action: ActionType): void {\n const seenParameterIds = new Set<ParameterId>();\n action.parameters?.forEach(param => {\n param.validation.conditionalOverrides?.forEach(override => {\n validateActionCondition(\n override.condition,\n param.id,\n seenParameterIds,\n action.parameters,\n );\n });\n seenParameterIds.add(param.id);\n });\n}\n\nfunction validateActionCondition(\n condition: ConditionDefinition,\n currentParameterId: ParameterId,\n seenParameterIds: Set<ParameterId>,\n parameters?: ActionParameter[],\n): void {\n switch (condition.type) {\n case \"parameter\":\n const overrideParamId = condition.parameterId;\n invariant(\n parameters?.some(p => p.id === overrideParamId),\n `Parameter condition on ${currentParameterId} is referencing unknown parameter ${overrideParamId}`,\n );\n invariant(\n overrideParamId !== currentParameterId,\n `Parameter condition on ${currentParameterId} is referencing itself`,\n );\n invariant(\n seenParameterIds.has(overrideParamId),\n `Parameter condition on ${currentParameterId} is referencing later parameter ${overrideParamId}`,\n );\n break;\n case \"and\":\n // this will not catch the niche edge case where users use the full syntax for unions\n if (\"conditions\" in condition) {\n condition.conditions.forEach(c =>\n validateActionCondition(\n c,\n currentParameterId,\n seenParameterIds,\n parameters,\n )\n );\n }\n break;\n case \"or\":\n if (\"conditions\" in condition) {\n condition.conditions.forEach(c =>\n validateActionCondition(\n c,\n currentParameterId,\n seenParameterIds,\n parameters,\n )\n );\n }\n break;\n case \"comparison\":\n case \"group\":\n case \"not\":\n case \"markings\":\n case \"regex\":\n case \"redacted\":\n case \"true\":\n break;\n default:\n throw new Error(\n `Unknown condition type on parameter ${currentParameterId}`,\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"defineAction.js","names":["consola","invariant","convertToDisplayName","getAllInterfaceProperties","namespace","ontologyDefinition","updateOntology","convertConditionDefinition","convertMappingValue","CREATE_OR_MODIFY_OBJECT_PARAMETER","MODIFY_OBJECT_PARAMETER","OntologyEntityTypeEnum","defineCreateInterfaceObjectAction","interfaceType","objectType","validation","allProperties","Object","entries","filter","_","prop","isStruct","sharedPropertyType","type","length","info","apiName","defineAction","kebab","split","pop","undefined","displayName","displayMetadata","parameters","id","objectTypeReference","interfaceTypeRids","required","allowedValues","interfaceTypes","oneOf","label","value","objectTypeId","map","nonNameSpacedApiName","extractActionParameterType","typeClasses","array","listLength","extractAllowedValuesFromPropertyType","status","entities","affectedInterfaceTypes","affectedObjectTypes","affectedLinkTypes","typeGroups","rules","addInterfaceRule","interfaceApiName","objectTypeParameter","sharedPropertyValues","fromEntries","_prop","parameterId","convertValidationRule","defineCreateObjectAction","def","validateActionParameters","propertyParameters","keys","properties","nonParameterMappings","includes","excludedProperties","parameterNames","Set","parameterConfiguration","forEach","param","add","actionApiName","parameterOrdering","validateParameterOrdering","createParameters","mappings","addObjectRule","propertyValues","p","structFieldValues","createDefaultParameterOrdering","actionLevelValidation","defaultFormat","enableLayoutSwitch","displayAndFormat","sections","section","submissionMetadata","defineModifyInterfaceObjectAction","interfaceReference","interfaceTypeRid","modifyInterfaceRule","interfaceObjectToModifyParameter","defineModifyObjectAction","primaryKeyPropertyApiName","defaultValue","objectParameterPropertyValue","propertyTypeId","modifyObjectRule","objectToModify","defineDeleteObjectAction","objectReference","deleteObjectRule","objectToDelete","defineCreateOrModifyObjectAction","addOrModifyObjectRuleV2","actionDef","parameterIds","ACTION_TYPE","Error","test","process","env","NODE_ENV","parameterIdsSet","size","parameterIdsNotFound","Array","from","referencedParameterIds","has","JSON","stringify","definedSectionIds","undefinedSectionsInOrdering","formContentOrdering","flatMap","s","sectionId","sId","rule","some","fullAction","__type","validateActionConfiguration","parameterSet","defaultRequired","targetParam","name","push","description","delete","maybeCreateObjectOption","primaryKeyOption","autoGenerated","userInput","customParameterType","extractAllowedValuesFromActionParameterType","nullability","noEmptyCollections","min","noNulls","values","pId","item","sanitize","k","v","staticValue","integer","max","markingType","pt","typeType","maybeAddList","isActionParameterTypePrimitive","replace","toLowerCase","actionValidation","condition","failureMessage","action","seenParameterIds","parameterMap","reduce","acc","orderedParameters","conditionalOverrides","override","validateParameterCondition","validateParameterPrefill","currentParameterId","overrideParamId","conditions","c","find","priorityId","orderingSet","missingParameters","extraneousParameters"],"sources":["defineAction.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 OntologyIrParameterPrefill,\n ParameterId,\n} from \"@osdk/client.unstable\";\nimport { consola } from \"consola\";\nimport invariant from \"tiny-invariant\";\nimport {\n convertToDisplayName,\n getAllInterfaceProperties,\n} from \"./defineObject.js\";\nimport {\n namespace,\n ontologyDefinition,\n updateOntology,\n} from \"./defineOntology.js\";\nimport {\n convertConditionDefinition,\n convertMappingValue,\n} from \"./ontologyUtils.js\";\nimport {\n type ActionLevelValidationDefinition,\n type ActionParameter,\n type ActionParameterAllowedValues,\n type ActionParameterType,\n type ActionParameterTypePrimitive,\n type ActionType,\n type ActionTypeDefinition,\n type ActionTypeUserDefinition,\n type ActionValidationRule,\n type ConditionDefinition,\n CREATE_OR_MODIFY_OBJECT_PARAMETER,\n type InterfaceType,\n MODIFY_OBJECT_PARAMETER,\n type ObjectPropertyType,\n type ObjectPropertyTypeUserDefinition,\n type ObjectTypeDefinition,\n OntologyEntityTypeEnum,\n type PropertyTypeType,\n type PropertyTypeTypeStruct,\n type SharedPropertyType,\n} from \"./types.js\";\n\nexport function defineCreateInterfaceObjectAction(\n interfaceType: InterfaceType,\n objectType?: ObjectTypeDefinition,\n validation?: ActionLevelValidationDefinition,\n): ActionType {\n const allProperties = Object.entries(getAllInterfaceProperties(interfaceType))\n .filter(([_, prop]) => !isStruct(prop.sharedPropertyType.type));\n if (\n allProperties.length\n !== Object.entries(getAllInterfaceProperties(interfaceType)).length\n ) {\n consola.info(\n `Some properties on ${interfaceType.apiName} were skipped in the create action because they are structs`,\n );\n }\n return defineAction({\n apiName: `create-${\n kebab(interfaceType.apiName.split(\".\").pop() ?? interfaceType.apiName)\n }${\n objectType === undefined\n ? \"\"\n : `-${kebab(objectType.apiName.split(\".\").pop() ?? objectType.apiName)}`\n }`,\n displayName: `Create ${interfaceType.displayMetadata.displayName}`,\n parameters: [\n {\n id: \"objectTypeParameter\",\n displayName: \"Object type to create\",\n type: {\n type: \"objectTypeReference\",\n objectTypeReference: { interfaceTypeRids: [interfaceType.apiName] },\n },\n validation: {\n required: true,\n allowedValues: objectType === undefined\n ? {\n type: \"objectTypeReference\",\n interfaceTypes: [interfaceType.apiName],\n }\n : {\n type: \"oneOf\",\n oneOf: [{\n label: objectType.displayName,\n value: {\n type: \"objectType\",\n objectType: { objectTypeId: objectType.apiName },\n },\n }],\n },\n },\n },\n ...allProperties.map((\n [id, prop],\n ) => ({\n id,\n displayName: prop.sharedPropertyType.displayName\n ?? prop.sharedPropertyType.nonNameSpacedApiName,\n type: extractActionParameterType(prop.sharedPropertyType),\n typeClasses: prop.sharedPropertyType.typeClasses ?? [],\n validation: {\n required: (prop.sharedPropertyType.array ?? false)\n ? { listLength: {} }\n : prop.required,\n allowedValues: extractAllowedValuesFromPropertyType(\n prop.sharedPropertyType.type,\n ),\n },\n })),\n ],\n status: interfaceType.status.type !== \"deprecated\"\n ? interfaceType.status.type\n : interfaceType.status,\n entities: {\n affectedInterfaceTypes: [interfaceType.apiName],\n affectedObjectTypes: [],\n affectedLinkTypes: [],\n typeGroups: [],\n },\n rules: [\n {\n type: \"addInterfaceRule\",\n addInterfaceRule: {\n interfaceApiName: interfaceType.apiName,\n objectTypeParameter: \"objectTypeParameter\",\n sharedPropertyValues: Object.fromEntries(\n allProperties.map((\n [id, _prop],\n ) => [id, { type: \"parameterId\", parameterId: id }]),\n ),\n },\n },\n ],\n ...(validation\n ? {\n validation: [\n convertValidationRule(validation),\n ],\n }\n : {}),\n });\n}\n\nexport function defineCreateObjectAction(\n def: ActionTypeUserDefinition,\n): ActionType {\n validateActionParameters(def);\n const propertyParameters = Object.keys(def.objectType.properties ?? {})\n .filter(\n id =>\n !Object.keys(def.nonParameterMappings ?? {}).includes(id)\n && !def.excludedProperties?.includes(id)\n && !isStruct(def.objectType.properties?.[id].type!),\n );\n const parameterNames = new Set(propertyParameters);\n Object.keys(def.parameterConfiguration ?? {}).forEach(param =>\n parameterNames.add(param)\n );\n const actionApiName = def.apiName\n ?? `create-object-${\n kebab(def.objectType.apiName.split(\".\").pop() ?? def.objectType.apiName)\n }`;\n if (def.parameterOrdering) {\n validateParameterOrdering(\n def.parameterOrdering,\n parameterNames,\n actionApiName,\n );\n }\n const parameters = createParameters(def, parameterNames, true);\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 ?? `Create ${def.objectType.displayName}`,\n parameters: parameters,\n status: def.status ?? \"active\",\n entities: {\n affectedInterfaceTypes: [],\n affectedObjectTypes: [def.objectType.apiName],\n affectedLinkTypes: [],\n typeGroups: [],\n },\n rules: [{\n type: \"addObjectRule\",\n addObjectRule: {\n objectTypeId: def.objectType.apiName,\n propertyValues: {\n ...Object.fromEntries(\n propertyParameters.map(\n p => [p, { type: \"parameterId\", parameterId: p }],\n ),\n ),\n ...mappings,\n },\n structFieldValues: {},\n },\n }],\n parameterOrdering: def.parameterOrdering\n ?? createDefaultParameterOrdering(def, parameters),\n ...(def.actionLevelValidation\n ? {\n validation: [\n convertValidationRule(def.actionLevelValidation),\n ],\n }\n : {}),\n ...(def.defaultFormat && { defaultFormat: def.defaultFormat }),\n ...(def.enableLayoutSwitch\n && { enableLayoutSwitch: def.enableLayoutSwitch }),\n ...(def.displayAndFormat && { displayAndFormat: def.displayAndFormat }),\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 });\n}\n\nexport function defineModifyInterfaceObjectAction(\n interfaceType: InterfaceType,\n objectType?: ObjectTypeDefinition,\n validation?: ActionLevelValidationDefinition,\n): ActionType {\n const allProperties = Object.entries(getAllInterfaceProperties(interfaceType))\n .filter(([_, prop]) => !isStruct(prop.sharedPropertyType.type));\n if (\n allProperties.length\n !== Object.entries(getAllInterfaceProperties(interfaceType)).length\n ) {\n consola.info(\n `Some properties on ${interfaceType.apiName} were skipped in the modify action because they are structs`,\n );\n }\n return defineAction({\n apiName: `modify-${\n kebab(interfaceType.apiName.split(\".\").pop() ?? interfaceType.apiName)\n }${\n objectType === undefined\n ? \"\"\n : `-${kebab(objectType.apiName.split(\".\").pop() ?? objectType.apiName)}`\n }`,\n displayName: `Modify ${interfaceType.displayMetadata.displayName}`,\n parameters: [\n {\n id: \"interfaceObjectToModifyParameter\",\n displayName: \"Object type to modify\",\n type: {\n type: \"interfaceReference\",\n interfaceReference: { interfaceTypeRid: interfaceType.apiName },\n },\n validation: {\n required: true,\n allowedValues: objectType === undefined\n ? { type: \"interfaceObjectQuery\" }\n : {\n type: \"oneOf\",\n oneOf: [{\n label: objectType.displayName,\n value: {\n type: \"objectType\",\n objectType: { objectTypeId: objectType.apiName },\n },\n }],\n },\n },\n },\n ...allProperties.map((\n [id, prop],\n ) => ({\n id,\n displayName: prop.sharedPropertyType.displayName\n ?? prop.sharedPropertyType.nonNameSpacedApiName,\n type: extractActionParameterType(prop.sharedPropertyType),\n typeClasses: prop.sharedPropertyType.typeClasses ?? [],\n validation: {\n required: (prop.sharedPropertyType.array ?? false)\n ? { listLength: {} }\n : prop.required,\n allowedValues: extractAllowedValuesFromPropertyType(\n prop.sharedPropertyType.type,\n ),\n },\n })),\n ],\n status: interfaceType.status.type !== \"deprecated\"\n ? interfaceType.status.type\n : interfaceType.status,\n entities: {\n affectedInterfaceTypes: [interfaceType.apiName],\n affectedObjectTypes: [],\n affectedLinkTypes: [],\n typeGroups: [],\n },\n rules: [\n {\n type: \"modifyInterfaceRule\",\n modifyInterfaceRule: {\n interfaceObjectToModifyParameter: \"interfaceObjectToModifyParameter\",\n sharedPropertyValues: Object.fromEntries(\n allProperties.map((\n [id, _prop],\n ) => [id, { type: \"parameterId\", parameterId: id }]),\n ),\n },\n },\n ],\n ...(validation\n ? {\n validation: [\n convertValidationRule(validation),\n ],\n }\n : {}),\n });\n}\n\nexport function defineModifyObjectAction(\n def: ActionTypeUserDefinition,\n): ActionType {\n validateActionParameters(def);\n const propertyParameters = Object.keys(def.objectType.properties ?? {})\n .filter(\n id =>\n !Object.keys(def.nonParameterMappings ?? {}).includes(id)\n && !def.excludedProperties?.includes(id)\n && !isStruct(def.objectType.properties?.[id].type!)\n && id !== def.objectType.primaryKeyPropertyApiName,\n );\n const parameterNames = new Set(propertyParameters);\n Object.keys(def.parameterConfiguration ?? {}).forEach(param =>\n parameterNames.add(param)\n );\n parameterNames.add(MODIFY_OBJECT_PARAMETER);\n const actionApiName = def.apiName\n ?? `modify-object-${\n kebab(def.objectType.apiName.split(\".\").pop() ?? def.objectType.apiName)\n }`;\n if (def.parameterOrdering) {\n if (!def.parameterOrdering.includes(MODIFY_OBJECT_PARAMETER)) {\n def.parameterOrdering = [\n MODIFY_OBJECT_PARAMETER,\n ...def.parameterOrdering,\n ];\n }\n validateParameterOrdering(\n def.parameterOrdering,\n parameterNames,\n actionApiName,\n );\n }\n const parameters = createParameters(def, parameterNames, false);\n parameters.forEach(\n p => {\n if (p.id !== MODIFY_OBJECT_PARAMETER && p.defaultValue === undefined) {\n p.defaultValue = {\n type: \"objectParameterPropertyValue\",\n objectParameterPropertyValue: {\n parameterId: MODIFY_OBJECT_PARAMETER,\n propertyTypeId: p.id,\n },\n };\n }\n },\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 ?? `Modify ${def.objectType.displayName}`,\n parameters: parameters,\n status: def.status ?? \"active\",\n rules: [{\n type: \"modifyObjectRule\",\n modifyObjectRule: {\n objectToModify: MODIFY_OBJECT_PARAMETER,\n propertyValues: {\n ...Object.fromEntries(\n propertyParameters.map(\n p => [p, { type: \"parameterId\", parameterId: p }],\n ),\n ),\n ...mappings,\n },\n structFieldValues: {},\n },\n }],\n entities: {\n affectedInterfaceTypes: [],\n affectedObjectTypes: [def.objectType.apiName],\n affectedLinkTypes: [],\n typeGroups: [],\n },\n parameterOrdering: def.parameterOrdering\n ?? createDefaultParameterOrdering(\n def,\n parameters,\n MODIFY_OBJECT_PARAMETER,\n ),\n ...(def.actionLevelValidation\n ? {\n validation: [\n convertValidationRule(def.actionLevelValidation),\n ],\n }\n : {}),\n ...(def.defaultFormat && { defaultFormat: def.defaultFormat }),\n ...(def.enableLayoutSwitch\n && { enableLayoutSwitch: def.enableLayoutSwitch }),\n ...(def.displayAndFormat && { displayAndFormat: def.displayAndFormat }),\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 });\n}\n\nexport function defineDeleteObjectAction(\n def: ActionTypeUserDefinition,\n): ActionType {\n return defineAction({\n apiName: def.apiName\n ?? `delete-object-${\n kebab(def.objectType.apiName.split(\".\").pop() ?? def.objectType.apiName)\n }`,\n displayName: def.displayName ?? `Delete ${def.objectType.displayName}`,\n parameters: [\n {\n id: \"objectToDeleteParameter\",\n displayName: \"Delete object\",\n type: {\n type: \"objectReference\",\n objectReference: { objectTypeId: def.objectType.apiName },\n },\n validation: {\n required: true,\n allowedValues: { type: \"objectQuery\" },\n },\n },\n ],\n status: def.status ?? \"active\",\n rules: [{\n type: \"deleteObjectRule\",\n deleteObjectRule: {\n objectToDelete: \"objectToDeleteParameter\",\n },\n }],\n entities: {\n affectedInterfaceTypes: [],\n affectedObjectTypes: [def.objectType.apiName],\n affectedLinkTypes: [],\n typeGroups: [],\n },\n ...(def.actionLevelValidation\n ? {\n validation: [\n convertValidationRule(def.actionLevelValidation),\n ],\n }\n : {}),\n });\n}\n\nexport function defineCreateOrModifyObjectAction(\n def: ActionTypeUserDefinition,\n): ActionType {\n validateActionParameters(def);\n const propertyParameters = Object.keys(def.objectType.properties ?? {})\n .filter(\n id =>\n !Object.keys(def.nonParameterMappings ?? {}).includes(id)\n && !def.excludedProperties?.includes(id)\n && !isStruct(def.objectType.properties?.[id].type!)\n && id !== def.objectType.primaryKeyPropertyApiName,\n );\n const parameterNames = new Set(propertyParameters);\n Object.keys(def.parameterConfiguration ?? {}).forEach(param =>\n parameterNames.add(param)\n );\n parameterNames.add(CREATE_OR_MODIFY_OBJECT_PARAMETER);\n const actionApiName = def.apiName\n ?? `create-or-modify-${\n kebab(def.objectType.apiName.split(\".\").pop() ?? def.objectType.apiName)\n }`;\n if (def.parameterOrdering) {\n if (!def.parameterOrdering.includes(CREATE_OR_MODIFY_OBJECT_PARAMETER)) {\n def.parameterOrdering = [\n CREATE_OR_MODIFY_OBJECT_PARAMETER,\n ...def.parameterOrdering,\n ];\n }\n validateParameterOrdering(\n def.parameterOrdering,\n parameterNames,\n actionApiName,\n );\n }\n const parameters = createParameters(def, parameterNames, false);\n parameters.forEach(\n p => {\n if (\n p.id !== CREATE_OR_MODIFY_OBJECT_PARAMETER\n && p.defaultValue === undefined\n ) {\n p.defaultValue = {\n type: \"objectParameterPropertyValue\",\n objectParameterPropertyValue: {\n parameterId: CREATE_OR_MODIFY_OBJECT_PARAMETER,\n propertyTypeId: p.id,\n },\n };\n }\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 or Modify ${def.objectType.displayName}`,\n parameters: parameters,\n status: def.status ?? \"active\",\n rules: [{\n type: \"addOrModifyObjectRuleV2\",\n addOrModifyObjectRuleV2: {\n objectToModify: CREATE_OR_MODIFY_OBJECT_PARAMETER,\n propertyValues: {\n ...Object.fromEntries(\n propertyParameters.map(\n p => [p, { type: \"parameterId\", parameterId: p }],\n ),\n ),\n ...mappings,\n },\n structFieldValues: {},\n },\n }],\n entities: {\n affectedInterfaceTypes: [],\n affectedObjectTypes: [def.objectType.apiName],\n affectedLinkTypes: [],\n typeGroups: [],\n },\n parameterOrdering: def.parameterOrdering\n ?? createDefaultParameterOrdering(\n def,\n parameters,\n CREATE_OR_MODIFY_OBJECT_PARAMETER,\n ),\n ...(def.actionLevelValidation\n ? {\n validation: [\n convertValidationRule(def.actionLevelValidation),\n ],\n }\n : {}),\n ...(def.defaultFormat && { defaultFormat: def.defaultFormat }),\n ...(def.enableLayoutSwitch\n && { enableLayoutSwitch: def.enableLayoutSwitch }),\n ...(def.displayAndFormat && { displayAndFormat: def.displayAndFormat }),\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 });\n}\n\nexport function defineAction(actionDef: ActionTypeDefinition): ActionType {\n const apiName = namespace + actionDef.apiName;\n const parameterIds = (actionDef.parameters ?? []).map(p => p.id);\n\n if (\n ontologyDefinition[OntologyEntityTypeEnum.ACTION_TYPE][apiName]\n !== undefined\n ) {\n throw new Error(\n `Action type with apiName ${actionDef.apiName} is already defined`,\n );\n }\n invariant(\n /^[a-z0-9]+(-[a-z0-9]+)*$/.test(actionDef.apiName),\n `Action type apiName \"${actionDef.apiName}\" must be alphanumeric, lowercase, and kebab-case`,\n );\n\n const parameterIdsSet = new Set(parameterIds);\n invariant(\n parameterIdsSet.size === parameterIds.length,\n `Parameter ids must be unique`,\n );\n\n const parameterIdsNotFound = Array.from(referencedParameterIds(actionDef))\n .filter(p => !parameterIdsSet.has(p));\n invariant(\n parameterIdsNotFound.length === 0,\n `Parameters ${\n JSON.stringify(parameterIdsNotFound)\n } were referenced but not defined`,\n );\n\n const definedSectionIds = new Set(Object.keys(actionDef.sections ?? []));\n const undefinedSectionsInOrdering = (actionDef.formContentOrdering ?? [])\n .flatMap(\n s => s.type === \"parameterId\" ? [] : [s.sectionId],\n ).filter(sId => !definedSectionIds.has(sId));\n invariant(\n undefinedSectionsInOrdering.length === 0,\n `Sections [${undefinedSectionsInOrdering}] were referenced in content ordering but not defined`,\n );\n\n invariant(\n actionDef.rules.length > 0,\n `Action type ${actionDef.apiName} must have at least one logic rule`,\n );\n actionDef.rules.forEach(rule => {\n if (rule.type === \"modifyObjectRule\") {\n invariant(\n parameterIds.some(id => id === rule.modifyObjectRule.objectToModify),\n `Object to modify parameter must be defined in parameters`,\n );\n }\n if (rule.type === \"deleteObjectRule\") {\n invariant(\n parameterIds.some(id => id === rule.deleteObjectRule.objectToDelete),\n `Object to delete parameter must be defined in parameters`,\n );\n }\n });\n\n const fullAction = {\n ...actionDef,\n apiName: apiName,\n entities: actionDef.entities ?? {\n affectedInterfaceTypes: [],\n affectedObjectTypes: [],\n affectedLinkTypes: [],\n typeGroups: [],\n },\n __type: OntologyEntityTypeEnum.ACTION_TYPE,\n } as ActionType;\n validateActionConfiguration(fullAction);\n updateOntology(fullAction);\n return fullAction;\n}\n\nfunction createParameters(\n def: ActionTypeUserDefinition,\n parameterSet: Set<string>,\n defaultRequired: boolean,\n): Array<ActionParameter> {\n const targetParam: Array<ActionParameter> = [];\n parameterSet.forEach(name => {\n if (name === MODIFY_OBJECT_PARAMETER) {\n targetParam.push({\n id: MODIFY_OBJECT_PARAMETER,\n displayName: def.parameterConfiguration?.[name]?.displayName\n ?? \"Modify object\",\n type: {\n type: \"objectReference\",\n objectReference: { objectTypeId: def.objectType.apiName },\n },\n validation: {\n ...def.parameterConfiguration?.[name],\n allowedValues: { type: \"objectQuery\" },\n required: def.parameterConfiguration?.[name]?.required ?? true,\n },\n defaultValue: def.parameterConfiguration?.[name]?.defaultValue,\n description: def.parameterConfiguration?.[name]?.description,\n });\n parameterSet.delete(MODIFY_OBJECT_PARAMETER);\n }\n if (name === CREATE_OR_MODIFY_OBJECT_PARAMETER) {\n targetParam.push({\n id: CREATE_OR_MODIFY_OBJECT_PARAMETER,\n displayName: def.parameterConfiguration?.[name]?.displayName\n ?? \"Create or modify object\",\n type: {\n type: \"objectReference\",\n objectReference: {\n objectTypeId: def.objectType.apiName,\n maybeCreateObjectOption:\n !def.primaryKeyOption || def.primaryKeyOption === \"autoGenerated\"\n ? {\n type: \"autoGenerated\",\n autoGenerated: {},\n }\n : {\n type: \"userInput\",\n userInput: {},\n },\n },\n },\n validation: {\n ...def.parameterConfiguration?.[name],\n allowedValues: { type: \"objectQuery\" },\n required: def.parameterConfiguration?.[name]?.required ?? true,\n },\n defaultValue: def.parameterConfiguration?.[name]?.defaultValue,\n description: def.parameterConfiguration?.[name]?.description,\n });\n parameterSet.delete(CREATE_OR_MODIFY_OBJECT_PARAMETER);\n }\n });\n return [\n ...targetParam,\n ...Array.from(parameterSet).map(\n id => (\n {\n id,\n displayName: def.parameterConfiguration?.[id]?.displayName\n ?? def.objectType.properties?.[id]?.displayName\n ?? convertToDisplayName(id),\n type: def.parameterConfiguration?.[id]?.customParameterType\n ?? extractActionParameterType(def.objectType.properties?.[id]!),\n validation: (def.parameterConfiguration?.[id] !== undefined)\n ? {\n ...def.parameterConfiguration?.[id],\n allowedValues: def.parameterConfiguration?.[id].allowedValues\n ?? (def.parameterConfiguration?.[id].customParameterType\n ? extractAllowedValuesFromActionParameterType(\n def.parameterConfiguration?.[id].customParameterType,\n )\n : extractAllowedValuesFromPropertyType(\n def.objectType.properties?.[id].type!,\n )),\n required: def.parameterConfiguration?.[id].required\n ?? defaultRequired,\n }\n : {\n required: (def.objectType.properties?.[id].array ?? false)\n ? {\n listLength: def.objectType.properties?.[id].nullability\n ?.noEmptyCollections\n ? { min: 1 }\n : {},\n }\n : def.objectType.properties?.[id].nullability?.noNulls\n ?? defaultRequired,\n allowedValues: extractAllowedValuesFromPropertyType(\n def.objectType.properties?.[id].type!,\n ),\n },\n defaultValue: def.parameterConfiguration?.[id]?.defaultValue,\n description: def.parameterConfiguration?.[id]?.description,\n }\n ),\n ),\n ];\n}\n\nfunction referencedParameterIds(\n actionDef: ActionTypeDefinition,\n): Set<ParameterId> {\n const parameterIds: Set<ParameterId> = new Set();\n\n // section definitions\n Object.values(actionDef.sections ?? {})\n .flatMap(p => p.parameters).forEach(pId => parameterIds.add(pId));\n\n // form content ordering\n (actionDef.formContentOrdering ?? []).forEach(item => {\n if (item.type === \"parameterId\") {\n parameterIds.add(item.parameterId);\n }\n });\n\n // logic rules\n actionDef.rules.forEach(rule => {\n // when visiting each rule, we also do drive-by namespace prefixing\n switch (rule.type) {\n case \"addInterfaceRule\":\n rule.addInterfaceRule.interfaceApiName = sanitize(\n rule.addInterfaceRule.interfaceApiName,\n );\n parameterIds.add(rule.addInterfaceRule.objectTypeParameter);\n Object.entries(rule.addInterfaceRule.sharedPropertyValues).forEach(\n ([k, v]) => {\n if (v.type === \"parameterId\") {\n parameterIds.add(v.parameterId);\n }\n delete rule.addInterfaceRule.sharedPropertyValues[k];\n rule.addInterfaceRule.sharedPropertyValues[sanitize(k)] = v;\n },\n );\n break;\n case \"modifyInterfaceRule\":\n parameterIds.add(\n rule.modifyInterfaceRule.interfaceObjectToModifyParameter,\n );\n Object.entries(rule.modifyInterfaceRule.sharedPropertyValues).forEach(\n ([k, v]) => {\n if (v.type === \"parameterId\") {\n parameterIds.add(v.parameterId);\n }\n delete rule.modifyInterfaceRule.sharedPropertyValues[k];\n rule.modifyInterfaceRule.sharedPropertyValues[sanitize(k)] = v;\n },\n );\n break;\n case \"addObjectRule\":\n Object.entries(rule.addObjectRule.propertyValues).forEach(([k, v]) => {\n if (v.type === \"parameterId\") {\n parameterIds.add(v.parameterId);\n }\n });\n break;\n case \"modifyObjectRule\":\n Object.entries(rule.modifyObjectRule.propertyValues).forEach(\n ([k, v]) => {\n if (v.type === \"parameterId\") {\n parameterIds.add(v.parameterId);\n }\n },\n );\n break;\n case \"addOrModifyObjectRuleV2\":\n Object.entries(rule.addOrModifyObjectRuleV2.propertyValues).forEach(\n ([k, v]) => {\n if (v.type === \"parameterId\") {\n parameterIds.add(v.parameterId);\n }\n },\n );\n break;\n }\n });\n return parameterIds;\n}\n\nfunction extractAllowedValuesFromActionParameterType(\n type: ActionParameterType,\n): ActionParameterAllowedValues {\n if (typeof type === \"object\") {\n switch (type.type) {\n case \"objectReference\":\n case \"objectReferenceList\":\n return { type: \"objectQuery\" };\n case \"struct\":\n case \"structList\":\n throw new Error(\"Structs are not supported yet\");\n default:\n throw new Error(\n `Inferred allowed values for ${type.type} not yet supported. Please explicitly provide allowed values.`,\n );\n }\n }\n switch (type) {\n case \"boolean\":\n case \"booleanList\":\n return { type: \"boolean\" };\n case \"integer\":\n case \"integerList\":\n case \"decimal\":\n case \"decimalList\":\n case \"double\":\n case \"doubleList\":\n case \"long\":\n case \"longList\":\n return { type: \"range\" };\n case \"timestamp\":\n case \"timestampList\":\n case \"date\":\n case \"dateList\":\n return { type: \"datetime\" };\n case \"string\":\n case \"stringList\":\n return { type: \"text\" };\n case \"geohash\":\n case \"geohashList\":\n return { type: \"geohash\" };\n case \"geoshape\":\n case \"geoshapeList\":\n return { type: \"geoshape\" };\n case \"mediaReference\":\n case \"mediaReferenceList\":\n return { type: \"mediaReference\" };\n case \"geotimeSeriesReference\":\n case \"geotimeSeriesReferenceList\":\n return { type: \"geotimeSeriesReference\" };\n case \"attachment\":\n case \"attachmentList\":\n return { type: \"attachment\" };\n default:\n throw new Error(\n `Inferred allowed values for ${type} not yet supported. Please explicitly provide allowed values.`,\n );\n }\n}\n\nfunction extractAllowedValuesFromPropertyType(\n type: PropertyTypeType,\n): ActionParameterAllowedValues {\n switch (type) {\n case \"boolean\":\n return { type: \"boolean\" };\n case \"byte\":\n return {\n type: \"range\",\n min: {\n type: \"staticValue\",\n staticValue: { type: \"integer\", integer: 0 },\n },\n max: {\n type: \"staticValue\",\n staticValue: { type: \"integer\", integer: 255 },\n },\n };\n case \"timestamp\":\n case \"date\":\n return { type: \"datetime\" };\n case \"decimal\":\n case \"double\":\n case \"float\":\n case \"integer\":\n case \"long\":\n return { type: \"range\" };\n case \"short\":\n return {\n type: \"range\",\n min: {\n type: \"staticValue\",\n staticValue: { type: \"integer\", integer: 0 },\n },\n max: {\n type: \"staticValue\",\n staticValue: { type: \"integer\", integer: 65535 },\n },\n };\n case \"string\":\n return { type: \"text\" };\n case \"geopoint\":\n return { type: \"geohash\" };\n case \"geoshape\":\n return { type: \"geoshape\" };\n case \"mediaReference\":\n return { type: \"mediaReference\" };\n case \"geotimeSeries\":\n return { type: \"geotimeSeriesReference\" };\n default:\n switch (type.type) {\n case \"marking\":\n return type.markingType === \"CBAC\"\n ? { type: \"cbacMarking\" }\n : { type: \"mandatoryMarking\" };\n case \"string\":\n return { type: \"text\" };\n case \"struct\":\n throw new Error(\"Structs are not supported yet\");\n default:\n throw new Error(\"Unknown type\");\n }\n break;\n }\n}\n\nfunction extractActionParameterType(\n pt:\n | SharedPropertyType\n | ObjectPropertyType\n | ObjectPropertyTypeUserDefinition,\n): ActionParameterType {\n const typeType = pt.type;\n if (typeof typeType === \"object\") {\n switch (typeType.type) {\n case \"marking\":\n return maybeAddList(\"marking\", pt);\n case \"string\":\n return maybeAddList(\"string\", pt);\n case \"struct\":\n throw new Error(\"Structs are not supported yet\");\n default:\n throw new Error(`Unknown type`);\n }\n }\n if (\n typeof typeType === \"string\" && isActionParameterTypePrimitive(typeType)\n ) {\n return maybeAddList(typeType, pt);\n }\n switch (typeType) {\n case \"byte\":\n case \"short\":\n return maybeAddList(\"integer\", pt);\n case \"geopoint\":\n return maybeAddList(\"geohash\", pt);\n case \"float\":\n return maybeAddList(\"double\", pt);\n case \"geotimeSeries\":\n return maybeAddList(\"geotimeSeriesReference\", pt);\n default:\n throw new Error(\"Unknown type\");\n }\n}\n\nfunction maybeAddList(\n type: ActionParameterTypePrimitive,\n pt:\n | SharedPropertyType\n | ObjectPropertyType\n | ObjectPropertyTypeUserDefinition,\n): ActionParameterType {\n return ((pt.array ?? false) ? type + \"List\" : type) as ActionParameterType;\n}\n\nfunction isActionParameterTypePrimitive(\n type: string,\n): type is ActionParameterTypePrimitive {\n return [\n \"boolean\",\n \"booleanList\",\n \"integer\",\n \"integerList\",\n \"long\",\n \"longList\",\n \"double\",\n \"doubleList\",\n \"string\",\n \"stringList\",\n \"decimal\",\n \"decimalList\",\n \"timestamp\",\n \"timestampList\",\n \"geohash\",\n \"geohashList\",\n \"geoshape\",\n \"geoshapeList\",\n \"timeSeriesReference\",\n \"date\",\n \"dateList\",\n \"objectTypeReference\",\n \"objectReference\",\n \"attachment\",\n \"attachmentList\",\n \"marking\",\n \"markingList\",\n \"mediaReference\",\n \"mediaReferenceList\",\n \"geotimeSeriesReference\",\n \"geotimeSeriesReferenceList\",\n ].includes(type);\n}\n\nfunction isStruct(type: PropertyTypeType): type is PropertyTypeTypeStruct {\n return typeof type === \"object\" && type.type === \"struct\";\n}\n\nfunction kebab(s: string): string {\n return s\n .replace(/([a-z])([A-Z])/g, \"$1-$2\")\n .replace(/([A-Z])([A-Z][a-z])/g, \"$1-$2\")\n .replace(/\\./g, \"-\")\n .toLowerCase();\n}\n\nfunction sanitize(s: string): string {\n return s.includes(\".\") ? s : namespace + s;\n}\n\nfunction convertValidationRule(\n actionValidation: ActionLevelValidationDefinition,\n): ActionValidationRule {\n return {\n condition: convertConditionDefinition(actionValidation.condition),\n displayMetadata: actionValidation.displayMetadata ?? {\n failureMessage: \"Did not satisfy validation\",\n typeClasses: [],\n },\n };\n}\n\nfunction validateActionConfiguration(action: ActionType): void {\n const seenParameterIds = new Set<ParameterId>();\n const parameterMap: Record<string, ActionParameter> =\n action.parameters?.reduce((acc, param) => {\n acc[param.id] = param;\n return acc;\n }, {} as Record<string, ActionParameter>) ?? {};\n const orderedParameters =\n action.parameterOrdering?.map(id => parameterMap[id]) ?? action.parameters;\n\n orderedParameters?.forEach(param => {\n param.validation.conditionalOverrides?.forEach(override => {\n validateParameterCondition(\n override.condition,\n param.id,\n seenParameterIds,\n action.parameters,\n );\n });\n validateParameterPrefill(\n param.id,\n seenParameterIds,\n action.parameters,\n param.defaultValue,\n );\n seenParameterIds.add(param.id);\n });\n}\n\nfunction validateParameterCondition(\n condition: ConditionDefinition,\n currentParameterId: ParameterId,\n seenParameterIds: Set<ParameterId>,\n parameters?: ActionParameter[],\n): void {\n switch (condition.type) {\n case \"parameter\":\n const overrideParamId = condition.parameterId;\n invariant(\n parameters?.some(p => p.id === overrideParamId),\n `Parameter condition on ${currentParameterId} is referencing unknown parameter ${overrideParamId}`,\n );\n invariant(\n overrideParamId !== currentParameterId,\n `Parameter condition on ${currentParameterId} is referencing itself`,\n );\n invariant(\n seenParameterIds.has(overrideParamId),\n `Parameter condition on ${currentParameterId} is referencing later parameter ${overrideParamId}`,\n );\n break;\n case \"and\":\n // this will not catch the niche edge case where users use the full syntax for unions\n if (\"conditions\" in condition) {\n condition.conditions.forEach(c =>\n validateParameterCondition(\n c,\n currentParameterId,\n seenParameterIds,\n parameters,\n )\n );\n }\n break;\n case \"or\":\n if (\"conditions\" in condition) {\n condition.conditions.forEach(c =>\n validateParameterCondition(\n c,\n currentParameterId,\n seenParameterIds,\n parameters,\n )\n );\n }\n break;\n case \"comparison\":\n case \"group\":\n case \"not\":\n case \"markings\":\n case \"regex\":\n case \"redacted\":\n case \"true\":\n break;\n default:\n throw new Error(\n `Unknown condition type on parameter ${currentParameterId}`,\n );\n }\n}\n\nfunction validateParameterPrefill(\n currentParameterId: ParameterId,\n seenParameterIds: Set<ParameterId>,\n parameters?: ActionParameter[],\n defaultValue?: OntologyIrParameterPrefill,\n): void {\n if (!defaultValue) return;\n switch (defaultValue.type) {\n case \"objectParameterPropertyValue\":\n invariant(\n parameters?.some(p =>\n p.id === defaultValue.objectParameterPropertyValue.parameterId\n ),\n `Default value for parameter ${currentParameterId} is referencing unknown parameter ${defaultValue.objectParameterPropertyValue.parameterId}`,\n );\n invariant(\n seenParameterIds.has(\n defaultValue.objectParameterPropertyValue.parameterId,\n ),\n `Default value for parameter ${currentParameterId} is referencing later parameter ${defaultValue.objectParameterPropertyValue.parameterId}`,\n );\n break;\n case \"staticValue\":\n invariant(\n defaultValue.staticValue.type\n === parameters?.find(p => p.id === currentParameterId)?.type,\n `Default static value for parameter ${currentParameterId} does not match type`,\n );\n break;\n case \"staticObject\":\n case \"interfaceParameterPropertyValue\":\n case \"objectQueryPrefill\":\n case \"objectQueryPropertyValue\":\n case \"objectSetRidPrefill\":\n case \"redacted\":\n break;\n default:\n throw new Error(\n `Unknown default value type for parameter ${currentParameterId}`,\n );\n }\n}\n\nfunction validateActionParameters(def: ActionTypeUserDefinition): void {\n // validates that parameters either exist as object properties or have a type defined\n [\n ...Object.keys(def.parameterConfiguration ?? {}),\n ].forEach(id => {\n invariant(\n def.objectType.properties?.[id] !== undefined\n || (def.parameterConfiguration?.[id].customParameterType !== undefined)\n || id === MODIFY_OBJECT_PARAMETER\n || id === CREATE_OR_MODIFY_OBJECT_PARAMETER,\n `Parameter ${id} does not exist as a property on ${def.objectType.apiName} and its type is not explicitly defined`,\n );\n });\n [\n ...Object.keys(def.nonParameterMappings ?? {}),\n ...def.excludedProperties ?? [],\n ].forEach(id => {\n invariant(\n def.objectType.properties?.[id] !== undefined,\n `Property ${id} does not exist as a property on ${def.objectType.apiName}`,\n );\n });\n}\n\n// Parameters with configurations will be ordered first in the order they were defined\n// followed by the rest of the parameters in the order they were defined on the object type\nfunction createDefaultParameterOrdering(\n def: ActionTypeUserDefinition,\n parameters: ActionParameter[],\n priorityId?: string,\n): string[] {\n return [\n ...priorityId ? [priorityId] : [],\n ...Object.keys(def.parameterConfiguration ?? {}),\n ...Object.keys(def.objectType.properties ?? {}).filter(id =>\n !def.parameterConfiguration?.[id] && parameters.some(p => p.id === id)\n ),\n ];\n}\n\nfunction validateParameterOrdering(\n parameterOrdering: string[],\n parameterSet: Set<string>,\n actionApiName: string,\n): void {\n const orderingSet = new Set(parameterOrdering);\n const missingParameters = [...parameterSet].filter(\n param => !orderingSet.has(param),\n );\n const extraneousParameters = parameterOrdering.filter(param =>\n !parameterSet.has(param)\n );\n invariant(\n extraneousParameters.length === 0\n && missingParameters.length === 0,\n `Action parameter ordering for ${actionApiName} does not match expected parameters. Extraneous parameters in ordering: {${extraneousParameters}}, Missing parameters in ordering: {${missingParameters}}`,\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -21,10 +21,10 @@ import { OntologyEntityTypeEnum } from "./types.js";
21
21
  const typeIdPattern = /([a-z][a-z0-9\\-]*)/;
22
22
  export function defineLink(linkDefinition) {
23
23
  if ("one" in linkDefinition) {
24
- const foreignKey = linkDefinition.toMany.object.properties?.find(prop => prop.apiName === linkDefinition.manyForeignKeyProperty);
24
+ const foreignKey = linkDefinition.toMany.object.properties?.[linkDefinition.manyForeignKeyProperty];
25
25
  !(foreignKey !== undefined) ? process.env.NODE_ENV !== "production" ? invariant(false, `Foreign key ${linkDefinition.manyForeignKeyProperty} on link ${linkDefinition.apiName} does not exist on object ${linkDefinition.toMany.object.apiName}}`) : invariant(false) : void 0;
26
26
  !typeIdPattern.test(linkDefinition.apiName) ? process.env.NODE_ENV !== "production" ? invariant(false, `Top level link api names are expected to match the regex pattern ([a-z][a-z0-9\\-]*) ${linkDefinition.apiName} does not match`) : invariant(false) : void 0;
27
- const typesMatch = foreignKey.type === linkDefinition.one.object.properties?.find(prop => prop.apiName === linkDefinition.one.object.primaryKeyPropertyApiName)?.type;
27
+ const typesMatch = foreignKey.type === linkDefinition.one.object.properties?.[linkDefinition.one.object.primaryKeyPropertyApiName].type;
28
28
  !typesMatch ? process.env.NODE_ENV !== "production" ? invariant(false, `Link ${linkDefinition.apiName} has type mismatch between the one side's primary key and the foreign key on the many side`) : invariant(false) : void 0;
29
29
  }
30
30
  const fullLinkDefinition = "one" in linkDefinition ? {
@@ -1 +1 @@
1
- {"version":3,"file":"defineLink.js","names":["invariant","convertToDisplayName","convertToPluralDisplayName","updateOntology","OntologyEntityTypeEnum","typeIdPattern","defineLink","linkDefinition","foreignKey","toMany","object","properties","find","prop","apiName","manyForeignKeyProperty","undefined","process","env","NODE_ENV","test","typesMatch","type","one","primaryKeyPropertyApiName","fullLinkDefinition","convertUserOneToManyLinkDefinition","many","convertUserManyToManyLinkDefinition","linkType","cardinality","__type","LINK_TYPE","oneToMany","metadata","convertLinkTypeMetadata","manyToMany","displayMetadata","displayName","pluralDisplayName","visibility","groupDisplayName","typeClasses"],"sources":["defineLink.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 { LinkTypeMetadata } from \"@osdk/client.unstable\";\nimport invariant from \"tiny-invariant\";\nimport {\n convertToDisplayName,\n convertToPluralDisplayName,\n} from \"./defineObject.js\";\nimport { updateOntology } from \"./defineOntology.js\";\nimport type {\n LinkType,\n LinkTypeDefinition,\n LinkTypeMetadataUserDefinition,\n ManyToManyObjectLinkReference,\n ManyToManyObjectLinkReferenceUserDefinition,\n OneToManyObjectLinkReference,\n OneToManyObjectLinkReferenceUserDefinition,\n} from \"./types.js\";\nimport { OntologyEntityTypeEnum } from \"./types.js\";\n\nconst typeIdPattern = /([a-z][a-z0-9\\\\-]*)/;\n\nexport function defineLink(\n linkDefinition: LinkTypeDefinition,\n): LinkType {\n if (\"one\" in linkDefinition) {\n const foreignKey = linkDefinition.toMany.object.properties?.find(prop =>\n prop.apiName === linkDefinition.manyForeignKeyProperty\n );\n invariant(\n foreignKey !== undefined,\n `Foreign key ${linkDefinition.manyForeignKeyProperty} on link ${linkDefinition.apiName} does not exist on object ${linkDefinition.toMany.object.apiName}}`,\n );\n\n invariant(\n typeIdPattern.test(linkDefinition.apiName),\n `Top level link api names are expected to match the regex pattern ([a-z][a-z0-9\\\\-]*) ${linkDefinition.apiName} does not match`,\n );\n\n const typesMatch =\n foreignKey.type === linkDefinition.one.object.properties?.find(prop =>\n prop.apiName === linkDefinition.one.object.primaryKeyPropertyApiName\n )?.type;\n invariant(\n typesMatch,\n `Link ${linkDefinition.apiName} has type mismatch between the one side's primary key and the foreign key on the many side`,\n );\n }\n const fullLinkDefinition = \"one\" in linkDefinition\n ? {\n ...linkDefinition,\n one: convertUserOneToManyLinkDefinition(linkDefinition.one),\n toMany: convertUserOneToManyLinkDefinition(linkDefinition.toMany),\n }\n : {\n ...linkDefinition,\n many: convertUserManyToManyLinkDefinition(linkDefinition.many),\n toMany: convertUserManyToManyLinkDefinition(linkDefinition.toMany),\n };\n const linkType: LinkType = {\n cardinality: \"one\" in linkDefinition\n ? linkDefinition.cardinality\n : undefined,\n ...fullLinkDefinition,\n __type: OntologyEntityTypeEnum.LINK_TYPE,\n };\n updateOntology(linkType);\n return linkType;\n}\n\nfunction convertUserOneToManyLinkDefinition(\n oneToMany: OneToManyObjectLinkReferenceUserDefinition,\n): OneToManyObjectLinkReference {\n return {\n ...oneToMany,\n metadata: convertLinkTypeMetadata(oneToMany.metadata),\n };\n}\n\nfunction convertUserManyToManyLinkDefinition(\n manyToMany: ManyToManyObjectLinkReferenceUserDefinition,\n): ManyToManyObjectLinkReference {\n return {\n ...manyToMany,\n metadata: convertLinkTypeMetadata(manyToMany.metadata),\n };\n}\n\nfunction convertLinkTypeMetadata(\n metadata: LinkTypeMetadataUserDefinition,\n): LinkTypeMetadata {\n return {\n apiName: metadata.apiName,\n displayMetadata: {\n displayName: metadata.displayName\n ?? convertToDisplayName(metadata.apiName),\n pluralDisplayName: metadata.pluralDisplayName\n ?? convertToPluralDisplayName(metadata.apiName),\n visibility: metadata.visibility ?? \"NORMAL\",\n groupDisplayName: metadata.groupDisplayName ?? \"\",\n },\n typeClasses: [],\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"defineLink.js","names":["invariant","convertToDisplayName","convertToPluralDisplayName","updateOntology","OntologyEntityTypeEnum","typeIdPattern","defineLink","linkDefinition","foreignKey","toMany","object","properties","manyForeignKeyProperty","undefined","process","env","NODE_ENV","apiName","test","typesMatch","type","one","primaryKeyPropertyApiName","fullLinkDefinition","convertUserOneToManyLinkDefinition","many","convertUserManyToManyLinkDefinition","linkType","cardinality","__type","LINK_TYPE","oneToMany","metadata","convertLinkTypeMetadata","manyToMany","displayMetadata","displayName","pluralDisplayName","visibility","groupDisplayName","typeClasses"],"sources":["defineLink.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 { LinkTypeMetadata } from \"@osdk/client.unstable\";\nimport invariant from \"tiny-invariant\";\nimport {\n convertToDisplayName,\n convertToPluralDisplayName,\n} from \"./defineObject.js\";\nimport { updateOntology } from \"./defineOntology.js\";\nimport type {\n LinkType,\n LinkTypeDefinition,\n LinkTypeMetadataUserDefinition,\n ManyToManyObjectLinkReference,\n ManyToManyObjectLinkReferenceUserDefinition,\n OneToManyObjectLinkReference,\n OneToManyObjectLinkReferenceUserDefinition,\n} from \"./types.js\";\nimport { OntologyEntityTypeEnum } from \"./types.js\";\n\nconst typeIdPattern = /([a-z][a-z0-9\\\\-]*)/;\n\nexport function defineLink(\n linkDefinition: LinkTypeDefinition,\n): LinkType {\n if (\"one\" in linkDefinition) {\n const foreignKey = linkDefinition.toMany.object.properties\n ?.[linkDefinition.manyForeignKeyProperty];\n invariant(\n foreignKey !== undefined,\n `Foreign key ${linkDefinition.manyForeignKeyProperty} on link ${linkDefinition.apiName} does not exist on object ${linkDefinition.toMany.object.apiName}}`,\n );\n\n invariant(\n typeIdPattern.test(linkDefinition.apiName),\n `Top level link api names are expected to match the regex pattern ([a-z][a-z0-9\\\\-]*) ${linkDefinition.apiName} does not match`,\n );\n\n const typesMatch = foreignKey.type\n === linkDefinition.one.object.properties\n ?.[linkDefinition.one.object.primaryKeyPropertyApiName].type;\n invariant(\n typesMatch,\n `Link ${linkDefinition.apiName} has type mismatch between the one side's primary key and the foreign key on the many side`,\n );\n }\n const fullLinkDefinition = \"one\" in linkDefinition\n ? {\n ...linkDefinition,\n one: convertUserOneToManyLinkDefinition(linkDefinition.one),\n toMany: convertUserOneToManyLinkDefinition(linkDefinition.toMany),\n }\n : {\n ...linkDefinition,\n many: convertUserManyToManyLinkDefinition(linkDefinition.many),\n toMany: convertUserManyToManyLinkDefinition(linkDefinition.toMany),\n };\n const linkType: LinkType = {\n cardinality: \"one\" in linkDefinition\n ? linkDefinition.cardinality\n : undefined,\n ...fullLinkDefinition,\n __type: OntologyEntityTypeEnum.LINK_TYPE,\n };\n updateOntology(linkType);\n return linkType;\n}\n\nfunction convertUserOneToManyLinkDefinition(\n oneToMany: OneToManyObjectLinkReferenceUserDefinition,\n): OneToManyObjectLinkReference {\n return {\n ...oneToMany,\n metadata: convertLinkTypeMetadata(oneToMany.metadata),\n };\n}\n\nfunction convertUserManyToManyLinkDefinition(\n manyToMany: ManyToManyObjectLinkReferenceUserDefinition,\n): ManyToManyObjectLinkReference {\n return {\n ...manyToMany,\n metadata: convertLinkTypeMetadata(manyToMany.metadata),\n };\n}\n\nfunction convertLinkTypeMetadata(\n metadata: LinkTypeMetadataUserDefinition,\n): LinkTypeMetadata {\n return {\n apiName: metadata.apiName,\n displayMetadata: {\n displayName: metadata.displayName\n ?? convertToDisplayName(metadata.apiName),\n pluralDisplayName: metadata.pluralDisplayName\n ?? convertToPluralDisplayName(metadata.apiName),\n visibility: metadata.visibility ?? \"NORMAL\",\n groupDisplayName: metadata.groupDisplayName ?? \"\",\n },\n typeClasses: [],\n };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -73,7 +73,7 @@ export function defineObject(objectDef) {
73
73
  const allFailedValidations = validations.concat(nonExistentInterfaceProperties).filter(val => val.type === "invalid");
74
74
  !(allFailedValidations.length === 0) ? process.env.NODE_ENV !== "production" ? invariant(false, "\n" + allFailedValidations.map(formatValidationErrors).join("\n")) : invariant(false) : void 0;
75
75
  });
76
- const flattenedProperties = Object.entries(objectDef.properties ?? {}).map(([apiName, property]) => convertUserObjectPropertyType(apiName, property));
76
+ const flattenedProperties = Object.entries(objectDef.properties ?? {}).map(([apiName, property]) => convertUserObjectPropertyType(property.apiName ?? apiName, property));
77
77
  const finalObject = {
78
78
  ...objectDef,
79
79
  apiName: apiName,
@@ -81,7 +81,8 @@ export function defineObject(objectDef) {
81
81
  properties: flattenedProperties
82
82
  };
83
83
  updateOntology(finalObject);
84
- return finalObject;
84
+ objectDef.apiName = apiName;
85
+ return objectDef;
85
86
  }
86
87
  export function isExotic(type) {
87
88
  if (type === undefined) {
@@ -136,6 +137,9 @@ export function getAllInterfaceProperties(interfaceType) {
136
137
  return properties;
137
138
  }
138
139
  function convertUserObjectPropertyType(apiName, property) {
140
+ // fill in missing fields to be used by actions
141
+ property.apiName = apiName;
142
+ property.displayName = property.displayName ?? convertToDisplayName(apiName);
139
143
  return {
140
144
  ...property,
141
145
  apiName: apiName,
@@ -1 +1 @@
1
- {"version":3,"file":"defineObject.js","names":["invariant","addNamespaceIfNone","namespace","ontologyDefinition","updateOntology","OntologyEntityTypeEnum","ISO_8601_DURATION","ISO_8601_DATETIME","defineObject","objectDef","apiName","propertyApiNames","properties","Object","keys","OBJECT_TYPE","undefined","Error","includes","titlePropertyApiName","process","env","NODE_ENV","primaryKeyPropertyApiName","editOnly","retentionPeriod","datasource","test","status","activeProperties","entries","forEach","property","push","length","join","type","deadline","isExotic","implementsInterfaces","interfaceImpl","allInterfaceProperties","getAllInterfaceProperties","implements","nonExistentInterfaceProperties","propertyMapping","map","val","interfaceProperty","filter","interfaceProp","reason","interfaceToObjectProperties","fromEntries","mapping","mapsTo","validateProperty","sharedPropertyType","validateInterfaceImplProperty","validations","allFailedValidations","concat","formatValidationErrors","flattenedProperties","convertUserObjectPropertyType","finalObject","__type","error","spt","mappedObjectProp","object","objProp","JSON","stringify","convertToDisplayName","s","charAt","toUpperCase","slice","convertToPluralDisplayName","endsWith","interfaceType","propertiesV2","extendsInterfaces","ext","displayName"],"sources":["defineObject.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 invariant from \"tiny-invariant\";\nimport {\n addNamespaceIfNone,\n namespace,\n ontologyDefinition,\n updateOntology,\n} from \"./defineOntology.js\";\nimport type {\n InterfacePropertyType,\n InterfaceType,\n ObjectPropertyType,\n ObjectPropertyTypeUserDefinition,\n ObjectType,\n ObjectTypeDefinition,\n PropertyTypeType,\n PropertyTypeTypeExotic,\n SharedPropertyType,\n} from \"./types.js\";\nimport { OntologyEntityTypeEnum } from \"./types.js\";\n\n// From https://stackoverflow.com/a/79288714\nconst ISO_8601_DURATION =\n /^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))$/;\n\n// ISO 8601 date and time format (YYYY-MM-DDThh:mm:ss.sssZ)\nconst ISO_8601_DATETIME =\n /^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})?)?$/;\n\nexport function defineObject(\n objectDef: ObjectTypeDefinition,\n): ObjectType {\n const apiName = namespace + objectDef.apiName;\n const propertyApiNames = objectDef.properties\n ? Object.keys(objectDef.properties)\n : [];\n if (\n ontologyDefinition[OntologyEntityTypeEnum.OBJECT_TYPE][apiName]\n !== undefined\n ) {\n throw new Error(\n `Object type with apiName ${objectDef.apiName} is already defined`,\n );\n }\n invariant(\n propertyApiNames.includes(objectDef.titlePropertyApiName),\n `Title property ${objectDef.titlePropertyApiName} is not defined on object ${objectDef.apiName}`,\n );\n invariant(\n propertyApiNames.includes(objectDef.primaryKeyPropertyApiName),\n `Primary key property ${objectDef.primaryKeyPropertyApiName} does not exist on object ${objectDef.apiName}`,\n );\n\n invariant(\n !(objectDef.properties?.[objectDef.primaryKeyPropertyApiName]?.editOnly),\n `Primary key property ${objectDef.primaryKeyPropertyApiName} on object ${objectDef.apiName} cannot be edit-only`,\n );\n\n const retentionPeriod = (objectDef.datasource as any)?.retentionPeriod;\n invariant(\n retentionPeriod === undefined || ISO_8601_DURATION.test(retentionPeriod),\n `Retention period \"${retentionPeriod}\" on object \"${objectDef.apiName}\" is not a valid ISO 8601 duration string`,\n );\n\n // Validate that if object status is experimental, no property can have a status of active\n if (objectDef.status === \"experimental\") {\n const activeProperties: string[] = [];\n Object.entries(objectDef.properties ?? {}).forEach(\n ([apiName, property]) => {\n if (property.status === \"active\") {\n activeProperties.push(apiName);\n }\n },\n );\n invariant(\n activeProperties.length === 0,\n `When object \"${objectDef.apiName}\" has experimental status, no properties can have \"active\" status, but found active properties: ${\n activeProperties.join(\", \")\n }`,\n );\n }\n\n // Validate deprecated status deadline is in ISO 8601 format\n if (\n objectDef.status && typeof objectDef.status === \"object\"\n && objectDef.status.type === \"deprecated\"\n ) {\n const deadline = objectDef.status.deadline;\n invariant(\n deadline !== undefined && ISO_8601_DATETIME.test(deadline),\n `Deprecated status deadline \"${deadline}\" on object \"${objectDef.apiName}\" is not a valid ISO 8601 datetime string`,\n );\n }\n invariant(\n !isExotic(objectDef.properties?.[objectDef.titlePropertyApiName]?.type),\n `Title property ${objectDef.titlePropertyApiName} must be a primitive type`,\n );\n invariant(\n !isExotic(\n objectDef.properties?.[objectDef.primaryKeyPropertyApiName]?.type,\n ),\n `Primary key property ${objectDef.primaryKeyPropertyApiName} can only be primitive types`,\n );\n\n objectDef.implementsInterfaces?.forEach(interfaceImpl => {\n const allInterfaceProperties = getAllInterfaceProperties(\n interfaceImpl.implements,\n );\n const nonExistentInterfaceProperties: ValidationResult[] = interfaceImpl\n .propertyMapping.map(val => val.interfaceProperty).filter(\n interfaceProperty =>\n allInterfaceProperties[addNamespaceIfNone(interfaceProperty)]\n === undefined,\n ).map(interfaceProp => ({\n type: \"invalid\",\n reason:\n `Interface property ${interfaceProp} referenced in ${objectDef.apiName} object does not exist`,\n }));\n\n const interfaceToObjectProperties = Object.fromEntries(\n interfaceImpl.propertyMapping.map(\n mapping => [\n addNamespaceIfNone(mapping.interfaceProperty),\n mapping.mapsTo,\n ],\n ),\n );\n const validateProperty = (\n interfaceProp: [string, InterfacePropertyType],\n ): ValidationResult => {\n if (\n interfaceProp[1].sharedPropertyType.apiName\n in interfaceToObjectProperties\n ) {\n return validateInterfaceImplProperty(\n interfaceProp[1].sharedPropertyType,\n interfaceToObjectProperties[interfaceProp[0]],\n objectDef,\n );\n }\n return {\n type: \"invalid\",\n reason: `Interface property ${\n interfaceProp[1].sharedPropertyType.apiName\n } not implemented by ${objectDef.apiName} object definition`,\n };\n };\n const validations = Object.entries(\n getAllInterfaceProperties(interfaceImpl.implements),\n ).map(validateProperty);\n const allFailedValidations = validations.concat(\n nonExistentInterfaceProperties,\n ).filter(val => val.type === \"invalid\");\n invariant(\n allFailedValidations.length === 0,\n \"\\n\" + allFailedValidations.map(formatValidationErrors).join(\"\\n\"),\n );\n });\n\n const flattenedProperties: Array<ObjectPropertyType> = Object.entries(\n objectDef.properties ?? {},\n ).map(([apiName, property]) =>\n convertUserObjectPropertyType(apiName, property)\n );\n\n const finalObject: ObjectType = {\n ...objectDef,\n apiName: apiName,\n __type: OntologyEntityTypeEnum.OBJECT_TYPE,\n properties: flattenedProperties,\n };\n updateOntology(finalObject);\n return finalObject;\n}\n\nexport function isExotic(\n type: PropertyTypeType | undefined,\n): type is PropertyTypeTypeExotic {\n if (type === undefined) {\n return false;\n }\n if (typeof type === \"string\") {\n return [\"geopoint\", \"geoshape\", \"mediaReference\", \"geotimeSeries\"].includes(\n type,\n );\n } else if (typeof type === \"object\" && type != null) {\n return type.type === \"marking\" || type.type === \"struct\";\n }\n return false;\n}\n\ntype ValidationResult = { type: \"valid\" } | { type: \"invalid\"; reason: string };\n\nfunction formatValidationErrors(\n error: { type: \"invalid\"; reason: string },\n): string {\n return `Ontology Definition Error: ${error.reason}\\n`;\n}\n\n// Validate that the object and the interface property match up\nfunction validateInterfaceImplProperty(\n spt: SharedPropertyType,\n mappedObjectProp: string,\n object: ObjectTypeDefinition,\n): ValidationResult {\n const objProp = object.properties?.[mappedObjectProp];\n if (objProp === undefined) {\n return {\n type: \"invalid\",\n reason:\n `Object property mapped to interface does not exist. Object Property Mapped: ${mappedObjectProp}`,\n };\n }\n if (JSON.stringify(spt.type) !== JSON.stringify(objProp?.type)) {\n return {\n type: \"invalid\",\n reason:\n `Object property type does not match the interface property it is mapped to. Interface Property: ${spt.apiName}, objectProperty: ${mappedObjectProp}`,\n };\n }\n\n return { type: \"valid\" };\n}\n\nexport function convertToDisplayName(s: string | undefined | null): string {\n return s === undefined || s == null\n ? \"\"\n : s.charAt(0).toUpperCase() + s.slice(1);\n}\n\n// TODO: edge cases\nexport function convertToPluralDisplayName(\n s: string | undefined | null,\n): string {\n return s === undefined || s == null\n ? \"\"\n : s.endsWith(\"s\")\n ? convertToDisplayName(s)\n : convertToDisplayName(s) + \"s\";\n}\n\nexport function getAllInterfaceProperties(\n interfaceType: InterfaceType,\n): Record<string, InterfacePropertyType> {\n let properties = interfaceType.propertiesV2;\n interfaceType.extendsInterfaces.forEach(ext => {\n properties = { ...properties, ...getAllInterfaceProperties(ext) };\n });\n return properties;\n}\n\nfunction convertUserObjectPropertyType(\n apiName: string,\n property: ObjectPropertyTypeUserDefinition,\n): ObjectPropertyType {\n return {\n ...property,\n apiName: apiName,\n displayName: property.displayName ?? convertToDisplayName(apiName),\n type: property.type,\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"defineObject.js","names":["invariant","addNamespaceIfNone","namespace","ontologyDefinition","updateOntology","OntologyEntityTypeEnum","ISO_8601_DURATION","ISO_8601_DATETIME","defineObject","objectDef","apiName","propertyApiNames","properties","Object","keys","OBJECT_TYPE","undefined","Error","includes","titlePropertyApiName","process","env","NODE_ENV","primaryKeyPropertyApiName","editOnly","retentionPeriod","datasource","test","status","activeProperties","entries","forEach","property","push","length","join","type","deadline","isExotic","implementsInterfaces","interfaceImpl","allInterfaceProperties","getAllInterfaceProperties","implements","nonExistentInterfaceProperties","propertyMapping","map","val","interfaceProperty","filter","interfaceProp","reason","interfaceToObjectProperties","fromEntries","mapping","mapsTo","validateProperty","sharedPropertyType","validateInterfaceImplProperty","validations","allFailedValidations","concat","formatValidationErrors","flattenedProperties","convertUserObjectPropertyType","finalObject","__type","error","spt","mappedObjectProp","object","objProp","JSON","stringify","convertToDisplayName","s","charAt","toUpperCase","slice","convertToPluralDisplayName","endsWith","interfaceType","propertiesV2","extendsInterfaces","ext","displayName"],"sources":["defineObject.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 invariant from \"tiny-invariant\";\nimport {\n addNamespaceIfNone,\n namespace,\n ontologyDefinition,\n updateOntology,\n} from \"./defineOntology.js\";\nimport type {\n InterfacePropertyType,\n InterfaceType,\n ObjectPropertyType,\n ObjectPropertyTypeUserDefinition,\n ObjectType,\n ObjectTypeDefinition,\n PropertyTypeType,\n PropertyTypeTypeExotic,\n SharedPropertyType,\n} from \"./types.js\";\nimport { OntologyEntityTypeEnum } from \"./types.js\";\n\n// From https://stackoverflow.com/a/79288714\nconst ISO_8601_DURATION =\n /^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))$/;\n\n// ISO 8601 date and time format (YYYY-MM-DDThh:mm:ss.sssZ)\nconst ISO_8601_DATETIME =\n /^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})?)?$/;\n\nexport function defineObject(\n objectDef: ObjectTypeDefinition,\n): ObjectTypeDefinition {\n const apiName = namespace + objectDef.apiName;\n const propertyApiNames = objectDef.properties\n ? Object.keys(objectDef.properties)\n : [];\n if (\n ontologyDefinition[OntologyEntityTypeEnum.OBJECT_TYPE][apiName]\n !== undefined\n ) {\n throw new Error(\n `Object type with apiName ${objectDef.apiName} is already defined`,\n );\n }\n invariant(\n propertyApiNames.includes(objectDef.titlePropertyApiName),\n `Title property ${objectDef.titlePropertyApiName} is not defined on object ${objectDef.apiName}`,\n );\n invariant(\n propertyApiNames.includes(objectDef.primaryKeyPropertyApiName),\n `Primary key property ${objectDef.primaryKeyPropertyApiName} does not exist on object ${objectDef.apiName}`,\n );\n\n invariant(\n !(objectDef.properties?.[objectDef.primaryKeyPropertyApiName]?.editOnly),\n `Primary key property ${objectDef.primaryKeyPropertyApiName} on object ${objectDef.apiName} cannot be edit-only`,\n );\n\n const retentionPeriod = (objectDef.datasource as any)?.retentionPeriod;\n invariant(\n retentionPeriod === undefined || ISO_8601_DURATION.test(retentionPeriod),\n `Retention period \"${retentionPeriod}\" on object \"${objectDef.apiName}\" is not a valid ISO 8601 duration string`,\n );\n\n // Validate that if object status is experimental, no property can have a status of active\n if (objectDef.status === \"experimental\") {\n const activeProperties: string[] = [];\n Object.entries(objectDef.properties ?? {}).forEach(\n ([apiName, property]) => {\n if (property.status === \"active\") {\n activeProperties.push(apiName);\n }\n },\n );\n invariant(\n activeProperties.length === 0,\n `When object \"${objectDef.apiName}\" has experimental status, no properties can have \"active\" status, but found active properties: ${\n activeProperties.join(\", \")\n }`,\n );\n }\n\n // Validate deprecated status deadline is in ISO 8601 format\n if (\n objectDef.status && typeof objectDef.status === \"object\"\n && objectDef.status.type === \"deprecated\"\n ) {\n const deadline = objectDef.status.deadline;\n invariant(\n deadline !== undefined && ISO_8601_DATETIME.test(deadline),\n `Deprecated status deadline \"${deadline}\" on object \"${objectDef.apiName}\" is not a valid ISO 8601 datetime string`,\n );\n }\n invariant(\n !isExotic(objectDef.properties?.[objectDef.titlePropertyApiName]?.type),\n `Title property ${objectDef.titlePropertyApiName} must be a primitive type`,\n );\n invariant(\n !isExotic(\n objectDef.properties?.[objectDef.primaryKeyPropertyApiName]?.type,\n ),\n `Primary key property ${objectDef.primaryKeyPropertyApiName} can only be primitive types`,\n );\n\n objectDef.implementsInterfaces?.forEach(interfaceImpl => {\n const allInterfaceProperties = getAllInterfaceProperties(\n interfaceImpl.implements,\n );\n const nonExistentInterfaceProperties: ValidationResult[] = interfaceImpl\n .propertyMapping.map(val => val.interfaceProperty).filter(\n interfaceProperty =>\n allInterfaceProperties[addNamespaceIfNone(interfaceProperty)]\n === undefined,\n ).map(interfaceProp => ({\n type: \"invalid\",\n reason:\n `Interface property ${interfaceProp} referenced in ${objectDef.apiName} object does not exist`,\n }));\n\n const interfaceToObjectProperties = Object.fromEntries(\n interfaceImpl.propertyMapping.map(\n mapping => [\n addNamespaceIfNone(mapping.interfaceProperty),\n mapping.mapsTo,\n ],\n ),\n );\n const validateProperty = (\n interfaceProp: [string, InterfacePropertyType],\n ): ValidationResult => {\n if (\n interfaceProp[1].sharedPropertyType.apiName\n in interfaceToObjectProperties\n ) {\n return validateInterfaceImplProperty(\n interfaceProp[1].sharedPropertyType,\n interfaceToObjectProperties[interfaceProp[0]],\n objectDef,\n );\n }\n return {\n type: \"invalid\",\n reason: `Interface property ${\n interfaceProp[1].sharedPropertyType.apiName\n } not implemented by ${objectDef.apiName} object definition`,\n };\n };\n const validations = Object.entries(\n getAllInterfaceProperties(interfaceImpl.implements),\n ).map(validateProperty);\n const allFailedValidations = validations.concat(\n nonExistentInterfaceProperties,\n ).filter(val => val.type === \"invalid\");\n invariant(\n allFailedValidations.length === 0,\n \"\\n\" + allFailedValidations.map(formatValidationErrors).join(\"\\n\"),\n );\n });\n\n const flattenedProperties: Array<ObjectPropertyType> = Object.entries(\n objectDef.properties ?? {},\n ).map(([apiName, property]) =>\n convertUserObjectPropertyType(property.apiName ?? apiName, property)\n );\n\n const finalObject: ObjectType = {\n ...objectDef,\n apiName: apiName,\n __type: OntologyEntityTypeEnum.OBJECT_TYPE,\n properties: flattenedProperties,\n };\n updateOntology(finalObject);\n objectDef.apiName = apiName;\n return objectDef;\n}\n\nexport function isExotic(\n type: PropertyTypeType | undefined,\n): type is PropertyTypeTypeExotic {\n if (type === undefined) {\n return false;\n }\n if (typeof type === \"string\") {\n return [\"geopoint\", \"geoshape\", \"mediaReference\", \"geotimeSeries\"].includes(\n type,\n );\n } else if (typeof type === \"object\" && type != null) {\n return type.type === \"marking\" || type.type === \"struct\";\n }\n return false;\n}\n\ntype ValidationResult = { type: \"valid\" } | { type: \"invalid\"; reason: string };\n\nfunction formatValidationErrors(\n error: { type: \"invalid\"; reason: string },\n): string {\n return `Ontology Definition Error: ${error.reason}\\n`;\n}\n\n// Validate that the object and the interface property match up\nfunction validateInterfaceImplProperty(\n spt: SharedPropertyType,\n mappedObjectProp: string,\n object: ObjectTypeDefinition,\n): ValidationResult {\n const objProp = object.properties?.[mappedObjectProp];\n if (objProp === undefined) {\n return {\n type: \"invalid\",\n reason:\n `Object property mapped to interface does not exist. Object Property Mapped: ${mappedObjectProp}`,\n };\n }\n if (JSON.stringify(spt.type) !== JSON.stringify(objProp?.type)) {\n return {\n type: \"invalid\",\n reason:\n `Object property type does not match the interface property it is mapped to. Interface Property: ${spt.apiName}, objectProperty: ${mappedObjectProp}`,\n };\n }\n\n return { type: \"valid\" };\n}\n\nexport function convertToDisplayName(s: string | undefined | null): string {\n return s === undefined || s == null\n ? \"\"\n : s.charAt(0).toUpperCase() + s.slice(1);\n}\n\n// TODO: edge cases\nexport function convertToPluralDisplayName(\n s: string | undefined | null,\n): string {\n return s === undefined || s == null\n ? \"\"\n : s.endsWith(\"s\")\n ? convertToDisplayName(s)\n : convertToDisplayName(s) + \"s\";\n}\n\nexport function getAllInterfaceProperties(\n interfaceType: InterfaceType,\n): Record<string, InterfacePropertyType> {\n let properties = interfaceType.propertiesV2;\n interfaceType.extendsInterfaces.forEach(ext => {\n properties = { ...properties, ...getAllInterfaceProperties(ext) };\n });\n return properties;\n}\n\nfunction convertUserObjectPropertyType(\n apiName: string,\n property: ObjectPropertyTypeUserDefinition,\n): ObjectPropertyType {\n // fill in missing fields to be used by actions\n property.apiName = apiName;\n property.displayName = property.displayName ?? convertToDisplayName(apiName);\n return {\n ...property,\n apiName: apiName,\n displayName: property.displayName ?? convertToDisplayName(apiName),\n type: property.type,\n };\n}\n"],"mappings":"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","ignoreList":[]}