@osdk/client 2.5.0-beta.3 → 2.5.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 (212) hide show
  1. package/CHANGELOG.md +29 -4
  2. package/build/browser/index.js +2 -0
  3. package/build/browser/index.js.map +1 -1
  4. package/build/browser/object/Cache.test.js +1 -1
  5. package/build/browser/object/Cache.test.js.map +1 -1
  6. package/build/browser/object/convertWireToOsdkObjects/OsdkCustomInspectPrototype.js +1 -0
  7. package/build/browser/object/convertWireToOsdkObjects/OsdkCustomInspectPrototype.js.map +1 -1
  8. package/build/browser/object/convertWireToOsdkObjects/createOsdkInterface.js +6 -0
  9. package/build/browser/object/convertWireToOsdkObjects/createOsdkInterface.js.map +1 -1
  10. package/build/browser/object/convertWireToOsdkObjects/getDollarLink.js +20 -1
  11. package/build/browser/object/convertWireToOsdkObjects/getDollarLink.js.map +1 -1
  12. package/build/browser/object/convertWireToOsdkObjects.test.js +2 -0
  13. package/build/browser/object/convertWireToOsdkObjects.test.js.map +1 -1
  14. package/build/browser/observable/internal/CacheKeys.js.map +1 -1
  15. package/build/browser/observable/internal/Changes.js.map +1 -1
  16. package/build/browser/observable/internal/KnownCacheKey.js.map +1 -1
  17. package/build/browser/observable/internal/OrderByCanonicalizer.js +1 -37
  18. package/build/browser/observable/internal/OrderByCanonicalizer.js.map +1 -1
  19. package/build/browser/observable/internal/Store.js +1 -1
  20. package/build/browser/observable/internal/Store.js.map +1 -1
  21. package/build/browser/observable/internal/Store.test.js +1 -1
  22. package/build/browser/observable/internal/Store.test.js.map +1 -1
  23. package/build/browser/observable/internal/WeakRefTrie.js +61 -0
  24. package/build/browser/observable/internal/WeakRefTrie.js.map +1 -0
  25. package/build/browser/observable/internal/actions/ActionApplication.js.map +1 -0
  26. package/build/browser/observable/internal/{OptimisticJob.js → actions/OptimisticJob.js} +2 -2
  27. package/build/browser/observable/internal/actions/OptimisticJob.js.map +1 -0
  28. package/build/browser/observable/internal/base-list/BaseCollectionQuery.js.map +1 -0
  29. package/build/browser/observable/internal/base-list/BaseListQuery.js +414 -0
  30. package/build/browser/observable/internal/base-list/BaseListQuery.js.map +1 -0
  31. package/build/browser/observable/internal/base-list/createCollectionConnectable.js.map +1 -0
  32. package/build/{esm/observable/internal → browser/observable/internal/base-list}/createCollectionConnectable.test.js +1 -1
  33. package/build/browser/observable/internal/base-list/createCollectionConnectable.test.js.map +1 -0
  34. package/build/browser/observable/internal/base-list/removeDuplicates.js.map +1 -0
  35. package/build/browser/observable/internal/links/SpecificLinkCacheKey.js.map +1 -1
  36. package/build/browser/observable/internal/links/SpecificLinkQuery.js +1 -1
  37. package/build/browser/observable/internal/links/SpecificLinkQuery.js.map +1 -1
  38. package/build/browser/observable/internal/{ListCacheKey.js.map → list/ListCacheKey.js.map} +1 -1
  39. package/build/browser/observable/internal/{ListQuery.js → list/ListQuery.js} +7 -416
  40. package/build/browser/observable/internal/list/ListQuery.js.map +1 -0
  41. package/build/browser/observable/internal/list/ListQueryOptions.js +2 -0
  42. package/build/browser/observable/internal/list/ListQueryOptions.js.map +1 -0
  43. package/build/browser/observable/internal/list/ListsHelper.js +1 -1
  44. package/build/browser/observable/internal/list/ListsHelper.js.map +1 -1
  45. package/build/browser/observable/internal/object/ObjectCacheKey.js +2 -0
  46. package/build/browser/observable/internal/object/ObjectCacheKey.js.map +1 -0
  47. package/build/browser/observable/internal/{ObjectQuery.js → object/ObjectQuery.js} +4 -20
  48. package/build/browser/observable/internal/object/ObjectQuery.js.map +1 -0
  49. package/build/browser/observable/internal/object/ObjectsHelper.js +15 -1
  50. package/build/browser/observable/internal/object/ObjectsHelper.js.map +1 -1
  51. package/build/browser/observable/internal/sorting/SortingStrategy.js.map +1 -1
  52. package/build/browser/observable/internal/testUtils/invalidateList.js.map +1 -1
  53. package/build/browser/observable/internal/testUtils.js +1 -2
  54. package/build/browser/observable/internal/testUtils.js.map +1 -1
  55. package/build/browser/queries/applyQuery.js +1 -1
  56. package/build/browser/queries/applyQuery.js.map +1 -1
  57. package/build/browser/util/UserAgent.js +2 -2
  58. package/build/browser/util/extractObjectOrInterfaceType.js +9 -1
  59. package/build/browser/util/extractObjectOrInterfaceType.js.map +1 -1
  60. package/build/browser/util/extractObjectOrInterfaceType.test.js +2 -2
  61. package/build/browser/util/extractObjectOrInterfaceType.test.js.map +1 -1
  62. package/build/cjs/{chunk-BL56QBYG.cjs → chunk-ELAA4C2C.cjs} +29 -17
  63. package/build/cjs/chunk-ELAA4C2C.cjs.map +1 -0
  64. package/build/cjs/{chunk-AOGMSVFN.cjs → chunk-KCMGIMVC.cjs} +91 -69
  65. package/build/cjs/chunk-KCMGIMVC.cjs.map +1 -0
  66. package/build/cjs/index.cjs +7 -7
  67. package/build/cjs/public/internal.cjs +8 -8
  68. package/build/cjs/public/unstable-do-not-use.cjs +568 -572
  69. package/build/cjs/public/unstable-do-not-use.cjs.map +1 -1
  70. package/build/esm/index.js +2 -0
  71. package/build/esm/index.js.map +1 -1
  72. package/build/esm/object/Cache.test.js +1 -1
  73. package/build/esm/object/Cache.test.js.map +1 -1
  74. package/build/esm/object/convertWireToOsdkObjects/OsdkCustomInspectPrototype.js +1 -0
  75. package/build/esm/object/convertWireToOsdkObjects/OsdkCustomInspectPrototype.js.map +1 -1
  76. package/build/esm/object/convertWireToOsdkObjects/createOsdkInterface.js +6 -0
  77. package/build/esm/object/convertWireToOsdkObjects/createOsdkInterface.js.map +1 -1
  78. package/build/esm/object/convertWireToOsdkObjects/getDollarLink.js +20 -1
  79. package/build/esm/object/convertWireToOsdkObjects/getDollarLink.js.map +1 -1
  80. package/build/esm/object/convertWireToOsdkObjects.test.js +2 -0
  81. package/build/esm/object/convertWireToOsdkObjects.test.js.map +1 -1
  82. package/build/esm/observable/internal/CacheKeys.js.map +1 -1
  83. package/build/esm/observable/internal/Changes.js.map +1 -1
  84. package/build/esm/observable/internal/KnownCacheKey.js.map +1 -1
  85. package/build/esm/observable/internal/OrderByCanonicalizer.js +1 -37
  86. package/build/esm/observable/internal/OrderByCanonicalizer.js.map +1 -1
  87. package/build/esm/observable/internal/Store.js +1 -1
  88. package/build/esm/observable/internal/Store.js.map +1 -1
  89. package/build/esm/observable/internal/Store.test.js +1 -1
  90. package/build/esm/observable/internal/Store.test.js.map +1 -1
  91. package/build/esm/observable/internal/WeakRefTrie.js +61 -0
  92. package/build/esm/observable/internal/WeakRefTrie.js.map +1 -0
  93. package/build/esm/observable/internal/actions/ActionApplication.js.map +1 -0
  94. package/build/esm/observable/internal/{OptimisticJob.js → actions/OptimisticJob.js} +2 -2
  95. package/build/esm/observable/internal/actions/OptimisticJob.js.map +1 -0
  96. package/build/esm/observable/internal/base-list/BaseCollectionQuery.js.map +1 -0
  97. package/build/esm/observable/internal/base-list/BaseListQuery.js +414 -0
  98. package/build/esm/observable/internal/base-list/BaseListQuery.js.map +1 -0
  99. package/build/esm/observable/internal/base-list/createCollectionConnectable.js.map +1 -0
  100. package/build/{browser/observable/internal → esm/observable/internal/base-list}/createCollectionConnectable.test.js +1 -1
  101. package/build/esm/observable/internal/base-list/createCollectionConnectable.test.js.map +1 -0
  102. package/build/esm/observable/internal/base-list/removeDuplicates.js.map +1 -0
  103. package/build/esm/observable/internal/links/SpecificLinkCacheKey.js.map +1 -1
  104. package/build/esm/observable/internal/links/SpecificLinkQuery.js +1 -1
  105. package/build/esm/observable/internal/links/SpecificLinkQuery.js.map +1 -1
  106. package/build/esm/observable/internal/{ListCacheKey.js.map → list/ListCacheKey.js.map} +1 -1
  107. package/build/esm/observable/internal/{ListQuery.js → list/ListQuery.js} +7 -416
  108. package/build/esm/observable/internal/list/ListQuery.js.map +1 -0
  109. package/build/esm/observable/internal/list/ListQueryOptions.js +2 -0
  110. package/build/esm/observable/internal/list/ListQueryOptions.js.map +1 -0
  111. package/build/esm/observable/internal/list/ListsHelper.js +1 -1
  112. package/build/esm/observable/internal/list/ListsHelper.js.map +1 -1
  113. package/build/esm/observable/internal/object/ObjectCacheKey.js +2 -0
  114. package/build/esm/observable/internal/object/ObjectCacheKey.js.map +1 -0
  115. package/build/esm/observable/internal/{ObjectQuery.js → object/ObjectQuery.js} +4 -20
  116. package/build/esm/observable/internal/object/ObjectQuery.js.map +1 -0
  117. package/build/esm/observable/internal/object/ObjectsHelper.js +15 -1
  118. package/build/esm/observable/internal/object/ObjectsHelper.js.map +1 -1
  119. package/build/esm/observable/internal/sorting/SortingStrategy.js.map +1 -1
  120. package/build/esm/observable/internal/testUtils/invalidateList.js.map +1 -1
  121. package/build/esm/observable/internal/testUtils.js +1 -2
  122. package/build/esm/observable/internal/testUtils.js.map +1 -1
  123. package/build/esm/queries/applyQuery.js +1 -1
  124. package/build/esm/queries/applyQuery.js.map +1 -1
  125. package/build/esm/util/UserAgent.js +2 -2
  126. package/build/esm/util/extractObjectOrInterfaceType.js +9 -1
  127. package/build/esm/util/extractObjectOrInterfaceType.js.map +1 -1
  128. package/build/esm/util/extractObjectOrInterfaceType.test.js +2 -2
  129. package/build/esm/util/extractObjectOrInterfaceType.test.js.map +1 -1
  130. package/build/types/index.d.ts +1 -1
  131. package/build/types/index.d.ts.map +1 -1
  132. package/build/types/observable/internal/Changes.d.ts +2 -2
  133. package/build/types/observable/internal/Changes.d.ts.map +1 -1
  134. package/build/types/observable/internal/KnownCacheKey.d.ts +2 -2
  135. package/build/types/observable/internal/KnownCacheKey.d.ts.map +1 -1
  136. package/build/types/observable/internal/OrderByCanonicalizer.d.ts +0 -7
  137. package/build/types/observable/internal/OrderByCanonicalizer.d.ts.map +1 -1
  138. package/build/types/observable/internal/WeakRefTrie.d.ts +13 -0
  139. package/build/types/observable/internal/WeakRefTrie.d.ts.map +1 -0
  140. package/build/types/observable/internal/{ActionApplication.d.ts → actions/ActionApplication.d.ts} +2 -2
  141. package/build/types/observable/internal/{ActionApplication.d.ts.map → actions/ActionApplication.d.ts.map} +1 -1
  142. package/build/types/observable/internal/{OptimisticJob.d.ts → actions/OptimisticJob.d.ts} +4 -4
  143. package/build/types/observable/internal/actions/OptimisticJob.d.ts.map +1 -0
  144. package/build/types/observable/internal/{BaseCollectionQuery.d.ts → base-list/BaseCollectionQuery.d.ts} +4 -4
  145. package/build/types/observable/internal/base-list/BaseCollectionQuery.d.ts.map +1 -0
  146. package/build/types/observable/internal/{ListQuery.d.ts → base-list/BaseListQuery.d.ts} +8 -91
  147. package/build/types/observable/internal/base-list/BaseListQuery.d.ts.map +1 -0
  148. package/build/types/observable/internal/{createCollectionConnectable.d.ts → base-list/createCollectionConnectable.d.ts} +3 -3
  149. package/build/types/observable/internal/base-list/createCollectionConnectable.d.ts.map +1 -0
  150. package/build/types/observable/internal/base-list/createCollectionConnectable.test.d.ts.map +1 -0
  151. package/build/types/observable/internal/{removeDuplicates.d.ts → base-list/removeDuplicates.d.ts} +2 -2
  152. package/build/types/observable/internal/base-list/removeDuplicates.d.ts.map +1 -0
  153. package/build/types/observable/internal/links/SpecificLinkCacheKey.d.ts +1 -1
  154. package/build/types/observable/internal/links/SpecificLinkCacheKey.d.ts.map +1 -1
  155. package/build/types/observable/internal/links/SpecificLinkQuery.d.ts +1 -1
  156. package/build/types/observable/internal/links/SpecificLinkQuery.d.ts.map +1 -1
  157. package/build/types/observable/internal/{ListCacheKey.d.ts → list/ListCacheKey.d.ts} +4 -4
  158. package/build/types/observable/internal/list/ListCacheKey.d.ts.map +1 -0
  159. package/build/types/observable/internal/list/ListQuery.d.ts +73 -0
  160. package/build/types/observable/internal/list/ListQuery.d.ts.map +1 -0
  161. package/build/types/observable/internal/list/ListQueryOptions.d.ts +4 -0
  162. package/build/types/observable/internal/list/ListQueryOptions.d.ts.map +1 -0
  163. package/build/types/observable/internal/list/ListsHelper.d.ts +1 -1
  164. package/build/types/observable/internal/list/ListsHelper.d.ts.map +1 -1
  165. package/build/types/observable/internal/object/ObjectCacheKey.d.ts +5 -0
  166. package/build/types/observable/internal/object/ObjectCacheKey.d.ts.map +1 -0
  167. package/build/types/observable/internal/{ObjectQuery.d.ts → object/ObjectQuery.d.ts} +8 -10
  168. package/build/types/observable/internal/object/ObjectQuery.d.ts.map +1 -0
  169. package/build/types/observable/internal/object/ObjectsHelper.d.ts +1 -1
  170. package/build/types/observable/internal/object/ObjectsHelper.d.ts.map +1 -1
  171. package/build/types/observable/internal/sorting/SortingStrategy.d.ts +1 -1
  172. package/build/types/observable/internal/sorting/SortingStrategy.d.ts.map +1 -1
  173. package/build/types/observable/internal/testUtils.d.ts +1 -1
  174. package/build/types/observable/internal/testUtils.d.ts.map +1 -1
  175. package/package.json +23 -23
  176. package/build/browser/observable/internal/ActionApplication.js.map +0 -1
  177. package/build/browser/observable/internal/BaseCollectionQuery.js.map +0 -1
  178. package/build/browser/observable/internal/ListQuery.js.map +0 -1
  179. package/build/browser/observable/internal/ObjectQuery.js.map +0 -1
  180. package/build/browser/observable/internal/OptimisticJob.js.map +0 -1
  181. package/build/browser/observable/internal/createCollectionConnectable.js.map +0 -1
  182. package/build/browser/observable/internal/createCollectionConnectable.test.js.map +0 -1
  183. package/build/browser/observable/internal/removeDuplicates.js.map +0 -1
  184. package/build/cjs/chunk-AOGMSVFN.cjs.map +0 -1
  185. package/build/cjs/chunk-BL56QBYG.cjs.map +0 -1
  186. package/build/esm/observable/internal/ActionApplication.js.map +0 -1
  187. package/build/esm/observable/internal/BaseCollectionQuery.js.map +0 -1
  188. package/build/esm/observable/internal/ListQuery.js.map +0 -1
  189. package/build/esm/observable/internal/ObjectQuery.js.map +0 -1
  190. package/build/esm/observable/internal/OptimisticJob.js.map +0 -1
  191. package/build/esm/observable/internal/createCollectionConnectable.js.map +0 -1
  192. package/build/esm/observable/internal/createCollectionConnectable.test.js.map +0 -1
  193. package/build/esm/observable/internal/removeDuplicates.js.map +0 -1
  194. package/build/types/observable/internal/BaseCollectionQuery.d.ts.map +0 -1
  195. package/build/types/observable/internal/ListCacheKey.d.ts.map +0 -1
  196. package/build/types/observable/internal/ListQuery.d.ts.map +0 -1
  197. package/build/types/observable/internal/ObjectQuery.d.ts.map +0 -1
  198. package/build/types/observable/internal/OptimisticJob.d.ts.map +0 -1
  199. package/build/types/observable/internal/createCollectionConnectable.d.ts.map +0 -1
  200. package/build/types/observable/internal/createCollectionConnectable.test.d.ts.map +0 -1
  201. package/build/types/observable/internal/removeDuplicates.d.ts.map +0 -1
  202. /package/build/browser/observable/internal/{ActionApplication.js → actions/ActionApplication.js} +0 -0
  203. /package/build/browser/observable/internal/{BaseCollectionQuery.js → base-list/BaseCollectionQuery.js} +0 -0
  204. /package/build/browser/observable/internal/{createCollectionConnectable.js → base-list/createCollectionConnectable.js} +0 -0
  205. /package/build/browser/observable/internal/{removeDuplicates.js → base-list/removeDuplicates.js} +0 -0
  206. /package/build/browser/observable/internal/{ListCacheKey.js → list/ListCacheKey.js} +0 -0
  207. /package/build/esm/observable/internal/{ActionApplication.js → actions/ActionApplication.js} +0 -0
  208. /package/build/esm/observable/internal/{BaseCollectionQuery.js → base-list/BaseCollectionQuery.js} +0 -0
  209. /package/build/esm/observable/internal/{createCollectionConnectable.js → base-list/createCollectionConnectable.js} +0 -0
  210. /package/build/esm/observable/internal/{removeDuplicates.js → base-list/removeDuplicates.js} +0 -0
  211. /package/build/esm/observable/internal/{ListCacheKey.js → list/ListCacheKey.js} +0 -0
  212. /package/build/types/observable/internal/{createCollectionConnectable.test.d.ts → base-list/createCollectionConnectable.test.d.ts} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,34 @@
1
1
  # @osdk/client
2
2
 
3
+ ## 2.5.0-beta.5
4
+
5
+ ### Minor Changes
6
+
7
+ - 3d7461d: Fix applyQuery for marketplace installations
8
+ - 052a96b: Add $link support.
9
+
10
+ ### Patch Changes
11
+
12
+ - Updated dependencies [052a96b]
13
+ - @osdk/api@2.5.0-beta.5
14
+ - @osdk/client.unstable@2.5.0-beta.5
15
+ - @osdk/generator-converters@2.5.0-beta.5
16
+
17
+ ## 2.5.0-beta.4
18
+
19
+ ### Minor Changes
20
+
21
+ - a00d2ed: Update Platform SDK dependencies
22
+ - a96d89e: Update Platform SDK dependencies
23
+
24
+ ### Patch Changes
25
+
26
+ - Updated dependencies [a00d2ed]
27
+ - Updated dependencies [a96d89e]
28
+ - @osdk/generator-converters@2.5.0-beta.4
29
+ - @osdk/api@2.5.0-beta.4
30
+ - @osdk/client.unstable@2.5.0-beta.4
31
+
3
32
  ## 2.5.0-beta.3
4
33
 
5
34
  ### Minor Changes
@@ -25,7 +54,6 @@
25
54
  - 7160276: Add order by relevance support to nearest neighbors
26
55
  - 7cdab1d: Update platform sdk dependencies
27
56
  - b9e9a88: Refactor Observable Client with enhanced observer architecture
28
-
29
57
  - Restructure observable implementation with dedicated observer classes (LinkObservers, ListObservers, ObjectObservers)
30
58
  - Improve type safety for link observation operations with enhanced generic constraints
31
59
  - Add QuerySubscription and UnsubscribableWrapper for better encapsulation
@@ -214,7 +242,6 @@
214
242
  The `useOsdkAction` hook in `@osdk/react` now provides a `validateAction` function that allows you to check if an action is valid without executing it. This is useful for providing real-time validation feedback to users before they commit to performing an action.
215
243
 
216
244
  ### New features:
217
-
218
245
  - **validateAction**: A new async function that validates action parameters without executing the action
219
246
  - **isValidating**: A boolean state that indicates when validation is in progress
220
247
  - **validationResult**: Contains the validation response from the server, including whether the action is valid and any validation errors
@@ -237,7 +264,6 @@
237
264
  ```
238
265
 
239
266
  ### Implementation details:
240
-
241
267
  - Multiple validation calls can be made - new calls automatically cancel previous pending validations
242
268
  - Validation and action execution are mutually exclusive - you cannot validate while an action is being applied and vice versa
243
269
  - The underlying `ObservableClient` in `@osdk/client` has been extended with a `validateAction` method to support this functionality
@@ -2135,7 +2161,6 @@
2135
2161
  - 97f627e: Supports more than one concurrent subscription
2136
2162
 
2137
2163
  Also:
2138
-
2139
2164
  - Introduced an optional pino logger to the client
2140
2165
  - Fixes issues with where clauses for equality in subscriptions
2141
2166
  - Fixes issues with inconsistent id name and apiName's in the mapping data
@@ -14,6 +14,8 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
+ /* eslint-disable @typescript-eslint/no-deprecated */
18
+
17
19
  export { isOk, NULL_VALUE } from "@osdk/api";
18
20
  export { PalantirApiError } from "@osdk/shared.net.errors";
19
21
  export { ActionValidationError } from "./actions/ActionValidationError.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["isOk","NULL_VALUE","PalantirApiError","ActionValidationError","createClient","createPlatformClient","createAttachmentUpload","extractDate","extractDateInLocalTime","extractDateInUTC","createObjectSpecifierFromPrimaryKey"],"sources":["index.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\nexport type {\n ActionDefinition,\n ActionEditResponse,\n ActionMetadata,\n ActionParam,\n ActionReturnTypeForOptions,\n ActionValidationResponse,\n ApplyActionOptions,\n ApplyBatchActionOptions,\n Attachment,\n CompileTimeMetadata,\n InterfaceDefinition,\n InterfaceMetadata,\n Logger,\n ObjectMetadata,\n ObjectSet,\n ObjectSpecifier,\n ObjectTypeDefinition,\n Osdk,\n OsdkObject,\n OsdkObjectCreatePropertyType,\n OsdkObjectPropertyType,\n PageResult,\n PropertyDef,\n PropertyKeys,\n PropertyValueWireToClient,\n QueryDefinition,\n QueryParam,\n QueryResult,\n Range,\n Result,\n SingleLinkAccessor,\n ThreeDimensionalAggregation,\n TwoDimensionalAggregation,\n VersionBound,\n WhereClause,\n} from \"@osdk/api\";\nexport { isOk, NULL_VALUE } from \"@osdk/api\";\nexport { PalantirApiError } from \"@osdk/shared.net.errors\";\n\nexport { ActionValidationError } from \"./actions/ActionValidationError.js\";\nexport type { Client } from \"./Client.js\";\nexport { createClient } from \"./createClient.js\";\nexport { createPlatformClient } from \"./createPlatformClient.js\";\nexport type { PlatformClient } from \"./createPlatformClient.js\";\nexport { createAttachmentUpload } from \"./object/AttachmentUpload.js\";\nexport type { ResultOrError } from \"./ResultOrError.js\";\n\nexport {\n extractDate,\n extractDateInLocalTime,\n extractDateInUTC,\n} from \"./util/datetimeConverters.js\";\n\nexport { createObjectSpecifierFromPrimaryKey } from \"./util/objectSpecifierUtils.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAuCA,SAASA,IAAI,EAAEC,UAAU,QAAQ,WAAW;AAC5C,SAASC,gBAAgB,QAAQ,yBAAyB;AAE1D,SAASC,qBAAqB,QAAQ,oCAAoC;AAE1E,SAASC,YAAY,QAAQ,mBAAmB;AAChD,SAASC,oBAAoB,QAAQ,2BAA2B;AAEhE,SAASC,sBAAsB,QAAQ,8BAA8B;AAGrE,SACEC,WAAW,EACXC,sBAAsB,EACtBC,gBAAgB,QACX,8BAA8B;AAErC,SAASC,mCAAmC,QAAQ,gCAAgC","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["isOk","NULL_VALUE","PalantirApiError","ActionValidationError","createClient","createPlatformClient","createAttachmentUpload","extractDate","extractDateInLocalTime","extractDateInUTC","createObjectSpecifierFromPrimaryKey"],"sources":["index.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\n/* eslint-disable @typescript-eslint/no-deprecated */\n\nexport { isOk, NULL_VALUE } from \"@osdk/api\";\nexport type {\n ActionDefinition,\n ActionEditResponse,\n ActionMetadata,\n ActionParam,\n ActionReturnTypeForOptions,\n ActionValidationResponse,\n ApplyActionOptions,\n ApplyBatchActionOptions,\n Attachment,\n CompileTimeMetadata,\n InterfaceDefinition,\n InterfaceMetadata,\n Logger,\n ObjectMetadata,\n ObjectSet,\n ObjectSpecifier,\n ObjectTypeDefinition,\n Osdk,\n OsdkObject,\n OsdkObjectCreatePropertyType,\n OsdkObjectPropertyType,\n PageResult,\n PropertyDef,\n PropertyKeys,\n PropertyValueWireToClient,\n QueryDefinition,\n QueryParam,\n QueryResult,\n Range,\n Result,\n SingleLinkAccessor,\n ThreeDimensionalAggregation,\n TwoDimensionalAggregation,\n VersionBound,\n WhereClause,\n} from \"@osdk/api\";\nexport { PalantirApiError } from \"@osdk/shared.net.errors\";\n\nexport { ActionValidationError } from \"./actions/ActionValidationError.js\";\nexport type { Client } from \"./Client.js\";\nexport { createClient } from \"./createClient.js\";\nexport { createPlatformClient } from \"./createPlatformClient.js\";\nexport type { PlatformClient } from \"./createPlatformClient.js\";\nexport { createAttachmentUpload } from \"./object/AttachmentUpload.js\";\nexport type { ResultOrError } from \"./ResultOrError.js\";\n\nexport {\n extractDate,\n extractDateInLocalTime,\n extractDateInUTC,\n} from \"./util/datetimeConverters.js\";\n\nexport { createObjectSpecifierFromPrimaryKey } from \"./util/objectSpecifierUtils.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,SAASA,IAAI,EAAEC,UAAU,QAAQ,WAAW;AAsC5C,SAASC,gBAAgB,QAAQ,yBAAyB;AAE1D,SAASC,qBAAqB,QAAQ,oCAAoC;AAE1E,SAASC,YAAY,QAAQ,mBAAmB;AAChD,SAASC,oBAAoB,QAAQ,2BAA2B;AAEhE,SAASC,sBAAsB,QAAQ,8BAA8B;AAGrE,SACEC,WAAW,EACXC,sBAAsB,EACtBC,gBAAgB,QACX,8BAA8B;AAErC,SAASC,mCAAmC,QAAQ,gCAAgC","ignoreList":[]}
@@ -90,7 +90,7 @@ describe("AsyncCache", () => {
90
90
  asyncSetSpy = vi.spyOn(asyncCache, "set");
91
91
  asyncCacheSpies = {
92
92
  get: vi.spyOn(asyncCache, "get"),
93
- set: vi.spyOn(asyncCache, "set"),
93
+ set: asyncSetSpy,
94
94
  getOrUndefined: vi.spyOn(asyncCache, "getOrUndefined")
95
95
  };
96
96
  await expectSaneCalls();
@@ -1 +1 @@
1
- {"version":3,"file":"Cache.test.js","names":["pDefer","promiseStateAsync","pStateAsync","beforeAll","beforeEach","describe","expect","it","vi","createAsyncClientCache","createClientCache","createSpys","cache","get","spyOn","remove","set","fauxClient","clientCacheKey","fauxClient2","client","key","Promise","resolve","toEqual","mock","fn","setTimeout","all","toHaveBeenCalledTimes","factoryFn","inProgress","asyncCache","asyncCacheSpies","asyncSetSpy","factoryDefers","getPromises","expectedAsyncSets","expectedFactoryCalls","successfulFetches","pendingFetches","expectedPending","mockImplementation","defer","push","promise","Set","createSyncCacheMock","mockReturnValueOnce","getOrUndefined","expectSaneCalls","initiateAsyncCacheGetFor","has","add","before","getStats","toStrictEqual","asyncCacheGetCalls","resolveFactoryCall","num","value","toBe","calls","toContain","not","delete","fulfilledFactoryCalls","rejectFactoryCall","error","reject","Error","i","length","results","type","rejects","toThrowError","map","d","filter","a","rejectedFactoryCalls","stats","size","itRejectsAllRequestsOf","settledResults","toMatchObject","itDoesNotRejectLastRequestRightAway","at","describeRejectsFactoryCall","describeResolvesFactoryCall","describeAsyncCacheGetFor","itFulfillsAsyncCacheGets","indexes","join","itLeavesAsyncGetPromisesInStates","states","p","itHasOnlyInvokedFactoryNTimes","n","itReturnsForAsyncGet","toHaveBeenCalled","undefined"],"sources":["Cache.test.ts"],"sourcesContent":["/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { DeferredPromise } from \"p-defer\";\nimport pDefer from \"p-defer\";\nimport type { PromiseState } from \"p-state\";\nimport { promiseStateAsync as pStateAsync } from \"p-state\";\nimport type { Mock, MockInstance } from \"vitest\";\nimport { beforeAll, beforeEach, describe, expect, it, vi } from \"vitest\";\nimport type { MinimalClient } from \"../MinimalClientContext.js\";\nimport type { AsyncClientCache, AsyncFactory } from \"./Cache.js\";\nimport { createAsyncClientCache, createClientCache } from \"./Cache.js\";\n\nfunction createSpys(cache: ReturnType<typeof createClientCache>) {\n return {\n get: vi.spyOn(cache, \"get\"),\n remove: vi.spyOn(cache, \"remove\"),\n set: vi.spyOn(cache, \"set\"),\n };\n}\n\ndescribe(\"AsyncCache\", () => {\n beforeAll(() => {\n });\n const fauxClient = { clientCacheKey: {} } as MinimalClient;\n const fauxClient2 = { clientCacheKey: {} } as MinimalClient;\n\n it(\"keeps clients separate\", async () => {\n const cache = createAsyncClientCache((client: MinimalClient, key: string) =>\n Promise.resolve(key)\n );\n await cache.set(fauxClient, \"k\", \"v\");\n expect(await cache.get(fauxClient2, \"k\")).toEqual(\"k\");\n });\n\n it(\"has a client and its copy access the same cache\", async () => {\n const cache = createAsyncClientCache((client: MinimalClient, key: string) =>\n Promise.resolve(key)\n );\n await cache.set(fauxClient, \"k\", \"v\");\n expect(await cache.get({ ...fauxClient }, \"k\")).toEqual(\"v\");\n });\n\n it(\"does not double factory\", async () => {\n const resolveToKey = (client: MinimalClient, key: string) =>\n new Promise<string>((resolve, reject) => {\n setTimeout(() => resolve(key), 100);\n });\n\n const mock = vi.fn(resolveToKey);\n const cache = createAsyncClientCache(mock);\n\n await Promise.all([\n cache.get(fauxClient, \"a\"),\n cache.get(fauxClient, \"a\"),\n cache.get(fauxClient, \"a\"),\n cache.get(fauxClient, \"b\"),\n cache.get(fauxClient, \"b\"),\n cache.get(fauxClient, \"b\"),\n cache.get(fauxClient, \"b\"),\n ]);\n\n expect(mock).toHaveBeenCalledTimes(2);\n });\n\n describe(\"race checks\", () => {\n let factoryFn: Mock<AsyncFactory<any, any>>;\n let cache: ReturnType<typeof createSpys>;\n let inProgress: ReturnType<typeof createSpys>;\n let asyncCache: AsyncClientCache<string, string>;\n let asyncCacheSpies: {\n [K in keyof typeof asyncCache]: MockInstance<typeof asyncCache[K]>;\n };\n let asyncSetSpy: MockInstance<typeof asyncCache.set>;\n let factoryDefers: DeferredPromise<string>[];\n let getPromises: Promise<string>[];\n\n let expectedAsyncSets: number;\n let expectedFactoryCalls: number;\n\n let successfulFetches: Set<string>;\n let pendingFetches: Set<string>;\n let expectedPending: Record<string, number> = {};\n\n beforeEach(async () => {\n factoryFn = vi.fn();\n factoryFn.mockImplementation(() => {\n const defer = pDefer<string>();\n factoryDefers.push(defer);\n return defer.promise;\n });\n\n getPromises = [];\n factoryDefers = [];\n\n expectedAsyncSets = 0;\n expectedFactoryCalls = 0;\n\n successfulFetches = new Set();\n pendingFetches = new Set();\n expectedPending = {};\n\n const createSyncCacheMock = vi.fn();\n\n cache = createSpys(createClientCache() as any);\n inProgress = createSpys(createClientCache() as any);\n createSyncCacheMock.mockReturnValueOnce(cache);\n createSyncCacheMock.mockReturnValueOnce(inProgress);\n\n asyncCache = createAsyncClientCache<string, string>(\n factoryFn,\n createSyncCacheMock as any,\n );\n\n asyncSetSpy = vi.spyOn(asyncCache, \"set\");\n asyncCacheSpies = {\n get: vi.spyOn(asyncCache, \"get\"),\n set: vi.spyOn(asyncCache, \"set\"),\n getOrUndefined: vi.spyOn(asyncCache, \"getOrUndefined\"),\n };\n\n await expectSaneCalls();\n });\n\n function initiateAsyncCacheGetFor(key: string) {\n return async () => {\n if (!successfulFetches.has(key)) {\n expectedPending[key] = (expectedPending[key] ?? 0) + 1;\n if (!pendingFetches.has(key)) {\n pendingFetches.add(key);\n expectedFactoryCalls++;\n expectedAsyncSets++;\n }\n }\n\n // check before and after make sense so that `expectSaneCalls` can work\n const before = await getStats();\n getPromises.push(asyncCache.get(fauxClient, key));\n expect(await getStats()).toStrictEqual({\n ...before,\n asyncCacheGetCalls: before.asyncCacheGetCalls + 1,\n // may or may not bump the unique keys\n });\n\n await expectSaneCalls();\n };\n }\n\n function resolveFactoryCall(\n num: number,\n key: string,\n value = `${key}Result`,\n ) {\n return async () => {\n // <preconditions>\n expect(await pStateAsync(factoryDefers[num].promise)).toBe(\n \"pending\",\n );\n expect(factoryFn.mock.calls[num][1]).toBe(key);\n expect(pendingFetches).toContain(key);\n expect(successfulFetches).not.toContain(key);\n // </preconditions>\n\n // Update expectations\n pendingFetches.delete(value);\n successfulFetches.add(value);\n\n // check before and after make sense so that `expectSaneCalls` can work\n const before = await getStats();\n factoryDefers[num].resolve(value);\n expect(await getStats()).toStrictEqual({\n ...before,\n fulfilledFactoryCalls: before.fulfilledFactoryCalls + 1,\n });\n\n await expectSaneCalls();\n };\n }\n\n function rejectFactoryCall(\n num: number,\n key: string,\n error = `${key}Error`,\n ) {\n return async () => {\n expect(factoryFn.mock.calls[num][1]).toBe(key);\n expect(pendingFetches).toContain(key);\n\n pendingFetches.delete(key);\n factoryDefers[num].reject(new Error(error));\n\n // we need to ensure the outstanding get promises are rejected\n for (let i = 0; i < asyncCacheSpies.get.mock.calls.length; i++) {\n if (asyncCacheSpies.get.mock.calls[i][1] === key) {\n if (asyncCacheSpies.get.mock.results[i].type === \"return\") {\n await expect(getPromises[i]).rejects.toThrowError();\n }\n }\n }\n\n await expectSaneCalls();\n };\n }\n\n async function getStats() {\n return {\n fulfilledFactoryCalls: (await Promise.all(\n factoryDefers.map(d => pStateAsync(d.promise)),\n )).filter(a => a === \"fulfilled\").length,\n rejectedFactoryCalls: (await Promise.all(\n factoryDefers.map(d => pStateAsync(d.promise)),\n )).filter(a => a === \"rejected\").length,\n asyncCacheGetCalls: asyncCacheSpies.get.mock.calls.length,\n };\n }\n\n async function expectSaneCalls() {\n const stats = await getStats();\n\n // both of these should be connected\n expect(factoryFn).toHaveBeenCalledTimes(expectedFactoryCalls);\n expect(inProgress.set).toHaveBeenCalledTimes(expectedFactoryCalls);\n\n expect(asyncSetSpy).toHaveBeenCalledTimes(expectedAsyncSets);\n\n // inProgress should be removed after a success or failure\n expect(inProgress.remove).toHaveBeenCalledTimes(\n stats.fulfilledFactoryCalls + stats.rejectedFactoryCalls,\n );\n\n // the inner cache gets checked once per async get\n expect(cache.get).toHaveBeenCalledTimes(stats.asyncCacheGetCalls);\n\n // the inner cache only gets set after a successful factory call\n expect(cache.set).toHaveBeenCalledTimes(successfulFetches.size);\n }\n\n function itRejectsAllRequestsOf(key: string) {\n it(`rejects all ${key} requests`, () => {\n for (\n let i = 0;\n i < asyncCacheSpies.get.mock.calls.length;\n i++\n ) {\n if (asyncCacheSpies.get.mock.calls[i][1] === key) {\n expect(asyncCacheSpies.get.mock.settledResults[i].type).toBe(\n \"rejected\",\n );\n expect(asyncCacheSpies.get.mock.settledResults[i].value)\n .toMatchObject(new Error(\"aError\"));\n }\n }\n });\n }\n\n function itDoesNotRejectLastRequestRightAway() {\n it(\"does not reject right away\", () => {\n expect(asyncCacheSpies.get.mock.results.at(-1)?.type).toBe(\n \"return\",\n );\n });\n }\n\n function describeRejectsFactoryCall(\n num: number,\n key: string,\n fn: () => void,\n ) {\n return describe(`rejects factory request ${num} for ${key}`, () => {\n beforeEach(rejectFactoryCall(num, key));\n itRejectsAllRequestsOf(\"a\");\n\n fn();\n });\n }\n\n function describeResolvesFactoryCall(\n num: number,\n key: string,\n fn: () => void,\n ) {\n return describe(`resolves factory request ${num} for ${key}`, () => {\n beforeEach(resolveFactoryCall(num, key));\n fn();\n });\n }\n\n function describeAsyncCacheGetFor(key: string, fn: () => void) {\n return describe(`gets a request for '${key}'`, () => {\n beforeEach(initiateAsyncCacheGetFor(key));\n itDoesNotRejectLastRequestRightAway();\n\n fn();\n });\n }\n\n function itFulfillsAsyncCacheGets(indexes: number[], value: string) {\n it(`fulfills the AsyncCache.get()'s ${indexes.join(\", \")} with '${value}'`, async () => {\n for (const i of indexes) {\n expect(await pStateAsync(getPromises[i])).toBe(\"fulfilled\");\n expect(await getPromises[i]).toBe(value);\n }\n });\n }\n\n function itLeavesAsyncGetPromisesInStates(states: PromiseState[]) {\n it(`leaves the AsyncCache.get()'s in states [${states.join(\", \")}]`, async () => {\n expect(await Promise.all(getPromises.map(p => pStateAsync(p))))\n .toStrictEqual(states);\n for (let i = 0; i < states.length; i++) {\n expect(await pStateAsync(getPromises[i])).toBe(states[i]);\n }\n });\n }\n\n function itHasOnlyInvokedFactoryNTimes(n: number) {\n it(`has only invoked the factory ${n} times`, () => {\n expect(factoryFn).toHaveBeenCalledTimes(n);\n });\n }\n\n function itReturnsForAsyncGet(results: any[]) {\n it(\"returns for async get\", () => {\n expect(asyncCacheSpies.get.mock.settledResults.map(a => a.value))\n .toEqual(results);\n });\n }\n\n it(\"has a minimal base state\", () => {\n expect(cache.get).not.toHaveBeenCalled();\n expect(inProgress.get).not.toHaveBeenCalled();\n expect(factoryFn).not.toHaveBeenCalled();\n expect(inProgress.set).not.toHaveBeenCalled();\n });\n\n describeAsyncCacheGetFor(\"a\", () => {\n itLeavesAsyncGetPromisesInStates([\"pending\"]);\n itHasOnlyInvokedFactoryNTimes(1);\n\n describeAsyncCacheGetFor(\"a\", () => {\n itLeavesAsyncGetPromisesInStates([\"pending\", \"pending\"]);\n itHasOnlyInvokedFactoryNTimes(1);\n\n describe(\"before the first resolves\", () => {\n itLeavesAsyncGetPromisesInStates([\"pending\", \"pending\"]);\n itHasOnlyInvokedFactoryNTimes(1);\n\n describeRejectsFactoryCall(0, \"a\", () => {\n itLeavesAsyncGetPromisesInStates([\"rejected\", \"rejected\"]);\n describeAsyncCacheGetFor(\"a\", () => {\n itDoesNotRejectLastRequestRightAway();\n itHasOnlyInvokedFactoryNTimes(2);\n });\n });\n\n describeAsyncCacheGetFor(\"b\", () => {\n itLeavesAsyncGetPromisesInStates([\"pending\", \"pending\", \"pending\"]);\n itHasOnlyInvokedFactoryNTimes(2);\n\n describeResolvesFactoryCall(1, \"b\", () => {\n itLeavesAsyncGetPromisesInStates([\n \"pending\",\n \"pending\",\n \"fulfilled\",\n ]);\n\n itReturnsForAsyncGet([\n undefined,\n undefined,\n \"bResult\",\n ]);\n });\n });\n\n describeResolvesFactoryCall(0, \"a\", () => {\n itFulfillsAsyncCacheGets([0, 1], \"aResult\");\n itLeavesAsyncGetPromisesInStates([\n \"fulfilled\",\n \"fulfilled\",\n ]);\n\n describeAsyncCacheGetFor(\"a\", () => {\n itHasOnlyInvokedFactoryNTimes(1);\n itLeavesAsyncGetPromisesInStates([\n \"fulfilled\",\n \"fulfilled\",\n \"fulfilled\",\n ]);\n itReturnsForAsyncGet([\n \"aResult\",\n \"aResult\",\n \"aResult\",\n ]);\n });\n });\n });\n });\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Cache.test.js","names":["pDefer","promiseStateAsync","pStateAsync","beforeAll","beforeEach","describe","expect","it","vi","createAsyncClientCache","createClientCache","createSpys","cache","get","spyOn","remove","set","fauxClient","clientCacheKey","fauxClient2","client","key","Promise","resolve","toEqual","mock","fn","setTimeout","all","toHaveBeenCalledTimes","factoryFn","inProgress","asyncCache","asyncCacheSpies","asyncSetSpy","factoryDefers","getPromises","expectedAsyncSets","expectedFactoryCalls","successfulFetches","pendingFetches","expectedPending","mockImplementation","defer","push","promise","Set","createSyncCacheMock","mockReturnValueOnce","getOrUndefined","expectSaneCalls","initiateAsyncCacheGetFor","has","add","before","getStats","toStrictEqual","asyncCacheGetCalls","resolveFactoryCall","num","value","toBe","calls","toContain","not","delete","fulfilledFactoryCalls","rejectFactoryCall","error","reject","Error","i","length","results","type","rejects","toThrowError","map","d","filter","a","rejectedFactoryCalls","stats","size","itRejectsAllRequestsOf","settledResults","toMatchObject","itDoesNotRejectLastRequestRightAway","at","describeRejectsFactoryCall","describeResolvesFactoryCall","describeAsyncCacheGetFor","itFulfillsAsyncCacheGets","indexes","join","itLeavesAsyncGetPromisesInStates","states","p","itHasOnlyInvokedFactoryNTimes","n","itReturnsForAsyncGet","toHaveBeenCalled","undefined"],"sources":["Cache.test.ts"],"sourcesContent":["/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { DeferredPromise } from \"p-defer\";\nimport pDefer from \"p-defer\";\nimport type { PromiseState } from \"p-state\";\nimport { promiseStateAsync as pStateAsync } from \"p-state\";\nimport type { Mock, MockInstance } from \"vitest\";\nimport { beforeAll, beforeEach, describe, expect, it, vi } from \"vitest\";\nimport type { MinimalClient } from \"../MinimalClientContext.js\";\nimport type { AsyncClientCache, AsyncFactory } from \"./Cache.js\";\nimport { createAsyncClientCache, createClientCache } from \"./Cache.js\";\n\nfunction createSpys(cache: ReturnType<typeof createClientCache>) {\n return {\n get: vi.spyOn(cache, \"get\"),\n remove: vi.spyOn(cache, \"remove\"),\n set: vi.spyOn(cache, \"set\"),\n };\n}\n\ndescribe(\"AsyncCache\", () => {\n beforeAll(() => {\n });\n const fauxClient = { clientCacheKey: {} } as MinimalClient;\n const fauxClient2 = { clientCacheKey: {} } as MinimalClient;\n\n it(\"keeps clients separate\", async () => {\n const cache = createAsyncClientCache((client: MinimalClient, key: string) =>\n Promise.resolve(key)\n );\n await cache.set(fauxClient, \"k\", \"v\");\n expect(await cache.get(fauxClient2, \"k\")).toEqual(\"k\");\n });\n\n it(\"has a client and its copy access the same cache\", async () => {\n const cache = createAsyncClientCache((client: MinimalClient, key: string) =>\n Promise.resolve(key)\n );\n await cache.set(fauxClient, \"k\", \"v\");\n expect(await cache.get({ ...fauxClient }, \"k\")).toEqual(\"v\");\n });\n\n it(\"does not double factory\", async () => {\n const resolveToKey = (client: MinimalClient, key: string) =>\n new Promise<string>((resolve, reject) => {\n setTimeout(() => resolve(key), 100);\n });\n\n const mock = vi.fn(resolveToKey);\n const cache = createAsyncClientCache(mock);\n\n await Promise.all([\n cache.get(fauxClient, \"a\"),\n cache.get(fauxClient, \"a\"),\n cache.get(fauxClient, \"a\"),\n cache.get(fauxClient, \"b\"),\n cache.get(fauxClient, \"b\"),\n cache.get(fauxClient, \"b\"),\n cache.get(fauxClient, \"b\"),\n ]);\n\n expect(mock).toHaveBeenCalledTimes(2);\n });\n\n describe(\"race checks\", () => {\n let factoryFn: Mock<AsyncFactory<any, any>>;\n let cache: ReturnType<typeof createSpys>;\n let inProgress: ReturnType<typeof createSpys>;\n let asyncCache: AsyncClientCache<string, string>;\n let asyncCacheSpies: {\n [K in keyof typeof asyncCache]: MockInstance<typeof asyncCache[K]>;\n };\n let asyncSetSpy: MockInstance<typeof asyncCache.set>;\n let factoryDefers: DeferredPromise<string>[];\n let getPromises: Promise<string>[];\n\n let expectedAsyncSets: number;\n let expectedFactoryCalls: number;\n\n let successfulFetches: Set<string>;\n let pendingFetches: Set<string>;\n let expectedPending: Record<string, number> = {};\n\n beforeEach(async () => {\n factoryFn = vi.fn();\n factoryFn.mockImplementation(() => {\n const defer = pDefer<string>();\n factoryDefers.push(defer);\n return defer.promise;\n });\n\n getPromises = [];\n factoryDefers = [];\n\n expectedAsyncSets = 0;\n expectedFactoryCalls = 0;\n\n successfulFetches = new Set();\n pendingFetches = new Set();\n expectedPending = {};\n\n const createSyncCacheMock = vi.fn();\n\n cache = createSpys(createClientCache() as any);\n inProgress = createSpys(createClientCache() as any);\n createSyncCacheMock.mockReturnValueOnce(cache);\n createSyncCacheMock.mockReturnValueOnce(inProgress);\n\n asyncCache = createAsyncClientCache<string, string>(\n factoryFn,\n createSyncCacheMock as any,\n );\n\n asyncSetSpy = vi.spyOn(asyncCache, \"set\");\n asyncCacheSpies = {\n get: vi.spyOn(asyncCache, \"get\"),\n set: asyncSetSpy,\n getOrUndefined: vi.spyOn(asyncCache, \"getOrUndefined\"),\n };\n\n await expectSaneCalls();\n });\n\n function initiateAsyncCacheGetFor(key: string) {\n return async () => {\n if (!successfulFetches.has(key)) {\n expectedPending[key] = (expectedPending[key] ?? 0) + 1;\n if (!pendingFetches.has(key)) {\n pendingFetches.add(key);\n expectedFactoryCalls++;\n expectedAsyncSets++;\n }\n }\n\n // check before and after make sense so that `expectSaneCalls` can work\n const before = await getStats();\n getPromises.push(asyncCache.get(fauxClient, key));\n expect(await getStats()).toStrictEqual({\n ...before,\n asyncCacheGetCalls: before.asyncCacheGetCalls + 1,\n // may or may not bump the unique keys\n });\n\n await expectSaneCalls();\n };\n }\n\n function resolveFactoryCall(\n num: number,\n key: string,\n value = `${key}Result`,\n ) {\n return async () => {\n // <preconditions>\n expect(await pStateAsync(factoryDefers[num].promise)).toBe(\n \"pending\",\n );\n expect(factoryFn.mock.calls[num][1]).toBe(key);\n expect(pendingFetches).toContain(key);\n expect(successfulFetches).not.toContain(key);\n // </preconditions>\n\n // Update expectations\n pendingFetches.delete(value);\n successfulFetches.add(value);\n\n // check before and after make sense so that `expectSaneCalls` can work\n const before = await getStats();\n factoryDefers[num].resolve(value);\n expect(await getStats()).toStrictEqual({\n ...before,\n fulfilledFactoryCalls: before.fulfilledFactoryCalls + 1,\n });\n\n await expectSaneCalls();\n };\n }\n\n function rejectFactoryCall(\n num: number,\n key: string,\n error = `${key}Error`,\n ) {\n return async () => {\n expect(factoryFn.mock.calls[num][1]).toBe(key);\n expect(pendingFetches).toContain(key);\n\n pendingFetches.delete(key);\n factoryDefers[num].reject(new Error(error));\n\n // we need to ensure the outstanding get promises are rejected\n for (let i = 0; i < asyncCacheSpies.get.mock.calls.length; i++) {\n if (asyncCacheSpies.get.mock.calls[i][1] === key) {\n if (asyncCacheSpies.get.mock.results[i].type === \"return\") {\n await expect(getPromises[i]).rejects.toThrowError();\n }\n }\n }\n\n await expectSaneCalls();\n };\n }\n\n async function getStats() {\n return {\n fulfilledFactoryCalls: (await Promise.all(\n factoryDefers.map(d => pStateAsync(d.promise)),\n )).filter(a => a === \"fulfilled\").length,\n rejectedFactoryCalls: (await Promise.all(\n factoryDefers.map(d => pStateAsync(d.promise)),\n )).filter(a => a === \"rejected\").length,\n asyncCacheGetCalls: asyncCacheSpies.get.mock.calls.length,\n };\n }\n\n async function expectSaneCalls() {\n const stats = await getStats();\n\n // both of these should be connected\n expect(factoryFn).toHaveBeenCalledTimes(expectedFactoryCalls);\n expect(inProgress.set).toHaveBeenCalledTimes(expectedFactoryCalls);\n\n expect(asyncSetSpy).toHaveBeenCalledTimes(expectedAsyncSets);\n\n // inProgress should be removed after a success or failure\n expect(inProgress.remove).toHaveBeenCalledTimes(\n stats.fulfilledFactoryCalls + stats.rejectedFactoryCalls,\n );\n\n // the inner cache gets checked once per async get\n expect(cache.get).toHaveBeenCalledTimes(stats.asyncCacheGetCalls);\n\n // the inner cache only gets set after a successful factory call\n expect(cache.set).toHaveBeenCalledTimes(successfulFetches.size);\n }\n\n function itRejectsAllRequestsOf(key: string) {\n it(`rejects all ${key} requests`, () => {\n for (\n let i = 0;\n i < asyncCacheSpies.get.mock.calls.length;\n i++\n ) {\n if (asyncCacheSpies.get.mock.calls[i][1] === key) {\n expect(asyncCacheSpies.get.mock.settledResults[i].type).toBe(\n \"rejected\",\n );\n expect(asyncCacheSpies.get.mock.settledResults[i].value)\n .toMatchObject(new Error(\"aError\"));\n }\n }\n });\n }\n\n function itDoesNotRejectLastRequestRightAway() {\n it(\"does not reject right away\", () => {\n expect(asyncCacheSpies.get.mock.results.at(-1)?.type).toBe(\n \"return\",\n );\n });\n }\n\n function describeRejectsFactoryCall(\n num: number,\n key: string,\n fn: () => void,\n ) {\n return describe(`rejects factory request ${num} for ${key}`, () => {\n beforeEach(rejectFactoryCall(num, key));\n itRejectsAllRequestsOf(\"a\");\n\n fn();\n });\n }\n\n function describeResolvesFactoryCall(\n num: number,\n key: string,\n fn: () => void,\n ) {\n return describe(`resolves factory request ${num} for ${key}`, () => {\n beforeEach(resolveFactoryCall(num, key));\n fn();\n });\n }\n\n function describeAsyncCacheGetFor(key: string, fn: () => void) {\n return describe(`gets a request for '${key}'`, () => {\n beforeEach(initiateAsyncCacheGetFor(key));\n itDoesNotRejectLastRequestRightAway();\n\n fn();\n });\n }\n\n function itFulfillsAsyncCacheGets(indexes: number[], value: string) {\n it(`fulfills the AsyncCache.get()'s ${indexes.join(\", \")} with '${value}'`, async () => {\n for (const i of indexes) {\n expect(await pStateAsync(getPromises[i])).toBe(\"fulfilled\");\n expect(await getPromises[i]).toBe(value);\n }\n });\n }\n\n function itLeavesAsyncGetPromisesInStates(states: PromiseState[]) {\n it(`leaves the AsyncCache.get()'s in states [${states.join(\", \")}]`, async () => {\n expect(await Promise.all(getPromises.map(p => pStateAsync(p))))\n .toStrictEqual(states);\n for (let i = 0; i < states.length; i++) {\n expect(await pStateAsync(getPromises[i])).toBe(states[i]);\n }\n });\n }\n\n function itHasOnlyInvokedFactoryNTimes(n: number) {\n it(`has only invoked the factory ${n} times`, () => {\n expect(factoryFn).toHaveBeenCalledTimes(n);\n });\n }\n\n function itReturnsForAsyncGet(results: any[]) {\n it(\"returns for async get\", () => {\n expect(asyncCacheSpies.get.mock.settledResults.map(a => a.value))\n .toEqual(results);\n });\n }\n\n it(\"has a minimal base state\", () => {\n expect(cache.get).not.toHaveBeenCalled();\n expect(inProgress.get).not.toHaveBeenCalled();\n expect(factoryFn).not.toHaveBeenCalled();\n expect(inProgress.set).not.toHaveBeenCalled();\n });\n\n describeAsyncCacheGetFor(\"a\", () => {\n itLeavesAsyncGetPromisesInStates([\"pending\"]);\n itHasOnlyInvokedFactoryNTimes(1);\n\n describeAsyncCacheGetFor(\"a\", () => {\n itLeavesAsyncGetPromisesInStates([\"pending\", \"pending\"]);\n itHasOnlyInvokedFactoryNTimes(1);\n\n describe(\"before the first resolves\", () => {\n itLeavesAsyncGetPromisesInStates([\"pending\", \"pending\"]);\n itHasOnlyInvokedFactoryNTimes(1);\n\n describeRejectsFactoryCall(0, \"a\", () => {\n itLeavesAsyncGetPromisesInStates([\"rejected\", \"rejected\"]);\n describeAsyncCacheGetFor(\"a\", () => {\n itDoesNotRejectLastRequestRightAway();\n itHasOnlyInvokedFactoryNTimes(2);\n });\n });\n\n describeAsyncCacheGetFor(\"b\", () => {\n itLeavesAsyncGetPromisesInStates([\"pending\", \"pending\", \"pending\"]);\n itHasOnlyInvokedFactoryNTimes(2);\n\n describeResolvesFactoryCall(1, \"b\", () => {\n itLeavesAsyncGetPromisesInStates([\n \"pending\",\n \"pending\",\n \"fulfilled\",\n ]);\n\n itReturnsForAsyncGet([\n undefined,\n undefined,\n \"bResult\",\n ]);\n });\n });\n\n describeResolvesFactoryCall(0, \"a\", () => {\n itFulfillsAsyncCacheGets([0, 1], \"aResult\");\n itLeavesAsyncGetPromisesInStates([\n \"fulfilled\",\n \"fulfilled\",\n ]);\n\n describeAsyncCacheGetFor(\"a\", () => {\n itHasOnlyInvokedFactoryNTimes(1);\n itLeavesAsyncGetPromisesInStates([\n \"fulfilled\",\n \"fulfilled\",\n \"fulfilled\",\n ]);\n itReturnsForAsyncGet([\n \"aResult\",\n \"aResult\",\n \"aResult\",\n ]);\n });\n });\n });\n });\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -38,6 +38,7 @@ function customInspect(_depth, options, localInspect) {
38
38
  let ret = `Osdk<${options.stylize(this[ObjectDefRef]?.apiName ?? this[InterfaceDefRef]?.apiName ?? "", "special")}> {\n`;
39
39
  for (const k of new Set(["$apiName", "$objectType", "$primaryKey", ...Reflect.ownKeys(this)])) {
40
40
  if (typeof k === "symbol") continue;
41
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-conversion
41
42
  ret += ` ${options.stylize(k.toString(), "undefined")}: ${localInspect(this[k], newOptions)}\n`;
42
43
  }
43
44
  if (this[UnderlyingOsdkObject] !== this) {
@@ -1 +1 @@
1
- {"version":3,"file":"OsdkCustomInspectPrototype.js","names":["InterfaceDefRef","ObjectDefRef","UnderlyingOsdkObject","nodejsUtilInspectCustom","Symbol","for","OsdkCustomInspectPrototype","Object","create","value","customInspect","_depth","options","localInspect","newOptions","depth","ret","stylize","apiName","k","Set","Reflect","ownKeys","toString","replace"],"sources":["OsdkCustomInspectPrototype.ts"],"sourcesContent":["/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { ObjectOrInterfaceDefinition, Osdk } from \"@osdk/api\";\nimport type { inspect, InspectOptionsStylized } from \"node:util\";\nimport type { HolderBase } from \"./InternalSymbols.js\";\nimport {\n InterfaceDefRef,\n ObjectDefRef,\n UnderlyingOsdkObject,\n} from \"./InternalSymbols.js\";\n\nconst nodejsUtilInspectCustom: unique symbol = Symbol.for(\n \"nodejs.util.inspect.custom\",\n);\n\nexport const OsdkCustomInspectPrototype: {\n [nodejsUtilInspectCustom]: typeof customInspect;\n} = Object.create(null, {\n [nodejsUtilInspectCustom]: { value: customInspect },\n});\n\n/**\n * A custom `util.inspect`/`console.log` for nodejs. Not emitted in the browser version\n * @param this\n * @param _depth\n * @param options\n * @param inspect\n * @returns\n */\nfunction customInspect(\n this:\n & HolderBase<ObjectOrInterfaceDefinition>\n & Osdk<any>,\n _depth: number,\n options: InspectOptionsStylized,\n localInspect: typeof inspect,\n): string {\n const newOptions = {\n ...options,\n depth: options.depth == null ? null : options.depth - 1,\n };\n\n let ret = `Osdk<${\n options.stylize(\n this[ObjectDefRef]?.apiName ?? this[InterfaceDefRef]?.apiName ?? \"\",\n \"special\",\n )\n }> {\\n`;\n\n for (\n const k of new Set([\n \"$apiName\",\n \"$objectType\",\n \"$primaryKey\",\n ...Reflect.ownKeys(this),\n ])\n ) {\n if (typeof k === \"symbol\") continue;\n ret += ` ${options.stylize(k.toString(), \"undefined\")}: ${\n localInspect(this[k as any], newOptions)\n }\\n`;\n }\n\n if (this[UnderlyingOsdkObject] !== this) {\n ret += \"\\n\";\n ret += ` ${options.stylize(\"$as\", \"special\")}: ${\n localInspect(this[UnderlyingOsdkObject], newOptions).replace(\n /\\n/g,\n `\\n `,\n )\n }`;\n ret += \"\\n\";\n }\n\n ret += \"}\";\n return ret;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAKA,SACEA,eAAe,EACfC,YAAY,EACZC,oBAAoB,QACf,sBAAsB;AAE7B,MAAMC,uBAAsC,GAAGC,MAAM,CAACC,GAAG,CACvD,4BACF,CAAC;AAED,OAAO,MAAMC,0BAEZ,GAAGC,MAAM,CAACC,MAAM,CAAC,IAAI,EAAE;EACtB,CAACL,uBAAuB,GAAG;IAAEM,KAAK,EAAEC;EAAc;AACpD,CAAC,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,aAAaA,CAIpBC,MAAc,EACdC,OAA+B,EAC/BC,YAA4B,EACpB;EACR,MAAMC,UAAU,GAAG;IACjB,GAAGF,OAAO;IACVG,KAAK,EAAEH,OAAO,CAACG,KAAK,IAAI,IAAI,GAAG,IAAI,GAAGH,OAAO,CAACG,KAAK,GAAG;EACxD,CAAC;EAED,IAAIC,GAAG,GAAG,QACRJ,OAAO,CAACK,OAAO,CACb,IAAI,CAAChB,YAAY,CAAC,EAAEiB,OAAO,IAAI,IAAI,CAAClB,eAAe,CAAC,EAAEkB,OAAO,IAAI,EAAE,EACnE,SACF,CAAC,OACI;EAEP,KACE,MAAMC,CAAC,IAAI,IAAIC,GAAG,CAAC,CACjB,UAAU,EACV,aAAa,EACb,aAAa,EACb,GAAGC,OAAO,CAACC,OAAO,CAAC,IAAI,CAAC,CACzB,CAAC,EACF;IACA,IAAI,OAAOH,CAAC,KAAK,QAAQ,EAAE;IAC3BH,GAAG,IAAI,KAAKJ,OAAO,CAACK,OAAO,CAACE,CAAC,CAACI,QAAQ,CAAC,CAAC,EAAE,WAAW,CAAC,KACpDV,YAAY,CAAC,IAAI,CAACM,CAAC,CAAQ,EAAEL,UAAU,CAAC,IACtC;EACN;EAEA,IAAI,IAAI,CAACZ,oBAAoB,CAAC,KAAK,IAAI,EAAE;IACvCc,GAAG,IAAI,IAAI;IACXA,GAAG,IAAI,KAAKJ,OAAO,CAACK,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,KAC3CJ,YAAY,CAAC,IAAI,CAACX,oBAAoB,CAAC,EAAEY,UAAU,CAAC,CAACU,OAAO,CAC1D,KAAK,EACL,MACF,CAAC,EACD;IACFR,GAAG,IAAI,IAAI;EACb;EAEAA,GAAG,IAAI,GAAG;EACV,OAAOA,GAAG;AACZ","ignoreList":[]}
1
+ {"version":3,"file":"OsdkCustomInspectPrototype.js","names":["InterfaceDefRef","ObjectDefRef","UnderlyingOsdkObject","nodejsUtilInspectCustom","Symbol","for","OsdkCustomInspectPrototype","Object","create","value","customInspect","_depth","options","localInspect","newOptions","depth","ret","stylize","apiName","k","Set","Reflect","ownKeys","toString","replace"],"sources":["OsdkCustomInspectPrototype.ts"],"sourcesContent":["/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { ObjectOrInterfaceDefinition, Osdk } from \"@osdk/api\";\nimport type { inspect, InspectOptionsStylized } from \"node:util\";\nimport type { HolderBase } from \"./InternalSymbols.js\";\nimport {\n InterfaceDefRef,\n ObjectDefRef,\n UnderlyingOsdkObject,\n} from \"./InternalSymbols.js\";\n\nconst nodejsUtilInspectCustom: unique symbol = Symbol.for(\n \"nodejs.util.inspect.custom\",\n);\n\nexport const OsdkCustomInspectPrototype: {\n [nodejsUtilInspectCustom]: typeof customInspect;\n} = Object.create(null, {\n [nodejsUtilInspectCustom]: { value: customInspect },\n});\n\n/**\n * A custom `util.inspect`/`console.log` for nodejs. Not emitted in the browser version\n * @param this\n * @param _depth\n * @param options\n * @param inspect\n * @returns\n */\nfunction customInspect(\n this:\n & HolderBase<ObjectOrInterfaceDefinition>\n & Osdk<any>,\n _depth: number,\n options: InspectOptionsStylized,\n localInspect: typeof inspect,\n): string {\n const newOptions = {\n ...options,\n depth: options.depth == null ? null : options.depth - 1,\n };\n\n let ret = `Osdk<${\n options.stylize(\n this[ObjectDefRef]?.apiName ?? this[InterfaceDefRef]?.apiName ?? \"\",\n \"special\",\n )\n }> {\\n`;\n\n for (\n const k of new Set([\n \"$apiName\",\n \"$objectType\",\n \"$primaryKey\",\n ...Reflect.ownKeys(this),\n ])\n ) {\n if (typeof k === \"symbol\") continue;\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-conversion\n ret += ` ${options.stylize(k.toString(), \"undefined\")}: ${\n localInspect(this[k as any], newOptions)\n }\\n`;\n }\n\n if (this[UnderlyingOsdkObject] !== this) {\n ret += \"\\n\";\n ret += ` ${options.stylize(\"$as\", \"special\")}: ${\n localInspect(this[UnderlyingOsdkObject], newOptions).replace(\n /\\n/g,\n `\\n `,\n )\n }`;\n ret += \"\\n\";\n }\n\n ret += \"}\";\n return ret;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAKA,SACEA,eAAe,EACfC,YAAY,EACZC,oBAAoB,QACf,sBAAsB;AAE7B,MAAMC,uBAAsC,GAAGC,MAAM,CAACC,GAAG,CACvD,4BACF,CAAC;AAED,OAAO,MAAMC,0BAEZ,GAAGC,MAAM,CAACC,MAAM,CAAC,IAAI,EAAE;EACtB,CAACL,uBAAuB,GAAG;IAAEM,KAAK,EAAEC;EAAc;AACpD,CAAC,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,aAAaA,CAIpBC,MAAc,EACdC,OAA+B,EAC/BC,YAA4B,EACpB;EACR,MAAMC,UAAU,GAAG;IACjB,GAAGF,OAAO;IACVG,KAAK,EAAEH,OAAO,CAACG,KAAK,IAAI,IAAI,GAAG,IAAI,GAAGH,OAAO,CAACG,KAAK,GAAG;EACxD,CAAC;EAED,IAAIC,GAAG,GAAG,QACRJ,OAAO,CAACK,OAAO,CACb,IAAI,CAAChB,YAAY,CAAC,EAAEiB,OAAO,IAAI,IAAI,CAAClB,eAAe,CAAC,EAAEkB,OAAO,IAAI,EAAE,EACnE,SACF,CAAC,OACI;EAEP,KACE,MAAMC,CAAC,IAAI,IAAIC,GAAG,CAAC,CACjB,UAAU,EACV,aAAa,EACb,aAAa,EACb,GAAGC,OAAO,CAACC,OAAO,CAAC,IAAI,CAAC,CACzB,CAAC,EACF;IACA,IAAI,OAAOH,CAAC,KAAK,QAAQ,EAAE;IAC3B;IACAH,GAAG,IAAI,KAAKJ,OAAO,CAACK,OAAO,CAACE,CAAC,CAACI,QAAQ,CAAC,CAAC,EAAE,WAAW,CAAC,KACpDV,YAAY,CAAC,IAAI,CAACM,CAAC,CAAQ,EAAEL,UAAU,CAAC,IACtC;EACN;EAEA,IAAI,IAAI,CAACZ,oBAAoB,CAAC,KAAK,IAAI,EAAE;IACvCc,GAAG,IAAI,IAAI;IACXA,GAAG,IAAI,KAAKJ,OAAO,CAACK,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,KAC3CJ,YAAY,CAAC,IAAI,CAACX,oBAAoB,CAAC,EAAEY,UAAU,CAAC,CAACU,OAAO,CAC1D,KAAK,EACL,MACF,CAAC,EACD;IACFR,GAAG,IAAI,IAAI;EACb;EAEAA,GAAG,IAAI,GAAG;EACV,OAAOA,GAAG;AACZ","ignoreList":[]}
@@ -15,6 +15,7 @@
15
15
  */
16
16
 
17
17
  import { extractNamespace } from "../../internal/conversions/modernToLegacyWhereClause.js";
18
+ import { get$linkForInterface } from "./getDollarLink.js";
18
19
  import { InterfaceDefRef, ObjectDefRef, UnderlyingOsdkObject } from "./InternalSymbols.js";
19
20
  /** @internal */
20
21
  export function createOsdkInterface(underlying, interfaceDef) {
@@ -63,6 +64,11 @@ export function createOsdkInterface(underlying, interfaceDef) {
63
64
  },
64
65
  enumerable: false
65
66
  },
67
+ "$link": {
68
+ get: function () {
69
+ return get$linkForInterface(this);
70
+ }
71
+ },
66
72
  [InterfaceDefRef]: {
67
73
  value: interfaceDef
68
74
  },
@@ -1 +1 @@
1
- {"version":3,"file":"createOsdkInterface.js","names":["extractNamespace","InterfaceDefRef","ObjectDefRef","UnderlyingOsdkObject","createOsdkInterface","underlying","interfaceDef","objApiNamespace","apiName","Object","freeze","defineProperties","value","enumerable","$as","$objectType","$primaryKey","$objectSpecifier","$title","$rid","clone","fromEntries","keys","properties","map","p","objDef","apiNamespace","targetPropName","interfaceMap","update","$clone","key","Error","remappedProps","mapProperty","filter","x","propertyName"],"sources":["createOsdkInterface.ts"],"sourcesContent":["/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { InterfaceMetadata } from \"@osdk/api\";\nimport { extractNamespace } from \"../../internal/conversions/modernToLegacyWhereClause.js\";\nimport type { FetchedObjectTypeDefinition } from \"../../ontology/OntologyProvider.js\";\nimport type { InterfaceHolder } from \"./InterfaceHolder.js\";\nimport {\n InterfaceDefRef,\n ObjectDefRef,\n UnderlyingOsdkObject,\n} from \"./InternalSymbols.js\";\nimport type { ObjectHolder } from \"./ObjectHolder.js\";\n\n/** @internal */\nexport function createOsdkInterface<\n Q extends FetchedObjectTypeDefinition,\n>(\n underlying: ObjectHolder,\n interfaceDef: InterfaceMetadata,\n): InterfaceHolder {\n const [objApiNamespace] = extractNamespace(interfaceDef.apiName);\n\n return Object.freeze(\n Object.defineProperties({}, {\n // first to minimize hidden classes\n [UnderlyingOsdkObject]: { value: underlying },\n\n \"$apiName\": { value: interfaceDef.apiName, enumerable: true },\n \"$as\": {\n value: underlying.$as,\n enumerable: false,\n },\n \"$objectType\": {\n value: underlying.$objectType,\n enumerable: \"$objectType\" in underlying,\n },\n \"$primaryKey\": {\n value: underlying.$primaryKey,\n enumerable: \"$primaryKey\" in underlying,\n },\n \"$objectSpecifier\": {\n value: underlying.$objectSpecifier,\n enumerable: \"$objectSpecifier\" in underlying,\n },\n \"$title\": {\n value: underlying.$title,\n enumerable: \"$title\" in underlying,\n },\n \"$rid\": {\n value: (underlying as any).$rid,\n enumerable: \"$rid\" in underlying,\n },\n \"$clone\": {\n value: clone,\n enumerable: false,\n },\n \"$__EXPERIMENTAL__NOT_SUPPORTED_YET__metadata\": {\n value: {\n \"ObjectMetadata\": underlying[ObjectDefRef],\n \"InterfaceMetadata\": interfaceDef,\n },\n enumerable: false,\n },\n\n [InterfaceDefRef]: { value: interfaceDef },\n\n ...Object.fromEntries(\n Object.keys(interfaceDef.properties).map(p => {\n const objDef = underlying[ObjectDefRef];\n\n const [apiNamespace, apiName] = extractNamespace(p);\n\n const targetPropName = objDef\n .interfaceMap![interfaceDef.apiName][p];\n\n return [apiNamespace === objApiNamespace ? apiName : p, {\n enumerable: targetPropName in underlying,\n value: underlying[targetPropName as keyof typeof underlying],\n }];\n }),\n ),\n }) as InterfaceHolder,\n );\n function clone(update: Record<string, any> | undefined) {\n if (update == null) {\n return underlying.$clone().$as(interfaceDef);\n }\n\n for (const key of Object.keys(update)) {\n if (!(key in interfaceDef.properties)) {\n throw new Error(\n `Invalid property ${key} for interface ${interfaceDef.apiName}`,\n );\n }\n }\n\n const remappedProps = Object.fromEntries(\n Object.keys(update).map(p => mapProperty(p, update[p])).filter(x =>\n x != null\n ),\n );\n\n return underlying.$clone(remappedProps).$as(interfaceDef);\n }\n function mapProperty(propertyName: string, value: any) {\n const objDef = underlying[ObjectDefRef];\n const targetPropName =\n objDef.interfaceMap![interfaceDef.apiName][propertyName];\n // If the underlying object does not implement the SPT, throw errors\n if (targetPropName == null) {\n throw new Error(\n `Cannot clone interface with ${propertyName} as property is not implemented by the underlying object type ${objDef.apiName}`,\n );\n }\n return [targetPropName, value];\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"createOsdkInterface.js","names":["extractNamespace","get$linkForInterface","InterfaceDefRef","ObjectDefRef","UnderlyingOsdkObject","createOsdkInterface","underlying","interfaceDef","objApiNamespace","apiName","Object","freeze","defineProperties","value","enumerable","$as","$objectType","$primaryKey","$objectSpecifier","$title","$rid","clone","get","fromEntries","keys","properties","map","p","objDef","apiNamespace","targetPropName","interfaceMap","update","$clone","key","Error","remappedProps","mapProperty","filter","x","propertyName"],"sources":["createOsdkInterface.ts"],"sourcesContent":["/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { InterfaceMetadata } from \"@osdk/api\";\nimport { extractNamespace } from \"../../internal/conversions/modernToLegacyWhereClause.js\";\nimport type { FetchedObjectTypeDefinition } from \"../../ontology/OntologyProvider.js\";\nimport { get$linkForInterface } from \"./getDollarLink.js\";\nimport type { InterfaceHolder } from \"./InterfaceHolder.js\";\nimport {\n InterfaceDefRef,\n ObjectDefRef,\n UnderlyingOsdkObject,\n} from \"./InternalSymbols.js\";\nimport type { ObjectHolder } from \"./ObjectHolder.js\";\n\n/** @internal */\nexport function createOsdkInterface<\n Q extends FetchedObjectTypeDefinition,\n>(\n underlying: ObjectHolder,\n interfaceDef: InterfaceMetadata,\n): InterfaceHolder {\n const [objApiNamespace] = extractNamespace(interfaceDef.apiName);\n\n return Object.freeze(\n Object.defineProperties({}, {\n // first to minimize hidden classes\n [UnderlyingOsdkObject]: { value: underlying },\n\n \"$apiName\": { value: interfaceDef.apiName, enumerable: true },\n \"$as\": {\n value: underlying.$as,\n enumerable: false,\n },\n \"$objectType\": {\n value: underlying.$objectType,\n enumerable: \"$objectType\" in underlying,\n },\n \"$primaryKey\": {\n value: underlying.$primaryKey,\n enumerable: \"$primaryKey\" in underlying,\n },\n \"$objectSpecifier\": {\n value: underlying.$objectSpecifier,\n enumerable: \"$objectSpecifier\" in underlying,\n },\n \"$title\": {\n value: underlying.$title,\n enumerable: \"$title\" in underlying,\n },\n \"$rid\": {\n value: (underlying as any).$rid,\n enumerable: \"$rid\" in underlying,\n },\n \"$clone\": {\n value: clone,\n enumerable: false,\n },\n \"$__EXPERIMENTAL__NOT_SUPPORTED_YET__metadata\": {\n value: {\n \"ObjectMetadata\": underlying[ObjectDefRef],\n \"InterfaceMetadata\": interfaceDef,\n },\n enumerable: false,\n },\n\n \"$link\": {\n get: function(this: InterfaceHolder) {\n return get$linkForInterface(this);\n },\n },\n\n [InterfaceDefRef]: { value: interfaceDef },\n\n ...Object.fromEntries(\n Object.keys(interfaceDef.properties).map(p => {\n const objDef = underlying[ObjectDefRef];\n\n const [apiNamespace, apiName] = extractNamespace(p);\n\n const targetPropName = objDef\n .interfaceMap![interfaceDef.apiName][p];\n\n return [apiNamespace === objApiNamespace ? apiName : p, {\n enumerable: targetPropName in underlying,\n value: underlying[targetPropName as keyof typeof underlying],\n }];\n }),\n ),\n }) as InterfaceHolder,\n );\n function clone(update: Record<string, any> | undefined) {\n if (update == null) {\n return underlying.$clone().$as(interfaceDef);\n }\n\n for (const key of Object.keys(update)) {\n if (!(key in interfaceDef.properties)) {\n throw new Error(\n `Invalid property ${key} for interface ${interfaceDef.apiName}`,\n );\n }\n }\n\n const remappedProps = Object.fromEntries(\n Object.keys(update).map(p => mapProperty(p, update[p])).filter(x =>\n x != null\n ),\n );\n\n return underlying.$clone(remappedProps).$as(interfaceDef);\n }\n function mapProperty(propertyName: string, value: any) {\n const objDef = underlying[ObjectDefRef];\n const targetPropName =\n objDef.interfaceMap![interfaceDef.apiName][propertyName];\n // If the underlying object does not implement the SPT, throw errors\n if (targetPropName == null) {\n throw new Error(\n `Cannot clone interface with ${propertyName} as property is not implemented by the underlying object type ${objDef.apiName}`,\n );\n }\n return [targetPropName, value];\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -16,7 +16,7 @@
16
16
 
17
17
  import { getWireObjectSet } from "../../objectSet/createObjectSet.js";
18
18
  import { fetchSingle, fetchSingleWithErrors } from "../fetchSingle.js";
19
- import { ClientRef, ObjectDefRef, UnderlyingOsdkObject } from "./InternalSymbols.js";
19
+ import { ClientRef, InterfaceDefRef, ObjectDefRef, UnderlyingOsdkObject } from "./InternalSymbols.js";
20
20
  /** @internal */
21
21
  export function get$link(holder) {
22
22
  const client = holder[ClientRef];
@@ -34,4 +34,23 @@ export function get$link(holder) {
34
34
  return [linkName, value];
35
35
  })));
36
36
  }
37
+
38
+ /** @internal */
39
+ export function get$linkForInterface(holder) {
40
+ const client = holder[UnderlyingOsdkObject][ClientRef];
41
+ const objDef = holder[UnderlyingOsdkObject][ObjectDefRef];
42
+ const interfaceDef = holder[InterfaceDefRef];
43
+ const rawObj = holder[UnderlyingOsdkObject];
44
+ return Object.freeze(Object.fromEntries(Object.keys(interfaceDef.links).map(linkName => {
45
+ const linkDef = interfaceDef.links[linkName];
46
+ const objectSet = client.objectSetFactory(interfaceDef, client).intersect(client.objectSetFactory(objDef, client).where({
47
+ [objDef.primaryKeyApiName]: rawObj.$primaryKey
48
+ })).pivotTo(linkName);
49
+ const value = !linkDef.multiplicity ? {
50
+ fetchOne: options => fetchSingle(client, objDef, options ?? {}, getWireObjectSet(objectSet)),
51
+ fetchOneWithErrors: options => fetchSingleWithErrors(client, objDef, options ?? {}, getWireObjectSet(objectSet))
52
+ } : objectSet;
53
+ return [linkName, value];
54
+ })));
55
+ }
37
56
  //# sourceMappingURL=getDollarLink.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getDollarLink.js","names":["getWireObjectSet","fetchSingle","fetchSingleWithErrors","ClientRef","ObjectDefRef","UnderlyingOsdkObject","get$link","holder","client","objDef","rawObj","Object","freeze","fromEntries","keys","links","map","linkName","linkDef","objectSet","objectSetFactory","where","primaryKeyApiName","$primaryKey","pivotTo","value","multiplicity","fetchOne","options","fetchOneWithErrors"],"sources":["getDollarLink.ts"],"sourcesContent":["/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n ObjectSet,\n OsdkObjectLinksObject,\n SelectArg,\n SingleLinkAccessor,\n WhereClause,\n} from \"@osdk/api\";\nimport { getWireObjectSet } from \"../../objectSet/createObjectSet.js\";\nimport { fetchSingle, fetchSingleWithErrors } from \"../fetchSingle.js\";\nimport {\n ClientRef,\n ObjectDefRef,\n UnderlyingOsdkObject,\n} from \"./InternalSymbols.js\";\nimport type { ObjectHolder } from \"./ObjectHolder.js\";\n\n/** @internal */\nexport function get$link(\n holder: ObjectHolder,\n): OsdkObjectLinksObject<any> {\n const client = holder[ClientRef];\n const objDef = holder[ObjectDefRef];\n const rawObj = holder[UnderlyingOsdkObject];\n return Object.freeze(Object.fromEntries(\n Object.keys(objDef.links).map(\n (linkName) => {\n const linkDef = objDef.links[linkName as keyof typeof objDef.links];\n const objectSet =\n (client.objectSetFactory(objDef, client) as ObjectSet<any>)\n .where({\n [objDef.primaryKeyApiName]: rawObj.$primaryKey,\n } as WhereClause<any>)\n .pivotTo(linkName);\n\n const value = !linkDef.multiplicity\n ? {\n fetchOne: <A extends SelectArg<any, any, any, any>>(\n options?: A,\n ) =>\n fetchSingle(\n client,\n objDef,\n options ?? {},\n getWireObjectSet(objectSet),\n ),\n fetchOneWithErrors: <A extends SelectArg<any, any, any, any>>(\n options?: A,\n ) =>\n fetchSingleWithErrors(\n client,\n objDef,\n options ?? {},\n getWireObjectSet(objectSet),\n ),\n } as SingleLinkAccessor<any>\n : objectSet;\n\n return [linkName, value];\n },\n ),\n ));\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA,SAASA,gBAAgB,QAAQ,oCAAoC;AACrE,SAASC,WAAW,EAAEC,qBAAqB,QAAQ,mBAAmB;AACtE,SACEC,SAAS,EACTC,YAAY,EACZC,oBAAoB,QACf,sBAAsB;AAG7B;AACA,OAAO,SAASC,QAAQA,CACtBC,MAAoB,EACQ;EAC5B,MAAMC,MAAM,GAAGD,MAAM,CAACJ,SAAS,CAAC;EAChC,MAAMM,MAAM,GAAGF,MAAM,CAACH,YAAY,CAAC;EACnC,MAAMM,MAAM,GAAGH,MAAM,CAACF,oBAAoB,CAAC;EAC3C,OAAOM,MAAM,CAACC,MAAM,CAACD,MAAM,CAACE,WAAW,CACrCF,MAAM,CAACG,IAAI,CAACL,MAAM,CAACM,KAAK,CAAC,CAACC,GAAG,CAC1BC,QAAQ,IAAK;IACZ,MAAMC,OAAO,GAAGT,MAAM,CAACM,KAAK,CAACE,QAAQ,CAA8B;IACnE,MAAME,SAAS,GACZX,MAAM,CAACY,gBAAgB,CAACX,MAAM,EAAED,MAAM,CAAC,CACrCa,KAAK,CAAC;MACL,CAACZ,MAAM,CAACa,iBAAiB,GAAGZ,MAAM,CAACa;IACrC,CAAqB,CAAC,CACrBC,OAAO,CAACP,QAAQ,CAAC;IAEtB,MAAMQ,KAAK,GAAG,CAACP,OAAO,CAACQ,YAAY,GAC/B;MACAC,QAAQ,EACNC,OAAW,IAEX3B,WAAW,CACTO,MAAM,EACNC,MAAM,EACNmB,OAAO,IAAI,CAAC,CAAC,EACb5B,gBAAgB,CAACmB,SAAS,CAC5B,CAAC;MACHU,kBAAkB,EAChBD,OAAW,IAEX1B,qBAAqB,CACnBM,MAAM,EACNC,MAAM,EACNmB,OAAO,IAAI,CAAC,CAAC,EACb5B,gBAAgB,CAACmB,SAAS,CAC5B;IACJ,CAAC,GACCA,SAAS;IAEb,OAAO,CAACF,QAAQ,EAAEQ,KAAK,CAAC;EAC1B,CACF,CACF,CAAC,CAAC;AACJ","ignoreList":[]}
1
+ {"version":3,"file":"getDollarLink.js","names":["getWireObjectSet","fetchSingle","fetchSingleWithErrors","ClientRef","InterfaceDefRef","ObjectDefRef","UnderlyingOsdkObject","get$link","holder","client","objDef","rawObj","Object","freeze","fromEntries","keys","links","map","linkName","linkDef","objectSet","objectSetFactory","where","primaryKeyApiName","$primaryKey","pivotTo","value","multiplicity","fetchOne","options","fetchOneWithErrors","get$linkForInterface","interfaceDef","intersect"],"sources":["getDollarLink.ts"],"sourcesContent":["/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n ObjectSet,\n OsdkObjectLinksObject,\n SelectArg,\n SingleLinkAccessor,\n WhereClause,\n} from \"@osdk/api\";\nimport { getWireObjectSet } from \"../../objectSet/createObjectSet.js\";\nimport { fetchSingle, fetchSingleWithErrors } from \"../fetchSingle.js\";\nimport type { InterfaceHolder } from \"./InterfaceHolder.js\";\nimport {\n ClientRef,\n InterfaceDefRef,\n ObjectDefRef,\n UnderlyingOsdkObject,\n} from \"./InternalSymbols.js\";\nimport type { ObjectHolder } from \"./ObjectHolder.js\";\n\n/** @internal */\nexport function get$link(\n holder: ObjectHolder,\n): OsdkObjectLinksObject<any> {\n const client = holder[ClientRef];\n const objDef = holder[ObjectDefRef];\n const rawObj = holder[UnderlyingOsdkObject];\n return Object.freeze(Object.fromEntries(\n Object.keys(objDef.links).map(\n (linkName) => {\n const linkDef = objDef.links[linkName as keyof typeof objDef.links];\n const objectSet =\n (client.objectSetFactory(objDef, client) as ObjectSet<any>)\n .where({\n [objDef.primaryKeyApiName]: rawObj.$primaryKey,\n } as WhereClause<any>)\n .pivotTo(linkName);\n\n const value = !linkDef.multiplicity\n ? {\n fetchOne: <A extends SelectArg<any, any, any, any>>(\n options?: A,\n ) =>\n fetchSingle(\n client,\n objDef,\n options ?? {},\n getWireObjectSet(objectSet),\n ),\n fetchOneWithErrors: <A extends SelectArg<any, any, any, any>>(\n options?: A,\n ) =>\n fetchSingleWithErrors(\n client,\n objDef,\n options ?? {},\n getWireObjectSet(objectSet),\n ),\n } as SingleLinkAccessor<any>\n : objectSet;\n\n return [linkName, value];\n },\n ),\n ));\n}\n\n/** @internal */\nexport function get$linkForInterface(\n holder: InterfaceHolder,\n): OsdkObjectLinksObject<any> {\n const client = holder[UnderlyingOsdkObject][ClientRef];\n const objDef = holder[UnderlyingOsdkObject][ObjectDefRef];\n const interfaceDef = holder[InterfaceDefRef];\n const rawObj = holder[UnderlyingOsdkObject];\n return Object.freeze(Object.fromEntries(\n Object.keys(interfaceDef.links).map(\n (linkName) => {\n const linkDef =\n interfaceDef.links[linkName as keyof typeof objDef.links];\n const objectSet =\n (client.objectSetFactory(interfaceDef, client) as ObjectSet<any>)\n .intersect(\n (client.objectSetFactory(objDef, client) as ObjectSet<any>)\n .where({\n [objDef.primaryKeyApiName]: rawObj.$primaryKey,\n } as WhereClause<any>),\n )\n .pivotTo(linkName);\n\n const value = !linkDef.multiplicity\n ? {\n fetchOne: <A extends SelectArg<any, any, any, any>>(\n options?: A,\n ) =>\n fetchSingle(\n client,\n objDef,\n options ?? {},\n getWireObjectSet(objectSet),\n ),\n fetchOneWithErrors: <A extends SelectArg<any, any, any, any>>(\n options?: A,\n ) =>\n fetchSingleWithErrors(\n client,\n objDef,\n options ?? {},\n getWireObjectSet(objectSet),\n ),\n } as SingleLinkAccessor<any>\n : objectSet;\n\n return [linkName, value];\n },\n ),\n ));\n}\n"],"mappings":"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","ignoreList":[]}
@@ -47,6 +47,8 @@ describe("convertWireToOsdkObjects", () => {
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
49
  expect(Object.keys(employee.$link)).toEqual(["lead", "officeLink", "peeps"]);
50
+ const asFoo = employee.$as(FooInterface);
51
+ expect(Object.keys(asFoo.$link)).toEqual(["toBar"]);
50
52
  });
51
53
  it("stringifies properties on objects and interfaces correctly", async () => {
52
54
  const {