@osdk/maker 0.11.0-beta.11 → 0.11.0-beta.13

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 (44) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/build/browser/api/addDependency.js +2 -2
  3. package/build/browser/api/addDependency.js.map +1 -1
  4. package/build/browser/api/defineAction.js +7 -6
  5. package/build/browser/api/defineAction.js.map +1 -1
  6. package/build/browser/api/defineInterface.js +6 -5
  7. package/build/browser/api/defineInterface.js.map +1 -1
  8. package/build/browser/api/defineObject.js +19 -13
  9. package/build/browser/api/defineObject.js.map +1 -1
  10. package/build/browser/api/defineOntology.js +15 -6
  11. package/build/browser/api/defineOntology.js.map +1 -1
  12. package/build/browser/api/overall.test.js +1038 -464
  13. package/build/browser/api/overall.test.js.map +1 -1
  14. package/build/browser/api/types.js.map +1 -1
  15. package/build/browser/cli/main.js +1 -1
  16. package/build/cjs/index.cjs +48 -35
  17. package/build/cjs/index.cjs.map +1 -1
  18. package/build/cjs/index.d.cts +3 -2
  19. package/build/esm/api/addDependency.js +2 -2
  20. package/build/esm/api/addDependency.js.map +1 -1
  21. package/build/esm/api/defineAction.js +7 -6
  22. package/build/esm/api/defineAction.js.map +1 -1
  23. package/build/esm/api/defineInterface.js +6 -5
  24. package/build/esm/api/defineInterface.js.map +1 -1
  25. package/build/esm/api/defineObject.js +19 -13
  26. package/build/esm/api/defineObject.js.map +1 -1
  27. package/build/esm/api/defineOntology.js +15 -6
  28. package/build/esm/api/defineOntology.js.map +1 -1
  29. package/build/esm/api/overall.test.js +1038 -464
  30. package/build/esm/api/overall.test.js.map +1 -1
  31. package/build/esm/api/types.js.map +1 -1
  32. package/build/esm/cli/main.js +1 -1
  33. package/build/types/api/addDependency.d.ts +1 -1
  34. package/build/types/api/addDependency.d.ts.map +1 -1
  35. package/build/types/api/defineAction.d.ts.map +1 -1
  36. package/build/types/api/defineInterface.d.ts +1 -0
  37. package/build/types/api/defineInterface.d.ts.map +1 -1
  38. package/build/types/api/defineObject.d.ts +2 -1
  39. package/build/types/api/defineObject.d.ts.map +1 -1
  40. package/build/types/api/defineOntology.d.ts +1 -0
  41. package/build/types/api/defineOntology.d.ts.map +1 -1
  42. package/build/types/api/types.d.ts +1 -1
  43. package/build/types/api/types.d.ts.map +1 -1
  44. package/package.json +5 -5
package/CHANGELOG.md CHANGED
@@ -1,5 +1,25 @@
1
1
  # @osdk/maker
2
2
 
3
+ ## 0.11.0-beta.13
4
+
5
+ ### Minor Changes
6
+
7
+ - 402aa94: Use namespaced api names for interface properties
8
+
9
+ ## 0.11.0-beta.12
10
+
11
+ ### Minor Changes
12
+
13
+ - 1847bcb: Support arrays in OT props
14
+ - 3ae0cfd: Remove import/dep from codegen
15
+ - 7d232fb: Added searchable field to interface definitions
16
+ - 60b0029: Check extended interfaces when validating object property mapping
17
+ - 0abeec3: Make codegen prettier
18
+
19
+ ### Patch Changes
20
+
21
+ - @osdk/api@2.3.0-beta.9
22
+
3
23
  ## 0.11.0-beta.11
4
24
 
5
25
  ### Patch Changes
@@ -18,7 +18,7 @@ import * as fs from "fs";
18
18
  import * as path from "path";
19
19
  import { dependencies } from "./defineOntology.js";
20
20
  const MAX_SEARCH_DEPTH = 5;
21
- export function addDependency(namespace, fileInPackage) {
21
+ export function addDependency(namespaceNoDot, fileInPackage) {
22
22
  let dir = path.dirname(fileInPackage);
23
23
  let packageJsonPath = null;
24
24
  for (let i = 0; i < MAX_SEARCH_DEPTH; i++) {
@@ -35,6 +35,6 @@ export function addDependency(namespace, fileInPackage) {
35
35
  throw new Error(`Could not find a package.json within ${MAX_SEARCH_DEPTH} parent directories of ${fileInPackage}`);
36
36
  }
37
37
  const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, "utf-8"));
38
- dependencies[namespace] = packageJson.version ?? "";
38
+ dependencies[namespaceNoDot] = packageJson.version ?? "";
39
39
  }
40
40
  //# sourceMappingURL=addDependency.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"addDependency.js","names":["fs","path","dependencies","MAX_SEARCH_DEPTH","addDependency","namespace","fileInPackage","dir","dirname","packageJsonPath","i","candidate","join","existsSync","parentDir","Error","packageJson","JSON","parse","readFileSync","version"],"sources":["addDependency.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 * as fs from \"fs\";\nimport * as path from \"path\";\nimport { dependencies } from \"./defineOntology.js\";\n\nconst MAX_SEARCH_DEPTH = 5;\n\nexport function addDependency(namespace: string, fileInPackage: string): void {\n let dir = path.dirname(fileInPackage);\n let packageJsonPath = null;\n\n for (let i = 0; i < MAX_SEARCH_DEPTH; i++) {\n const candidate = path.join(dir, \"package.json\");\n if (fs.existsSync(candidate)) {\n packageJsonPath = candidate;\n break;\n }\n const parentDir = path.dirname(dir);\n if (parentDir === dir) break;\n dir = parentDir;\n }\n\n if (!packageJsonPath) {\n throw new Error(\n `Could not find a package.json within ${MAX_SEARCH_DEPTH} parent directories of ${fileInPackage}`,\n );\n }\n\n const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, \"utf-8\"));\n dependencies[namespace] = packageJson.version ?? \"\";\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO,KAAKA,EAAE,MAAM,IAAI;AACxB,OAAO,KAAKC,IAAI,MAAM,MAAM;AAC5B,SAASC,YAAY,QAAQ,qBAAqB;AAElD,MAAMC,gBAAgB,GAAG,CAAC;AAE1B,OAAO,SAASC,aAAaA,CAACC,SAAiB,EAAEC,aAAqB,EAAQ;EAC5E,IAAIC,GAAG,GAAGN,IAAI,CAACO,OAAO,CAACF,aAAa,CAAC;EACrC,IAAIG,eAAe,GAAG,IAAI;EAE1B,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGP,gBAAgB,EAAEO,CAAC,EAAE,EAAE;IACzC,MAAMC,SAAS,GAAGV,IAAI,CAACW,IAAI,CAACL,GAAG,EAAE,cAAc,CAAC;IAChD,IAAIP,EAAE,CAACa,UAAU,CAACF,SAAS,CAAC,EAAE;MAC5BF,eAAe,GAAGE,SAAS;MAC3B;IACF;IACA,MAAMG,SAAS,GAAGb,IAAI,CAACO,OAAO,CAACD,GAAG,CAAC;IACnC,IAAIO,SAAS,KAAKP,GAAG,EAAE;IACvBA,GAAG,GAAGO,SAAS;EACjB;EAEA,IAAI,CAACL,eAAe,EAAE;IACpB,MAAM,IAAIM,KAAK,CACb,wCAAwCZ,gBAAgB,0BAA0BG,aAAa,EACjG,CAAC;EACH;EAEA,MAAMU,WAAW,GAAGC,IAAI,CAACC,KAAK,CAAClB,EAAE,CAACmB,YAAY,CAACV,eAAe,EAAE,OAAO,CAAC,CAAC;EACzEP,YAAY,CAACG,SAAS,CAAC,GAAGW,WAAW,CAACI,OAAO,IAAI,EAAE;AACrD","ignoreList":[]}
1
+ {"version":3,"file":"addDependency.js","names":["fs","path","dependencies","MAX_SEARCH_DEPTH","addDependency","namespaceNoDot","fileInPackage","dir","dirname","packageJsonPath","i","candidate","join","existsSync","parentDir","Error","packageJson","JSON","parse","readFileSync","version"],"sources":["addDependency.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 * as fs from \"fs\";\nimport * as path from \"path\";\nimport { dependencies } from \"./defineOntology.js\";\n\nconst MAX_SEARCH_DEPTH = 5;\n\nexport function addDependency(\n namespaceNoDot: string,\n fileInPackage: string,\n): void {\n let dir = path.dirname(fileInPackage);\n let packageJsonPath = null;\n\n for (let i = 0; i < MAX_SEARCH_DEPTH; i++) {\n const candidate = path.join(dir, \"package.json\");\n if (fs.existsSync(candidate)) {\n packageJsonPath = candidate;\n break;\n }\n const parentDir = path.dirname(dir);\n if (parentDir === dir) break;\n dir = parentDir;\n }\n\n if (!packageJsonPath) {\n throw new Error(\n `Could not find a package.json within ${MAX_SEARCH_DEPTH} parent directories of ${fileInPackage}`,\n );\n }\n\n const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, \"utf-8\"));\n dependencies[namespaceNoDot] = packageJson.version ?? \"\";\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO,KAAKA,EAAE,MAAM,IAAI;AACxB,OAAO,KAAKC,IAAI,MAAM,MAAM;AAC5B,SAASC,YAAY,QAAQ,qBAAqB;AAElD,MAAMC,gBAAgB,GAAG,CAAC;AAE1B,OAAO,SAASC,aAAaA,CAC3BC,cAAsB,EACtBC,aAAqB,EACf;EACN,IAAIC,GAAG,GAAGN,IAAI,CAACO,OAAO,CAACF,aAAa,CAAC;EACrC,IAAIG,eAAe,GAAG,IAAI;EAE1B,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGP,gBAAgB,EAAEO,CAAC,EAAE,EAAE;IACzC,MAAMC,SAAS,GAAGV,IAAI,CAACW,IAAI,CAACL,GAAG,EAAE,cAAc,CAAC;IAChD,IAAIP,EAAE,CAACa,UAAU,CAACF,SAAS,CAAC,EAAE;MAC5BF,eAAe,GAAGE,SAAS;MAC3B;IACF;IACA,MAAMG,SAAS,GAAGb,IAAI,CAACO,OAAO,CAACD,GAAG,CAAC;IACnC,IAAIO,SAAS,KAAKP,GAAG,EAAE;IACvBA,GAAG,GAAGO,SAAS;EACjB;EAEA,IAAI,CAACL,eAAe,EAAE;IACpB,MAAM,IAAIM,KAAK,CACb,wCAAwCZ,gBAAgB,0BAA0BG,aAAa,EACjG,CAAC;EACH;EAEA,MAAMU,WAAW,GAAGC,IAAI,CAACC,KAAK,CAAClB,EAAE,CAACmB,YAAY,CAACV,eAAe,EAAE,OAAO,CAAC,CAAC;EACzEP,YAAY,CAACG,cAAc,CAAC,GAAGW,WAAW,CAACI,OAAO,IAAI,EAAE;AAC1D","ignoreList":[]}
@@ -15,6 +15,7 @@
15
15
  */
16
16
 
17
17
  import invariant from "tiny-invariant";
18
+ import { getAllInterfaceProperties } from "./defineObject.js";
18
19
  import { namespace, ontologyDefinition, updateOntology } from "./defineOntology.js";
19
20
  import { OntologyEntityTypeEnum } from "./types.js";
20
21
  export function defineCreateInterfaceObjectAction(interfaceType, objectType, validation) {
@@ -48,7 +49,7 @@ export function defineCreateInterfaceObjectAction(interfaceType, objectType, val
48
49
  }]
49
50
  }
50
51
  }
51
- }, ...Object.entries(interfaceType.propertiesV2).map(([id, prop]) => ({
52
+ }, ...Object.entries(getAllInterfaceProperties(interfaceType)).map(([id, prop]) => ({
52
53
  id,
53
54
  displayName: prop.sharedPropertyType.displayName ?? prop.sharedPropertyType.nonNameSpacedApiName,
54
55
  type: extractActionParameterType(prop.sharedPropertyType),
@@ -66,7 +67,7 @@ export function defineCreateInterfaceObjectAction(interfaceType, objectType, val
66
67
  addInterfaceRule: {
67
68
  interfaceApiName: interfaceType.apiName,
68
69
  objectTypeParameter: "objectTypeParameter",
69
- sharedPropertyValues: Object.fromEntries(Object.entries(interfaceType.propertiesV2).map(([id, prop]) => [id, {
70
+ sharedPropertyValues: Object.fromEntries(Object.entries(getAllInterfaceProperties(interfaceType)).map(([id, prop]) => [id, {
70
71
  type: "parameterId",
71
72
  parameterId: id
72
73
  }]))
@@ -137,7 +138,7 @@ export function defineModifyInterfaceObjectAction(interfaceType, objectType, val
137
138
  }]
138
139
  }
139
140
  }
140
- }, ...Object.entries(interfaceType.propertiesV2).map(([id, prop]) => ({
141
+ }, ...Object.entries(getAllInterfaceProperties(interfaceType)).map(([id, prop]) => ({
141
142
  id,
142
143
  displayName: prop.sharedPropertyType.displayName ?? prop.sharedPropertyType.nonNameSpacedApiName,
143
144
  type: extractActionParameterType(prop.sharedPropertyType),
@@ -154,7 +155,7 @@ export function defineModifyInterfaceObjectAction(interfaceType, objectType, val
154
155
  type: "modifyInterfaceRule",
155
156
  modifyInterfaceRule: {
156
157
  interfaceObjectToModifyParameter: "interfaceObjectToModifyParameter",
157
- sharedPropertyValues: Object.fromEntries(Object.entries(interfaceType.propertiesV2).map(([id, prop]) => [id, {
158
+ sharedPropertyValues: Object.fromEntries(Object.entries(getAllInterfaceProperties(interfaceType)).map(([id, prop]) => [id, {
158
159
  type: "parameterId",
159
160
  parameterId: id
160
161
  }]))
@@ -297,8 +298,8 @@ function referencedParameterIds(actionDef) {
297
298
  if (v.type === "parameterId") {
298
299
  parameterIds.add(v.parameterId);
299
300
  }
300
- rule.addInterfaceRule.sharedPropertyValues[sanitize(k)] = v;
301
301
  delete rule.addInterfaceRule.sharedPropertyValues[k];
302
+ rule.addInterfaceRule.sharedPropertyValues[sanitize(k)] = v;
302
303
  });
303
304
  break;
304
305
  case "modifyInterfaceRule":
@@ -307,8 +308,8 @@ function referencedParameterIds(actionDef) {
307
308
  if (v.type === "parameterId") {
308
309
  parameterIds.add(v.parameterId);
309
310
  }
310
- rule.modifyInterfaceRule.sharedPropertyValues[sanitize(k)] = v;
311
311
  delete rule.modifyInterfaceRule.sharedPropertyValues[k];
312
+ rule.modifyInterfaceRule.sharedPropertyValues[sanitize(k)] = v;
312
313
  });
313
314
  break;
314
315
  case "addObjectRule":
@@ -1 +1 @@
1
- {"version":3,"file":"defineAction.js","names":["invariant","namespace","ontologyDefinition","updateOntology","OntologyEntityTypeEnum","defineCreateInterfaceObjectAction","interfaceType","objectType","validation","defineAction","apiName","kebab","split","pop","undefined","displayName","displayMetadata","parameters","id","type","objectTypeReference","interfaceTypeRids","required","allowedValues","interfaceTypes","oneOf","label","value","objectTypeId","Object","entries","propertiesV2","map","prop","sharedPropertyType","nonNameSpacedApiName","extractActionParameterType","typeClasses","array","listLength","extractAllowedValuesFromType","status","rules","addInterfaceRule","interfaceApiName","objectTypeParameter","sharedPropertyValues","fromEntries","parameterId","createValidationRule","defineCreateObjectAction","properties","addObjectRule","propertyValues","p","structFieldValues","defineModifyInterfaceObjectAction","interfaceReference","interfaceTypeRid","modifyInterfaceRule","interfaceObjectToModifyParameter","defineModifyObjectAction","objectReference","modifyObjectRule","objectToModify","defineDeleteObjectAction","deleteObjectRule","objectToDelete","actionDef","parameterIds","ACTION_TYPE","Error","test","process","env","NODE_ENV","parameterIdsSet","Set","size","length","parameterIdsNotFound","Array","from","referencedParameterIds","filter","has","JSON","stringify","definedSectionIds","keys","sections","undefinedSectionsInOrdering","formContentOrdering","flatMap","s","sectionId","sId","forEach","rule","some","fullAction","__type","values","pId","add","item","sanitize","k","v","addOrModifyObjectRuleV2","min","staticValue","integer","max","markingType","pt","typeType","maybeAddList","isActionParameterTypePrimitive","includes","replace","toLowerCase","actionValidation","condition","comparison","operator","left","userProperty","userId","currentUser","propertyValue","groupIds","right","stringList","strings","name","failureMessage"],"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 invariant from \"tiny-invariant\";\nimport {\n namespace,\n ontologyDefinition,\n updateOntology,\n} from \"./defineOntology.js\";\nimport {\n type ActionParameterAllowedValues,\n type ActionParameterType,\n type ActionParameterTypePrimitive,\n type ActionType,\n type ActionTypeDefinition,\n type ActionValidationDefinition,\n type ActionValidationRule,\n type InterfaceType,\n type ObjectPropertyType,\n type ObjectType,\n OntologyEntityTypeEnum,\n type PropertyTypeType,\n type SharedPropertyType,\n} from \"./types.js\";\n\nexport function defineCreateInterfaceObjectAction(\n interfaceType: InterfaceType,\n objectType?: ObjectType,\n validation?: ActionValidationDefinition,\n): ActionType {\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 ...Object.entries(interfaceType.propertiesV2).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 rules: [\n {\n type: \"addInterfaceRule\",\n addInterfaceRule: {\n interfaceApiName: interfaceType.apiName,\n objectTypeParameter: \"objectTypeParameter\",\n sharedPropertyValues: Object.fromEntries(\n Object.entries(interfaceType.propertiesV2).map((\n [id, prop],\n ) => [id, { type: \"parameterId\", parameterId: id }]),\n ),\n },\n },\n ],\n ...(validation\n ? {\n validation: [\n createValidationRule(validation),\n ],\n }\n : {}),\n });\n}\n\nexport function defineCreateObjectAction(\n objectType: ObjectType,\n validation?: ActionValidationDefinition,\n): ActionType {\n return defineAction({\n apiName: `create-object-${\n kebab(objectType.apiName.split(\".\").pop() ?? objectType.apiName)\n }`,\n displayName: `Create ${objectType.displayName}`,\n parameters: [\n ...(objectType.properties?.map(prop => ({\n id: prop.apiName,\n displayName: prop.displayName,\n type: extractActionParameterType(prop),\n validation: {\n required: true,\n allowedValues: extractAllowedValuesFromType(prop.type),\n },\n })) ?? []),\n ],\n status: \"active\",\n rules: [{\n type: \"addObjectRule\",\n addObjectRule: {\n objectTypeId: objectType.apiName,\n propertyValues: objectType.properties\n ? Object.fromEntries(\n objectType.properties.map(\n p => [p.apiName, { type: \"parameterId\", parameterId: p.apiName }],\n ),\n )\n : {},\n structFieldValues: {},\n },\n }],\n ...(validation\n ? {\n validation: [\n createValidationRule(validation),\n ],\n }\n : {}),\n });\n}\n\nexport function defineModifyInterfaceObjectAction(\n interfaceType: InterfaceType,\n objectType?: ObjectType,\n validation?: ActionValidationDefinition,\n): ActionType {\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 ...Object.entries(interfaceType.propertiesV2).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 rules: [\n {\n type: \"modifyInterfaceRule\",\n modifyInterfaceRule: {\n interfaceObjectToModifyParameter: \"interfaceObjectToModifyParameter\",\n sharedPropertyValues: Object.fromEntries(\n Object.entries(interfaceType.propertiesV2).map((\n [id, prop],\n ) => [id, { type: \"parameterId\", parameterId: id }]),\n ),\n },\n },\n ],\n ...(validation\n ? {\n validation: [\n createValidationRule(validation),\n ],\n }\n : {}),\n });\n}\n\nexport function defineModifyObjectAction(\n objectType: ObjectType,\n validation?: ActionValidationDefinition,\n): ActionType {\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 ...(objectType.properties?.map(prop => ({\n id: prop.apiName,\n displayName: prop.displayName,\n type: extractActionParameterType(prop),\n validation: {\n required: false,\n allowedValues: extractAllowedValuesFromType(prop.type),\n },\n })) ?? []),\n ],\n status: \"active\",\n rules: [\n {\n type: \"modifyObjectRule\",\n modifyObjectRule: {\n objectToModify: \"objectToModifyParameter\",\n propertyValues: objectType.properties\n ? Object.fromEntries(\n objectType.properties.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 createValidationRule(validation),\n ],\n }\n : {}),\n });\n}\n\nexport function defineDeleteObjectAction(\n objectType: ObjectType,\n validation?: ActionValidationDefinition,\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 rules: [\n {\n type: \"deleteObjectRule\",\n deleteObjectRule: {\n objectToDelete: \"objectToDeleteParameter\",\n },\n },\n ],\n ...(validation\n ? {\n validation: [\n createValidationRule(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 const fullAction = {\n ...actionDef,\n apiName: apiName,\n __type: OntologyEntityTypeEnum.ACTION_TYPE,\n } as ActionType;\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 rule.addInterfaceRule.sharedPropertyValues[sanitize(k)] = v;\n delete rule.addInterfaceRule.sharedPropertyValues[k];\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 rule.modifyInterfaceRule.sharedPropertyValues[sanitize(k)] = v;\n delete rule.modifyInterfaceRule.sharedPropertyValues[k];\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 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 createValidationRule(\n actionValidation: ActionValidationDefinition,\n): ActionValidationRule {\n if (!(\"type\" in actionValidation)) {\n return actionValidation;\n }\n switch (actionValidation.type) {\n case \"group\":\n return {\n condition: {\n type: \"comparison\",\n comparison: {\n operator: \"EQUALS\",\n left: {\n type: \"userProperty\",\n userProperty: {\n userId: {\n type: \"currentUser\",\n currentUser: {},\n },\n propertyValue: {\n type: \"groupIds\",\n groupIds: {},\n },\n },\n },\n right: {\n type: \"staticValue\",\n staticValue: {\n type: \"stringList\",\n stringList: {\n strings: [\n actionValidation.name,\n ],\n },\n },\n },\n },\n },\n displayMetadata: {\n failureMessage:\n \"Insufficient permissions. Missing organization membership required to submit action\",\n typeClasses: [],\n },\n };\n default:\n throw new Error(\n `Unknown action validation type: ${actionValidation.type}`,\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"defineAction.js","names":["invariant","getAllInterfaceProperties","namespace","ontologyDefinition","updateOntology","OntologyEntityTypeEnum","defineCreateInterfaceObjectAction","interfaceType","objectType","validation","defineAction","apiName","kebab","split","pop","undefined","displayName","displayMetadata","parameters","id","type","objectTypeReference","interfaceTypeRids","required","allowedValues","interfaceTypes","oneOf","label","value","objectTypeId","Object","entries","map","prop","sharedPropertyType","nonNameSpacedApiName","extractActionParameterType","typeClasses","array","listLength","extractAllowedValuesFromType","status","rules","addInterfaceRule","interfaceApiName","objectTypeParameter","sharedPropertyValues","fromEntries","parameterId","createValidationRule","defineCreateObjectAction","properties","addObjectRule","propertyValues","p","structFieldValues","defineModifyInterfaceObjectAction","interfaceReference","interfaceTypeRid","modifyInterfaceRule","interfaceObjectToModifyParameter","defineModifyObjectAction","objectReference","modifyObjectRule","objectToModify","defineDeleteObjectAction","deleteObjectRule","objectToDelete","actionDef","parameterIds","ACTION_TYPE","Error","test","process","env","NODE_ENV","parameterIdsSet","Set","size","length","parameterIdsNotFound","Array","from","referencedParameterIds","filter","has","JSON","stringify","definedSectionIds","keys","sections","undefinedSectionsInOrdering","formContentOrdering","flatMap","s","sectionId","sId","forEach","rule","some","fullAction","__type","values","pId","add","item","sanitize","k","v","addOrModifyObjectRuleV2","min","staticValue","integer","max","markingType","pt","typeType","maybeAddList","isActionParameterTypePrimitive","includes","replace","toLowerCase","actionValidation","condition","comparison","operator","left","userProperty","userId","currentUser","propertyValue","groupIds","right","stringList","strings","name","failureMessage"],"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 invariant from \"tiny-invariant\";\nimport { getAllInterfaceProperties } from \"./defineObject.js\";\nimport {\n namespace,\n ontologyDefinition,\n updateOntology,\n} from \"./defineOntology.js\";\nimport {\n type ActionParameterAllowedValues,\n type ActionParameterType,\n type ActionParameterTypePrimitive,\n type ActionType,\n type ActionTypeDefinition,\n type ActionValidationDefinition,\n type ActionValidationRule,\n type InterfaceType,\n type ObjectPropertyType,\n type ObjectType,\n OntologyEntityTypeEnum,\n type PropertyTypeType,\n type SharedPropertyType,\n} from \"./types.js\";\n\nexport function defineCreateInterfaceObjectAction(\n interfaceType: InterfaceType,\n objectType?: ObjectType,\n validation?: ActionValidationDefinition,\n): ActionType {\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 ...Object.entries(getAllInterfaceProperties(interfaceType)).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 rules: [\n {\n type: \"addInterfaceRule\",\n addInterfaceRule: {\n interfaceApiName: interfaceType.apiName,\n objectTypeParameter: \"objectTypeParameter\",\n sharedPropertyValues: Object.fromEntries(\n Object.entries(getAllInterfaceProperties(interfaceType)).map((\n [id, prop],\n ) => [id, { type: \"parameterId\", parameterId: id }]),\n ),\n },\n },\n ],\n ...(validation\n ? {\n validation: [\n createValidationRule(validation),\n ],\n }\n : {}),\n });\n}\n\nexport function defineCreateObjectAction(\n objectType: ObjectType,\n validation?: ActionValidationDefinition,\n): ActionType {\n return defineAction({\n apiName: `create-object-${\n kebab(objectType.apiName.split(\".\").pop() ?? objectType.apiName)\n }`,\n displayName: `Create ${objectType.displayName}`,\n parameters: [\n ...(objectType.properties?.map(prop => ({\n id: prop.apiName,\n displayName: prop.displayName,\n type: extractActionParameterType(prop),\n validation: {\n required: true,\n allowedValues: extractAllowedValuesFromType(prop.type),\n },\n })) ?? []),\n ],\n status: \"active\",\n rules: [{\n type: \"addObjectRule\",\n addObjectRule: {\n objectTypeId: objectType.apiName,\n propertyValues: objectType.properties\n ? Object.fromEntries(\n objectType.properties.map(\n p => [p.apiName, { type: \"parameterId\", parameterId: p.apiName }],\n ),\n )\n : {},\n structFieldValues: {},\n },\n }],\n ...(validation\n ? {\n validation: [\n createValidationRule(validation),\n ],\n }\n : {}),\n });\n}\n\nexport function defineModifyInterfaceObjectAction(\n interfaceType: InterfaceType,\n objectType?: ObjectType,\n validation?: ActionValidationDefinition,\n): ActionType {\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 ...Object.entries(getAllInterfaceProperties(interfaceType)).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 rules: [\n {\n type: \"modifyInterfaceRule\",\n modifyInterfaceRule: {\n interfaceObjectToModifyParameter: \"interfaceObjectToModifyParameter\",\n sharedPropertyValues: Object.fromEntries(\n Object.entries(getAllInterfaceProperties(interfaceType)).map((\n [id, prop],\n ) => [id, { type: \"parameterId\", parameterId: id }]),\n ),\n },\n },\n ],\n ...(validation\n ? {\n validation: [\n createValidationRule(validation),\n ],\n }\n : {}),\n });\n}\n\nexport function defineModifyObjectAction(\n objectType: ObjectType,\n validation?: ActionValidationDefinition,\n): ActionType {\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 ...(objectType.properties?.map(prop => ({\n id: prop.apiName,\n displayName: prop.displayName,\n type: extractActionParameterType(prop),\n validation: {\n required: false,\n allowedValues: extractAllowedValuesFromType(prop.type),\n },\n })) ?? []),\n ],\n status: \"active\",\n rules: [\n {\n type: \"modifyObjectRule\",\n modifyObjectRule: {\n objectToModify: \"objectToModifyParameter\",\n propertyValues: objectType.properties\n ? Object.fromEntries(\n objectType.properties.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 createValidationRule(validation),\n ],\n }\n : {}),\n });\n}\n\nexport function defineDeleteObjectAction(\n objectType: ObjectType,\n validation?: ActionValidationDefinition,\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 rules: [\n {\n type: \"deleteObjectRule\",\n deleteObjectRule: {\n objectToDelete: \"objectToDeleteParameter\",\n },\n },\n ],\n ...(validation\n ? {\n validation: [\n createValidationRule(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 const fullAction = {\n ...actionDef,\n apiName: apiName,\n __type: OntologyEntityTypeEnum.ACTION_TYPE,\n } as ActionType;\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 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 createValidationRule(\n actionValidation: ActionValidationDefinition,\n): ActionValidationRule {\n if (!(\"type\" in actionValidation)) {\n return actionValidation;\n }\n switch (actionValidation.type) {\n case \"group\":\n return {\n condition: {\n type: \"comparison\",\n comparison: {\n operator: \"EQUALS\",\n left: {\n type: \"userProperty\",\n userProperty: {\n userId: {\n type: \"currentUser\",\n currentUser: {},\n },\n propertyValue: {\n type: \"groupIds\",\n groupIds: {},\n },\n },\n },\n right: {\n type: \"staticValue\",\n staticValue: {\n type: \"stringList\",\n stringList: {\n strings: [\n actionValidation.name,\n ],\n },\n },\n },\n },\n },\n displayMetadata: {\n failureMessage:\n \"Insufficient permissions. Missing organization membership required to submit action\",\n typeClasses: [],\n },\n };\n default:\n throw new Error(\n `Unknown action validation type: ${actionValidation.type}`,\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -21,16 +21,16 @@ import { OntologyEntityTypeEnum } from "./types.js";
21
21
  export function defineInterface(interfaceDef) {
22
22
  const apiName = namespace + interfaceDef.apiName;
23
23
  !(ontologyDefinition[OntologyEntityTypeEnum.INTERFACE_TYPE][apiName] === undefined) ? process.env.NODE_ENV !== "production" ? invariant(false, `Interface ${apiName} already exists`) : invariant(false) : void 0;
24
- const properties = Object.fromEntries(Object.entries(interfaceDef.properties ?? {}).map(([apiName, type]) => {
24
+ const properties = Object.fromEntries(Object.entries(interfaceDef.properties ?? {}).map(([propApiName, type]) => {
25
25
  if (typeof type === "object" && "propertyDefinition" in type) {
26
- return [apiName, {
26
+ return [namespace + propApiName, {
27
27
  required: type.required,
28
- sharedPropertyType: unifyBasePropertyDefinition(namespace, apiName, type.propertyDefinition)
28
+ sharedPropertyType: unifyBasePropertyDefinition(namespace, propApiName, type.propertyDefinition)
29
29
  }];
30
30
  }
31
- return [apiName, {
31
+ return [namespace + propApiName, {
32
32
  required: true,
33
- sharedPropertyType: unifyBasePropertyDefinition(namespace, apiName, type)
33
+ sharedPropertyType: unifyBasePropertyDefinition(namespace, propApiName, type)
34
34
  }];
35
35
  }));
36
36
  const extendsInterfaces = interfaceDef.extends ? Array.isArray(interfaceDef.extends) ? interfaceDef.extends : [interfaceDef.extends] : [];
@@ -55,6 +55,7 @@ export function defineInterface(interfaceDef) {
55
55
  links: [],
56
56
  status,
57
57
  propertiesV2: properties,
58
+ searchable: interfaceDef.searchable ?? true,
58
59
  __type: OntologyEntityTypeEnum.INTERFACE_TYPE
59
60
  };
60
61
  updateOntology(fullInterface);
@@ -1 +1 @@
1
- {"version":3,"file":"defineInterface.js","names":["invariant","namespace","ontologyDefinition","updateOntology","withoutNamespace","defineSharedPropertyType","OntologyEntityTypeEnum","defineInterface","interfaceDef","apiName","INTERFACE_TYPE","undefined","process","env","NODE_ENV","properties","Object","fromEntries","entries","map","type","required","sharedPropertyType","unifyBasePropertyDefinition","propertyDefinition","extendsInterfaces","extends","Array","isArray","status","mapSimplifiedStatusToInterfaceTypeStatus","deprecated","message","deadline","fullInterface","displayMetadata","displayName","description","icon","blueprint","color","locator","links","propertiesV2","__type","isPropertyTypeType","v","replacedBy","active","experimental","Error","JSON","stringify","spt","array","unNamespacedTypeApiName","key"],"sources":["defineInterface.ts"],"sourcesContent":["/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport invariant from \"tiny-invariant\";\nimport {\n namespace,\n ontologyDefinition,\n updateOntology,\n withoutNamespace,\n} from \"./defineOntology.js\";\nimport { defineSharedPropertyType } from \"./defineSpt.js\";\nimport type { BlueprintIcon } from \"./iconNames.js\";\nimport {\n type InterfaceType,\n type InterfaceTypeStatus,\n OntologyEntityTypeEnum,\n type PropertyTypeType,\n type SharedPropertyType,\n} from \"./types.js\";\n\ntype SimplifiedInterfaceTypeStatus =\n | { type: \"deprecated\"; message: string; deadline: string }\n | { type: \"active\" }\n | { type: \"experimental\" };\n\ntype PropertyBase = SharedPropertyType | PropertyTypeType;\ntype PropertyWithOptional = {\n required: boolean;\n propertyDefinition: PropertyBase;\n};\n\nexport type InterfaceTypeDefinition = {\n apiName: string;\n displayName?: string;\n description?: string;\n icon?: { locator: BlueprintIcon; color: string };\n status?: SimplifiedInterfaceTypeStatus;\n properties?: Record<\n string,\n PropertyBase | PropertyWithOptional\n >;\n extends?: InterfaceType | InterfaceType[];\n};\n\nexport function defineInterface(\n interfaceDef: InterfaceTypeDefinition,\n): InterfaceType {\n const apiName = namespace + interfaceDef.apiName;\n invariant(\n ontologyDefinition[OntologyEntityTypeEnum.INTERFACE_TYPE][apiName]\n === undefined,\n `Interface ${apiName} already exists`,\n );\n\n const properties = Object.fromEntries(\n Object.entries(interfaceDef.properties ?? {}).map<\n [string, { required: boolean; sharedPropertyType: SharedPropertyType }]\n >(\n ([apiName, type]) => {\n if (typeof type === \"object\" && \"propertyDefinition\" in type) {\n return [apiName, {\n required: type.required,\n sharedPropertyType: unifyBasePropertyDefinition(\n namespace,\n apiName,\n type.propertyDefinition,\n ),\n }];\n }\n\n return [apiName, {\n required: true,\n sharedPropertyType: unifyBasePropertyDefinition(\n namespace,\n apiName,\n type,\n ),\n }];\n },\n ),\n );\n\n const extendsInterfaces = interfaceDef.extends\n ? (Array.isArray(interfaceDef.extends)\n ? interfaceDef.extends\n : [interfaceDef.extends])\n : [];\n\n const status: InterfaceTypeStatus = mapSimplifiedStatusToInterfaceTypeStatus(\n interfaceDef.status ?? { type: \"active\" },\n );\n\n invariant(\n status.type !== \"deprecated\"\n || (status.deprecated.message && status.deprecated.deadline),\n `Deprecated status must include message and deadline properties.`,\n );\n\n const fullInterface: InterfaceType = {\n apiName,\n displayMetadata: {\n displayName: interfaceDef.displayName ?? interfaceDef.apiName,\n description: interfaceDef.description ?? interfaceDef.displayName\n ?? interfaceDef.apiName,\n icon: interfaceDef.icon !== undefined\n ? {\n type: \"blueprint\",\n blueprint: {\n color: interfaceDef.icon.color,\n locator: interfaceDef.icon.locator,\n },\n }\n : undefined,\n },\n extendsInterfaces,\n links: [],\n status,\n propertiesV2: properties,\n __type: OntologyEntityTypeEnum.INTERFACE_TYPE,\n };\n\n updateOntology(fullInterface);\n return fullInterface;\n}\n\nfunction isPropertyTypeType(\n v: PropertyTypeType,\n): v is PropertyTypeType {\n return v === \"boolean\" || v === \"byte\"\n || v === \"date\" || v === \"decimal\" || v === \"double\"\n || v === \"float\" || v === \"geopoint\" || v === \"geoshape\"\n || v === \"integer\" || v === \"long\"\n || (typeof v === \"object\" && v.type === \"marking\")\n || v === \"short\" || v === \"string\"\n || v === \"timestamp\";\n}\n\nfunction mapSimplifiedStatusToInterfaceTypeStatus(\n status: SimplifiedInterfaceTypeStatus,\n): InterfaceTypeStatus {\n switch (status.type) {\n case \"deprecated\":\n return {\n type: \"deprecated\",\n deprecated: {\n message: status.message,\n deadline: status.deadline,\n replacedBy: undefined,\n },\n };\n case \"active\":\n return {\n type: \"active\",\n active: {},\n };\n case \"experimental\":\n return {\n type: \"experimental\",\n experimental: {},\n };\n default:\n throw new Error(`Invalid status type: ${(status as any).type}`);\n }\n}\n\nfunction unifyBasePropertyDefinition(\n namespace: string,\n apiName: string,\n type: PropertyBase,\n): SharedPropertyType {\n if (\n typeof type === \"string\"\n || (typeof type === \"object\" && !(\"apiName\" in type))\n ) {\n invariant(\n isPropertyTypeType(type),\n `Invalid data type ${\n JSON.stringify(type)\n } for property ${apiName} on InterfaceType ${apiName}`,\n );\n\n const spt = defineSharedPropertyType({\n apiName,\n displayName: apiName,\n type,\n array: false,\n });\n return spt;\n } else {\n const unNamespacedTypeApiName = withoutNamespace(type.apiName);\n invariant(\n namespace + apiName === type.apiName\n || apiName === unNamespacedTypeApiName,\n `property key and it's apiName must be identical. ${\n JSON.stringify({ key: apiName, apiName: type.apiName })\n }`,\n );\n return type;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"defineInterface.js","names":["invariant","namespace","ontologyDefinition","updateOntology","withoutNamespace","defineSharedPropertyType","OntologyEntityTypeEnum","defineInterface","interfaceDef","apiName","INTERFACE_TYPE","undefined","process","env","NODE_ENV","properties","Object","fromEntries","entries","map","propApiName","type","required","sharedPropertyType","unifyBasePropertyDefinition","propertyDefinition","extendsInterfaces","extends","Array","isArray","status","mapSimplifiedStatusToInterfaceTypeStatus","deprecated","message","deadline","fullInterface","displayMetadata","displayName","description","icon","blueprint","color","locator","links","propertiesV2","searchable","__type","isPropertyTypeType","v","replacedBy","active","experimental","Error","JSON","stringify","spt","array","unNamespacedTypeApiName","key"],"sources":["defineInterface.ts"],"sourcesContent":["/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport invariant from \"tiny-invariant\";\nimport {\n namespace,\n ontologyDefinition,\n updateOntology,\n withoutNamespace,\n} from \"./defineOntology.js\";\nimport { defineSharedPropertyType } from \"./defineSpt.js\";\nimport type { BlueprintIcon } from \"./iconNames.js\";\nimport {\n type InterfaceType,\n type InterfaceTypeStatus,\n OntologyEntityTypeEnum,\n type PropertyTypeType,\n type SharedPropertyType,\n} from \"./types.js\";\n\ntype SimplifiedInterfaceTypeStatus =\n | { type: \"deprecated\"; message: string; deadline: string }\n | { type: \"active\" }\n | { type: \"experimental\" };\n\ntype PropertyBase = SharedPropertyType | PropertyTypeType;\ntype PropertyWithOptional = {\n required: boolean;\n propertyDefinition: PropertyBase;\n};\n\nexport type InterfaceTypeDefinition = {\n apiName: string;\n displayName?: string;\n description?: string;\n icon?: { locator: BlueprintIcon; color: string };\n status?: SimplifiedInterfaceTypeStatus;\n properties?: Record<\n string,\n PropertyBase | PropertyWithOptional\n >;\n extends?: InterfaceType | InterfaceType[];\n searchable?: boolean;\n};\n\nexport function defineInterface(\n interfaceDef: InterfaceTypeDefinition,\n): InterfaceType {\n const apiName = namespace + interfaceDef.apiName;\n invariant(\n ontologyDefinition[OntologyEntityTypeEnum.INTERFACE_TYPE][apiName]\n === undefined,\n `Interface ${apiName} already exists`,\n );\n\n const properties = Object.fromEntries(\n Object.entries(interfaceDef.properties ?? {}).map<\n [string, { required: boolean; sharedPropertyType: SharedPropertyType }]\n >(\n ([propApiName, type]) => {\n if (typeof type === \"object\" && \"propertyDefinition\" in type) {\n return [namespace + propApiName, {\n required: type.required,\n sharedPropertyType: unifyBasePropertyDefinition(\n namespace,\n propApiName,\n type.propertyDefinition,\n ),\n }];\n }\n\n return [namespace + propApiName, {\n required: true,\n sharedPropertyType: unifyBasePropertyDefinition(\n namespace,\n propApiName,\n type,\n ),\n }];\n },\n ),\n );\n\n const extendsInterfaces = interfaceDef.extends\n ? (Array.isArray(interfaceDef.extends)\n ? interfaceDef.extends\n : [interfaceDef.extends])\n : [];\n\n const status: InterfaceTypeStatus = mapSimplifiedStatusToInterfaceTypeStatus(\n interfaceDef.status ?? { type: \"active\" },\n );\n\n invariant(\n status.type !== \"deprecated\"\n || (status.deprecated.message && status.deprecated.deadline),\n `Deprecated status must include message and deadline properties.`,\n );\n\n const fullInterface: InterfaceType = {\n apiName,\n displayMetadata: {\n displayName: interfaceDef.displayName ?? interfaceDef.apiName,\n description: interfaceDef.description ?? interfaceDef.displayName\n ?? interfaceDef.apiName,\n icon: interfaceDef.icon !== undefined\n ? {\n type: \"blueprint\",\n blueprint: {\n color: interfaceDef.icon.color,\n locator: interfaceDef.icon.locator,\n },\n }\n : undefined,\n },\n extendsInterfaces,\n links: [],\n status,\n propertiesV2: properties,\n searchable: interfaceDef.searchable ?? true,\n __type: OntologyEntityTypeEnum.INTERFACE_TYPE,\n };\n\n updateOntology(fullInterface);\n return fullInterface;\n}\n\nfunction isPropertyTypeType(\n v: PropertyTypeType,\n): v is PropertyTypeType {\n return v === \"boolean\" || v === \"byte\"\n || v === \"date\" || v === \"decimal\" || v === \"double\"\n || v === \"float\" || v === \"geopoint\" || v === \"geoshape\"\n || v === \"integer\" || v === \"long\"\n || (typeof v === \"object\" && v.type === \"marking\")\n || v === \"short\" || v === \"string\"\n || v === \"timestamp\";\n}\n\nfunction mapSimplifiedStatusToInterfaceTypeStatus(\n status: SimplifiedInterfaceTypeStatus,\n): InterfaceTypeStatus {\n switch (status.type) {\n case \"deprecated\":\n return {\n type: \"deprecated\",\n deprecated: {\n message: status.message,\n deadline: status.deadline,\n replacedBy: undefined,\n },\n };\n case \"active\":\n return {\n type: \"active\",\n active: {},\n };\n case \"experimental\":\n return {\n type: \"experimental\",\n experimental: {},\n };\n default:\n throw new Error(`Invalid status type: ${(status as any).type}`);\n }\n}\n\nfunction unifyBasePropertyDefinition(\n namespace: string,\n apiName: string,\n type: PropertyBase,\n): SharedPropertyType {\n if (\n typeof type === \"string\"\n || (typeof type === \"object\" && !(\"apiName\" in type))\n ) {\n invariant(\n isPropertyTypeType(type),\n `Invalid data type ${\n JSON.stringify(type)\n } for property ${apiName} on InterfaceType ${apiName}`,\n );\n\n const spt = defineSharedPropertyType({\n apiName,\n displayName: apiName,\n type,\n array: false,\n });\n return spt;\n } else {\n const unNamespacedTypeApiName = withoutNamespace(type.apiName);\n invariant(\n namespace + apiName === type.apiName\n || apiName === unNamespacedTypeApiName,\n `property key and it's apiName must be identical. ${\n JSON.stringify({ key: apiName, apiName: type.apiName })\n }`,\n );\n return type;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -15,7 +15,7 @@
15
15
  */
16
16
 
17
17
  import invariant from "tiny-invariant";
18
- import { extractNamespace, namespace, ontologyDefinition, updateOntology } from "./defineOntology.js";
18
+ import { addNamespaceIfNone, namespace, ontologyDefinition, updateOntology } from "./defineOntology.js";
19
19
  import { OntologyEntityTypeEnum } from "./types.js";
20
20
 
21
21
  // From https://stackoverflow.com/a/79288714
@@ -49,28 +49,24 @@ export function defineObject(objectDef) {
49
49
  !(objectDef.properties ?? []).filter(p => p.apiName === objectDef.titlePropertyApiName).every(p => !isExotic(p.type)) ? process.env.NODE_ENV !== "production" ? invariant(false, `Title property ${objectDef.titlePropertyApiName} must be a primitive type`) : invariant(false) : void 0;
50
50
  !(objectDef.properties ?? []).filter(p => p.apiName === objectDef.primaryKeyPropertyApiName).every(p => !isExotic(p.type)) ? process.env.NODE_ENV !== "production" ? invariant(false, `Primary key properties ${objectDef.primaryKeyPropertyApiName} can only be primitive types`) : invariant(false) : void 0;
51
51
  objectDef.implementsInterfaces?.forEach(interfaceImpl => {
52
- const nonExistentInterfaceProperties = interfaceImpl.propertyMapping.map(val => val.interfaceProperty).filter(interfaceProperty => interfaceImpl.implements.propertiesV2[interfaceProperty] === undefined).map(interfaceProp => ({
52
+ const allInterfaceProperties = getAllInterfaceProperties(interfaceImpl.implements);
53
+ const nonExistentInterfaceProperties = interfaceImpl.propertyMapping.map(val => val.interfaceProperty).filter(interfaceProperty => allInterfaceProperties[addNamespaceIfNone(interfaceProperty)] === undefined).map(interfaceProp => ({
53
54
  type: "invalid",
54
- reason: `Interface property ${interfaceImpl.implements.apiName}.${interfaceProp} referenced in ${objectDef.apiName} object does not exist`
55
+ reason: `Interface property ${interfaceProp} referenced in ${objectDef.apiName} object does not exist`
55
56
  }));
56
- const interfaceToObjectProperties = Object.fromEntries(interfaceImpl.propertyMapping.map(mapping => [mapping.interfaceProperty, mapping.mapsTo]));
57
+ const interfaceToObjectProperties = Object.fromEntries(interfaceImpl.propertyMapping.map(mapping => [addNamespaceIfNone(mapping.interfaceProperty), mapping.mapsTo]));
57
58
  const validateProperty = interfaceProp => {
58
- if (interfaceProp[1].sharedPropertyType.nonNameSpacedApiName in interfaceToObjectProperties) {
59
+ if (interfaceProp[1].sharedPropertyType.apiName in interfaceToObjectProperties) {
59
60
  return validateInterfaceImplProperty(interfaceProp[1].sharedPropertyType, interfaceToObjectProperties[interfaceProp[0]], objectDef);
60
61
  }
61
62
  return {
62
63
  type: "invalid",
63
- reason: `Interface property ${interfaceImpl.implements.apiName}.${interfaceProp[1].sharedPropertyType.nonNameSpacedApiName} not implemented by ${objectDef.apiName} object definition`
64
+ reason: `Interface property ${interfaceProp[1].sharedPropertyType.apiName} not implemented by ${objectDef.apiName} object definition`
64
65
  };
65
66
  };
66
- const baseValidations = Object.entries(interfaceImpl.implements.propertiesV2).map(validateProperty);
67
- const extendsValidations = interfaceImpl.implements.extendsInterfaces.flatMap(interfaceType => Object.entries(interfaceType.propertiesV2).map(validateProperty));
68
- const allFailedValidations = baseValidations.concat(extendsValidations, nonExistentInterfaceProperties).filter(val => val.type === "invalid");
67
+ const validations = Object.entries(getAllInterfaceProperties(interfaceImpl.implements)).map(validateProperty);
68
+ const allFailedValidations = validations.concat(nonExistentInterfaceProperties).filter(val => val.type === "invalid");
69
69
  !(allFailedValidations.length === 0) ? process.env.NODE_ENV !== "production" ? invariant(false, "\n" + allFailedValidations.map(formatValidationErrors).join("\n")) : invariant(false) : void 0;
70
- interfaceImpl.propertyMapping = interfaceImpl.propertyMapping.map(mapping => ({
71
- interfaceProperty: extractNamespace(interfaceImpl.implements.apiName) + mapping.interfaceProperty,
72
- mapsTo: mapping.mapsTo
73
- }));
74
70
  });
75
71
  const finalObject = {
76
72
  ...objectDef,
@@ -119,4 +115,14 @@ export function convertToDisplayName(s) {
119
115
  export function convertToPluralDisplayName(s) {
120
116
  return s === undefined || s == null ? "" : s.endsWith("s") ? convertToDisplayName(s) : convertToDisplayName(s) + "s";
121
117
  }
118
+ export function getAllInterfaceProperties(interfaceType) {
119
+ let properties = interfaceType.propertiesV2;
120
+ interfaceType.extendsInterfaces.forEach(ext => {
121
+ properties = {
122
+ ...properties,
123
+ ...getAllInterfaceProperties(ext)
124
+ };
125
+ });
126
+ return properties;
127
+ }
122
128
  //# sourceMappingURL=defineObject.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"defineObject.js","names":["invariant","extractNamespace","namespace","ontologyDefinition","updateOntology","OntologyEntityTypeEnum","ISO_8601_DURATION","ISO_8601_DATETIME","defineObject","objectDef","apiName","propertyApiNames","properties","map","val","OBJECT_TYPE","undefined","Error","includes","titlePropertyApiName","process","env","NODE_ENV","primaryKeyPropertyApiName","filter","p","every","editOnly","retentionPeriod","datasource","test","status","activeProperties","property","length","join","type","deadline","isExotic","implementsInterfaces","forEach","interfaceImpl","nonExistentInterfaceProperties","propertyMapping","interfaceProperty","implements","propertiesV2","interfaceProp","reason","interfaceToObjectProperties","Object","fromEntries","mapping","mapsTo","validateProperty","sharedPropertyType","nonNameSpacedApiName","validateInterfaceImplProperty","baseValidations","entries","extendsValidations","extendsInterfaces","flatMap","interfaceType","allFailedValidations","concat","formatValidationErrors","finalObject","__type","error","spt","mappedObjectProp","object","objProp","find","prop","convertToDisplayName","s","charAt","toUpperCase","slice","convertToPluralDisplayName","endsWith"],"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 extractNamespace,\n namespace,\n ontologyDefinition,\n updateOntology,\n} from \"./defineOntology.js\";\nimport type {\n InterfacePropertyType,\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 ?? []).map(val => val.apiName);\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 ?? []).filter(p =>\n p.apiName === objectDef.primaryKeyPropertyApiName\n ).every(p => !p.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 = (objectDef.properties ?? [])\n .filter(property => property.status === \"active\")\n .map(property => property.apiName);\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 (objectDef.properties ?? []).filter(p =>\n p.apiName === objectDef.titlePropertyApiName\n ).every(p => !isExotic(p.type)),\n `Title property ${objectDef.titlePropertyApiName} must be a primitive type`,\n );\n invariant(\n (objectDef.properties ?? []).filter(p =>\n p.apiName === objectDef.primaryKeyPropertyApiName\n ).every(p => !isExotic(p.type)),\n `Primary key properties ${objectDef.primaryKeyPropertyApiName} can only be primitive types`,\n );\n\n objectDef.implementsInterfaces?.forEach(interfaceImpl => {\n const nonExistentInterfaceProperties: ValidationResult[] = interfaceImpl\n .propertyMapping.map(val => val.interfaceProperty).filter(\n interfaceProperty =>\n interfaceImpl.implements.propertiesV2[interfaceProperty]\n === undefined,\n ).map(interfaceProp => ({\n type: \"invalid\",\n reason:\n `Interface property ${interfaceImpl.implements.apiName}.${interfaceProp} referenced in ${objectDef.apiName} object does not exist`,\n }));\n\n const interfaceToObjectProperties = Object.fromEntries(\n interfaceImpl.propertyMapping.map(\n mapping => [mapping.interfaceProperty, mapping.mapsTo],\n ),\n );\n const validateProperty = (\n interfaceProp: [string, InterfacePropertyType],\n ): ValidationResult => {\n if (\n interfaceProp[1].sharedPropertyType.nonNameSpacedApiName\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 ${interfaceImpl.implements.apiName}.${\n interfaceProp[1].sharedPropertyType.nonNameSpacedApiName\n } not implemented by ${objectDef.apiName} object definition`,\n };\n };\n const baseValidations = Object.entries(\n interfaceImpl.implements.propertiesV2,\n )\n .map<ValidationResult>(validateProperty);\n const extendsValidations = interfaceImpl.implements.extendsInterfaces\n .flatMap(interfaceType =>\n Object.entries(interfaceType.propertiesV2).map(validateProperty)\n );\n\n const allFailedValidations = baseValidations.concat(\n extendsValidations,\n nonExistentInterfaceProperties,\n ).filter(val => val.type === \"invalid\");\n invariant(\n allFailedValidations.length === 0,\n \"\\n\" + allFailedValidations.map(formatValidationErrors).join(\"\\n\"),\n );\n\n interfaceImpl.propertyMapping = interfaceImpl.propertyMapping.map((\n mapping,\n ) => ({\n interfaceProperty: extractNamespace(interfaceImpl.implements.apiName)\n + mapping.interfaceProperty,\n mapsTo: mapping.mapsTo,\n }));\n });\n\n const finalObject: ObjectType = {\n ...objectDef,\n apiName: apiName,\n __type: OntologyEntityTypeEnum.OBJECT_TYPE,\n };\n updateOntology(finalObject);\n return finalObject;\n}\n\nexport function isExotic(\n type: PropertyTypeType,\n): type is PropertyTypeTypeExotic {\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?.find(prop =>\n prop.apiName === mappedObjectProp\n );\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 (spt.type !== 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"],"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","map","val","OBJECT_TYPE","undefined","Error","includes","titlePropertyApiName","process","env","NODE_ENV","primaryKeyPropertyApiName","filter","p","every","editOnly","retentionPeriod","datasource","test","status","activeProperties","property","length","join","type","deadline","isExotic","implementsInterfaces","forEach","interfaceImpl","allInterfaceProperties","getAllInterfaceProperties","implements","nonExistentInterfaceProperties","propertyMapping","interfaceProperty","interfaceProp","reason","interfaceToObjectProperties","Object","fromEntries","mapping","mapsTo","validateProperty","sharedPropertyType","validateInterfaceImplProperty","validations","entries","allFailedValidations","concat","formatValidationErrors","finalObject","__type","error","spt","mappedObjectProp","object","objProp","find","prop","convertToDisplayName","s","charAt","toUpperCase","slice","convertToPluralDisplayName","endsWith","interfaceType","propertiesV2","extendsInterfaces","ext"],"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 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 ?? []).map(val => val.apiName);\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 ?? []).filter(p =>\n p.apiName === objectDef.primaryKeyPropertyApiName\n ).every(p => !p.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 = (objectDef.properties ?? [])\n .filter(property => property.status === \"active\")\n .map(property => property.apiName);\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 (objectDef.properties ?? []).filter(p =>\n p.apiName === objectDef.titlePropertyApiName\n ).every(p => !isExotic(p.type)),\n `Title property ${objectDef.titlePropertyApiName} must be a primitive type`,\n );\n invariant(\n (objectDef.properties ?? []).filter(p =>\n p.apiName === objectDef.primaryKeyPropertyApiName\n ).every(p => !isExotic(p.type)),\n `Primary key properties ${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 finalObject: ObjectType = {\n ...objectDef,\n apiName: apiName,\n __type: OntologyEntityTypeEnum.OBJECT_TYPE,\n };\n updateOntology(finalObject);\n return finalObject;\n}\n\nexport function isExotic(\n type: PropertyTypeType,\n): type is PropertyTypeTypeExotic {\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?.find(prop =>\n prop.apiName === mappedObjectProp\n );\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 (spt.type !== 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"],"mappings":"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","ignoreList":[]}
@@ -312,7 +312,7 @@ function convertObject(objectType) {
312
312
  redacted: false,
313
313
  implementsInterfaces2: implementations.map(impl => ({
314
314
  interfaceTypeApiName: impl.implements.apiName,
315
- properties: Object.fromEntries(impl.propertyMapping.map(mapping => [mapping.interfaceProperty, {
315
+ properties: Object.fromEntries(impl.propertyMapping.map(mapping => [addNamespaceIfNone(mapping.interfaceProperty), {
316
316
  propertyTypeRid: mapping.mapsTo
317
317
  }]))
318
318
  })),
@@ -445,7 +445,12 @@ function convertProperty(property) {
445
445
  indexedForSearch: property.indexedForSearch ?? true,
446
446
  ruleSetBinding: undefined,
447
447
  baseFormatter: property.baseFormatter,
448
- type: convertType(property.type),
448
+ type: property.array ? {
449
+ type: "array",
450
+ array: {
451
+ subtype: convertType(property.type)
452
+ }
453
+ } : convertType(property.type),
449
454
  typeClasses: property.typeClasses ?? (shouldNotHaveRenderHints(property.type) ? [] : defaultTypeClasses),
450
455
  status: convertObjectStatus(property.status),
451
456
  inlineAction: undefined,
@@ -584,6 +589,9 @@ function convertInterface(interfaceType) {
584
589
  allLinks: [],
585
590
  allProperties: [],
586
591
  allPropertiesV2: {},
592
+ // TODO(mwalther): Support propertiesV3
593
+ propertiesV3: {},
594
+ allPropertiesV3: {},
587
595
  properties: []
588
596
  };
589
597
  }
@@ -1038,11 +1046,12 @@ function writeDependencyFile(dependencyFile) {
1038
1046
  }
1039
1047
  function dependencyInjectionString() {
1040
1048
  const namespaceNoDot = namespace.endsWith(".") ? namespace.slice(0, -1) : namespace;
1041
- return `
1042
- import { fileURLToPath } from "url";
1043
- import { addDependency } from '@osdk/maker';
1049
+ return `import { addDependency } from "@osdk/maker";
1044
1050
 
1045
- addDependency("${namespaceNoDot}", fileURLToPath(import.meta.url));
1051
+ addDependency("${namespaceNoDot}", new URL(import.meta.url).pathname);
1046
1052
  `;
1047
1053
  }
1054
+ export function addNamespaceIfNone(apiName) {
1055
+ return apiName.includes(".") ? apiName : namespace + apiName;
1056
+ }
1048
1057
  //# sourceMappingURL=defineOntology.js.map