@osdk/maker 0.14.0-beta.3 → 0.14.0-beta.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/build/browser/api/defineAction.js +130 -413
  3. package/build/browser/api/defineAction.js.map +1 -1
  4. package/build/browser/api/defineCreateInterfaceObjectAction.js +77 -0
  5. package/build/browser/api/defineCreateInterfaceObjectAction.js.map +1 -0
  6. package/build/browser/api/defineCreateObjectAction.js +76 -0
  7. package/build/browser/api/defineCreateObjectAction.js.map +1 -0
  8. package/build/browser/api/defineCreateOrModifyObjectAction.js +92 -0
  9. package/build/browser/api/defineCreateOrModifyObjectAction.js.map +1 -0
  10. package/build/browser/api/defineDeleteObjectAction.js +56 -0
  11. package/build/browser/api/defineDeleteObjectAction.js.map +1 -0
  12. package/build/browser/api/defineModifyInterfaceObjectAction.js +76 -0
  13. package/build/browser/api/defineModifyInterfaceObjectAction.js.map +1 -0
  14. package/build/browser/api/defineModifyObjectAction.js +91 -0
  15. package/build/browser/api/defineModifyObjectAction.js.map +1 -0
  16. package/build/browser/api/test/actions.test.js +11181 -0
  17. package/build/browser/api/test/actions.test.js.map +1 -0
  18. package/build/browser/api/test/interfaces.test.js +924 -0
  19. package/build/browser/api/test/interfaces.test.js.map +1 -0
  20. package/build/browser/api/test/links.test.js +1974 -0
  21. package/build/browser/api/test/links.test.js.map +1 -0
  22. package/build/browser/api/{markingconstraint.test.js → test/markingconstraint.test.js} +28 -2
  23. package/build/browser/api/test/markingconstraint.test.js.map +1 -0
  24. package/build/browser/api/test/misc.test.js +1058 -0
  25. package/build/browser/api/test/misc.test.js.map +1 -0
  26. package/build/browser/api/{objectStatus.test.js → test/objectStatus.test.js} +2 -2
  27. package/build/browser/api/test/objectStatus.test.js.map +1 -0
  28. package/build/browser/api/test/objects.test.js +1494 -0
  29. package/build/browser/api/test/objects.test.js.map +1 -0
  30. package/build/browser/api/test/spt.test.js +387 -0
  31. package/build/browser/api/test/spt.test.js.map +1 -0
  32. package/build/browser/api/test/valueTypes.test.js +156 -0
  33. package/build/browser/api/test/valueTypes.test.js.map +1 -0
  34. package/build/browser/cli/main.js +1 -1
  35. package/build/browser/index.js +7 -1
  36. package/build/browser/index.js.map +1 -1
  37. package/build/cjs/index.cjs +593 -510
  38. package/build/cjs/index.cjs.map +1 -1
  39. package/build/cjs/index.d.cts +31 -14
  40. package/build/esm/api/defineAction.js +130 -413
  41. package/build/esm/api/defineAction.js.map +1 -1
  42. package/build/esm/api/defineCreateInterfaceObjectAction.js +77 -0
  43. package/build/esm/api/defineCreateInterfaceObjectAction.js.map +1 -0
  44. package/build/esm/api/defineCreateObjectAction.js +76 -0
  45. package/build/esm/api/defineCreateObjectAction.js.map +1 -0
  46. package/build/esm/api/defineCreateOrModifyObjectAction.js +92 -0
  47. package/build/esm/api/defineCreateOrModifyObjectAction.js.map +1 -0
  48. package/build/esm/api/defineDeleteObjectAction.js +56 -0
  49. package/build/esm/api/defineDeleteObjectAction.js.map +1 -0
  50. package/build/esm/api/defineModifyInterfaceObjectAction.js +76 -0
  51. package/build/esm/api/defineModifyInterfaceObjectAction.js.map +1 -0
  52. package/build/esm/api/defineModifyObjectAction.js +91 -0
  53. package/build/esm/api/defineModifyObjectAction.js.map +1 -0
  54. package/build/esm/api/test/actions.test.js +11181 -0
  55. package/build/esm/api/test/actions.test.js.map +1 -0
  56. package/build/esm/api/test/interfaces.test.js +924 -0
  57. package/build/esm/api/test/interfaces.test.js.map +1 -0
  58. package/build/esm/api/test/links.test.js +1974 -0
  59. package/build/esm/api/test/links.test.js.map +1 -0
  60. package/build/esm/api/{markingconstraint.test.js → test/markingconstraint.test.js} +28 -2
  61. package/build/esm/api/test/markingconstraint.test.js.map +1 -0
  62. package/build/esm/api/test/misc.test.js +1058 -0
  63. package/build/esm/api/test/misc.test.js.map +1 -0
  64. package/build/esm/api/{objectStatus.test.js → test/objectStatus.test.js} +2 -2
  65. package/build/esm/api/test/objectStatus.test.js.map +1 -0
  66. package/build/esm/api/test/objects.test.js +1494 -0
  67. package/build/esm/api/test/objects.test.js.map +1 -0
  68. package/build/esm/api/test/spt.test.js +387 -0
  69. package/build/esm/api/test/spt.test.js.map +1 -0
  70. package/build/esm/api/test/valueTypes.test.js +156 -0
  71. package/build/esm/api/test/valueTypes.test.js.map +1 -0
  72. package/build/esm/cli/main.js +1 -1
  73. package/build/esm/index.js +7 -1
  74. package/build/esm/index.js.map +1 -1
  75. package/build/types/api/defineAction.d.ts +27 -7
  76. package/build/types/api/defineAction.d.ts.map +1 -1
  77. package/build/types/api/defineCreateInterfaceObjectAction.d.ts +3 -0
  78. package/build/types/api/defineCreateInterfaceObjectAction.d.ts.map +1 -0
  79. package/build/types/api/defineCreateObjectAction.d.ts +3 -0
  80. package/build/types/api/defineCreateObjectAction.d.ts.map +1 -0
  81. package/build/types/api/defineCreateOrModifyObjectAction.d.ts +3 -0
  82. package/build/types/api/defineCreateOrModifyObjectAction.d.ts.map +1 -0
  83. package/build/types/api/defineDeleteObjectAction.d.ts +3 -0
  84. package/build/types/api/defineDeleteObjectAction.d.ts.map +1 -0
  85. package/build/types/api/defineModifyInterfaceObjectAction.d.ts +3 -0
  86. package/build/types/api/defineModifyInterfaceObjectAction.d.ts.map +1 -0
  87. package/build/types/api/defineModifyObjectAction.d.ts +3 -0
  88. package/build/types/api/defineModifyObjectAction.d.ts.map +1 -0
  89. package/build/types/api/test/actions.test.d.ts.map +1 -0
  90. package/build/types/api/test/interfaces.test.d.ts.map +1 -0
  91. package/build/types/api/test/links.test.d.ts.map +1 -0
  92. package/build/types/api/test/markingconstraint.test.d.ts +1 -0
  93. package/build/types/api/test/markingconstraint.test.d.ts.map +1 -0
  94. package/build/types/api/test/misc.test.d.ts +1 -0
  95. package/build/types/api/test/misc.test.d.ts.map +1 -0
  96. package/build/types/api/test/objectStatus.test.d.ts +1 -0
  97. package/build/types/api/test/objectStatus.test.d.ts.map +1 -0
  98. package/build/types/api/test/objects.test.d.ts +1 -0
  99. package/build/types/api/test/objects.test.d.ts.map +1 -0
  100. package/build/types/api/test/spt.test.d.ts +1 -0
  101. package/build/types/api/test/spt.test.d.ts.map +1 -0
  102. package/build/types/api/test/valueTypes.test.d.ts +1 -0
  103. package/build/types/api/test/valueTypes.test.d.ts.map +1 -0
  104. package/build/types/index.d.ts +7 -1
  105. package/build/types/index.d.ts.map +1 -1
  106. package/package.json +5 -5
  107. package/build/browser/api/markingconstraint.test.js.map +0 -1
  108. package/build/browser/api/objectStatus.test.js.map +0 -1
  109. package/build/browser/api/overall.test.js +0 -14002
  110. package/build/browser/api/overall.test.js.map +0 -1
  111. package/build/esm/api/markingconstraint.test.js.map +0 -1
  112. package/build/esm/api/objectStatus.test.js.map +0 -1
  113. package/build/esm/api/overall.test.js +0 -14002
  114. package/build/esm/api/overall.test.js.map +0 -1
  115. package/build/types/api/markingconstraint.test.d.ts.map +0 -1
  116. package/build/types/api/objectStatus.test.d.ts.map +0 -1
  117. package/build/types/api/overall.test.d.ts.map +0 -1
  118. /package/build/types/api/{markingconstraint.test.d.ts → test/actions.test.d.ts} +0 -0
  119. /package/build/types/api/{objectStatus.test.d.ts → test/interfaces.test.d.ts} +0 -0
  120. /package/build/types/api/{overall.test.d.ts → test/links.test.d.ts} +0 -0
@@ -0,0 +1,1974 @@
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 { beforeEach, describe, expect, it } from "vitest";
18
+ import { defineInterface } from "../defineInterface.js";
19
+ import { defineInterfaceLinkConstraint } from "../defineInterfaceLinkConstraint.js";
20
+ import { defineLink } from "../defineLink.js";
21
+ import { defineObject } from "../defineObject.js";
22
+ import { defineOntology, dumpOntologyFullMetadata } from "../defineOntology.js";
23
+ describe("Link Types", () => {
24
+ beforeEach(async () => {
25
+ await defineOntology("com.palantir.", () => {}, "/tmp/");
26
+ });
27
+ describe("Object Links", () => {
28
+ it("One To Many Links are properly defined", () => {
29
+ const object = defineObject({
30
+ titlePropertyApiName: "bar",
31
+ displayName: "Foo",
32
+ pluralDisplayName: "Foo",
33
+ apiName: "foo",
34
+ primaryKeyPropertyApiName: "bar",
35
+ properties: {
36
+ "bar": {
37
+ type: "string"
38
+ }
39
+ }
40
+ });
41
+ const otherObject = defineObject({
42
+ titlePropertyApiName: "fizz",
43
+ displayName: "Fizz",
44
+ pluralDisplayName: "Fizz",
45
+ apiName: "fizz",
46
+ primaryKeyPropertyApiName: "fizz",
47
+ properties: {
48
+ "fizz": {
49
+ type: "string"
50
+ },
51
+ "bar": {
52
+ type: "string"
53
+ }
54
+ }
55
+ });
56
+ defineLink({
57
+ apiName: "fizzToFoo",
58
+ one: {
59
+ object: object,
60
+ metadata: {
61
+ apiName: "fizzes",
62
+ displayName: "Foo",
63
+ pluralDisplayName: "Foos"
64
+ }
65
+ },
66
+ toMany: {
67
+ object: otherObject,
68
+ metadata: {
69
+ displayName: "Fizz",
70
+ pluralDisplayName: "Fizzes",
71
+ apiName: "foos"
72
+ }
73
+ },
74
+ manyForeignKeyProperty: "bar"
75
+ });
76
+ expect(dumpOntologyFullMetadata().ontology).toMatchInlineSnapshot(`
77
+ {
78
+ "actionTypes": {},
79
+ "blockPermissionInformation": {
80
+ "actionTypes": {},
81
+ "linkTypes": {},
82
+ "objectTypes": {},
83
+ },
84
+ "interfaceTypes": {},
85
+ "linkTypes": {
86
+ "fizz-to-foo": {
87
+ "datasources": [],
88
+ "entityMetadata": {
89
+ "arePatchesEnabled": false,
90
+ },
91
+ "linkType": {
92
+ "definition": {
93
+ "oneToMany": {
94
+ "cardinalityHint": "ONE_TO_MANY",
95
+ "manyToOneLinkMetadata": {
96
+ "apiName": "foos",
97
+ "displayMetadata": {
98
+ "displayName": "Fizz",
99
+ "groupDisplayName": "",
100
+ "pluralDisplayName": "Fizzes",
101
+ "visibility": "NORMAL",
102
+ },
103
+ "typeClasses": [],
104
+ },
105
+ "objectTypeRidManySide": "com.palantir.fizz",
106
+ "objectTypeRidOneSide": "com.palantir.foo",
107
+ "oneSidePrimaryKeyToManySidePropertyMapping": [
108
+ {
109
+ "from": {
110
+ "apiName": "bar",
111
+ "object": "com.palantir.foo",
112
+ },
113
+ "to": {
114
+ "apiName": "bar",
115
+ "object": "com.palantir.fizz",
116
+ },
117
+ },
118
+ ],
119
+ "oneToManyLinkMetadata": {
120
+ "apiName": "fizzes",
121
+ "displayMetadata": {
122
+ "displayName": "Foo",
123
+ "groupDisplayName": "",
124
+ "pluralDisplayName": "Foos",
125
+ "visibility": "NORMAL",
126
+ },
127
+ "typeClasses": [],
128
+ },
129
+ },
130
+ "type": "oneToMany",
131
+ },
132
+ "id": "fizz-to-foo",
133
+ "redacted": false,
134
+ "status": {
135
+ "active": {},
136
+ "type": "active",
137
+ },
138
+ },
139
+ },
140
+ },
141
+ "objectTypes": {
142
+ "com.palantir.fizz": {
143
+ "datasources": [
144
+ {
145
+ "datasource": {
146
+ "datasetV2": {
147
+ "datasetRid": "com.palantir.fizz",
148
+ "propertyMapping": {
149
+ "bar": {
150
+ "column": "bar",
151
+ "type": "column",
152
+ },
153
+ "fizz": {
154
+ "column": "fizz",
155
+ "type": "column",
156
+ },
157
+ },
158
+ },
159
+ "type": "datasetV2",
160
+ },
161
+ "datasourceName": "com.palantir.fizz",
162
+ "editsConfiguration": {
163
+ "onlyAllowPrivilegedEdits": false,
164
+ },
165
+ "redacted": false,
166
+ },
167
+ ],
168
+ "entityMetadata": {
169
+ "arePatchesEnabled": false,
170
+ },
171
+ "objectType": {
172
+ "allImplementsInterfaces": {},
173
+ "apiName": "com.palantir.fizz",
174
+ "displayMetadata": {
175
+ "description": undefined,
176
+ "displayName": "Fizz",
177
+ "groupDisplayName": undefined,
178
+ "icon": {
179
+ "blueprint": {
180
+ "color": "#2D72D2",
181
+ "locator": "cube",
182
+ },
183
+ "type": "blueprint",
184
+ },
185
+ "pluralDisplayName": "Fizz",
186
+ "visibility": "NORMAL",
187
+ },
188
+ "implementsInterfaces2": [],
189
+ "primaryKeys": [
190
+ "fizz",
191
+ ],
192
+ "propertyTypes": {
193
+ "bar": {
194
+ "apiName": "bar",
195
+ "baseFormatter": undefined,
196
+ "dataConstraints": undefined,
197
+ "displayMetadata": {
198
+ "description": undefined,
199
+ "displayName": "Bar",
200
+ "visibility": "NORMAL",
201
+ },
202
+ "indexedForSearch": true,
203
+ "inlineAction": undefined,
204
+ "ruleSetBinding": undefined,
205
+ "sharedPropertyTypeApiName": undefined,
206
+ "sharedPropertyTypeRid": undefined,
207
+ "status": {
208
+ "active": {},
209
+ "type": "active",
210
+ },
211
+ "type": {
212
+ "string": {
213
+ "analyzerOverride": undefined,
214
+ "enableAsciiFolding": undefined,
215
+ "isLongText": false,
216
+ "supportsEfficientLeadingWildcard": false,
217
+ "supportsExactMatching": true,
218
+ },
219
+ "type": "string",
220
+ },
221
+ "typeClasses": [
222
+ {
223
+ "kind": "render_hint",
224
+ "name": "SELECTABLE",
225
+ },
226
+ {
227
+ "kind": "render_hint",
228
+ "name": "SORTABLE",
229
+ },
230
+ ],
231
+ "valueType": undefined,
232
+ },
233
+ "fizz": {
234
+ "apiName": "fizz",
235
+ "baseFormatter": undefined,
236
+ "dataConstraints": undefined,
237
+ "displayMetadata": {
238
+ "description": undefined,
239
+ "displayName": "Fizz",
240
+ "visibility": "NORMAL",
241
+ },
242
+ "indexedForSearch": true,
243
+ "inlineAction": undefined,
244
+ "ruleSetBinding": undefined,
245
+ "sharedPropertyTypeApiName": undefined,
246
+ "sharedPropertyTypeRid": undefined,
247
+ "status": {
248
+ "active": {},
249
+ "type": "active",
250
+ },
251
+ "type": {
252
+ "string": {
253
+ "analyzerOverride": undefined,
254
+ "enableAsciiFolding": undefined,
255
+ "isLongText": false,
256
+ "supportsEfficientLeadingWildcard": false,
257
+ "supportsExactMatching": true,
258
+ },
259
+ "type": "string",
260
+ },
261
+ "typeClasses": [
262
+ {
263
+ "kind": "render_hint",
264
+ "name": "SELECTABLE",
265
+ },
266
+ {
267
+ "kind": "render_hint",
268
+ "name": "SORTABLE",
269
+ },
270
+ ],
271
+ "valueType": undefined,
272
+ },
273
+ },
274
+ "redacted": false,
275
+ "status": {
276
+ "active": {},
277
+ "type": "active",
278
+ },
279
+ "titlePropertyTypeRid": "fizz",
280
+ },
281
+ },
282
+ "com.palantir.foo": {
283
+ "datasources": [
284
+ {
285
+ "datasource": {
286
+ "datasetV2": {
287
+ "datasetRid": "com.palantir.foo",
288
+ "propertyMapping": {
289
+ "bar": {
290
+ "column": "bar",
291
+ "type": "column",
292
+ },
293
+ },
294
+ },
295
+ "type": "datasetV2",
296
+ },
297
+ "datasourceName": "com.palantir.foo",
298
+ "editsConfiguration": {
299
+ "onlyAllowPrivilegedEdits": false,
300
+ },
301
+ "redacted": false,
302
+ },
303
+ ],
304
+ "entityMetadata": {
305
+ "arePatchesEnabled": false,
306
+ },
307
+ "objectType": {
308
+ "allImplementsInterfaces": {},
309
+ "apiName": "com.palantir.foo",
310
+ "displayMetadata": {
311
+ "description": undefined,
312
+ "displayName": "Foo",
313
+ "groupDisplayName": undefined,
314
+ "icon": {
315
+ "blueprint": {
316
+ "color": "#2D72D2",
317
+ "locator": "cube",
318
+ },
319
+ "type": "blueprint",
320
+ },
321
+ "pluralDisplayName": "Foo",
322
+ "visibility": "NORMAL",
323
+ },
324
+ "implementsInterfaces2": [],
325
+ "primaryKeys": [
326
+ "bar",
327
+ ],
328
+ "propertyTypes": {
329
+ "bar": {
330
+ "apiName": "bar",
331
+ "baseFormatter": undefined,
332
+ "dataConstraints": undefined,
333
+ "displayMetadata": {
334
+ "description": undefined,
335
+ "displayName": "Bar",
336
+ "visibility": "NORMAL",
337
+ },
338
+ "indexedForSearch": true,
339
+ "inlineAction": undefined,
340
+ "ruleSetBinding": undefined,
341
+ "sharedPropertyTypeApiName": undefined,
342
+ "sharedPropertyTypeRid": undefined,
343
+ "status": {
344
+ "active": {},
345
+ "type": "active",
346
+ },
347
+ "type": {
348
+ "string": {
349
+ "analyzerOverride": undefined,
350
+ "enableAsciiFolding": undefined,
351
+ "isLongText": false,
352
+ "supportsEfficientLeadingWildcard": false,
353
+ "supportsExactMatching": true,
354
+ },
355
+ "type": "string",
356
+ },
357
+ "typeClasses": [
358
+ {
359
+ "kind": "render_hint",
360
+ "name": "SELECTABLE",
361
+ },
362
+ {
363
+ "kind": "render_hint",
364
+ "name": "SORTABLE",
365
+ },
366
+ ],
367
+ "valueType": undefined,
368
+ },
369
+ },
370
+ "redacted": false,
371
+ "status": {
372
+ "active": {},
373
+ "type": "active",
374
+ },
375
+ "titlePropertyTypeRid": "bar",
376
+ },
377
+ },
378
+ },
379
+ "sharedPropertyTypes": {},
380
+ }
381
+ `);
382
+ });
383
+ it("Many To Many Links are properly defined", () => {
384
+ const object = defineObject({
385
+ titlePropertyApiName: "bar",
386
+ displayName: "Foo",
387
+ pluralDisplayName: "Foo",
388
+ apiName: "foo",
389
+ primaryKeyPropertyApiName: "bar",
390
+ properties: {
391
+ "bar": {
392
+ type: "string"
393
+ }
394
+ }
395
+ });
396
+ const otherObject = defineObject({
397
+ titlePropertyApiName: "fizz",
398
+ displayName: "Fizz",
399
+ pluralDisplayName: "Fizz",
400
+ apiName: "fizz",
401
+ primaryKeyPropertyApiName: "fizz",
402
+ properties: {
403
+ "fizz": {
404
+ type: "string"
405
+ },
406
+ "bar": {
407
+ type: "string"
408
+ }
409
+ }
410
+ });
411
+ defineLink({
412
+ apiName: "fizzToFoo",
413
+ many: {
414
+ object: object,
415
+ metadata: {
416
+ displayName: "Foo",
417
+ pluralDisplayName: "Foos",
418
+ apiName: "fizzes"
419
+ }
420
+ },
421
+ toMany: {
422
+ object: otherObject,
423
+ metadata: {
424
+ displayName: "Fizz",
425
+ pluralDisplayName: "Fizzes",
426
+ apiName: "foos"
427
+ }
428
+ }
429
+ });
430
+ expect(dumpOntologyFullMetadata().ontology).toMatchInlineSnapshot(`
431
+ {
432
+ "actionTypes": {},
433
+ "blockPermissionInformation": {
434
+ "actionTypes": {},
435
+ "linkTypes": {},
436
+ "objectTypes": {},
437
+ },
438
+ "interfaceTypes": {},
439
+ "linkTypes": {
440
+ "fizz-to-foo": {
441
+ "datasources": [
442
+ {
443
+ "datasource": {
444
+ "dataset": {
445
+ "datasetRid": "link-fizzToFoo",
446
+ "objectTypeAPrimaryKeyMapping": [
447
+ {
448
+ "column": "bar",
449
+ "property": {
450
+ "apiName": "bar",
451
+ "object": "com.palantir.foo",
452
+ },
453
+ },
454
+ ],
455
+ "objectTypeBPrimaryKeyMapping": [
456
+ {
457
+ "column": "fizz",
458
+ "property": {
459
+ "apiName": "fizz",
460
+ "object": "com.palantir.fizz",
461
+ },
462
+ },
463
+ ],
464
+ "writebackDatasetRid": undefined,
465
+ },
466
+ "type": "dataset",
467
+ },
468
+ "datasourceName": "fizzToFoo",
469
+ "editsConfiguration": {
470
+ "onlyAllowPrivilegedEdits": false,
471
+ },
472
+ "redacted": undefined,
473
+ },
474
+ ],
475
+ "entityMetadata": {
476
+ "arePatchesEnabled": false,
477
+ },
478
+ "linkType": {
479
+ "definition": {
480
+ "manyToMany": {
481
+ "objectTypeAPrimaryKeyPropertyMapping": [
482
+ {
483
+ "from": {
484
+ "apiName": "bar",
485
+ "object": "com.palantir.foo",
486
+ },
487
+ "to": {
488
+ "apiName": "bar",
489
+ "object": "com.palantir.foo",
490
+ },
491
+ },
492
+ ],
493
+ "objectTypeAToBLinkMetadata": {
494
+ "apiName": "fizzes",
495
+ "displayMetadata": {
496
+ "displayName": "Foo",
497
+ "groupDisplayName": "",
498
+ "pluralDisplayName": "Foos",
499
+ "visibility": "NORMAL",
500
+ },
501
+ "typeClasses": [],
502
+ },
503
+ "objectTypeBPrimaryKeyPropertyMapping": [
504
+ {
505
+ "from": {
506
+ "apiName": "fizz",
507
+ "object": "com.palantir.fizz",
508
+ },
509
+ "to": {
510
+ "apiName": "fizz",
511
+ "object": "com.palantir.fizz",
512
+ },
513
+ },
514
+ ],
515
+ "objectTypeBToALinkMetadata": {
516
+ "apiName": "foos",
517
+ "displayMetadata": {
518
+ "displayName": "Fizz",
519
+ "groupDisplayName": "",
520
+ "pluralDisplayName": "Fizzes",
521
+ "visibility": "NORMAL",
522
+ },
523
+ "typeClasses": [],
524
+ },
525
+ "objectTypeRidA": "com.palantir.foo",
526
+ "objectTypeRidB": "com.palantir.fizz",
527
+ "peeringMetadata": undefined,
528
+ },
529
+ "type": "manyToMany",
530
+ },
531
+ "id": "fizz-to-foo",
532
+ "redacted": false,
533
+ "status": {
534
+ "active": {},
535
+ "type": "active",
536
+ },
537
+ },
538
+ },
539
+ },
540
+ "objectTypes": {
541
+ "com.palantir.fizz": {
542
+ "datasources": [
543
+ {
544
+ "datasource": {
545
+ "datasetV2": {
546
+ "datasetRid": "com.palantir.fizz",
547
+ "propertyMapping": {
548
+ "bar": {
549
+ "column": "bar",
550
+ "type": "column",
551
+ },
552
+ "fizz": {
553
+ "column": "fizz",
554
+ "type": "column",
555
+ },
556
+ },
557
+ },
558
+ "type": "datasetV2",
559
+ },
560
+ "datasourceName": "com.palantir.fizz",
561
+ "editsConfiguration": {
562
+ "onlyAllowPrivilegedEdits": false,
563
+ },
564
+ "redacted": false,
565
+ },
566
+ ],
567
+ "entityMetadata": {
568
+ "arePatchesEnabled": false,
569
+ },
570
+ "objectType": {
571
+ "allImplementsInterfaces": {},
572
+ "apiName": "com.palantir.fizz",
573
+ "displayMetadata": {
574
+ "description": undefined,
575
+ "displayName": "Fizz",
576
+ "groupDisplayName": undefined,
577
+ "icon": {
578
+ "blueprint": {
579
+ "color": "#2D72D2",
580
+ "locator": "cube",
581
+ },
582
+ "type": "blueprint",
583
+ },
584
+ "pluralDisplayName": "Fizz",
585
+ "visibility": "NORMAL",
586
+ },
587
+ "implementsInterfaces2": [],
588
+ "primaryKeys": [
589
+ "fizz",
590
+ ],
591
+ "propertyTypes": {
592
+ "bar": {
593
+ "apiName": "bar",
594
+ "baseFormatter": undefined,
595
+ "dataConstraints": undefined,
596
+ "displayMetadata": {
597
+ "description": undefined,
598
+ "displayName": "Bar",
599
+ "visibility": "NORMAL",
600
+ },
601
+ "indexedForSearch": true,
602
+ "inlineAction": undefined,
603
+ "ruleSetBinding": undefined,
604
+ "sharedPropertyTypeApiName": undefined,
605
+ "sharedPropertyTypeRid": undefined,
606
+ "status": {
607
+ "active": {},
608
+ "type": "active",
609
+ },
610
+ "type": {
611
+ "string": {
612
+ "analyzerOverride": undefined,
613
+ "enableAsciiFolding": undefined,
614
+ "isLongText": false,
615
+ "supportsEfficientLeadingWildcard": false,
616
+ "supportsExactMatching": true,
617
+ },
618
+ "type": "string",
619
+ },
620
+ "typeClasses": [
621
+ {
622
+ "kind": "render_hint",
623
+ "name": "SELECTABLE",
624
+ },
625
+ {
626
+ "kind": "render_hint",
627
+ "name": "SORTABLE",
628
+ },
629
+ ],
630
+ "valueType": undefined,
631
+ },
632
+ "fizz": {
633
+ "apiName": "fizz",
634
+ "baseFormatter": undefined,
635
+ "dataConstraints": undefined,
636
+ "displayMetadata": {
637
+ "description": undefined,
638
+ "displayName": "Fizz",
639
+ "visibility": "NORMAL",
640
+ },
641
+ "indexedForSearch": true,
642
+ "inlineAction": undefined,
643
+ "ruleSetBinding": undefined,
644
+ "sharedPropertyTypeApiName": undefined,
645
+ "sharedPropertyTypeRid": undefined,
646
+ "status": {
647
+ "active": {},
648
+ "type": "active",
649
+ },
650
+ "type": {
651
+ "string": {
652
+ "analyzerOverride": undefined,
653
+ "enableAsciiFolding": undefined,
654
+ "isLongText": false,
655
+ "supportsEfficientLeadingWildcard": false,
656
+ "supportsExactMatching": true,
657
+ },
658
+ "type": "string",
659
+ },
660
+ "typeClasses": [
661
+ {
662
+ "kind": "render_hint",
663
+ "name": "SELECTABLE",
664
+ },
665
+ {
666
+ "kind": "render_hint",
667
+ "name": "SORTABLE",
668
+ },
669
+ ],
670
+ "valueType": undefined,
671
+ },
672
+ },
673
+ "redacted": false,
674
+ "status": {
675
+ "active": {},
676
+ "type": "active",
677
+ },
678
+ "titlePropertyTypeRid": "fizz",
679
+ },
680
+ },
681
+ "com.palantir.foo": {
682
+ "datasources": [
683
+ {
684
+ "datasource": {
685
+ "datasetV2": {
686
+ "datasetRid": "com.palantir.foo",
687
+ "propertyMapping": {
688
+ "bar": {
689
+ "column": "bar",
690
+ "type": "column",
691
+ },
692
+ },
693
+ },
694
+ "type": "datasetV2",
695
+ },
696
+ "datasourceName": "com.palantir.foo",
697
+ "editsConfiguration": {
698
+ "onlyAllowPrivilegedEdits": false,
699
+ },
700
+ "redacted": false,
701
+ },
702
+ ],
703
+ "entityMetadata": {
704
+ "arePatchesEnabled": false,
705
+ },
706
+ "objectType": {
707
+ "allImplementsInterfaces": {},
708
+ "apiName": "com.palantir.foo",
709
+ "displayMetadata": {
710
+ "description": undefined,
711
+ "displayName": "Foo",
712
+ "groupDisplayName": undefined,
713
+ "icon": {
714
+ "blueprint": {
715
+ "color": "#2D72D2",
716
+ "locator": "cube",
717
+ },
718
+ "type": "blueprint",
719
+ },
720
+ "pluralDisplayName": "Foo",
721
+ "visibility": "NORMAL",
722
+ },
723
+ "implementsInterfaces2": [],
724
+ "primaryKeys": [
725
+ "bar",
726
+ ],
727
+ "propertyTypes": {
728
+ "bar": {
729
+ "apiName": "bar",
730
+ "baseFormatter": undefined,
731
+ "dataConstraints": undefined,
732
+ "displayMetadata": {
733
+ "description": undefined,
734
+ "displayName": "Bar",
735
+ "visibility": "NORMAL",
736
+ },
737
+ "indexedForSearch": true,
738
+ "inlineAction": undefined,
739
+ "ruleSetBinding": undefined,
740
+ "sharedPropertyTypeApiName": undefined,
741
+ "sharedPropertyTypeRid": undefined,
742
+ "status": {
743
+ "active": {},
744
+ "type": "active",
745
+ },
746
+ "type": {
747
+ "string": {
748
+ "analyzerOverride": undefined,
749
+ "enableAsciiFolding": undefined,
750
+ "isLongText": false,
751
+ "supportsEfficientLeadingWildcard": false,
752
+ "supportsExactMatching": true,
753
+ },
754
+ "type": "string",
755
+ },
756
+ "typeClasses": [
757
+ {
758
+ "kind": "render_hint",
759
+ "name": "SELECTABLE",
760
+ },
761
+ {
762
+ "kind": "render_hint",
763
+ "name": "SORTABLE",
764
+ },
765
+ ],
766
+ "valueType": undefined,
767
+ },
768
+ },
769
+ "redacted": false,
770
+ "status": {
771
+ "active": {},
772
+ "type": "active",
773
+ },
774
+ "titlePropertyTypeRid": "bar",
775
+ },
776
+ },
777
+ },
778
+ "sharedPropertyTypes": {},
779
+ }
780
+ `);
781
+ });
782
+ it("Intermediary link types are properly defined", () => {
783
+ const bar = defineObject({
784
+ titlePropertyApiName: "bar",
785
+ displayName: "Bar",
786
+ pluralDisplayName: "Bar",
787
+ apiName: "barObject",
788
+ primaryKeyPropertyApiName: "bar",
789
+ properties: {
790
+ "bar": {
791
+ type: "string"
792
+ }
793
+ }
794
+ });
795
+ const fizz = defineObject({
796
+ titlePropertyApiName: "fizz",
797
+ displayName: "Fizz",
798
+ pluralDisplayName: "Fizz",
799
+ apiName: "fizzObject",
800
+ primaryKeyPropertyApiName: "fizz",
801
+ properties: {
802
+ "fizz": {
803
+ type: "string"
804
+ }
805
+ }
806
+ });
807
+ const intermediaryObject = defineObject({
808
+ titlePropertyApiName: "buzz",
809
+ displayName: "Buzz",
810
+ pluralDisplayName: "Buzz",
811
+ apiName: "buzzObject",
812
+ primaryKeyPropertyApiName: "buzz",
813
+ properties: {
814
+ "buzz": {
815
+ type: "string"
816
+ },
817
+ "barBuzz": {
818
+ type: "string"
819
+ },
820
+ "fizzBuzz": {
821
+ type: "string"
822
+ }
823
+ }
824
+ });
825
+ const barToBuzz = defineLink({
826
+ apiName: "barToBuzz",
827
+ manyForeignKeyProperty: "barBuzz",
828
+ one: {
829
+ object: bar,
830
+ metadata: {
831
+ displayName: "Buzz",
832
+ pluralDisplayName: "Buzz",
833
+ apiName: "buzz1"
834
+ }
835
+ },
836
+ toMany: {
837
+ object: intermediaryObject,
838
+ metadata: {
839
+ displayName: "Bar",
840
+ pluralDisplayName: "Bars",
841
+ apiName: "bars"
842
+ }
843
+ }
844
+ });
845
+ const fizzToBuzz = defineLink({
846
+ apiName: "fizzToBuzz",
847
+ manyForeignKeyProperty: "fizzBuzz",
848
+ one: {
849
+ object: fizz,
850
+ metadata: {
851
+ displayName: "Buzz",
852
+ pluralDisplayName: "Buzz",
853
+ apiName: "buzz2"
854
+ }
855
+ },
856
+ toMany: {
857
+ object: intermediaryObject,
858
+ metadata: {
859
+ displayName: "Fizz",
860
+ pluralDisplayName: "Fizzes",
861
+ apiName: "fizzes"
862
+ }
863
+ }
864
+ });
865
+ defineLink({
866
+ apiName: "fizzToBar",
867
+ many: {
868
+ object: bar,
869
+ metadata: {
870
+ displayName: "Fizz",
871
+ pluralDisplayName: "Fizzes",
872
+ apiName: "fizzes1"
873
+ },
874
+ linkToIntermediary: barToBuzz
875
+ },
876
+ toMany: {
877
+ object: fizz,
878
+ metadata: {
879
+ displayName: "Bar",
880
+ pluralDisplayName: "Bars",
881
+ apiName: "bars1"
882
+ },
883
+ linkToIntermediary: fizzToBuzz
884
+ },
885
+ intermediaryObjectType: intermediaryObject
886
+ });
887
+ expect(dumpOntologyFullMetadata().ontology).toMatchInlineSnapshot(`
888
+ {
889
+ "actionTypes": {},
890
+ "blockPermissionInformation": {
891
+ "actionTypes": {},
892
+ "linkTypes": {},
893
+ "objectTypes": {},
894
+ },
895
+ "interfaceTypes": {},
896
+ "linkTypes": {
897
+ "bar-to-buzz": {
898
+ "datasources": [],
899
+ "entityMetadata": {
900
+ "arePatchesEnabled": false,
901
+ },
902
+ "linkType": {
903
+ "definition": {
904
+ "oneToMany": {
905
+ "cardinalityHint": "ONE_TO_MANY",
906
+ "manyToOneLinkMetadata": {
907
+ "apiName": "bars",
908
+ "displayMetadata": {
909
+ "displayName": "Bar",
910
+ "groupDisplayName": "",
911
+ "pluralDisplayName": "Bars",
912
+ "visibility": "NORMAL",
913
+ },
914
+ "typeClasses": [],
915
+ },
916
+ "objectTypeRidManySide": "com.palantir.buzzObject",
917
+ "objectTypeRidOneSide": "com.palantir.barObject",
918
+ "oneSidePrimaryKeyToManySidePropertyMapping": [
919
+ {
920
+ "from": {
921
+ "apiName": "bar",
922
+ "object": "com.palantir.barObject",
923
+ },
924
+ "to": {
925
+ "apiName": "barBuzz",
926
+ "object": "com.palantir.buzzObject",
927
+ },
928
+ },
929
+ ],
930
+ "oneToManyLinkMetadata": {
931
+ "apiName": "buzz1",
932
+ "displayMetadata": {
933
+ "displayName": "Buzz",
934
+ "groupDisplayName": "",
935
+ "pluralDisplayName": "Buzz",
936
+ "visibility": "NORMAL",
937
+ },
938
+ "typeClasses": [],
939
+ },
940
+ },
941
+ "type": "oneToMany",
942
+ },
943
+ "id": "bar-to-buzz",
944
+ "redacted": false,
945
+ "status": {
946
+ "active": {},
947
+ "type": "active",
948
+ },
949
+ },
950
+ },
951
+ "fizz-to-bar": {
952
+ "datasources": [],
953
+ "entityMetadata": {
954
+ "arePatchesEnabled": false,
955
+ },
956
+ "linkType": {
957
+ "definition": {
958
+ "intermediary": {
959
+ "aToIntermediaryLinkTypeRid": "bar-to-buzz",
960
+ "intermediaryObjectTypeRid": "com.palantir.buzzObject",
961
+ "intermediaryToBLinkTypeRid": "fizz-to-buzz",
962
+ "objectTypeAToBLinkMetadata": {
963
+ "apiName": "fizzes1",
964
+ "displayMetadata": {
965
+ "displayName": "Fizz",
966
+ "groupDisplayName": "",
967
+ "pluralDisplayName": "Fizzes",
968
+ "visibility": "NORMAL",
969
+ },
970
+ "typeClasses": [],
971
+ },
972
+ "objectTypeBToALinkMetadata": {
973
+ "apiName": "bars1",
974
+ "displayMetadata": {
975
+ "displayName": "Bar",
976
+ "groupDisplayName": "",
977
+ "pluralDisplayName": "Bars",
978
+ "visibility": "NORMAL",
979
+ },
980
+ "typeClasses": [],
981
+ },
982
+ "objectTypeRidA": "com.palantir.barObject",
983
+ "objectTypeRidB": "com.palantir.fizzObject",
984
+ },
985
+ "type": "intermediary",
986
+ },
987
+ "id": "fizz-to-bar",
988
+ "redacted": false,
989
+ "status": {
990
+ "active": {},
991
+ "type": "active",
992
+ },
993
+ },
994
+ },
995
+ "fizz-to-buzz": {
996
+ "datasources": [],
997
+ "entityMetadata": {
998
+ "arePatchesEnabled": false,
999
+ },
1000
+ "linkType": {
1001
+ "definition": {
1002
+ "oneToMany": {
1003
+ "cardinalityHint": "ONE_TO_MANY",
1004
+ "manyToOneLinkMetadata": {
1005
+ "apiName": "fizzes",
1006
+ "displayMetadata": {
1007
+ "displayName": "Fizz",
1008
+ "groupDisplayName": "",
1009
+ "pluralDisplayName": "Fizzes",
1010
+ "visibility": "NORMAL",
1011
+ },
1012
+ "typeClasses": [],
1013
+ },
1014
+ "objectTypeRidManySide": "com.palantir.buzzObject",
1015
+ "objectTypeRidOneSide": "com.palantir.fizzObject",
1016
+ "oneSidePrimaryKeyToManySidePropertyMapping": [
1017
+ {
1018
+ "from": {
1019
+ "apiName": "fizz",
1020
+ "object": "com.palantir.fizzObject",
1021
+ },
1022
+ "to": {
1023
+ "apiName": "fizzBuzz",
1024
+ "object": "com.palantir.buzzObject",
1025
+ },
1026
+ },
1027
+ ],
1028
+ "oneToManyLinkMetadata": {
1029
+ "apiName": "buzz2",
1030
+ "displayMetadata": {
1031
+ "displayName": "Buzz",
1032
+ "groupDisplayName": "",
1033
+ "pluralDisplayName": "Buzz",
1034
+ "visibility": "NORMAL",
1035
+ },
1036
+ "typeClasses": [],
1037
+ },
1038
+ },
1039
+ "type": "oneToMany",
1040
+ },
1041
+ "id": "fizz-to-buzz",
1042
+ "redacted": false,
1043
+ "status": {
1044
+ "active": {},
1045
+ "type": "active",
1046
+ },
1047
+ },
1048
+ },
1049
+ },
1050
+ "objectTypes": {
1051
+ "com.palantir.barObject": {
1052
+ "datasources": [
1053
+ {
1054
+ "datasource": {
1055
+ "datasetV2": {
1056
+ "datasetRid": "com.palantir.barObject",
1057
+ "propertyMapping": {
1058
+ "bar": {
1059
+ "column": "bar",
1060
+ "type": "column",
1061
+ },
1062
+ },
1063
+ },
1064
+ "type": "datasetV2",
1065
+ },
1066
+ "datasourceName": "com.palantir.barObject",
1067
+ "editsConfiguration": {
1068
+ "onlyAllowPrivilegedEdits": false,
1069
+ },
1070
+ "redacted": false,
1071
+ },
1072
+ ],
1073
+ "entityMetadata": {
1074
+ "arePatchesEnabled": false,
1075
+ },
1076
+ "objectType": {
1077
+ "allImplementsInterfaces": {},
1078
+ "apiName": "com.palantir.barObject",
1079
+ "displayMetadata": {
1080
+ "description": undefined,
1081
+ "displayName": "Bar",
1082
+ "groupDisplayName": undefined,
1083
+ "icon": {
1084
+ "blueprint": {
1085
+ "color": "#2D72D2",
1086
+ "locator": "cube",
1087
+ },
1088
+ "type": "blueprint",
1089
+ },
1090
+ "pluralDisplayName": "Bar",
1091
+ "visibility": "NORMAL",
1092
+ },
1093
+ "implementsInterfaces2": [],
1094
+ "primaryKeys": [
1095
+ "bar",
1096
+ ],
1097
+ "propertyTypes": {
1098
+ "bar": {
1099
+ "apiName": "bar",
1100
+ "baseFormatter": undefined,
1101
+ "dataConstraints": undefined,
1102
+ "displayMetadata": {
1103
+ "description": undefined,
1104
+ "displayName": "Bar",
1105
+ "visibility": "NORMAL",
1106
+ },
1107
+ "indexedForSearch": true,
1108
+ "inlineAction": undefined,
1109
+ "ruleSetBinding": undefined,
1110
+ "sharedPropertyTypeApiName": undefined,
1111
+ "sharedPropertyTypeRid": undefined,
1112
+ "status": {
1113
+ "active": {},
1114
+ "type": "active",
1115
+ },
1116
+ "type": {
1117
+ "string": {
1118
+ "analyzerOverride": undefined,
1119
+ "enableAsciiFolding": undefined,
1120
+ "isLongText": false,
1121
+ "supportsEfficientLeadingWildcard": false,
1122
+ "supportsExactMatching": true,
1123
+ },
1124
+ "type": "string",
1125
+ },
1126
+ "typeClasses": [
1127
+ {
1128
+ "kind": "render_hint",
1129
+ "name": "SELECTABLE",
1130
+ },
1131
+ {
1132
+ "kind": "render_hint",
1133
+ "name": "SORTABLE",
1134
+ },
1135
+ ],
1136
+ "valueType": undefined,
1137
+ },
1138
+ },
1139
+ "redacted": false,
1140
+ "status": {
1141
+ "active": {},
1142
+ "type": "active",
1143
+ },
1144
+ "titlePropertyTypeRid": "bar",
1145
+ },
1146
+ },
1147
+ "com.palantir.buzzObject": {
1148
+ "datasources": [
1149
+ {
1150
+ "datasource": {
1151
+ "datasetV2": {
1152
+ "datasetRid": "com.palantir.buzzObject",
1153
+ "propertyMapping": {
1154
+ "barBuzz": {
1155
+ "column": "barBuzz",
1156
+ "type": "column",
1157
+ },
1158
+ "buzz": {
1159
+ "column": "buzz",
1160
+ "type": "column",
1161
+ },
1162
+ "fizzBuzz": {
1163
+ "column": "fizzBuzz",
1164
+ "type": "column",
1165
+ },
1166
+ },
1167
+ },
1168
+ "type": "datasetV2",
1169
+ },
1170
+ "datasourceName": "com.palantir.buzzObject",
1171
+ "editsConfiguration": {
1172
+ "onlyAllowPrivilegedEdits": false,
1173
+ },
1174
+ "redacted": false,
1175
+ },
1176
+ ],
1177
+ "entityMetadata": {
1178
+ "arePatchesEnabled": false,
1179
+ },
1180
+ "objectType": {
1181
+ "allImplementsInterfaces": {},
1182
+ "apiName": "com.palantir.buzzObject",
1183
+ "displayMetadata": {
1184
+ "description": undefined,
1185
+ "displayName": "Buzz",
1186
+ "groupDisplayName": undefined,
1187
+ "icon": {
1188
+ "blueprint": {
1189
+ "color": "#2D72D2",
1190
+ "locator": "cube",
1191
+ },
1192
+ "type": "blueprint",
1193
+ },
1194
+ "pluralDisplayName": "Buzz",
1195
+ "visibility": "NORMAL",
1196
+ },
1197
+ "implementsInterfaces2": [],
1198
+ "primaryKeys": [
1199
+ "buzz",
1200
+ ],
1201
+ "propertyTypes": {
1202
+ "barBuzz": {
1203
+ "apiName": "barBuzz",
1204
+ "baseFormatter": undefined,
1205
+ "dataConstraints": undefined,
1206
+ "displayMetadata": {
1207
+ "description": undefined,
1208
+ "displayName": "BarBuzz",
1209
+ "visibility": "NORMAL",
1210
+ },
1211
+ "indexedForSearch": true,
1212
+ "inlineAction": undefined,
1213
+ "ruleSetBinding": undefined,
1214
+ "sharedPropertyTypeApiName": undefined,
1215
+ "sharedPropertyTypeRid": undefined,
1216
+ "status": {
1217
+ "active": {},
1218
+ "type": "active",
1219
+ },
1220
+ "type": {
1221
+ "string": {
1222
+ "analyzerOverride": undefined,
1223
+ "enableAsciiFolding": undefined,
1224
+ "isLongText": false,
1225
+ "supportsEfficientLeadingWildcard": false,
1226
+ "supportsExactMatching": true,
1227
+ },
1228
+ "type": "string",
1229
+ },
1230
+ "typeClasses": [
1231
+ {
1232
+ "kind": "render_hint",
1233
+ "name": "SELECTABLE",
1234
+ },
1235
+ {
1236
+ "kind": "render_hint",
1237
+ "name": "SORTABLE",
1238
+ },
1239
+ ],
1240
+ "valueType": undefined,
1241
+ },
1242
+ "buzz": {
1243
+ "apiName": "buzz",
1244
+ "baseFormatter": undefined,
1245
+ "dataConstraints": undefined,
1246
+ "displayMetadata": {
1247
+ "description": undefined,
1248
+ "displayName": "Buzz",
1249
+ "visibility": "NORMAL",
1250
+ },
1251
+ "indexedForSearch": true,
1252
+ "inlineAction": undefined,
1253
+ "ruleSetBinding": undefined,
1254
+ "sharedPropertyTypeApiName": undefined,
1255
+ "sharedPropertyTypeRid": undefined,
1256
+ "status": {
1257
+ "active": {},
1258
+ "type": "active",
1259
+ },
1260
+ "type": {
1261
+ "string": {
1262
+ "analyzerOverride": undefined,
1263
+ "enableAsciiFolding": undefined,
1264
+ "isLongText": false,
1265
+ "supportsEfficientLeadingWildcard": false,
1266
+ "supportsExactMatching": true,
1267
+ },
1268
+ "type": "string",
1269
+ },
1270
+ "typeClasses": [
1271
+ {
1272
+ "kind": "render_hint",
1273
+ "name": "SELECTABLE",
1274
+ },
1275
+ {
1276
+ "kind": "render_hint",
1277
+ "name": "SORTABLE",
1278
+ },
1279
+ ],
1280
+ "valueType": undefined,
1281
+ },
1282
+ "fizzBuzz": {
1283
+ "apiName": "fizzBuzz",
1284
+ "baseFormatter": undefined,
1285
+ "dataConstraints": undefined,
1286
+ "displayMetadata": {
1287
+ "description": undefined,
1288
+ "displayName": "FizzBuzz",
1289
+ "visibility": "NORMAL",
1290
+ },
1291
+ "indexedForSearch": true,
1292
+ "inlineAction": undefined,
1293
+ "ruleSetBinding": undefined,
1294
+ "sharedPropertyTypeApiName": undefined,
1295
+ "sharedPropertyTypeRid": undefined,
1296
+ "status": {
1297
+ "active": {},
1298
+ "type": "active",
1299
+ },
1300
+ "type": {
1301
+ "string": {
1302
+ "analyzerOverride": undefined,
1303
+ "enableAsciiFolding": undefined,
1304
+ "isLongText": false,
1305
+ "supportsEfficientLeadingWildcard": false,
1306
+ "supportsExactMatching": true,
1307
+ },
1308
+ "type": "string",
1309
+ },
1310
+ "typeClasses": [
1311
+ {
1312
+ "kind": "render_hint",
1313
+ "name": "SELECTABLE",
1314
+ },
1315
+ {
1316
+ "kind": "render_hint",
1317
+ "name": "SORTABLE",
1318
+ },
1319
+ ],
1320
+ "valueType": undefined,
1321
+ },
1322
+ },
1323
+ "redacted": false,
1324
+ "status": {
1325
+ "active": {},
1326
+ "type": "active",
1327
+ },
1328
+ "titlePropertyTypeRid": "buzz",
1329
+ },
1330
+ },
1331
+ "com.palantir.fizzObject": {
1332
+ "datasources": [
1333
+ {
1334
+ "datasource": {
1335
+ "datasetV2": {
1336
+ "datasetRid": "com.palantir.fizzObject",
1337
+ "propertyMapping": {
1338
+ "fizz": {
1339
+ "column": "fizz",
1340
+ "type": "column",
1341
+ },
1342
+ },
1343
+ },
1344
+ "type": "datasetV2",
1345
+ },
1346
+ "datasourceName": "com.palantir.fizzObject",
1347
+ "editsConfiguration": {
1348
+ "onlyAllowPrivilegedEdits": false,
1349
+ },
1350
+ "redacted": false,
1351
+ },
1352
+ ],
1353
+ "entityMetadata": {
1354
+ "arePatchesEnabled": false,
1355
+ },
1356
+ "objectType": {
1357
+ "allImplementsInterfaces": {},
1358
+ "apiName": "com.palantir.fizzObject",
1359
+ "displayMetadata": {
1360
+ "description": undefined,
1361
+ "displayName": "Fizz",
1362
+ "groupDisplayName": undefined,
1363
+ "icon": {
1364
+ "blueprint": {
1365
+ "color": "#2D72D2",
1366
+ "locator": "cube",
1367
+ },
1368
+ "type": "blueprint",
1369
+ },
1370
+ "pluralDisplayName": "Fizz",
1371
+ "visibility": "NORMAL",
1372
+ },
1373
+ "implementsInterfaces2": [],
1374
+ "primaryKeys": [
1375
+ "fizz",
1376
+ ],
1377
+ "propertyTypes": {
1378
+ "fizz": {
1379
+ "apiName": "fizz",
1380
+ "baseFormatter": undefined,
1381
+ "dataConstraints": undefined,
1382
+ "displayMetadata": {
1383
+ "description": undefined,
1384
+ "displayName": "Fizz",
1385
+ "visibility": "NORMAL",
1386
+ },
1387
+ "indexedForSearch": true,
1388
+ "inlineAction": undefined,
1389
+ "ruleSetBinding": undefined,
1390
+ "sharedPropertyTypeApiName": undefined,
1391
+ "sharedPropertyTypeRid": undefined,
1392
+ "status": {
1393
+ "active": {},
1394
+ "type": "active",
1395
+ },
1396
+ "type": {
1397
+ "string": {
1398
+ "analyzerOverride": undefined,
1399
+ "enableAsciiFolding": undefined,
1400
+ "isLongText": false,
1401
+ "supportsEfficientLeadingWildcard": false,
1402
+ "supportsExactMatching": true,
1403
+ },
1404
+ "type": "string",
1405
+ },
1406
+ "typeClasses": [
1407
+ {
1408
+ "kind": "render_hint",
1409
+ "name": "SELECTABLE",
1410
+ },
1411
+ {
1412
+ "kind": "render_hint",
1413
+ "name": "SORTABLE",
1414
+ },
1415
+ ],
1416
+ "valueType": undefined,
1417
+ },
1418
+ },
1419
+ "redacted": false,
1420
+ "status": {
1421
+ "active": {},
1422
+ "type": "active",
1423
+ },
1424
+ "titlePropertyTypeRid": "fizz",
1425
+ },
1426
+ },
1427
+ },
1428
+ "sharedPropertyTypes": {},
1429
+ }
1430
+ `);
1431
+ });
1432
+ it("Minimal link definitions are properly defined", () => {
1433
+ const object = defineObject({
1434
+ titlePropertyApiName: "bar",
1435
+ displayName: "Foo",
1436
+ pluralDisplayName: "Foo",
1437
+ apiName: "foo",
1438
+ primaryKeyPropertyApiName: "bar",
1439
+ properties: {
1440
+ "bar": {
1441
+ type: "string"
1442
+ }
1443
+ }
1444
+ });
1445
+ const otherObject = defineObject({
1446
+ titlePropertyApiName: "fizz",
1447
+ displayName: "Fizz",
1448
+ pluralDisplayName: "Fizz",
1449
+ apiName: "fizz",
1450
+ primaryKeyPropertyApiName: "fizz",
1451
+ properties: {
1452
+ "fizz": {
1453
+ type: "string"
1454
+ },
1455
+ "bar": {
1456
+ type: "string"
1457
+ }
1458
+ }
1459
+ });
1460
+ defineLink({
1461
+ apiName: "fizzToFoo",
1462
+ one: {
1463
+ object: object,
1464
+ metadata: {
1465
+ apiName: "fizzes"
1466
+ }
1467
+ },
1468
+ toMany: {
1469
+ object: otherObject,
1470
+ metadata: {
1471
+ apiName: "foos"
1472
+ }
1473
+ },
1474
+ manyForeignKeyProperty: "bar"
1475
+ });
1476
+ expect(dumpOntologyFullMetadata().ontology).toMatchInlineSnapshot(`
1477
+ {
1478
+ "actionTypes": {},
1479
+ "blockPermissionInformation": {
1480
+ "actionTypes": {},
1481
+ "linkTypes": {},
1482
+ "objectTypes": {},
1483
+ },
1484
+ "interfaceTypes": {},
1485
+ "linkTypes": {
1486
+ "fizz-to-foo": {
1487
+ "datasources": [],
1488
+ "entityMetadata": {
1489
+ "arePatchesEnabled": false,
1490
+ },
1491
+ "linkType": {
1492
+ "definition": {
1493
+ "oneToMany": {
1494
+ "cardinalityHint": "ONE_TO_MANY",
1495
+ "manyToOneLinkMetadata": {
1496
+ "apiName": "foos",
1497
+ "displayMetadata": {
1498
+ "displayName": "Foos",
1499
+ "groupDisplayName": "",
1500
+ "pluralDisplayName": "Foos",
1501
+ "visibility": "NORMAL",
1502
+ },
1503
+ "typeClasses": [],
1504
+ },
1505
+ "objectTypeRidManySide": "com.palantir.fizz",
1506
+ "objectTypeRidOneSide": "com.palantir.foo",
1507
+ "oneSidePrimaryKeyToManySidePropertyMapping": [
1508
+ {
1509
+ "from": {
1510
+ "apiName": "bar",
1511
+ "object": "com.palantir.foo",
1512
+ },
1513
+ "to": {
1514
+ "apiName": "bar",
1515
+ "object": "com.palantir.fizz",
1516
+ },
1517
+ },
1518
+ ],
1519
+ "oneToManyLinkMetadata": {
1520
+ "apiName": "fizzes",
1521
+ "displayMetadata": {
1522
+ "displayName": "Fizzes",
1523
+ "groupDisplayName": "",
1524
+ "pluralDisplayName": "Fizzes",
1525
+ "visibility": "NORMAL",
1526
+ },
1527
+ "typeClasses": [],
1528
+ },
1529
+ },
1530
+ "type": "oneToMany",
1531
+ },
1532
+ "id": "fizz-to-foo",
1533
+ "redacted": false,
1534
+ "status": {
1535
+ "active": {},
1536
+ "type": "active",
1537
+ },
1538
+ },
1539
+ },
1540
+ },
1541
+ "objectTypes": {
1542
+ "com.palantir.fizz": {
1543
+ "datasources": [
1544
+ {
1545
+ "datasource": {
1546
+ "datasetV2": {
1547
+ "datasetRid": "com.palantir.fizz",
1548
+ "propertyMapping": {
1549
+ "bar": {
1550
+ "column": "bar",
1551
+ "type": "column",
1552
+ },
1553
+ "fizz": {
1554
+ "column": "fizz",
1555
+ "type": "column",
1556
+ },
1557
+ },
1558
+ },
1559
+ "type": "datasetV2",
1560
+ },
1561
+ "datasourceName": "com.palantir.fizz",
1562
+ "editsConfiguration": {
1563
+ "onlyAllowPrivilegedEdits": false,
1564
+ },
1565
+ "redacted": false,
1566
+ },
1567
+ ],
1568
+ "entityMetadata": {
1569
+ "arePatchesEnabled": false,
1570
+ },
1571
+ "objectType": {
1572
+ "allImplementsInterfaces": {},
1573
+ "apiName": "com.palantir.fizz",
1574
+ "displayMetadata": {
1575
+ "description": undefined,
1576
+ "displayName": "Fizz",
1577
+ "groupDisplayName": undefined,
1578
+ "icon": {
1579
+ "blueprint": {
1580
+ "color": "#2D72D2",
1581
+ "locator": "cube",
1582
+ },
1583
+ "type": "blueprint",
1584
+ },
1585
+ "pluralDisplayName": "Fizz",
1586
+ "visibility": "NORMAL",
1587
+ },
1588
+ "implementsInterfaces2": [],
1589
+ "primaryKeys": [
1590
+ "fizz",
1591
+ ],
1592
+ "propertyTypes": {
1593
+ "bar": {
1594
+ "apiName": "bar",
1595
+ "baseFormatter": undefined,
1596
+ "dataConstraints": undefined,
1597
+ "displayMetadata": {
1598
+ "description": undefined,
1599
+ "displayName": "Bar",
1600
+ "visibility": "NORMAL",
1601
+ },
1602
+ "indexedForSearch": true,
1603
+ "inlineAction": undefined,
1604
+ "ruleSetBinding": undefined,
1605
+ "sharedPropertyTypeApiName": undefined,
1606
+ "sharedPropertyTypeRid": undefined,
1607
+ "status": {
1608
+ "active": {},
1609
+ "type": "active",
1610
+ },
1611
+ "type": {
1612
+ "string": {
1613
+ "analyzerOverride": undefined,
1614
+ "enableAsciiFolding": undefined,
1615
+ "isLongText": false,
1616
+ "supportsEfficientLeadingWildcard": false,
1617
+ "supportsExactMatching": true,
1618
+ },
1619
+ "type": "string",
1620
+ },
1621
+ "typeClasses": [
1622
+ {
1623
+ "kind": "render_hint",
1624
+ "name": "SELECTABLE",
1625
+ },
1626
+ {
1627
+ "kind": "render_hint",
1628
+ "name": "SORTABLE",
1629
+ },
1630
+ ],
1631
+ "valueType": undefined,
1632
+ },
1633
+ "fizz": {
1634
+ "apiName": "fizz",
1635
+ "baseFormatter": undefined,
1636
+ "dataConstraints": undefined,
1637
+ "displayMetadata": {
1638
+ "description": undefined,
1639
+ "displayName": "Fizz",
1640
+ "visibility": "NORMAL",
1641
+ },
1642
+ "indexedForSearch": true,
1643
+ "inlineAction": undefined,
1644
+ "ruleSetBinding": undefined,
1645
+ "sharedPropertyTypeApiName": undefined,
1646
+ "sharedPropertyTypeRid": undefined,
1647
+ "status": {
1648
+ "active": {},
1649
+ "type": "active",
1650
+ },
1651
+ "type": {
1652
+ "string": {
1653
+ "analyzerOverride": undefined,
1654
+ "enableAsciiFolding": undefined,
1655
+ "isLongText": false,
1656
+ "supportsEfficientLeadingWildcard": false,
1657
+ "supportsExactMatching": true,
1658
+ },
1659
+ "type": "string",
1660
+ },
1661
+ "typeClasses": [
1662
+ {
1663
+ "kind": "render_hint",
1664
+ "name": "SELECTABLE",
1665
+ },
1666
+ {
1667
+ "kind": "render_hint",
1668
+ "name": "SORTABLE",
1669
+ },
1670
+ ],
1671
+ "valueType": undefined,
1672
+ },
1673
+ },
1674
+ "redacted": false,
1675
+ "status": {
1676
+ "active": {},
1677
+ "type": "active",
1678
+ },
1679
+ "titlePropertyTypeRid": "fizz",
1680
+ },
1681
+ },
1682
+ "com.palantir.foo": {
1683
+ "datasources": [
1684
+ {
1685
+ "datasource": {
1686
+ "datasetV2": {
1687
+ "datasetRid": "com.palantir.foo",
1688
+ "propertyMapping": {
1689
+ "bar": {
1690
+ "column": "bar",
1691
+ "type": "column",
1692
+ },
1693
+ },
1694
+ },
1695
+ "type": "datasetV2",
1696
+ },
1697
+ "datasourceName": "com.palantir.foo",
1698
+ "editsConfiguration": {
1699
+ "onlyAllowPrivilegedEdits": false,
1700
+ },
1701
+ "redacted": false,
1702
+ },
1703
+ ],
1704
+ "entityMetadata": {
1705
+ "arePatchesEnabled": false,
1706
+ },
1707
+ "objectType": {
1708
+ "allImplementsInterfaces": {},
1709
+ "apiName": "com.palantir.foo",
1710
+ "displayMetadata": {
1711
+ "description": undefined,
1712
+ "displayName": "Foo",
1713
+ "groupDisplayName": undefined,
1714
+ "icon": {
1715
+ "blueprint": {
1716
+ "color": "#2D72D2",
1717
+ "locator": "cube",
1718
+ },
1719
+ "type": "blueprint",
1720
+ },
1721
+ "pluralDisplayName": "Foo",
1722
+ "visibility": "NORMAL",
1723
+ },
1724
+ "implementsInterfaces2": [],
1725
+ "primaryKeys": [
1726
+ "bar",
1727
+ ],
1728
+ "propertyTypes": {
1729
+ "bar": {
1730
+ "apiName": "bar",
1731
+ "baseFormatter": undefined,
1732
+ "dataConstraints": undefined,
1733
+ "displayMetadata": {
1734
+ "description": undefined,
1735
+ "displayName": "Bar",
1736
+ "visibility": "NORMAL",
1737
+ },
1738
+ "indexedForSearch": true,
1739
+ "inlineAction": undefined,
1740
+ "ruleSetBinding": undefined,
1741
+ "sharedPropertyTypeApiName": undefined,
1742
+ "sharedPropertyTypeRid": undefined,
1743
+ "status": {
1744
+ "active": {},
1745
+ "type": "active",
1746
+ },
1747
+ "type": {
1748
+ "string": {
1749
+ "analyzerOverride": undefined,
1750
+ "enableAsciiFolding": undefined,
1751
+ "isLongText": false,
1752
+ "supportsEfficientLeadingWildcard": false,
1753
+ "supportsExactMatching": true,
1754
+ },
1755
+ "type": "string",
1756
+ },
1757
+ "typeClasses": [
1758
+ {
1759
+ "kind": "render_hint",
1760
+ "name": "SELECTABLE",
1761
+ },
1762
+ {
1763
+ "kind": "render_hint",
1764
+ "name": "SORTABLE",
1765
+ },
1766
+ ],
1767
+ "valueType": undefined,
1768
+ },
1769
+ },
1770
+ "redacted": false,
1771
+ "status": {
1772
+ "active": {},
1773
+ "type": "active",
1774
+ },
1775
+ "titlePropertyTypeRid": "bar",
1776
+ },
1777
+ },
1778
+ },
1779
+ "sharedPropertyTypes": {},
1780
+ }
1781
+ `);
1782
+ });
1783
+ });
1784
+ describe("ILTs", () => {
1785
+ let a;
1786
+ let b;
1787
+ beforeEach(() => {
1788
+ a = defineInterface({
1789
+ apiName: "A"
1790
+ });
1791
+ b = defineInterface({
1792
+ apiName: "B"
1793
+ });
1794
+ });
1795
+ it("single link works", () => {
1796
+ expect(a).not.toBeUndefined();
1797
+ defineInterfaceLinkConstraint({
1798
+ from: a,
1799
+ toOne: b,
1800
+ apiName: "singleLink"
1801
+ });
1802
+ expect(dumpOntologyFullMetadata().ontology).toMatchInlineSnapshot(`
1803
+ {
1804
+ "actionTypes": {},
1805
+ "blockPermissionInformation": {
1806
+ "actionTypes": {},
1807
+ "linkTypes": {},
1808
+ "objectTypes": {},
1809
+ },
1810
+ "interfaceTypes": {
1811
+ "com.palantir.A": {
1812
+ "interfaceType": {
1813
+ "apiName": "com.palantir.A",
1814
+ "displayMetadata": {
1815
+ "description": "A",
1816
+ "displayName": "A",
1817
+ "icon": {
1818
+ "blueprint": {
1819
+ "color": "#4C90F0",
1820
+ "locator": "layout-hierarchy",
1821
+ },
1822
+ "type": "blueprint",
1823
+ },
1824
+ },
1825
+ "extendsInterfaces": [],
1826
+ "links": [
1827
+ {
1828
+ "cardinality": "SINGLE",
1829
+ "linkedEntityTypeId": {
1830
+ "interfaceType": "com.palantir.B",
1831
+ "type": "interfaceType",
1832
+ },
1833
+ "metadata": {
1834
+ "apiName": "com.palantir.singleLink",
1835
+ "description": "singleLink",
1836
+ "displayName": "singleLink",
1837
+ },
1838
+ "required": true,
1839
+ },
1840
+ ],
1841
+ "properties": [],
1842
+ "propertiesV2": {},
1843
+ "propertiesV3": {},
1844
+ "searchable": true,
1845
+ "status": {
1846
+ "active": {},
1847
+ "type": "active",
1848
+ },
1849
+ },
1850
+ },
1851
+ "com.palantir.B": {
1852
+ "interfaceType": {
1853
+ "apiName": "com.palantir.B",
1854
+ "displayMetadata": {
1855
+ "description": "B",
1856
+ "displayName": "B",
1857
+ "icon": {
1858
+ "blueprint": {
1859
+ "color": "#4C90F0",
1860
+ "locator": "layout-hierarchy",
1861
+ },
1862
+ "type": "blueprint",
1863
+ },
1864
+ },
1865
+ "extendsInterfaces": [],
1866
+ "links": [],
1867
+ "properties": [],
1868
+ "propertiesV2": {},
1869
+ "propertiesV3": {},
1870
+ "searchable": true,
1871
+ "status": {
1872
+ "active": {},
1873
+ "type": "active",
1874
+ },
1875
+ },
1876
+ },
1877
+ },
1878
+ "linkTypes": {},
1879
+ "objectTypes": {},
1880
+ "sharedPropertyTypes": {},
1881
+ }
1882
+ `);
1883
+ });
1884
+ it("many link works", () => {
1885
+ defineInterfaceLinkConstraint({
1886
+ from: a,
1887
+ toMany: b,
1888
+ apiName: "manyLink"
1889
+ });
1890
+ expect(dumpOntologyFullMetadata().ontology).toMatchInlineSnapshot(`
1891
+ {
1892
+ "actionTypes": {},
1893
+ "blockPermissionInformation": {
1894
+ "actionTypes": {},
1895
+ "linkTypes": {},
1896
+ "objectTypes": {},
1897
+ },
1898
+ "interfaceTypes": {
1899
+ "com.palantir.A": {
1900
+ "interfaceType": {
1901
+ "apiName": "com.palantir.A",
1902
+ "displayMetadata": {
1903
+ "description": "A",
1904
+ "displayName": "A",
1905
+ "icon": {
1906
+ "blueprint": {
1907
+ "color": "#4C90F0",
1908
+ "locator": "layout-hierarchy",
1909
+ },
1910
+ "type": "blueprint",
1911
+ },
1912
+ },
1913
+ "extendsInterfaces": [],
1914
+ "links": [
1915
+ {
1916
+ "cardinality": "MANY",
1917
+ "linkedEntityTypeId": {
1918
+ "interfaceType": "com.palantir.B",
1919
+ "type": "interfaceType",
1920
+ },
1921
+ "metadata": {
1922
+ "apiName": "com.palantir.manyLink",
1923
+ "description": "manyLink",
1924
+ "displayName": "manyLink",
1925
+ },
1926
+ "required": true,
1927
+ },
1928
+ ],
1929
+ "properties": [],
1930
+ "propertiesV2": {},
1931
+ "propertiesV3": {},
1932
+ "searchable": true,
1933
+ "status": {
1934
+ "active": {},
1935
+ "type": "active",
1936
+ },
1937
+ },
1938
+ },
1939
+ "com.palantir.B": {
1940
+ "interfaceType": {
1941
+ "apiName": "com.palantir.B",
1942
+ "displayMetadata": {
1943
+ "description": "B",
1944
+ "displayName": "B",
1945
+ "icon": {
1946
+ "blueprint": {
1947
+ "color": "#4C90F0",
1948
+ "locator": "layout-hierarchy",
1949
+ },
1950
+ "type": "blueprint",
1951
+ },
1952
+ },
1953
+ "extendsInterfaces": [],
1954
+ "links": [],
1955
+ "properties": [],
1956
+ "propertiesV2": {},
1957
+ "propertiesV3": {},
1958
+ "searchable": true,
1959
+ "status": {
1960
+ "active": {},
1961
+ "type": "active",
1962
+ },
1963
+ },
1964
+ },
1965
+ },
1966
+ "linkTypes": {},
1967
+ "objectTypes": {},
1968
+ "sharedPropertyTypes": {},
1969
+ }
1970
+ `);
1971
+ });
1972
+ });
1973
+ });
1974
+ //# sourceMappingURL=links.test.js.map