@osdk/maker 0.15.0-beta.7 → 0.15.0-beta.9
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 +19 -0
- package/README.md +26 -22
- package/build/browser/api/action/ActionParameterConditionalOverride.js.map +1 -1
- package/build/browser/api/defineInterface.js.map +1 -1
- package/build/browser/api/defineOntology.js +6 -0
- package/build/browser/api/defineOntology.js.map +1 -1
- package/build/browser/api/defineValueType.js +25 -7
- package/build/browser/api/defineValueType.js.map +1 -1
- package/build/browser/api/interface/mapSimplifiedStatusToInterfaceTypeStatus.js +5 -0
- package/build/browser/api/interface/mapSimplifiedStatusToInterfaceTypeStatus.js.map +1 -1
- package/build/browser/api/links/LinkType.js.map +1 -1
- package/build/browser/api/object/ObjectTypeStatus.js.map +1 -1
- package/build/browser/api/test/actions.test.js +8 -5
- package/build/browser/api/test/actions.test.js.map +1 -1
- package/build/browser/api/test/interfaces.test.js +12 -0
- package/build/browser/api/test/interfaces.test.js.map +1 -1
- package/build/browser/api/test/misc.test.js +4 -2
- package/build/browser/api/test/misc.test.js.map +1 -1
- package/build/browser/api/test/objects.test.js +3 -2
- package/build/browser/api/test/objects.test.js.map +1 -1
- package/build/browser/api/test/valueTypes.test.js +151 -0
- package/build/browser/api/test/valueTypes.test.js.map +1 -1
- package/build/browser/cli/main.js +1 -1
- package/build/browser/conversion/toMarketplace/convertActionParameterConditionalOverride.js +15 -7
- package/build/browser/conversion/toMarketplace/convertActionParameterConditionalOverride.js.map +1 -1
- package/build/browser/conversion/toMarketplace/convertLink.js +30 -4
- package/build/browser/conversion/toMarketplace/convertLink.js.map +1 -1
- package/build/browser/conversion/toMarketplace/convertObject.js +6 -5
- package/build/browser/conversion/toMarketplace/convertObject.js.map +1 -1
- package/build/cjs/index.cjs +86 -22
- package/build/cjs/index.cjs.map +1 -1
- package/build/cjs/index.d.cts +29 -5
- package/build/esm/api/action/ActionParameterConditionalOverride.js.map +1 -1
- package/build/esm/api/defineInterface.js.map +1 -1
- package/build/esm/api/defineOntology.js +6 -0
- package/build/esm/api/defineOntology.js.map +1 -1
- package/build/esm/api/defineValueType.js +25 -7
- package/build/esm/api/defineValueType.js.map +1 -1
- package/build/esm/api/interface/mapSimplifiedStatusToInterfaceTypeStatus.js +5 -0
- package/build/esm/api/interface/mapSimplifiedStatusToInterfaceTypeStatus.js.map +1 -1
- package/build/esm/api/links/LinkType.js.map +1 -1
- package/build/esm/api/object/ObjectTypeStatus.js.map +1 -1
- package/build/esm/api/test/actions.test.js +8 -5
- package/build/esm/api/test/actions.test.js.map +1 -1
- package/build/esm/api/test/interfaces.test.js +12 -0
- package/build/esm/api/test/interfaces.test.js.map +1 -1
- package/build/esm/api/test/misc.test.js +4 -2
- package/build/esm/api/test/misc.test.js.map +1 -1
- package/build/esm/api/test/objects.test.js +3 -2
- package/build/esm/api/test/objects.test.js.map +1 -1
- package/build/esm/api/test/valueTypes.test.js +151 -0
- package/build/esm/api/test/valueTypes.test.js.map +1 -1
- package/build/esm/cli/main.js +1 -1
- package/build/esm/conversion/toMarketplace/convertActionParameterConditionalOverride.js +15 -7
- package/build/esm/conversion/toMarketplace/convertActionParameterConditionalOverride.js.map +1 -1
- package/build/esm/conversion/toMarketplace/convertLink.js +30 -4
- package/build/esm/conversion/toMarketplace/convertLink.js.map +1 -1
- package/build/esm/conversion/toMarketplace/convertObject.js +6 -5
- package/build/esm/conversion/toMarketplace/convertObject.js.map +1 -1
- package/build/types/api/action/ActionParameterConditionalOverride.d.ts +2 -0
- package/build/types/api/action/ActionParameterConditionalOverride.d.ts.map +1 -1
- package/build/types/api/defineInterface.d.ts +2 -0
- package/build/types/api/defineInterface.d.ts.map +1 -1
- package/build/types/api/defineOntology.d.ts.map +1 -1
- package/build/types/api/defineValueType.d.ts +10 -0
- package/build/types/api/defineValueType.d.ts.map +1 -1
- package/build/types/api/links/LinkType.d.ts +16 -4
- package/build/types/api/links/LinkType.d.ts.map +1 -1
- package/build/types/api/object/ObjectTypeStatus.d.ts +1 -1
- package/build/types/api/object/ObjectTypeStatus.d.ts.map +1 -1
- package/build/types/conversion/toMarketplace/convertLink.d.ts +3 -2
- package/build/types/conversion/toMarketplace/convertLink.d.ts.map +1 -1
- package/build/types/conversion/toMarketplace/convertObject.d.ts.map +1 -1
- package/package.json +4 -4
|
@@ -152,5 +152,156 @@ describe("Value Types", () => {
|
|
|
152
152
|
}
|
|
153
153
|
`);
|
|
154
154
|
});
|
|
155
|
+
it("Correctly sets a status", () => {
|
|
156
|
+
defineValueType({
|
|
157
|
+
apiName: "apiName",
|
|
158
|
+
displayName: "displayName",
|
|
159
|
+
type: {
|
|
160
|
+
"type": "boolean",
|
|
161
|
+
constraints: [{
|
|
162
|
+
constraint: {
|
|
163
|
+
"allowedValues": ["TRUE_VALUE"]
|
|
164
|
+
}
|
|
165
|
+
}]
|
|
166
|
+
},
|
|
167
|
+
status: {
|
|
168
|
+
type: "deprecated",
|
|
169
|
+
deadline: "2026-01-01",
|
|
170
|
+
message: "This value type is deprecated"
|
|
171
|
+
},
|
|
172
|
+
version: "0.1.0"
|
|
173
|
+
});
|
|
174
|
+
expect(dumpValueTypeWireType()).toMatchInlineSnapshot(`
|
|
175
|
+
{
|
|
176
|
+
"valueTypes": [
|
|
177
|
+
{
|
|
178
|
+
"metadata": {
|
|
179
|
+
"apiName": "apiName",
|
|
180
|
+
"displayMetadata": {
|
|
181
|
+
"description": "",
|
|
182
|
+
"displayName": "displayName",
|
|
183
|
+
},
|
|
184
|
+
"packageNamespace": "com.palantir",
|
|
185
|
+
"status": {
|
|
186
|
+
"deprecated": {
|
|
187
|
+
"deadline": "2026-01-01",
|
|
188
|
+
"message": "This value type is deprecated",
|
|
189
|
+
"replacedBy": undefined,
|
|
190
|
+
},
|
|
191
|
+
"type": "deprecated",
|
|
192
|
+
},
|
|
193
|
+
},
|
|
194
|
+
"versions": [
|
|
195
|
+
{
|
|
196
|
+
"baseType": {
|
|
197
|
+
"boolean": {},
|
|
198
|
+
"type": "boolean",
|
|
199
|
+
},
|
|
200
|
+
"constraints": [
|
|
201
|
+
{
|
|
202
|
+
"constraint": {
|
|
203
|
+
"constraint": {
|
|
204
|
+
"boolean": {
|
|
205
|
+
"allowedValues": [
|
|
206
|
+
"TRUE_VALUE",
|
|
207
|
+
],
|
|
208
|
+
},
|
|
209
|
+
"type": "boolean",
|
|
210
|
+
},
|
|
211
|
+
"failureMessage": undefined,
|
|
212
|
+
},
|
|
213
|
+
},
|
|
214
|
+
],
|
|
215
|
+
"exampleValues": [],
|
|
216
|
+
"version": "0.1.0",
|
|
217
|
+
},
|
|
218
|
+
],
|
|
219
|
+
},
|
|
220
|
+
],
|
|
221
|
+
}
|
|
222
|
+
`);
|
|
223
|
+
});
|
|
224
|
+
it("Prefixes apiName with namespace when namespacePrefix is true", () => {
|
|
225
|
+
defineValueType({
|
|
226
|
+
apiName: "myValueType",
|
|
227
|
+
displayName: "My Value Type",
|
|
228
|
+
type: {
|
|
229
|
+
type: "string"
|
|
230
|
+
},
|
|
231
|
+
version: "1.0.0",
|
|
232
|
+
namespacePrefix: true
|
|
233
|
+
});
|
|
234
|
+
expect(dumpValueTypeWireType()).toMatchInlineSnapshot(`
|
|
235
|
+
{
|
|
236
|
+
"valueTypes": [
|
|
237
|
+
{
|
|
238
|
+
"metadata": {
|
|
239
|
+
"apiName": "com.palantir.myValueType",
|
|
240
|
+
"displayMetadata": {
|
|
241
|
+
"description": "",
|
|
242
|
+
"displayName": "My Value Type",
|
|
243
|
+
},
|
|
244
|
+
"packageNamespace": "com.palantir",
|
|
245
|
+
"status": {
|
|
246
|
+
"active": {},
|
|
247
|
+
"type": "active",
|
|
248
|
+
},
|
|
249
|
+
},
|
|
250
|
+
"versions": [
|
|
251
|
+
{
|
|
252
|
+
"baseType": {
|
|
253
|
+
"string": {},
|
|
254
|
+
"type": "string",
|
|
255
|
+
},
|
|
256
|
+
"constraints": [],
|
|
257
|
+
"exampleValues": [],
|
|
258
|
+
"version": "1.0.0",
|
|
259
|
+
},
|
|
260
|
+
],
|
|
261
|
+
},
|
|
262
|
+
],
|
|
263
|
+
}
|
|
264
|
+
`);
|
|
265
|
+
});
|
|
266
|
+
it("Fails to define duplicate value type with same apiName and version", () => {
|
|
267
|
+
defineValueType({
|
|
268
|
+
apiName: "duplicateTest",
|
|
269
|
+
displayName: "First Value Type",
|
|
270
|
+
type: {
|
|
271
|
+
type: "string"
|
|
272
|
+
},
|
|
273
|
+
version: "1.0.0"
|
|
274
|
+
});
|
|
275
|
+
expect(() => defineValueType({
|
|
276
|
+
apiName: "duplicateTest",
|
|
277
|
+
displayName: "Second Value Type",
|
|
278
|
+
type: {
|
|
279
|
+
type: "boolean"
|
|
280
|
+
},
|
|
281
|
+
version: "1.0.0"
|
|
282
|
+
})).toThrowErrorMatchingInlineSnapshot("[Error: Invariant failed: Value type with apiName duplicateTest and version 1.0.0 is already defined]");
|
|
283
|
+
});
|
|
284
|
+
it("Allows multiple versions of the same value type", () => {
|
|
285
|
+
defineValueType({
|
|
286
|
+
apiName: "multiVersion",
|
|
287
|
+
displayName: "Multi Version Type",
|
|
288
|
+
type: {
|
|
289
|
+
type: "string"
|
|
290
|
+
},
|
|
291
|
+
version: "1.0.0"
|
|
292
|
+
});
|
|
293
|
+
defineValueType({
|
|
294
|
+
apiName: "multiVersion",
|
|
295
|
+
displayName: "Multi Version Type",
|
|
296
|
+
type: {
|
|
297
|
+
type: "string"
|
|
298
|
+
},
|
|
299
|
+
version: "2.0.0"
|
|
300
|
+
});
|
|
301
|
+
const wireType = dumpValueTypeWireType();
|
|
302
|
+
expect(wireType.valueTypes).toHaveLength(1);
|
|
303
|
+
expect(wireType.valueTypes[0].versions).toHaveLength(2);
|
|
304
|
+
expect(wireType.valueTypes[0].versions.map(v => v.version)).toEqual(["1.0.0", "2.0.0"]);
|
|
305
|
+
});
|
|
155
306
|
});
|
|
156
307
|
//# sourceMappingURL=valueTypes.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"valueTypes.test.js","names":["beforeEach","describe","expect","it","defineObject","defineOntology","dumpOntologyFullMetadata","dumpValueTypeWireType","defineValueType","apiName","displayName","type","constraints","constraint","version","toThrowErrorMatchingInlineSnapshot","testStringValueType","description","length","minSize","maxSize","failureMessage","message","titlePropertyApiName","pluralDisplayName","primaryKeyPropertyApiName","properties","valueType","ontology","objectPropertyType","objectTypes","objectType","propertyTypes","toEqual","packageNamespace","displayMetadata","dataConstraints","toBeDefined","propertyTypeConstraints","toHaveLength","constraintWrapper","toBe","string","toMatchInlineSnapshot"],"sources":["valueTypes.test.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 { beforeEach, describe, expect, it } from \"vitest\";\nimport { defineObject } from \"../defineObject.js\";\nimport {\n defineOntology,\n dumpOntologyFullMetadata,\n dumpValueTypeWireType,\n} from \"../defineOntology.js\";\nimport { defineValueType } from \"../defineValueType.js\";\n\ndescribe(\"Value Types\", () => {\n beforeEach(async () => {\n await defineOntology(\"com.palantir.\", () => {}, \"/tmp/\");\n });\n\n it(\"Fails to define value type with incorrect semver\", () => {\n expect(() =>\n defineValueType({\n apiName: \"apiName\",\n displayName: \"displayName\",\n type: {\n \"type\": \"boolean\",\n constraints: [{ constraint: { \"allowedValues\": [\"TRUE_VALUE\"] } }],\n },\n version: \"not a version\",\n })\n ).toThrowErrorMatchingInlineSnapshot(\n \"[Error: Invariant failed: Version is not a valid semver]\",\n );\n });\n\n it(\"Tests convertProperty function with valueType constraints for string\", () => {\n const testStringValueType = defineValueType({\n apiName: \"stringWithConstraints\",\n displayName: \"String With Constraints\",\n description: \"A string type with additional constraints\",\n type: {\n \"type\": \"string\",\n constraints: [\n {\n constraint: {\n type: \"length\",\n length: {\n minSize: 5,\n maxSize: 20,\n },\n },\n failureMessage: {\n message: \"String must be between 5 and 20 characters\",\n },\n },\n ],\n },\n version: \"1.0.0\",\n });\n\n const object = defineObject({\n titlePropertyApiName: \"constrainedString\",\n displayName: \"Test Object\",\n pluralDisplayName: \"Test Objects\",\n apiName: \"testObject\",\n primaryKeyPropertyApiName: \"constrainedString\",\n properties: {\n \"constrainedString\": {\n type: \"string\",\n displayName: \"Constrained String\",\n valueType: testStringValueType,\n },\n },\n });\n\n const ontology = dumpOntologyFullMetadata();\n const objectPropertyType =\n ontology.ontology.objectTypes[\"com.palantir.testObject\"]\n .objectType.propertyTypes[\"constrainedString\"];\n\n expect(objectPropertyType.valueType).toEqual({\n apiName: \"stringWithConstraints\",\n version: \"1.0.0\",\n packageNamespace: \"com.palantir\",\n displayMetadata: {\n displayName: \"String With Constraints\",\n description: \"A string type with additional constraints\",\n },\n });\n\n expect(objectPropertyType.dataConstraints).toBeDefined();\n expect(objectPropertyType.dataConstraints?.propertyTypeConstraints)\n .toHaveLength(1);\n\n const constraintWrapper = objectPropertyType.dataConstraints\n ?.propertyTypeConstraints[0];\n expect(constraintWrapper?.constraints?.type).toBe(\"string\");\n expect(\n (constraintWrapper?.constraints as {\n type: \"string\";\n string: { length: { minSize: number; maxSize: number } };\n }).string.length.minSize,\n ).toBe(5);\n expect(\n (constraintWrapper?.constraints as {\n type: \"string\";\n string: { length: { minSize: number; maxSize: number } };\n }).string.length.maxSize,\n ).toBe(20);\n expect(constraintWrapper?.failureMessage?.message).toBe(\n \"String must be between 5 and 20 characters\",\n );\n });\n\n it(\"Correctly serializes a value type\", () => {\n defineValueType({\n apiName: \"apiName\",\n displayName: \"displayName\",\n type: {\n \"type\": \"boolean\",\n constraints: [{ constraint: { \"allowedValues\": [\"TRUE_VALUE\"] } }],\n },\n version: \"0.1.0\",\n });\n expect(dumpValueTypeWireType()).toMatchInlineSnapshot(`\n {\n \"valueTypes\": [\n {\n \"metadata\": {\n \"apiName\": \"apiName\",\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"displayName\",\n },\n \"packageNamespace\": \"com.palantir\",\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n \"versions\": [\n {\n \"baseType\": {\n \"boolean\": {},\n \"type\": \"boolean\",\n },\n \"constraints\": [\n {\n \"constraint\": {\n \"constraint\": {\n \"boolean\": {\n \"allowedValues\": [\n \"TRUE_VALUE\",\n ],\n },\n \"type\": \"boolean\",\n },\n \"failureMessage\": undefined,\n },\n },\n ],\n \"exampleValues\": [],\n \"version\": \"0.1.0\",\n },\n ],\n },\n ],\n }\n `);\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"valueTypes.test.js","names":["beforeEach","describe","expect","it","defineObject","defineOntology","dumpOntologyFullMetadata","dumpValueTypeWireType","defineValueType","apiName","displayName","type","constraints","constraint","version","toThrowErrorMatchingInlineSnapshot","testStringValueType","description","length","minSize","maxSize","failureMessage","message","titlePropertyApiName","pluralDisplayName","primaryKeyPropertyApiName","properties","valueType","ontology","objectPropertyType","objectTypes","objectType","propertyTypes","toEqual","packageNamespace","displayMetadata","dataConstraints","toBeDefined","propertyTypeConstraints","toHaveLength","constraintWrapper","toBe","string","toMatchInlineSnapshot","status","deadline","namespacePrefix","wireType","valueTypes","versions","map","v"],"sources":["valueTypes.test.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 { beforeEach, describe, expect, it } from \"vitest\";\nimport { defineObject } from \"../defineObject.js\";\nimport {\n defineOntology,\n dumpOntologyFullMetadata,\n dumpValueTypeWireType,\n} from \"../defineOntology.js\";\nimport { defineValueType } from \"../defineValueType.js\";\n\ndescribe(\"Value Types\", () => {\n beforeEach(async () => {\n await defineOntology(\"com.palantir.\", () => {}, \"/tmp/\");\n });\n\n it(\"Fails to define value type with incorrect semver\", () => {\n expect(() =>\n defineValueType({\n apiName: \"apiName\",\n displayName: \"displayName\",\n type: {\n \"type\": \"boolean\",\n constraints: [{ constraint: { \"allowedValues\": [\"TRUE_VALUE\"] } }],\n },\n version: \"not a version\",\n })\n ).toThrowErrorMatchingInlineSnapshot(\n \"[Error: Invariant failed: Version is not a valid semver]\",\n );\n });\n\n it(\"Tests convertProperty function with valueType constraints for string\", () => {\n const testStringValueType = defineValueType({\n apiName: \"stringWithConstraints\",\n displayName: \"String With Constraints\",\n description: \"A string type with additional constraints\",\n type: {\n \"type\": \"string\",\n constraints: [\n {\n constraint: {\n type: \"length\",\n length: {\n minSize: 5,\n maxSize: 20,\n },\n },\n failureMessage: {\n message: \"String must be between 5 and 20 characters\",\n },\n },\n ],\n },\n version: \"1.0.0\",\n });\n\n const object = defineObject({\n titlePropertyApiName: \"constrainedString\",\n displayName: \"Test Object\",\n pluralDisplayName: \"Test Objects\",\n apiName: \"testObject\",\n primaryKeyPropertyApiName: \"constrainedString\",\n properties: {\n \"constrainedString\": {\n type: \"string\",\n displayName: \"Constrained String\",\n valueType: testStringValueType,\n },\n },\n });\n\n const ontology = dumpOntologyFullMetadata();\n const objectPropertyType =\n ontology.ontology.objectTypes[\"com.palantir.testObject\"]\n .objectType.propertyTypes[\"constrainedString\"];\n\n expect(objectPropertyType.valueType).toEqual({\n apiName: \"stringWithConstraints\",\n version: \"1.0.0\",\n packageNamespace: \"com.palantir\",\n displayMetadata: {\n displayName: \"String With Constraints\",\n description: \"A string type with additional constraints\",\n },\n });\n\n expect(objectPropertyType.dataConstraints).toBeDefined();\n expect(objectPropertyType.dataConstraints?.propertyTypeConstraints)\n .toHaveLength(1);\n\n const constraintWrapper = objectPropertyType.dataConstraints\n ?.propertyTypeConstraints[0];\n expect(constraintWrapper?.constraints?.type).toBe(\"string\");\n expect(\n (constraintWrapper?.constraints as {\n type: \"string\";\n string: { length: { minSize: number; maxSize: number } };\n }).string.length.minSize,\n ).toBe(5);\n expect(\n (constraintWrapper?.constraints as {\n type: \"string\";\n string: { length: { minSize: number; maxSize: number } };\n }).string.length.maxSize,\n ).toBe(20);\n expect(constraintWrapper?.failureMessage?.message).toBe(\n \"String must be between 5 and 20 characters\",\n );\n });\n\n it(\"Correctly serializes a value type\", () => {\n defineValueType({\n apiName: \"apiName\",\n displayName: \"displayName\",\n type: {\n \"type\": \"boolean\",\n constraints: [{ constraint: { \"allowedValues\": [\"TRUE_VALUE\"] } }],\n },\n version: \"0.1.0\",\n });\n expect(dumpValueTypeWireType()).toMatchInlineSnapshot(`\n {\n \"valueTypes\": [\n {\n \"metadata\": {\n \"apiName\": \"apiName\",\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"displayName\",\n },\n \"packageNamespace\": \"com.palantir\",\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n \"versions\": [\n {\n \"baseType\": {\n \"boolean\": {},\n \"type\": \"boolean\",\n },\n \"constraints\": [\n {\n \"constraint\": {\n \"constraint\": {\n \"boolean\": {\n \"allowedValues\": [\n \"TRUE_VALUE\",\n ],\n },\n \"type\": \"boolean\",\n },\n \"failureMessage\": undefined,\n },\n },\n ],\n \"exampleValues\": [],\n \"version\": \"0.1.0\",\n },\n ],\n },\n ],\n }\n `);\n });\n it(\"Correctly sets a status\", () => {\n defineValueType({\n apiName: \"apiName\",\n displayName: \"displayName\",\n type: {\n \"type\": \"boolean\",\n constraints: [{ constraint: { \"allowedValues\": [\"TRUE_VALUE\"] } }],\n },\n status: {\n type: \"deprecated\",\n deadline: \"2026-01-01\",\n message: \"This value type is deprecated\",\n },\n version: \"0.1.0\",\n });\n expect(dumpValueTypeWireType()).toMatchInlineSnapshot(`\n {\n \"valueTypes\": [\n {\n \"metadata\": {\n \"apiName\": \"apiName\",\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"displayName\",\n },\n \"packageNamespace\": \"com.palantir\",\n \"status\": {\n \"deprecated\": {\n \"deadline\": \"2026-01-01\",\n \"message\": \"This value type is deprecated\",\n \"replacedBy\": undefined,\n },\n \"type\": \"deprecated\",\n },\n },\n \"versions\": [\n {\n \"baseType\": {\n \"boolean\": {},\n \"type\": \"boolean\",\n },\n \"constraints\": [\n {\n \"constraint\": {\n \"constraint\": {\n \"boolean\": {\n \"allowedValues\": [\n \"TRUE_VALUE\",\n ],\n },\n \"type\": \"boolean\",\n },\n \"failureMessage\": undefined,\n },\n },\n ],\n \"exampleValues\": [],\n \"version\": \"0.1.0\",\n },\n ],\n },\n ],\n }\n `);\n });\n\n it(\"Prefixes apiName with namespace when namespacePrefix is true\", () => {\n defineValueType({\n apiName: \"myValueType\",\n displayName: \"My Value Type\",\n type: {\n type: \"string\",\n },\n version: \"1.0.0\",\n namespacePrefix: true,\n });\n expect(dumpValueTypeWireType()).toMatchInlineSnapshot(`\n {\n \"valueTypes\": [\n {\n \"metadata\": {\n \"apiName\": \"com.palantir.myValueType\",\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"My Value Type\",\n },\n \"packageNamespace\": \"com.palantir\",\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n \"versions\": [\n {\n \"baseType\": {\n \"string\": {},\n \"type\": \"string\",\n },\n \"constraints\": [],\n \"exampleValues\": [],\n \"version\": \"1.0.0\",\n },\n ],\n },\n ],\n }\n `);\n });\n\n it(\"Fails to define duplicate value type with same apiName and version\", () => {\n defineValueType({\n apiName: \"duplicateTest\",\n displayName: \"First Value Type\",\n type: {\n type: \"string\",\n },\n version: \"1.0.0\",\n });\n\n expect(() =>\n defineValueType({\n apiName: \"duplicateTest\",\n displayName: \"Second Value Type\",\n type: {\n type: \"boolean\",\n },\n version: \"1.0.0\",\n })\n ).toThrowErrorMatchingInlineSnapshot(\n \"[Error: Invariant failed: Value type with apiName duplicateTest and version 1.0.0 is already defined]\",\n );\n });\n\n it(\"Allows multiple versions of the same value type\", () => {\n defineValueType({\n apiName: \"multiVersion\",\n displayName: \"Multi Version Type\",\n type: {\n type: \"string\",\n },\n version: \"1.0.0\",\n });\n\n defineValueType({\n apiName: \"multiVersion\",\n displayName: \"Multi Version Type\",\n type: {\n type: \"string\",\n },\n version: \"2.0.0\",\n });\n\n const wireType = dumpValueTypeWireType();\n expect(wireType.valueTypes).toHaveLength(1);\n expect(wireType.valueTypes[0].versions).toHaveLength(2);\n expect(wireType.valueTypes[0].versions.map(v => v.version)).toEqual([\n \"1.0.0\",\n \"2.0.0\",\n ]);\n });\n});\n"],"mappings":"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SAAS;MAClBC,WAAW,EAAE,aAAa;MAC1BC,IAAI,EAAE;QACJ,MAAM,EAAE,SAAS;QACjBC,WAAW,EAAE,CAAC;UAAEC,UAAU,EAAE;YAAE,eAAe,EAAE,CAAC,YAAY;UAAE;QAAE,CAAC;MACnE,CAAC;MACDC,OAAO,EAAE;IACX,CAAC,CAAC;IACFZ,MAAM,CAACK,qBAAqB,CAAC,CAAC,CAAC,CAACoC,qBAAqB,CAAC;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;EACN,CAAC,CAAC;EACFxC,EAAE,CAAC,yBAAyB,EAAE,MAAM;IAClCK,eAAe,CAAC;MACdC,OAAO,EAAE,SAAS;MAClBC,WAAW,EAAE,aAAa;MAC1BC,IAAI,EAAE;QACJ,MAAM,EAAE,SAAS;QACjBC,WAAW,EAAE,CAAC;UAAEC,UAAU,EAAE;YAAE,eAAe,EAAE,CAAC,YAAY;UAAE;QAAE,CAAC;MACnE,CAAC;MACD+B,MAAM,EAAE;QACNjC,IAAI,EAAE,YAAY;QAClBkC,QAAQ,EAAE,YAAY;QACtBvB,OAAO,EAAE;MACX,CAAC;MACDR,OAAO,EAAE;IACX,CAAC,CAAC;IACFZ,MAAM,CAACK,qBAAqB,CAAC,CAAC,CAAC,CAACoC,qBAAqB,CAAC;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC;EACJ,CAAC,CAAC;EAEFxC,EAAE,CAAC,8DAA8D,EAAE,MAAM;IACvEK,eAAe,CAAC;MACdC,OAAO,EAAE,aAAa;MACtBC,WAAW,EAAE,eAAe;MAC5BC,IAAI,EAAE;QACJA,IAAI,EAAE;MACR,CAAC;MACDG,OAAO,EAAE,OAAO;MAChBgC,eAAe,EAAE;IACnB,CAAC,CAAC;IACF5C,MAAM,CAACK,qBAAqB,CAAC,CAAC,CAAC,CAACoC,qBAAqB,CAAC;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC;EACJ,CAAC,CAAC;EAEFxC,EAAE,CAAC,oEAAoE,EAAE,MAAM;IAC7EK,eAAe,CAAC;MACdC,OAAO,EAAE,eAAe;MACxBC,WAAW,EAAE,kBAAkB;MAC/BC,IAAI,EAAE;QACJA,IAAI,EAAE;MACR,CAAC;MACDG,OAAO,EAAE;IACX,CAAC,CAAC;IAEFZ,MAAM,CAAC,MACLM,eAAe,CAAC;MACdC,OAAO,EAAE,eAAe;MACxBC,WAAW,EAAE,mBAAmB;MAChCC,IAAI,EAAE;QACJA,IAAI,EAAE;MACR,CAAC;MACDG,OAAO,EAAE;IACX,CAAC,CACH,CAAC,CAACC,kCAAkC,CAClC,uGACF,CAAC;EACH,CAAC,CAAC;EAEFZ,EAAE,CAAC,iDAAiD,EAAE,MAAM;IAC1DK,eAAe,CAAC;MACdC,OAAO,EAAE,cAAc;MACvBC,WAAW,EAAE,oBAAoB;MACjCC,IAAI,EAAE;QACJA,IAAI,EAAE;MACR,CAAC;MACDG,OAAO,EAAE;IACX,CAAC,CAAC;IAEFN,eAAe,CAAC;MACdC,OAAO,EAAE,cAAc;MACvBC,WAAW,EAAE,oBAAoB;MACjCC,IAAI,EAAE;QACJA,IAAI,EAAE;MACR,CAAC;MACDG,OAAO,EAAE;IACX,CAAC,CAAC;IAEF,MAAMiC,QAAQ,GAAGxC,qBAAqB,CAAC,CAAC;IACxCL,MAAM,CAAC6C,QAAQ,CAACC,UAAU,CAAC,CAACT,YAAY,CAAC,CAAC,CAAC;IAC3CrC,MAAM,CAAC6C,QAAQ,CAACC,UAAU,CAAC,CAAC,CAAC,CAACC,QAAQ,CAAC,CAACV,YAAY,CAAC,CAAC,CAAC;IACvDrC,MAAM,CAAC6C,QAAQ,CAACC,UAAU,CAAC,CAAC,CAAC,CAACC,QAAQ,CAACC,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACrC,OAAO,CAAC,CAAC,CAACmB,OAAO,CAAC,CAClE,OAAO,EACP,OAAO,CACR,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -24,7 +24,7 @@ import { defineOntology } from "../api/defineOntology.js";
|
|
|
24
24
|
const apiNamespaceRegex = /^[a-z0-9-]+(\.[a-z0-9-]+)*\.$/;
|
|
25
25
|
const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;
|
|
26
26
|
export default async function main(args = process.argv) {
|
|
27
|
-
const commandLineOpts = await yargs(hideBin(args)).version("0.15.0-beta.
|
|
27
|
+
const commandLineOpts = await yargs(hideBin(args)).version("0.15.0-beta.9" ?? "").wrap(Math.min(150, yargs().terminalWidth())).strict().help().options({
|
|
28
28
|
input: {
|
|
29
29
|
alias: "i",
|
|
30
30
|
describe: "Input file",
|
|
@@ -34,29 +34,37 @@ export function convertActionParameterConditionalOverride(override, validation,
|
|
|
34
34
|
};
|
|
35
35
|
break;
|
|
36
36
|
case "visibility":
|
|
37
|
+
let overrideType = override.then ?? (validation.defaultVisibility === "editable" ? "hidden" : "editable");
|
|
37
38
|
parameterBlockOverride = {
|
|
38
39
|
type: "visibility",
|
|
39
40
|
visibility: {
|
|
40
|
-
visibility:
|
|
41
|
+
visibility: overrideType === "editable" ? {
|
|
42
|
+
type: "editable",
|
|
43
|
+
editable: {}
|
|
44
|
+
} : overrideType === "hidden" ? {
|
|
41
45
|
type: "hidden",
|
|
42
46
|
hidden: {}
|
|
43
47
|
} : {
|
|
44
|
-
type: "
|
|
45
|
-
|
|
48
|
+
type: "disabled",
|
|
49
|
+
disabled: {}
|
|
46
50
|
}
|
|
47
51
|
}
|
|
48
52
|
};
|
|
49
53
|
break;
|
|
50
54
|
case "disabled":
|
|
55
|
+
overrideType = override.then ?? (validation.defaultVisibility === "editable" ? "disabled" : "editable");
|
|
51
56
|
parameterBlockOverride = {
|
|
52
57
|
type: "visibility",
|
|
53
58
|
visibility: {
|
|
54
|
-
visibility:
|
|
55
|
-
type: "disabled",
|
|
56
|
-
disabled: {}
|
|
57
|
-
} : {
|
|
59
|
+
visibility: overrideType === "editable" ? {
|
|
58
60
|
type: "editable",
|
|
59
61
|
editable: {}
|
|
62
|
+
} : overrideType === "hidden" ? {
|
|
63
|
+
type: "hidden",
|
|
64
|
+
hidden: {}
|
|
65
|
+
} : {
|
|
66
|
+
type: "disabled",
|
|
67
|
+
disabled: {}
|
|
60
68
|
}
|
|
61
69
|
}
|
|
62
70
|
};
|
package/build/browser/conversion/toMarketplace/convertActionParameterConditionalOverride.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convertActionParameterConditionalOverride.js","names":["extractAllowedValues","convertConditionDefinition","convertActionParameterConditionalOverride","override","validation","actionParameters","parameterBlockOverride","type","parameterRequired","required","notRequired","
|
|
1
|
+
{"version":3,"file":"convertActionParameterConditionalOverride.js","names":["extractAllowedValues","convertConditionDefinition","convertActionParameterConditionalOverride","override","validation","actionParameters","parameterBlockOverride","type","parameterRequired","required","notRequired","overrideType","then","defaultVisibility","visibility","editable","hidden","disabled","prefill","defaultValue","allowedValues","constraint","Error","condition","parameterBlockOverrides"],"sources":["convertActionParameterConditionalOverride.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 OntologyIrConditionalOverride,\n OntologyIrParameterValidationBlockOverride,\n} from \"@osdk/client.unstable\";\nimport type {\n ActionParameter,\n ActionParameterValidation,\n} from \"../../api/action/ActionParameter.js\";\nimport type { ActionParameterConditionalOverride } from \"../../api/action/ActionParameterConditionalOverride.js\";\nimport { extractAllowedValues } from \"../../api/defineOntology.js\";\nimport { convertConditionDefinition } from \"./convertConditionDefinition.js\";\n\nexport function convertActionParameterConditionalOverride(\n override: ActionParameterConditionalOverride,\n validation: ActionParameterValidation,\n actionParameters?: ActionParameter[],\n): OntologyIrConditionalOverride {\n let parameterBlockOverride: OntologyIrParameterValidationBlockOverride;\n switch (override.type) {\n case \"required\":\n parameterBlockOverride = {\n type: \"parameterRequired\",\n parameterRequired: {\n required: validation.required\n ? {\n type: \"notRequired\",\n notRequired: {},\n }\n : {\n type: \"required\",\n required: {},\n },\n },\n };\n break;\n case \"visibility\":\n let overrideType = override.then ?? (\n validation.defaultVisibility === \"editable\" ? \"hidden\" : \"editable\"\n );\n parameterBlockOverride = {\n type: \"visibility\",\n visibility: {\n visibility: overrideType === \"editable\"\n ? {\n type: \"editable\",\n editable: {},\n }\n : overrideType === \"hidden\"\n ? {\n type: \"hidden\",\n hidden: {},\n }\n : {\n type: \"disabled\",\n disabled: {},\n },\n },\n };\n break;\n case \"disabled\":\n overrideType = override.then ?? (\n validation.defaultVisibility === \"editable\" ? \"disabled\" : \"editable\"\n );\n parameterBlockOverride = {\n type: \"visibility\",\n visibility: {\n visibility: overrideType === \"editable\"\n ? {\n type: \"editable\",\n editable: {},\n }\n : overrideType === \"hidden\"\n ? {\n type: \"hidden\",\n hidden: {},\n }\n : {\n type: \"disabled\",\n disabled: {},\n },\n },\n };\n break;\n case \"defaultValue\":\n parameterBlockOverride = {\n type: \"prefill\",\n prefill: {\n prefill: override.defaultValue,\n },\n };\n break;\n case \"constraint\":\n parameterBlockOverride = {\n type: \"allowedValues\",\n allowedValues: {\n allowedValues: extractAllowedValues(override.constraint),\n },\n };\n break;\n default:\n throw new Error(`Unknown parameter override type`);\n }\n return {\n condition: convertConditionDefinition(override.condition, actionParameters),\n parameterBlockOverrides: [parameterBlockOverride],\n };\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAWA,SAASA,oBAAoB,QAAQ,6BAA6B;AAClE,SAASC,0BAA0B,QAAQ,iCAAiC;AAE5E,OAAO,SAASC,yCAAyCA,CACvDC,QAA4C,EAC5CC,UAAqC,EACrCC,gBAAoC,EACL;EAC/B,IAAIC,sBAAkE;EACtE,QAAQH,QAAQ,CAACI,IAAI;IACnB,KAAK,UAAU;MACbD,sBAAsB,GAAG;QACvBC,IAAI,EAAE,mBAAmB;QACzBC,iBAAiB,EAAE;UACjBC,QAAQ,EAAEL,UAAU,CAACK,QAAQ,GACzB;YACAF,IAAI,EAAE,aAAa;YACnBG,WAAW,EAAE,CAAC;UAChB,CAAC,GACC;YACAH,IAAI,EAAE,UAAU;YAChBE,QAAQ,EAAE,CAAC;UACb;QACJ;MACF,CAAC;MACD;IACF,KAAK,YAAY;MACf,IAAIE,YAAY,GAAGR,QAAQ,CAACS,IAAI,KAC9BR,UAAU,CAACS,iBAAiB,KAAK,UAAU,GAAG,QAAQ,GAAG,UAAU,CACpE;MACDP,sBAAsB,GAAG;QACvBC,IAAI,EAAE,YAAY;QAClBO,UAAU,EAAE;UACVA,UAAU,EAAEH,YAAY,KAAK,UAAU,GACnC;YACAJ,IAAI,EAAE,UAAU;YAChBQ,QAAQ,EAAE,CAAC;UACb,CAAC,GACCJ,YAAY,KAAK,QAAQ,GACzB;YACAJ,IAAI,EAAE,QAAQ;YACdS,MAAM,EAAE,CAAC;UACX,CAAC,GACC;YACAT,IAAI,EAAE,UAAU;YAChBU,QAAQ,EAAE,CAAC;UACb;QACJ;MACF,CAAC;MACD;IACF,KAAK,UAAU;MACbN,YAAY,GAAGR,QAAQ,CAACS,IAAI,KAC1BR,UAAU,CAACS,iBAAiB,KAAK,UAAU,GAAG,UAAU,GAAG,UAAU,CACtE;MACDP,sBAAsB,GAAG;QACvBC,IAAI,EAAE,YAAY;QAClBO,UAAU,EAAE;UACVA,UAAU,EAAEH,YAAY,KAAK,UAAU,GACnC;YACAJ,IAAI,EAAE,UAAU;YAChBQ,QAAQ,EAAE,CAAC;UACb,CAAC,GACCJ,YAAY,KAAK,QAAQ,GACzB;YACAJ,IAAI,EAAE,QAAQ;YACdS,MAAM,EAAE,CAAC;UACX,CAAC,GACC;YACAT,IAAI,EAAE,UAAU;YAChBU,QAAQ,EAAE,CAAC;UACb;QACJ;MACF,CAAC;MACD;IACF,KAAK,cAAc;MACjBX,sBAAsB,GAAG;QACvBC,IAAI,EAAE,SAAS;QACfW,OAAO,EAAE;UACPA,OAAO,EAAEf,QAAQ,CAACgB;QACpB;MACF,CAAC;MACD;IACF,KAAK,YAAY;MACfb,sBAAsB,GAAG;QACvBC,IAAI,EAAE,eAAe;QACrBa,aAAa,EAAE;UACbA,aAAa,EAAEpB,oBAAoB,CAACG,QAAQ,CAACkB,UAAU;QACzD;MACF,CAAC;MACD;IACF;MACE,MAAM,IAAIC,KAAK,CAAC,iCAAiC,CAAC;EACtD;EACA,OAAO;IACLC,SAAS,EAAEtB,0BAA0B,CAACE,QAAQ,CAACoB,SAAS,EAAElB,gBAAgB,CAAC;IAC3EmB,uBAAuB,EAAE,CAAClB,sBAAsB;EAClD,CAAC;AACH","ignoreList":[]}
|
|
@@ -144,10 +144,7 @@ export function convertLink(linkType) {
|
|
|
144
144
|
linkType: {
|
|
145
145
|
definition: definition,
|
|
146
146
|
id: cleanAndValidateLinkTypeId(linkType.apiName),
|
|
147
|
-
status: linkType.status
|
|
148
|
-
type: "active",
|
|
149
|
-
active: {}
|
|
150
|
-
},
|
|
147
|
+
status: convertLinkStatus(linkType.status),
|
|
151
148
|
redacted: linkType.redacted ?? false
|
|
152
149
|
},
|
|
153
150
|
datasources: datasource !== undefined ? [datasource] : [],
|
|
@@ -214,4 +211,33 @@ export function getObject(object) {
|
|
|
214
211
|
object: fullObject
|
|
215
212
|
};
|
|
216
213
|
}
|
|
214
|
+
export function convertLinkStatus(status) {
|
|
215
|
+
if (typeof status === "object" && "type" in status && status.type === "deprecated") {
|
|
216
|
+
return {
|
|
217
|
+
type: "deprecated",
|
|
218
|
+
deprecated: {
|
|
219
|
+
message: status.message,
|
|
220
|
+
deadline: status.deadline
|
|
221
|
+
}
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
switch (status) {
|
|
225
|
+
case "experimental":
|
|
226
|
+
return {
|
|
227
|
+
type: "experimental",
|
|
228
|
+
experimental: {}
|
|
229
|
+
};
|
|
230
|
+
case "example":
|
|
231
|
+
return {
|
|
232
|
+
type: "example",
|
|
233
|
+
example: {}
|
|
234
|
+
};
|
|
235
|
+
case "active":
|
|
236
|
+
default:
|
|
237
|
+
return {
|
|
238
|
+
type: "active",
|
|
239
|
+
active: {}
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
}
|
|
217
243
|
//# sourceMappingURL=convertLink.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convertLink.js","names":["invariant","OntologyEntityTypeEnum","cleanAndValidateLinkTypeId","ontologyDefinition","convertCardinality","convertLink","linkType","validateLink","definition","datasource","undefined","apiName","oneObjectApiName","object","oneObject","getObject","one","toManyObjectApiName","toManyObject","toMany","type","oneToMany","cardinalityHint","cardinality","manyToOneLinkMetadata","metadata","objectTypeRidManySide","objectTypeRidOneSide","oneToManyLinkMetadata","oneSidePrimaryKeyToManySidePropertyMapping","from","primaryKeyPropertyApiName","to","manyForeignKeyProperty","manyObjectApiName","manyObject","many","intermediary","objectTypeAToBLinkMetadata","objectTypeBToALinkMetadata","objectTypeRidA","objectTypeRidB","intermediaryObjectTypeRid","intermediaryObjectType","aToIntermediaryLinkTypeRid","linkToIntermediary","intermediaryToBLinkTypeRid","manyToMany","peeringMetadata","objectTypeAPrimaryKeyPropertyMapping","objectTypeBPrimaryKeyPropertyMapping","datasourceName","dataset","datasetRid","concat","writebackDatasetRid","objectTypeAPrimaryKeyMapping","property","column","objectTypeBPrimaryKeyMapping","editsConfiguration","onlyAllowPrivilegedEdits","redacted","id","status","active","datasources","entityMetadata","arePatchesEnabled","editsEnabled","linkDefinition","foreignKey","properties","find","p","process","env","NODE_ENV","test","typesMatch","intermediaryObjectTypeApiName","manyIntermediaryOneObjectApiName","manyIntermediaryOneObject","manyIntermediaryToManyObjectApiName","manyIntermediaryToManyObject","toManyIntermediaryOneObjectApiName","toManyIntermediaryOneObject","toManyIntermediaryToManyObjectApiName","toManyIntermediaryToManyObject","objectApiName","fullObject","OBJECT_TYPE"],"sources":["convertLink.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 OntologyIrLinkDefinition,\n OntologyIrLinkTypeBlockDataV2,\n OntologyIrManyToManyLinkTypeDatasource,\n} from \"@osdk/client.unstable\";\nimport invariant from \"tiny-invariant\";\nimport { OntologyEntityTypeEnum } from \"../../api/common/OntologyEntityTypeEnum.js\";\nimport {\n cleanAndValidateLinkTypeId,\n ontologyDefinition,\n} from \"../../api/defineOntology.js\";\nimport type { LinkType } from \"../../api/links/LinkType.js\";\nimport type { ObjectType } from \"../../api/object/ObjectType.js\";\nimport type { ObjectTypeDefinition } from \"../../api/object/ObjectTypeDefinition.js\";\nimport { convertCardinality } from \"./convertCardinality.js\";\n\nexport function convertLink(\n linkType: LinkType,\n): OntologyIrLinkTypeBlockDataV2 {\n validateLink(linkType);\n let definition: OntologyIrLinkDefinition;\n let datasource: OntologyIrManyToManyLinkTypeDatasource | undefined =\n undefined;\n if (\"one\" in linkType) {\n const { apiName: oneObjectApiName, object: oneObject } = getObject(\n linkType.one.object,\n );\n const { apiName: toManyObjectApiName, object: toManyObject } = getObject(\n linkType.toMany.object,\n );\n definition = {\n type: \"oneToMany\",\n oneToMany: {\n cardinalityHint: convertCardinality(linkType.cardinality),\n manyToOneLinkMetadata: linkType.toMany.metadata,\n objectTypeRidManySide: toManyObjectApiName,\n objectTypeRidOneSide: oneObjectApiName,\n oneToManyLinkMetadata: linkType.one.metadata,\n oneSidePrimaryKeyToManySidePropertyMapping: [{\n from: {\n apiName: oneObject.primaryKeyPropertyApiName,\n object: oneObjectApiName,\n },\n to: {\n apiName: linkType.manyForeignKeyProperty,\n object: toManyObjectApiName,\n },\n }],\n },\n };\n } else if (\"intermediaryObjectType\" in linkType) {\n const { apiName: manyObjectApiName, object: manyObject } = getObject(\n linkType.many.object,\n );\n const { apiName: toManyObjectApiName, object: toManyObject } = getObject(\n linkType.toMany.object,\n );\n definition = {\n type: \"intermediary\",\n intermediary: {\n objectTypeAToBLinkMetadata: linkType.many.metadata,\n objectTypeBToALinkMetadata: linkType.toMany.metadata,\n objectTypeRidA: manyObjectApiName,\n objectTypeRidB: toManyObjectApiName,\n intermediaryObjectTypeRid: linkType.intermediaryObjectType.apiName,\n aToIntermediaryLinkTypeRid: cleanAndValidateLinkTypeId(\n linkType.many.linkToIntermediary.apiName,\n ),\n intermediaryToBLinkTypeRid: cleanAndValidateLinkTypeId(\n linkType.toMany.linkToIntermediary.apiName,\n ),\n },\n };\n } else {\n const { apiName: manyObjectApiName, object: manyObject } = getObject(\n linkType.many.object,\n );\n const { apiName: toManyObjectApiName, object: toManyObject } = getObject(\n linkType.toMany.object,\n );\n definition = {\n type: \"manyToMany\",\n manyToMany: {\n objectTypeAToBLinkMetadata: linkType.many.metadata,\n objectTypeBToALinkMetadata: linkType.toMany.metadata,\n objectTypeRidA: manyObjectApiName,\n objectTypeRidB: toManyObjectApiName,\n peeringMetadata: undefined,\n objectTypeAPrimaryKeyPropertyMapping: [{\n from: {\n apiName: manyObject.primaryKeyPropertyApiName,\n object: manyObjectApiName,\n },\n to: {\n apiName: manyObject.primaryKeyPropertyApiName,\n object: manyObjectApiName,\n },\n }],\n objectTypeBPrimaryKeyPropertyMapping: [{\n from: {\n apiName: toManyObject.primaryKeyPropertyApiName,\n object: toManyObjectApiName,\n },\n to: {\n apiName: toManyObject.primaryKeyPropertyApiName,\n object: toManyObjectApiName,\n },\n }],\n },\n };\n\n datasource = {\n datasourceName: linkType.apiName,\n datasource: {\n type: \"dataset\",\n dataset: {\n datasetRid: \"link-\".concat(linkType.apiName),\n writebackDatasetRid: undefined,\n objectTypeAPrimaryKeyMapping: [{\n property: {\n apiName: manyObject.primaryKeyPropertyApiName,\n object: manyObjectApiName,\n },\n column: manyObject.primaryKeyPropertyApiName,\n }],\n objectTypeBPrimaryKeyMapping: [{\n property: {\n apiName: toManyObject.primaryKeyPropertyApiName,\n object: toManyObjectApiName,\n },\n column: toManyObject.primaryKeyPropertyApiName,\n }],\n },\n },\n editsConfiguration: {\n onlyAllowPrivilegedEdits: false,\n },\n redacted: linkType.redacted,\n };\n }\n\n return {\n linkType: {\n definition: definition,\n id: cleanAndValidateLinkTypeId(linkType.apiName),\n status: linkType.status ?? { type: \"active\", active: {} },\n redacted: linkType.redacted ?? false,\n },\n datasources: datasource !== undefined ? [datasource] : [],\n entityMetadata: {\n arePatchesEnabled: linkType.editsEnabled ?? false,\n },\n };\n}\nfunction validateLink(linkDefinition: LinkType) {\n if (\"one\" in linkDefinition) {\n const { apiName: oneObjectApiName, object: oneObject } = getObject(\n linkDefinition.one.object,\n );\n const { apiName: toManyObjectApiName, object: toManyObject } = getObject(\n linkDefinition.toMany.object,\n );\n const foreignKey = toManyObject.properties?.find(p =>\n p.apiName === linkDefinition.manyForeignKeyProperty\n );\n invariant(\n foreignKey !== undefined,\n `Foreign key ${linkDefinition.manyForeignKeyProperty} on link ${linkDefinition.apiName} does not exist on object ${toManyObjectApiName}`,\n );\n\n invariant(\n /([a-z][a-z0-9\\\\-]*)/.test(linkDefinition.apiName),\n `Top level link api names are expected to match the regex pattern ([a-z][a-z0-9\\\\-]*) ${linkDefinition.apiName} does not match`,\n );\n\n const typesMatch = foreignKey.type\n === oneObject.properties?.find(p =>\n p.apiName === oneObject.primaryKeyPropertyApiName\n )?.type;\n invariant(\n typesMatch,\n `Link ${linkDefinition.apiName} has type mismatch between the one side's primary key and the foreign key on the many side`,\n );\n }\n if (\"intermediaryObjectType\" in linkDefinition) {\n const {\n apiName: intermediaryObjectTypeApiName,\n object: intermediaryObjectType,\n } = getObject(linkDefinition.intermediaryObjectType);\n const { apiName: manyObjectApiName, object: manyObject } = getObject(\n linkDefinition.many.object,\n );\n const { apiName: toManyObjectApiName, object: toManyObject } = getObject(\n linkDefinition.toMany.object,\n );\n\n const {\n apiName: manyIntermediaryOneObjectApiName,\n object: manyIntermediaryOneObject,\n } = getObject((linkDefinition.many.linkToIntermediary as any).one.object);\n const {\n apiName: manyIntermediaryToManyObjectApiName,\n object: manyIntermediaryToManyObject,\n } = getObject(linkDefinition.many.linkToIntermediary.toMany.object);\n invariant(\n \"one\" in linkDefinition.many.linkToIntermediary\n && manyIntermediaryOneObjectApiName\n === manyObject.apiName\n && manyIntermediaryToManyObjectApiName\n === intermediaryObjectTypeApiName,\n `LinkTypeA ${linkDefinition.many.linkToIntermediary.apiName} must be a many to one link from intermediary object ${intermediaryObjectTypeApiName} to objectA ${manyObjectApiName}`,\n );\n\n const {\n apiName: toManyIntermediaryOneObjectApiName,\n object: toManyIntermediaryOneObject,\n } = getObject((linkDefinition.toMany.linkToIntermediary as any).one.object);\n const {\n apiName: toManyIntermediaryToManyObjectApiName,\n object: toManyIntermediaryToManyObject,\n } = getObject(linkDefinition.toMany.linkToIntermediary.toMany.object);\n invariant(\n \"one\" in linkDefinition.toMany.linkToIntermediary\n && toManyIntermediaryOneObjectApiName\n === toManyObjectApiName\n && toManyIntermediaryToManyObjectApiName\n === intermediaryObjectTypeApiName,\n `LinkTypeB ${linkDefinition.toMany.linkToIntermediary.apiName} must be a many to one link from intermediary object ${intermediaryObjectTypeApiName} to objectB ${toManyObjectApiName}`,\n );\n }\n}\n\nexport function getObject(\n object: string | ObjectTypeDefinition,\n): { apiName: string; object: ObjectType } {\n const objectApiName = typeof object === \"string\" ? object : object.apiName;\n const fullObject =\n ontologyDefinition[OntologyEntityTypeEnum.OBJECT_TYPE][objectApiName];\n invariant(\n fullObject !== undefined,\n `Object ${objectApiName} is not defined`,\n );\n return { apiName: objectApiName, object: fullObject };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"convertLink.js","names":["invariant","OntologyEntityTypeEnum","cleanAndValidateLinkTypeId","ontologyDefinition","convertCardinality","convertLink","linkType","validateLink","definition","datasource","undefined","apiName","oneObjectApiName","object","oneObject","getObject","one","toManyObjectApiName","toManyObject","toMany","type","oneToMany","cardinalityHint","cardinality","manyToOneLinkMetadata","metadata","objectTypeRidManySide","objectTypeRidOneSide","oneToManyLinkMetadata","oneSidePrimaryKeyToManySidePropertyMapping","from","primaryKeyPropertyApiName","to","manyForeignKeyProperty","manyObjectApiName","manyObject","many","intermediary","objectTypeAToBLinkMetadata","objectTypeBToALinkMetadata","objectTypeRidA","objectTypeRidB","intermediaryObjectTypeRid","intermediaryObjectType","aToIntermediaryLinkTypeRid","linkToIntermediary","intermediaryToBLinkTypeRid","manyToMany","peeringMetadata","objectTypeAPrimaryKeyPropertyMapping","objectTypeBPrimaryKeyPropertyMapping","datasourceName","dataset","datasetRid","concat","writebackDatasetRid","objectTypeAPrimaryKeyMapping","property","column","objectTypeBPrimaryKeyMapping","editsConfiguration","onlyAllowPrivilegedEdits","redacted","id","status","convertLinkStatus","datasources","entityMetadata","arePatchesEnabled","editsEnabled","linkDefinition","foreignKey","properties","find","p","process","env","NODE_ENV","test","typesMatch","intermediaryObjectTypeApiName","manyIntermediaryOneObjectApiName","manyIntermediaryOneObject","manyIntermediaryToManyObjectApiName","manyIntermediaryToManyObject","toManyIntermediaryOneObjectApiName","toManyIntermediaryOneObject","toManyIntermediaryToManyObjectApiName","toManyIntermediaryToManyObject","objectApiName","fullObject","OBJECT_TYPE","deprecated","message","deadline","experimental","example","active"],"sources":["convertLink.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 OntologyIrLinkDefinition,\n OntologyIrLinkTypeBlockDataV2,\n OntologyIrLinkTypeStatus,\n OntologyIrManyToManyLinkTypeDatasource,\n} from \"@osdk/client.unstable\";\nimport invariant from \"tiny-invariant\";\nimport { OntologyEntityTypeEnum } from \"../../api/common/OntologyEntityTypeEnum.js\";\nimport {\n cleanAndValidateLinkTypeId,\n ontologyDefinition,\n} from \"../../api/defineOntology.js\";\nimport type { LinkType, UserLinkTypeStatus } from \"../../api/links/LinkType.js\";\nimport type { ObjectType } from \"../../api/object/ObjectType.js\";\nimport type { ObjectTypeDefinition } from \"../../api/object/ObjectTypeDefinition.js\";\nimport { convertCardinality } from \"./convertCardinality.js\";\n\nexport function convertLink(\n linkType: LinkType,\n): OntologyIrLinkTypeBlockDataV2 {\n validateLink(linkType);\n let definition: OntologyIrLinkDefinition;\n let datasource: OntologyIrManyToManyLinkTypeDatasource | undefined =\n undefined;\n if (\"one\" in linkType) {\n const { apiName: oneObjectApiName, object: oneObject } = getObject(\n linkType.one.object,\n );\n const { apiName: toManyObjectApiName, object: toManyObject } = getObject(\n linkType.toMany.object,\n );\n definition = {\n type: \"oneToMany\",\n oneToMany: {\n cardinalityHint: convertCardinality(linkType.cardinality),\n manyToOneLinkMetadata: linkType.toMany.metadata,\n objectTypeRidManySide: toManyObjectApiName,\n objectTypeRidOneSide: oneObjectApiName,\n oneToManyLinkMetadata: linkType.one.metadata,\n oneSidePrimaryKeyToManySidePropertyMapping: [{\n from: {\n apiName: oneObject.primaryKeyPropertyApiName,\n object: oneObjectApiName,\n },\n to: {\n apiName: linkType.manyForeignKeyProperty,\n object: toManyObjectApiName,\n },\n }],\n },\n };\n } else if (\"intermediaryObjectType\" in linkType) {\n const { apiName: manyObjectApiName, object: manyObject } = getObject(\n linkType.many.object,\n );\n const { apiName: toManyObjectApiName, object: toManyObject } = getObject(\n linkType.toMany.object,\n );\n definition = {\n type: \"intermediary\",\n intermediary: {\n objectTypeAToBLinkMetadata: linkType.many.metadata,\n objectTypeBToALinkMetadata: linkType.toMany.metadata,\n objectTypeRidA: manyObjectApiName,\n objectTypeRidB: toManyObjectApiName,\n intermediaryObjectTypeRid: linkType.intermediaryObjectType.apiName,\n aToIntermediaryLinkTypeRid: cleanAndValidateLinkTypeId(\n linkType.many.linkToIntermediary.apiName,\n ),\n intermediaryToBLinkTypeRid: cleanAndValidateLinkTypeId(\n linkType.toMany.linkToIntermediary.apiName,\n ),\n },\n };\n } else {\n const { apiName: manyObjectApiName, object: manyObject } = getObject(\n linkType.many.object,\n );\n const { apiName: toManyObjectApiName, object: toManyObject } = getObject(\n linkType.toMany.object,\n );\n definition = {\n type: \"manyToMany\",\n manyToMany: {\n objectTypeAToBLinkMetadata: linkType.many.metadata,\n objectTypeBToALinkMetadata: linkType.toMany.metadata,\n objectTypeRidA: manyObjectApiName,\n objectTypeRidB: toManyObjectApiName,\n peeringMetadata: undefined,\n objectTypeAPrimaryKeyPropertyMapping: [{\n from: {\n apiName: manyObject.primaryKeyPropertyApiName,\n object: manyObjectApiName,\n },\n to: {\n apiName: manyObject.primaryKeyPropertyApiName,\n object: manyObjectApiName,\n },\n }],\n objectTypeBPrimaryKeyPropertyMapping: [{\n from: {\n apiName: toManyObject.primaryKeyPropertyApiName,\n object: toManyObjectApiName,\n },\n to: {\n apiName: toManyObject.primaryKeyPropertyApiName,\n object: toManyObjectApiName,\n },\n }],\n },\n };\n\n datasource = {\n datasourceName: linkType.apiName,\n datasource: {\n type: \"dataset\",\n dataset: {\n datasetRid: \"link-\".concat(linkType.apiName),\n writebackDatasetRid: undefined,\n objectTypeAPrimaryKeyMapping: [{\n property: {\n apiName: manyObject.primaryKeyPropertyApiName,\n object: manyObjectApiName,\n },\n column: manyObject.primaryKeyPropertyApiName,\n }],\n objectTypeBPrimaryKeyMapping: [{\n property: {\n apiName: toManyObject.primaryKeyPropertyApiName,\n object: toManyObjectApiName,\n },\n column: toManyObject.primaryKeyPropertyApiName,\n }],\n },\n },\n editsConfiguration: {\n onlyAllowPrivilegedEdits: false,\n },\n redacted: linkType.redacted,\n };\n }\n\n return {\n linkType: {\n definition: definition,\n id: cleanAndValidateLinkTypeId(linkType.apiName),\n status: convertLinkStatus(linkType.status),\n redacted: linkType.redacted ?? false,\n },\n datasources: datasource !== undefined ? [datasource] : [],\n entityMetadata: {\n arePatchesEnabled: linkType.editsEnabled ?? false,\n },\n };\n}\nfunction validateLink(linkDefinition: LinkType) {\n if (\"one\" in linkDefinition) {\n const { apiName: oneObjectApiName, object: oneObject } = getObject(\n linkDefinition.one.object,\n );\n const { apiName: toManyObjectApiName, object: toManyObject } = getObject(\n linkDefinition.toMany.object,\n );\n const foreignKey = toManyObject.properties?.find(p =>\n p.apiName === linkDefinition.manyForeignKeyProperty\n );\n invariant(\n foreignKey !== undefined,\n `Foreign key ${linkDefinition.manyForeignKeyProperty} on link ${linkDefinition.apiName} does not exist on object ${toManyObjectApiName}`,\n );\n\n invariant(\n /([a-z][a-z0-9\\\\-]*)/.test(linkDefinition.apiName),\n `Top level link api names are expected to match the regex pattern ([a-z][a-z0-9\\\\-]*) ${linkDefinition.apiName} does not match`,\n );\n\n const typesMatch = foreignKey.type\n === oneObject.properties?.find(p =>\n p.apiName === oneObject.primaryKeyPropertyApiName\n )?.type;\n invariant(\n typesMatch,\n `Link ${linkDefinition.apiName} has type mismatch between the one side's primary key and the foreign key on the many side`,\n );\n }\n if (\"intermediaryObjectType\" in linkDefinition) {\n const {\n apiName: intermediaryObjectTypeApiName,\n object: intermediaryObjectType,\n } = getObject(linkDefinition.intermediaryObjectType);\n const { apiName: manyObjectApiName, object: manyObject } = getObject(\n linkDefinition.many.object,\n );\n const { apiName: toManyObjectApiName, object: toManyObject } = getObject(\n linkDefinition.toMany.object,\n );\n\n const {\n apiName: manyIntermediaryOneObjectApiName,\n object: manyIntermediaryOneObject,\n } = getObject((linkDefinition.many.linkToIntermediary as any).one.object);\n const {\n apiName: manyIntermediaryToManyObjectApiName,\n object: manyIntermediaryToManyObject,\n } = getObject(linkDefinition.many.linkToIntermediary.toMany.object);\n invariant(\n \"one\" in linkDefinition.many.linkToIntermediary\n && manyIntermediaryOneObjectApiName\n === manyObject.apiName\n && manyIntermediaryToManyObjectApiName\n === intermediaryObjectTypeApiName,\n `LinkTypeA ${linkDefinition.many.linkToIntermediary.apiName} must be a many to one link from intermediary object ${intermediaryObjectTypeApiName} to objectA ${manyObjectApiName}`,\n );\n\n const {\n apiName: toManyIntermediaryOneObjectApiName,\n object: toManyIntermediaryOneObject,\n } = getObject((linkDefinition.toMany.linkToIntermediary as any).one.object);\n const {\n apiName: toManyIntermediaryToManyObjectApiName,\n object: toManyIntermediaryToManyObject,\n } = getObject(linkDefinition.toMany.linkToIntermediary.toMany.object);\n invariant(\n \"one\" in linkDefinition.toMany.linkToIntermediary\n && toManyIntermediaryOneObjectApiName\n === toManyObjectApiName\n && toManyIntermediaryToManyObjectApiName\n === intermediaryObjectTypeApiName,\n `LinkTypeB ${linkDefinition.toMany.linkToIntermediary.apiName} must be a many to one link from intermediary object ${intermediaryObjectTypeApiName} to objectB ${toManyObjectApiName}`,\n );\n }\n}\n\nexport function getObject(\n object: string | ObjectTypeDefinition,\n): { apiName: string; object: ObjectType } {\n const objectApiName = typeof object === \"string\" ? object : object.apiName;\n const fullObject =\n ontologyDefinition[OntologyEntityTypeEnum.OBJECT_TYPE][objectApiName];\n invariant(\n fullObject !== undefined,\n `Object ${objectApiName} is not defined`,\n );\n return { apiName: objectApiName, object: fullObject };\n}\n\nexport function convertLinkStatus(\n status: UserLinkTypeStatus | undefined,\n): OntologyIrLinkTypeStatus {\n if (\n typeof status === \"object\" && \"type\" in status\n && status.type === \"deprecated\"\n ) {\n return {\n type: \"deprecated\",\n deprecated: {\n message: status.message,\n deadline: status.deadline,\n },\n };\n }\n switch (status) {\n case \"experimental\":\n return { type: \"experimental\", experimental: {} };\n case \"example\":\n return { type: \"example\", example: {} };\n case \"active\":\n default:\n return { type: \"active\", active: {} };\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
import {
|
|
17
|
+
import { buildDatasource, cleanAndValidateLinkTypeId, convertObjectStatus } from "../../api/defineOntology.js";
|
|
18
18
|
import { isExotic } from "../../api/properties/PropertyTypeType.js";
|
|
19
19
|
import { convertDatasourceDefinition } from "./convertDatasourceDefinition.js";
|
|
20
20
|
import { convertObjectPropertyType } from "./convertObjectPropertyType.js";
|
|
@@ -55,10 +55,11 @@ export function convertObject(objectType) {
|
|
|
55
55
|
implementsInterfaces2: implementations.map(impl => ({
|
|
56
56
|
interfaceTypeApiName: impl.implements.apiName,
|
|
57
57
|
linksV2: {},
|
|
58
|
-
propertiesV2: {
|
|
59
|
-
|
|
60
|
-
propertyTypeRid:
|
|
61
|
-
}]))
|
|
58
|
+
propertiesV2: Object.fromEntries(impl.propertyMapping.map(mappings => [mappings.interfaceProperty, {
|
|
59
|
+
type: "propertyTypeRid",
|
|
60
|
+
propertyTypeRid: mappings.mapsTo
|
|
61
|
+
}])),
|
|
62
|
+
properties: {}
|
|
62
63
|
})),
|
|
63
64
|
allImplementsInterfaces: {}
|
|
64
65
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convertObject.js","names":["addNamespaceIfNone","buildDatasource","cleanAndValidateLinkTypeId","convertObjectStatus","isExotic","convertDatasourceDefinition","convertObjectPropertyType","convertObject","objectType","derivedDatasources","derivedPropertyNames","extractDerivedDatasources","propertyDatasources","properties","filter","prop","includes","apiName","flatMap","extractPropertyDatasource","classificationGroupMarkingNames","extractMarkingGroups","mandatoryMarkingNames","classificationInputGroup","length","reduce","l","r","undefined","mandatoryInputGroup","objectDatasource","implementations","implementsInterfaces","displayMetadata","description","displayName","groupDisplayName","icon","type","blueprint","locator","color","pluralDisplayName","visibility","primaryKeys","primaryKeyPropertyApiName","propertyTypes","Object","fromEntries","map","val","titlePropertyTypeRid","titlePropertyApiName","status","redacted","implementsInterfaces2","impl","interfaceTypeApiName","implements","linksV2","propertiesV2","propertyMapping","mapping","interfaceProperty","propertyTypeRid","mapsTo","allImplementsInterfaces","datasources","entityMetadata","arePatchesEnabled","editsEnabled","aliases","markingType","markingInputGroupName","property","objectTypeApiName","identifier","geotimeDefinition","geotimeSeries","geotimeSeriesIntegrationRid","mediaSetDefinition","mediaSetView","assumedMarkings","mediaSetViewLocator","uploadProperties","inputDerivedDatasources","ds","i","buildDerivedDatasource","keys","datasource","index","linkDefinition","multiHopLink","steps","step","searchAround","linkTypeIdentifier","linkType","linkTypeSide","side","isLinkedProperties","values","derivedDefinition","linkedProperties","propertyTypeMapping","entries","sourceProp","targetProp","propertyType","aggregatedProperties","agg","buildAggregation","toString","derived","definition","limit","foreignProperty","innerDef"],"sources":["convertObject.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 OntologyIrDerivedPropertiesDefinition,\n OntologyIrDerivedPropertyAggregation,\n OntologyIrObjectTypeBlockDataV2,\n OntologyIrObjectTypeDatasource,\n OntologyIrObjectTypeDatasourceDefinition,\n OntologyIrPropertyType,\n} from \"@osdk/client.unstable\";\nimport {\n addNamespaceIfNone,\n buildDatasource,\n cleanAndValidateLinkTypeId,\n convertObjectStatus,\n} from \"../../api/defineOntology.js\";\nimport type { ObjectPropertyType } from \"../../api/object/ObjectPropertyType.js\";\nimport type { ObjectType } from \"../../api/object/ObjectType.js\";\nimport type {\n DerivedPropertyAggregation,\n ObjectTypeDatasourceDefinition_derived,\n} from \"../../api/object/ObjectTypeDatasourceDefinition.js\";\nimport { isExotic } from \"../../api/properties/PropertyTypeType.js\";\nimport { convertDatasourceDefinition } from \"./convertDatasourceDefinition.js\";\nimport { convertObjectPropertyType } from \"./convertObjectPropertyType.js\";\n\nexport function convertObject(\n objectType: ObjectType,\n): OntologyIrObjectTypeBlockDataV2 {\n const { derivedDatasources, derivedPropertyNames } =\n extractDerivedDatasources(objectType);\n\n const propertyDatasources: OntologyIrObjectTypeDatasource[] =\n (objectType.properties ?? [])\n .filter(prop => !derivedPropertyNames.includes(prop.apiName))\n .flatMap(prop => extractPropertyDatasource(prop, objectType.apiName));\n\n const classificationGroupMarkingNames = extractMarkingGroups(\n objectType.properties ?? [],\n \"CBAC\",\n );\n\n const mandatoryMarkingNames = extractMarkingGroups(\n objectType.properties ?? [],\n \"MANDATORY\",\n );\n\n const classificationInputGroup = classificationGroupMarkingNames.length > 0\n ? classificationGroupMarkingNames.reduce((l, r) => l + \"/\" + r)\n : undefined;\n\n const mandatoryInputGroup = mandatoryMarkingNames.length > 0\n ? mandatoryMarkingNames.reduce((l, r) => l + \"/\" + r)\n : undefined;\n\n const objectDatasource = buildDatasource(\n objectType.apiName,\n convertDatasourceDefinition(\n objectType,\n (objectType.properties ?? []).filter(prop =>\n !derivedPropertyNames.includes(prop.apiName)\n ),\n ),\n classificationInputGroup,\n mandatoryInputGroup,\n );\n\n const implementations = objectType.implementsInterfaces ?? [];\n\n return {\n objectType: {\n displayMetadata: {\n description: objectType.description,\n displayName: objectType.displayName,\n groupDisplayName: undefined,\n icon: {\n type: \"blueprint\",\n blueprint: objectType.icon ?? { locator: \"cube\", color: \"#2D72D2\" },\n },\n pluralDisplayName: objectType.pluralDisplayName,\n visibility: objectType.visibility ?? \"NORMAL\",\n },\n primaryKeys: [objectType.primaryKeyPropertyApiName],\n propertyTypes: Object.fromEntries(\n objectType.properties?.map<[string, OntologyIrPropertyType]>(\n val => [val.apiName, convertObjectPropertyType(val)],\n ) ?? [],\n ),\n titlePropertyTypeRid: objectType.titlePropertyApiName,\n apiName: objectType.apiName,\n status: convertObjectStatus(objectType.status),\n redacted: false,\n implementsInterfaces2: implementations.map(impl => ({\n interfaceTypeApiName: impl.implements.apiName,\n linksV2: {},\n propertiesV2: {},\n properties: Object.fromEntries(\n impl.propertyMapping.map(\n mapping => [addNamespaceIfNone(mapping.interfaceProperty), {\n propertyTypeRid: mapping.mapsTo,\n }],\n ),\n ),\n })),\n allImplementsInterfaces: {},\n },\n datasources: [\n ...propertyDatasources,\n ...derivedDatasources,\n objectDatasource,\n ],\n entityMetadata: {\n arePatchesEnabled: objectType.editsEnabled ?? false,\n aliases: objectType.aliases ?? [],\n },\n };\n}\n\n/**\n * Extracts marking group names of a specific type from object properties\n */\nexport function extractMarkingGroups(\n properties: ObjectPropertyType[],\n markingType: \"CBAC\" | \"MANDATORY\",\n): string[] {\n return properties\n .map(prop => {\n if (\n typeof prop.type === \"object\"\n && prop.type.type === \"marking\"\n && prop.type.markingType === markingType\n ) {\n return prop.type.markingInputGroupName;\n }\n return undefined;\n })\n .filter((val): val is string => val !== undefined);\n}\nexport function extractPropertyDatasource(\n property: ObjectPropertyType,\n objectTypeApiName: string,\n): OntologyIrObjectTypeDatasource[] {\n if (!isExotic(property.type)) {\n return [];\n }\n const identifier = objectTypeApiName + \".\" + property.apiName;\n switch (property.type as string) {\n case \"geotimeSeries\":\n const geotimeDefinition: OntologyIrObjectTypeDatasourceDefinition = {\n type: \"geotimeSeries\",\n geotimeSeries: {\n geotimeSeriesIntegrationRid: identifier,\n properties: [property.apiName],\n },\n };\n return [buildDatasource(property.apiName, geotimeDefinition)];\n case \"mediaReference\":\n const mediaSetDefinition: OntologyIrObjectTypeDatasourceDefinition = {\n type: \"mediaSetView\",\n mediaSetView: {\n assumedMarkings: [],\n mediaSetViewLocator: identifier,\n properties: [property.apiName],\n uploadProperties: [],\n },\n };\n return [buildDatasource(property.apiName, mediaSetDefinition)];\n default:\n return [];\n }\n}\n\nfunction extractDerivedDatasources(\n objectType: ObjectType,\n): {\n derivedDatasources: OntologyIrObjectTypeDatasource[];\n derivedPropertyNames: string[];\n} {\n const inputDerivedDatasources = (objectType.datasources ?? []).filter(ds =>\n ds.type === \"derived\"\n );\n const derivedDatasources = inputDerivedDatasources.map((ds, i) =>\n buildDerivedDatasource(ds, i, objectType.apiName)\n );\n const derivedPropertyNames = inputDerivedDatasources.flatMap(ds =>\n Object.keys(ds.propertyMapping)\n );\n return { derivedDatasources, derivedPropertyNames };\n}\n\nfunction buildDerivedDatasource(\n datasource: ObjectTypeDatasourceDefinition_derived,\n index: number,\n objectTypeApiName: string,\n): OntologyIrObjectTypeDatasource {\n const linkDefinition = {\n type: \"multiHopLink\",\n multiHopLink: {\n steps: datasource.linkDefinition.map(step => ({\n type: \"searchAround\",\n searchAround: {\n linkTypeIdentifier: {\n type: \"linkType\",\n linkType: cleanAndValidateLinkTypeId(step.linkType.apiName),\n },\n linkTypeSide: step.side ?? \"SOURCE\",\n },\n })),\n },\n };\n\n const isLinkedProperties =\n typeof Object.values(datasource.propertyMapping)[0] === \"string\";\n const derivedDefinition = isLinkedProperties\n ? {\n type: \"linkedProperties\",\n linkedProperties: {\n linkDefinition,\n propertyTypeMapping: Object.fromEntries(\n Object.entries(datasource.propertyMapping).map((\n [sourceProp, targetProp],\n ) => [sourceProp, {\n type: \"propertyType\",\n propertyType: targetProp,\n }]),\n ),\n },\n }\n : {\n type: \"aggregatedProperties\",\n aggregatedProperties: {\n linkDefinition,\n propertyTypeMapping: Object.fromEntries(\n Object.entries(datasource.propertyMapping).map((\n [sourceProp, agg],\n ) => [sourceProp, buildAggregation(agg)]),\n ),\n },\n };\n const fullDefinition: OntologyIrObjectTypeDatasourceDefinition = {\n type: \"derived\",\n derived: {\n definition: derivedDefinition as OntologyIrDerivedPropertiesDefinition,\n },\n };\n return buildDatasource(\n objectTypeApiName + \".derived.\" + index.toString(),\n fullDefinition,\n );\n}\n\nfunction buildAggregation(\n agg: DerivedPropertyAggregation,\n): OntologyIrDerivedPropertyAggregation {\n const type = agg.type;\n const limit = \"limit\" in agg ? agg.limit : undefined;\n const foreignProperty = \"property\" in agg ? agg.property : undefined;\n const innerDef: any = {};\n if (type !== \"count\") {\n if ([\"collectList\", \"collectSet\"].includes(type)) {\n innerDef[\"linkedProperty\"] = {\n type: \"propertyType\",\n propertyType: foreignProperty,\n };\n innerDef[\"limit\"] = limit;\n } else {\n innerDef[\"property\"] = {\n type: \"propertyType\",\n propertyType: foreignProperty,\n };\n }\n }\n return {\n type,\n [type]: innerDef,\n } as unknown as OntologyIrDerivedPropertyAggregation;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"convertObject.js","names":["buildDatasource","cleanAndValidateLinkTypeId","convertObjectStatus","isExotic","convertDatasourceDefinition","convertObjectPropertyType","convertObject","objectType","derivedDatasources","derivedPropertyNames","extractDerivedDatasources","propertyDatasources","properties","filter","prop","includes","apiName","flatMap","extractPropertyDatasource","classificationGroupMarkingNames","extractMarkingGroups","mandatoryMarkingNames","classificationInputGroup","length","reduce","l","r","undefined","mandatoryInputGroup","objectDatasource","implementations","implementsInterfaces","displayMetadata","description","displayName","groupDisplayName","icon","type","blueprint","locator","color","pluralDisplayName","visibility","primaryKeys","primaryKeyPropertyApiName","propertyTypes","Object","fromEntries","map","val","titlePropertyTypeRid","titlePropertyApiName","status","redacted","implementsInterfaces2","impl","interfaceTypeApiName","implements","linksV2","propertiesV2","propertyMapping","mappings","interfaceProperty","propertyTypeRid","mapsTo","allImplementsInterfaces","datasources","entityMetadata","arePatchesEnabled","editsEnabled","aliases","markingType","markingInputGroupName","property","objectTypeApiName","identifier","geotimeDefinition","geotimeSeries","geotimeSeriesIntegrationRid","mediaSetDefinition","mediaSetView","assumedMarkings","mediaSetViewLocator","uploadProperties","inputDerivedDatasources","ds","i","buildDerivedDatasource","keys","datasource","index","linkDefinition","multiHopLink","steps","step","searchAround","linkTypeIdentifier","linkType","linkTypeSide","side","isLinkedProperties","values","derivedDefinition","linkedProperties","propertyTypeMapping","entries","sourceProp","targetProp","propertyType","aggregatedProperties","agg","buildAggregation","toString","derived","definition","limit","foreignProperty","innerDef"],"sources":["convertObject.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 OntologyIrDerivedPropertiesDefinition,\n OntologyIrDerivedPropertyAggregation,\n OntologyIrObjectTypeBlockDataV2,\n OntologyIrObjectTypeDatasource,\n OntologyIrObjectTypeDatasourceDefinition,\n OntologyIrPropertyType,\n} from \"@osdk/client.unstable\";\nimport {\n buildDatasource,\n cleanAndValidateLinkTypeId,\n convertObjectStatus,\n} from \"../../api/defineOntology.js\";\nimport type { ObjectPropertyType } from \"../../api/object/ObjectPropertyType.js\";\nimport type { ObjectType } from \"../../api/object/ObjectType.js\";\nimport type {\n DerivedPropertyAggregation,\n ObjectTypeDatasourceDefinition_derived,\n} from \"../../api/object/ObjectTypeDatasourceDefinition.js\";\nimport { isExotic } from \"../../api/properties/PropertyTypeType.js\";\nimport { convertDatasourceDefinition } from \"./convertDatasourceDefinition.js\";\nimport { convertObjectPropertyType } from \"./convertObjectPropertyType.js\";\n\nexport function convertObject(\n objectType: ObjectType,\n): OntologyIrObjectTypeBlockDataV2 {\n const { derivedDatasources, derivedPropertyNames } =\n extractDerivedDatasources(objectType);\n\n const propertyDatasources: OntologyIrObjectTypeDatasource[] =\n (objectType.properties ?? [])\n .filter(prop => !derivedPropertyNames.includes(prop.apiName))\n .flatMap(prop => extractPropertyDatasource(prop, objectType.apiName));\n\n const classificationGroupMarkingNames = extractMarkingGroups(\n objectType.properties ?? [],\n \"CBAC\",\n );\n\n const mandatoryMarkingNames = extractMarkingGroups(\n objectType.properties ?? [],\n \"MANDATORY\",\n );\n\n const classificationInputGroup = classificationGroupMarkingNames.length > 0\n ? classificationGroupMarkingNames.reduce((l, r) => l + \"/\" + r)\n : undefined;\n\n const mandatoryInputGroup = mandatoryMarkingNames.length > 0\n ? mandatoryMarkingNames.reduce((l, r) => l + \"/\" + r)\n : undefined;\n\n const objectDatasource = buildDatasource(\n objectType.apiName,\n convertDatasourceDefinition(\n objectType,\n (objectType.properties ?? []).filter(prop =>\n !derivedPropertyNames.includes(prop.apiName)\n ),\n ),\n classificationInputGroup,\n mandatoryInputGroup,\n );\n\n const implementations = objectType.implementsInterfaces ?? [];\n\n return {\n objectType: {\n displayMetadata: {\n description: objectType.description,\n displayName: objectType.displayName,\n groupDisplayName: undefined,\n icon: {\n type: \"blueprint\",\n blueprint: objectType.icon ?? { locator: \"cube\", color: \"#2D72D2\" },\n },\n pluralDisplayName: objectType.pluralDisplayName,\n visibility: objectType.visibility ?? \"NORMAL\",\n },\n primaryKeys: [objectType.primaryKeyPropertyApiName],\n propertyTypes: Object.fromEntries(\n objectType.properties?.map<[string, OntologyIrPropertyType]>(\n val => [val.apiName, convertObjectPropertyType(val)],\n ) ?? [],\n ),\n titlePropertyTypeRid: objectType.titlePropertyApiName,\n apiName: objectType.apiName,\n status: convertObjectStatus(objectType.status),\n redacted: false,\n implementsInterfaces2: implementations.map(impl => ({\n interfaceTypeApiName: impl.implements.apiName,\n linksV2: {},\n propertiesV2: Object.fromEntries(impl.propertyMapping\n .map(\n mappings => [mappings.interfaceProperty, {\n type: \"propertyTypeRid\",\n propertyTypeRid: mappings.mapsTo,\n }],\n )),\n properties: {},\n })),\n allImplementsInterfaces: {},\n },\n datasources: [\n ...propertyDatasources,\n ...derivedDatasources,\n objectDatasource,\n ],\n entityMetadata: {\n arePatchesEnabled: objectType.editsEnabled ?? false,\n aliases: objectType.aliases ?? [],\n },\n };\n}\n\n/**\n * Extracts marking group names of a specific type from object properties\n */\nexport function extractMarkingGroups(\n properties: ObjectPropertyType[],\n markingType: \"CBAC\" | \"MANDATORY\",\n): string[] {\n return properties\n .map(prop => {\n if (\n typeof prop.type === \"object\"\n && prop.type.type === \"marking\"\n && prop.type.markingType === markingType\n ) {\n return prop.type.markingInputGroupName;\n }\n return undefined;\n })\n .filter((val): val is string => val !== undefined);\n}\nexport function extractPropertyDatasource(\n property: ObjectPropertyType,\n objectTypeApiName: string,\n): OntologyIrObjectTypeDatasource[] {\n if (!isExotic(property.type)) {\n return [];\n }\n const identifier = objectTypeApiName + \".\" + property.apiName;\n switch (property.type as string) {\n case \"geotimeSeries\":\n const geotimeDefinition: OntologyIrObjectTypeDatasourceDefinition = {\n type: \"geotimeSeries\",\n geotimeSeries: {\n geotimeSeriesIntegrationRid: identifier,\n properties: [property.apiName],\n },\n };\n return [buildDatasource(property.apiName, geotimeDefinition)];\n case \"mediaReference\":\n const mediaSetDefinition: OntologyIrObjectTypeDatasourceDefinition = {\n type: \"mediaSetView\",\n mediaSetView: {\n assumedMarkings: [],\n mediaSetViewLocator: identifier,\n properties: [property.apiName],\n uploadProperties: [],\n },\n };\n return [buildDatasource(property.apiName, mediaSetDefinition)];\n default:\n return [];\n }\n}\n\nfunction extractDerivedDatasources(\n objectType: ObjectType,\n): {\n derivedDatasources: OntologyIrObjectTypeDatasource[];\n derivedPropertyNames: string[];\n} {\n const inputDerivedDatasources = (objectType.datasources ?? []).filter(ds =>\n ds.type === \"derived\"\n );\n const derivedDatasources = inputDerivedDatasources.map((ds, i) =>\n buildDerivedDatasource(ds, i, objectType.apiName)\n );\n const derivedPropertyNames = inputDerivedDatasources.flatMap(ds =>\n Object.keys(ds.propertyMapping)\n );\n return { derivedDatasources, derivedPropertyNames };\n}\n\nfunction buildDerivedDatasource(\n datasource: ObjectTypeDatasourceDefinition_derived,\n index: number,\n objectTypeApiName: string,\n): OntologyIrObjectTypeDatasource {\n const linkDefinition = {\n type: \"multiHopLink\",\n multiHopLink: {\n steps: datasource.linkDefinition.map(step => ({\n type: \"searchAround\",\n searchAround: {\n linkTypeIdentifier: {\n type: \"linkType\",\n linkType: cleanAndValidateLinkTypeId(step.linkType.apiName),\n },\n linkTypeSide: step.side ?? \"SOURCE\",\n },\n })),\n },\n };\n\n const isLinkedProperties =\n typeof Object.values(datasource.propertyMapping)[0] === \"string\";\n const derivedDefinition = isLinkedProperties\n ? {\n type: \"linkedProperties\",\n linkedProperties: {\n linkDefinition,\n propertyTypeMapping: Object.fromEntries(\n Object.entries(datasource.propertyMapping).map((\n [sourceProp, targetProp],\n ) => [sourceProp, {\n type: \"propertyType\",\n propertyType: targetProp,\n }]),\n ),\n },\n }\n : {\n type: \"aggregatedProperties\",\n aggregatedProperties: {\n linkDefinition,\n propertyTypeMapping: Object.fromEntries(\n Object.entries(datasource.propertyMapping).map((\n [sourceProp, agg],\n ) => [sourceProp, buildAggregation(agg)]),\n ),\n },\n };\n const fullDefinition: OntologyIrObjectTypeDatasourceDefinition = {\n type: \"derived\",\n derived: {\n definition: derivedDefinition as OntologyIrDerivedPropertiesDefinition,\n },\n };\n return buildDatasource(\n objectTypeApiName + \".derived.\" + index.toString(),\n fullDefinition,\n );\n}\n\nfunction buildAggregation(\n agg: DerivedPropertyAggregation,\n): OntologyIrDerivedPropertyAggregation {\n const type = agg.type;\n const limit = \"limit\" in agg ? agg.limit : undefined;\n const foreignProperty = \"property\" in agg ? agg.property : undefined;\n const innerDef: any = {};\n if (type !== \"count\") {\n if ([\"collectList\", \"collectSet\"].includes(type)) {\n innerDef[\"linkedProperty\"] = {\n type: \"propertyType\",\n propertyType: foreignProperty,\n };\n innerDef[\"limit\"] = limit;\n } else {\n innerDef[\"property\"] = {\n type: \"propertyType\",\n propertyType: foreignProperty,\n };\n }\n }\n return {\n type,\n [type]: innerDef,\n } as unknown as OntologyIrDerivedPropertyAggregation;\n}\n"],"mappings":"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","ignoreList":[]}
|