@osdk/maker 0.9.0-beta.9 → 0.9.0

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 (109) hide show
  1. package/CHANGELOG.md +304 -0
  2. package/build/browser/api/defineImportSpt.js +24 -2
  3. package/build/browser/api/defineImportSpt.js.map +1 -1
  4. package/build/browser/api/defineInterface.js +34 -6
  5. package/build/browser/api/defineInterface.js.map +1 -1
  6. package/build/browser/api/defineInterfaceLinkConstraint.js +2 -1
  7. package/build/browser/api/defineInterfaceLinkConstraint.js.map +1 -1
  8. package/build/browser/api/defineObject.js +57 -62
  9. package/build/browser/api/defineObject.js.map +1 -1
  10. package/build/browser/api/defineOntology.js +130 -14
  11. package/build/browser/api/defineOntology.js.map +1 -1
  12. package/build/browser/api/defineSpt.js +2 -0
  13. package/build/browser/api/defineSpt.js.map +1 -1
  14. package/build/browser/api/defineValueType.js +57 -10
  15. package/build/browser/api/defineValueType.js.map +1 -1
  16. package/build/browser/api/iconNames.js +0 -15
  17. package/build/browser/api/iconNames.js.map +1 -1
  18. package/build/browser/api/overall.test.js +461 -68
  19. package/build/browser/api/overall.test.js.map +1 -1
  20. package/build/browser/api/types.js +0 -15
  21. package/build/browser/api/types.js.map +1 -1
  22. package/build/browser/cli/main.js +3 -4
  23. package/build/browser/cli/main.js.map +1 -1
  24. package/build/browser/index.js +2 -0
  25. package/build/browser/index.js.map +1 -1
  26. package/build/cjs/index.cjs +716 -0
  27. package/build/cjs/index.cjs.map +1 -0
  28. package/build/cjs/index.d.cts +343 -0
  29. package/build/esm/api/defineImportSpt.js +24 -2
  30. package/build/esm/api/defineImportSpt.js.map +1 -1
  31. package/build/esm/api/defineInterface.js +34 -6
  32. package/build/esm/api/defineInterface.js.map +1 -1
  33. package/build/esm/api/defineInterfaceLinkConstraint.js +2 -1
  34. package/build/esm/api/defineInterfaceLinkConstraint.js.map +1 -1
  35. package/build/esm/api/defineObject.js +57 -62
  36. package/build/esm/api/defineObject.js.map +1 -1
  37. package/build/esm/api/defineOntology.js +130 -14
  38. package/build/esm/api/defineOntology.js.map +1 -1
  39. package/build/esm/api/defineSpt.js +2 -0
  40. package/build/esm/api/defineSpt.js.map +1 -1
  41. package/build/esm/api/defineValueType.js +57 -10
  42. package/build/esm/api/defineValueType.js.map +1 -1
  43. package/build/esm/api/iconNames.js +0 -15
  44. package/build/esm/api/iconNames.js.map +1 -1
  45. package/build/esm/api/overall.test.js +461 -68
  46. package/build/esm/api/overall.test.js.map +1 -1
  47. package/build/esm/api/types.js +0 -15
  48. package/build/esm/api/types.js.map +1 -1
  49. package/build/esm/cli/main.js +3 -4
  50. package/build/esm/cli/main.js.map +1 -1
  51. package/build/esm/index.js +2 -0
  52. package/build/esm/index.js.map +1 -1
  53. package/package.json +25 -12
  54. package/build/browser/api/defineImportSpt.d.ts +0 -10
  55. package/build/browser/api/defineImportSpt.d.ts.map +0 -1
  56. package/build/browser/api/defineInterface.d.ts +0 -14
  57. package/build/browser/api/defineInterface.d.ts.map +0 -1
  58. package/build/browser/api/defineInterfaceLinkConstraint.d.ts +0 -21
  59. package/build/browser/api/defineInterfaceLinkConstraint.d.ts.map +0 -1
  60. package/build/browser/api/defineLink.d.ts +0 -18
  61. package/build/browser/api/defineLink.d.ts.map +0 -1
  62. package/build/browser/api/defineLink.js +0 -37
  63. package/build/browser/api/defineLink.js.map +0 -1
  64. package/build/browser/api/defineObject.d.ts +0 -15
  65. package/build/browser/api/defineObject.d.ts.map +0 -1
  66. package/build/browser/api/defineOntology.d.ts +0 -10
  67. package/build/browser/api/defineOntology.d.ts.map +0 -1
  68. package/build/browser/api/defineSpt.d.ts +0 -13
  69. package/build/browser/api/defineSpt.d.ts.map +0 -1
  70. package/build/browser/api/defineValueType.d.ts +0 -26
  71. package/build/browser/api/defineValueType.d.ts.map +0 -1
  72. package/build/browser/api/iconNames.d.ts +0 -3
  73. package/build/browser/api/iconNames.d.ts.map +0 -1
  74. package/build/browser/api/overall.test.d.ts +0 -2
  75. package/build/browser/api/overall.test.d.ts.map +0 -1
  76. package/build/browser/api/types.d.ts +0 -52
  77. package/build/browser/api/types.d.ts.map +0 -1
  78. package/build/browser/cli/main.d.ts +0 -2
  79. package/build/browser/cli/main.d.ts.map +0 -1
  80. package/build/browser/index.d.ts +0 -7
  81. package/build/browser/index.d.ts.map +0 -1
  82. package/build/esm/api/defineImportSpt.d.ts +0 -10
  83. package/build/esm/api/defineImportSpt.d.ts.map +0 -1
  84. package/build/esm/api/defineInterface.d.ts +0 -14
  85. package/build/esm/api/defineInterface.d.ts.map +0 -1
  86. package/build/esm/api/defineInterfaceLinkConstraint.d.ts +0 -21
  87. package/build/esm/api/defineInterfaceLinkConstraint.d.ts.map +0 -1
  88. package/build/esm/api/defineLink.d.ts +0 -18
  89. package/build/esm/api/defineLink.d.ts.map +0 -1
  90. package/build/esm/api/defineLink.js +0 -37
  91. package/build/esm/api/defineLink.js.map +0 -1
  92. package/build/esm/api/defineObject.d.ts +0 -15
  93. package/build/esm/api/defineObject.d.ts.map +0 -1
  94. package/build/esm/api/defineOntology.d.ts +0 -10
  95. package/build/esm/api/defineOntology.d.ts.map +0 -1
  96. package/build/esm/api/defineSpt.d.ts +0 -13
  97. package/build/esm/api/defineSpt.d.ts.map +0 -1
  98. package/build/esm/api/defineValueType.d.ts +0 -26
  99. package/build/esm/api/defineValueType.d.ts.map +0 -1
  100. package/build/esm/api/iconNames.d.ts +0 -3
  101. package/build/esm/api/iconNames.d.ts.map +0 -1
  102. package/build/esm/api/overall.test.d.ts +0 -2
  103. package/build/esm/api/overall.test.d.ts.map +0 -1
  104. package/build/esm/api/types.d.ts +0 -52
  105. package/build/esm/api/types.d.ts.map +0 -1
  106. package/build/esm/cli/main.d.ts +0 -2
  107. package/build/esm/cli/main.d.ts.map +0 -1
  108. package/build/esm/index.d.ts +0 -7
  109. package/build/esm/index.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"defineInterface.js","names":["invariant","namespace","ontologyDefinition","defineSharedPropertyType","defineInterface","opts","apiName","interfaceTypes","undefined","process","env","NODE_ENV","properties","Object","fromEntries","entries","map","type","isPropertyTypeType","spt","displayName","array","JSON","stringify","key","extendsInterfaces","extends","Array","isArray","every","item","a","displayMetadata","description","icon","blueprint","color","locator","links","status","active","v"],"sources":["defineInterface.js"],"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 */\nimport invariant from \"tiny-invariant\";\nimport { namespace, ontologyDefinition } from \"./defineOntology.js\";\nimport { defineSharedPropertyType } from \"./defineSpt.js\";\nexport function defineInterface(opts) {\n const apiName = namespace + opts.apiName;\n invariant(ontologyDefinition.interfaceTypes[apiName] === undefined, `Interface ${apiName} already exists`);\n const properties = Object.fromEntries(Object.entries(opts.properties ?? {}).map(([apiName, type]) => {\n if (typeof type === \"string\"\n || (typeof type === \"object\" && !(\"apiName\" in type))) {\n invariant(isPropertyTypeType(type), `Invalid data type ${type} for property ${apiName} on InterfaceType ${apiName}`);\n const spt = defineSharedPropertyType({\n apiName,\n displayName: apiName,\n type,\n array: false,\n });\n return [apiName, spt];\n }\n else {\n invariant(namespace + apiName === type.apiName || apiName === type.apiName, `property key and it's apiName must be identical. ${JSON.stringify({ key: apiName, apiName: type.apiName })}`);\n return [apiName, type];\n }\n }));\n let extendsInterfaces = [];\n if (opts.extends) {\n if (typeof opts.extends === \"string\") {\n extendsInterfaces = [opts.extends];\n }\n else if (Array.isArray(opts.extends)\n && opts.extends.every(item => typeof item === \"string\")) {\n extendsInterfaces = opts.extends;\n }\n else if (opts.extends.apiName !== undefined) {\n extendsInterfaces = [opts.extends.apiName];\n }\n else {\n extendsInterfaces = opts.extends.map(item => item.apiName);\n }\n }\n const a = {\n apiName,\n displayMetadata: {\n displayName: opts.displayName ?? opts.apiName,\n description: opts.description ?? opts.displayName ?? opts.apiName,\n icon: opts.icon !== undefined\n ? {\n type: \"blueprint\",\n blueprint: { color: opts.icon.color, locator: opts.icon.locator },\n }\n : undefined,\n },\n extendsInterfaces: extendsInterfaces,\n links: [],\n properties,\n status: { type: \"active\", active: {} },\n };\n return ontologyDefinition.interfaceTypes[apiName] = a;\n}\nfunction isPropertyTypeType(v) {\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"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"defineInterface.js","names":["invariant","namespace","ontologyDefinition","defineSharedPropertyType","defineInterface","opts","apiName","interfaceTypes","undefined","process","env","NODE_ENV","properties","Object","fromEntries","entries","map","type","isPropertyTypeType","JSON","stringify","spt","displayName","array","unNamespacedTypeApiName","slice","lastIndexOf","key","extendsInterfaces","extends","Array","isArray","every","item","status","mapSimplifiedStatusToInterfaceTypeStatus","deprecated","message","deadline","a","displayMetadata","description","icon","blueprint","color","locator","links","v","replacedBy","active","experimental","Error"],"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 { namespace, ontologyDefinition } from \"./defineOntology.js\";\nimport { defineSharedPropertyType } from \"./defineSpt.js\";\nimport type { BlueprintIcon } from \"./iconNames.js\";\nimport type {\n InterfaceType,\n InterfaceTypeStatus,\n PropertyTypeType,\n SharedPropertyType,\n} from \"./types.js\";\n\ntype SimplifiedInterfaceTypeStatus =\n | { type: \"deprecated\"; message: string; deadline: string }\n | { type: \"active\" }\n | { type: \"experimental\" };\n\nexport function defineInterface(\n opts: {\n apiName: string;\n displayName?: string;\n description?: string;\n icon?: { locator: BlueprintIcon; color: string };\n status?: SimplifiedInterfaceTypeStatus;\n properties?: Record<\n string,\n SharedPropertyType | PropertyTypeType\n >;\n\n extends?: InterfaceType | InterfaceType[] | string | string[];\n },\n): InterfaceType {\n const apiName = namespace + opts.apiName;\n invariant(\n ontologyDefinition.interfaceTypes[apiName] === undefined,\n `Interface ${apiName} already exists`,\n );\n\n const properties = Object.fromEntries(\n Object.entries(opts.properties ?? {}).map<\n [string, SharedPropertyType]\n >(\n ([apiName, type]) => {\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 [apiName, spt];\n } else {\n const unNamespacedTypeApiName = type.apiName.slice(\n type.apiName.lastIndexOf(\".\") + 1,\n );\n invariant(\n namespace + apiName === type.apiName\n || apiName === unNamespacedTypeApiName,\n `property key and it's apiName must be identical. ${\n JSON.stringify({ key: apiName, apiName: type.apiName })\n }`,\n );\n return [apiName, type];\n }\n },\n ),\n );\n\n let extendsInterfaces: string[] = [];\n if (opts.extends) {\n if (typeof opts.extends === \"string\") {\n extendsInterfaces = [opts.extends];\n } else if (\n Array.isArray(opts.extends)\n && opts.extends.every(item => typeof item === \"string\")\n ) {\n extendsInterfaces = opts.extends;\n } else if ((opts.extends as InterfaceType).apiName !== undefined) {\n extendsInterfaces = [(opts.extends as InterfaceType).apiName];\n } else {\n extendsInterfaces = (opts.extends as InterfaceType[]).map(item =>\n item.apiName\n );\n }\n }\n\n const status: InterfaceTypeStatus = mapSimplifiedStatusToInterfaceTypeStatus(\n opts.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 a: InterfaceType = {\n apiName,\n displayMetadata: {\n displayName: opts.displayName ?? opts.apiName,\n description: opts.description ?? opts.displayName ?? opts.apiName,\n icon: opts.icon !== undefined\n ? {\n type: \"blueprint\",\n blueprint: { color: opts.icon.color, locator: opts.icon.locator },\n }\n : undefined,\n },\n extendsInterfaces: extendsInterfaces,\n links: [],\n properties,\n status,\n };\n\n return ontologyDefinition.interfaceTypes[apiName] = a;\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"],"mappings":"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","ignoreList":[]}
@@ -13,6 +13,7 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
+
16
17
  import invariant from "tiny-invariant";
17
18
  import { namespace } from "./defineOntology.js";
18
19
  export function defineInterfaceLinkConstraint(linkDef) {
@@ -22,7 +23,7 @@ export function defineInterfaceLinkConstraint(linkDef) {
22
23
  cardinality: linkDef.toMany ? "MANY" : "SINGLE",
23
24
  linkedEntityTypeId: getLinkedType(linkDef.toMany ?? linkDef.toOne),
24
25
  metadata: fromLinkMeta,
25
- required: true // TODO: expose this?
26
+ required: linkDef.required ?? true
26
27
  });
27
28
  }
28
29
  function getLinkedType(t) {
@@ -1 +1 @@
1
- {"version":3,"file":"defineInterfaceLinkConstraint.js","names":["invariant","namespace","defineInterfaceLinkConstraint","linkDef","fromLinkMeta","getLinkMeta","from","links","find","a","metadata","apiName","process","env","NODE_ENV","push","cardinality","toMany","linkedEntityTypeId","getLinkedType","toOne","required","t","type","interfaceType","meta","withDefaults","description","displayName"],"sources":["defineInterfaceLinkConstraint.js"],"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 */\nimport invariant from \"tiny-invariant\";\nimport { namespace } from \"./defineOntology.js\";\nexport function defineInterfaceLinkConstraint(linkDef) {\n const fromLinkMeta = getLinkMeta(linkDef);\n invariant(linkDef.from.links.find(a => a.metadata.apiName === fromLinkMeta.apiName)\n == null, `Link with apiName ${fromLinkMeta.apiName} already exists on ${linkDef.apiName}`);\n linkDef.from.links.push({\n cardinality: linkDef.toMany ? \"MANY\" : \"SINGLE\",\n linkedEntityTypeId: getLinkedType(linkDef.toMany ?? linkDef.toOne),\n metadata: fromLinkMeta,\n required: true, // TODO: expose this?\n });\n}\nfunction getLinkedType(t) {\n return {\n type: \"interfaceType\",\n interfaceType: typeof t === \"string\" ? t : t.apiName,\n };\n}\nfunction getLinkMeta(meta) {\n return typeof meta === \"string\"\n ? withDefaults({ apiName: namespace + meta })\n : withDefaults(meta);\n}\nfunction withDefaults({ apiName, description, displayName }) {\n return {\n apiName: namespace + apiName,\n displayName: displayName ?? apiName,\n description: description ?? displayName ?? apiName,\n };\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAOA,SAAS,MAAM,gBAAgB;AACtC,SAASC,SAAS,QAAQ,qBAAqB;AAC/C,OAAO,SAASC,6BAA6BA,CAACC,OAAO,EAAE;EACnD,MAAMC,YAAY,GAAGC,WAAW,CAACF,OAAO,CAAC;EACzC,EAAUA,OAAO,CAACG,IAAI,CAACC,KAAK,CAACC,IAAI,CAACC,CAAC,IAAIA,CAAC,CAACC,QAAQ,CAACC,OAAO,KAAKP,YAAY,CAACO,OAAO,CAAC,IAC5E,IAAI,IAAAC,OAAA,CAAAC,GAAA,CAAAC,QAAA,oBADXd,SAAS,QACI,qBAAqBI,YAAY,CAACO,OAAO,sBAAsBR,OAAO,CAACQ,OAAO,EAAE,IAD7FX,SAAS;EAETG,OAAO,CAACG,IAAI,CAACC,KAAK,CAACQ,IAAI,CAAC;IACpBC,WAAW,EAAEb,OAAO,CAACc,MAAM,GAAG,MAAM,GAAG,QAAQ;IAC/CC,kBAAkB,EAAEC,aAAa,CAAChB,OAAO,CAACc,MAAM,IAAId,OAAO,CAACiB,KAAK,CAAC;IAClEV,QAAQ,EAAEN,YAAY;IACtBiB,QAAQ,EAAE,IAAI,CAAE;EACpB,CAAC,CAAC;AACN;AACA,SAASF,aAAaA,CAACG,CAAC,EAAE;EACtB,OAAO;IACHC,IAAI,EAAE,eAAe;IACrBC,aAAa,EAAE,OAAOF,CAAC,KAAK,QAAQ,GAAGA,CAAC,GAAGA,CAAC,CAACX;EACjD,CAAC;AACL;AACA,SAASN,WAAWA,CAACoB,IAAI,EAAE;EACvB,OAAO,OAAOA,IAAI,KAAK,QAAQ,GACzBC,YAAY,CAAC;IAAEf,OAAO,EAAEV,SAAS,GAAGwB;EAAK,CAAC,CAAC,GAC3CC,YAAY,CAACD,IAAI,CAAC;AAC5B;AACA,SAASC,YAAYA,CAAC;EAAEf,OAAO;EAAEgB,WAAW;EAAEC;AAAY,CAAC,EAAE;EACzD,OAAO;IACHjB,OAAO,EAAEV,SAAS,GAAGU,OAAO;IAC5BiB,WAAW,EAAEA,WAAW,IAAIjB,OAAO;IACnCgB,WAAW,EAAEA,WAAW,IAAIC,WAAW,IAAIjB;EAC/C,CAAC;AACL","ignoreList":[]}
1
+ {"version":3,"file":"defineInterfaceLinkConstraint.js","names":["invariant","namespace","defineInterfaceLinkConstraint","linkDef","fromLinkMeta","getLinkMeta","from","links","find","a","metadata","apiName","process","env","NODE_ENV","push","cardinality","toMany","linkedEntityTypeId","getLinkedType","toOne","required","t","type","interfaceType","meta","withDefaults","description","displayName"],"sources":["defineInterfaceLinkConstraint.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 { namespace } from \"./defineOntology.js\";\nimport type { InterfaceType } from \"./types.js\";\n\ntype Meta = { apiName: string; displayName?: string; description?: string };\ntype ApiNameOrInterfaceType = string | InterfaceType;\n\ntype Many = {\n apiName: string;\n from: InterfaceType;\n toMany: ApiNameOrInterfaceType;\n toOne?: never;\n displayName?: string;\n description?: string;\n required?: boolean;\n};\ntype One = {\n apiName: string;\n from: InterfaceType;\n toOne: ApiNameOrInterfaceType;\n toMany?: never;\n displayName?: string;\n description?: string;\n required?: boolean;\n};\n\nexport function defineInterfaceLinkConstraint(\n linkDef: One | Many,\n): void {\n const fromLinkMeta = getLinkMeta(linkDef);\n\n invariant(\n linkDef.from.links.find(a => a.metadata.apiName === fromLinkMeta.apiName)\n == null,\n `Link with apiName ${fromLinkMeta.apiName} already exists on ${linkDef.apiName}`,\n );\n\n linkDef.from.links.push({\n cardinality: linkDef.toMany ? \"MANY\" : \"SINGLE\",\n linkedEntityTypeId: getLinkedType(linkDef.toMany ?? linkDef.toOne),\n metadata: fromLinkMeta,\n required: linkDef.required ?? true,\n });\n}\n\nfunction getLinkedType(t: string | InterfaceType) {\n return {\n type: \"interfaceType\" as const,\n interfaceType: typeof t === \"string\" ? t : t.apiName,\n };\n}\n\nfunction getLinkMeta(meta: One | Many) {\n return typeof meta === \"string\"\n ? withDefaults({ apiName: namespace + meta })\n : withDefaults(meta);\n}\n\nfunction withDefaults(\n { apiName, description, displayName }: Meta,\n): Required<Meta> {\n return {\n apiName: namespace + apiName,\n displayName: displayName ?? apiName,\n description: description ?? displayName ?? apiName,\n };\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,SAAS,MAAM,gBAAgB;AACtC,SAASC,SAAS,QAAQ,qBAAqB;AAyB/C,OAAO,SAASC,6BAA6BA,CAC3CC,OAAmB,EACb;EACN,MAAMC,YAAY,GAAGC,WAAW,CAACF,OAAO,CAAC;EAEzC,EACEA,OAAO,CAACG,IAAI,CAACC,KAAK,CAACC,IAAI,CAACC,CAAC,IAAIA,CAAC,CAACC,QAAQ,CAACC,OAAO,KAAKP,YAAY,CAACO,OAAO,CAAC,IACpE,IAAI,IAAAC,OAAA,CAAAC,GAAA,CAAAC,QAAA,oBAFXd,SAAS,QAGP,qBAAqBI,YAAY,CAACO,OAAO,sBAAsBR,OAAO,CAACQ,OAAO,EAAE,IAHlFX,SAAS;EAMTG,OAAO,CAACG,IAAI,CAACC,KAAK,CAACQ,IAAI,CAAC;IACtBC,WAAW,EAAEb,OAAO,CAACc,MAAM,GAAG,MAAM,GAAG,QAAQ;IAC/CC,kBAAkB,EAAEC,aAAa,CAAChB,OAAO,CAACc,MAAM,IAAId,OAAO,CAACiB,KAAK,CAAC;IAClEV,QAAQ,EAAEN,YAAY;IACtBiB,QAAQ,EAAElB,OAAO,CAACkB,QAAQ,IAAI;EAChC,CAAC,CAAC;AACJ;AAEA,SAASF,aAAaA,CAACG,CAAyB,EAAE;EAChD,OAAO;IACLC,IAAI,EAAE,eAAwB;IAC9BC,aAAa,EAAE,OAAOF,CAAC,KAAK,QAAQ,GAAGA,CAAC,GAAGA,CAAC,CAACX;EAC/C,CAAC;AACH;AAEA,SAASN,WAAWA,CAACoB,IAAgB,EAAE;EACrC,OAAO,OAAOA,IAAI,KAAK,QAAQ,GAC3BC,YAAY,CAAC;IAAEf,OAAO,EAAEV,SAAS,GAAGwB;EAAK,CAAC,CAAC,GAC3CC,YAAY,CAACD,IAAI,CAAC;AACxB;AAEA,SAASC,YAAYA,CACnB;EAAEf,OAAO;EAAEgB,WAAW;EAAEC;AAAkB,CAAC,EAC3B;EAChB,OAAO;IACLjB,OAAO,EAAEV,SAAS,GAAGU,OAAO;IAC5BiB,WAAW,EAAEA,WAAW,IAAIjB,OAAO;IACnCgB,WAAW,EAAEA,WAAW,IAAIC,WAAW,IAAIjB;EAC7C,CAAC;AACH","ignoreList":[]}
@@ -13,74 +13,69 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
+
16
17
  import invariant from "tiny-invariant";
17
- import { ontologyDefinition } from "./defineOntology.js";
18
- export function defineObject(apiName, opts) {
18
+ import { namespace, ontologyDefinition } from "./defineOntology.js";
19
+ export function defineObject(objectDef) {
20
+ const apiName = namespace + objectDef.apiName;
21
+ const propertyApiNames = (objectDef.properties ?? []).map(val => val.apiName);
22
+ if (ontologyDefinition.objectTypes[apiName] !== undefined) {
23
+ throw new Error(`Object type with apiName ${objectDef.apiName} is already defined`);
24
+ }
25
+ !propertyApiNames.includes(objectDef.titlePropertyApiName) ? process.env.NODE_ENV !== "production" ? invariant(false, `Title property ${objectDef.titlePropertyApiName} is not defined on object ${objectDef.apiName}`) : invariant(false) : void 0;
26
+ !(objectDef.primaryKeys.length !== 0) ? process.env.NODE_ENV !== "production" ? invariant(false, `${objectDef.apiName} does not have any primary keys, objects must have at least one primary key`) : invariant(false) : void 0;
27
+ const nonExistentPrimaryKeys = objectDef.primaryKeys.filter(primaryKey => !objectDef.properties?.map(val => val.apiName).includes(primaryKey));
28
+ !(nonExistentPrimaryKeys.length === 0) ? process.env.NODE_ENV !== "production" ? invariant(false, `Primary key properties ${nonExistentPrimaryKeys} do not exist on object ${objectDef.apiName}`) : invariant(false) : void 0;
29
+ objectDef.implementsInterfaces?.forEach(interfaceImpl => {
30
+ const nonExistentInterfaceProperties = interfaceImpl.propertyMapping.map(val => val.interfaceProperty).filter(interfaceProperty => interfaceImpl.implements.properties[interfaceProperty] === undefined).map(interfaceProp => ({
31
+ type: "invalid",
32
+ reason: `Interface property ${interfaceImpl.implements.apiName}.${interfaceProp} referenced in ${objectDef.apiName} object does not exist`
33
+ }));
34
+ const interfaceToObjectProperties = Object.fromEntries(interfaceImpl.propertyMapping.map(mapping => [mapping.interfaceProperty, mapping.mapsTo]));
35
+ const validateProperty = interfaceProp => {
36
+ if (interfaceProp[1].nonNameSpacedApiName in interfaceToObjectProperties) {
37
+ return validateInterfaceImplProperty(interfaceProp[1], interfaceToObjectProperties[interfaceProp[0]], objectDef);
38
+ }
39
+ return {
40
+ type: "invalid",
41
+ reason: `Interface property ${interfaceImpl.implements.apiName}.${interfaceProp[1].nonNameSpacedApiName} not implemented by ${objectDef.apiName} object definition`
42
+ };
43
+ };
44
+ const baseValidations = Object.entries(interfaceImpl.implements.properties).map(validateProperty);
45
+ const extendsValidations = interfaceImpl.implements.extendsInterfaces.flatMap(interfaceApiName => Object.entries(ontologyDefinition.interfaceTypes[interfaceApiName].properties).map(validateProperty));
46
+ const allFailedValidations = baseValidations.concat(extendsValidations, nonExistentInterfaceProperties).filter(val => val.type === "invalid");
47
+ !(allFailedValidations.length === 0) ? process.env.NODE_ENV !== "production" ? invariant(false, "\n" + allFailedValidations.map(formatValidationErrors).join("\n")) : invariant(false) : void 0;
48
+ });
19
49
  ontologyDefinition.objectTypes[apiName] = {
20
- implementsInterfaces: [],
21
- implementsInterfaces2: {},
22
- linkTypes: [],
23
- objectType: {
24
- apiName,
25
- primaryKey: opts.primaryKey.apiName,
26
- displayName: opts.displayName ?? apiName,
27
- pluralDisplayName: opts.pluralDisplayName ?? apiName,
28
- icon: {
29
- color: "blue",
30
- name: "cube",
31
- type: "blueprint"
32
- },
33
- properties: {
34
- [opts.primaryKey.apiName]: {
35
- dataType: convertType(opts.primaryKey)
36
- }
37
- },
38
- rid: "PLACEHOLDER",
39
- status: "ACTIVE",
40
- titleProperty: opts.primaryKey.apiName
41
- },
42
- sharedPropertyTypeMapping: {}
50
+ ...objectDef,
51
+ apiName: apiName
43
52
  };
44
- // FIXME: don't return the raw value
45
53
  return {
46
- data: ontologyDefinition.objectTypes[apiName],
47
- linkTypes: {}
54
+ ...objectDef,
55
+ apiName: apiName
48
56
  };
49
57
  }
50
- function convertType(t) {
51
- switch (true) {
52
- case t.multiplicity === true:
53
- return {
54
- type: "array",
55
- subType: convertType({
56
- ...t,
57
- multiplicity: false
58
- })
59
- };
60
- case t.type === "stringTimeseries":
61
- return {
62
- itemType: {
63
- type: "string"
64
- },
65
- type: "timeseries"
66
- };
67
- break;
68
- case t.type === "numericTimeseries":
69
- return {
70
- itemType: {
71
- type: "double"
72
- },
73
- type: "timeseries"
74
- };
75
- case t.type === "datetime":
76
- return {
77
- type: "timestamp"
78
- };
79
- default:
80
- return {
81
- type: t.type
82
- };
58
+ function formatValidationErrors(error) {
59
+ return `Ontology Definition Error: ${error.reason}\n`;
60
+ }
61
+
62
+ // Validate that the object and the interface property match up
63
+ function validateInterfaceImplProperty(spt, mappedObjectProp, object) {
64
+ const objProp = object.properties?.find(prop => prop.apiName === mappedObjectProp);
65
+ if (objProp === undefined) {
66
+ return {
67
+ type: "invalid",
68
+ reason: `Object property mapped to interface does not exist. Object Property Mapped: ${mappedObjectProp}`
69
+ };
70
+ }
71
+ if (spt.type !== objProp?.type) {
72
+ return {
73
+ type: "invalid",
74
+ reason: `Object property type does not match the interface property it is mapped to. Interface Property: ${spt.apiName}, objectProperty: ${mappedObjectProp}`
75
+ };
83
76
  }
84
- process.env.NODE_ENV !== "production" ? invariant(false) : invariant(false);
77
+ return {
78
+ type: "valid"
79
+ };
85
80
  }
86
81
  //# sourceMappingURL=defineObject.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"defineObject.js","names":["invariant","ontologyDefinition","defineObject","apiName","opts","objectTypes","implementsInterfaces","implementsInterfaces2","linkTypes","objectType","primaryKey","displayName","pluralDisplayName","icon","color","name","type","properties","dataType","convertType","rid","status","titleProperty","sharedPropertyTypeMapping","data","t","multiplicity","subType","itemType","process","env","NODE_ENV"],"sources":["defineObject.js"],"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 */\nimport invariant from \"tiny-invariant\";\nimport { ontologyDefinition } from \"./defineOntology.js\";\nexport function defineObject(apiName, opts) {\n ontologyDefinition.objectTypes[apiName] = {\n implementsInterfaces: [],\n implementsInterfaces2: {},\n linkTypes: [],\n objectType: {\n apiName,\n primaryKey: opts.primaryKey.apiName,\n displayName: opts.displayName ?? apiName,\n pluralDisplayName: opts.pluralDisplayName ?? apiName,\n icon: {\n color: \"blue\",\n name: \"cube\",\n type: \"blueprint\",\n },\n properties: {\n [opts.primaryKey.apiName]: {\n dataType: convertType(opts.primaryKey),\n },\n },\n rid: \"PLACEHOLDER\",\n status: \"ACTIVE\",\n titleProperty: opts.primaryKey.apiName,\n },\n sharedPropertyTypeMapping: {},\n };\n // FIXME: don't return the raw value\n return {\n data: ontologyDefinition.objectTypes[apiName],\n linkTypes: {},\n };\n}\nfunction convertType(t) {\n switch (true) {\n case t.multiplicity === true:\n return {\n type: \"array\",\n subType: convertType({ ...t, multiplicity: false }),\n };\n case t.type === \"stringTimeseries\":\n return {\n itemType: {\n type: \"string\",\n },\n type: \"timeseries\",\n };\n break;\n case t.type === \"numericTimeseries\":\n return {\n itemType: {\n type: \"double\",\n },\n type: \"timeseries\",\n };\n case t.type === \"datetime\":\n return {\n type: \"timestamp\",\n };\n default:\n return {\n type: t.type,\n };\n }\n invariant(false);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAOA,SAAS,MAAM,gBAAgB;AACtC,SAASC,kBAAkB,QAAQ,qBAAqB;AACxD,OAAO,SAASC,YAAYA,CAACC,OAAO,EAAEC,IAAI,EAAE;EACxCH,kBAAkB,CAACI,WAAW,CAACF,OAAO,CAAC,GAAG;IACtCG,oBAAoB,EAAE,EAAE;IACxBC,qBAAqB,EAAE,CAAC,CAAC;IACzBC,SAAS,EAAE,EAAE;IACbC,UAAU,EAAE;MACRN,OAAO;MACPO,UAAU,EAAEN,IAAI,CAACM,UAAU,CAACP,OAAO;MACnCQ,WAAW,EAAEP,IAAI,CAACO,WAAW,IAAIR,OAAO;MACxCS,iBAAiB,EAAER,IAAI,CAACQ,iBAAiB,IAAIT,OAAO;MACpDU,IAAI,EAAE;QACFC,KAAK,EAAE,MAAM;QACbC,IAAI,EAAE,MAAM;QACZC,IAAI,EAAE;MACV,CAAC;MACDC,UAAU,EAAE;QACR,CAACb,IAAI,CAACM,UAAU,CAACP,OAAO,GAAG;UACvBe,QAAQ,EAAEC,WAAW,CAACf,IAAI,CAACM,UAAU;QACzC;MACJ,CAAC;MACDU,GAAG,EAAE,aAAa;MAClBC,MAAM,EAAE,QAAQ;MAChBC,aAAa,EAAElB,IAAI,CAACM,UAAU,CAACP;IACnC,CAAC;IACDoB,yBAAyB,EAAE,CAAC;EAChC,CAAC;EACD;EACA,OAAO;IACHC,IAAI,EAAEvB,kBAAkB,CAACI,WAAW,CAACF,OAAO,CAAC;IAC7CK,SAAS,EAAE,CAAC;EAChB,CAAC;AACL;AACA,SAASW,WAAWA,CAACM,CAAC,EAAE;EACpB,QAAQ,IAAI;IACR,KAAKA,CAAC,CAACC,YAAY,KAAK,IAAI;MACxB,OAAO;QACHV,IAAI,EAAE,OAAO;QACbW,OAAO,EAAER,WAAW,CAAC;UAAE,GAAGM,CAAC;UAAEC,YAAY,EAAE;QAAM,CAAC;MACtD,CAAC;IACL,KAAKD,CAAC,CAACT,IAAI,KAAK,kBAAkB;MAC9B,OAAO;QACHY,QAAQ,EAAE;UACNZ,IAAI,EAAE;QACV,CAAC;QACDA,IAAI,EAAE;MACV,CAAC;MACD;IACJ,KAAKS,CAAC,CAACT,IAAI,KAAK,mBAAmB;MAC/B,OAAO;QACHY,QAAQ,EAAE;UACNZ,IAAI,EAAE;QACV,CAAC;QACDA,IAAI,EAAE;MACV,CAAC;IACL,KAAKS,CAAC,CAACT,IAAI,KAAK,UAAU;MACtB,OAAO;QACHA,IAAI,EAAE;MACV,CAAC;IACL;MACI,OAAO;QACHA,IAAI,EAAES,CAAC,CAACT;MACZ,CAAC;EACT;EACAa,OAAA,CAAAC,GAAA,CAAAC,QAAA,oBAAA/B,SAAS,UAATA,SAAS;AACb","ignoreList":[]}
1
+ {"version":3,"file":"defineObject.js","names":["invariant","namespace","ontologyDefinition","defineObject","objectDef","apiName","propertyApiNames","properties","map","val","objectTypes","undefined","Error","includes","titlePropertyApiName","process","env","NODE_ENV","primaryKeys","length","nonExistentPrimaryKeys","filter","primaryKey","implementsInterfaces","forEach","interfaceImpl","nonExistentInterfaceProperties","propertyMapping","interfaceProperty","implements","interfaceProp","type","reason","interfaceToObjectProperties","Object","fromEntries","mapping","mapsTo","validateProperty","nonNameSpacedApiName","validateInterfaceImplProperty","baseValidations","entries","extendsValidations","extendsInterfaces","flatMap","interfaceApiName","interfaceTypes","allFailedValidations","concat","formatValidationErrors","join","error","spt","mappedObjectProp","object","objProp","find","prop"],"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 { namespace, ontologyDefinition } from \"./defineOntology.js\";\nimport type { ObjectType, SharedPropertyType } from \"./types.js\";\n\nexport function defineObject(objectDef: ObjectType): ObjectType {\n const apiName = namespace + objectDef.apiName;\n const propertyApiNames = (objectDef.properties ?? []).map(val => val.apiName);\n if (ontologyDefinition.objectTypes[apiName] !== undefined) {\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 objectDef.primaryKeys.length !== 0,\n `${objectDef.apiName} does not have any primary keys, objects must have at least one primary key`,\n );\n const nonExistentPrimaryKeys = objectDef.primaryKeys.filter(primaryKey =>\n !objectDef.properties?.map(val => val.apiName).includes(primaryKey)\n );\n invariant(\n nonExistentPrimaryKeys.length === 0,\n `Primary key properties ${nonExistentPrimaryKeys} do not exist on object ${objectDef.apiName}`,\n );\n\n objectDef.implementsInterfaces?.forEach(interfaceImpl => {\n const nonExistentInterfaceProperties: ValidationResult[] = interfaceImpl\n .propertyMapping.map(val => val.interfaceProperty).filter(\n interfaceProperty =>\n interfaceImpl.implements.properties[interfaceProperty] === 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, SharedPropertyType],\n ): ValidationResult => {\n if (\n interfaceProp[1].nonNameSpacedApiName in interfaceToObjectProperties\n ) {\n return validateInterfaceImplProperty(\n interfaceProp[1],\n interfaceToObjectProperties[interfaceProp[0]],\n objectDef,\n );\n }\n return {\n type: \"invalid\",\n reason: `Interface property ${interfaceImpl.implements.apiName}.${\n interfaceProp[1].nonNameSpacedApiName\n } not implemented by ${objectDef.apiName} object definition`,\n };\n };\n const baseValidations = Object.entries(interfaceImpl.implements.properties)\n .map<ValidationResult>(validateProperty);\n const extendsValidations = interfaceImpl.implements.extendsInterfaces\n .flatMap(interfaceApiName =>\n Object.entries(\n ontologyDefinition.interfaceTypes[interfaceApiName].properties,\n ).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\n ontologyDefinition.objectTypes[apiName] = { ...objectDef, apiName: apiName };\n return { ...objectDef, apiName: apiName };\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: ObjectType,\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"],"mappings":"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","ignoreList":[]}
@@ -1,3 +1,19 @@
1
+ /*
2
+ * Copyright 2025 Palantir Technologies, Inc. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
1
17
  /*
2
18
  * Copyright 2024 Palantir Technologies, Inc. All rights reserved.
3
19
  *
@@ -13,8 +29,10 @@
13
29
  * See the License for the specific language governing permissions and
14
30
  * limitations under the License.
15
31
  */
32
+
16
33
  /** @internal */
17
34
  export let ontologyDefinition;
35
+
18
36
  /** @internal */
19
37
  export let namespace;
20
38
  export async function defineOntology(ns, body) {
@@ -25,7 +43,10 @@ export async function defineOntology(ns, body) {
25
43
  queryTypes: {},
26
44
  interfaceTypes: {},
27
45
  sharedPropertyTypes: {},
28
- valueTypes: {}
46
+ valueTypes: {},
47
+ importedTypes: {
48
+ sharedPropertyTypes: []
49
+ }
29
50
  };
30
51
  try {
31
52
  await body();
@@ -58,21 +79,114 @@ function convertOntologyToValueTypeIr(ontology) {
58
79
  }
59
80
  function convertToWireOntologyIr(ontology) {
60
81
  return {
61
- sharedPropertyTypes: Object.fromEntries(Object.entries(ontology.sharedPropertyTypes).map(([apiName, spt]) => [apiName, {
62
- sharedPropertyType: convertSpt(spt)
63
- }])),
64
- interfaceTypes: Object.fromEntries(Object.entries(ontology.interfaceTypes).map(([apiName, interfaceType]) => {
65
- return [apiName, {
66
- interfaceType: convertInterface(interfaceType)
67
- }];
68
- })),
69
- blockPermissionInformation: {
70
- actionTypes: {},
71
- linkTypes: {},
72
- objectTypes: {}
82
+ blockData: {
83
+ objectTypes: Object.fromEntries(Object.entries(ontology.objectTypes).map(([apiName, objectType]) => {
84
+ return [apiName, convertObject(objectType)];
85
+ })),
86
+ sharedPropertyTypes: Object.fromEntries(Object.entries(ontology.sharedPropertyTypes).map(([apiName, spt]) => [apiName, {
87
+ sharedPropertyType: convertSpt(spt)
88
+ }])),
89
+ interfaceTypes: Object.fromEntries(Object.entries(ontology.interfaceTypes).map(([apiName, interfaceType]) => {
90
+ return [apiName, {
91
+ interfaceType: convertInterface(interfaceType)
92
+ }];
93
+ })),
94
+ blockPermissionInformation: {
95
+ actionTypes: {},
96
+ linkTypes: {},
97
+ objectTypes: {}
98
+ }
99
+ },
100
+ importedTypes: ontology.importedTypes
101
+ };
102
+ }
103
+ function convertObject(objectType) {
104
+ const propertyDatasource = {};
105
+ (objectType.properties ?? []).forEach(property => {
106
+ propertyDatasource[property.apiName] = {
107
+ type: "column",
108
+ column: property.apiName
109
+ };
110
+ });
111
+ const datasource = {
112
+ rid: "ri.ontology.main.datasource.".concat(objectType.apiName),
113
+ datasource: {
114
+ type: "datasetV2",
115
+ datasetV2: {
116
+ datasetRid: objectType.apiName,
117
+ propertyMapping: propertyDatasource
118
+ }
119
+ },
120
+ editsConfiguration: {
121
+ onlyAllowPrivilegedEdits: false
122
+ },
123
+ redacted: false
124
+ };
125
+ const implementations = objectType.implementsInterfaces ?? [];
126
+ return {
127
+ objectType: {
128
+ displayMetadata: {
129
+ description: objectType.description,
130
+ displayName: objectType.displayName,
131
+ groupDisplayName: undefined,
132
+ icon: {
133
+ type: "blueprint",
134
+ blueprint: objectType.icon ?? {
135
+ locator: "cube",
136
+ color: "#2D72D2"
137
+ }
138
+ },
139
+ pluralDisplayName: objectType.pluralDisplayName,
140
+ visibility: objectType.visibility ?? "NORMAL"
141
+ },
142
+ primaryKeys: objectType.primaryKeys,
143
+ propertyTypes: Object.fromEntries(objectType.properties?.map(val => [val.apiName, convertProperty(val)]) ?? []),
144
+ titlePropertyTypeRid: objectType.titlePropertyApiName,
145
+ apiName: objectType.apiName,
146
+ status: objectType.status ?? {
147
+ type: "active",
148
+ active: {}
149
+ },
150
+ redacted: false,
151
+ implementsInterfaces2: implementations.map(impl => ({
152
+ interfaceTypeApiName: impl.implements.apiName,
153
+ properties: Object.fromEntries(impl.propertyMapping.map(mapping => [namespace + mapping.interfaceProperty, {
154
+ propertyTypeRid: mapping.mapsTo
155
+ }]))
156
+ })),
157
+ allImplementsInterfaces: {}
158
+ },
159
+ datasources: [datasource],
160
+ entityMetadata: {
161
+ arePatchesEnabled: objectType.editsEnabled ?? false
73
162
  }
74
163
  };
75
164
  }
165
+ function convertProperty(property) {
166
+ const output = {
167
+ apiName: property.apiName,
168
+ sharedPropertyTypeApiName: property.sharedPropertyType?.apiName,
169
+ displayMetadata: {
170
+ displayName: property.displayName,
171
+ description: property.description,
172
+ visibility: property.visibility ?? "NORMAL"
173
+ },
174
+ indexedForSearch: property.indexedForSearch ?? true,
175
+ ruleSetBinding: undefined,
176
+ baseFormatter: property.baseFormatter,
177
+ type: convertType(property.type),
178
+ typeClasses: property.typeClasses ?? [],
179
+ status: property.status ?? {
180
+ type: "active",
181
+ active: {}
182
+ },
183
+ inlineAction: undefined,
184
+ dataConstraints: property.dataConstraints,
185
+ sharedPropertyTypeRid: property.sharedPropertyType?.apiName,
186
+ valueType: undefined
187
+ };
188
+ return output;
189
+ }
76
190
  function convertInterface(interfaceType) {
77
191
  return {
78
192
  ...interfaceType,
@@ -143,7 +257,7 @@ function convertType(type) {
143
257
  const structFields = new Array();
144
258
  for (const key in type.structDefinition) {
145
259
  const fieldTypeDefinition = type.structDefinition[key];
146
- var field;
260
+ let field;
147
261
  if (typeof fieldTypeDefinition === "string") {
148
262
  field = {
149
263
  apiName: key,
@@ -206,6 +320,7 @@ function convertType(type) {
206
320
  analyzerOverride: undefined,
207
321
  enableAsciiFolding: undefined,
208
322
  isLongText: false,
323
+ supportsEfficientLeadingWildcard: false,
209
324
  supportsExactMatching: true
210
325
  }
211
326
  };
@@ -219,6 +334,7 @@ function convertType(type) {
219
334
  return distributeTypeHelper(type);
220
335
  }
221
336
  }
337
+
222
338
  /**
223
339
  * Helper function to avoid duplication. Makes the types match properly with the correct
224
340
  * behavior without needing to switch on type.
@@ -1 +1 @@
1
- {"version":3,"file":"defineOntology.js","names":["ontologyDefinition","namespace","defineOntology","ns","body","actionTypes","objectTypes","queryTypes","interfaceTypes","sharedPropertyTypes","valueTypes","e","console","error","ontology","convertToWireOntologyIr","valueType","convertOntologyToValueTypeIr","Object","values","map","definitions","metadata","apiName","displayMetadata","status","versions","definition","version","baseType","constraints","exampleValues","fromEntries","entries","spt","sharedPropertyType","convertSpt","interfaceType","convertInterface","blockPermissionInformation","linkTypes","properties","allExtendsInterfaces","allLinks","allProperties","dumpOntologyFullMetadata","dumpValueTypeWireType","type","array","description","displayName","gothamMapping","typeClasses","dataConstraint","propertyTypeConstraints","nullability","undefined","nullabilityV2","noEmptyCollections","noNulls","visibility","subtype","convertType","aliases","baseFormatter","dataConstraints","indexedForSearch","provenance","marking","markingType","structFields","Array","key","structDefinition","fieldTypeDefinition","field","fieldType","push","struct","geohash","precision","scale","analyzerOverride","enableAsciiFolding","isLongText","supportsExactMatching","mediaReference","distributeTypeHelper"],"sources":["defineOntology.js"],"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/** @internal */\nexport let ontologyDefinition;\n/** @internal */\nexport let namespace;\nexport async function defineOntology(ns, body) {\n namespace = ns;\n ontologyDefinition = {\n actionTypes: {},\n objectTypes: {},\n queryTypes: {},\n interfaceTypes: {},\n sharedPropertyTypes: {},\n valueTypes: {},\n };\n try {\n await body();\n }\n catch (e) {\n // eslint-disable-next-line no-console\n console.error(\"Unexpected error while processing the body of the ontology\", e);\n throw e;\n }\n return {\n ontology: convertToWireOntologyIr(ontologyDefinition),\n valueType: convertOntologyToValueTypeIr(ontologyDefinition),\n };\n}\nfunction convertOntologyToValueTypeIr(ontology) {\n return {\n valueTypes: Object.values(ontology.valueTypes).map(definitions => ({\n metadata: {\n apiName: definitions[0].apiName,\n displayMetadata: definitions[0].displayMetadata,\n status: definitions[0].status,\n },\n versions: definitions.map(definition => ({\n version: definition.version,\n baseType: definition.baseType,\n constraints: definition.constraints,\n exampleValues: definition.exampleValues,\n })),\n })),\n };\n}\nfunction convertToWireOntologyIr(ontology) {\n return {\n sharedPropertyTypes: Object.fromEntries(Object.entries(ontology.sharedPropertyTypes)\n .map(([apiName, spt]) => [apiName, { sharedPropertyType: convertSpt(spt) }])),\n interfaceTypes: Object.fromEntries(Object.entries(ontology.interfaceTypes)\n .map(([apiName, interfaceType]) => {\n return [apiName, {\n interfaceType: convertInterface(interfaceType),\n }];\n })),\n blockPermissionInformation: {\n actionTypes: {},\n linkTypes: {},\n objectTypes: {},\n },\n };\n}\nfunction convertInterface(interfaceType) {\n return {\n ...interfaceType,\n properties: Object.values(interfaceType.properties)\n .map((spt) => convertSpt(spt)),\n // these are omitted from our internal types but we need to re-add them for the final json\n allExtendsInterfaces: [],\n allLinks: [],\n allProperties: [],\n };\n}\nexport function dumpOntologyFullMetadata() {\n return convertToWireOntologyIr(ontologyDefinition);\n}\nexport function dumpValueTypeWireType() {\n return convertOntologyToValueTypeIr(ontologyDefinition);\n}\nfunction convertSpt({ type, array, description, apiName, displayName, gothamMapping, typeClasses, valueType, }) {\n const dataConstraint = (typeof type === \"object\" && type.type === \"marking\")\n ? {\n propertyTypeConstraints: [],\n nullability: undefined,\n nullabilityV2: { noEmptyCollections: true, noNulls: true },\n }\n : undefined;\n return {\n apiName,\n displayMetadata: {\n displayName: displayName ?? apiName,\n visibility: \"NORMAL\",\n description,\n },\n type: array\n ? {\n type: \"array\",\n array: {\n subtype: convertType(type),\n },\n }\n : convertType(type),\n aliases: [],\n baseFormatter: undefined,\n dataConstraints: dataConstraint,\n gothamMapping: gothamMapping,\n indexedForSearch: true,\n provenance: undefined,\n typeClasses: typeClasses ?? [],\n valueType: valueType,\n };\n}\nfunction convertType(type) {\n switch (true) {\n case (typeof type === \"object\" && \"markingType\" in type):\n return {\n \"type\": \"marking\",\n marking: { markingType: type.markingType },\n };\n case (typeof type === \"object\" && \"structDefinition\" in type):\n const structFields = new Array();\n for (const key in type.structDefinition) {\n const fieldTypeDefinition = type.structDefinition[key];\n var field;\n if (typeof fieldTypeDefinition === \"string\") {\n field = {\n apiName: key,\n displayMetadata: { displayName: key, description: undefined },\n typeClasses: [],\n aliases: [],\n fieldType: convertType(fieldTypeDefinition),\n };\n }\n else {\n // If it is a full form type definition then process it as such\n if (\"fieldType\" in fieldTypeDefinition) {\n field = {\n ...fieldTypeDefinition,\n apiName: key,\n fieldType: convertType(fieldTypeDefinition.fieldType),\n typeClasses: fieldTypeDefinition.typeClasses ?? [],\n aliases: fieldTypeDefinition.aliases ?? [],\n };\n }\n else {\n field = {\n apiName: key,\n displayMetadata: { displayName: key, description: undefined },\n typeClasses: [],\n aliases: [],\n fieldType: convertType(fieldTypeDefinition),\n };\n }\n }\n structFields.push(field);\n }\n return {\n type: \"struct\",\n struct: { structFields },\n };\n case (type === \"geopoint\"):\n return { type: \"geohash\", geohash: {} };\n case (type === \"decimal\"):\n return { type, [type]: { precision: undefined, scale: undefined } };\n case (type === \"string\"):\n return {\n type,\n [type]: {\n analyzerOverride: undefined,\n enableAsciiFolding: undefined,\n isLongText: false,\n supportsExactMatching: true,\n },\n };\n case (type === \"mediaReference\"):\n return {\n type: type,\n mediaReference: {},\n };\n default:\n // use helper function to distribute `type` properly\n return distributeTypeHelper(type);\n }\n}\n/**\n * Helper function to avoid duplication. Makes the types match properly with the correct\n * behavior without needing to switch on type.\n * @param type\n * @returns\n */\nfunction distributeTypeHelper(type) {\n return { type, [type]: {} }; // any cast to match conditional return type\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"defineOntology.js","names":["ontologyDefinition","namespace","defineOntology","ns","body","actionTypes","objectTypes","queryTypes","interfaceTypes","sharedPropertyTypes","valueTypes","importedTypes","e","console","error","ontology","convertToWireOntologyIr","valueType","convertOntologyToValueTypeIr","Object","values","map","definitions","metadata","apiName","displayMetadata","status","versions","definition","version","baseType","constraints","exampleValues","blockData","fromEntries","entries","objectType","convertObject","spt","sharedPropertyType","convertSpt","interfaceType","convertInterface","blockPermissionInformation","linkTypes","propertyDatasource","properties","forEach","property","type","column","datasource","rid","concat","datasetV2","datasetRid","propertyMapping","editsConfiguration","onlyAllowPrivilegedEdits","redacted","implementations","implementsInterfaces","description","displayName","groupDisplayName","undefined","icon","blueprint","locator","color","pluralDisplayName","visibility","primaryKeys","propertyTypes","val","convertProperty","titlePropertyTypeRid","titlePropertyApiName","active","implementsInterfaces2","impl","interfaceTypeApiName","implements","mapping","interfaceProperty","propertyTypeRid","mapsTo","allImplementsInterfaces","datasources","entityMetadata","arePatchesEnabled","editsEnabled","output","sharedPropertyTypeApiName","indexedForSearch","ruleSetBinding","baseFormatter","convertType","typeClasses","inlineAction","dataConstraints","sharedPropertyTypeRid","allExtendsInterfaces","allLinks","allProperties","dumpOntologyFullMetadata","dumpValueTypeWireType","array","gothamMapping","dataConstraint","propertyTypeConstraints","nullability","nullabilityV2","noEmptyCollections","noNulls","subtype","aliases","provenance","marking","markingType","structFields","Array","key","structDefinition","fieldTypeDefinition","field","fieldType","push","struct","geohash","precision","scale","analyzerOverride","enableAsciiFolding","isLongText","supportsEfficientLeadingWildcard","supportsExactMatching","mediaReference","distributeTypeHelper"],"sources":["defineOntology.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\n/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n OntologyIr,\n OntologyIrInterfaceType,\n OntologyIrInterfaceTypeBlockDataV2,\n OntologyIrObjectTypeBlockDataV2,\n OntologyIrObjectTypeDatasource,\n OntologyIrPropertyType,\n OntologyIrSharedPropertyType,\n OntologyIrSharedPropertyTypeBlockDataV2,\n OntologyIrStructFieldType,\n OntologyIrType,\n OntologyIrValueTypeBlockData,\n OntologyIrValueTypeBlockDataEntry,\n PropertyTypeMappingInfo,\n} from \"@osdk/client.unstable\";\nimport type {\n InterfaceType,\n ObjectPropertyType,\n ObjectType,\n Ontology,\n PropertyTypeType,\n SharedPropertyType,\n} from \"./types.js\";\n\n/** @internal */\nexport let ontologyDefinition: Ontology;\n\n/** @internal */\nexport let namespace: string;\n\ntype OntologyAndValueTypeIrs = {\n ontology: OntologyIr;\n valueType: OntologyIrValueTypeBlockData;\n};\n\nexport async function defineOntology(\n ns: string,\n body: () => void | Promise<void>,\n): Promise<OntologyAndValueTypeIrs> {\n namespace = ns;\n ontologyDefinition = {\n actionTypes: {},\n objectTypes: {},\n queryTypes: {},\n interfaceTypes: {},\n sharedPropertyTypes: {},\n valueTypes: {},\n importedTypes: {\n sharedPropertyTypes: [],\n },\n };\n\n try {\n await body();\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(\n \"Unexpected error while processing the body of the ontology\",\n e,\n );\n throw e;\n }\n\n return {\n ontology: convertToWireOntologyIr(ontologyDefinition),\n valueType: convertOntologyToValueTypeIr(ontologyDefinition),\n };\n}\n\nfunction convertOntologyToValueTypeIr(\n ontology: Ontology,\n): OntologyIrValueTypeBlockData {\n return {\n valueTypes: Object.values(ontology.valueTypes).map<\n OntologyIrValueTypeBlockDataEntry\n >(definitions => ({\n metadata: {\n apiName: definitions[0].apiName,\n displayMetadata: definitions[0].displayMetadata,\n status: definitions[0].status,\n },\n versions: definitions.map(definition => ({\n version: definition.version,\n baseType: definition.baseType,\n constraints: definition.constraints,\n exampleValues: definition.exampleValues,\n })),\n })),\n };\n}\n\nfunction convertToWireOntologyIr(\n ontology: Ontology,\n): OntologyIr {\n return {\n blockData: {\n objectTypes: Object.fromEntries(\n Object.entries(ontology.objectTypes).map<\n [string, OntologyIrObjectTypeBlockDataV2]\n >(([apiName, objectType]) => {\n return [apiName, convertObject(objectType)];\n }),\n ),\n sharedPropertyTypes: Object.fromEntries(\n Object.entries(\n ontology.sharedPropertyTypes,\n )\n .map<[string, OntologyIrSharedPropertyTypeBlockDataV2]>((\n [apiName, spt],\n ) => [apiName, { sharedPropertyType: convertSpt(spt) }]),\n ),\n interfaceTypes: Object.fromEntries(\n Object.entries(\n ontology.interfaceTypes,\n )\n .map<[string, OntologyIrInterfaceTypeBlockDataV2]>(\n ([apiName, interfaceType]) => {\n return [apiName, {\n interfaceType: convertInterface(interfaceType),\n }];\n },\n ),\n ),\n blockPermissionInformation: {\n actionTypes: {},\n linkTypes: {},\n objectTypes: {},\n },\n },\n importedTypes: ontology.importedTypes,\n };\n}\n\nfunction convertObject(\n objectType: ObjectType,\n): OntologyIrObjectTypeBlockDataV2 {\n const propertyDatasource: Record<string, PropertyTypeMappingInfo> = {};\n (objectType.properties ?? []).forEach((property) => {\n propertyDatasource[property.apiName] = {\n type: \"column\",\n column: property.apiName,\n };\n });\n\n const datasource: OntologyIrObjectTypeDatasource = {\n rid: \"ri.ontology.main.datasource.\".concat(objectType.apiName),\n datasource: {\n type: \"datasetV2\",\n datasetV2: {\n datasetRid: objectType.apiName,\n propertyMapping: propertyDatasource,\n },\n },\n editsConfiguration: {\n onlyAllowPrivilegedEdits: false,\n },\n redacted: false,\n };\n\n const implementations = objectType.implementsInterfaces ?? [];\n\n return {\n objectType: {\n displayMetadata: {\n description: objectType.description,\n displayName: objectType.displayName,\n groupDisplayName: undefined,\n icon: {\n type: \"blueprint\",\n blueprint: objectType.icon ?? { locator: \"cube\", color: \"#2D72D2\" },\n },\n pluralDisplayName: objectType.pluralDisplayName,\n visibility: objectType.visibility ?? \"NORMAL\",\n },\n primaryKeys: objectType.primaryKeys,\n propertyTypes: Object.fromEntries(\n objectType.properties?.map<[string, OntologyIrPropertyType]>(\n val => [val.apiName, convertProperty(val)],\n ) ?? [],\n ),\n titlePropertyTypeRid: objectType.titlePropertyApiName,\n apiName: objectType.apiName,\n status: objectType.status ?? {\n type: \"active\",\n active: {},\n },\n redacted: false,\n implementsInterfaces2: implementations.map(impl => ({\n interfaceTypeApiName: impl.implements.apiName,\n properties: Object.fromEntries(\n impl.propertyMapping.map(\n mapping => [namespace + mapping.interfaceProperty, {\n propertyTypeRid: mapping.mapsTo,\n }],\n ),\n ),\n })),\n allImplementsInterfaces: {},\n },\n datasources: [datasource],\n entityMetadata: { arePatchesEnabled: objectType.editsEnabled ?? false },\n };\n}\n\nfunction convertProperty(property: ObjectPropertyType): OntologyIrPropertyType {\n const output: OntologyIrPropertyType = {\n apiName: property.apiName,\n sharedPropertyTypeApiName: property.sharedPropertyType?.apiName,\n displayMetadata: {\n displayName: property.displayName,\n description: property.description,\n visibility: property.visibility ?? \"NORMAL\",\n },\n indexedForSearch: property.indexedForSearch ?? true,\n ruleSetBinding: undefined,\n baseFormatter: property.baseFormatter,\n type: convertType(property.type),\n typeClasses: property.typeClasses ?? [],\n status: property.status ?? { type: \"active\", active: {} },\n inlineAction: undefined,\n dataConstraints: property.dataConstraints,\n sharedPropertyTypeRid: property.sharedPropertyType?.apiName,\n valueType: undefined,\n };\n return output;\n}\n\nfunction convertInterface(\n interfaceType: InterfaceType,\n): OntologyIrInterfaceType {\n return {\n ...interfaceType,\n properties: Object.values(interfaceType.properties)\n .map<OntologyIrSharedPropertyType>((spt) => convertSpt(spt)),\n // these are omitted from our internal types but we need to re-add them for the final json\n allExtendsInterfaces: [],\n allLinks: [],\n allProperties: [],\n };\n}\n\nexport function dumpOntologyFullMetadata(): OntologyIr {\n return convertToWireOntologyIr(ontologyDefinition);\n}\n\nexport function dumpValueTypeWireType(): OntologyIrValueTypeBlockData {\n return convertOntologyToValueTypeIr(ontologyDefinition);\n}\n\nfunction convertSpt(\n {\n type,\n array,\n description,\n apiName,\n displayName,\n gothamMapping,\n typeClasses,\n valueType,\n }: SharedPropertyType,\n): OntologyIrSharedPropertyType {\n const dataConstraint:\n | OntologyIrSharedPropertyType[\"dataConstraints\"]\n | undefined = (typeof type === \"object\" && type.type === \"marking\")\n ? {\n propertyTypeConstraints: [],\n nullability: undefined,\n nullabilityV2: { noEmptyCollections: true, noNulls: true },\n }\n : undefined;\n return {\n apiName,\n displayMetadata: {\n displayName: displayName ?? apiName,\n visibility: \"NORMAL\",\n description,\n },\n type: array\n ? {\n type: \"array\" as const,\n array: {\n subtype: convertType(type),\n },\n }\n : convertType(type),\n aliases: [],\n baseFormatter: undefined,\n dataConstraints: dataConstraint,\n gothamMapping: gothamMapping,\n indexedForSearch: true,\n provenance: undefined,\n typeClasses: typeClasses ?? [],\n valueType: valueType,\n };\n}\n\nfunction convertType(\n type: PropertyTypeType,\n): OntologyIrType {\n switch (true) {\n case (typeof type === \"object\" && \"markingType\" in type):\n return {\n \"type\": \"marking\",\n marking: { markingType: type.markingType },\n };\n\n case (typeof type === \"object\" && \"structDefinition\" in type):\n const structFields: Array<OntologyIrStructFieldType> = new Array();\n for (const key in type.structDefinition) {\n const fieldTypeDefinition = type.structDefinition[key];\n let field: OntologyIrStructFieldType;\n if (typeof fieldTypeDefinition === \"string\") {\n field = {\n apiName: key,\n displayMetadata: { displayName: key, description: undefined },\n typeClasses: [],\n aliases: [],\n fieldType: convertType(fieldTypeDefinition),\n };\n } else {\n // If it is a full form type definition then process it as such\n if (\"fieldType\" in fieldTypeDefinition) {\n field = {\n ...fieldTypeDefinition,\n apiName: key,\n fieldType: convertType(fieldTypeDefinition.fieldType),\n typeClasses: fieldTypeDefinition.typeClasses ?? [],\n aliases: fieldTypeDefinition.aliases ?? [],\n };\n } else {\n field = {\n apiName: key,\n displayMetadata: { displayName: key, description: undefined },\n typeClasses: [],\n aliases: [],\n fieldType: convertType(fieldTypeDefinition),\n };\n }\n }\n\n structFields.push(field);\n }\n\n return {\n type: \"struct\",\n struct: { structFields },\n };\n\n case (type === \"geopoint\"):\n return { type: \"geohash\", geohash: {} };\n\n case (type === \"decimal\"):\n return { type, [type]: { precision: undefined, scale: undefined } };\n\n case (type === \"string\"):\n return {\n type,\n [type]: {\n analyzerOverride: undefined,\n enableAsciiFolding: undefined,\n isLongText: false,\n supportsEfficientLeadingWildcard: false,\n supportsExactMatching: true,\n },\n };\n\n case (type === \"mediaReference\"):\n return {\n type: type,\n mediaReference: {},\n };\n\n default:\n // use helper function to distribute `type` properly\n return distributeTypeHelper(type);\n }\n}\n\n/**\n * Helper function to avoid duplication. Makes the types match properly with the correct\n * behavior without needing to switch on type.\n * @param type\n * @returns\n */\nfunction distributeTypeHelper<T extends string>(\n type: T,\n): T extends any ? { type: T } & { [K in T]: {} } : never {\n return { type, [type]: {} } as any; // any cast to match conditional return type\n}\n"],"mappings":"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","ignoreList":[]}
@@ -13,6 +13,7 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
+
16
17
  import invariant from "tiny-invariant";
17
18
  import { namespace, ontologyDefinition } from "./defineOntology.js";
18
19
  const defaultTypeClasses = [{
@@ -28,6 +29,7 @@ export function defineSharedPropertyType(opts) {
28
29
  return ontologyDefinition.sharedPropertyTypes[apiName] = {
29
30
  ...opts,
30
31
  apiName,
32
+ nonNameSpacedApiName: opts.apiName,
31
33
  displayName: opts.displayName ?? opts.apiName,
32
34
  // This way the non-namespaced api name is the display name (maybe not ideal)
33
35
  typeClasses: opts.typeClasses ?? defaultTypeClasses
@@ -1 +1 @@
1
- {"version":3,"file":"defineSpt.js","names":["invariant","namespace","ontologyDefinition","defaultTypeClasses","kind","name","defineSharedPropertyType","opts","apiName","sharedPropertyTypes","undefined","process","env","NODE_ENV","displayName","typeClasses"],"sources":["defineSpt.js"],"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 */\nimport invariant from \"tiny-invariant\";\nimport { namespace, ontologyDefinition } from \"./defineOntology.js\";\nconst defaultTypeClasses = [{\n kind: \"render_hint\",\n name: \"SELECTABLE\",\n }, { kind: \"render_hint\", name: \"SORTABLE\" }];\nexport function defineSharedPropertyType(opts) {\n const apiName = namespace + opts.apiName;\n invariant(ontologyDefinition.sharedPropertyTypes[apiName] === undefined, `Shared property type ${apiName} already exists`);\n return ontologyDefinition.sharedPropertyTypes[apiName] = {\n ...opts,\n apiName,\n displayName: opts.displayName ?? opts.apiName, // This way the non-namespaced api name is the display name (maybe not ideal)\n typeClasses: opts.typeClasses ?? defaultTypeClasses,\n };\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAOA,SAAS,MAAM,gBAAgB;AACtC,SAASC,SAAS,EAAEC,kBAAkB,QAAQ,qBAAqB;AACnE,MAAMC,kBAAkB,GAAG,CAAC;EACpBC,IAAI,EAAE,aAAa;EACnBC,IAAI,EAAE;AACV,CAAC,EAAE;EAAED,IAAI,EAAE,aAAa;EAAEC,IAAI,EAAE;AAAW,CAAC,CAAC;AACjD,OAAO,SAASC,wBAAwBA,CAACC,IAAI,EAAE;EAC3C,MAAMC,OAAO,GAAGP,SAAS,GAAGM,IAAI,CAACC,OAAO;EACxC,EAAUN,kBAAkB,CAACO,mBAAmB,CAACD,OAAO,CAAC,KAAKE,SAAS,IAAAC,OAAA,CAAAC,GAAA,CAAAC,QAAA,oBAAvEb,SAAS,QAAgE,wBAAwBQ,OAAO,iBAAiB,IAAzHR,SAAS;EACT,OAAOE,kBAAkB,CAACO,mBAAmB,CAACD,OAAO,CAAC,GAAG;IACrD,GAAGD,IAAI;IACPC,OAAO;IACPM,WAAW,EAAEP,IAAI,CAACO,WAAW,IAAIP,IAAI,CAACC,OAAO;IAAE;IAC/CO,WAAW,EAAER,IAAI,CAACQ,WAAW,IAAIZ;EACrC,CAAC;AACL","ignoreList":[]}
1
+ {"version":3,"file":"defineSpt.js","names":["invariant","namespace","ontologyDefinition","defaultTypeClasses","kind","name","defineSharedPropertyType","opts","apiName","sharedPropertyTypes","undefined","process","env","NODE_ENV","nonNameSpacedApiName","displayName","typeClasses"],"sources":["defineSpt.ts"],"sourcesContent":["/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n ApiNameValueTypeReference,\n SharedPropertyTypeGothamMapping,\n} from \"@osdk/client.unstable\";\nimport invariant from \"tiny-invariant\";\nimport { namespace, ontologyDefinition } from \"./defineOntology.js\";\nimport type { PropertyTypeType, SharedPropertyType } from \"./types.js\";\n\nconst defaultTypeClasses: SharedPropertyType[\"typeClasses\"] = [{\n kind: \"render_hint\",\n name: \"SELECTABLE\",\n}, { kind: \"render_hint\", name: \"SORTABLE\" }];\n\nexport function defineSharedPropertyType(\n opts: {\n apiName: string;\n type: PropertyTypeType;\n array?: boolean;\n description?: string;\n displayName?: string;\n valueType?: ApiNameValueTypeReference;\n typeClasses?: SharedPropertyType[\"typeClasses\"];\n gothamMapping?: SharedPropertyTypeGothamMapping;\n },\n): SharedPropertyType {\n const apiName = namespace + opts.apiName;\n invariant(\n ontologyDefinition.sharedPropertyTypes[apiName] === undefined,\n `Shared property type ${apiName} already exists`,\n );\n\n return ontologyDefinition.sharedPropertyTypes[apiName] = {\n ...opts,\n apiName,\n nonNameSpacedApiName: opts.apiName,\n displayName: opts.displayName ?? opts.apiName, // This way the non-namespaced api name is the display name (maybe not ideal)\n typeClasses: opts.typeClasses ?? defaultTypeClasses,\n };\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAMA,OAAOA,SAAS,MAAM,gBAAgB;AACtC,SAASC,SAAS,EAAEC,kBAAkB,QAAQ,qBAAqB;AAGnE,MAAMC,kBAAqD,GAAG,CAAC;EAC7DC,IAAI,EAAE,aAAa;EACnBC,IAAI,EAAE;AACR,CAAC,EAAE;EAAED,IAAI,EAAE,aAAa;EAAEC,IAAI,EAAE;AAAW,CAAC,CAAC;AAE7C,OAAO,SAASC,wBAAwBA,CACtCC,IASC,EACmB;EACpB,MAAMC,OAAO,GAAGP,SAAS,GAAGM,IAAI,CAACC,OAAO;EACxC,EACEN,kBAAkB,CAACO,mBAAmB,CAACD,OAAO,CAAC,KAAKE,SAAS,IAAAC,OAAA,CAAAC,GAAA,CAAAC,QAAA,oBAD/Db,SAAS,QAEP,wBAAwBQ,OAAO,iBAAiB,IAFlDR,SAAS;EAKT,OAAOE,kBAAkB,CAACO,mBAAmB,CAACD,OAAO,CAAC,GAAG;IACvD,GAAGD,IAAI;IACPC,OAAO;IACPM,oBAAoB,EAAEP,IAAI,CAACC,OAAO;IAClCO,WAAW,EAAER,IAAI,CAACQ,WAAW,IAAIR,IAAI,CAACC,OAAO;IAAE;IAC/CQ,WAAW,EAAET,IAAI,CAACS,WAAW,IAAIb;EACnC,CAAC;AACH","ignoreList":[]}