@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.
- package/CHANGELOG.md +168 -0
- package/build/browser/api/addDependency.js +20 -4
- package/build/browser/api/addDependency.js.map +1 -1
- package/build/browser/api/defineAction.js +7 -6
- package/build/browser/api/defineAction.js.map +1 -1
- package/build/browser/api/defineInterface.js +6 -5
- package/build/browser/api/defineInterface.js.map +1 -1
- package/build/browser/api/defineObject.js +20 -14
- package/build/browser/api/defineObject.js.map +1 -1
- package/build/browser/api/defineOntology.js +19 -13
- package/build/browser/api/defineOntology.js.map +1 -1
- package/build/browser/api/overall.test.js +1342 -718
- package/build/browser/api/overall.test.js.map +1 -1
- package/build/browser/api/types.js.map +1 -1
- package/build/browser/cli/main.js +1 -1
- package/build/browser/cli/main.js.map +1 -1
- package/build/cjs/index.cjs +81 -62
- package/build/cjs/index.cjs.map +1 -1
- package/build/cjs/index.d.cts +3 -2
- package/build/esm/api/addDependency.js +20 -4
- package/build/esm/api/addDependency.js.map +1 -1
- package/build/esm/api/defineAction.js +7 -6
- package/build/esm/api/defineAction.js.map +1 -1
- package/build/esm/api/defineInterface.js +6 -5
- package/build/esm/api/defineInterface.js.map +1 -1
- package/build/esm/api/defineObject.js +20 -14
- package/build/esm/api/defineObject.js.map +1 -1
- package/build/esm/api/defineOntology.js +19 -13
- package/build/esm/api/defineOntology.js.map +1 -1
- package/build/esm/api/overall.test.js +1342 -718
- package/build/esm/api/overall.test.js.map +1 -1
- package/build/esm/api/types.js.map +1 -1
- package/build/esm/cli/main.js +1 -1
- package/build/esm/cli/main.js.map +1 -1
- package/build/types/api/addDependency.d.ts +1 -1
- package/build/types/api/addDependency.d.ts.map +1 -1
- package/build/types/api/defineAction.d.ts.map +1 -1
- package/build/types/api/defineInterface.d.ts +1 -0
- package/build/types/api/defineInterface.d.ts.map +1 -1
- package/build/types/api/defineObject.d.ts +2 -1
- package/build/types/api/defineObject.d.ts.map +1 -1
- package/build/types/api/defineOntology.d.ts +1 -0
- package/build/types/api/defineOntology.d.ts.map +1 -1
- package/build/types/api/types.d.ts +1 -1
- package/build/types/api/types.d.ts.map +1 -1
- package/package.json +5 -5
package/build/cjs/index.d.cts
CHANGED
|
@@ -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(
|
|
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
|
|
17
|
+
import * as fs from "fs";
|
|
18
|
+
import * as path from "path";
|
|
18
19
|
import { dependencies } from "./defineOntology.js";
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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":["
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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(([
|
|
24
|
+
const properties = Object.fromEntries(Object.entries(interfaceDef.properties ?? {}).map(([propApiName, type]) => {
|
|
25
25
|
if (typeof type === "object" && "propertyDefinition" in type) {
|
|
26
|
-
return [
|
|
26
|
+
return [namespace + propApiName, {
|
|
27
27
|
required: type.required,
|
|
28
|
-
sharedPropertyType: unifyBasePropertyDefinition(namespace,
|
|
28
|
+
sharedPropertyType: unifyBasePropertyDefinition(namespace, propApiName, type.propertyDefinition)
|
|
29
29
|
}];
|
|
30
30
|
}
|
|
31
|
-
return [
|
|
31
|
+
return [namespace + propApiName, {
|
|
32
32
|
required: true,
|
|
33
|
-
sharedPropertyType: unifyBasePropertyDefinition(namespace,
|
|
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 {
|
|
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
|
|
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 ${
|
|
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.
|
|
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 ${
|
|
64
|
+
reason: `Interface property ${interfaceProp[1].sharedPropertyType.apiName} not implemented by ${objectDef.apiName} object definition`
|
|
64
65
|
};
|
|
65
66
|
};
|
|
66
|
-
const
|
|
67
|
-
const
|
|
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
|