@osdk/maker 0.34.0 → 0.35.0-main-833f47a4aeef6f7cfcab024ca3623aada385701b
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 +14 -0
- package/build/browser/api/InterfaceActionTypeConstraintDefinition.js +2 -0
- package/build/browser/api/InterfaceActionTypeConstraintDefinition.js.map +1 -0
- package/build/browser/api/defineInterface.js +2 -0
- package/build/browser/api/defineInterface.js.map +1 -1
- package/build/browser/api/defineInterfaceActionTypeConstraint.js +55 -0
- package/build/browser/api/defineInterfaceActionTypeConstraint.js.map +1 -0
- package/build/browser/api/defineInterfaceLinkConstraint.js +1 -0
- package/build/browser/api/defineInterfaceLinkConstraint.js.map +1 -1
- package/build/browser/api/defineOntology.js +44 -5
- package/build/browser/api/defineOntology.js.map +1 -1
- package/build/browser/api/interface/InterfaceType.js.map +1 -1
- package/build/browser/cli/main.js +2 -2
- package/build/browser/cli/main.js.map +1 -1
- package/build/browser/conversion/toMarketplace/convertObject.js +2 -1
- package/build/browser/conversion/toMarketplace/convertObject.js.map +1 -1
- package/build/browser/index.js +2 -0
- package/build/browser/index.js.map +1 -1
- package/build/cjs/index.cjs +189 -13
- package/build/cjs/index.cjs.map +1 -1
- package/build/cjs/index.d.cts +22 -2
- package/build/esm/api/InterfaceActionTypeConstraintDefinition.js +2 -0
- package/build/esm/api/InterfaceActionTypeConstraintDefinition.js.map +1 -0
- package/build/esm/api/defineInterface.js +2 -0
- package/build/esm/api/defineInterface.js.map +1 -1
- package/build/esm/api/defineInterfaceActionTypeConstraint.js +55 -0
- package/build/esm/api/defineInterfaceActionTypeConstraint.js.map +1 -0
- package/build/esm/api/defineInterfaceLinkConstraint.js +1 -0
- package/build/esm/api/defineInterfaceLinkConstraint.js.map +1 -1
- package/build/esm/api/defineOntology.js +44 -5
- package/build/esm/api/defineOntology.js.map +1 -1
- package/build/esm/api/interface/InterfaceType.js.map +1 -1
- package/build/esm/cli/main.js +2 -2
- package/build/esm/cli/main.js.map +1 -1
- package/build/esm/conversion/toMarketplace/convertObject.js +2 -1
- package/build/esm/conversion/toMarketplace/convertObject.js.map +1 -1
- package/build/esm/index.js +2 -0
- package/build/esm/index.js.map +1 -1
- package/build/types/api/InterfaceActionTypeConstraintDefinition.d.ts +16 -0
- package/build/types/api/InterfaceActionTypeConstraintDefinition.d.ts.map +1 -0
- package/build/types/api/defineInterfaceActionTypeConstraint.d.ts +2 -0
- package/build/types/api/defineInterfaceActionTypeConstraint.d.ts.map +1 -0
- package/build/types/api/defineOntology.d.ts +1 -0
- package/build/types/api/defineOntology.d.ts.map +1 -1
- package/build/types/api/interface/InterfaceType.d.ts +1 -0
- package/build/types/api/interface/InterfaceType.d.ts.map +1 -1
- package/build/types/conversion/toMarketplace/convertObject.d.ts.map +1 -1
- package/build/types/index.d.ts +2 -0
- package/build/types/index.d.ts.map +1 -1
- package/package.json +6 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# @osdk/maker
|
|
2
2
|
|
|
3
|
+
## 0.35.0-main-833f47a4aeef6f7cfcab024ca3623aada385701b
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 833f47a: add support for interface action type constraint in ontology as code
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- b5d0a61: transitive OAC imports
|
|
12
|
+
- Updated dependencies [b5d0a61]
|
|
13
|
+
- Updated dependencies [833f47a]
|
|
14
|
+
- @osdk/generator-converters.ontologyir@2.31.1-main-833f47a4aeef6f7cfcab024ca3623aada385701b
|
|
15
|
+
- @osdk/api@2.31.1-main-833f47a4aeef6f7cfcab024ca3623aada385701b
|
|
16
|
+
|
|
3
17
|
## 0.34.0
|
|
4
18
|
|
|
5
19
|
### Patch Changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InterfaceActionTypeConstraintDefinition.js","names":[],"sources":["InterfaceActionTypeConstraintDefinition.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 { OntologyIrBaseParameterConstraintType } from \"@osdk/client.unstable\";\nimport type { InterfaceType } from \"./interface/InterfaceType.js\";\n\nexport interface ParameterConstraintDefinition {\n apiName: string;\n displayName: string;\n type: OntologyIrBaseParameterConstraintType;\n requireImplementation: boolean;\n}\n\nexport interface InterfaceActionTypeConstraintDefinition {\n interfaceType: InterfaceType;\n apiName: string;\n displayName: string;\n description: string;\n requireImplementation: boolean;\n parameters: Array<ParameterConstraintDefinition>;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defineInterface.js","names":["invariant","API_NAME_PATTERN","isValidApiName","cloneDefinition","OntologyEntityTypeEnum","namespace","ontologyDefinition","updateOntology","withoutNamespace","isInterfaceSharedPropertyType","mapSimplifiedStatusToInterfaceTypeStatus","combineApiNamespaceIfMissing","isExotic","isPropertyTypeType","defineInterface","interfaceDefInput","interfaceDef","apiName","INTERFACE_TYPE","undefined","process","env","NODE_ENV","spts","Object","fromEntries","entries","properties","filter","_name","prop","map","s","spt","required","sharedPropertyType","propertiesV2","propName","type","sptApiName","verifyBasePropertyDefinition","propertiesV3","propertyBase","extendsInterfaces","extends","Array","isArray","status","deprecated","message","deadline","fullInterface","displayMetadata","displayName","description","icon","blueprint","color","locator","links","permission","searchable","__type","unNamespacedTypeApiName","JSON","stringify","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 type { InterfaceTypeStatus } from \"@osdk/client.unstable\";\nimport invariant from \"tiny-invariant\";\nimport { API_NAME_PATTERN, isValidApiName } from \"../util/ApiNameValidator.js\";\nimport { cloneDefinition } from \"./cloneDefinition.js\";\nimport type { BlueprintIcon } from \"./common/BlueprintIcons.js\";\nimport type { EntityPermission } from \"./common/EntityPermission.js\";\nimport { OntologyEntityTypeEnum } from \"./common/OntologyEntityTypeEnum.js\";\nimport {\n namespace,\n ontologyDefinition,\n updateOntology,\n withoutNamespace,\n} from \"./defineOntology.js\";\nimport {\n type InterfaceDefinedProperty,\n type InterfacePropertyType,\n isInterfaceSharedPropertyType,\n} from \"./interface/InterfacePropertyType.js\";\nimport { type InterfaceType } from \"./interface/InterfaceType.js\";\nimport { mapSimplifiedStatusToInterfaceTypeStatus } from \"./interface/mapSimplifiedStatusToInterfaceTypeStatus.js\";\nimport { combineApiNamespaceIfMissing } from \"./namespace/combineApiNamespaceIfMissing.js\";\nimport { isExotic, isPropertyTypeType } from \"./properties/PropertyTypeType.js\";\nimport { type SharedPropertyType } from \"./properties/SharedPropertyType.js\";\n\nexport type SimplifiedInterfaceTypeStatus =\n | { type: \"deprecated\"; message: string; deadline: string }\n | { type: \"active\" }\n | { type: \"experimental\" }\n | { type: \"example\" };\n\ntype PropertyBase =\n | SharedPropertyType\n | InterfaceDefinedProperty;\ntype SptWithOptional = {\n required: boolean;\n sharedPropertyType: SharedPropertyType;\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 | SptWithOptional\n >;\n extends?: InterfaceType | InterfaceType[];\n searchable?: boolean;\n permission?: EntityPermission;\n};\n\nexport function defineInterface(\n interfaceDefInput: InterfaceTypeDefinition,\n): InterfaceType {\n const interfaceDef = cloneDefinition(interfaceDefInput);\n const apiName = namespace + interfaceDef.apiName;\n invariant(\n ontologyDefinition[OntologyEntityTypeEnum.INTERFACE_TYPE][apiName]\n === undefined,\n `Interface ${apiName} already exists`,\n );\n\n invariant(\n isValidApiName(interfaceDef.apiName),\n `Invalid API name ${interfaceDef.apiName}. API names must match the regex ${API_NAME_PATTERN}.`,\n );\n\n // legacy support for propertiesV2 (only SPTs)\n const spts: Record<string, SptWithOptional> = Object.fromEntries(\n Object.entries(interfaceDef.properties ?? {}).filter(([_name, prop]) => {\n return isInterfaceSharedPropertyType(prop) || \"apiName\" in prop;\n }).map(([s, spt]) => {\n const required = isInterfaceSharedPropertyType(spt) ? spt.required : true;\n return [s, {\n sharedPropertyType: (isInterfaceSharedPropertyType(spt)\n ? spt.sharedPropertyType\n : spt) as SharedPropertyType,\n required,\n }];\n }),\n );\n const propertiesV2 = Object.fromEntries(\n Object.entries(spts).map<\n [string, { required: boolean; sharedPropertyType: SharedPropertyType }]\n >(\n ([propName, type]) => {\n const sptApiName = combineApiNamespaceIfMissing(\n namespace,\n type.sharedPropertyType.apiName,\n );\n return [sptApiName, {\n required: type.required,\n sharedPropertyType: verifyBasePropertyDefinition(\n namespace,\n propName,\n type.sharedPropertyType,\n ),\n }];\n },\n ),\n );\n\n const propertiesV3 = Object.fromEntries(\n Object.entries(interfaceDef.properties ?? {}).map<\n [string, InterfacePropertyType]\n >(([apiName, prop]) => {\n invariant(\n isValidApiName(apiName),\n `Invalid API name ${apiName} for property on interface ${interfaceDef.apiName}. API names must match the regex ${API_NAME_PATTERN}.`,\n );\n const required =\n (typeof prop === \"object\" && isInterfaceSharedPropertyType(prop))\n ? prop.required\n : true;\n const propertyBase: PropertyBase =\n (typeof prop === \"object\" && isInterfaceSharedPropertyType(prop))\n ? prop.sharedPropertyType\n : prop;\n if (\n typeof propertyBase === \"object\"\n && \"nonNameSpacedApiName\" in propertyBase\n ) {\n // SPT\n return [apiName, {\n required,\n sharedPropertyType: propertyBase,\n }];\n } else {\n // IDP\n return [apiName, propertyBase];\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,\n propertiesV3,\n permission: interfaceDef.permission,\n searchable: interfaceDef.searchable ?? true,\n __type: OntologyEntityTypeEnum.INTERFACE_TYPE,\n };\n\n updateOntology(fullInterface);\n return fullInterface;\n}\n\nfunction verifyBasePropertyDefinition(\n namespace: string,\n apiName: string,\n type: SharedPropertyType,\n): SharedPropertyType {\n const unNamespacedTypeApiName = withoutNamespace(type.apiName);\n invariant(\n isPropertyTypeType(type.type) || isExotic(type.type),\n `Invalid data type ${\n JSON.stringify(type)\n } for property ${apiName} on InterfaceType ${apiName}`,\n );\n invariant(\n namespace + apiName === type.apiName\n || apiName === unNamespacedTypeApiName,\n `property key and it's apiName must be identical. ${\n JSON.stringify({ key: apiName, apiName: type.apiName })\n }`,\n );\n return type;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"defineInterface.js","names":["invariant","API_NAME_PATTERN","isValidApiName","cloneDefinition","OntologyEntityTypeEnum","namespace","ontologyDefinition","updateOntology","withoutNamespace","isInterfaceSharedPropertyType","mapSimplifiedStatusToInterfaceTypeStatus","combineApiNamespaceIfMissing","isExotic","isPropertyTypeType","defineInterface","interfaceDefInput","interfaceDef","apiName","INTERFACE_TYPE","undefined","process","env","NODE_ENV","spts","Object","fromEntries","entries","properties","filter","_name","prop","map","s","spt","required","sharedPropertyType","propertiesV2","propName","type","sptApiName","verifyBasePropertyDefinition","propertiesV3","propertyBase","extendsInterfaces","extends","Array","isArray","status","deprecated","message","deadline","fullInterface","displayMetadata","displayName","description","icon","blueprint","color","locator","linkedInterfaces","links","actionTypeConstraints","permission","searchable","__type","unNamespacedTypeApiName","JSON","stringify","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 type { InterfaceTypeStatus } from \"@osdk/client.unstable\";\nimport invariant from \"tiny-invariant\";\nimport { API_NAME_PATTERN, isValidApiName } from \"../util/ApiNameValidator.js\";\nimport { cloneDefinition } from \"./cloneDefinition.js\";\nimport type { BlueprintIcon } from \"./common/BlueprintIcons.js\";\nimport type { EntityPermission } from \"./common/EntityPermission.js\";\nimport { OntologyEntityTypeEnum } from \"./common/OntologyEntityTypeEnum.js\";\nimport {\n namespace,\n ontologyDefinition,\n updateOntology,\n withoutNamespace,\n} from \"./defineOntology.js\";\nimport {\n type InterfaceDefinedProperty,\n type InterfacePropertyType,\n isInterfaceSharedPropertyType,\n} from \"./interface/InterfacePropertyType.js\";\nimport { type InterfaceType } from \"./interface/InterfaceType.js\";\nimport { mapSimplifiedStatusToInterfaceTypeStatus } from \"./interface/mapSimplifiedStatusToInterfaceTypeStatus.js\";\nimport { combineApiNamespaceIfMissing } from \"./namespace/combineApiNamespaceIfMissing.js\";\nimport { isExotic, isPropertyTypeType } from \"./properties/PropertyTypeType.js\";\nimport { type SharedPropertyType } from \"./properties/SharedPropertyType.js\";\n\nexport type SimplifiedInterfaceTypeStatus =\n | { type: \"deprecated\"; message: string; deadline: string }\n | { type: \"active\" }\n | { type: \"experimental\" }\n | { type: \"example\" };\n\ntype PropertyBase =\n | SharedPropertyType\n | InterfaceDefinedProperty;\ntype SptWithOptional = {\n required: boolean;\n sharedPropertyType: SharedPropertyType;\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 | SptWithOptional\n >;\n extends?: InterfaceType | InterfaceType[];\n searchable?: boolean;\n permission?: EntityPermission;\n};\n\nexport function defineInterface(\n interfaceDefInput: InterfaceTypeDefinition,\n): InterfaceType {\n const interfaceDef = cloneDefinition(interfaceDefInput);\n const apiName = namespace + interfaceDef.apiName;\n invariant(\n ontologyDefinition[OntologyEntityTypeEnum.INTERFACE_TYPE][apiName]\n === undefined,\n `Interface ${apiName} already exists`,\n );\n\n invariant(\n isValidApiName(interfaceDef.apiName),\n `Invalid API name ${interfaceDef.apiName}. API names must match the regex ${API_NAME_PATTERN}.`,\n );\n\n // legacy support for propertiesV2 (only SPTs)\n const spts: Record<string, SptWithOptional> = Object.fromEntries(\n Object.entries(interfaceDef.properties ?? {}).filter(([_name, prop]) => {\n return isInterfaceSharedPropertyType(prop) || \"apiName\" in prop;\n }).map(([s, spt]) => {\n const required = isInterfaceSharedPropertyType(spt) ? spt.required : true;\n return [s, {\n sharedPropertyType: (isInterfaceSharedPropertyType(spt)\n ? spt.sharedPropertyType\n : spt) as SharedPropertyType,\n required,\n }];\n }),\n );\n const propertiesV2 = Object.fromEntries(\n Object.entries(spts).map<\n [string, { required: boolean; sharedPropertyType: SharedPropertyType }]\n >(\n ([propName, type]) => {\n const sptApiName = combineApiNamespaceIfMissing(\n namespace,\n type.sharedPropertyType.apiName,\n );\n return [sptApiName, {\n required: type.required,\n sharedPropertyType: verifyBasePropertyDefinition(\n namespace,\n propName,\n type.sharedPropertyType,\n ),\n }];\n },\n ),\n );\n\n const propertiesV3 = Object.fromEntries(\n Object.entries(interfaceDef.properties ?? {}).map<\n [string, InterfacePropertyType]\n >(([apiName, prop]) => {\n invariant(\n isValidApiName(apiName),\n `Invalid API name ${apiName} for property on interface ${interfaceDef.apiName}. API names must match the regex ${API_NAME_PATTERN}.`,\n );\n const required =\n (typeof prop === \"object\" && isInterfaceSharedPropertyType(prop))\n ? prop.required\n : true;\n const propertyBase: PropertyBase =\n (typeof prop === \"object\" && isInterfaceSharedPropertyType(prop))\n ? prop.sharedPropertyType\n : prop;\n if (\n typeof propertyBase === \"object\"\n && \"nonNameSpacedApiName\" in propertyBase\n ) {\n // SPT\n return [apiName, {\n required,\n sharedPropertyType: propertyBase,\n }];\n } else {\n // IDP\n return [apiName, propertyBase];\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 linkedInterfaces: [],\n links: [],\n actionTypeConstraints: [],\n status,\n propertiesV2,\n propertiesV3,\n permission: interfaceDef.permission,\n searchable: interfaceDef.searchable ?? true,\n __type: OntologyEntityTypeEnum.INTERFACE_TYPE,\n };\n\n updateOntology(fullInterface);\n return fullInterface;\n}\n\nfunction verifyBasePropertyDefinition(\n namespace: string,\n apiName: string,\n type: SharedPropertyType,\n): SharedPropertyType {\n const unNamespacedTypeApiName = withoutNamespace(type.apiName);\n invariant(\n isPropertyTypeType(type.type) || isExotic(type.type),\n `Invalid data type ${\n JSON.stringify(type)\n } for property ${apiName} on InterfaceType ${apiName}`,\n );\n invariant(\n namespace + apiName === type.apiName\n || apiName === unNamespacedTypeApiName,\n `property key and it's apiName must be identical. ${\n JSON.stringify({ key: apiName, apiName: type.apiName })\n }`,\n );\n return type;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2025 Palantir Technologies, Inc. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import invariant from "tiny-invariant";
|
|
18
|
+
import { cloneDefinition } from "./cloneDefinition.js";
|
|
19
|
+
import { OntologyEntityTypeEnum } from "./common/OntologyEntityTypeEnum.js";
|
|
20
|
+
import { importedTypes, namespace } from "./defineOntology.js";
|
|
21
|
+
import { combineApiNamespaceIfMissing } from "./namespace/combineApiNamespaceIfMissing.js";
|
|
22
|
+
export function defineInterfaceActionTypeConstraint(input) {
|
|
23
|
+
const def = cloneDefinition(input);
|
|
24
|
+
!(importedTypes[OntologyEntityTypeEnum.INTERFACE_TYPE][def.interfaceType.apiName] == null) ? process.env.NODE_ENV !== "production" ? invariant(false, `Cannot define an action type constraint on imported interface ${def.interfaceType.apiName}. The interface must be locally defined.`) : invariant(false) : void 0;
|
|
25
|
+
const apiNameWithNamespace = combineApiNamespaceIfMissing(namespace, def.apiName);
|
|
26
|
+
!!def.requireImplementation ? process.env.NODE_ENV !== "production" ? invariant(false, `requireImplementation is not yet supported for action type constraints`) : invariant(false) : void 0;
|
|
27
|
+
for (const param of def.parameters) {
|
|
28
|
+
!!param.requireImplementation ? process.env.NODE_ENV !== "production" ? invariant(false, `requireImplementation is not yet supported for parameter constraints`) : invariant(false) : void 0;
|
|
29
|
+
}
|
|
30
|
+
!(def.interfaceType.actionTypeConstraints.find(a => a.metadata.apiName === apiNameWithNamespace) == null) ? process.env.NODE_ENV !== "production" ? invariant(false, `Action type constraint with apiName ${apiNameWithNamespace} already exists on interface ${def.interfaceType.apiName}`) : invariant(false) : void 0;
|
|
31
|
+
const parameters = {};
|
|
32
|
+
const seenParamApiNames = new Set();
|
|
33
|
+
for (const param of def.parameters) {
|
|
34
|
+
!!seenParamApiNames.has(param.apiName) ? process.env.NODE_ENV !== "production" ? invariant(false, `Duplicate parameter constraint apiName "${param.apiName}" in action type constraint ${apiNameWithNamespace}`) : invariant(false) : void 0;
|
|
35
|
+
seenParamApiNames.add(param.apiName);
|
|
36
|
+
parameters[param.apiName] = {
|
|
37
|
+
displayMetadata: {
|
|
38
|
+
displayName: param.displayName,
|
|
39
|
+
apiName: param.apiName
|
|
40
|
+
},
|
|
41
|
+
type: param.type,
|
|
42
|
+
requireImplementation: param.requireImplementation
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
def.interfaceType.actionTypeConstraints.push({
|
|
46
|
+
metadata: {
|
|
47
|
+
apiName: apiNameWithNamespace,
|
|
48
|
+
displayName: def.displayName,
|
|
49
|
+
description: def.description
|
|
50
|
+
},
|
|
51
|
+
parameters,
|
|
52
|
+
requireImplementation: def.requireImplementation
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=defineInterfaceActionTypeConstraint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defineInterfaceActionTypeConstraint.js","names":["invariant","cloneDefinition","OntologyEntityTypeEnum","importedTypes","namespace","combineApiNamespaceIfMissing","defineInterfaceActionTypeConstraint","input","def","INTERFACE_TYPE","interfaceType","apiName","process","env","NODE_ENV","apiNameWithNamespace","requireImplementation","param","parameters","actionTypeConstraints","find","a","metadata","seenParamApiNames","Set","has","add","displayMetadata","displayName","type","push","description"],"sources":["defineInterfaceActionTypeConstraint.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n InterfaceParameterConstraintApiName,\n OntologyIrInterfaceParameterConstraint,\n} from \"@osdk/client.unstable\";\nimport invariant from \"tiny-invariant\";\nimport { cloneDefinition } from \"./cloneDefinition.js\";\nimport { OntologyEntityTypeEnum } from \"./common/OntologyEntityTypeEnum.js\";\nimport { importedTypes, namespace } from \"./defineOntology.js\";\nimport type { InterfaceActionTypeConstraintDefinition } from \"./InterfaceActionTypeConstraintDefinition.js\";\nimport { combineApiNamespaceIfMissing } from \"./namespace/combineApiNamespaceIfMissing.js\";\n\nexport function defineInterfaceActionTypeConstraint(\n input: InterfaceActionTypeConstraintDefinition,\n): void {\n const def = cloneDefinition(input);\n\n invariant(\n importedTypes[OntologyEntityTypeEnum.INTERFACE_TYPE][\n def.interfaceType.apiName\n ]\n == null,\n `Cannot define an action type constraint on imported interface ${def.interfaceType.apiName}. The interface must be locally defined.`,\n );\n\n const apiNameWithNamespace = combineApiNamespaceIfMissing(\n namespace,\n def.apiName,\n );\n\n invariant(\n !def.requireImplementation,\n `requireImplementation is not yet supported for action type constraints`,\n );\n\n for (const param of def.parameters) {\n invariant(\n !param.requireImplementation,\n `requireImplementation is not yet supported for parameter constraints`,\n );\n }\n\n invariant(\n def.interfaceType.actionTypeConstraints.find(\n a => a.metadata.apiName === apiNameWithNamespace,\n ) == null,\n `Action type constraint with apiName ${apiNameWithNamespace} already exists on interface ${def.interfaceType.apiName}`,\n );\n\n const parameters: Record<\n InterfaceParameterConstraintApiName,\n OntologyIrInterfaceParameterConstraint\n > = {};\n const seenParamApiNames = new Set<string>();\n for (const param of def.parameters) {\n invariant(\n !seenParamApiNames.has(param.apiName),\n `Duplicate parameter constraint apiName \"${param.apiName}\" in action type constraint ${apiNameWithNamespace}`,\n );\n seenParamApiNames.add(param.apiName);\n parameters[param.apiName] = {\n displayMetadata: {\n displayName: param.displayName,\n apiName: param.apiName,\n },\n type: param.type,\n requireImplementation: param.requireImplementation,\n };\n }\n\n def.interfaceType.actionTypeConstraints.push({\n metadata: {\n apiName: apiNameWithNamespace,\n displayName: def.displayName,\n description: def.description,\n },\n parameters,\n requireImplementation: def.requireImplementation,\n });\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAMA,OAAOA,SAAS,MAAM,gBAAgB;AACtC,SAASC,eAAe,QAAQ,sBAAsB;AACtD,SAASC,sBAAsB,QAAQ,oCAAoC;AAC3E,SAASC,aAAa,EAAEC,SAAS,QAAQ,qBAAqB;AAE9D,SAASC,4BAA4B,QAAQ,6CAA6C;AAE1F,OAAO,SAASC,mCAAmCA,CACjDC,KAA8C,EACxC;EACN,MAAMC,GAAG,GAAGP,eAAe,CAACM,KAAK,CAAC;EAElC,EACEJ,aAAa,CAACD,sBAAsB,CAACO,cAAc,CAAC,CAClDD,GAAG,CAACE,aAAa,CAACC,OAAO,CAC1B,IACI,IAAI,IAAAC,OAAA,CAAAC,GAAA,CAAAC,QAAA,oBAJXd,SAAS,QAKP,iEAAiEQ,GAAG,CAACE,aAAa,CAACC,OAAO,0CAA0C,IALtIX,SAAS;EAQT,MAAMe,oBAAoB,GAAGV,4BAA4B,CACvDD,SAAS,EACTI,GAAG,CAACG,OACN,CAAC;EAED,CACE,CAACH,GAAG,CAACQ,qBAAqB,GAAAJ,OAAA,CAAAC,GAAA,CAAAC,QAAA,oBAD5Bd,SAAS,QAEP,wEAAwE,IAF1EA,SAAS;EAKT,KAAK,MAAMiB,KAAK,IAAIT,GAAG,CAACU,UAAU,EAAE;IAClC,CACE,CAACD,KAAK,CAACD,qBAAqB,GAAAJ,OAAA,CAAAC,GAAA,CAAAC,QAAA,oBAD9Bd,SAAS,QAEP,sEAAsE,IAFxEA,SAAS;EAIX;EAEA,EACEQ,GAAG,CAACE,aAAa,CAACS,qBAAqB,CAACC,IAAI,CAC1CC,CAAC,IAAIA,CAAC,CAACC,QAAQ,CAACX,OAAO,KAAKI,oBAC9B,CAAC,IAAI,IAAI,IAAAH,OAAA,CAAAC,GAAA,CAAAC,QAAA,oBAHXd,SAAS,QAIP,uCAAuCe,oBAAoB,gCAAgCP,GAAG,CAACE,aAAa,CAACC,OAAO,EAAE,IAJxHX,SAAS;EAOT,MAAMkB,UAGL,GAAG,CAAC,CAAC;EACN,MAAMK,iBAAiB,GAAG,IAAIC,GAAG,CAAS,CAAC;EAC3C,KAAK,MAAMP,KAAK,IAAIT,GAAG,CAACU,UAAU,EAAE;IAClC,CACE,CAACK,iBAAiB,CAACE,GAAG,CAACR,KAAK,CAACN,OAAO,CAAC,GAAAC,OAAA,CAAAC,GAAA,CAAAC,QAAA,oBADvCd,SAAS,QAEP,2CAA2CiB,KAAK,CAACN,OAAO,+BAA+BI,oBAAoB,EAAE,IAF/Gf,SAAS;IAITuB,iBAAiB,CAACG,GAAG,CAACT,KAAK,CAACN,OAAO,CAAC;IACpCO,UAAU,CAACD,KAAK,CAACN,OAAO,CAAC,GAAG;MAC1BgB,eAAe,EAAE;QACfC,WAAW,EAAEX,KAAK,CAACW,WAAW;QAC9BjB,OAAO,EAAEM,KAAK,CAACN;MACjB,CAAC;MACDkB,IAAI,EAAEZ,KAAK,CAACY,IAAI;MAChBb,qBAAqB,EAAEC,KAAK,CAACD;IAC/B,CAAC;EACH;EAEAR,GAAG,CAACE,aAAa,CAACS,qBAAqB,CAACW,IAAI,CAAC;IAC3CR,QAAQ,EAAE;MACRX,OAAO,EAAEI,oBAAoB;MAC7Ba,WAAW,EAAEpB,GAAG,CAACoB,WAAW;MAC5BG,WAAW,EAAEvB,GAAG,CAACuB;IACnB,CAAC;IACDb,UAAU;IACVF,qBAAqB,EAAER,GAAG,CAACQ;EAC7B,CAAC,CAAC;AACJ","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defineInterfaceLinkConstraint.js","names":["invariant","cloneDefinition","OntologyEntityTypeEnum","importedTypes","namespace","withoutNamespace","combineApiNamespaceIfMissing","defineInterfaceLinkConstraint","linkDefInput","linkDef","INTERFACE_TYPE","from","apiName","process","env","NODE_ENV","fromLinkMeta","getLinkMeta","links","find","a","metadata","push","cardinality","toMany","linkedEntityTypeId","getLinkedType","toOne","required","t","type","interfaceType","meta","displayName","description","apiNameWithNamespace","apiNameWithoutNamespace"],"sources":["defineInterfaceLinkConstraint.ts"],"sourcesContent":["/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport invariant from \"tiny-invariant\";\nimport { cloneDefinition } from \"./cloneDefinition.js\";\nimport { OntologyEntityTypeEnum } from \"./common/OntologyEntityTypeEnum.js\";\nimport {\n importedTypes,\n namespace,\n withoutNamespace,\n} from \"./defineOntology.js\";\nimport type { InterfaceType } from \"./interface/InterfaceType.js\";\nimport { combineApiNamespaceIfMissing } from \"./namespace/combineApiNamespaceIfMissing.js\";\n\ntype Meta = { apiName: string; displayName?: string; description?: string };\ntype ApiNameOrInterfaceType = string | InterfaceType;\n\ntype Many = {\n apiName: string;\n from: InterfaceType;\n toMany: ApiNameOrInterfaceType;\n toOne?: never;\n displayName?: string;\n description?: string;\n required?: boolean;\n};\ntype One = {\n apiName: string;\n from: InterfaceType;\n toOne: ApiNameOrInterfaceType;\n toMany?: never;\n displayName?: string;\n description?: string;\n required?: boolean;\n};\n\nexport function defineInterfaceLinkConstraint(\n linkDefInput: One | Many,\n): void {\n const linkDef = cloneDefinition(linkDefInput);\n\n invariant(\n importedTypes[OntologyEntityTypeEnum.INTERFACE_TYPE][linkDef.from.apiName]\n == null,\n `Cannot define a link constraint from imported interface ${linkDef.from.apiName}. The \"from\" side must be a locally defined interface.`,\n );\n\n const fromLinkMeta = getLinkMeta(linkDef);\n\n invariant(\n linkDef.from.links.find(a => a.metadata.apiName === fromLinkMeta.apiName)\n == null,\n `Link with apiName ${fromLinkMeta.apiName} already exists on ${linkDef.apiName}`,\n );\n\n linkDef.from.links.push({\n cardinality: linkDef.toMany ? \"MANY\" : \"SINGLE\",\n linkedEntityTypeId: getLinkedType(linkDef.toMany ?? linkDef.toOne),\n metadata: fromLinkMeta,\n required: linkDef.required ?? true,\n });\n}\n\nfunction getLinkedType(t: string | InterfaceType) {\n return {\n type: \"interfaceType\" as const,\n interfaceType: typeof t === \"string\" ? t : t.apiName,\n };\n}\n\nfunction getLinkMeta(meta: One | Many): Required<Meta> {\n const { apiName, displayName, description } = meta;\n const apiNameWithNamespace = combineApiNamespaceIfMissing(namespace, apiName);\n const apiNameWithoutNamespace = withoutNamespace(apiNameWithNamespace);\n return {\n apiName: apiNameWithNamespace,\n displayName: displayName ?? apiNameWithoutNamespace,\n description: description ?? displayName ?? apiNameWithoutNamespace,\n };\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,SAAS,MAAM,gBAAgB;AACtC,SAASC,eAAe,QAAQ,sBAAsB;AACtD,SAASC,sBAAsB,QAAQ,oCAAoC;AAC3E,SACEC,aAAa,EACbC,SAAS,EACTC,gBAAgB,QACX,qBAAqB;AAE5B,SAASC,4BAA4B,QAAQ,6CAA6C;AAwB1F,OAAO,SAASC,6BAA6BA,CAC3CC,YAAwB,EAClB;EACN,MAAMC,OAAO,GAAGR,eAAe,CAACO,YAAY,CAAC;EAE7C,EACEL,aAAa,CAACD,sBAAsB,CAACQ,cAAc,CAAC,CAACD,OAAO,CAACE,IAAI,CAACC,OAAO,CAAC,IACrE,IAAI,IAAAC,OAAA,CAAAC,GAAA,CAAAC,QAAA,oBAFXf,SAAS,QAGP,2DAA2DS,OAAO,CAACE,IAAI,CAACC,OAAO,wDAAwD,IAHzIZ,SAAS;EAMT,MAAMgB,YAAY,GAAGC,WAAW,CAACR,OAAO,CAAC;EAEzC,EACEA,OAAO,CAACE,IAAI,CAACO,KAAK,CAACC,IAAI,CAACC,CAAC,IAAIA,CAAC,CAACC,QAAQ,CAACT,OAAO,KAAKI,YAAY,CAACJ,OAAO,CAAC,IACpE,IAAI,IAAAC,OAAA,CAAAC,GAAA,CAAAC,QAAA,oBAFXf,SAAS,QAGP,qBAAqBgB,YAAY,CAACJ,OAAO,sBAAsBH,OAAO,CAACG,OAAO,EAAE,IAHlFZ,SAAS;EAMTS,OAAO,CAACE,IAAI,CAACO,KAAK,CAACI,IAAI,CAAC;IACtBC,WAAW,EAAEd,OAAO,CAACe,MAAM,GAAG,MAAM,GAAG,QAAQ;IAC/CC,kBAAkB,EAAEC,aAAa,CAACjB,OAAO,CAACe,MAAM,IAAIf,OAAO,CAACkB,KAAK,CAAC;IAClEN,QAAQ,EAAEL,YAAY;IACtBY,QAAQ,EAAEnB,OAAO,CAACmB,QAAQ,IAAI;EAChC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"defineInterfaceLinkConstraint.js","names":["invariant","cloneDefinition","OntologyEntityTypeEnum","importedTypes","namespace","withoutNamespace","combineApiNamespaceIfMissing","defineInterfaceLinkConstraint","linkDefInput","linkDef","INTERFACE_TYPE","from","apiName","process","env","NODE_ENV","fromLinkMeta","getLinkMeta","links","find","a","metadata","push","cardinality","toMany","linkedEntityTypeId","getLinkedType","toOne","required","linkedInterfaces","t","type","interfaceType","meta","displayName","description","apiNameWithNamespace","apiNameWithoutNamespace"],"sources":["defineInterfaceLinkConstraint.ts"],"sourcesContent":["/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport invariant from \"tiny-invariant\";\nimport { cloneDefinition } from \"./cloneDefinition.js\";\nimport { OntologyEntityTypeEnum } from \"./common/OntologyEntityTypeEnum.js\";\nimport {\n importedTypes,\n namespace,\n withoutNamespace,\n} from \"./defineOntology.js\";\nimport type { InterfaceType } from \"./interface/InterfaceType.js\";\nimport { combineApiNamespaceIfMissing } from \"./namespace/combineApiNamespaceIfMissing.js\";\n\ntype Meta = { apiName: string; displayName?: string; description?: string };\ntype ApiNameOrInterfaceType = string | InterfaceType;\n\ntype Many = {\n apiName: string;\n from: InterfaceType;\n toMany: ApiNameOrInterfaceType;\n toOne?: never;\n displayName?: string;\n description?: string;\n required?: boolean;\n};\ntype One = {\n apiName: string;\n from: InterfaceType;\n toOne: ApiNameOrInterfaceType;\n toMany?: never;\n displayName?: string;\n description?: string;\n required?: boolean;\n};\n\nexport function defineInterfaceLinkConstraint(\n linkDefInput: One | Many,\n): void {\n const linkDef = cloneDefinition(linkDefInput);\n\n invariant(\n importedTypes[OntologyEntityTypeEnum.INTERFACE_TYPE][linkDef.from.apiName]\n == null,\n `Cannot define a link constraint from imported interface ${linkDef.from.apiName}. The \"from\" side must be a locally defined interface.`,\n );\n\n const fromLinkMeta = getLinkMeta(linkDef);\n\n invariant(\n linkDef.from.links.find(a => a.metadata.apiName === fromLinkMeta.apiName)\n == null,\n `Link with apiName ${fromLinkMeta.apiName} already exists on ${linkDef.apiName}`,\n );\n\n linkDef.from.links.push({\n cardinality: linkDef.toMany ? \"MANY\" : \"SINGLE\",\n linkedEntityTypeId: getLinkedType(linkDef.toMany ?? linkDef.toOne),\n metadata: fromLinkMeta,\n required: linkDef.required ?? true,\n });\n linkDef.from.linkedInterfaces?.push(linkDef.toMany ?? linkDef.toOne);\n}\n\nfunction getLinkedType(t: string | InterfaceType) {\n return {\n type: \"interfaceType\" as const,\n interfaceType: typeof t === \"string\" ? t : t.apiName,\n };\n}\n\nfunction getLinkMeta(meta: One | Many): Required<Meta> {\n const { apiName, displayName, description } = meta;\n const apiNameWithNamespace = combineApiNamespaceIfMissing(namespace, apiName);\n const apiNameWithoutNamespace = withoutNamespace(apiNameWithNamespace);\n return {\n apiName: apiNameWithNamespace,\n displayName: displayName ?? apiNameWithoutNamespace,\n description: description ?? displayName ?? apiNameWithoutNamespace,\n };\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,SAAS,MAAM,gBAAgB;AACtC,SAASC,eAAe,QAAQ,sBAAsB;AACtD,SAASC,sBAAsB,QAAQ,oCAAoC;AAC3E,SACEC,aAAa,EACbC,SAAS,EACTC,gBAAgB,QACX,qBAAqB;AAE5B,SAASC,4BAA4B,QAAQ,6CAA6C;AAwB1F,OAAO,SAASC,6BAA6BA,CAC3CC,YAAwB,EAClB;EACN,MAAMC,OAAO,GAAGR,eAAe,CAACO,YAAY,CAAC;EAE7C,EACEL,aAAa,CAACD,sBAAsB,CAACQ,cAAc,CAAC,CAACD,OAAO,CAACE,IAAI,CAACC,OAAO,CAAC,IACrE,IAAI,IAAAC,OAAA,CAAAC,GAAA,CAAAC,QAAA,oBAFXf,SAAS,QAGP,2DAA2DS,OAAO,CAACE,IAAI,CAACC,OAAO,wDAAwD,IAHzIZ,SAAS;EAMT,MAAMgB,YAAY,GAAGC,WAAW,CAACR,OAAO,CAAC;EAEzC,EACEA,OAAO,CAACE,IAAI,CAACO,KAAK,CAACC,IAAI,CAACC,CAAC,IAAIA,CAAC,CAACC,QAAQ,CAACT,OAAO,KAAKI,YAAY,CAACJ,OAAO,CAAC,IACpE,IAAI,IAAAC,OAAA,CAAAC,GAAA,CAAAC,QAAA,oBAFXf,SAAS,QAGP,qBAAqBgB,YAAY,CAACJ,OAAO,sBAAsBH,OAAO,CAACG,OAAO,EAAE,IAHlFZ,SAAS;EAMTS,OAAO,CAACE,IAAI,CAACO,KAAK,CAACI,IAAI,CAAC;IACtBC,WAAW,EAAEd,OAAO,CAACe,MAAM,GAAG,MAAM,GAAG,QAAQ;IAC/CC,kBAAkB,EAAEC,aAAa,CAACjB,OAAO,CAACe,MAAM,IAAIf,OAAO,CAACkB,KAAK,CAAC;IAClEN,QAAQ,EAAEL,YAAY;IACtBY,QAAQ,EAAEnB,OAAO,CAACmB,QAAQ,IAAI;EAChC,CAAC,CAAC;EACFnB,OAAO,CAACE,IAAI,CAACkB,gBAAgB,EAAEP,IAAI,CAACb,OAAO,CAACe,MAAM,IAAIf,OAAO,CAACkB,KAAK,CAAC;AACtE;AAEA,SAASD,aAAaA,CAACI,CAAyB,EAAE;EAChD,OAAO;IACLC,IAAI,EAAE,eAAwB;IAC9BC,aAAa,EAAE,OAAOF,CAAC,KAAK,QAAQ,GAAGA,CAAC,GAAGA,CAAC,CAAClB;EAC/C,CAAC;AACH;AAEA,SAASK,WAAWA,CAACgB,IAAgB,EAAkB;EACrD,MAAM;IAAErB,OAAO;IAAEsB,WAAW;IAAEC;EAAY,CAAC,GAAGF,IAAI;EAClD,MAAMG,oBAAoB,GAAG9B,4BAA4B,CAACF,SAAS,EAAEQ,OAAO,CAAC;EAC7E,MAAMyB,uBAAuB,GAAGhC,gBAAgB,CAAC+B,oBAAoB,CAAC;EACtE,OAAO;IACLxB,OAAO,EAAEwB,oBAAoB;IAC7BF,WAAW,EAAEA,WAAW,IAAIG,uBAAuB;IACnDF,WAAW,EAAEA,WAAW,IAAID,WAAW,IAAIG;EAC7C,CAAC;AACH","ignoreList":[]}
|
|
@@ -122,7 +122,7 @@ export function writeStaticObjects(outputDir) {
|
|
|
122
122
|
const entityFileNameBase = camel(withoutNamespace(apiName)) + (ontologyTypeEnumKey === OntologyEntityTypeEnum.VALUE_TYPE ? "ValueType" : "");
|
|
123
123
|
const filePath = path.join(typeDirPath, `${entityFileNameBase}.ts`);
|
|
124
124
|
const entityTypeName = getEntityTypeName(ontologyTypeEnumKey);
|
|
125
|
-
const entityJSON = JSON.stringify(entity, null, 2).replace(/("__type"\s*:\s*)"([^"]*)"/g, (_, prefix, value) => `${prefix}OntologyEntityTypeEnum.${value}`);
|
|
125
|
+
const entityJSON = JSON.stringify(explodeInterfaceType(entity), null, 2).replace(/("__type"\s*:\s*)"([^"]*)"/g, (_, prefix, value) => `${prefix}OntologyEntityTypeEnum.${value}`);
|
|
126
126
|
const content = `
|
|
127
127
|
import { wrapWithProxy, OntologyEntityTypeEnum } from '@osdk/maker';
|
|
128
128
|
import type { ${entityTypeName} } from '@osdk/maker';
|
|
@@ -171,6 +171,44 @@ export function buildDatasource(apiName, definition, classificationMarkingGroupN
|
|
|
171
171
|
})
|
|
172
172
|
};
|
|
173
173
|
}
|
|
174
|
+
|
|
175
|
+
// convert linked interface api name references to full type before codegen
|
|
176
|
+
export function explodeInterfaceType(entity) {
|
|
177
|
+
if (entity.__type === OntologyEntityTypeEnum.INTERFACE_TYPE) {
|
|
178
|
+
return filterCyclicReferences({
|
|
179
|
+
...entity,
|
|
180
|
+
linkedInterfaces: (entity.linkedInterfaces ?? []).map(interfaceTypeOrApiName => typeof interfaceTypeOrApiName === "string" ? ontologyDefinition[OntologyEntityTypeEnum.INTERFACE_TYPE][interfaceTypeOrApiName] : interfaceTypeOrApiName)
|
|
181
|
+
});
|
|
182
|
+
} else {
|
|
183
|
+
return entity;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
function filterCyclicReferences(iface, ancestors = new Set(), expanded = new Set()) {
|
|
187
|
+
ancestors.add(iface.apiName);
|
|
188
|
+
const processLinked = linked => {
|
|
189
|
+
if (typeof linked === "string") return linked;
|
|
190
|
+
if (ancestors.has(linked.apiName)) return linked.apiName;
|
|
191
|
+
if (expanded.has(linked.apiName)) {
|
|
192
|
+
const {
|
|
193
|
+
linkedInterfaces: _,
|
|
194
|
+
extendsInterfaces: __,
|
|
195
|
+
...shallow
|
|
196
|
+
} = linked;
|
|
197
|
+
return {
|
|
198
|
+
...shallow,
|
|
199
|
+
linkedInterfaces: [],
|
|
200
|
+
extendsInterfaces: []
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
return filterCyclicReferences(linked, new Set(ancestors), expanded);
|
|
204
|
+
};
|
|
205
|
+
expanded.add(iface.apiName);
|
|
206
|
+
return {
|
|
207
|
+
...iface,
|
|
208
|
+
linkedInterfaces: (iface.linkedInterfaces ?? []).map(processLinked),
|
|
209
|
+
extendsInterfaces: iface.extendsInterfaces.map(parent => processLinked(parent))
|
|
210
|
+
};
|
|
211
|
+
}
|
|
174
212
|
export function cleanAndValidateLinkTypeId(apiName) {
|
|
175
213
|
// Insert a dash before any uppercase letter that follows a lowercase letter or digit
|
|
176
214
|
const step1 = apiName.replace(/([a-z0-9])([A-Z])/g, "$1-$2");
|
|
@@ -269,6 +307,7 @@ export function convertAction(action) {
|
|
|
269
307
|
message: action.submissionMetadata.successMessage
|
|
270
308
|
}] : [],
|
|
271
309
|
typeClasses: action.typeClasses ?? [],
|
|
310
|
+
applyingMessage: [],
|
|
272
311
|
...(action.submissionMetadata?.submitButtonDisplayMetadata && {
|
|
273
312
|
submitButtonDisplayMetadata: action.submissionMetadata.submitButtonDisplayMetadata
|
|
274
313
|
}),
|
|
@@ -276,7 +315,7 @@ export function convertAction(action) {
|
|
|
276
315
|
undoButtonConfiguration: action.submissionMetadata.undoButtonConfiguration
|
|
277
316
|
})
|
|
278
317
|
},
|
|
279
|
-
parameterOrdering
|
|
318
|
+
parameterOrdering,
|
|
280
319
|
formContentOrdering: getFormContentOrdering(action, parameterOrdering),
|
|
281
320
|
parameters: actionParameters,
|
|
282
321
|
sections: actionSections,
|
|
@@ -341,14 +380,14 @@ export function extractAllowedValues(allowedValues) {
|
|
|
341
380
|
type: "text",
|
|
342
381
|
text: {
|
|
343
382
|
...(minLength === undefined ? {} : {
|
|
344
|
-
minLength
|
|
383
|
+
minLength
|
|
345
384
|
}),
|
|
346
385
|
...(maxLength === undefined ? {} : {
|
|
347
|
-
maxLength
|
|
386
|
+
maxLength
|
|
348
387
|
}),
|
|
349
388
|
...(regex === undefined ? {} : {
|
|
350
389
|
regex: {
|
|
351
|
-
regex
|
|
390
|
+
regex,
|
|
352
391
|
failureMessage: "Invalid input"
|
|
353
392
|
}
|
|
354
393
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defineOntology.js","names":["fs","path","convertActionParameters","convertActionSections","convertActionValidation","convertOntologyDefinition","convertOntologyToValueTypeIr","getFormContentOrdering","createCodeSnippets","OntologyEntityTypeEnum","ontologyDefinition","importedTypes","dependencies","namespace","updateOntology","entity","__type","VALUE_TYPE","apiName","undefined","push","defineOntology","ns","body","outputDir","dependencyFile","codeSnippetFiles","snippetPackageName","snippetFileOutputDir","randomnessKey","OBJECT_TYPE","ACTION_TYPE","LINK_TYPE","INTERFACE_TYPE","SHARED_PROPERTY_TYPE","e","console","error","writeStaticObjects","writeDependencyFile","codegenDir","resolve","typeDirs","existsSync","mkdirSync","recursive","Object","values","forEach","typeDirNameFromMap","currentTypeDirPath","join","rmSync","force","topLevelExportStatements","entries","ontologyTypeEnumKey","entities","typeDirName","typeDirPath","entityModuleNames","entityFileNameBase","camel","withoutNamespace","filePath","entityTypeName","getEntityTypeName","entityJSON","JSON","stringify","replace","_","prefix","value","content","slice","writeFileSync","flag","entityModuleName","length","mainIndexContent","dependencyInjectionString","mainIndexFilePath","buildDatasource","definition","classificationMarkingGroupName","mandatoryMarkingGroupName","needsSecurity","securityConfig","classificationConstraint","markingGroupName","markingConstraint","datasourceName","datasource","editsConfiguration","onlyAllowPrivilegedEdits","redacted","dataSecurity","cleanAndValidateLinkTypeId","step1","linkTypeId","toLowerCase","test","Error","dumpOntologyFullMetadata","dumpValueTypeWireType","convertObjectStatus","status","type","active","experimental","example","deprecated","message","deadline","replacedBy","convertAction","action","actionValidation","actionParameters","actionSections","parameterOrdering","parameters","map","p","id","actionType","actionTypeLogic","logic","rules","validation","metadata","displayMetadata","configuration","defaultLayout","defaultFormat","displayAndFormat","table","columnWidthByParameterRid","enableFileImport","fitHorizontally","frozenColumnCount","rowHeightInLines","enableLayoutUserSwitch","enableLayoutSwitch","description","displayName","icon","blueprint","locator","color","successMessage","submissionMetadata","typeClasses","submitButtonDisplayMetadata","undoButtonConfiguration","formContentOrdering","sections","extractAllowedValues","allowedValues","oneOf","labelledValues","otherValueAllowed","allowed","min","max","range","minimum","inclusive","maximum","minLength","maxLength","regex","text","failureMessage","datetime","objectTypeReference","interfaceTypeRids","interfaceTypes","geotimeSeriesReference","geotimeSeries","user","filter","fromGroups","group","groupFilter","groupId","staticValue","string","name","parameterId","parameter","multipassGroup","k","renderHintFromBaseType","checkbox","numericInput","userDropdown","textInput","dateTimePicker","filePicker","mandatoryMarkingPicker","cbacMarkingPicker","dropdown","extractNamespace","substring","lastIndexOf","lastDot","str","result","c","toUpperCase","charAt","namespaceNoDot","endsWith","addNamespaceIfNone","includes","initializeOntologyState","getOntologyDefinition","getImportedTypes","getNamespace"],"sources":["defineOntology.ts"],"sourcesContent":["/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n ActionTypeStatus,\n OntologyIr,\n OntologyIrActionTypeBlockDataV2,\n OntologyIrAllowedParameterValues,\n OntologyIrObjectTypeDatasource,\n OntologyIrObjectTypeDatasourceDefinition,\n OntologyIrParameter,\n OntologyIrSection,\n OntologyIrValueTypeBlockData,\n ParameterId,\n ParameterRenderHint,\n SectionId,\n} from \"@osdk/client.unstable\";\nimport * as fs from \"fs\";\nimport * as path from \"path\";\nimport { convertActionParameters } from \"../conversion/toMarketplace/convertActionParameters.js\";\nimport { convertActionSections } from \"../conversion/toMarketplace/convertActionSections.js\";\nimport { convertActionValidation } from \"../conversion/toMarketplace/convertActionValidation.js\";\nimport { convertOntologyDefinition } from \"../conversion/toMarketplace/convertOntologyDefinition.js\";\nimport { convertOntologyToValueTypeIr } from \"../conversion/toMarketplace/convertOntologyToValueTypeIr.js\";\nimport { getFormContentOrdering } from \"../conversion/toMarketplace/getFormContentOrdering.js\";\nimport type {\n ActionParameter,\n ActionParameterValidation,\n} from \"./action/ActionParameter.js\";\nimport type { ActionParameterAllowedValues } from \"./action/ActionParameterAllowedValues.js\";\nimport type { ActionType } from \"./action/ActionType.js\";\nimport { createCodeSnippets } from \"./code-snippets/createCodeSnippets.js\";\nimport type { OntologyDefinition } from \"./common/OntologyDefinition.js\";\nimport { OntologyEntityTypeEnum } from \"./common/OntologyEntityTypeEnum.js\";\nimport type { OntologyEntityType } from \"./common/OntologyEntityTypeMapping.js\";\n\n// type -> apiName -> entity\n/** @internal */\nexport let ontologyDefinition: OntologyDefinition;\n\n// type -> apiName -> entity\n/** @internal */\nexport let importedTypes: OntologyDefinition;\n\n// namespace -> version\n/** @internal */\nexport let dependencies: Record<string, string>;\n\n/** @internal */\nexport let namespace: string;\n\nexport function updateOntology<\n T extends OntologyEntityType,\n>(\n entity: T,\n): void {\n if (entity.__type !== OntologyEntityTypeEnum.VALUE_TYPE) {\n ontologyDefinition[entity.__type][entity.apiName] = entity;\n return;\n }\n // value types are a special case\n if (\n ontologyDefinition[OntologyEntityTypeEnum.VALUE_TYPE][entity.apiName]\n === undefined\n ) {\n ontologyDefinition[OntologyEntityTypeEnum.VALUE_TYPE][entity.apiName] = [];\n }\n ontologyDefinition[OntologyEntityTypeEnum.VALUE_TYPE][entity.apiName]\n .push(entity);\n}\n\nexport async function defineOntology(\n ns: string,\n body: () => void | Promise<void>,\n outputDir: string | undefined,\n dependencyFile?: string,\n codeSnippetFiles?: boolean,\n snippetPackageName?: string,\n snippetFileOutputDir?: string,\n randomnessKey?: string,\n): Promise<OntologyIr> {\n namespace = ns;\n dependencies = {};\n ontologyDefinition = {\n OBJECT_TYPE: {},\n ACTION_TYPE: {},\n LINK_TYPE: {},\n INTERFACE_TYPE: {},\n SHARED_PROPERTY_TYPE: {},\n VALUE_TYPE: {},\n };\n importedTypes = {\n SHARED_PROPERTY_TYPE: {},\n OBJECT_TYPE: {},\n ACTION_TYPE: {},\n LINK_TYPE: {},\n INTERFACE_TYPE: {},\n VALUE_TYPE: {},\n };\n try {\n await body();\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(\n \"Unexpected error while processing the body of the ontology\",\n e,\n );\n throw e;\n }\n if (outputDir) {\n writeStaticObjects(outputDir);\n }\n if (dependencyFile) {\n writeDependencyFile(dependencyFile);\n }\n if (codeSnippetFiles) {\n createCodeSnippets(\n ontologyDefinition,\n snippetPackageName,\n snippetFileOutputDir,\n );\n }\n\n return convertOntologyDefinition(ontologyDefinition, randomnessKey);\n}\n\nexport function writeStaticObjects(outputDir: string): void {\n const codegenDir = path.resolve(outputDir, \"codegen\");\n const typeDirs = {\n [OntologyEntityTypeEnum.SHARED_PROPERTY_TYPE]: \"shared-property-types\",\n [OntologyEntityTypeEnum.ACTION_TYPE]: \"action-types\",\n [OntologyEntityTypeEnum.OBJECT_TYPE]: \"object-types\",\n [OntologyEntityTypeEnum.LINK_TYPE]: \"link-types\",\n [OntologyEntityTypeEnum.INTERFACE_TYPE]: \"interface-types\",\n [OntologyEntityTypeEnum.VALUE_TYPE]: \"value-types\",\n };\n\n if (!fs.existsSync(codegenDir)) {\n fs.mkdirSync(codegenDir, { recursive: true });\n }\n\n Object.values(typeDirs).forEach(typeDirNameFromMap => {\n const currentTypeDirPath = path.join(codegenDir, typeDirNameFromMap);\n if (fs.existsSync(currentTypeDirPath)) {\n fs.rmSync(currentTypeDirPath, { recursive: true, force: true });\n }\n fs.mkdirSync(currentTypeDirPath, { recursive: true });\n });\n\n const topLevelExportStatements: string[] = [];\n\n Object.entries(ontologyDefinition).forEach(\n ([ontologyTypeEnumKey, entities]) => {\n const typeDirName =\n typeDirs[ontologyTypeEnumKey as OntologyEntityTypeEnum];\n\n const typeDirPath = path.join(codegenDir, typeDirName);\n const entityModuleNames: string[] = [];\n\n Object.entries(entities).forEach(\n ([apiName, entity]: [string, OntologyEntityType]) => {\n const entityFileNameBase = camel(withoutNamespace(apiName))\n + (ontologyTypeEnumKey as OntologyEntityTypeEnum\n === OntologyEntityTypeEnum.VALUE_TYPE\n ? \"ValueType\"\n : \"\");\n const filePath = path.join(typeDirPath, `${entityFileNameBase}.ts`);\n const entityTypeName = getEntityTypeName(ontologyTypeEnumKey);\n const entityJSON = JSON.stringify(entity, null, 2).replace(\n /(\"__type\"\\s*:\\s*)\"([^\"]*)\"/g,\n (_, prefix, value) => `${prefix}OntologyEntityTypeEnum.${value}`,\n );\n const content = `\nimport { wrapWithProxy, OntologyEntityTypeEnum } from '@osdk/maker';\nimport type { ${entityTypeName} } from '@osdk/maker';\n\n/** @type {import('@osdk/maker').${entityTypeName}} */\nconst ${entityFileNameBase}_base: ${entityTypeName} = ${\n ontologyTypeEnumKey === \"VALUE_TYPE\"\n ? entityJSON.slice(1, -2)\n : entityJSON\n } as unknown as ${entityTypeName};\n \nexport const ${entityFileNameBase}: ${entityTypeName} = wrapWithProxy(${entityFileNameBase}_base);\n `;\n fs.writeFileSync(filePath, content, { flag: \"w\" });\n entityModuleNames.push(entityFileNameBase);\n },\n );\n\n for (const entityModuleName of entityModuleNames) {\n topLevelExportStatements.push(\n `export { ${entityModuleName} } from \"./codegen/${typeDirName}/${entityModuleName}.js\";`,\n );\n }\n },\n );\n\n if (topLevelExportStatements.length > 0) {\n const mainIndexContent = dependencyInjectionString()\n + topLevelExportStatements.join(\"\\n\") + \"\\n\";\n const mainIndexFilePath = path.join(outputDir, \"index.ts\");\n fs.writeFileSync(mainIndexFilePath, mainIndexContent, { flag: \"w\" });\n }\n}\n\nexport function buildDatasource(\n apiName: string,\n definition: OntologyIrObjectTypeDatasourceDefinition,\n classificationMarkingGroupName?: string,\n mandatoryMarkingGroupName?: string,\n): OntologyIrObjectTypeDatasource {\n const needsSecurity = classificationMarkingGroupName !== undefined\n || mandatoryMarkingGroupName !== undefined;\n\n const securityConfig = needsSecurity\n ? {\n classificationConstraint: classificationMarkingGroupName\n ? {\n markingGroupName: classificationMarkingGroupName,\n }\n : undefined,\n markingConstraint: mandatoryMarkingGroupName\n ? {\n markingGroupName: mandatoryMarkingGroupName,\n }\n : undefined,\n }\n : undefined;\n return ({\n datasourceName: apiName,\n datasource: definition,\n editsConfiguration: {\n onlyAllowPrivilegedEdits: false,\n },\n redacted: false,\n ...((securityConfig !== undefined) && { dataSecurity: securityConfig }),\n });\n}\n\nexport function cleanAndValidateLinkTypeId(apiName: string): string {\n // Insert a dash before any uppercase letter that follows a lowercase letter or digit\n const step1 = apiName.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\");\n // Insert a dash after a sequence of uppercase letters when followed by a lowercase letter\n // then convert the whole string to lowercase\n // e.g., apiName, APIname, and apiNAME will all be converted to api-name\n const linkTypeId = step1.replace(/([A-Z])([A-Z][a-z])/g, \"$1-$2\")\n .toLowerCase();\n\n const VALIDATION_PATTERN = /^([a-z][a-z0-9\\-]*)$/;\n if (!VALIDATION_PATTERN.test(linkTypeId)) {\n throw new Error(\n `LinkType id '${linkTypeId}' must be lower case with dashes.`,\n );\n }\n return linkTypeId;\n}\n\nexport function dumpOntologyFullMetadata(): OntologyIr {\n return convertOntologyDefinition(ontologyDefinition);\n}\n\nexport function dumpValueTypeWireType(): OntologyIrValueTypeBlockData {\n return convertOntologyToValueTypeIr(ontologyDefinition);\n}\n\nexport function convertObjectStatus(status: any): any {\n if (status === undefined) {\n return {\n type: \"active\",\n active: {},\n };\n }\n\n if (status === \"active\") {\n return {\n type: \"active\",\n active: {},\n };\n }\n\n if (status === \"experimental\") {\n return {\n type: \"experimental\",\n experimental: {},\n };\n }\n\n if (status === \"example\") {\n return {\n type: \"example\",\n example: {},\n };\n }\n\n if (typeof status === \"object\" && status.type === \"deprecated\") {\n return {\n type: \"deprecated\",\n deprecated: {\n message: status.message,\n deadline: status.deadline,\n replacedBy: undefined,\n },\n };\n }\n\n return status;\n}\n\nexport function convertAction(\n action: ActionType,\n): OntologyIrActionTypeBlockDataV2 {\n const actionValidation = convertActionValidation(action);\n const actionParameters: Record<ParameterId, OntologyIrParameter> =\n convertActionParameters(action);\n const actionSections: Record<SectionId, OntologyIrSection> =\n convertActionSections(action);\n const parameterOrdering = action.parameterOrdering\n ?? (action.parameters ?? []).map(p => p.id);\n return {\n actionType: {\n actionTypeLogic: {\n logic: {\n rules: action.rules,\n },\n validation: actionValidation,\n },\n metadata: {\n apiName: action.apiName,\n displayMetadata: {\n configuration: {\n defaultLayout: action.defaultFormat ?? \"FORM\",\n displayAndFormat: action.displayAndFormat ?? {\n table: {\n columnWidthByParameterRid: {},\n enableFileImport: true,\n fitHorizontally: false,\n frozenColumnCount: 0,\n rowHeightInLines: 1,\n },\n },\n enableLayoutUserSwitch: action.enableLayoutSwitch ?? false,\n },\n description: action.description ?? \"\",\n displayName: action.displayName,\n icon: {\n type: \"blueprint\",\n blueprint: action.icon ?? { locator: \"edit\", color: \"#000000\" },\n },\n successMessage: action.submissionMetadata?.successMessage\n ? [{\n type: \"message\",\n message: action.submissionMetadata.successMessage,\n }]\n : [],\n typeClasses: action.typeClasses ?? [],\n ...(action.submissionMetadata?.submitButtonDisplayMetadata\n && {\n submitButtonDisplayMetadata:\n action.submissionMetadata.submitButtonDisplayMetadata,\n }),\n ...(action.submissionMetadata?.undoButtonConfiguration\n && {\n undoButtonConfiguration:\n action.submissionMetadata.undoButtonConfiguration,\n }),\n },\n parameterOrdering: parameterOrdering,\n formContentOrdering: getFormContentOrdering(action, parameterOrdering),\n parameters: actionParameters,\n sections: actionSections,\n status: typeof action.status === \"string\"\n ? {\n type: action.status,\n [action.status]: {},\n } as unknown as ActionTypeStatus\n : action.status,\n entities: action.entities,\n },\n },\n };\n}\n\nexport function extractAllowedValues(\n allowedValues: ActionParameterAllowedValues,\n): OntologyIrAllowedParameterValues {\n switch (allowedValues.type) {\n case \"oneOf\":\n return {\n type: \"oneOf\",\n oneOf: {\n type: \"oneOf\",\n oneOf: {\n labelledValues: allowedValues.oneOf,\n otherValueAllowed: {\n allowed: allowedValues.otherValueAllowed\n ?? false,\n },\n },\n },\n };\n case \"range\":\n const { min, max } = allowedValues;\n return {\n type: \"range\",\n range: {\n type: \"range\",\n range: {\n ...(min === undefined\n ? {}\n : { minimum: { inclusive: true, value: min } }),\n ...(max === undefined\n ? {}\n : { maximum: { inclusive: true, value: max } }),\n },\n },\n };\n case \"text\":\n const { minLength, maxLength, regex } = allowedValues;\n return {\n type: \"text\",\n text: {\n type: \"text\",\n text: {\n ...(minLength === undefined\n ? {}\n : { minLength: minLength }),\n ...(maxLength === undefined\n ? {}\n : { maxLength: maxLength }),\n ...(regex === undefined\n ? {}\n : { regex: { regex: regex, failureMessage: \"Invalid input\" } }),\n },\n },\n };\n case \"datetime\":\n const { minimum, maximum } = allowedValues;\n return {\n type: \"datetime\",\n datetime: {\n type: \"datetime\",\n datetime: {\n minimum,\n maximum,\n },\n },\n };\n case \"objectTypeReference\":\n return {\n type: \"objectTypeReference\",\n objectTypeReference: {\n type: \"objectTypeReference\",\n objectTypeReference: {\n interfaceTypeRids: allowedValues.interfaceTypes,\n },\n },\n };\n case \"redacted\":\n return {\n type: \"redacted\",\n redacted: {},\n };\n case \"geotimeSeriesReference\":\n return {\n type: \"geotimeSeriesReference\",\n geotimeSeriesReference: {\n type: \"geotimeSeries\",\n geotimeSeries: {},\n },\n };\n case \"user\":\n return {\n type: \"user\",\n user: {\n type: \"user\",\n user: {\n filter: (allowedValues.fromGroups ?? []).map(group => {\n return {\n type: \"groupFilter\",\n groupFilter: {\n groupId: group.type === \"static\"\n ? {\n type: \"staticValue\",\n staticValue: {\n type: \"string\",\n string: group.name,\n },\n }\n : {\n type: \"parameterId\",\n parameterId: group.parameter,\n },\n },\n };\n }),\n },\n },\n };\n case \"multipassGroup\":\n return {\n type: \"multipassGroup\",\n multipassGroup: {\n type: \"group\",\n group: {},\n },\n };\n default:\n const k: Partial<OntologyIrAllowedParameterValues[\"type\"]> =\n allowedValues.type;\n return {\n type: k,\n [k]: {\n type: k,\n [k]: {},\n },\n } as unknown as OntologyIrAllowedParameterValues;\n // TODO(dpaquin): there's probably a TS clean way to do this\n }\n}\n\nexport function renderHintFromBaseType(\n parameter: ActionParameter,\n validation?: ActionParameterValidation,\n): ParameterRenderHint {\n // TODO(dpaquin): these are just guesses, we should find where they're actually defined\n const type = typeof parameter.type === \"string\"\n ? parameter.type\n : parameter.type.type;\n switch (type) {\n case \"boolean\":\n case \"booleanList\":\n return { type: \"checkbox\", checkbox: {} };\n case \"integer\":\n case \"integerList\":\n case \"long\":\n case \"longList\":\n case \"double\":\n case \"doubleList\":\n case \"decimal\":\n case \"decimalList\":\n return { type: \"numericInput\", numericInput: {} };\n case \"string\":\n if (\n validation?.allowedValues?.type === \"user\"\n || validation?.allowedValues?.type === \"multipassGroup\"\n ) {\n return { type: \"userDropdown\", userDropdown: {} };\n }\n case \"stringList\":\n case \"geohash\":\n case \"geohashList\":\n case \"geoshape\":\n case \"geoshapeList\":\n case \"objectSetRid\":\n return { type: \"textInput\", textInput: {} };\n case \"timestamp\":\n case \"timestampList\":\n case \"date\":\n case \"dateList\":\n return { type: \"dateTimePicker\", dateTimePicker: {} };\n case \"attachment\":\n case \"attachmentList\":\n return { type: \"filePicker\", filePicker: {} };\n case \"marking\":\n case \"markingList\":\n if (parameter.validation.allowedValues?.type === \"mandatoryMarking\") {\n return { type: \"mandatoryMarkingPicker\", mandatoryMarkingPicker: {} };\n } else if (parameter.validation.allowedValues?.type === \"cbacMarking\") {\n return { type: \"cbacMarkingPicker\", cbacMarkingPicker: {} };\n } else {\n throw new Error(\n `The allowed values for \"${parameter.displayName}\" are not compatible with the base parameter type`,\n );\n }\n case \"timeSeriesReference\":\n case \"objectReference\":\n case \"objectReferenceList\":\n case \"interfaceReference\":\n case \"interfaceReferenceList\":\n case \"objectTypeReference\":\n case \"mediaReference\":\n case \"mediaReferenceList\":\n case \"geotimeSeriesReference\":\n case \"geotimeSeriesReferenceList\":\n return { type: \"dropdown\", dropdown: {} };\n case \"struct\":\n case \"structList\":\n throw new Error(\"Structs are not supported yet\");\n default:\n throw new Error(`Unknown type ${type}`);\n }\n}\n\nexport function extractNamespace(apiName: string): string {\n return apiName.substring(0, apiName.lastIndexOf(\".\") + 1);\n}\n\nexport function withoutNamespace(apiName: string): string {\n const lastDot = apiName.lastIndexOf(\".\");\n if (lastDot === -1) {\n return apiName;\n }\n return apiName.substring(lastDot + 1);\n}\n\nfunction camel(str: string): string {\n if (!str) {\n return str;\n }\n let result = str.replace(/[-_]+(.)?/g, (_, c) => (c ? c.toUpperCase() : \"\"));\n result = result.charAt(0).toLowerCase() + result.slice(1);\n return result;\n}\n\n/**\n * Gets the TypeScript type name corresponding to an OntologyEntityTypeEnum value\n */\nfunction getEntityTypeName(type: string): string {\n return {\n [OntologyEntityTypeEnum.OBJECT_TYPE]: \"ObjectType\",\n [OntologyEntityTypeEnum.LINK_TYPE]: \"LinkType\",\n [OntologyEntityTypeEnum.INTERFACE_TYPE]: \"InterfaceType\",\n [OntologyEntityTypeEnum.SHARED_PROPERTY_TYPE]: \"SharedPropertyType\",\n [OntologyEntityTypeEnum.ACTION_TYPE]: \"ActionType\",\n [OntologyEntityTypeEnum.VALUE_TYPE]: \"ValueTypeDefinitionVersion\",\n }[type]!;\n}\n\nfunction writeDependencyFile(dependencyFile: string): void {\n fs.writeFileSync(dependencyFile, JSON.stringify(dependencies, null, 2));\n}\n\nfunction dependencyInjectionString(): string {\n const namespaceNoDot: string = namespace.endsWith(\".\")\n ? namespace.slice(0, -1)\n : namespace;\n\n return `import { addDependency } from \"@osdk/maker\";\n// @ts-ignore\naddDependency(\"${namespaceNoDot}\", new URL(import.meta.url).pathname);\n`;\n}\n\nexport function addNamespaceIfNone(apiName: string): string {\n return apiName.includes(\".\") ? apiName : namespace + apiName;\n}\n\nexport function initializeOntologyState(ns: string): void {\n namespace = ns;\n dependencies = {};\n ontologyDefinition = {\n OBJECT_TYPE: {},\n ACTION_TYPE: {},\n LINK_TYPE: {},\n INTERFACE_TYPE: {},\n SHARED_PROPERTY_TYPE: {},\n VALUE_TYPE: {},\n };\n importedTypes = {\n SHARED_PROPERTY_TYPE: {},\n OBJECT_TYPE: {},\n ACTION_TYPE: {},\n LINK_TYPE: {},\n INTERFACE_TYPE: {},\n VALUE_TYPE: {},\n };\n}\n\nexport function getOntologyDefinition(): OntologyDefinition {\n return ontologyDefinition;\n}\n\nexport function getImportedTypes(): OntologyDefinition {\n return importedTypes;\n}\n\nexport function getNamespace(): string {\n return namespace;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"defineOntology.js","names":["fs","path","convertActionParameters","convertActionSections","convertActionValidation","convertOntologyDefinition","convertOntologyToValueTypeIr","getFormContentOrdering","createCodeSnippets","OntologyEntityTypeEnum","ontologyDefinition","importedTypes","dependencies","namespace","updateOntology","entity","__type","VALUE_TYPE","apiName","undefined","push","defineOntology","ns","body","outputDir","dependencyFile","codeSnippetFiles","snippetPackageName","snippetFileOutputDir","randomnessKey","OBJECT_TYPE","ACTION_TYPE","LINK_TYPE","INTERFACE_TYPE","SHARED_PROPERTY_TYPE","e","console","error","writeStaticObjects","writeDependencyFile","codegenDir","resolve","typeDirs","existsSync","mkdirSync","recursive","Object","values","forEach","typeDirNameFromMap","currentTypeDirPath","join","rmSync","force","topLevelExportStatements","entries","ontologyTypeEnumKey","entities","typeDirName","typeDirPath","entityModuleNames","entityFileNameBase","camel","withoutNamespace","filePath","entityTypeName","getEntityTypeName","entityJSON","JSON","stringify","explodeInterfaceType","replace","_","prefix","value","content","slice","writeFileSync","flag","entityModuleName","length","mainIndexContent","dependencyInjectionString","mainIndexFilePath","buildDatasource","definition","classificationMarkingGroupName","mandatoryMarkingGroupName","needsSecurity","securityConfig","classificationConstraint","markingGroupName","markingConstraint","datasourceName","datasource","editsConfiguration","onlyAllowPrivilegedEdits","redacted","dataSecurity","filterCyclicReferences","linkedInterfaces","map","interfaceTypeOrApiName","iface","ancestors","Set","expanded","add","processLinked","linked","has","extendsInterfaces","__","shallow","parent","cleanAndValidateLinkTypeId","step1","linkTypeId","toLowerCase","test","Error","dumpOntologyFullMetadata","dumpValueTypeWireType","convertObjectStatus","status","type","active","experimental","example","deprecated","message","deadline","replacedBy","convertAction","action","actionValidation","actionParameters","actionSections","parameterOrdering","parameters","p","id","actionType","actionTypeLogic","logic","rules","validation","metadata","displayMetadata","configuration","defaultLayout","defaultFormat","displayAndFormat","table","columnWidthByParameterRid","enableFileImport","fitHorizontally","frozenColumnCount","rowHeightInLines","enableLayoutUserSwitch","enableLayoutSwitch","description","displayName","icon","blueprint","locator","color","successMessage","submissionMetadata","typeClasses","applyingMessage","submitButtonDisplayMetadata","undoButtonConfiguration","formContentOrdering","sections","extractAllowedValues","allowedValues","oneOf","labelledValues","otherValueAllowed","allowed","min","max","range","minimum","inclusive","maximum","minLength","maxLength","regex","text","failureMessage","datetime","objectTypeReference","interfaceTypeRids","interfaceTypes","geotimeSeriesReference","geotimeSeries","user","filter","fromGroups","group","groupFilter","groupId","staticValue","string","name","parameterId","parameter","multipassGroup","k","renderHintFromBaseType","checkbox","numericInput","userDropdown","textInput","dateTimePicker","filePicker","mandatoryMarkingPicker","cbacMarkingPicker","dropdown","extractNamespace","substring","lastIndexOf","lastDot","str","result","c","toUpperCase","charAt","namespaceNoDot","endsWith","addNamespaceIfNone","includes","initializeOntologyState","getOntologyDefinition","getImportedTypes","getNamespace"],"sources":["defineOntology.ts"],"sourcesContent":["/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n ActionTypeStatus,\n OntologyIr,\n OntologyIrActionTypeBlockDataV2,\n OntologyIrAllowedParameterValues,\n OntologyIrObjectTypeDatasource,\n OntologyIrObjectTypeDatasourceDefinition,\n OntologyIrParameter,\n OntologyIrSection,\n OntologyIrValueTypeBlockData,\n ParameterId,\n ParameterRenderHint,\n SectionId,\n} from \"@osdk/client.unstable\";\nimport * as fs from \"fs\";\nimport * as path from \"path\";\nimport { convertActionParameters } from \"../conversion/toMarketplace/convertActionParameters.js\";\nimport { convertActionSections } from \"../conversion/toMarketplace/convertActionSections.js\";\nimport { convertActionValidation } from \"../conversion/toMarketplace/convertActionValidation.js\";\nimport { convertOntologyDefinition } from \"../conversion/toMarketplace/convertOntologyDefinition.js\";\nimport { convertOntologyToValueTypeIr } from \"../conversion/toMarketplace/convertOntologyToValueTypeIr.js\";\nimport { getFormContentOrdering } from \"../conversion/toMarketplace/getFormContentOrdering.js\";\nimport type {\n ActionParameter,\n ActionParameterValidation,\n} from \"./action/ActionParameter.js\";\nimport type { ActionParameterAllowedValues } from \"./action/ActionParameterAllowedValues.js\";\nimport type { ActionType } from \"./action/ActionType.js\";\nimport { createCodeSnippets } from \"./code-snippets/createCodeSnippets.js\";\nimport type { OntologyDefinition } from \"./common/OntologyDefinition.js\";\nimport { OntologyEntityTypeEnum } from \"./common/OntologyEntityTypeEnum.js\";\nimport type { OntologyEntityType } from \"./common/OntologyEntityTypeMapping.js\";\nimport type { InterfaceType } from \"./interface/InterfaceType.js\";\n\n// type -> apiName -> entity\n/** @internal */\nexport let ontologyDefinition: OntologyDefinition;\n\n// type -> apiName -> entity\n/** @internal */\nexport let importedTypes: OntologyDefinition;\n\n// namespace -> version\n/** @internal */\nexport let dependencies: Record<string, string>;\n\n/** @internal */\nexport let namespace: string;\n\nexport function updateOntology<\n T extends OntologyEntityType,\n>(\n entity: T,\n): void {\n if (entity.__type !== OntologyEntityTypeEnum.VALUE_TYPE) {\n ontologyDefinition[entity.__type][entity.apiName] = entity;\n return;\n }\n // value types are a special case\n if (\n ontologyDefinition[OntologyEntityTypeEnum.VALUE_TYPE][entity.apiName]\n === undefined\n ) {\n ontologyDefinition[OntologyEntityTypeEnum.VALUE_TYPE][entity.apiName] = [];\n }\n ontologyDefinition[OntologyEntityTypeEnum.VALUE_TYPE][entity.apiName]\n .push(entity);\n}\n\nexport async function defineOntology(\n ns: string,\n body: () => void | Promise<void>,\n outputDir: string | undefined,\n dependencyFile?: string,\n codeSnippetFiles?: boolean,\n snippetPackageName?: string,\n snippetFileOutputDir?: string,\n randomnessKey?: string,\n): Promise<OntologyIr> {\n namespace = ns;\n dependencies = {};\n ontologyDefinition = {\n OBJECT_TYPE: {},\n ACTION_TYPE: {},\n LINK_TYPE: {},\n INTERFACE_TYPE: {},\n SHARED_PROPERTY_TYPE: {},\n VALUE_TYPE: {},\n };\n importedTypes = {\n SHARED_PROPERTY_TYPE: {},\n OBJECT_TYPE: {},\n ACTION_TYPE: {},\n LINK_TYPE: {},\n INTERFACE_TYPE: {},\n VALUE_TYPE: {},\n };\n try {\n await body();\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(\n \"Unexpected error while processing the body of the ontology\",\n e,\n );\n throw e;\n }\n if (outputDir) {\n writeStaticObjects(outputDir);\n }\n if (dependencyFile) {\n writeDependencyFile(dependencyFile);\n }\n if (codeSnippetFiles) {\n createCodeSnippets(\n ontologyDefinition,\n snippetPackageName,\n snippetFileOutputDir,\n );\n }\n\n return convertOntologyDefinition(ontologyDefinition, randomnessKey);\n}\n\nexport function writeStaticObjects(outputDir: string): void {\n const codegenDir = path.resolve(outputDir, \"codegen\");\n const typeDirs = {\n [OntologyEntityTypeEnum.SHARED_PROPERTY_TYPE]: \"shared-property-types\",\n [OntologyEntityTypeEnum.ACTION_TYPE]: \"action-types\",\n [OntologyEntityTypeEnum.OBJECT_TYPE]: \"object-types\",\n [OntologyEntityTypeEnum.LINK_TYPE]: \"link-types\",\n [OntologyEntityTypeEnum.INTERFACE_TYPE]: \"interface-types\",\n [OntologyEntityTypeEnum.VALUE_TYPE]: \"value-types\",\n };\n\n if (!fs.existsSync(codegenDir)) {\n fs.mkdirSync(codegenDir, { recursive: true });\n }\n\n Object.values(typeDirs).forEach(typeDirNameFromMap => {\n const currentTypeDirPath = path.join(codegenDir, typeDirNameFromMap);\n if (fs.existsSync(currentTypeDirPath)) {\n fs.rmSync(currentTypeDirPath, { recursive: true, force: true });\n }\n fs.mkdirSync(currentTypeDirPath, { recursive: true });\n });\n\n const topLevelExportStatements: string[] = [];\n\n Object.entries(ontologyDefinition).forEach(\n ([ontologyTypeEnumKey, entities]) => {\n const typeDirName =\n typeDirs[ontologyTypeEnumKey as OntologyEntityTypeEnum];\n\n const typeDirPath = path.join(codegenDir, typeDirName);\n const entityModuleNames: string[] = [];\n\n Object.entries(entities).forEach(\n ([apiName, entity]: [string, OntologyEntityType]) => {\n const entityFileNameBase = camel(withoutNamespace(apiName))\n + (ontologyTypeEnumKey as OntologyEntityTypeEnum\n === OntologyEntityTypeEnum.VALUE_TYPE\n ? \"ValueType\"\n : \"\");\n const filePath = path.join(typeDirPath, `${entityFileNameBase}.ts`);\n const entityTypeName = getEntityTypeName(ontologyTypeEnumKey);\n const entityJSON = JSON.stringify(\n explodeInterfaceType(entity),\n null,\n 2,\n ).replace(\n /(\"__type\"\\s*:\\s*)\"([^\"]*)\"/g,\n (_, prefix, value) => `${prefix}OntologyEntityTypeEnum.${value}`,\n );\n const content = `\nimport { wrapWithProxy, OntologyEntityTypeEnum } from '@osdk/maker';\nimport type { ${entityTypeName} } from '@osdk/maker';\n\n/** @type {import('@osdk/maker').${entityTypeName}} */\nconst ${entityFileNameBase}_base: ${entityTypeName} = ${\n ontologyTypeEnumKey === \"VALUE_TYPE\"\n ? entityJSON.slice(1, -2)\n : entityJSON\n } as unknown as ${entityTypeName};\n \nexport const ${entityFileNameBase}: ${entityTypeName} = wrapWithProxy(${entityFileNameBase}_base);\n `;\n fs.writeFileSync(filePath, content, { flag: \"w\" });\n entityModuleNames.push(entityFileNameBase);\n },\n );\n\n for (const entityModuleName of entityModuleNames) {\n topLevelExportStatements.push(\n `export { ${entityModuleName} } from \"./codegen/${typeDirName}/${entityModuleName}.js\";`,\n );\n }\n },\n );\n\n if (topLevelExportStatements.length > 0) {\n const mainIndexContent = dependencyInjectionString()\n + topLevelExportStatements.join(\"\\n\") + \"\\n\";\n const mainIndexFilePath = path.join(outputDir, \"index.ts\");\n fs.writeFileSync(mainIndexFilePath, mainIndexContent, { flag: \"w\" });\n }\n}\n\nexport function buildDatasource(\n apiName: string,\n definition: OntologyIrObjectTypeDatasourceDefinition,\n classificationMarkingGroupName?: string,\n mandatoryMarkingGroupName?: string,\n): OntologyIrObjectTypeDatasource {\n const needsSecurity = classificationMarkingGroupName !== undefined\n || mandatoryMarkingGroupName !== undefined;\n\n const securityConfig = needsSecurity\n ? {\n classificationConstraint: classificationMarkingGroupName\n ? {\n markingGroupName: classificationMarkingGroupName,\n }\n : undefined,\n markingConstraint: mandatoryMarkingGroupName\n ? {\n markingGroupName: mandatoryMarkingGroupName,\n }\n : undefined,\n }\n : undefined;\n return ({\n datasourceName: apiName,\n datasource: definition,\n editsConfiguration: {\n onlyAllowPrivilegedEdits: false,\n },\n redacted: false,\n ...((securityConfig !== undefined) && { dataSecurity: securityConfig }),\n });\n}\n\n// convert linked interface api name references to full type before codegen\nexport function explodeInterfaceType(\n entity: OntologyEntityType,\n): OntologyEntityType {\n if (entity.__type === OntologyEntityTypeEnum.INTERFACE_TYPE) {\n return filterCyclicReferences({\n ...entity,\n linkedInterfaces: (entity.linkedInterfaces ?? []).map(\n interfaceTypeOrApiName =>\n typeof interfaceTypeOrApiName === \"string\"\n ? ontologyDefinition[OntologyEntityTypeEnum.INTERFACE_TYPE][\n interfaceTypeOrApiName\n ]\n : interfaceTypeOrApiName,\n ),\n });\n } else {\n return entity;\n }\n}\n\nfunction filterCyclicReferences(\n iface: InterfaceType,\n ancestors = new Set<string>(),\n expanded = new Set<string>(),\n): InterfaceType {\n ancestors.add(iface.apiName);\n\n const processLinked = (\n linked: InterfaceType | string,\n ): InterfaceType | string => {\n if (typeof linked === \"string\") return linked;\n if (ancestors.has(linked.apiName)) return linked.apiName;\n if (expanded.has(linked.apiName)) {\n const { linkedInterfaces: _, extendsInterfaces: __, ...shallow } = linked;\n return {\n ...shallow,\n linkedInterfaces: [],\n extendsInterfaces: [],\n } as InterfaceType;\n }\n return filterCyclicReferences(linked, new Set(ancestors), expanded);\n };\n\n expanded.add(iface.apiName);\n return {\n ...iface,\n linkedInterfaces: (iface.linkedInterfaces ?? []).map(processLinked),\n extendsInterfaces: iface.extendsInterfaces.map(\n parent => processLinked(parent) as InterfaceType,\n ),\n };\n}\n\nexport function cleanAndValidateLinkTypeId(apiName: string): string {\n // Insert a dash before any uppercase letter that follows a lowercase letter or digit\n const step1 = apiName.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\");\n // Insert a dash after a sequence of uppercase letters when followed by a lowercase letter\n // then convert the whole string to lowercase\n // e.g., apiName, APIname, and apiNAME will all be converted to api-name\n const linkTypeId = step1.replace(/([A-Z])([A-Z][a-z])/g, \"$1-$2\")\n .toLowerCase();\n\n const VALIDATION_PATTERN = /^([a-z][a-z0-9\\-]*)$/;\n if (!VALIDATION_PATTERN.test(linkTypeId)) {\n throw new Error(\n `LinkType id '${linkTypeId}' must be lower case with dashes.`,\n );\n }\n return linkTypeId;\n}\n\nexport function dumpOntologyFullMetadata(): OntologyIr {\n return convertOntologyDefinition(ontologyDefinition);\n}\n\nexport function dumpValueTypeWireType(): OntologyIrValueTypeBlockData {\n return convertOntologyToValueTypeIr(ontologyDefinition);\n}\n\nexport function convertObjectStatus(status: any): any {\n if (status === undefined) {\n return {\n type: \"active\",\n active: {},\n };\n }\n\n if (status === \"active\") {\n return {\n type: \"active\",\n active: {},\n };\n }\n\n if (status === \"experimental\") {\n return {\n type: \"experimental\",\n experimental: {},\n };\n }\n\n if (status === \"example\") {\n return {\n type: \"example\",\n example: {},\n };\n }\n\n if (typeof status === \"object\" && status.type === \"deprecated\") {\n return {\n type: \"deprecated\",\n deprecated: {\n message: status.message,\n deadline: status.deadline,\n replacedBy: undefined,\n },\n };\n }\n\n return status;\n}\n\nexport function convertAction(\n action: ActionType,\n): OntologyIrActionTypeBlockDataV2 {\n const actionValidation = convertActionValidation(action);\n const actionParameters: Record<ParameterId, OntologyIrParameter> =\n convertActionParameters(action);\n const actionSections: Record<SectionId, OntologyIrSection> =\n convertActionSections(action);\n const parameterOrdering = action.parameterOrdering\n ?? (action.parameters ?? []).map(p => p.id);\n return {\n actionType: {\n actionTypeLogic: {\n logic: {\n rules: action.rules,\n },\n validation: actionValidation,\n },\n metadata: {\n apiName: action.apiName,\n displayMetadata: {\n configuration: {\n defaultLayout: action.defaultFormat ?? \"FORM\",\n displayAndFormat: action.displayAndFormat ?? {\n table: {\n columnWidthByParameterRid: {},\n enableFileImport: true,\n fitHorizontally: false,\n frozenColumnCount: 0,\n rowHeightInLines: 1,\n },\n },\n enableLayoutUserSwitch: action.enableLayoutSwitch ?? false,\n },\n description: action.description ?? \"\",\n displayName: action.displayName,\n icon: {\n type: \"blueprint\",\n blueprint: action.icon ?? { locator: \"edit\", color: \"#000000\" },\n },\n successMessage: action.submissionMetadata?.successMessage\n ? [{\n type: \"message\",\n message: action.submissionMetadata.successMessage,\n }]\n : [],\n typeClasses: action.typeClasses ?? [],\n applyingMessage: [],\n ...(action.submissionMetadata?.submitButtonDisplayMetadata\n && {\n submitButtonDisplayMetadata:\n action.submissionMetadata.submitButtonDisplayMetadata,\n }),\n ...(action.submissionMetadata?.undoButtonConfiguration\n && {\n undoButtonConfiguration:\n action.submissionMetadata.undoButtonConfiguration,\n }),\n },\n parameterOrdering,\n formContentOrdering: getFormContentOrdering(action, parameterOrdering),\n parameters: actionParameters,\n sections: actionSections,\n status: typeof action.status === \"string\"\n ? {\n type: action.status,\n [action.status]: {},\n } as unknown as ActionTypeStatus\n : action.status,\n entities: action.entities,\n },\n },\n };\n}\n\nexport function extractAllowedValues(\n allowedValues: ActionParameterAllowedValues,\n): OntologyIrAllowedParameterValues {\n switch (allowedValues.type) {\n case \"oneOf\":\n return {\n type: \"oneOf\",\n oneOf: {\n type: \"oneOf\",\n oneOf: {\n labelledValues: allowedValues.oneOf,\n otherValueAllowed: {\n allowed: allowedValues.otherValueAllowed\n ?? false,\n },\n },\n },\n };\n case \"range\":\n const { min, max } = allowedValues;\n return {\n type: \"range\",\n range: {\n type: \"range\",\n range: {\n ...(min === undefined\n ? {}\n : { minimum: { inclusive: true, value: min } }),\n ...(max === undefined\n ? {}\n : { maximum: { inclusive: true, value: max } }),\n },\n },\n };\n case \"text\":\n const { minLength, maxLength, regex } = allowedValues;\n return {\n type: \"text\",\n text: {\n type: \"text\",\n text: {\n ...(minLength === undefined\n ? {}\n : { minLength }),\n ...(maxLength === undefined\n ? {}\n : { maxLength }),\n ...(regex === undefined\n ? {}\n : { regex: { regex, failureMessage: \"Invalid input\" } }),\n },\n },\n };\n case \"datetime\":\n const { minimum, maximum } = allowedValues;\n return {\n type: \"datetime\",\n datetime: {\n type: \"datetime\",\n datetime: {\n minimum,\n maximum,\n },\n },\n };\n case \"objectTypeReference\":\n return {\n type: \"objectTypeReference\",\n objectTypeReference: {\n type: \"objectTypeReference\",\n objectTypeReference: {\n interfaceTypeRids: allowedValues.interfaceTypes,\n },\n },\n };\n case \"redacted\":\n return {\n type: \"redacted\",\n redacted: {},\n };\n case \"geotimeSeriesReference\":\n return {\n type: \"geotimeSeriesReference\",\n geotimeSeriesReference: {\n type: \"geotimeSeries\",\n geotimeSeries: {},\n },\n };\n case \"user\":\n return {\n type: \"user\",\n user: {\n type: \"user\",\n user: {\n filter: (allowedValues.fromGroups ?? []).map(group => {\n return {\n type: \"groupFilter\",\n groupFilter: {\n groupId: group.type === \"static\"\n ? {\n type: \"staticValue\",\n staticValue: {\n type: \"string\",\n string: group.name,\n },\n }\n : {\n type: \"parameterId\",\n parameterId: group.parameter,\n },\n },\n };\n }),\n },\n },\n };\n case \"multipassGroup\":\n return {\n type: \"multipassGroup\",\n multipassGroup: {\n type: \"group\",\n group: {},\n },\n };\n default:\n const k: Partial<OntologyIrAllowedParameterValues[\"type\"]> =\n allowedValues.type;\n return {\n type: k,\n [k]: {\n type: k,\n [k]: {},\n },\n } as unknown as OntologyIrAllowedParameterValues;\n // TODO(dpaquin): there's probably a TS clean way to do this\n }\n}\n\nexport function renderHintFromBaseType(\n parameter: ActionParameter,\n validation?: ActionParameterValidation,\n): ParameterRenderHint {\n // TODO(dpaquin): these are just guesses, we should find where they're actually defined\n const type = typeof parameter.type === \"string\"\n ? parameter.type\n : parameter.type.type;\n switch (type) {\n case \"boolean\":\n case \"booleanList\":\n return { type: \"checkbox\", checkbox: {} };\n case \"integer\":\n case \"integerList\":\n case \"long\":\n case \"longList\":\n case \"double\":\n case \"doubleList\":\n case \"decimal\":\n case \"decimalList\":\n return { type: \"numericInput\", numericInput: {} };\n case \"string\":\n if (\n validation?.allowedValues?.type === \"user\"\n || validation?.allowedValues?.type === \"multipassGroup\"\n ) {\n return { type: \"userDropdown\", userDropdown: {} };\n }\n case \"stringList\":\n case \"geohash\":\n case \"geohashList\":\n case \"geoshape\":\n case \"geoshapeList\":\n case \"objectSetRid\":\n return { type: \"textInput\", textInput: {} };\n case \"timestamp\":\n case \"timestampList\":\n case \"date\":\n case \"dateList\":\n return { type: \"dateTimePicker\", dateTimePicker: {} };\n case \"attachment\":\n case \"attachmentList\":\n return { type: \"filePicker\", filePicker: {} };\n case \"marking\":\n case \"markingList\":\n if (parameter.validation.allowedValues?.type === \"mandatoryMarking\") {\n return { type: \"mandatoryMarkingPicker\", mandatoryMarkingPicker: {} };\n } else if (parameter.validation.allowedValues?.type === \"cbacMarking\") {\n return { type: \"cbacMarkingPicker\", cbacMarkingPicker: {} };\n } else {\n throw new Error(\n `The allowed values for \"${parameter.displayName}\" are not compatible with the base parameter type`,\n );\n }\n case \"timeSeriesReference\":\n case \"objectReference\":\n case \"objectReferenceList\":\n case \"interfaceReference\":\n case \"interfaceReferenceList\":\n case \"objectTypeReference\":\n case \"mediaReference\":\n case \"mediaReferenceList\":\n case \"geotimeSeriesReference\":\n case \"geotimeSeriesReferenceList\":\n return { type: \"dropdown\", dropdown: {} };\n case \"struct\":\n case \"structList\":\n throw new Error(\"Structs are not supported yet\");\n default:\n throw new Error(`Unknown type ${type}`);\n }\n}\n\nexport function extractNamespace(apiName: string): string {\n return apiName.substring(0, apiName.lastIndexOf(\".\") + 1);\n}\n\nexport function withoutNamespace(apiName: string): string {\n const lastDot = apiName.lastIndexOf(\".\");\n if (lastDot === -1) {\n return apiName;\n }\n return apiName.substring(lastDot + 1);\n}\n\nfunction camel(str: string): string {\n if (!str) {\n return str;\n }\n let result = str.replace(/[-_]+(.)?/g, (_, c) => (c ? c.toUpperCase() : \"\"));\n result = result.charAt(0).toLowerCase() + result.slice(1);\n return result;\n}\n\n/**\n * Gets the TypeScript type name corresponding to an OntologyEntityTypeEnum value\n */\nfunction getEntityTypeName(type: string): string {\n return {\n [OntologyEntityTypeEnum.OBJECT_TYPE]: \"ObjectType\",\n [OntologyEntityTypeEnum.LINK_TYPE]: \"LinkType\",\n [OntologyEntityTypeEnum.INTERFACE_TYPE]: \"InterfaceType\",\n [OntologyEntityTypeEnum.SHARED_PROPERTY_TYPE]: \"SharedPropertyType\",\n [OntologyEntityTypeEnum.ACTION_TYPE]: \"ActionType\",\n [OntologyEntityTypeEnum.VALUE_TYPE]: \"ValueTypeDefinitionVersion\",\n }[type]!;\n}\n\nfunction writeDependencyFile(dependencyFile: string): void {\n fs.writeFileSync(dependencyFile, JSON.stringify(dependencies, null, 2));\n}\n\nfunction dependencyInjectionString(): string {\n const namespaceNoDot: string = namespace.endsWith(\".\")\n ? namespace.slice(0, -1)\n : namespace;\n\n return `import { addDependency } from \"@osdk/maker\";\n// @ts-ignore\naddDependency(\"${namespaceNoDot}\", new URL(import.meta.url).pathname);\n`;\n}\n\nexport function addNamespaceIfNone(apiName: string): string {\n return apiName.includes(\".\") ? apiName : namespace + apiName;\n}\n\nexport function initializeOntologyState(ns: string): void {\n namespace = ns;\n dependencies = {};\n ontologyDefinition = {\n OBJECT_TYPE: {},\n ACTION_TYPE: {},\n LINK_TYPE: {},\n INTERFACE_TYPE: {},\n SHARED_PROPERTY_TYPE: {},\n VALUE_TYPE: {},\n };\n importedTypes = {\n SHARED_PROPERTY_TYPE: {},\n OBJECT_TYPE: {},\n ACTION_TYPE: {},\n LINK_TYPE: {},\n INTERFACE_TYPE: {},\n VALUE_TYPE: {},\n };\n}\n\nexport function getOntologyDefinition(): OntologyDefinition {\n return ontologyDefinition;\n}\n\nexport function getImportedTypes(): OntologyDefinition {\n return importedTypes;\n}\n\nexport function getNamespace(): string {\n return namespace;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InterfaceType.js","names":[],"sources":["InterfaceType.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n InterfaceTypeStatus,\n OntologyIrMarketplaceInterfaceType,\n} from \"@osdk/client.unstable\";\nimport type { EntityPermission } from \"../common/EntityPermission.js\";\nimport type { OntologyEntityBase } from \"../common/OntologyEntityBase.js\";\nimport type { OntologyEntityTypeEnum } from \"../common/OntologyEntityTypeEnum.js\";\nimport type {\n InterfacePropertyType,\n InterfaceSharedPropertyType,\n} from \"./InterfacePropertyType.js\";\n\nexport interface InterfaceType extends\n OntologyEntityBase,\n Omit<\n OntologyIrMarketplaceInterfaceType,\n // we want our simplified representation\n | \"properties\"\n // these things don't need to exist as the system works fine without them (I'm told)\n | \"propertiesV2\"\n | \"propertiesV3\"\n | \"extendsInterfaces\"\n | \"extendsInterfacesMetadata\"\n >\n{\n propertiesV2: Record<string, InterfaceSharedPropertyType>;\n propertiesV3: Record<string, InterfacePropertyType>;\n extendsInterfaces: Array<InterfaceType>;\n permission?: EntityPermission;\n status: InterfaceTypeStatus;\n __type: OntologyEntityTypeEnum.INTERFACE_TYPE;\n}\n"],"mappings":"","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"InterfaceType.js","names":[],"sources":["InterfaceType.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n InterfaceTypeStatus,\n OntologyIrMarketplaceInterfaceType,\n} from \"@osdk/client.unstable\";\nimport type { EntityPermission } from \"../common/EntityPermission.js\";\nimport type { OntologyEntityBase } from \"../common/OntologyEntityBase.js\";\nimport type { OntologyEntityTypeEnum } from \"../common/OntologyEntityTypeEnum.js\";\nimport type {\n InterfacePropertyType,\n InterfaceSharedPropertyType,\n} from \"./InterfacePropertyType.js\";\n\nexport interface InterfaceType extends\n OntologyEntityBase,\n Omit<\n OntologyIrMarketplaceInterfaceType,\n // we want our simplified representation\n | \"properties\"\n // these things don't need to exist as the system works fine without them (I'm told)\n | \"propertiesV2\"\n | \"propertiesV3\"\n | \"extendsInterfaces\"\n | \"extendsInterfacesMetadata\"\n >\n{\n propertiesV2: Record<string, InterfaceSharedPropertyType>;\n propertiesV3: Record<string, InterfacePropertyType>;\n extendsInterfaces: Array<InterfaceType>;\n linkedInterfaces?: Array<InterfaceType | string>; // full metadata of linked entities used for X-OAC imports\n permission?: EntityPermission;\n status: InterfaceTypeStatus;\n __type: OntologyEntityTypeEnum.INTERFACE_TYPE;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -25,7 +25,7 @@ import { defineOntology } from "../api/defineOntology.js";
|
|
|
25
25
|
const apiNamespaceRegex = /^[a-z0-9-]+(\.[a-z0-9-]+)*\.$/;
|
|
26
26
|
const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;
|
|
27
27
|
export default async function main(args = process.argv) {
|
|
28
|
-
const commandLineOpts = await yargs(hideBin(args)).version("0.
|
|
28
|
+
const commandLineOpts = await yargs(hideBin(args)).version("0.35.0-main-833f47a4aeef6f7cfcab024ca3623aada385701b" ?? "").wrap(Math.min(150, yargs().terminalWidth())).strict().help().options({
|
|
29
29
|
input: {
|
|
30
30
|
alias: "i",
|
|
31
31
|
describe: "Input file",
|
|
@@ -105,7 +105,7 @@ export default async function main(args = process.argv) {
|
|
|
105
105
|
}
|
|
106
106
|
const ontologyIr = await loadOntology(commandLineOpts.input, apiNamespace, commandLineOpts.outputDir, commandLineOpts.dependencies, commandLineOpts.generateCodeSnippets, commandLineOpts.codeSnippetPackageName, commandLineOpts.codeSnippetDir, commandLineOpts.randomnessKey);
|
|
107
107
|
consola.info(`Saving ontology to ${commandLineOpts.output}`);
|
|
108
|
-
await fs.writeFile(commandLineOpts.output, JSON.stringify(ontologyIr,
|
|
108
|
+
await fs.writeFile(commandLineOpts.output, JSON.stringify(ontologyIr, (key, value) => key === "linkedInterfaces" ? undefined : value, 2));
|
|
109
109
|
// No point in generating block if there aren't any value types
|
|
110
110
|
if (ontologyIr.valueTypes.valueTypes.length > 0 || ontologyIr.importedValueTypes.valueTypes.length > 0) {
|
|
111
111
|
await fs.writeFile(commandLineOpts.valueTypesOutput, JSON.stringify(ontologyIr.valueTypes, null, 2));
|