@osdk/maker 0.11.0-beta.9 → 0.11.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 (46) hide show
  1. package/CHANGELOG.md +168 -0
  2. package/build/browser/api/addDependency.js +20 -4
  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 +20 -14
  9. package/build/browser/api/defineObject.js.map +1 -1
  10. package/build/browser/api/defineOntology.js +19 -13
  11. package/build/browser/api/defineOntology.js.map +1 -1
  12. package/build/browser/api/overall.test.js +1342 -718
  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/browser/cli/main.js.map +1 -1
  17. package/build/cjs/index.cjs +81 -62
  18. package/build/cjs/index.cjs.map +1 -1
  19. package/build/cjs/index.d.cts +3 -2
  20. package/build/esm/api/addDependency.js +20 -4
  21. package/build/esm/api/addDependency.js.map +1 -1
  22. package/build/esm/api/defineAction.js +7 -6
  23. package/build/esm/api/defineAction.js.map +1 -1
  24. package/build/esm/api/defineInterface.js +6 -5
  25. package/build/esm/api/defineInterface.js.map +1 -1
  26. package/build/esm/api/defineObject.js +20 -14
  27. package/build/esm/api/defineObject.js.map +1 -1
  28. package/build/esm/api/defineOntology.js +19 -13
  29. package/build/esm/api/defineOntology.js.map +1 -1
  30. package/build/esm/api/overall.test.js +1342 -718
  31. package/build/esm/api/overall.test.js.map +1 -1
  32. package/build/esm/api/types.js.map +1 -1
  33. package/build/esm/cli/main.js +1 -1
  34. package/build/esm/cli/main.js.map +1 -1
  35. package/build/types/api/addDependency.d.ts +1 -1
  36. package/build/types/api/addDependency.d.ts.map +1 -1
  37. package/build/types/api/defineAction.d.ts.map +1 -1
  38. package/build/types/api/defineInterface.d.ts +1 -0
  39. package/build/types/api/defineInterface.d.ts.map +1 -1
  40. package/build/types/api/defineObject.d.ts +2 -1
  41. package/build/types/api/defineObject.d.ts.map +1 -1
  42. package/build/types/api/defineOntology.d.ts +1 -0
  43. package/build/types/api/defineOntology.d.ts.map +1 -1
  44. package/build/types/api/types.d.ts +1 -1
  45. package/build/types/api/types.d.ts.map +1 -1
  46. package/package.json +5 -5
@@ -2,7 +2,7 @@ import { ActionTypeApiName, ParameterId, OntologyIrBaseParameterType_decimal, On
2
2
 
3
3
  declare function main(args?: string[]): Promise<void>;
4
4
 
5
- declare function addDependency(namespace: string, version: string): void;
5
+ declare function addDependency(namespaceNoDot: string, fileInPackage: string): void;
6
6
 
7
7
  type BlueprintIcon = "add-clip" | "add-column-left" | "add-column-right" | "add-location" | "add-row-bottom" | "add-row-top" | "add-to-artifact" | "add-to-folder" | "add" | "aimpoints-target" | "airplane" | "align-center" | "align-justify" | "align-left" | "align-right" | "alignment-bottom" | "alignment-horizontal-center" | "alignment-left" | "alignment-right" | "alignment-top" | "alignment-vertical-center" | "ammunition" | "anchor" | "annotation" | "antenna" | "app-header" | "application" | "applications" | "archive" | "area-of-interest" | "array-boolean" | "array-date" | "array-floating-point" | "array-numeric" | "array-string" | "array-timestamp" | "array" | "arrow-bottom-left" | "arrow-bottom-right" | "arrow-down" | "arrow-left" | "arrow-right" | "arrow-top-left" | "arrow-top-right" | "arrow-up" | "arrows-horizontal" | "arrows-vertical" | "asterisk" | "at" | "automatic-updates" | "axle" | "backlink" | "backward-ten" | "badge" | "ban-circle" | "bank-account" | "barcode" | "binary-number" | "blank" | "blocked-person" | "bold" | "book" | "bookmark" | "box" | "briefcase" | "bring-data" | "bring-forward" | "bug" | "buggy" | "build" | "bullseye" | "calculator" | "calendar" | "camera" | "caret-down" | "caret-left" | "caret-right" | "caret-up" | "cargo-ship" | "cell-tower" | "changes" | "chart" | "chat" | "chevron-backward" | "chevron-down" | "chevron-forward" | "chevron-left" | "chevron-right" | "chevron-up" | "circle-arrow-down" | "circle-arrow-left" | "circle-arrow-right" | "circle-arrow-up" | "circle" | "citation" | "clean" | "clip" | "clipboard-file" | "clipboard" | "cloud-download" | "cloud-server" | "cloud-tick" | "cloud-upload" | "cloud" | "code-block" | "code" | "cog" | "collapse-all" | "color-fill" | "column-layout" | "comment" | "comparison" | "compass" | "compressed" | "confirm" | "console" | "contrast" | "control" | "credit-card" | "crop" | "cross-circle" | "cross" | "crown" | "css-style" | "cube-add" | "cube-remove" | "cube" | "curly-braces" | "curved-range-chart" | "cut" | "cycle" | "dashboard" | "data-connection" | "data-lineage" | "data-search" | "data-sync" | "database" | "delete" | "delta" | "derive-column" | "desktop" | "detection" | "diagnosis" | "diagram-tree" | "direction-left" | "direction-right" | "disable" | "divide" | "document-open" | "document-share" | "document" | "dollar" | "dot" | "double-caret-horizontal" | "double-caret-vertical" | "double-chevron-down" | "double-chevron-left" | "double-chevron-right" | "double-chevron-up" | "doughnut-chart" | "download" | "drag-handle-horizontal" | "drag-handle-vertical" | "draw" | "drawer-left-filled" | "drawer-left" | "drawer-right-filled" | "drawer-right" | "drive-time" | "duplicate" | "edit" | "eject" | "emoji" | "endnote" | "endorsed" | "envelope" | "equals" | "eraser" | "error" | "euro" | "excavator" | "exchange" | "exclude-row" | "expand-all" | "explain" | "export" | "eye-off" | "eye-on" | "eye-open" | "fast-backward" | "fast-forward" | "feed-subscribed" | "feed" | "film" | "filter-keep" | "filter-list" | "filter-open" | "filter-remove" | "filter" | "flag" | "flame" | "flash" | "floating-point" | "floppy-disk" | "flow-branch" | "flow-end" | "flow-linear" | "flow-review-branch" | "flow-review" | "flows" | "folder-close" | "folder-new" | "folder-open" | "folder-shared-open" | "folder-shared" | "follower" | "following" | "font" | "fork" | "form" | "forward-ten" | "fuel" | "full-circle" | "full-stacked-chart" | "fullscreen" | "function" | "gantt-chart" | "generate" | "geofence" | "geolocation" | "geosearch" | "geotime" | "git-branch" | "git-commit" | "git-merge" | "git-new-branch" | "git-pull" | "git-push" | "git-repo" | "glass" | "globe-network" | "globe" | "graph-remove" | "graph" | "greater-than-or-equal-to" | "greater-than" | "grid-view" | "grid" | "group-item" | "group-objects" | "grouped-bar-chart" | "hand-down" | "hand-left" | "hand-right" | "hand-up" | "hand" | "hat" | "header-one" | "header-three" | "header-two" | "header" | "headset" | "heart-broken" | "heart" | "heat-grid" | "heatmap" | "helicopter" | "help" | "helper-management" | "high-priority" | "high-voltage-pole" | "highlight" | "history" | "home" | "horizontal-bar-chart-asc" | "horizontal-bar-chart-desc" | "horizontal-bar-chart" | "horizontal-distribution" | "horizontal-inbetween" | "hurricane" | "id-number" | "image-rotate-left" | "image-rotate-right" | "import" | "inbox-filtered" | "inbox-geo" | "inbox-search" | "inbox-update" | "inbox" | "info-sign" | "inheritance" | "inherited-group" | "inner-join" | "input" | "insert" | "intelligence" | "intersection" | "ip-address" | "issue-closed" | "issue-new" | "issue" | "italic" | "join-table" | "key-backspace" | "key-command" | "key-control" | "key-delete" | "key-enter" | "key-escape" | "key-option" | "key-shift" | "key-tab" | "key" | "known-vehicle" | "lab-test" | "label" | "layer-outline" | "layer" | "layers" | "layout-auto" | "layout-balloon" | "layout-bottom-row-three-tiles" | "layout-bottom-row-two-tiles" | "layout-circle" | "layout-grid" | "layout-group-by" | "layout-hierarchy" | "layout-left-column-three-tiles" | "layout-left-column-two-tiles" | "layout-linear" | "layout-right-column-three-tiles" | "layout-right-column-two-tiles" | "layout-skew-grid" | "layout-sorted-clusters" | "layout-three-columns" | "layout-three-rows" | "layout-top-row-three-tiles" | "layout-top-row-two-tiles" | "layout-two-columns" | "layout-two-rows" | "layout" | "learning" | "left-join" | "lengthen-text" | "less-than-or-equal-to" | "less-than" | "lifesaver" | "lightbulb" | "lightning" | "link" | "list-columns" | "list-detail-view" | "list" | "locate" | "lock" | "locomotive" | "log-in" | "log-out" | "low-voltage-pole" | "manual" | "manually-entered-data" | "many-to-many" | "many-to-one" | "map-create" | "map-marker" | "map" | "maximize" | "media" | "menu-closed" | "menu-open" | "menu" | "merge-columns" | "merge-links" | "microphone" | "minimize" | "minus" | "mobile-phone" | "mobile-video" | "modal-filled" | "modal" | "model" | "moon" | "more" | "mountain" | "move" | "mugshot" | "multi-select" | "music" | "nest" | "new-drawing" | "new-grid-item" | "new-layer" | "new-layers" | "new-link" | "new-object" | "new-person" | "new-prescription" | "new-shield" | "new-text-box" | "ninja" | "not-equal-to" | "notifications-snooze" | "notifications-updated" | "notifications" | "numbered-list" | "numerical" | "office" | "offline" | "oil-field" | "one-column" | "one-to-many" | "one-to-one" | "open-application" | "outdated" | "output" | "page-layout" | "panel-stats" | "panel-table" | "paperclip" | "paragraph" | "paste-variable" | "path-search" | "path" | "pause" | "people" | "percentage" | "person" | "phone-call" | "phone-forward" | "phone" | "pie-chart" | "pin" | "pivot-table" | "pivot" | "play" | "playbook" | "plus" | "polygon-filter" | "power" | "predictive-analysis" | "prescription" | "presentation" | "print" | "projects" | "properties" | "property" | "publish-function" | "pulse" | "rain" | "random" | "range-ring" | "record" | "rect-height" | "rect-width" | "rectangle" | "redo" | "refresh" | "regex" | "regression-chart" | "remove-column-left" | "remove-column-right" | "remove-column" | "remove-row-bottom" | "remove-row-top" | "remove" | "repeat" | "reset" | "resolve" | "rig" | "right-join" | "ring" | "rocket-slant" | "rocket" | "rotate-document" | "rotate-page" | "route" | "satellite" | "saved" | "scatter-plot" | "search-around" | "search-template" | "search-text" | "search" | "segmented-control" | "select" | "selection" | "send-backward" | "send-message" | "send-to-graph" | "send-to-map" | "send-to" | "sensor" | "series-add" | "series-configuration" | "series-derived" | "series-filtered" | "series-search" | "settings" | "shapes" | "share" | "shared-filter" | "shield" | "ship" | "shop" | "shopping-cart" | "shorten-text" | "signal-search" | "sim-card" | "slash" | "small-cross" | "small-info-sign" | "small-minus" | "small-plus" | "small-square" | "small-tick" | "snowflake" | "soccer-ball" | "social-media" | "sort-alphabetical-desc" | "sort-alphabetical" | "sort-asc" | "sort-desc" | "sort-numerical-desc" | "sort-numerical" | "sort" | "spell-check" | "split-columns" | "sports-stadium" | "square" | "stacked-chart" | "stadium-geometry" | "star-empty" | "star" | "step-backward" | "step-chart" | "step-forward" | "stop" | "stopwatch" | "strikethrough" | "style" | "subscript" | "superscript" | "swap-horizontal" | "swap-vertical" | "switch" | "symbol-circle" | "symbol-cross" | "symbol-diamond" | "symbol-rectangle" | "symbol-square" | "symbol-triangle-down" | "symbol-triangle-up" | "syringe" | "table-sync" | "tag" | "take-action" | "tank" | "target" | "taxi" | "team" | "temperature" | "text-highlight" | "th-derived" | "th-disconnect" | "th-filtered" | "th-list" | "th" | "third-party" | "thumbs-down" | "thumbs-up" | "tick-circle" | "tick" | "time" | "timeline-area-chart" | "timeline-bar-chart" | "timeline-events" | "timeline-line-chart" | "tint" | "torch" | "tractor" | "train" | "translate" | "trash" | "tree" | "trending-down" | "trending-up" | "trophy" | "truck" | "two-columns" | "unarchive" | "underline" | "undo" | "ungroup-objects" | "unknown-vehicle" | "unlink" | "unlock" | "unpin" | "unresolve" | "updated" | "upload" | "user" | "variable" | "vector" | "vertical-bar-chart-asc" | "vertical-bar-chart-desc" | "vertical-distribution" | "vertical-inbetween" | "video" | "virus" | "volume-down" | "volume-off" | "volume-up" | "walk" | "warning-sign" | "waterfall-chart" | "waves" | "widget-button" | "widget-footer" | "widget-header" | "widget" | "wind" | "wrench" | "zoom-in" | "zoom-out" | "zoom-to-fit";
8
8
 
@@ -162,7 +162,7 @@ interface InterfacePropertyType {
162
162
  sharedPropertyType: SharedPropertyType;
163
163
  required: boolean;
164
164
  }
165
- interface InterfaceType extends OntologyEntityBase, Omit<OntologyIrInterfaceType, "properties" | "allProperties" | "allLinks" | "extendsInterfaces" | "allExtendsInterfaces" | "propertiesV2" | "allPropertiesV2"> {
165
+ interface InterfaceType extends OntologyEntityBase, Omit<OntologyIrInterfaceType, "properties" | "allProperties" | "allLinks" | "extendsInterfaces" | "allExtendsInterfaces" | "propertiesV2" | "allPropertiesV2" | "propertiesV3" | "allPropertiesV3"> {
166
166
  propertiesV2: Record<string, InterfacePropertyType>;
167
167
  extendsInterfaces: Array<InterfaceType>;
168
168
  status: InterfaceTypeStatus;
@@ -524,6 +524,7 @@ type InterfaceTypeDefinition = {
524
524
  status?: SimplifiedInterfaceTypeStatus;
525
525
  properties?: Record<string, PropertyBase | PropertyWithOptional>;
526
526
  extends?: InterfaceType | InterfaceType[];
527
+ searchable?: boolean;
527
528
  };
528
529
  declare function defineInterface(interfaceDef: InterfaceTypeDefinition): InterfaceType;
529
530
 
@@ -14,11 +14,27 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import { lt } from "semver-ts";
17
+ import * as fs from "fs";
18
+ import * as path from "path";
18
19
  import { dependencies } from "./defineOntology.js";
19
- export function addDependency(namespace, version) {
20
- if (version !== "" && (dependencies[namespace] === undefined || lt(dependencies[namespace], version))) {
21
- dependencies[namespace] = version;
20
+ const MAX_SEARCH_DEPTH = 5;
21
+ export function addDependency(namespaceNoDot, fileInPackage) {
22
+ let dir = path.dirname(fileInPackage);
23
+ let packageJsonPath = null;
24
+ for (let i = 0; i < MAX_SEARCH_DEPTH; i++) {
25
+ const candidate = path.join(dir, "package.json");
26
+ if (fs.existsSync(candidate)) {
27
+ packageJsonPath = candidate;
28
+ break;
29
+ }
30
+ const parentDir = path.dirname(dir);
31
+ if (parentDir === dir) break;
32
+ dir = parentDir;
22
33
  }
34
+ if (!packageJsonPath) {
35
+ throw new Error(`Could not find a package.json within ${MAX_SEARCH_DEPTH} parent directories of ${fileInPackage}`);
36
+ }
37
+ const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, "utf-8"));
38
+ dependencies[namespaceNoDot] = packageJson.version ?? "";
23
39
  }
24
40
  //# sourceMappingURL=addDependency.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"addDependency.js","names":["lt","dependencies","addDependency","namespace","version","undefined"],"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 { lt } from \"semver-ts\";\nimport { dependencies } from \"./defineOntology.js\";\n\nexport function addDependency(\n namespace: string,\n version: string,\n): void {\n if (\n version !== \"\"\n && (dependencies[namespace] === undefined\n || lt(dependencies[namespace], version))\n ) {\n dependencies[namespace] = version;\n }\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,EAAE,QAAQ,WAAW;AAC9B,SAASC,YAAY,QAAQ,qBAAqB;AAElD,OAAO,SAASC,aAAaA,CAC3BC,SAAiB,EACjBC,OAAe,EACT;EACN,IACEA,OAAO,KAAK,EAAE,KACVH,YAAY,CAACE,SAAS,CAAC,KAAKE,SAAS,IACpCL,EAAE,CAACC,YAAY,CAACE,SAAS,CAAC,EAAEC,OAAO,CAAC,CAAC,EAC1C;IACAH,YAAY,CAACE,SAAS,CAAC,GAAGC,OAAO;EACnC;AACF","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,
@@ -101,7 +97,7 @@ function validateInterfaceImplProperty(spt, mappedObjectProp, object) {
101
97
  reason: `Object property mapped to interface does not exist. Object Property Mapped: ${mappedObjectProp}`
102
98
  };
103
99
  }
104
- if (spt.type !== objProp?.type) {
100
+ if (JSON.stringify(spt.type) !== JSON.stringify(objProp?.type)) {
105
101
  return {
106
102
  type: "invalid",
107
103
  reason: `Object property type does not match the interface property it is mapped to. Interface Property: ${spt.apiName}, objectProperty: ${mappedObjectProp}`
@@ -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