@osdk/client 2.4.0-beta.8 → 2.5.0-beta.1

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 (153) hide show
  1. package/CHANGELOG.md +104 -0
  2. package/build/browser/MinimalClientContext.js.map +1 -1
  3. package/build/browser/createClient.js +5 -5
  4. package/build/browser/createClient.js.map +1 -1
  5. package/build/browser/createClient.test.js +3 -3
  6. package/build/browser/createClient.test.js.map +1 -1
  7. package/build/browser/createMinimalClient.js +1 -0
  8. package/build/browser/createMinimalClient.js.map +1 -1
  9. package/build/browser/fetchMetadata.test.js +7 -1
  10. package/build/browser/fetchMetadata.test.js.map +1 -1
  11. package/build/browser/index.js +1 -0
  12. package/build/browser/index.js.map +1 -1
  13. package/build/browser/internal/conversions/modernToLegacyGroupByClause.js +2 -1
  14. package/build/browser/internal/conversions/modernToLegacyGroupByClause.js.map +1 -1
  15. package/build/browser/object/aggregate.test.js +115 -0
  16. package/build/browser/object/aggregate.test.js.map +1 -1
  17. package/build/browser/object/convertWireToOsdkObjects.js +3 -2
  18. package/build/browser/object/convertWireToOsdkObjects.js.map +1 -1
  19. package/build/browser/object/convertWireToOsdkObjects.test.js +36 -24
  20. package/build/browser/object/convertWireToOsdkObjects.test.js.map +1 -1
  21. package/build/browser/object/fetchPage.js +9 -2
  22. package/build/browser/object/fetchPage.js.map +1 -1
  23. package/build/browser/objectSet/InterfaceObjectSet.test.js +5 -1
  24. package/build/browser/objectSet/InterfaceObjectSet.test.js.map +1 -1
  25. package/build/browser/objectSet/createObjectSet.js +5 -1
  26. package/build/browser/objectSet/createObjectSet.js.map +1 -1
  27. package/build/browser/observable/internal/ActionApplication.js +1 -1
  28. package/build/browser/observable/internal/ActionApplication.js.map +1 -1
  29. package/build/browser/observable/internal/Store.test.js +3 -0
  30. package/build/browser/observable/internal/Store.test.js.map +1 -1
  31. package/build/browser/ontology/StandardOntologyProvider.test.js +1 -1
  32. package/build/browser/ontology/StandardOntologyProvider.test.js.map +1 -1
  33. package/build/browser/public/unstable-do-not-use.js +1 -0
  34. package/build/browser/public/unstable-do-not-use.js.map +1 -1
  35. package/build/browser/public-utils/hydrateObjectSetFromObjectRids.js +4 -1
  36. package/build/browser/public-utils/hydrateObjectSetFromObjectRids.js.map +1 -1
  37. package/build/browser/public-utils/hydrateObjectSetFromRid.js +4 -1
  38. package/build/browser/public-utils/hydrateObjectSetFromRid.js.map +1 -1
  39. package/build/browser/queries/applyQuery.js +24 -1
  40. package/build/browser/queries/applyQuery.js.map +1 -1
  41. package/build/browser/queries/queries.test.js +27 -2
  42. package/build/browser/queries/queries.test.js.map +1 -1
  43. package/build/browser/queries/types.js.map +1 -1
  44. package/build/browser/util/UserAgent.js +2 -2
  45. package/build/browser/util/WireObjectSet.js +1 -1
  46. package/build/browser/util/WireObjectSet.js.map +1 -1
  47. package/build/browser/util/extractObjectOrInterfaceType.js +96 -0
  48. package/build/browser/util/extractObjectOrInterfaceType.js.map +1 -0
  49. package/build/browser/util/extractObjectOrInterfaceType.test.js +135 -0
  50. package/build/browser/util/extractObjectOrInterfaceType.test.js.map +1 -0
  51. package/build/browser/util/interfaceUtils.js +10 -0
  52. package/build/browser/util/interfaceUtils.js.map +1 -1
  53. package/build/browser/util/objectSpecifierUtils.js +12 -0
  54. package/build/browser/util/objectSpecifierUtils.js.map +1 -1
  55. package/build/browser/util/toDataValueQueries.js +11 -0
  56. package/build/browser/util/toDataValueQueries.js.map +1 -1
  57. package/build/cjs/{Client-CgL2LKN9.d.cts → Client-CF85LpFu.d.cts} +2 -2
  58. package/build/cjs/{chunk-OKQUXVEK.cjs → chunk-BJYCRD5Y.cjs} +154 -66
  59. package/build/cjs/chunk-BJYCRD5Y.cjs.map +1 -0
  60. package/build/cjs/chunk-Q7SFCCGT.cjs +11 -0
  61. package/build/cjs/chunk-Q7SFCCGT.cjs.map +1 -0
  62. package/build/cjs/{chunk-ROQUNKJT.cjs → chunk-URDXPIRU.cjs} +107 -62
  63. package/build/cjs/chunk-URDXPIRU.cjs.map +1 -0
  64. package/build/cjs/createClient-BJo8T7Js.d.cts +9 -0
  65. package/build/cjs/delay-QK4T7RVX.cjs +74 -0
  66. package/build/cjs/delay-QK4T7RVX.cjs.map +1 -0
  67. package/build/cjs/index.cjs +11 -6
  68. package/build/cjs/index.cjs.map +1 -1
  69. package/build/cjs/index.d.cts +15 -8
  70. package/build/cjs/public/internal.cjs +17 -10
  71. package/build/cjs/public/internal.cjs.map +1 -1
  72. package/build/cjs/public/internal.d.cts +1 -1
  73. package/build/cjs/public/unstable-do-not-use.cjs +22 -71
  74. package/build/cjs/public/unstable-do-not-use.cjs.map +1 -1
  75. package/build/cjs/public/unstable-do-not-use.d.cts +2 -1
  76. package/build/esm/MinimalClientContext.js.map +1 -1
  77. package/build/esm/createClient.js +5 -5
  78. package/build/esm/createClient.js.map +1 -1
  79. package/build/esm/createClient.test.js +3 -3
  80. package/build/esm/createClient.test.js.map +1 -1
  81. package/build/esm/createMinimalClient.js +1 -0
  82. package/build/esm/createMinimalClient.js.map +1 -1
  83. package/build/esm/fetchMetadata.test.js +7 -1
  84. package/build/esm/fetchMetadata.test.js.map +1 -1
  85. package/build/esm/index.js +1 -0
  86. package/build/esm/index.js.map +1 -1
  87. package/build/esm/internal/conversions/modernToLegacyGroupByClause.js +2 -1
  88. package/build/esm/internal/conversions/modernToLegacyGroupByClause.js.map +1 -1
  89. package/build/esm/object/aggregate.test.js +115 -0
  90. package/build/esm/object/aggregate.test.js.map +1 -1
  91. package/build/esm/object/convertWireToOsdkObjects.js +3 -2
  92. package/build/esm/object/convertWireToOsdkObjects.js.map +1 -1
  93. package/build/esm/object/convertWireToOsdkObjects.test.js +36 -24
  94. package/build/esm/object/convertWireToOsdkObjects.test.js.map +1 -1
  95. package/build/esm/object/fetchPage.js +9 -2
  96. package/build/esm/object/fetchPage.js.map +1 -1
  97. package/build/esm/objectSet/InterfaceObjectSet.test.js +5 -1
  98. package/build/esm/objectSet/InterfaceObjectSet.test.js.map +1 -1
  99. package/build/esm/objectSet/createObjectSet.js +5 -1
  100. package/build/esm/objectSet/createObjectSet.js.map +1 -1
  101. package/build/esm/observable/internal/ActionApplication.js +1 -1
  102. package/build/esm/observable/internal/ActionApplication.js.map +1 -1
  103. package/build/esm/observable/internal/Store.test.js +3 -0
  104. package/build/esm/observable/internal/Store.test.js.map +1 -1
  105. package/build/esm/ontology/StandardOntologyProvider.test.js +1 -1
  106. package/build/esm/ontology/StandardOntologyProvider.test.js.map +1 -1
  107. package/build/esm/public/unstable-do-not-use.js +1 -0
  108. package/build/esm/public/unstable-do-not-use.js.map +1 -1
  109. package/build/esm/public-utils/hydrateObjectSetFromObjectRids.js +4 -1
  110. package/build/esm/public-utils/hydrateObjectSetFromObjectRids.js.map +1 -1
  111. package/build/esm/public-utils/hydrateObjectSetFromRid.js +4 -1
  112. package/build/esm/public-utils/hydrateObjectSetFromRid.js.map +1 -1
  113. package/build/esm/queries/applyQuery.js +24 -1
  114. package/build/esm/queries/applyQuery.js.map +1 -1
  115. package/build/esm/queries/queries.test.js +27 -2
  116. package/build/esm/queries/queries.test.js.map +1 -1
  117. package/build/esm/queries/types.js.map +1 -1
  118. package/build/esm/util/UserAgent.js +2 -2
  119. package/build/esm/util/WireObjectSet.js +1 -1
  120. package/build/esm/util/WireObjectSet.js.map +1 -1
  121. package/build/esm/util/extractObjectOrInterfaceType.js +96 -0
  122. package/build/esm/util/extractObjectOrInterfaceType.js.map +1 -0
  123. package/build/esm/util/extractObjectOrInterfaceType.test.js +135 -0
  124. package/build/esm/util/extractObjectOrInterfaceType.test.js.map +1 -0
  125. package/build/esm/util/interfaceUtils.js +10 -0
  126. package/build/esm/util/interfaceUtils.js.map +1 -1
  127. package/build/esm/util/objectSpecifierUtils.js +12 -0
  128. package/build/esm/util/objectSpecifierUtils.js.map +1 -1
  129. package/build/esm/util/toDataValueQueries.js +11 -0
  130. package/build/esm/util/toDataValueQueries.js.map +1 -1
  131. package/build/types/MinimalClientContext.d.ts +1 -0
  132. package/build/types/MinimalClientContext.d.ts.map +1 -1
  133. package/build/types/createClient.d.ts +1 -0
  134. package/build/types/createClient.d.ts.map +1 -1
  135. package/build/types/index.d.ts +2 -1
  136. package/build/types/index.d.ts.map +1 -1
  137. package/build/types/object/fetchPage.d.ts.map +1 -1
  138. package/build/types/observable/internal/ActionApplication.d.ts.map +1 -1
  139. package/build/types/public/unstable-do-not-use.d.ts +1 -0
  140. package/build/types/public/unstable-do-not-use.d.ts.map +1 -1
  141. package/build/types/queries/applyQuery.d.ts +5 -1
  142. package/build/types/queries/applyQuery.d.ts.map +1 -1
  143. package/build/types/queries/types.d.ts +2 -2
  144. package/build/types/queries/types.d.ts.map +1 -1
  145. package/build/types/util/extractObjectOrInterfaceType.d.ts +1 -0
  146. package/build/types/util/extractObjectOrInterfaceType.d.ts.map +1 -0
  147. package/build/types/util/extractObjectOrInterfaceType.test.d.ts +1 -0
  148. package/build/types/util/extractObjectOrInterfaceType.test.d.ts.map +1 -0
  149. package/build/types/util/objectSpecifierUtils.d.ts +13 -1
  150. package/build/types/util/objectSpecifierUtils.d.ts.map +1 -1
  151. package/package.json +13 -13
  152. package/build/cjs/chunk-OKQUXVEK.cjs.map +0 -1
  153. package/build/cjs/chunk-ROQUNKJT.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"aggregate.test.js","names":["objectTypeWithAllPropertyTypes","Todo","expectType","beforeAll","describe","expect","expectTypeOf","it","vi","createClient","createMinimalClient","aggregate","metadata","expectsClientVersion","ontologyRid","ontologyApiName","userAgent","mockFetch","clientCtx","client","fn","mockResolvedValue","ok","status","json","Promise","resolve","aggregationResponse","undefined","accuracy","data","group","string","metrics","name","value","toEqualTypeOf","notGrouped","type","objectType","$select","toHaveBeenCalledWith","body","JSON","stringify","method","headers","anything","approximateDistinct","exactDistinct","id","max","avg","$count","grouped","$groupBy","$exactWithLimit","integer","$ranges","short","float","$fixedWidth","dateTime","$duration","date","boolean","double","$defaultValue","$limit","$group","wrongSelectKey","wrongKey","$exact","toBeCallableWith","direction","timestamp"],"sources":["aggregate.test.ts"],"sourcesContent":["/*\n * Copyright 2023 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 AggregateOpts,\n AggregateOptsThatErrorsAndDisallowsOrderingWithMultipleGroupBy,\n GroupByClause,\n ValidAggregationKeys,\n} from \"@osdk/api\";\nimport type { Employee } from \"@osdk/client.test.ontology\";\nimport {\n objectTypeWithAllPropertyTypes,\n Todo,\n} from \"@osdk/client.test.ontology\";\nimport type { AggregateObjectsResponseV2 } from \"@osdk/foundry.ontologies\";\nimport type { TypeOf } from \"ts-expect\";\nimport { expectType } from \"ts-expect\";\nimport {\n beforeAll,\n describe,\n expect,\n expectTypeOf,\n it,\n type Mock,\n vi,\n} from \"vitest\";\nimport type { Client } from \"../Client.js\";\nimport { createClient } from \"../createClient.js\";\nimport { createMinimalClient } from \"../createMinimalClient.js\";\nimport type { MinimalClient } from \"../MinimalClientContext.js\";\nimport { aggregate } from \"./aggregate.js\";\n\nconst metadata = {\n expectsClientVersion: \"0.0.0\",\n ontologyRid: \"ri.a.b.c.d\",\n ontologyApiName: \"apiName\",\n userAgent: \"\",\n};\n\nlet mockFetch: Mock;\nlet clientCtx: MinimalClient;\nlet client: Client;\n\nbeforeAll(() => {\n mockFetch = vi.fn();\n\n mockFetch.mockResolvedValue({\n ok: true,\n status: 200,\n json: () => new Promise((resolve) => resolve(aggregationResponse)),\n });\n\n clientCtx = createMinimalClient(\n metadata,\n \"https://host.com\",\n async () => \"myAccessToken\",\n {},\n mockFetch,\n );\n\n client = createClient(\n \"https://host.com\",\n metadata.ontologyRid,\n async () => \"\",\n undefined,\n mockFetch,\n );\n});\n\nconst aggregationResponse: AggregateObjectsResponseV2 = {\n accuracy: \"APPROXIMATE\",\n data: [\n {\n group: {\n string: \"hello\",\n },\n metrics: [\n {\n name: \"string.approximateDistinct\",\n value: 1,\n },\n {\n name: \"string.exactDistinct\",\n value: 1,\n },\n {\n name: \"id.max\",\n value: 1,\n },\n {\n name: \"id.avg\",\n value: 1,\n },\n ],\n },\n ],\n};\n\ndescribe(\"aggregate\", () => {\n it(\"works\", async () => {\n expectTypeOf<ValidAggregationKeys<Todo>>().toEqualTypeOf<\n | \"$count\"\n | \"id:min\"\n | \"id:max\"\n | \"id:sum\"\n | \"id:avg\"\n | \"id:approximateDistinct\"\n | \"id:exactDistinct\"\n | \"text:approximateDistinct\"\n | \"text:exactDistinct\"\n >;\n\n const notGrouped = await aggregate(\n clientCtx,\n objectTypeWithAllPropertyTypes,\n {\n type: \"base\",\n objectType: \"ToDo\",\n },\n {\n $select: {\n \"string:approximateDistinct\": \"unordered\",\n \"string:exactDistinct\": \"unordered\",\n \"id:max\": \"unordered\",\n \"id:avg\": \"unordered\",\n \"$count\": \"unordered\",\n },\n },\n );\n\n expect(mockFetch).toHaveBeenCalledWith(\n \"https://host.com/api/v2/ontologies/ri.a.b.c.d/objectSets/aggregate\",\n {\n body: JSON.stringify({\n \"objectSet\": { \"type\": \"base\", \"objectType\": \"ToDo\" },\n \"groupBy\": [],\n \"aggregation\": [\n {\n \"type\": \"approximateDistinct\",\n \"name\": \"string.approximateDistinct\",\n \"field\": \"string\",\n },\n {\n \"type\": \"exactDistinct\",\n \"name\": \"string.exactDistinct\",\n \"field\": \"string\",\n },\n { \"type\": \"max\", \"name\": \"id.max\", \"field\": \"id\" },\n { \"type\": \"avg\", \"name\": \"id.avg\", \"field\": \"id\" },\n { \"type\": \"count\", \"name\": \"count\" },\n ],\n }),\n method: \"POST\",\n headers: expect.anything(),\n },\n );\n\n expectType<number>(notGrouped.string.approximateDistinct);\n expectType<number>(notGrouped.string.exactDistinct);\n expectType<number | undefined>(notGrouped.id.max);\n expectType<number | undefined>(notGrouped.id.avg);\n expectType<number>(notGrouped.$count);\n expectType<\n TypeOf<\n {\n other: any;\n },\n typeof notGrouped\n >\n >(false); // subSelect should hide unused keys\n\n const grouped = await client(objectTypeWithAllPropertyTypes).aggregate(\n {\n $select: {\n \"id:approximateDistinct\": \"unordered\",\n \"id:exactDistinct\": \"unordered\",\n \"id:max\": \"unordered\",\n \"$count\": \"unordered\",\n },\n $groupBy: {\n string: \"exact\",\n id: { $exactWithLimit: 10 },\n integer: { $ranges: [[1, 2]] },\n short: {\n $ranges: [[2, 3], [4, 5]],\n },\n float: { $fixedWidth: 10 },\n dateTime: { $duration: [10, \"seconds\"] },\n date: { $ranges: [[\"2024-01-02\", \"2024-01-09\"]] },\n boolean: \"exact\",\n double: { \"$exact\": { $defaultValue: \"default\", $limit: 300 } },\n },\n },\n );\n expectType<Array<any>>(grouped);\n expectType<string | undefined>(grouped[0].$group.string);\n expectType<number>(grouped[0].id.approximateDistinct);\n expectType<number>(grouped[0].id.exactDistinct);\n expectType<number>(grouped[0].$group.id);\n expectType<number>(grouped[0].$count);\n expectType<{ startValue: number; endValue: number }>(\n grouped[0].$group.integer,\n );\n expectType<{ startValue: number; endValue: number }>(\n grouped[0].$group.short,\n );\n expectType<number | undefined>(grouped[0].$group.float);\n expectType<string | undefined>(grouped[0].$group.dateTime);\n expectType<{ startValue: string; endValue: string }>(\n grouped[0].$group.date,\n );\n expectType<boolean | undefined>(grouped[0].$group.boolean);\n expectType<number | undefined>(grouped[0].$group.double);\n\n expectType<\n AggregateOptsThatErrorsAndDisallowsOrderingWithMultipleGroupBy<\n objectTypeWithAllPropertyTypes,\n {\n $select: {\n \"id:approximateDistinct\": \"unordered\";\n \"$count\": \"unordered\";\n };\n $groupBy: {\n string: \"exact\";\n id: { $exactWithLimit: 10 };\n integer: { $ranges: [[1, 2]] };\n short: {\n $ranges: [[2, 3], [4, 5]];\n };\n float: { $fixedWidth: 10 };\n };\n }\n >\n >({\n $select: {\n \"id:approximateDistinct\": \"unordered\",\n \"$count\": \"unordered\",\n },\n $groupBy: {\n string: \"exact\",\n id: { $exactWithLimit: 10 },\n integer: { $ranges: [[1, 2]] },\n short: {\n $ranges: [[2, 3], [4, 5]],\n },\n float: { $fixedWidth: 10 },\n },\n });\n\n expectType<\n AggregateOptsThatErrorsAndDisallowsOrderingWithMultipleGroupBy<\n objectTypeWithAllPropertyTypes,\n {\n $select: {\n \"id:approximateDistinct\": \"unordered\";\n \"wrongSelectKey\": \"don't work\";\n \"$count\": \"unordered\";\n };\n $groupBy: {\n wrongKey: \"don't work\";\n text: \"exact\";\n id: { $exact: { $limit: 10; $defaultValue: \"default\" } };\n integer: { $ranges: [[1, 2]] };\n short: {\n $ranges: [[2, 3], [4, 5]];\n };\n float: { $fixedWidth: 10 };\n };\n }\n >\n >({\n $select: {\n id: \"approximateDistinct\",\n // @ts-expect-error\n wrongSelectKey: \"don't work\",\n \"$count\": \"unordered\",\n },\n $groupBy: {\n // @ts-expect-error\n wrongKey: \"don't work\",\n string: \"exact\",\n id: { $exact: { $limit: 10, $defaultValue: \"default\" } },\n integer: { $ranges: [[1, 2]] },\n short: {\n $ranges: [[2, 3], [4, 5]],\n },\n float: { $fixedWidth: 10 },\n },\n });\n\n expectTypeOf<\n typeof aggregate<objectTypeWithAllPropertyTypes, {\n $select: {\n \"id:approximateDistinct\": \"unordered\";\n \"wrongSelectKey\": \"wrong key\";\n \"$count\": \"unordered\";\n };\n $groupBy: {\n string: \"exact\";\n wrongKey: \"wrongKey\";\n id: { $exactWithLimit: 10 };\n integer: { $ranges: [[1, 2]] };\n short: {\n $ranges: [[2, 3], [4, 5]];\n };\n float: { $fixedWidth: 10 };\n };\n }>\n >().toBeCallableWith(\n clientCtx,\n objectTypeWithAllPropertyTypes,\n {\n type: \"base\",\n objectType: \"ToDo\",\n },\n {\n $select: {\n \"id:approximateDistinct\": \"unordered\",\n // @ts-expect-error\n \"wrongSelectKey\": \"don't work\",\n \"$count\": \"unordered\",\n },\n $groupBy: {\n string: \"exact\",\n // @ts-expect-error\n wrongKey: \"wrongKey\",\n id: { $exactWithLimit: 10 },\n integer: { $ranges: [[1, 2]] },\n short: {\n $ranges: [[2, 3], [4, 5]],\n },\n float: { $fixedWidth: 10 },\n },\n },\n );\n\n expectType<GroupByClause<objectTypeWithAllPropertyTypes>>({\n dateTime: { $duration: [10, \"seconds\"] },\n date: { $duration: [1, \"years\"] },\n });\n\n // Can't use value greater than 1 for years\n expectType<GroupByClause<objectTypeWithAllPropertyTypes>>({\n // @ts-expect-error\n date: { $duration: [10, \"years\"] },\n });\n\n // Can't use arbitrary string for time unit\n expectType<GroupByClause<objectTypeWithAllPropertyTypes>>({\n // @ts-expect-error\n dateTime: { $duration: [1, \"nonexistentTimeUnit\"] },\n });\n\n // Can't use time unit smaller than days for date type\n expectType<GroupByClause<objectTypeWithAllPropertyTypes>>({\n // @ts-expect-error\n date: { $duration: [1, \"seconds\"] },\n });\n });\n\n it(\"works with $orderBy (no groups)\", async () => {\n const notGrouped = await aggregate(\n clientCtx,\n objectTypeWithAllPropertyTypes,\n {\n type: \"base\",\n objectType: \"ToDo\",\n },\n {\n $select: {\n \"string:approximateDistinct\": \"asc\",\n \"id:exactDistinct\": \"asc\",\n \"id:avg\": \"desc\",\n \"id:max\": \"asc\",\n \"$count\": \"unordered\",\n },\n },\n );\n\n expect(mockFetch).toHaveBeenCalledWith(\n \"https://host.com/api/v2/ontologies/ri.a.b.c.d/objectSets/aggregate\",\n {\n body: JSON.stringify({\n \"objectSet\": { \"type\": \"base\", \"objectType\": \"ToDo\" },\n \"groupBy\": [],\n \"aggregation\": [\n {\n \"type\": \"approximateDistinct\",\n \"name\": \"string.approximateDistinct\",\n direction: \"ASC\",\n \"field\": \"string\",\n },\n {\n \"type\": \"exactDistinct\",\n \"name\": \"id.exactDistinct\",\n direction: \"ASC\",\n \"field\": \"id\",\n },\n {\n \"type\": \"avg\",\n \"name\": \"id.avg\",\n direction: \"DESC\",\n \"field\": \"id\",\n },\n {\n \"type\": \"max\",\n \"name\": \"id.max\",\n direction: \"ASC\",\n \"field\": \"id\",\n },\n { \"type\": \"count\", \"name\": \"count\" },\n ],\n }),\n method: \"POST\",\n headers: expect.anything(),\n },\n );\n\n expectType<number>(notGrouped.string.approximateDistinct);\n expectType<number>(notGrouped.id.exactDistinct);\n expectType<number>(notGrouped.id.max);\n expectType<number>(notGrouped.id.avg);\n expectType<number>(notGrouped.$count);\n expectType<\n TypeOf<\n {\n other: any;\n },\n typeof notGrouped\n >\n >(false); // subselect should hide unused keys\n });\n\n it(\"works with $orderBy (1 group)\", async () => {\n const grouped = await aggregate(\n clientCtx,\n objectTypeWithAllPropertyTypes,\n {\n type: \"base\",\n objectType: \"ToDo\",\n },\n {\n $select: {\n \"id:max\": \"desc\",\n \"string:approximateDistinct\": \"asc\",\n \"id:avg\": \"unordered\",\n \"$count\": \"unordered\",\n \"string:exactDistinct\": \"desc\",\n },\n $groupBy: {\n id: \"exact\",\n },\n },\n );\n\n expect(mockFetch).toHaveBeenCalledWith(\n \"https://host.com/api/v2/ontologies/ri.a.b.c.d/objectSets/aggregate\",\n {\n body: JSON.stringify({\n \"objectSet\": { \"type\": \"base\", \"objectType\": \"ToDo\" },\n \"groupBy\": [{ \"type\": \"exact\", \"field\": \"id\" }],\n \"aggregation\": [\n {\n \"type\": \"max\",\n \"name\": \"id.max\",\n direction: \"DESC\",\n \"field\": \"id\",\n },\n {\n \"type\": \"approximateDistinct\",\n \"name\": \"string.approximateDistinct\",\n direction: \"ASC\",\n \"field\": \"string\",\n },\n { \"type\": \"avg\", \"name\": \"id.avg\", \"field\": \"id\" },\n { \"type\": \"count\", \"name\": \"count\" },\n {\n \"type\": \"exactDistinct\",\n \"name\": \"string.exactDistinct\",\n direction: \"DESC\",\n \"field\": \"string\",\n },\n ],\n }),\n method: \"POST\",\n headers: expect.anything(),\n },\n );\n\n expectType<number>(grouped[0].string.approximateDistinct);\n expectType<number>(grouped[0].id.max);\n expectType<number>(grouped[0].id.avg);\n expectType<number>(grouped[0].$count);\n expectType<number>(grouped[0].string.exactDistinct);\n expectType<\n TypeOf<\n {\n other: any;\n },\n typeof grouped\n >\n >(false); // subselect should hide unused keys\n });\n\n it(\"prohibits ordered select with multiple groupBy\", async () => {\n await client(Todo).aggregate(\n {\n $select: {\n // @ts-expect-error\n \"id:max\": \"desc\",\n // @ts-expect-error\n \"text:approximateDistinct\": \"asc\",\n // @ts-expect-error\n \"text:exactDistinct\": \"desc\",\n \"id:avg\": \"unordered\",\n \"$count\": \"unordered\",\n },\n $groupBy: {\n id: \"exact\",\n timestamp: \"exact\",\n },\n },\n );\n });\n\n it(\"works with where: todo\", async () => {\n const f: AggregateOpts<\n Employee\n > = {\n $select: {\n \"office:approximateDistinct\": \"unordered\",\n },\n };\n });\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"aggregate.test.js","names":["objectTypeWithAllPropertyTypes","Todo","expectType","beforeAll","describe","expect","expectTypeOf","it","vi","createClient","createMinimalClient","aggregate","metadata","expectsClientVersion","ontologyRid","ontologyApiName","userAgent","mockFetch","clientCtx","client","fn","mockResolvedValue","ok","status","json","Promise","resolve","aggregationResponse","undefined","accuracy","data","group","string","metrics","name","value","toEqualTypeOf","notGrouped","type","objectType","$select","toHaveBeenCalledWith","body","JSON","stringify","method","headers","anything","approximateDistinct","exactDistinct","id","max","avg","$count","grouped","$groupBy","$exactWithLimit","integer","$ranges","short","float","$fixedWidth","dateTime","$duration","date","boolean","double","$defaultValue","$limit","$group","wrongSelectKey","wrongKey","$exact","toBeCallableWith","direction","timestamp","result","text","$includeNullValue"],"sources":["aggregate.test.ts"],"sourcesContent":["/*\n * Copyright 2023 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 AggregateOpts,\n AggregateOptsThatErrorsAndDisallowsOrderingWithMultipleGroupBy,\n GroupByClause,\n ValidAggregationKeys,\n} from \"@osdk/api\";\nimport type { Employee } from \"@osdk/client.test.ontology\";\nimport {\n objectTypeWithAllPropertyTypes,\n Todo,\n} from \"@osdk/client.test.ontology\";\nimport type { AggregateObjectsResponseV2 } from \"@osdk/foundry.ontologies\";\nimport type { TypeOf } from \"ts-expect\";\nimport { expectType } from \"ts-expect\";\nimport {\n beforeAll,\n describe,\n expect,\n expectTypeOf,\n it,\n type Mock,\n vi,\n} from \"vitest\";\nimport type { Client } from \"../Client.js\";\nimport { createClient } from \"../createClient.js\";\nimport { createMinimalClient } from \"../createMinimalClient.js\";\nimport type { MinimalClient } from \"../MinimalClientContext.js\";\nimport { aggregate } from \"./aggregate.js\";\n\nconst metadata = {\n expectsClientVersion: \"0.0.0\",\n ontologyRid: \"ri.a.b.c.d\",\n ontologyApiName: \"apiName\",\n userAgent: \"\",\n};\n\nlet mockFetch: Mock;\nlet clientCtx: MinimalClient;\nlet client: Client;\n\nbeforeAll(() => {\n mockFetch = vi.fn();\n\n mockFetch.mockResolvedValue({\n ok: true,\n status: 200,\n json: () => new Promise((resolve) => resolve(aggregationResponse)),\n });\n\n clientCtx = createMinimalClient(\n metadata,\n \"https://host.com\",\n async () => \"myAccessToken\",\n {},\n mockFetch,\n );\n\n client = createClient(\n \"https://host.com\",\n metadata.ontologyRid,\n async () => \"\",\n undefined,\n mockFetch,\n );\n});\n\nconst aggregationResponse: AggregateObjectsResponseV2 = {\n accuracy: \"APPROXIMATE\",\n data: [\n {\n group: {\n string: \"hello\",\n },\n metrics: [\n {\n name: \"string.approximateDistinct\",\n value: 1,\n },\n {\n name: \"string.exactDistinct\",\n value: 1,\n },\n {\n name: \"id.max\",\n value: 1,\n },\n {\n name: \"id.avg\",\n value: 1,\n },\n ],\n },\n ],\n};\n\ndescribe(\"aggregate\", () => {\n it(\"works\", async () => {\n expectTypeOf<ValidAggregationKeys<Todo>>().toEqualTypeOf<\n | \"$count\"\n | \"id:min\"\n | \"id:max\"\n | \"id:sum\"\n | \"id:avg\"\n | \"id:approximateDistinct\"\n | \"id:exactDistinct\"\n | \"text:approximateDistinct\"\n | \"text:exactDistinct\"\n >;\n\n const notGrouped = await aggregate(\n clientCtx,\n objectTypeWithAllPropertyTypes,\n {\n type: \"base\",\n objectType: \"ToDo\",\n },\n {\n $select: {\n \"string:approximateDistinct\": \"unordered\",\n \"string:exactDistinct\": \"unordered\",\n \"id:max\": \"unordered\",\n \"id:avg\": \"unordered\",\n \"$count\": \"unordered\",\n },\n },\n );\n\n expect(mockFetch).toHaveBeenCalledWith(\n \"https://host.com/api/v2/ontologies/ri.a.b.c.d/objectSets/aggregate\",\n {\n body: JSON.stringify({\n \"objectSet\": { \"type\": \"base\", \"objectType\": \"ToDo\" },\n \"groupBy\": [],\n \"aggregation\": [\n {\n \"type\": \"approximateDistinct\",\n \"name\": \"string.approximateDistinct\",\n \"field\": \"string\",\n },\n {\n \"type\": \"exactDistinct\",\n \"name\": \"string.exactDistinct\",\n \"field\": \"string\",\n },\n { \"type\": \"max\", \"name\": \"id.max\", \"field\": \"id\" },\n { \"type\": \"avg\", \"name\": \"id.avg\", \"field\": \"id\" },\n { \"type\": \"count\", \"name\": \"count\" },\n ],\n }),\n method: \"POST\",\n headers: expect.anything(),\n },\n );\n\n expectType<number>(notGrouped.string.approximateDistinct);\n expectType<number>(notGrouped.string.exactDistinct);\n expectType<number | undefined>(notGrouped.id.max);\n expectType<number | undefined>(notGrouped.id.avg);\n expectType<number>(notGrouped.$count);\n expectType<\n TypeOf<\n {\n other: any;\n },\n typeof notGrouped\n >\n >(false); // subSelect should hide unused keys\n\n const grouped = await client(objectTypeWithAllPropertyTypes).aggregate(\n {\n $select: {\n \"id:approximateDistinct\": \"unordered\",\n \"id:exactDistinct\": \"unordered\",\n \"id:max\": \"unordered\",\n \"$count\": \"unordered\",\n },\n $groupBy: {\n string: \"exact\",\n id: { $exactWithLimit: 10 },\n integer: { $ranges: [[1, 2]] },\n short: {\n $ranges: [[2, 3], [4, 5]],\n },\n float: { $fixedWidth: 10 },\n dateTime: { $duration: [10, \"seconds\"] },\n date: { $ranges: [[\"2024-01-02\", \"2024-01-09\"]] },\n boolean: \"exact\",\n double: { \"$exact\": { $defaultValue: \"default\", $limit: 300 } },\n },\n },\n );\n expectType<Array<any>>(grouped);\n expectType<string | undefined>(grouped[0].$group.string);\n expectType<number>(grouped[0].id.approximateDistinct);\n expectType<number>(grouped[0].id.exactDistinct);\n expectType<number>(grouped[0].$group.id);\n expectType<number>(grouped[0].$count);\n expectType<{ startValue: number; endValue: number }>(\n grouped[0].$group.integer,\n );\n expectType<{ startValue: number; endValue: number }>(\n grouped[0].$group.short,\n );\n expectType<number | undefined>(grouped[0].$group.float);\n expectType<string | undefined>(grouped[0].$group.dateTime);\n expectType<{ startValue: string; endValue: string }>(\n grouped[0].$group.date,\n );\n expectType<boolean | undefined>(grouped[0].$group.boolean);\n expectType<number | undefined>(grouped[0].$group.double);\n\n expectType<\n AggregateOptsThatErrorsAndDisallowsOrderingWithMultipleGroupBy<\n objectTypeWithAllPropertyTypes,\n {\n $select: {\n \"id:approximateDistinct\": \"unordered\";\n \"$count\": \"unordered\";\n };\n $groupBy: {\n string: \"exact\";\n id: { $exactWithLimit: 10 };\n integer: { $ranges: [[1, 2]] };\n short: {\n $ranges: [[2, 3], [4, 5]];\n };\n float: { $fixedWidth: 10 };\n };\n }\n >\n >({\n $select: {\n \"id:approximateDistinct\": \"unordered\",\n \"$count\": \"unordered\",\n },\n $groupBy: {\n string: \"exact\",\n id: { $exactWithLimit: 10 },\n integer: { $ranges: [[1, 2]] },\n short: {\n $ranges: [[2, 3], [4, 5]],\n },\n float: { $fixedWidth: 10 },\n },\n });\n\n expectType<\n AggregateOptsThatErrorsAndDisallowsOrderingWithMultipleGroupBy<\n objectTypeWithAllPropertyTypes,\n {\n $select: {\n \"id:approximateDistinct\": \"unordered\";\n \"wrongSelectKey\": \"don't work\";\n \"$count\": \"unordered\";\n };\n $groupBy: {\n wrongKey: \"don't work\";\n text: \"exact\";\n id: { $exact: { $limit: 10; $defaultValue: \"default\" } };\n integer: { $ranges: [[1, 2]] };\n short: {\n $ranges: [[2, 3], [4, 5]];\n };\n float: { $fixedWidth: 10 };\n };\n }\n >\n >({\n $select: {\n id: \"approximateDistinct\",\n // @ts-expect-error\n wrongSelectKey: \"don't work\",\n \"$count\": \"unordered\",\n },\n $groupBy: {\n // @ts-expect-error\n wrongKey: \"don't work\",\n string: \"exact\",\n id: { $exact: { $limit: 10, $defaultValue: \"default\" } },\n integer: { $ranges: [[1, 2]] },\n short: {\n $ranges: [[2, 3], [4, 5]],\n },\n float: { $fixedWidth: 10 },\n },\n });\n\n expectTypeOf<\n typeof aggregate<objectTypeWithAllPropertyTypes, {\n $select: {\n \"id:approximateDistinct\": \"unordered\";\n \"wrongSelectKey\": \"wrong key\";\n \"$count\": \"unordered\";\n };\n $groupBy: {\n string: \"exact\";\n wrongKey: \"wrongKey\";\n id: { $exactWithLimit: 10 };\n integer: { $ranges: [[1, 2]] };\n short: {\n $ranges: [[2, 3], [4, 5]];\n };\n float: { $fixedWidth: 10 };\n };\n }>\n >().toBeCallableWith(\n clientCtx,\n objectTypeWithAllPropertyTypes,\n {\n type: \"base\",\n objectType: \"ToDo\",\n },\n {\n $select: {\n \"id:approximateDistinct\": \"unordered\",\n // @ts-expect-error\n \"wrongSelectKey\": \"don't work\",\n \"$count\": \"unordered\",\n },\n $groupBy: {\n string: \"exact\",\n // @ts-expect-error\n wrongKey: \"wrongKey\",\n id: { $exactWithLimit: 10 },\n integer: { $ranges: [[1, 2]] },\n short: {\n $ranges: [[2, 3], [4, 5]],\n },\n float: { $fixedWidth: 10 },\n },\n },\n );\n\n expectType<GroupByClause<objectTypeWithAllPropertyTypes>>({\n dateTime: { $duration: [10, \"seconds\"] },\n date: { $duration: [1, \"years\"] },\n });\n\n // Can't use value greater than 1 for years\n expectType<GroupByClause<objectTypeWithAllPropertyTypes>>({\n // @ts-expect-error\n date: { $duration: [10, \"years\"] },\n });\n\n // Can't use arbitrary string for time unit\n expectType<GroupByClause<objectTypeWithAllPropertyTypes>>({\n // @ts-expect-error\n dateTime: { $duration: [1, \"nonexistentTimeUnit\"] },\n });\n\n // Can't use time unit smaller than days for date type\n expectType<GroupByClause<objectTypeWithAllPropertyTypes>>({\n // @ts-expect-error\n date: { $duration: [1, \"seconds\"] },\n });\n });\n\n it(\"works with $orderBy (no groups)\", async () => {\n const notGrouped = await aggregate(\n clientCtx,\n objectTypeWithAllPropertyTypes,\n {\n type: \"base\",\n objectType: \"ToDo\",\n },\n {\n $select: {\n \"string:approximateDistinct\": \"asc\",\n \"id:exactDistinct\": \"asc\",\n \"id:avg\": \"desc\",\n \"id:max\": \"asc\",\n \"$count\": \"unordered\",\n },\n },\n );\n\n expect(mockFetch).toHaveBeenCalledWith(\n \"https://host.com/api/v2/ontologies/ri.a.b.c.d/objectSets/aggregate\",\n {\n body: JSON.stringify({\n \"objectSet\": { \"type\": \"base\", \"objectType\": \"ToDo\" },\n \"groupBy\": [],\n \"aggregation\": [\n {\n \"type\": \"approximateDistinct\",\n \"name\": \"string.approximateDistinct\",\n direction: \"ASC\",\n \"field\": \"string\",\n },\n {\n \"type\": \"exactDistinct\",\n \"name\": \"id.exactDistinct\",\n direction: \"ASC\",\n \"field\": \"id\",\n },\n {\n \"type\": \"avg\",\n \"name\": \"id.avg\",\n direction: \"DESC\",\n \"field\": \"id\",\n },\n {\n \"type\": \"max\",\n \"name\": \"id.max\",\n direction: \"ASC\",\n \"field\": \"id\",\n },\n { \"type\": \"count\", \"name\": \"count\" },\n ],\n }),\n method: \"POST\",\n headers: expect.anything(),\n },\n );\n\n expectType<number>(notGrouped.string.approximateDistinct);\n expectType<number>(notGrouped.id.exactDistinct);\n expectType<number>(notGrouped.id.max);\n expectType<number>(notGrouped.id.avg);\n expectType<number>(notGrouped.$count);\n expectType<\n TypeOf<\n {\n other: any;\n },\n typeof notGrouped\n >\n >(false); // subselect should hide unused keys\n });\n\n it(\"works with $orderBy (1 group)\", async () => {\n const grouped = await aggregate(\n clientCtx,\n objectTypeWithAllPropertyTypes,\n {\n type: \"base\",\n objectType: \"ToDo\",\n },\n {\n $select: {\n \"id:max\": \"desc\",\n \"string:approximateDistinct\": \"asc\",\n \"id:avg\": \"unordered\",\n \"$count\": \"unordered\",\n \"string:exactDistinct\": \"desc\",\n },\n $groupBy: {\n id: \"exact\",\n },\n },\n );\n\n expect(mockFetch).toHaveBeenCalledWith(\n \"https://host.com/api/v2/ontologies/ri.a.b.c.d/objectSets/aggregate\",\n {\n body: JSON.stringify({\n \"objectSet\": { \"type\": \"base\", \"objectType\": \"ToDo\" },\n \"groupBy\": [{ \"type\": \"exact\", \"field\": \"id\" }],\n \"aggregation\": [\n {\n \"type\": \"max\",\n \"name\": \"id.max\",\n direction: \"DESC\",\n \"field\": \"id\",\n },\n {\n \"type\": \"approximateDistinct\",\n \"name\": \"string.approximateDistinct\",\n direction: \"ASC\",\n \"field\": \"string\",\n },\n { \"type\": \"avg\", \"name\": \"id.avg\", \"field\": \"id\" },\n { \"type\": \"count\", \"name\": \"count\" },\n {\n \"type\": \"exactDistinct\",\n \"name\": \"string.exactDistinct\",\n direction: \"DESC\",\n \"field\": \"string\",\n },\n ],\n }),\n method: \"POST\",\n headers: expect.anything(),\n },\n );\n\n expectType<number>(grouped[0].string.approximateDistinct);\n expectType<number>(grouped[0].id.max);\n expectType<number>(grouped[0].id.avg);\n expectType<number>(grouped[0].$count);\n expectType<number>(grouped[0].string.exactDistinct);\n expectType<\n TypeOf<\n {\n other: any;\n },\n typeof grouped\n >\n >(false); // subselect should hide unused keys\n });\n\n it(\"prohibits ordered select with multiple groupBy\", async () => {\n await client(Todo).aggregate(\n {\n $select: {\n // @ts-expect-error\n \"id:max\": \"desc\",\n // @ts-expect-error\n \"text:approximateDistinct\": \"asc\",\n // @ts-expect-error\n \"text:exactDistinct\": \"desc\",\n \"id:avg\": \"unordered\",\n \"$count\": \"unordered\",\n },\n $groupBy: {\n id: \"exact\",\n timestamp: \"exact\",\n },\n },\n );\n });\n\n describe(\"$exact\", () => {\n it(\"correctly nulls bucket type when $includeNullValue is true\", async () => {\n const result = await client(Todo).aggregate({\n $select: {\n \"id:avg\": \"unordered\",\n },\n $groupBy: {\n text: { $exact: { $includeNullValue: true } },\n },\n });\n\n expectTypeOf(result[0].$group.text).toEqualTypeOf<\n string | null\n >();\n });\n\n it(\"correctly does not null bucket type when $includeNullValue is not included\", async () => {\n const result = await client(Todo).aggregate({\n $select: { \"id:avg\": \"unordered\" },\n $groupBy: { text: { $exact: { $limit: 10 } } },\n });\n\n expectTypeOf(result[0].$group.text).toEqualTypeOf<string>();\n });\n\n it(\"correctly does not null bucket type when $defaultValue is specified\", async () => {\n const result = await client(Todo).aggregate({\n $select: { \"id:avg\": \"unordered\" },\n $groupBy: { text: { $exact: { $defaultValue: \"null\" } } },\n });\n\n expectTypeOf(result[0].$group.text).toEqualTypeOf<string>();\n });\n\n it(\"disallows null values with ordering\", () => {\n void client(Todo).aggregate({\n $select: {\n // @ts-expect-error\n \"id:avg\": \"asc\",\n },\n $groupBy: {\n text: { $exact: { $includeNullValue: true } },\n },\n });\n });\n\n it(\"disallows null values with default value\", async () => {\n void client(Todo).aggregate({\n $select: {\n \"text:exactDistinct\": \"unordered\",\n \"id:max\": \"unordered\",\n \"$count\": \"unordered\",\n },\n $groupBy: {\n text: {\n // Should work since $includeNullValue is false. Making this possible makes intellisense better and\n // lets the user understand the difference between the two.\n $exact: { $defaultValue: \"default\", $includeNullValue: false },\n },\n },\n });\n\n void client(Todo).aggregate({\n $select: {\n \"text:exactDistinct\": \"unordered\",\n \"id:max\": \"unordered\",\n \"$count\": \"unordered\",\n },\n $groupBy: {\n text: {\n // @ts-expect-error\n $exact: { $defaultValue: \"default\", $includeNullValue: true },\n },\n },\n });\n });\n\n it(\"allows null or default values with limit\", async () => {\n const result = await client(Todo).aggregate({\n $select: {\n \"text:exactDistinct\": \"unordered\",\n \"id:max\": \"unordered\",\n \"$count\": \"unordered\",\n },\n $groupBy: {\n text: { $exact: { $limit: 10, $includeNullValue: true } },\n },\n });\n\n expectTypeOf(result[0].$group.text).toEqualTypeOf<\n string | null\n >();\n });\n });\n\n it(\"works with where: todo\", async () => {\n const f: AggregateOpts<\n Employee\n > = {\n $select: {\n \"office:approximateDistinct\": \"unordered\",\n },\n };\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -72,11 +72,12 @@ export async function convertWireToOsdkObjects(client, objects, interfaceApiName
72
72
  */
73
73
  export async function convertWireToOsdkObjects2(client, objects, interfaceApiName, derivedPropertyTypeByName, forceRemoveRid = false, selectedProps, strictNonNull = false, interfaceToObjectTypeMappings = {}) {
74
74
  fixObjectPropertiesInPlace(objects, forceRemoveRid);
75
+ const isInterfaceScoped = Object.keys(interfaceToObjectTypeMappings).length > 0;
75
76
  const ret = [];
76
77
  for (const rawObj of objects) {
77
78
  const objectDef = await client.ontologyProvider.getObjectDefinition(rawObj.$apiName);
78
79
  !objectDef ? process.env.NODE_ENV !== "production" ? invariant(false, `Missing definition for '${rawObj.$apiName}'`) : invariant(false) : void 0;
79
- const interfaceToObjMapping = interfaceApiName ? interfaceToObjectTypeMappings[interfaceApiName][rawObj.$apiName] : undefined;
80
+ const interfaceToObjMapping = interfaceApiName && isInterfaceScoped ? interfaceToObjectTypeMappings[interfaceApiName][rawObj.$apiName] : undefined;
80
81
  const ifaceSelected = interfaceApiName && interfaceToObjMapping ? selectedProps ? Object.keys(interfaceToObjMapping).filter(val => {
81
82
  selectedProps?.includes(interfaceToObjMapping[val]);
82
83
  }) : [...Object.values(interfaceToObjMapping), objectDef.primaryKeyApiName] : undefined;
@@ -97,7 +98,7 @@ export async function convertWireToOsdkObjects2(client, objects, interfaceApiNam
97
98
  continue;
98
99
  }
99
100
  let osdkObject = createOsdkObject(client, objectDef, rawObj, derivedPropertyTypeByName);
100
- if (interfaceApiName) osdkObject = osdkObject.$as(interfaceApiName);
101
+ if (interfaceApiName && isInterfaceScoped) osdkObject = osdkObject.$as(interfaceApiName);
101
102
  ret.push(osdkObject);
102
103
  }
103
104
  return ret;
@@ -1 +1 @@
1
- {"version":3,"file":"convertWireToOsdkObjects.js","names":["invariant","createOsdkObject","convertWireToOsdkObjects","client","objects","interfaceApiName","forceRemoveRid","derivedPropertyTypesByName","selectedProps","strictNonNull","fixObjectPropertiesInPlace","ifaceDef","ontologyProvider","getInterfaceDefinition","undefined","ifaceSelected","Object","keys","properties","ret","rawObj","objectDef","getObjectDefinition","$apiName","process","env","NODE_ENV","objProps","conforming","invariantInterfacesAsViews","apiName","isConforming","reframeAsObjectInPlace","convertInterfacePropNamesToObjectPropNames","Error","osdkObject","$as","push","convertWireToOsdkObjects2","derivedPropertyTypeByName","interfaceToObjectTypeMappings","interfaceToObjMapping","filter","val","includes","values","primaryKeyApiName","ifacePropsToMap","map","ifaceProp","interfaceMap","newProps","sptProp","regularProp","entries","value","assign","$primaryKey","def","obj","propsToCheck","propName","nullable","logger","debug","$objectType","warning","warn","console","error","objs","__rid","$rid","__apiName","__primaryKey","$title","__title"],"sources":["convertWireToOsdkObjects.ts"],"sourcesContent":["/*\n * Copyright 2023 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 InterfaceMetadata,\n NullabilityAdherence,\n ObjectMetadata,\n} from \"@osdk/api\";\nimport type {\n InterfaceToObjectTypeMappings,\n InterfaceTypeApiName,\n OntologyObjectV2,\n} from \"@osdk/foundry.ontologies\";\nimport invariant from \"tiny-invariant\";\nimport type { DerivedPropertyRuntimeMetadata } from \"../derivedProperties/derivedPropertyRuntimeMetadata.js\";\nimport type { MinimalClient } from \"../MinimalClientContext.js\";\nimport {\n type FetchedObjectTypeDefinition,\n} from \"../ontology/OntologyProvider.js\";\nimport { createOsdkObject } from \"./convertWireToOsdkObjects/createOsdkObject.js\";\nimport type { InterfaceHolder } from \"./convertWireToOsdkObjects/InterfaceHolder.js\";\nimport type { ObjectHolder } from \"./convertWireToOsdkObjects/ObjectHolder.js\";\nimport type { SimpleOsdkProperties } from \"./SimpleOsdkProperties.js\";\n\n/**\n * If interfaceApiName is not undefined, converts the instances of the\n * interface into their respective\n * underlying concrete types and then returns the $as() representation\n * for the consumers.\n *\n * Otherwise just does the conversion\n *\n * May mutate in place for performance reasons. If you need a clean copy,\n * keep it first.\n *\n * However, you must use the returned value, which will be whatever is correct.\n *\n * @internal\n * @param interfaceApiName - if undefined\n */\nexport async function convertWireToOsdkObjects(\n client: MinimalClient,\n objects: OntologyObjectV2[],\n interfaceApiName: string | undefined,\n forceRemoveRid: boolean = false,\n derivedPropertyTypesByName: DerivedPropertyRuntimeMetadata,\n selectedProps?: ReadonlyArray<string>,\n strictNonNull: NullabilityAdherence = false,\n): Promise<Array<ObjectHolder | InterfaceHolder>> {\n // remove the __ prefixed properties and convert them to $ prefixed.\n // updates in place\n fixObjectPropertiesInPlace(objects, forceRemoveRid);\n\n const ifaceDef = interfaceApiName\n ? await client.ontologyProvider.getInterfaceDefinition(interfaceApiName)\n : undefined;\n const ifaceSelected = ifaceDef\n ? (selectedProps ?? Object.keys(ifaceDef.properties))\n : undefined;\n\n const ret = [];\n for (const rawObj of objects) {\n const objectDef = await client.ontologyProvider.getObjectDefinition(\n rawObj.$apiName,\n );\n invariant(objectDef, `Missing definition for '${rawObj.$apiName}'`);\n\n // default value for when we are checking an object\n let objProps;\n\n let conforming = true;\n if (ifaceDef && ifaceSelected) {\n // API returns interface spt names but we cache by real values\n invariantInterfacesAsViews(objectDef, ifaceDef.apiName, client);\n\n conforming &&= isConforming(client, ifaceDef, rawObj, ifaceSelected);\n\n reframeAsObjectInPlace(objectDef, ifaceDef.apiName, rawObj);\n\n objProps = convertInterfacePropNamesToObjectPropNames(\n objectDef,\n ifaceDef.apiName,\n ifaceSelected,\n );\n } else {\n objProps = selectedProps ?? Object.keys(objectDef.properties);\n }\n\n conforming &&= isConforming(client, objectDef, rawObj, objProps);\n\n if (strictNonNull === \"throw\" && !conforming) {\n throw new Error(\n \"Unable to safely convert objects as some non nullable properties are null\",\n );\n } else if (strictNonNull === \"drop\" && !conforming) {\n continue;\n }\n\n let osdkObject: ObjectHolder | InterfaceHolder = createOsdkObject(\n client,\n objectDef,\n rawObj,\n derivedPropertyTypesByName,\n );\n if (interfaceApiName) osdkObject = osdkObject.$as(interfaceApiName);\n\n ret.push(osdkObject);\n }\n\n return ret;\n}\n\nexport async function convertWireToOsdkObjects2(\n client: MinimalClient,\n objects: OntologyObjectV2[],\n interfaceApiName: string,\n derivedPropertyTypeByName: DerivedPropertyRuntimeMetadata,\n forceRemoveRid?: boolean,\n selectedProps?: ReadonlyArray<string>,\n strictNonNull?: NullabilityAdherence,\n interfaceToObjectTypeMappings?: Record<\n InterfaceTypeApiName,\n InterfaceToObjectTypeMappings\n >,\n): Promise<Array<InterfaceHolder>>;\nexport async function convertWireToOsdkObjects2(\n client: MinimalClient,\n objects: OntologyObjectV2[],\n interfaceApiName: undefined,\n derivedPropertyTypeByName: DerivedPropertyRuntimeMetadata,\n forceRemoveRid?: boolean,\n selectedProps?: ReadonlyArray<string>,\n strictNonNull?: NullabilityAdherence,\n interfaceToObjectTypeMappings?: Record<\n InterfaceTypeApiName,\n InterfaceToObjectTypeMappings\n >,\n): Promise<Array<ObjectHolder>>;\nexport async function convertWireToOsdkObjects2(\n client: MinimalClient,\n objects: OntologyObjectV2[],\n interfaceApiName: string | undefined,\n derivedPropertyTypeByName: DerivedPropertyRuntimeMetadata,\n forceRemoveRid?: boolean,\n selectedProps?: ReadonlyArray<string>,\n strictNonNull?: NullabilityAdherence,\n interfaceToObjectTypeMappings?: Record<\n InterfaceTypeApiName,\n InterfaceToObjectTypeMappings\n >,\n): Promise<Array<ObjectHolder | InterfaceHolder>>;\n/**\n * @internal\n */\nexport async function convertWireToOsdkObjects2(\n client: MinimalClient,\n objects: OntologyObjectV2[],\n interfaceApiName: string | undefined,\n derivedPropertyTypeByName: DerivedPropertyRuntimeMetadata,\n forceRemoveRid: boolean = false,\n selectedProps?: ReadonlyArray<string>,\n strictNonNull: NullabilityAdherence = false,\n interfaceToObjectTypeMappings: Record<\n InterfaceTypeApiName,\n InterfaceToObjectTypeMappings\n > = {},\n): Promise<Array<ObjectHolder | InterfaceHolder>> {\n fixObjectPropertiesInPlace(objects, forceRemoveRid);\n\n const ret = [];\n for (const rawObj of objects) {\n const objectDef = await client.ontologyProvider.getObjectDefinition(\n rawObj.$apiName,\n );\n invariant(objectDef, `Missing definition for '${rawObj.$apiName}'`);\n\n const interfaceToObjMapping = interfaceApiName\n ? interfaceToObjectTypeMappings[interfaceApiName as InterfaceTypeApiName][\n rawObj.$apiName\n ]\n : undefined;\n\n const ifaceSelected = interfaceApiName && interfaceToObjMapping\n ? (selectedProps\n ? Object.keys(interfaceToObjMapping).filter(\n val => {\n selectedProps?.includes(interfaceToObjMapping[val]);\n },\n )\n : [\n ...Object.values(interfaceToObjMapping),\n objectDef.primaryKeyApiName,\n ])\n : undefined;\n\n // default value for when we are checking an object\n let objProps;\n\n let conforming = true;\n if (interfaceApiName && ifaceSelected) {\n invariantInterfacesAsViews(objectDef, interfaceApiName, client);\n\n objProps = ifaceSelected;\n } else {\n objProps = selectedProps ?? Object.keys(objectDef.properties);\n }\n\n conforming &&= isConforming(client, objectDef, rawObj, objProps);\n\n if (strictNonNull === \"throw\" && !conforming) {\n throw new Error(\n \"Unable to safely convert objects as some non nullable properties are null\",\n );\n } else if (strictNonNull === \"drop\" && !conforming) {\n continue;\n }\n\n let osdkObject: ObjectHolder | InterfaceHolder = createOsdkObject(\n client,\n objectDef,\n rawObj,\n derivedPropertyTypeByName,\n );\n if (interfaceApiName) osdkObject = osdkObject.$as(interfaceApiName);\n\n ret.push(osdkObject);\n }\n\n return ret;\n}\n\n/**\n * @internal\n *\n * Utility function that lets us take down selected property names from an interface\n * and convert them to an array of property names on an object.\n */\nexport function convertInterfacePropNamesToObjectPropNames(\n objectDef: FetchedObjectTypeDefinition,\n interfaceApiName: string,\n ifacePropsToMap: readonly string[],\n): string[] {\n return ifacePropsToMap.map((ifaceProp) =>\n objectDef.interfaceMap[interfaceApiName][ifaceProp]\n );\n}\n\n/**\n * Takes a raw object from the wire (contextually as an interface) and\n * updates the fields to reflect the underlying objectDef instead\n * @param objectDef\n * @param interfaceApiName\n * @param client\n * @param rawObj\n */\nfunction reframeAsObjectInPlace(\n objectDef: FetchedObjectTypeDefinition,\n interfaceApiName: string,\n rawObj: OntologyObjectV2,\n) {\n const newProps: Record<string, any> = {};\n for (\n const [sptProp, regularProp] of Object.entries(\n objectDef.interfaceMap[interfaceApiName],\n )\n ) {\n if (sptProp in rawObj) {\n const value = rawObj[sptProp];\n delete rawObj[sptProp];\n if (value !== undefined) {\n newProps[regularProp] = value;\n }\n }\n }\n Object.assign(rawObj, newProps);\n\n if (!(objectDef.primaryKeyApiName in rawObj)) {\n rawObj[objectDef.primaryKeyApiName] = rawObj.$primaryKey;\n }\n}\n\nfunction isConforming(\n client: MinimalClient,\n def:\n | InterfaceMetadata\n | ObjectMetadata,\n obj: OntologyObjectV2,\n propsToCheck: readonly string[],\n) {\n for (const propName of propsToCheck) {\n if (\n propName in def.properties && def.properties[propName].nullable === false\n && obj[propName] == null\n ) {\n if (process.env.NODE_ENV !== \"production\") {\n client.logger?.debug(\n {\n obj: {\n $apiName: obj[\"$apiName\"],\n $objectType: obj[\"$objectType\"],\n $primaryKey: obj[\"$primaryKey\"],\n },\n },\n `Found object that does not conform to its definition. Expected ${def.apiName}'s ${propName} to not be null.`,\n );\n }\n return false;\n }\n }\n return true;\n}\n\nfunction invariantInterfacesAsViews(\n objectDef: FetchedObjectTypeDefinition,\n interfaceApiName: string,\n client: MinimalClient,\n): asserts objectDef is typeof objectDef & { interfaceMap: {} } {\n if (objectDef.interfaceMap?.[interfaceApiName] == null) {\n const warning =\n \"Interfaces are only supported 'as views' but your metadata object is missing the correct information. This suggests your interfaces have not been migrated to the newer version yet and you cannot use this version of the SDK.\";\n if (client.logger) {\n client.logger.warn(warning);\n } else {\n // eslint-disable-next-line no-console\n console.error(`WARNING! ${warning}`);\n }\n throw new Error(warning);\n }\n}\n\nfunction fixObjectPropertiesInPlace(\n objs: OntologyObjectV2[],\n forceRemoveRid: boolean,\n): asserts objs is SimpleOsdkProperties[] {\n for (const obj of objs) {\n if (forceRemoveRid) {\n delete obj.__rid;\n }\n\n if (obj.__rid) {\n obj.$rid = obj.__rid;\n delete obj.__rid;\n }\n\n // Backend returns as __apiName but we want to stick to $ structure\n obj.$apiName ??= obj.__apiName;\n\n // for now these are the same but when we start doing interface projections the $objectType will always be underlying and\n // the $apiName will be for the current view (in current designs)\n obj.$objectType = obj.$apiName;\n\n // copying over for now as its always returned. In the future, this should just be inferred from underlying\n obj.$primaryKey ??= obj.__primaryKey;\n obj.$title ??= obj.__title;\n\n // we don't want people to use these\n delete obj.__apiName;\n delete obj.__primaryKey;\n delete obj.__title;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"convertWireToOsdkObjects.js","names":["invariant","createOsdkObject","convertWireToOsdkObjects","client","objects","interfaceApiName","forceRemoveRid","derivedPropertyTypesByName","selectedProps","strictNonNull","fixObjectPropertiesInPlace","ifaceDef","ontologyProvider","getInterfaceDefinition","undefined","ifaceSelected","Object","keys","properties","ret","rawObj","objectDef","getObjectDefinition","$apiName","process","env","NODE_ENV","objProps","conforming","invariantInterfacesAsViews","apiName","isConforming","reframeAsObjectInPlace","convertInterfacePropNamesToObjectPropNames","Error","osdkObject","$as","push","convertWireToOsdkObjects2","derivedPropertyTypeByName","interfaceToObjectTypeMappings","isInterfaceScoped","length","interfaceToObjMapping","filter","val","includes","values","primaryKeyApiName","ifacePropsToMap","map","ifaceProp","interfaceMap","newProps","sptProp","regularProp","entries","value","assign","$primaryKey","def","obj","propsToCheck","propName","nullable","logger","debug","$objectType","warning","warn","console","error","objs","__rid","$rid","__apiName","__primaryKey","$title","__title"],"sources":["convertWireToOsdkObjects.ts"],"sourcesContent":["/*\n * Copyright 2023 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 InterfaceMetadata,\n NullabilityAdherence,\n ObjectMetadata,\n} from \"@osdk/api\";\nimport type {\n InterfaceToObjectTypeMappings,\n InterfaceTypeApiName,\n OntologyObjectV2,\n} from \"@osdk/foundry.ontologies\";\nimport invariant from \"tiny-invariant\";\nimport type { DerivedPropertyRuntimeMetadata } from \"../derivedProperties/derivedPropertyRuntimeMetadata.js\";\nimport type { MinimalClient } from \"../MinimalClientContext.js\";\nimport {\n type FetchedObjectTypeDefinition,\n} from \"../ontology/OntologyProvider.js\";\nimport { createOsdkObject } from \"./convertWireToOsdkObjects/createOsdkObject.js\";\nimport type { InterfaceHolder } from \"./convertWireToOsdkObjects/InterfaceHolder.js\";\nimport type { ObjectHolder } from \"./convertWireToOsdkObjects/ObjectHolder.js\";\nimport type { SimpleOsdkProperties } from \"./SimpleOsdkProperties.js\";\n\n/**\n * If interfaceApiName is not undefined, converts the instances of the\n * interface into their respective\n * underlying concrete types and then returns the $as() representation\n * for the consumers.\n *\n * Otherwise just does the conversion\n *\n * May mutate in place for performance reasons. If you need a clean copy,\n * keep it first.\n *\n * However, you must use the returned value, which will be whatever is correct.\n *\n * @internal\n * @param interfaceApiName - if undefined\n */\nexport async function convertWireToOsdkObjects(\n client: MinimalClient,\n objects: OntologyObjectV2[],\n interfaceApiName: string | undefined,\n forceRemoveRid: boolean = false,\n derivedPropertyTypesByName: DerivedPropertyRuntimeMetadata,\n selectedProps?: ReadonlyArray<string>,\n strictNonNull: NullabilityAdherence = false,\n): Promise<Array<ObjectHolder | InterfaceHolder>> {\n // remove the __ prefixed properties and convert them to $ prefixed.\n // updates in place\n fixObjectPropertiesInPlace(objects, forceRemoveRid);\n\n const ifaceDef = interfaceApiName\n ? await client.ontologyProvider.getInterfaceDefinition(interfaceApiName)\n : undefined;\n const ifaceSelected = ifaceDef\n ? (selectedProps ?? Object.keys(ifaceDef.properties))\n : undefined;\n\n const ret = [];\n for (const rawObj of objects) {\n const objectDef = await client.ontologyProvider.getObjectDefinition(\n rawObj.$apiName,\n );\n invariant(objectDef, `Missing definition for '${rawObj.$apiName}'`);\n\n // default value for when we are checking an object\n let objProps;\n\n let conforming = true;\n if (ifaceDef && ifaceSelected) {\n // API returns interface spt names but we cache by real values\n invariantInterfacesAsViews(objectDef, ifaceDef.apiName, client);\n\n conforming &&= isConforming(client, ifaceDef, rawObj, ifaceSelected);\n\n reframeAsObjectInPlace(objectDef, ifaceDef.apiName, rawObj);\n\n objProps = convertInterfacePropNamesToObjectPropNames(\n objectDef,\n ifaceDef.apiName,\n ifaceSelected,\n );\n } else {\n objProps = selectedProps ?? Object.keys(objectDef.properties);\n }\n\n conforming &&= isConforming(client, objectDef, rawObj, objProps);\n\n if (strictNonNull === \"throw\" && !conforming) {\n throw new Error(\n \"Unable to safely convert objects as some non nullable properties are null\",\n );\n } else if (strictNonNull === \"drop\" && !conforming) {\n continue;\n }\n\n let osdkObject: ObjectHolder | InterfaceHolder = createOsdkObject(\n client,\n objectDef,\n rawObj,\n derivedPropertyTypesByName,\n );\n if (interfaceApiName) osdkObject = osdkObject.$as(interfaceApiName);\n\n ret.push(osdkObject);\n }\n\n return ret;\n}\n\nexport async function convertWireToOsdkObjects2(\n client: MinimalClient,\n objects: OntologyObjectV2[],\n interfaceApiName: string,\n derivedPropertyTypeByName: DerivedPropertyRuntimeMetadata,\n forceRemoveRid?: boolean,\n selectedProps?: ReadonlyArray<string>,\n strictNonNull?: NullabilityAdherence,\n interfaceToObjectTypeMappings?: Record<\n InterfaceTypeApiName,\n InterfaceToObjectTypeMappings\n >,\n): Promise<Array<InterfaceHolder>>;\nexport async function convertWireToOsdkObjects2(\n client: MinimalClient,\n objects: OntologyObjectV2[],\n interfaceApiName: undefined,\n derivedPropertyTypeByName: DerivedPropertyRuntimeMetadata,\n forceRemoveRid?: boolean,\n selectedProps?: ReadonlyArray<string>,\n strictNonNull?: NullabilityAdherence,\n interfaceToObjectTypeMappings?: Record<\n InterfaceTypeApiName,\n InterfaceToObjectTypeMappings\n >,\n): Promise<Array<ObjectHolder>>;\nexport async function convertWireToOsdkObjects2(\n client: MinimalClient,\n objects: OntologyObjectV2[],\n interfaceApiName: string | undefined,\n derivedPropertyTypeByName: DerivedPropertyRuntimeMetadata,\n forceRemoveRid?: boolean,\n selectedProps?: ReadonlyArray<string>,\n strictNonNull?: NullabilityAdherence,\n interfaceToObjectTypeMappings?: Record<\n InterfaceTypeApiName,\n InterfaceToObjectTypeMappings\n >,\n): Promise<Array<ObjectHolder | InterfaceHolder>>;\n/**\n * @internal\n */\nexport async function convertWireToOsdkObjects2(\n client: MinimalClient,\n objects: OntologyObjectV2[],\n interfaceApiName: string | undefined,\n derivedPropertyTypeByName: DerivedPropertyRuntimeMetadata,\n forceRemoveRid: boolean = false,\n selectedProps?: ReadonlyArray<string>,\n strictNonNull: NullabilityAdherence = false,\n interfaceToObjectTypeMappings: Record<\n InterfaceTypeApiName,\n InterfaceToObjectTypeMappings\n > = {},\n): Promise<Array<ObjectHolder | InterfaceHolder>> {\n fixObjectPropertiesInPlace(objects, forceRemoveRid);\n\n const isInterfaceScoped =\n Object.keys(interfaceToObjectTypeMappings).length > 0;\n const ret = [];\n for (const rawObj of objects) {\n const objectDef = await client.ontologyProvider.getObjectDefinition(\n rawObj.$apiName,\n );\n invariant(objectDef, `Missing definition for '${rawObj.$apiName}'`);\n\n const interfaceToObjMapping = (interfaceApiName\n && isInterfaceScoped)\n ? interfaceToObjectTypeMappings[\n interfaceApiName as InterfaceTypeApiName\n ][\n rawObj.$apiName\n ]\n : undefined;\n\n const ifaceSelected = interfaceApiName && interfaceToObjMapping\n ? (selectedProps\n ? Object.keys(interfaceToObjMapping).filter(\n val => {\n selectedProps?.includes(interfaceToObjMapping[val]);\n },\n )\n : [\n ...Object.values(interfaceToObjMapping),\n objectDef.primaryKeyApiName,\n ])\n : undefined;\n\n // default value for when we are checking an object\n let objProps;\n\n let conforming = true;\n if (interfaceApiName && ifaceSelected) {\n invariantInterfacesAsViews(objectDef, interfaceApiName, client);\n\n objProps = ifaceSelected;\n } else {\n objProps = selectedProps ?? Object.keys(objectDef.properties);\n }\n\n conforming &&= isConforming(client, objectDef, rawObj, objProps);\n\n if (strictNonNull === \"throw\" && !conforming) {\n throw new Error(\n \"Unable to safely convert objects as some non nullable properties are null\",\n );\n } else if (strictNonNull === \"drop\" && !conforming) {\n continue;\n }\n\n let osdkObject: ObjectHolder | InterfaceHolder = createOsdkObject(\n client,\n objectDef,\n rawObj,\n derivedPropertyTypeByName,\n );\n if (\n interfaceApiName && isInterfaceScoped\n ) osdkObject = osdkObject.$as(interfaceApiName);\n\n ret.push(osdkObject);\n }\n\n return ret;\n}\n\n/**\n * @internal\n *\n * Utility function that lets us take down selected property names from an interface\n * and convert them to an array of property names on an object.\n */\nexport function convertInterfacePropNamesToObjectPropNames(\n objectDef: FetchedObjectTypeDefinition,\n interfaceApiName: string,\n ifacePropsToMap: readonly string[],\n): string[] {\n return ifacePropsToMap.map((ifaceProp) =>\n objectDef.interfaceMap[interfaceApiName][ifaceProp]\n );\n}\n\n/**\n * Takes a raw object from the wire (contextually as an interface) and\n * updates the fields to reflect the underlying objectDef instead\n * @param objectDef\n * @param interfaceApiName\n * @param client\n * @param rawObj\n */\nfunction reframeAsObjectInPlace(\n objectDef: FetchedObjectTypeDefinition,\n interfaceApiName: string,\n rawObj: OntologyObjectV2,\n) {\n const newProps: Record<string, any> = {};\n for (\n const [sptProp, regularProp] of Object.entries(\n objectDef.interfaceMap[interfaceApiName],\n )\n ) {\n if (sptProp in rawObj) {\n const value = rawObj[sptProp];\n delete rawObj[sptProp];\n if (value !== undefined) {\n newProps[regularProp] = value;\n }\n }\n }\n Object.assign(rawObj, newProps);\n\n if (!(objectDef.primaryKeyApiName in rawObj)) {\n rawObj[objectDef.primaryKeyApiName] = rawObj.$primaryKey;\n }\n}\n\nfunction isConforming(\n client: MinimalClient,\n def:\n | InterfaceMetadata\n | ObjectMetadata,\n obj: OntologyObjectV2,\n propsToCheck: readonly string[],\n) {\n for (const propName of propsToCheck) {\n if (\n propName in def.properties && def.properties[propName].nullable === false\n && obj[propName] == null\n ) {\n if (process.env.NODE_ENV !== \"production\") {\n client.logger?.debug(\n {\n obj: {\n $apiName: obj[\"$apiName\"],\n $objectType: obj[\"$objectType\"],\n $primaryKey: obj[\"$primaryKey\"],\n },\n },\n `Found object that does not conform to its definition. Expected ${def.apiName}'s ${propName} to not be null.`,\n );\n }\n return false;\n }\n }\n return true;\n}\n\nfunction invariantInterfacesAsViews(\n objectDef: FetchedObjectTypeDefinition,\n interfaceApiName: string,\n client: MinimalClient,\n): asserts objectDef is typeof objectDef & { interfaceMap: {} } {\n if (objectDef.interfaceMap?.[interfaceApiName] == null) {\n const warning =\n \"Interfaces are only supported 'as views' but your metadata object is missing the correct information. This suggests your interfaces have not been migrated to the newer version yet and you cannot use this version of the SDK.\";\n if (client.logger) {\n client.logger.warn(warning);\n } else {\n // eslint-disable-next-line no-console\n console.error(`WARNING! ${warning}`);\n }\n throw new Error(warning);\n }\n}\n\nfunction fixObjectPropertiesInPlace(\n objs: OntologyObjectV2[],\n forceRemoveRid: boolean,\n): asserts objs is SimpleOsdkProperties[] {\n for (const obj of objs) {\n if (forceRemoveRid) {\n delete obj.__rid;\n }\n\n if (obj.__rid) {\n obj.$rid = obj.__rid;\n delete obj.__rid;\n }\n\n // Backend returns as __apiName but we want to stick to $ structure\n obj.$apiName ??= obj.__apiName;\n\n // for now these are the same but when we start doing interface projections the $objectType will always be underlying and\n // the $apiName will be for the current view (in current designs)\n obj.$objectType = obj.$apiName;\n\n // copying over for now as its always returned. In the future, this should just be inferred from underlying\n obj.$primaryKey ??= obj.__primaryKey;\n obj.$title ??= obj.__title;\n\n // we don't want people to use these\n delete obj.__apiName;\n delete obj.__primaryKey;\n delete obj.__title;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -46,7 +46,7 @@ describe("convertWireToOsdkObjects", () => {
46
46
  } = await client(Employee).fetchPage();
47
47
  expect(Object.keys(employee).sort()).toEqual(["employeeId", "$title", "fullName", "office", "class", "startDate", "employeeSensor", "employeeStatus", "$apiName", "$objectType", "$primaryKey", "$objectSpecifier", "employeeLocation"].sort());
48
48
  expect(Object.keys(employee.$as)).toEqual([]);
49
- expect(Object.keys(employee.$link)).toEqual(["peeps", "lead", "officeLink"]);
49
+ expect(Object.keys(employee.$link)).toEqual(["lead", "officeLink", "peeps"]);
50
50
  });
51
51
  it("stringifies properties on objects and interfaces correctly", async () => {
52
52
  const {
@@ -575,7 +575,13 @@ describe("convertWireToOsdkObjects", () => {
575
575
  "Person",
576
576
  ],
577
577
  "implements": [],
578
- "links": {},
578
+ "links": {
579
+ "toBar": {
580
+ "multiplicity": true,
581
+ "targetType": "interface",
582
+ "targetTypeApiName": "BarInterface",
583
+ },
584
+ },
579
585
  "properties": {
580
586
  "fooSpt": {
581
587
  "description": "A foo",
@@ -625,29 +631,35 @@ describe("convertWireToOsdkObjects", () => {
625
631
  const objAsFoo = employee.$as(FooInterface);
626
632
  expect(objAsFoo.$__EXPERIMENTAL__NOT_SUPPORTED_YET__metadata).toBeDefined();
627
633
  expect(objAsFoo.$__EXPERIMENTAL__NOT_SUPPORTED_YET__metadata.InterfaceMetadata).toMatchInlineSnapshot(`
628
- {
629
- "apiName": "FooInterface",
630
- "description": "Interface for Foo",
631
- "displayName": "Foo Interface",
632
- "implementedBy": [
633
- "Employee",
634
- "Person",
635
- ],
636
- "implements": [],
637
- "links": {},
638
- "properties": {
639
- "fooSpt": {
640
- "description": "A foo",
641
- "displayName": "Foo",
642
- "multiplicity": false,
643
- "nullable": true,
644
- "type": "string",
634
+ {
635
+ "apiName": "FooInterface",
636
+ "description": "Interface for Foo",
637
+ "displayName": "Foo Interface",
638
+ "implementedBy": [
639
+ "Employee",
640
+ "Person",
641
+ ],
642
+ "implements": [],
643
+ "links": {
644
+ "toBar": {
645
+ "multiplicity": true,
646
+ "targetType": "interface",
647
+ "targetTypeApiName": "BarInterface",
648
+ },
645
649
  },
646
- },
647
- "rid": "ri.interface.main.interface.1",
648
- "type": "interface",
649
- }
650
- `);
650
+ "properties": {
651
+ "fooSpt": {
652
+ "description": "A foo",
653
+ "displayName": "Foo",
654
+ "multiplicity": false,
655
+ "nullable": true,
656
+ "type": "string",
657
+ },
658
+ },
659
+ "rid": "ri.interface.main.interface.1",
660
+ "type": "interface",
661
+ }
662
+ `);
651
663
  });
652
664
  it("$experimental_metadata is not enumerable", async () => {
653
665
  const {