@osdk/client 2.8.0-beta.1 → 2.8.0-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +108 -0
- package/build/browser/Client.js +1 -1
- package/build/browser/Client.js.map +1 -1
- package/build/browser/actions/applyAction.js +2 -1
- package/build/browser/actions/applyAction.js.map +1 -1
- package/build/browser/derivedProperties/createWithPropertiesObjectSet.test.js +101 -0
- package/build/browser/derivedProperties/createWithPropertiesObjectSet.test.js.map +1 -1
- package/build/browser/derivedProperties/derivedPropertyDefinitionFactory.js +1 -1
- package/build/browser/derivedProperties/derivedPropertyDefinitionFactory.js.map +1 -1
- package/build/browser/internal/conversions/modernToLegacyWhereClause.js +1 -1
- package/build/browser/internal/conversions/modernToLegacyWhereClause.js.map +1 -1
- package/build/browser/objectSet/ObjectSetListenerWebsocket.js +2 -2
- package/build/browser/objectSet/ObjectSetListenerWebsocket.js.map +1 -1
- package/build/browser/objectSet/createObjectSet.js +0 -4
- package/build/browser/objectSet/createObjectSet.js.map +1 -1
- package/build/browser/observable/ObservableClient/ObserveLink.js.map +1 -1
- package/build/browser/observable/ObservableClient.js +11 -0
- package/build/browser/observable/ObservableClient.js.map +1 -1
- package/build/browser/observable/internal/AbstractHelper.js +56 -3
- package/build/browser/observable/internal/AbstractHelper.js.map +1 -1
- package/build/browser/observable/internal/AbstractHelper.test.js +114 -0
- package/build/browser/observable/internal/AbstractHelper.test.js.map +1 -0
- package/build/browser/observable/internal/BulkObjectLoader.js +71 -9
- package/build/browser/observable/internal/BulkObjectLoader.js.map +1 -1
- package/build/browser/observable/internal/BulkObjectLoader.test.js +79 -0
- package/build/browser/observable/internal/BulkObjectLoader.test.js.map +1 -1
- package/build/browser/observable/internal/CacheKeys.js +19 -8
- package/build/browser/observable/internal/CacheKeys.js.map +1 -1
- package/build/browser/observable/internal/ListQueryView.js +120 -0
- package/build/browser/observable/internal/ListQueryView.js.map +1 -0
- package/build/browser/observable/internal/ObservableClientImpl.js +136 -24
- package/build/browser/observable/internal/ObservableClientImpl.js.map +1 -1
- package/build/browser/observable/internal/PivotCanonicalizer.js +4 -4
- package/build/browser/observable/internal/PivotCanonicalizer.js.map +1 -1
- package/build/browser/observable/internal/Query.js +7 -5
- package/build/browser/observable/internal/Query.js.map +1 -1
- package/build/browser/observable/internal/RdpCanonicalizer.test.js +23 -7
- package/build/browser/observable/internal/RdpCanonicalizer.test.js.map +1 -1
- package/build/browser/observable/internal/Store.js +19 -2
- package/build/browser/observable/internal/Store.js.map +1 -1
- package/build/browser/observable/internal/Store.test.js +327 -1
- package/build/browser/observable/internal/Store.test.js.map +1 -1
- package/build/browser/observable/internal/actions/ActionApplication.js +8 -6
- package/build/browser/observable/internal/actions/ActionApplication.js.map +1 -1
- package/build/browser/observable/internal/aggregation/AggregationCacheKey.js +5 -3
- package/build/browser/observable/internal/aggregation/AggregationCacheKey.js.map +1 -1
- package/build/browser/observable/internal/aggregation/AggregationQuery.js +28 -2
- package/build/browser/observable/internal/aggregation/AggregationQuery.js.map +1 -1
- package/build/browser/observable/internal/aggregation/AggregationsHelper.js +18 -2
- package/build/browser/observable/internal/aggregation/AggregationsHelper.js.map +1 -1
- package/build/browser/observable/internal/aggregation/AggregationsHelper.test.js +103 -0
- package/build/browser/observable/internal/aggregation/AggregationsHelper.test.js.map +1 -0
- package/build/browser/observable/internal/aggregation/ObjectAggregationQuery.js +22 -3
- package/build/browser/observable/internal/aggregation/ObjectAggregationQuery.js.map +1 -1
- package/build/browser/observable/internal/base-list/BaseListQuery.js +73 -6
- package/build/browser/observable/internal/base-list/BaseListQuery.js.map +1 -1
- package/build/browser/observable/internal/function/FunctionQuery.js +27 -1
- package/build/browser/observable/internal/function/FunctionQuery.js.map +1 -1
- package/build/browser/observable/internal/function/FunctionsHelper.js +2 -1
- package/build/browser/observable/internal/function/FunctionsHelper.js.map +1 -1
- package/build/browser/observable/internal/getObjectTypesThatInvalidate.js +2 -2
- package/build/browser/observable/internal/getObjectTypesThatInvalidate.js.map +1 -1
- package/build/browser/observable/internal/links/LinksHelper.js +3 -2
- package/build/browser/observable/internal/links/LinksHelper.js.map +1 -1
- package/build/browser/observable/internal/links/SpecificLinkCacheKey.js +7 -5
- package/build/browser/observable/internal/links/SpecificLinkCacheKey.js.map +1 -1
- package/build/browser/observable/internal/links/SpecificLinkQuery.js +97 -62
- package/build/browser/observable/internal/links/SpecificLinkQuery.js.map +1 -1
- package/build/browser/observable/internal/list/InterfaceListQuery.js +19 -1
- package/build/browser/observable/internal/list/InterfaceListQuery.js.map +1 -1
- package/build/browser/observable/internal/list/ListQuery.js +30 -10
- package/build/browser/observable/internal/list/ListQuery.js.map +1 -1
- package/build/browser/observable/internal/list/ListQuery.test.js +262 -1
- package/build/browser/observable/internal/list/ListQuery.test.js.map +1 -1
- package/build/browser/observable/internal/list/ListsHelper.js +1 -1
- package/build/browser/observable/internal/list/ListsHelper.js.map +1 -1
- package/build/browser/observable/internal/list/ObjectListQuery.js +22 -21
- package/build/browser/observable/internal/list/ObjectListQuery.js.map +1 -1
- package/build/browser/observable/internal/object/ObjectQuery.js +23 -6
- package/build/browser/observable/internal/object/ObjectQuery.js.map +1 -1
- package/build/browser/observable/internal/object/ObjectsHelper.js +12 -3
- package/build/browser/observable/internal/object/ObjectsHelper.js.map +1 -1
- package/build/browser/observable/internal/object/ObjectsHelper.test.js +200 -0
- package/build/browser/observable/internal/object/ObjectsHelper.test.js.map +1 -0
- package/build/browser/observable/internal/objectset/ObjectSetCacheKey.js.map +1 -1
- package/build/browser/observable/internal/objectset/ObjectSetHelper.js +3 -2
- package/build/browser/observable/internal/objectset/ObjectSetHelper.js.map +1 -1
- package/build/browser/observable/internal/objectset/ObjectSetHelper.test.js +94 -0
- package/build/browser/observable/internal/objectset/ObjectSetHelper.test.js.map +1 -0
- package/build/browser/observable/internal/objectset/ObjectSetQuery.js +4 -1
- package/build/browser/observable/internal/objectset/ObjectSetQuery.js.map +1 -1
- package/build/browser/observable/internal/testUtils/observeLink/expectStandardObserveLink.js +1 -0
- package/build/browser/observable/internal/testUtils/observeLink/expectStandardObserveLink.js.map +1 -1
- package/build/browser/observable/internal/testUtils.js.map +1 -1
- package/build/browser/observable/internal/utils/rdpFieldOperations.js +7 -2
- package/build/browser/observable/internal/utils/rdpFieldOperations.js.map +1 -1
- package/build/browser/observable/internal/utils/rdpFieldOperations.test.js +55 -0
- package/build/browser/observable/internal/utils/rdpFieldOperations.test.js.map +1 -1
- package/build/browser/public/unstable-do-not-use.js +1 -0
- package/build/browser/public/unstable-do-not-use.js.map +1 -1
- package/build/browser/util/UserAgent.js +2 -2
- package/build/browser/util/UserAgent.js.map +1 -1
- package/build/browser/util/interfaceUtils.js +7 -0
- package/build/browser/util/interfaceUtils.js.map +1 -1
- package/build/cjs/{chunk-7543GRIE.cjs → chunk-6VOFZIIJ.cjs} +79 -69
- package/build/cjs/chunk-6VOFZIIJ.cjs.map +1 -0
- package/build/cjs/{chunk-VVKEXIIO.cjs → chunk-YVZM2JPW.cjs} +164 -155
- package/build/cjs/chunk-YVZM2JPW.cjs.map +1 -0
- package/build/cjs/index.cjs +8 -8
- package/build/cjs/public/internal.cjs +8 -8
- package/build/cjs/public/unstable-do-not-use.cjs +928 -361
- package/build/cjs/public/unstable-do-not-use.cjs.map +1 -1
- package/build/cjs/public/unstable-do-not-use.d.cts +64 -26
- package/build/esm/Client.js +1 -1
- package/build/esm/Client.js.map +1 -1
- package/build/esm/actions/applyAction.js +2 -1
- package/build/esm/actions/applyAction.js.map +1 -1
- package/build/esm/derivedProperties/createWithPropertiesObjectSet.test.js +101 -0
- package/build/esm/derivedProperties/createWithPropertiesObjectSet.test.js.map +1 -1
- package/build/esm/derivedProperties/derivedPropertyDefinitionFactory.js +1 -1
- package/build/esm/derivedProperties/derivedPropertyDefinitionFactory.js.map +1 -1
- package/build/esm/internal/conversions/modernToLegacyWhereClause.js +1 -1
- package/build/esm/internal/conversions/modernToLegacyWhereClause.js.map +1 -1
- package/build/esm/objectSet/ObjectSetListenerWebsocket.js +2 -2
- package/build/esm/objectSet/ObjectSetListenerWebsocket.js.map +1 -1
- package/build/esm/objectSet/createObjectSet.js +0 -4
- package/build/esm/objectSet/createObjectSet.js.map +1 -1
- package/build/esm/observable/ObservableClient/ObserveLink.js.map +1 -1
- package/build/esm/observable/ObservableClient.js +11 -0
- package/build/esm/observable/ObservableClient.js.map +1 -1
- package/build/esm/observable/internal/AbstractHelper.js +56 -3
- package/build/esm/observable/internal/AbstractHelper.js.map +1 -1
- package/build/esm/observable/internal/AbstractHelper.test.js +114 -0
- package/build/esm/observable/internal/AbstractHelper.test.js.map +1 -0
- package/build/esm/observable/internal/BulkObjectLoader.js +71 -9
- package/build/esm/observable/internal/BulkObjectLoader.js.map +1 -1
- package/build/esm/observable/internal/BulkObjectLoader.test.js +79 -0
- package/build/esm/observable/internal/BulkObjectLoader.test.js.map +1 -1
- package/build/esm/observable/internal/CacheKeys.js +19 -8
- package/build/esm/observable/internal/CacheKeys.js.map +1 -1
- package/build/esm/observable/internal/ListQueryView.js +120 -0
- package/build/esm/observable/internal/ListQueryView.js.map +1 -0
- package/build/esm/observable/internal/ObservableClientImpl.js +136 -24
- package/build/esm/observable/internal/ObservableClientImpl.js.map +1 -1
- package/build/esm/observable/internal/PivotCanonicalizer.js +4 -4
- package/build/esm/observable/internal/PivotCanonicalizer.js.map +1 -1
- package/build/esm/observable/internal/Query.js +7 -5
- package/build/esm/observable/internal/Query.js.map +1 -1
- package/build/esm/observable/internal/RdpCanonicalizer.test.js +23 -7
- package/build/esm/observable/internal/RdpCanonicalizer.test.js.map +1 -1
- package/build/esm/observable/internal/Store.js +19 -2
- package/build/esm/observable/internal/Store.js.map +1 -1
- package/build/esm/observable/internal/Store.test.js +327 -1
- package/build/esm/observable/internal/Store.test.js.map +1 -1
- package/build/esm/observable/internal/actions/ActionApplication.js +8 -6
- package/build/esm/observable/internal/actions/ActionApplication.js.map +1 -1
- package/build/esm/observable/internal/aggregation/AggregationCacheKey.js +5 -3
- package/build/esm/observable/internal/aggregation/AggregationCacheKey.js.map +1 -1
- package/build/esm/observable/internal/aggregation/AggregationQuery.js +28 -2
- package/build/esm/observable/internal/aggregation/AggregationQuery.js.map +1 -1
- package/build/esm/observable/internal/aggregation/AggregationsHelper.js +18 -2
- package/build/esm/observable/internal/aggregation/AggregationsHelper.js.map +1 -1
- package/build/esm/observable/internal/aggregation/AggregationsHelper.test.js +103 -0
- package/build/esm/observable/internal/aggregation/AggregationsHelper.test.js.map +1 -0
- package/build/esm/observable/internal/aggregation/ObjectAggregationQuery.js +22 -3
- package/build/esm/observable/internal/aggregation/ObjectAggregationQuery.js.map +1 -1
- package/build/esm/observable/internal/base-list/BaseListQuery.js +73 -6
- package/build/esm/observable/internal/base-list/BaseListQuery.js.map +1 -1
- package/build/esm/observable/internal/function/FunctionQuery.js +27 -1
- package/build/esm/observable/internal/function/FunctionQuery.js.map +1 -1
- package/build/esm/observable/internal/function/FunctionsHelper.js +2 -1
- package/build/esm/observable/internal/function/FunctionsHelper.js.map +1 -1
- package/build/esm/observable/internal/getObjectTypesThatInvalidate.js +2 -2
- package/build/esm/observable/internal/getObjectTypesThatInvalidate.js.map +1 -1
- package/build/esm/observable/internal/links/LinksHelper.js +3 -2
- package/build/esm/observable/internal/links/LinksHelper.js.map +1 -1
- package/build/esm/observable/internal/links/SpecificLinkCacheKey.js +7 -5
- package/build/esm/observable/internal/links/SpecificLinkCacheKey.js.map +1 -1
- package/build/esm/observable/internal/links/SpecificLinkQuery.js +97 -62
- package/build/esm/observable/internal/links/SpecificLinkQuery.js.map +1 -1
- package/build/esm/observable/internal/list/InterfaceListQuery.js +19 -1
- package/build/esm/observable/internal/list/InterfaceListQuery.js.map +1 -1
- package/build/esm/observable/internal/list/ListQuery.js +30 -10
- package/build/esm/observable/internal/list/ListQuery.js.map +1 -1
- package/build/esm/observable/internal/list/ListQuery.test.js +262 -1
- package/build/esm/observable/internal/list/ListQuery.test.js.map +1 -1
- package/build/esm/observable/internal/list/ListsHelper.js +1 -1
- package/build/esm/observable/internal/list/ListsHelper.js.map +1 -1
- package/build/esm/observable/internal/list/ObjectListQuery.js +22 -21
- package/build/esm/observable/internal/list/ObjectListQuery.js.map +1 -1
- package/build/esm/observable/internal/object/ObjectQuery.js +23 -6
- package/build/esm/observable/internal/object/ObjectQuery.js.map +1 -1
- package/build/esm/observable/internal/object/ObjectsHelper.js +12 -3
- package/build/esm/observable/internal/object/ObjectsHelper.js.map +1 -1
- package/build/esm/observable/internal/object/ObjectsHelper.test.js +200 -0
- package/build/esm/observable/internal/object/ObjectsHelper.test.js.map +1 -0
- package/build/esm/observable/internal/objectset/ObjectSetCacheKey.js.map +1 -1
- package/build/esm/observable/internal/objectset/ObjectSetHelper.js +3 -2
- package/build/esm/observable/internal/objectset/ObjectSetHelper.js.map +1 -1
- package/build/esm/observable/internal/objectset/ObjectSetHelper.test.js +94 -0
- package/build/esm/observable/internal/objectset/ObjectSetHelper.test.js.map +1 -0
- package/build/esm/observable/internal/objectset/ObjectSetQuery.js +4 -1
- package/build/esm/observable/internal/objectset/ObjectSetQuery.js.map +1 -1
- package/build/esm/observable/internal/testUtils/observeLink/expectStandardObserveLink.js +1 -0
- package/build/esm/observable/internal/testUtils/observeLink/expectStandardObserveLink.js.map +1 -1
- package/build/esm/observable/internal/testUtils.js.map +1 -1
- package/build/esm/observable/internal/utils/rdpFieldOperations.js +7 -2
- package/build/esm/observable/internal/utils/rdpFieldOperations.js.map +1 -1
- package/build/esm/observable/internal/utils/rdpFieldOperations.test.js +55 -0
- package/build/esm/observable/internal/utils/rdpFieldOperations.test.js.map +1 -1
- package/build/esm/public/unstable-do-not-use.js +1 -0
- package/build/esm/public/unstable-do-not-use.js.map +1 -1
- package/build/esm/util/UserAgent.js +2 -2
- package/build/esm/util/UserAgent.js.map +1 -1
- package/build/esm/util/interfaceUtils.js +7 -0
- package/build/esm/util/interfaceUtils.js.map +1 -1
- package/build/types/Client.d.ts +1 -1
- package/build/types/objectSet/createObjectSet.d.ts +5 -1
- package/build/types/objectSet/createObjectSet.d.ts.map +1 -1
- package/build/types/observable/ObservableClient/ObserveLink.d.ts +2 -1
- package/build/types/observable/ObservableClient/ObserveLink.d.ts.map +1 -1
- package/build/types/observable/ObservableClient.d.ts +71 -25
- package/build/types/observable/ObservableClient.d.ts.map +1 -1
- package/build/types/observable/internal/AbstractHelper.d.ts +1 -1
- package/build/types/observable/internal/AbstractHelper.d.ts.map +1 -1
- package/build/types/observable/internal/AbstractHelper.test.d.ts +1 -0
- package/build/types/observable/internal/AbstractHelper.test.d.ts.map +1 -0
- package/build/types/observable/internal/BulkObjectLoader.d.ts +2 -1
- package/build/types/observable/internal/BulkObjectLoader.d.ts.map +1 -1
- package/build/types/observable/internal/CacheKeys.d.ts +5 -0
- package/build/types/observable/internal/CacheKeys.d.ts.map +1 -1
- package/build/types/observable/internal/ListQueryView.d.ts +21 -0
- package/build/types/observable/internal/ListQueryView.d.ts.map +1 -0
- package/build/types/observable/internal/PivotCanonicalizer.d.ts +2 -2
- package/build/types/observable/internal/PivotCanonicalizer.d.ts.map +1 -1
- package/build/types/observable/internal/Query.d.ts.map +1 -1
- package/build/types/observable/internal/Store.d.ts.map +1 -1
- package/build/types/observable/internal/Store.test.d.ts.map +1 -1
- package/build/types/observable/internal/actions/ActionApplication.d.ts.map +1 -1
- package/build/types/observable/internal/aggregation/AggregationCacheKey.d.ts +6 -4
- package/build/types/observable/internal/aggregation/AggregationCacheKey.d.ts.map +1 -1
- package/build/types/observable/internal/aggregation/AggregationQuery.d.ts +8 -3
- package/build/types/observable/internal/aggregation/AggregationQuery.d.ts.map +1 -1
- package/build/types/observable/internal/aggregation/AggregationsHelper.d.ts +19 -14
- package/build/types/observable/internal/aggregation/AggregationsHelper.d.ts.map +1 -1
- package/build/types/observable/internal/aggregation/AggregationsHelper.test.d.ts +1 -0
- package/build/types/observable/internal/aggregation/AggregationsHelper.test.d.ts.map +1 -0
- package/build/types/observable/internal/aggregation/ObjectAggregationQuery.d.ts.map +1 -1
- package/build/types/observable/internal/base-list/BaseListQuery.d.ts +47 -2
- package/build/types/observable/internal/base-list/BaseListQuery.d.ts.map +1 -1
- package/build/types/observable/internal/function/FunctionQuery.d.ts +1 -1
- package/build/types/observable/internal/function/FunctionQuery.d.ts.map +1 -1
- package/build/types/observable/internal/function/FunctionsHelper.d.ts +1 -0
- package/build/types/observable/internal/function/FunctionsHelper.d.ts.map +1 -1
- package/build/types/observable/internal/links/LinksHelper.d.ts +5 -5
- package/build/types/observable/internal/links/LinksHelper.d.ts.map +1 -1
- package/build/types/observable/internal/links/SpecificLinkCacheKey.d.ts +8 -6
- package/build/types/observable/internal/links/SpecificLinkCacheKey.d.ts.map +1 -1
- package/build/types/observable/internal/links/SpecificLinkQuery.d.ts +3 -4
- package/build/types/observable/internal/links/SpecificLinkQuery.d.ts.map +1 -1
- package/build/types/observable/internal/list/InterfaceListQuery.d.ts.map +1 -1
- package/build/types/observable/internal/list/ListQuery.d.ts +0 -3
- package/build/types/observable/internal/list/ListQuery.d.ts.map +1 -1
- package/build/types/observable/internal/list/ListsHelper.d.ts +4 -4
- package/build/types/observable/internal/list/ListsHelper.d.ts.map +1 -1
- package/build/types/observable/internal/list/ObjectListQuery.d.ts.map +1 -1
- package/build/types/observable/internal/object/ObjectQuery.d.ts +2 -1
- package/build/types/observable/internal/object/ObjectQuery.d.ts.map +1 -1
- package/build/types/observable/internal/object/ObjectsHelper.d.ts +8 -4
- package/build/types/observable/internal/object/ObjectsHelper.d.ts.map +1 -1
- package/build/types/observable/internal/object/ObjectsHelper.test.d.ts +1 -0
- package/build/types/observable/internal/object/ObjectsHelper.test.d.ts.map +1 -0
- package/build/types/observable/internal/objectset/ObjectSetCacheKey.d.ts +2 -1
- package/build/types/observable/internal/objectset/ObjectSetCacheKey.d.ts.map +1 -1
- package/build/types/observable/internal/objectset/ObjectSetHelper.d.ts +3 -1
- package/build/types/observable/internal/objectset/ObjectSetHelper.d.ts.map +1 -1
- package/build/types/observable/internal/objectset/ObjectSetHelper.test.d.ts +1 -0
- package/build/types/observable/internal/objectset/ObjectSetHelper.test.d.ts.map +1 -0
- package/build/types/observable/internal/objectset/ObjectSetQuery.d.ts +2 -0
- package/build/types/observable/internal/objectset/ObjectSetQuery.d.ts.map +1 -1
- package/build/types/observable/internal/testUtils.d.ts +2 -2
- package/build/types/observable/internal/testUtils.d.ts.map +1 -1
- package/build/types/public/unstable-do-not-use.d.ts +1 -0
- package/build/types/public/unstable-do-not-use.d.ts.map +1 -1
- package/build/types/util/interfaceUtils.d.ts +2 -1
- package/build/types/util/interfaceUtils.d.ts.map +1 -1
- package/package.json +12 -12
- package/build/cjs/chunk-7543GRIE.cjs.map +0 -1
- package/build/cjs/chunk-VVKEXIIO.cjs.map +0 -1
- package/build/cjs/delay-W2TSML2P.cjs +0 -75
- package/build/cjs/delay-W2TSML2P.cjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testUtils.js","names":["Chalk","inspect","pDefer","invariant","afterEach","beforeEach","expect","vi","vitest","additionalContext","chalk","mockLog","args","console","log","yellow","createTestLogger","bindings","options","colors","debug","cyan","bgCyan","info","green","bgGreen","trace","gray","bgGray","error","red","bgRed","warn","bgYellow","fatal","redBright","bgRedBright","createLogMethod","name","fn","hasData","length","obj","more","slice","msgPrefix","methodName","magenta","Object","keys","child","theseBindings","theseOptions","level","undefined","isLevelEnabled","createClientMockHelper","client","logger","mockImplementation","localLogger","Error","e","where","deadObjectSet","whereArgs","fetchPage","fetchArgs","fetchOne","baseUrl","ontologyRid","objectFactory","objectFactory2","ontologyProvider","getActionDefinition","getInterfaceDefinition","getObjectDefinition","getQueryDefinition","tokenProvider","objectSetFactory","fetch","clientCacheKey","requestContext","narrowTypeInterfaceOrObjectMapping","fetchMetadata","mockApplyActionOnce","d","mockReturnValueOnce","applyAction","x","promise","type","addedLinks","addedObjects","deletedObjects","deletedLinks","deletedLinksCount","deletedObjectsCount","editedObjectTypes","modifiedObjects","mockFetchOneOnce","expectedId","a","process","env","NODE_ENV","r","$primaryKey","JSON","stringify","mockObjectFactory2Once","mocked","mockFetchPageOnce","objectSet","fetchPageArgs","clause","createDefer","subscriptions","s","unsubscribe","push","expectSingleLinkCallAndClear","subFn","resolvedList","payloadOptions","isFakeTimers","runOnlyPendingTimers","next","toHaveBeenCalledExactlyOnceWith","objectContaining","linkPayloadContaining","ret","mock","calls","mockClear","expectSingleListCallAndClear","listPayloadContaining","expectSingleObjectCallAndClear","object","status","any","String","waitForCall","times","waitFor","toHaveBeenCalledTimes","interval","depth","compact","expectNoMoreCalls","observer","not","toHaveBeenCalled","createSubscriptionHelper","mockSingleSubCallback","mockObserver","assign","expectLoadingAndLoaded","q","toHaveBeenNthCalledWith","loading","loaded","complete","mockListSubCallback","mockLinkSubCallback","cacheEntryContaining","cacheKey","value","toBeOneOf","anything","lastUpdated","nonOptionalValue","src","key","objectPayloadContaining","isOptimistic","Boolean","fetchMore","Function","hasMore","totalCount","applyCustomMatchers","extend","toBeGreaterThan","pass","message","updateList","store","orderBy","objects","optimisticId","opts","dedupeInterval","query","lists","getQuery","batch","rdpConfig","objectCacheKeys","storeOsdkInstances","_updateList","getObject","pk","getValue","cacheKeys","get","updateObject","apiName","$apiName","writeToStore"],"sources":["testUtils.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n ActionDefinition,\n ActionEditResponse,\n FetchPageArgs,\n InterfaceDefinition,\n Logger,\n ObjectOrInterfaceDefinition,\n ObjectSet,\n ObjectTypeDefinition,\n Osdk,\n OsdkBase,\n PageResult,\n WhereClause,\n} from \"@osdk/api\";\nimport { Chalk } from \"chalk\";\nimport { inspect } from \"node:util\";\nimport type { DeferredPromise } from \"p-defer\";\nimport pDefer from \"p-defer\";\nimport type { Observer } from \"rxjs\";\nimport invariant from \"tiny-invariant\";\nimport type { Mock, MockedObject } from \"vitest\";\nimport { afterEach, beforeEach, expect, vi, vitest } from \"vitest\";\nimport type { ActionSignatureFromDef } from \"../../actions/applyAction.js\";\nimport type { Client } from \"../../Client.js\";\nimport { additionalContext } from \"../../Client.js\";\nimport type { ObjectHolder } from \"../../object/convertWireToOsdkObjects/ObjectHolder.js\";\nimport type { SpecificLinkPayload } from \"../LinkPayload.js\";\nimport type { ListPayload } from \"../ListPayload.js\";\nimport type { ObjectPayload } from \"../ObjectPayload.js\";\nimport type { OrderBy, Status } from \"../ObservableClient/common.js\";\nimport type { Unsubscribable } from \"../Unsubscribable.js\";\nimport type { Entry } from \"./Layer.js\";\nimport type { ListQueryOptions } from \"./list/ListQueryOptions.js\";\nimport type { ObjectCacheKey } from \"./object/ObjectCacheKey.js\";\nimport type { OptimisticId } from \"./OptimisticId.js\";\nimport type { Store } from \"./Store.js\";\n\nconst chalk = new Chalk(); // new Chalk({ level: 3 });\n\nexport interface MockClientHelper {\n client: Mock<Client> & Client;\n\n mockApplyActionOnce: () => DeferredPromise<Partial<ActionEditResponse>>;\n\n mockFetchOneOnce: <Q extends ObjectTypeDefinition>(\n expectedId?: string | number | boolean,\n ) => DeferredPromise<\n Partial<\n Osdk.Instance<Q>\n >\n >;\n\n mockObjectFactory2Once: () => DeferredPromise<\n Array<\n | Osdk.Instance<ObjectOrInterfaceDefinition, never, any, {}>\n | ObjectHolder\n >\n >;\n\n mockFetchPageOnce: <\n Q extends ObjectTypeDefinition,\n >(\n expected?: {\n where: WhereClause<any>;\n orderBy: Record<string, \"asc\" | \"desc\" | undefined>;\n },\n ) => DeferredPromise<\n PageResult<Partial<Osdk.Instance<Q>>>\n >;\n}\n\nfunction mockLog(...args: any[]) {\n // eslint-disable-next-line no-console\n console.log(\n chalk.yellow(\"mockClient\"),\n ...args,\n );\n}\n\n/**\n * Testing utilities for ObservableClient implementation.\n * - Mock creation helpers for client, observers, and callbacks\n * - Expectation utilities for validating payloads\n * - Tools for managing test lifecycle and cleanup\n * - Creates a colorized logger for test environments\n */\nexport function createTestLogger(\n bindings: Record<string, any>,\n options?: { level?: string; msgPrefix?: string },\n): Logger {\n const colors = {\n debug: [chalk.cyan, chalk.bgCyan],\n info: [chalk.green, chalk.bgGreen],\n trace: [chalk.gray, chalk.bgGray],\n error: [chalk.red, chalk.bgRed],\n warn: [chalk.yellow, chalk.bgYellow],\n fatal: [chalk.redBright, chalk.bgRedBright],\n } as const;\n function createLogMethod(\n name: \"debug\" | \"error\" | \"info\" | \"warn\" | \"fatal\" | \"trace\",\n ) {\n return vi.fn<Logger.LogFn>(\n (\n ...args: [\n obj: unknown,\n ...args1: any[],\n ] | [\n ...args2: any[],\n ]\n ) => {\n const hasData = args.length > 0 && typeof args[0] !== \"string\";\n const obj: Record<string, unknown> = hasData ? args[0] as any : {};\n const more: any[] = hasData ? args.slice(1) : args.slice(0);\n\n // eslint-disable-next-line no-console\n console.log(\n `${colors[name][1](name)}${\n options?.msgPrefix ? \" \" + colors[name][0](options.msgPrefix) : \"\"\n }${obj?.methodName ? ` .${chalk.magenta(obj.methodName)}()` : \"\"}`,\n ...more,\n );\n if (bindings && Object.keys(bindings).length > 0) {\n // eslint-disable-next-line no-console\n console.log(bindings);\n }\n },\n ) as Logger.LogFn;\n }\n return {\n debug: createLogMethod(\"debug\"),\n error: createLogMethod(\"error\"),\n info: createLogMethod(\"info\"),\n warn: createLogMethod(\"warn\"),\n fatal: createLogMethod(\"fatal\"),\n child: vi.fn<Logger[\"child\"]>((theseBindings, theseOptions) =>\n createTestLogger({\n ...bindings,\n ...theseBindings,\n }, {\n level: (theseOptions ?? options)?.level,\n msgPrefix: options?.msgPrefix || theseOptions?.msgPrefix\n ? `${options?.msgPrefix ? `${options.msgPrefix} ` : \"\"}${\n theseOptions?.msgPrefix || \"\"\n }`\n : undefined,\n })\n ),\n trace: createLogMethod(\"trace\"),\n isLevelEnabled: vi.fn((args) => true),\n };\n}\n\n/**\n * Creates mocked client helpers with deferred promise control\n */\nexport function createClientMockHelper(): MockClientHelper {\n const client = vitest.fn<typeof client>() as unknown as Mock<Client> & Client;\n\n const logger = createTestLogger({});\n\n // this is just a fallback for when there is nothing set so we can track whats up\n client.mockImplementation((...args: any[]) => {\n const localLogger = logger.child({}, { msgPrefix: \"fallback mock client\" });\n try {\n throw new Error(\"IN THE FALLBACK MOCK CLIENT IMPLEMENTATION\");\n } catch (e) {\n localLogger.error(\"Just for the stack trace\", e);\n }\n\n let where;\n const deadObjectSet = {\n where: (...whereArgs: any[]) => {\n localLogger.trace(\"where\", whereArgs);\n where = whereArgs;\n return deadObjectSet;\n },\n fetchPage: (...fetchArgs: any[]) => {\n localLogger.trace(\"fetchPage\", where!, fetchArgs);\n throw new Error(\"NO\");\n },\n fetchOne: (...fetchArgs: any[]) => {\n localLogger.trace(\"fetchOne\", fetchArgs);\n\n throw new Error(\"NO\");\n },\n };\n return deadObjectSet;\n });\n\n client[additionalContext] = {\n baseUrl: \"http://localhost:8080\",\n ontologyRid: \"ri.something\",\n objectFactory: vitest.fn(),\n objectFactory2: vitest.fn(),\n ontologyProvider: {\n getActionDefinition: vitest.fn(),\n getInterfaceDefinition: vitest.fn(),\n getObjectDefinition: vitest.fn(),\n getQueryDefinition: vitest.fn(),\n },\n tokenProvider: vitest.fn(),\n objectSetFactory: vitest.fn(),\n fetch: vitest.fn(),\n clientCacheKey: {} as any,\n requestContext: {},\n logger,\n narrowTypeInterfaceOrObjectMapping: {},\n };\n client.fetchMetadata = vitest.fn();\n\n function mockObjectFactory2Once() {\n const d = pDefer<\n (\n | Osdk.Instance<ObjectOrInterfaceDefinition, never, any, {}>\n | ObjectHolder\n )[]\n >();\n vi.mocked(client[additionalContext].objectFactory2).mockReturnValueOnce(\n d.promise as Promise<ObjectHolder[]>,\n );\n return d;\n }\n\n function mockFetchPageOnce<\n X extends PageResult<\n Osdk.Instance<ObjectTypeDefinition>\n >,\n >(): DeferredPromise<X> {\n const d = pDefer<X>();\n\n const objectSet: ObjectSet<ObjectTypeDefinition> = {\n fetchPage: async (fetchPageArgs: FetchPageArgs<any>) => {\n mockLog(\"fetchPage\", fetchPageArgs);\n const r = await d.promise;\n return { ...r, $primaryKey: fetchPageArgs };\n },\n where: (clause) => {\n mockLog(\"where\", clause);\n return objectSet;\n },\n } as Pick<\n ObjectSet<ObjectTypeDefinition>,\n \"fetchPage\" | \"where\"\n > as ObjectSet<ObjectTypeDefinition>;\n\n client.mockReturnValueOnce(objectSet);\n return d;\n }\n\n function mockFetchOneOnce<\n X extends Partial<OsdkBase<any>>,\n >(expectedId?: string | number | boolean): DeferredPromise<X> {\n const d = pDefer<X>();\n\n client.mockReturnValueOnce(\n {\n fetchOne: async (a: FetchPageArgs<any>) => {\n mockLog(\"fetchOne\", a);\n invariant(\n expectedId === undefined || a === expectedId,\n \"expected id to match\",\n );\n const r = await d.promise;\n invariant(\n r.$primaryKey === a,\n `expected id to match. Got ${\n JSON.stringify(a)\n } but object to return was ${r.$primaryKey}`,\n );\n return r as Osdk.Instance<any>;\n },\n } as Pick<ObjectSet<ObjectTypeDefinition>, \"fetchOne\">,\n );\n return d;\n }\n\n function mockApplyActionOnce(): DeferredPromise<\n Partial<ActionEditResponse>\n > {\n const d = pDefer<Partial<ActionEditResponse>>();\n\n client.mockReturnValueOnce(\n {\n applyAction: async (_args): Promise<ActionEditResponse> => {\n const x = await d.promise;\n return {\n type: \"edits\",\n addedLinks: x.addedLinks ?? [],\n addedObjects: x.addedObjects ?? [],\n deletedObjects: x.deletedObjects ?? [],\n deletedLinks: x.deletedLinks ?? [],\n deletedLinksCount: x.deletedLinksCount ?? 0,\n deletedObjectsCount: x.deletedObjectsCount ?? 0,\n editedObjectTypes: x.editedObjectTypes ?? [],\n modifiedObjects: x.modifiedObjects ?? [],\n };\n },\n } as Pick<\n ActionSignatureFromDef<ActionDefinition>,\n \"applyAction\"\n >,\n );\n return d;\n }\n\n return {\n client,\n mockApplyActionOnce,\n mockFetchOneOnce,\n mockObjectFactory2Once,\n mockFetchPageOnce,\n };\n}\n\n/**\n * Manages test subscriptions with automatic cleanup\n */\nexport function createDefer() {\n let subscriptions: Unsubscribable[];\n\n beforeEach(() => {\n subscriptions = [];\n });\n\n afterEach(() => {\n for (const s of subscriptions) {\n s.unsubscribe();\n }\n subscriptions = [];\n });\n\n return function defer(x: Unsubscribable): Unsubscribable {\n subscriptions.push(x);\n return x;\n };\n}\n\nexport function expectSingleLinkCallAndClear<T extends ObjectTypeDefinition>(\n subFn: MockedObject<Observer<SpecificLinkPayload | undefined>>,\n resolvedList: ObjectHolder[] | Osdk.Instance<T>[] | undefined,\n payloadOptions: Omit<Partial<SpecificLinkPayload>, \"resolvedList\"> = {},\n): SpecificLinkPayload | undefined {\n if (vitest.isFakeTimers()) {\n vitest.runOnlyPendingTimers();\n }\n expect(subFn.next).toHaveBeenCalledExactlyOnceWith(\n expect.objectContaining(\n linkPayloadContaining({\n ...payloadOptions,\n resolvedList: resolvedList as unknown as Array<\n ObjectHolder\n >,\n }),\n ),\n );\n\n const ret = subFn.next.mock.calls[0][0];\n subFn.next.mockClear();\n return ret;\n}\n\nexport function expectSingleListCallAndClear<T extends ObjectTypeDefinition>(\n subFn: MockedObject<Observer<ListPayload | undefined>>,\n resolvedList: ObjectHolder[] | Osdk.Instance<T>[],\n payloadOptions: Omit<Partial<ListPayload>, \"resolvedList\"> = {},\n): ListPayload | undefined {\n if (vitest.isFakeTimers()) {\n vitest.runOnlyPendingTimers();\n }\n expect(subFn.next).toHaveBeenCalledExactlyOnceWith(\n expect.objectContaining(\n listPayloadContaining({\n ...payloadOptions,\n resolvedList: resolvedList as unknown as Array<\n ObjectHolder\n >,\n }),\n ),\n );\n const ret = subFn.next.mock.calls[0][0];\n subFn.next.mockClear();\n return ret;\n}\n\n/**\n * Validates object payload emissions in tests\n */\nexport function expectSingleObjectCallAndClear<T extends ObjectTypeDefinition>(\n subFn: MockedObject<Observer<ObjectPayload | undefined>>,\n object: Osdk.Instance<T> | undefined,\n status?: Status,\n): ObjectPayload | undefined {\n expect(subFn.next).toHaveBeenCalledExactlyOnceWith(\n expect.objectContaining({\n object,\n status: status ?? expect.any(String),\n }),\n );\n\n const ret = subFn.next.mock.calls[0][0];\n subFn.next.mockClear();\n return ret;\n}\n\nexport async function waitForCall(\n subFn: Mock<(e: any) => void> | MockedObject<Observer<any>>,\n times: number = 1,\n): Promise<void> {\n if (\"next\" in subFn && \"error\" in subFn && \"complete\" in subFn) {\n subFn = subFn.next;\n }\n try {\n await vi.waitFor(() => {\n expect(subFn).toHaveBeenCalledTimes(times);\n }, {\n interval: 0,\n });\n } catch (e) {\n // eslint-disable-next-line no-console\n console.log(\n `We are going to fail waiting for ${times} calls because these are our calls: `,\n inspect(subFn.mock.calls, {\n depth: 9,\n colors: true,\n compact: 2,\n }),\n );\n // we don't need the error, it will retrigger on the next line\n // and that provides better behavior in the vitest vscode\n // plugin. This places the error in the test itself instead of\n // only in this file\n }\n expect(subFn).toHaveBeenCalledTimes(times);\n}\n\nexport function expectNoMoreCalls(\n observer: MockedObject<\n Observer<any>\n >,\n): void {\n expect(observer.next).not.toHaveBeenCalled();\n expect(observer.error).not.toHaveBeenCalled();\n}\n\nfunction createSubscriptionHelper() {\n}\n\nexport type MockedSingleSubCallback =\n & MockedObject<Observer<ObjectPayload | undefined>>\n & {\n // expectLoaded: (value: unknown) => Promise<void>;\n // expectLoading: (value: unknown) => Promise<void>;\n expectLoadingAndLoaded: (q: {\n loading?: unknown;\n loaded: unknown;\n }) => Promise<void>;\n };\n\nexport function mockSingleSubCallback(): MockedSingleSubCallback {\n const ret = mockObserver<ObjectPayload | undefined>();\n\n // async function expectLoaded(value: unknown) {\n // await waitForCall(ret);\n // // as long as we get the loaded call we are happy\n // expect(ret).toHaveBeenLastCalledWith(\n // cacheEntryContaining({\n // value,\n // status: \"loaded\",\n // }),\n // );\n // ret.mockClear();\n // }\n\n // async function expectLoading(value: unknown) {\n // await waitForCall(ret);\n // // as long as we get the loaded call we are happy\n // expect(ret).toHaveBeenCalledExactlyOnceWith(\n // cacheEntryContaining({\n // value,\n // status: \"loading\",\n // }),\n // );\n // ret.mockClear();\n // }\n\n return Object.assign(ret, {\n // expectLoaded,\n // expectLoading,\n expectLoadingAndLoaded: async (\n q: { loading?: unknown; loaded: unknown },\n ) => {\n await waitForCall(ret.next, 2);\n\n // as long as we get the loaded call we are happy\n expect(ret.next).toHaveBeenNthCalledWith(\n 1,\n q.loading,\n );\n expect(ret.next).toHaveBeenNthCalledWith(\n 2,\n q.loaded,\n );\n expect(ret.next).toHaveBeenCalledTimes(2);\n ret.next.mockClear();\n },\n });\n}\n\nexport function mockObserver<T>(): MockedObject<Observer<T>> {\n return {\n next: vitest.fn(),\n\n // error: vitest.fn((x) => console.error(x)),\n error: vitest.fn(),\n complete: vitest.fn(),\n };\n}\n\n// todo: find uses of this and replace with direct call to mockObserver<ListPayload | undefined>\nexport function mockListSubCallback(): MockedObject<\n Observer<ListPayload | undefined>\n> {\n return mockObserver<ListPayload | undefined>();\n}\n\n// todo: find uses of this and replace with direct call to mockObserver<SpecificLinkPayload | undefined>\nexport function mockLinkSubCallback(): MockedObject<\n Observer<SpecificLinkPayload | undefined>\n> {\n return mockObserver<SpecificLinkPayload | undefined>();\n}\n\nexport function cacheEntryContaining(x: Partial<Entry<any>>): Entry<any> {\n return {\n cacheKey: x.cacheKey ?? expect.any(Object),\n value: \"value\" in x\n ? x.value\n : expect.toBeOneOf([expect.anything(), undefined]),\n status: x.status ?? expect.anything(),\n lastUpdated: x.lastUpdated ?? expect.anything(),\n };\n}\n\nfunction nonOptionalValue<T extends object, K extends keyof T>(\n src: T,\n key: K,\n): NonNullable<T[K]> {\n return key in src\n ? src[key]\n : expect.toBeOneOf([expect.anything(), undefined]);\n}\n\nexport function objectPayloadContaining(\n x: Partial<ObjectPayload>,\n): ObjectPayload {\n return {\n object: nonOptionalValue(x, \"object\"),\n isOptimistic: expect.any(Boolean),\n status: x.status ?? expect.anything(),\n lastUpdated: x.lastUpdated ?? expect.anything(),\n };\n}\n\nexport function listPayloadContaining(\n x: Partial<ListPayload>,\n): ListPayload {\n return {\n fetchMore: x.fetchMore ?? expect.any(Function),\n hasMore: x.hasMore ?? expect.any(Boolean),\n resolvedList: x.resolvedList ?? expect.anything(),\n isOptimistic: expect.any(Boolean),\n status: x.status ?? expect.anything(),\n lastUpdated: x.lastUpdated ?? expect.anything(),\n };\n}\n\nexport function linkPayloadContaining(\n x: Partial<SpecificLinkPayload>,\n): SpecificLinkPayload {\n return {\n fetchMore: x.fetchMore ?? expect.any(Function),\n hasMore: x.hasMore ?? expect.any(Boolean),\n resolvedList: x.resolvedList ?? expect.anything(),\n isOptimistic: expect.any(Boolean),\n status: x.status ?? expect.anything(),\n lastUpdated: x.lastUpdated ?? expect.anything(),\n ...(\"totalCount\" in x\n ? { totalCount: x.totalCount }\n : {}),\n } as SpecificLinkPayload;\n}\n\nexport function applyCustomMatchers(): void {\n expect.extend({\n toBeGreaterThan: (r: number, e: number) => {\n return {\n pass: r > e,\n message: () => `expected ${r} to be greater than ${e} (lastUpdated)`,\n };\n },\n });\n}\n\ninterface CustomMatchers<R = any> {\n toBeGreaterThan: (n: number) => R;\n}\n\ninterface CustomAsymmetricMatchers<R = any> {\n toBeGreaterThan: (n: number) => R;\n}\n\ndeclare module \"vitest\" {\n interface Assertion<T = any> extends CustomMatchers<T> {}\n interface AsymmetricMatchersContaining extends CustomAsymmetricMatchers {}\n}\n\n/**\n * Updates the internal state of a list and will create a new internal query if needed.\n *\n * Helper method only for tests right now. May be removed later.\n *\n * @param apiName\n * @param where\n * @param orderBy\n * @param objects\n * @param param4\n * @param opts\n */\nexport function updateList<\n T extends ObjectTypeDefinition | InterfaceDefinition,\n>(\n store: Store,\n {\n type,\n where,\n orderBy,\n }: {\n type: Pick<T, \"apiName\" | \"type\">;\n where: WhereClause<T>;\n orderBy: OrderBy<T>;\n },\n objects: ObjectHolder[] | Osdk.Instance<T>[],\n { optimisticId }: { optimisticId?: OptimisticId } = {},\n opts: ListQueryOptions<T> = { dedupeInterval: 0 },\n): void {\n if (process.env.NODE_ENV !== \"production\") {\n store.logger?.child({ methodName: \"updateList\" }).info(\n \"\",\n { optimisticId },\n );\n }\n\n const query = store.lists.getQuery({\n ...opts,\n type,\n where: where ?? {},\n orderBy: orderBy ?? {},\n });\n\n store.batch({ optimisticId }, (batch) => {\n const rdpConfig = query.rdpConfig;\n const objectCacheKeys = store.objects.storeOsdkInstances(\n objects,\n batch,\n rdpConfig,\n );\n query._updateList(objectCacheKeys, \"loaded\", batch, false);\n });\n}\n\nexport function getObject(\n store: Store,\n type: string,\n pk: number,\n): ObjectHolder | undefined {\n return store.getValue(\n store.cacheKeys.get<ObjectCacheKey>(\"object\", type, pk),\n )?.value;\n}\n\nexport function updateObject<T extends ObjectOrInterfaceDefinition>(\n store: Store,\n value: Osdk.Instance<T>,\n { optimisticId }: { optimisticId?: OptimisticId } = {},\n): Osdk.Instance<T> {\n const query = store.objects.getQuery({\n apiName: value.$apiName,\n pk: value.$primaryKey,\n }, undefined);\n\n store.batch({ optimisticId }, (batch) => {\n return query.writeToStore(\n value as unknown as ObjectHolder<typeof value>,\n \"loaded\",\n batch,\n );\n });\n\n return value;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"testUtils.js","names":["Chalk","inspect","pDefer","invariant","afterEach","beforeEach","expect","vi","vitest","additionalContext","chalk","mockLog","args","console","log","yellow","createTestLogger","bindings","options","colors","debug","cyan","bgCyan","info","green","bgGreen","trace","gray","bgGray","error","red","bgRed","warn","bgYellow","fatal","redBright","bgRedBright","createLogMethod","name","fn","hasData","length","obj","more","slice","msgPrefix","methodName","magenta","Object","keys","child","theseBindings","theseOptions","level","undefined","isLevelEnabled","createClientMockHelper","client","logger","mockImplementation","localLogger","Error","e","where","deadObjectSet","whereArgs","fetchPage","fetchArgs","fetchOne","baseUrl","ontologyRid","objectFactory","objectFactory2","ontologyProvider","getActionDefinition","getInterfaceDefinition","getObjectDefinition","getQueryDefinition","tokenProvider","objectSetFactory","fetch","clientCacheKey","requestContext","narrowTypeInterfaceOrObjectMapping","fetchMetadata","mockApplyActionOnce","d","mockReturnValueOnce","applyAction","x","promise","type","addedLinks","addedObjects","deletedObjects","deletedLinks","deletedLinksCount","deletedObjectsCount","editedObjectTypes","modifiedObjects","mockFetchOneOnce","expectedId","a","process","env","NODE_ENV","r","$primaryKey","JSON","stringify","mockObjectFactory2Once","mocked","mockFetchPageOnce","objectSet","fetchPageArgs","clause","createDefer","subscriptions","s","unsubscribe","push","expectSingleLinkCallAndClear","subFn","resolvedList","payloadOptions","isFakeTimers","runOnlyPendingTimers","next","toHaveBeenCalledExactlyOnceWith","objectContaining","linkPayloadContaining","ret","mock","calls","mockClear","expectSingleListCallAndClear","listPayloadContaining","expectSingleObjectCallAndClear","object","status","any","String","waitForCall","times","waitFor","toHaveBeenCalledTimes","interval","depth","compact","expectNoMoreCalls","observer","not","toHaveBeenCalled","createSubscriptionHelper","mockSingleSubCallback","mockObserver","assign","expectLoadingAndLoaded","q","toHaveBeenNthCalledWith","loading","loaded","complete","mockListSubCallback","mockLinkSubCallback","cacheEntryContaining","cacheKey","value","toBeOneOf","anything","lastUpdated","nonOptionalValue","src","key","objectPayloadContaining","isOptimistic","Boolean","fetchMore","Function","hasMore","totalCount","applyCustomMatchers","extend","toBeGreaterThan","pass","message","updateList","store","orderBy","objects","optimisticId","opts","dedupeInterval","query","lists","getQuery","batch","rdpConfig","objectCacheKeys","storeOsdkInstances","_updateList","getObject","pk","getValue","cacheKeys","get","updateObject","apiName","$apiName","writeToStore"],"sources":["testUtils.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n ActionDefinition,\n ActionEditResponse,\n FetchPageArgs,\n Logger,\n ObjectOrInterfaceDefinition,\n ObjectSet,\n ObjectTypeDefinition,\n Osdk,\n OsdkBase,\n PageResult,\n WhereClause,\n} from \"@osdk/api\";\nimport { Chalk } from \"chalk\";\nimport { inspect } from \"node:util\";\nimport type { DeferredPromise } from \"p-defer\";\nimport pDefer from \"p-defer\";\nimport type { Observer } from \"rxjs\";\nimport invariant from \"tiny-invariant\";\nimport type { Mock, MockedObject } from \"vitest\";\nimport { afterEach, beforeEach, expect, vi, vitest } from \"vitest\";\nimport type { ActionSignatureFromDef } from \"../../actions/applyAction.js\";\nimport type { Client } from \"../../Client.js\";\nimport { additionalContext } from \"../../Client.js\";\nimport type { ObjectHolder } from \"../../object/convertWireToOsdkObjects/ObjectHolder.js\";\nimport type { SpecificLinkPayload } from \"../LinkPayload.js\";\nimport type { ListPayload } from \"../ListPayload.js\";\nimport type { ObjectPayload } from \"../ObjectPayload.js\";\nimport type { OrderBy, Status } from \"../ObservableClient/common.js\";\nimport type { Unsubscribable } from \"../Unsubscribable.js\";\nimport type { Entry } from \"./Layer.js\";\nimport type { ListQueryOptions } from \"./list/ListQueryOptions.js\";\nimport type { ObjectCacheKey } from \"./object/ObjectCacheKey.js\";\nimport type { OptimisticId } from \"./OptimisticId.js\";\nimport type { Store } from \"./Store.js\";\n\nconst chalk = new Chalk(); // new Chalk({ level: 3 });\n\nexport interface MockClientHelper {\n client: Mock<Client> & Client;\n\n mockApplyActionOnce: () => DeferredPromise<Partial<ActionEditResponse>>;\n\n mockFetchOneOnce: <Q extends ObjectTypeDefinition>(\n expectedId?: string | number | boolean,\n ) => DeferredPromise<\n Partial<\n Osdk.Instance<Q>\n >\n >;\n\n mockObjectFactory2Once: () => DeferredPromise<\n Array<\n | Osdk.Instance<ObjectOrInterfaceDefinition, never, any, {}>\n | ObjectHolder\n >\n >;\n\n mockFetchPageOnce: <\n Q extends ObjectTypeDefinition,\n >(\n expected?: {\n where: WhereClause<any>;\n orderBy: Record<string, \"asc\" | \"desc\" | undefined>;\n },\n ) => DeferredPromise<\n PageResult<Partial<Osdk.Instance<Q>>>\n >;\n}\n\nfunction mockLog(...args: any[]) {\n // eslint-disable-next-line no-console\n console.log(\n chalk.yellow(\"mockClient\"),\n ...args,\n );\n}\n\n/**\n * Testing utilities for ObservableClient implementation.\n * - Mock creation helpers for client, observers, and callbacks\n * - Expectation utilities for validating payloads\n * - Tools for managing test lifecycle and cleanup\n * - Creates a colorized logger for test environments\n */\nexport function createTestLogger(\n bindings: Record<string, any>,\n options?: { level?: string; msgPrefix?: string },\n): Logger {\n const colors = {\n debug: [chalk.cyan, chalk.bgCyan],\n info: [chalk.green, chalk.bgGreen],\n trace: [chalk.gray, chalk.bgGray],\n error: [chalk.red, chalk.bgRed],\n warn: [chalk.yellow, chalk.bgYellow],\n fatal: [chalk.redBright, chalk.bgRedBright],\n } as const;\n function createLogMethod(\n name: \"debug\" | \"error\" | \"info\" | \"warn\" | \"fatal\" | \"trace\",\n ) {\n return vi.fn<Logger.LogFn>(\n (\n ...args: [\n obj: unknown,\n ...args1: any[],\n ] | [\n ...args2: any[],\n ]\n ) => {\n const hasData = args.length > 0 && typeof args[0] !== \"string\";\n const obj: Record<string, unknown> = hasData ? args[0] as any : {};\n const more: any[] = hasData ? args.slice(1) : args.slice(0);\n\n // eslint-disable-next-line no-console\n console.log(\n `${colors[name][1](name)}${\n options?.msgPrefix ? \" \" + colors[name][0](options.msgPrefix) : \"\"\n }${obj?.methodName ? ` .${chalk.magenta(obj.methodName)}()` : \"\"}`,\n ...more,\n );\n if (bindings && Object.keys(bindings).length > 0) {\n // eslint-disable-next-line no-console\n console.log(bindings);\n }\n },\n ) as Logger.LogFn;\n }\n return {\n debug: createLogMethod(\"debug\"),\n error: createLogMethod(\"error\"),\n info: createLogMethod(\"info\"),\n warn: createLogMethod(\"warn\"),\n fatal: createLogMethod(\"fatal\"),\n child: vi.fn<Logger[\"child\"]>((theseBindings, theseOptions) =>\n createTestLogger({\n ...bindings,\n ...theseBindings,\n }, {\n level: (theseOptions ?? options)?.level,\n msgPrefix: options?.msgPrefix || theseOptions?.msgPrefix\n ? `${options?.msgPrefix ? `${options.msgPrefix} ` : \"\"}${\n theseOptions?.msgPrefix || \"\"\n }`\n : undefined,\n })\n ),\n trace: createLogMethod(\"trace\"),\n isLevelEnabled: vi.fn((args) => true),\n };\n}\n\n/**\n * Creates mocked client helpers with deferred promise control\n */\nexport function createClientMockHelper(): MockClientHelper {\n const client = vitest.fn<typeof client>() as unknown as Mock<Client> & Client;\n\n const logger = createTestLogger({});\n\n // this is just a fallback for when there is nothing set so we can track whats up\n client.mockImplementation((...args: any[]) => {\n const localLogger = logger.child({}, { msgPrefix: \"fallback mock client\" });\n try {\n throw new Error(\"IN THE FALLBACK MOCK CLIENT IMPLEMENTATION\");\n } catch (e) {\n localLogger.error(\"Just for the stack trace\", e);\n }\n\n let where;\n const deadObjectSet = {\n where: (...whereArgs: any[]) => {\n localLogger.trace(\"where\", whereArgs);\n where = whereArgs;\n return deadObjectSet;\n },\n fetchPage: (...fetchArgs: any[]) => {\n localLogger.trace(\"fetchPage\", where!, fetchArgs);\n throw new Error(\"NO\");\n },\n fetchOne: (...fetchArgs: any[]) => {\n localLogger.trace(\"fetchOne\", fetchArgs);\n\n throw new Error(\"NO\");\n },\n };\n return deadObjectSet;\n });\n\n client[additionalContext] = {\n baseUrl: \"http://localhost:8080\",\n ontologyRid: \"ri.something\",\n objectFactory: vitest.fn(),\n objectFactory2: vitest.fn(),\n ontologyProvider: {\n getActionDefinition: vitest.fn(),\n getInterfaceDefinition: vitest.fn(),\n getObjectDefinition: vitest.fn(),\n getQueryDefinition: vitest.fn(),\n },\n tokenProvider: vitest.fn(),\n objectSetFactory: vitest.fn(),\n fetch: vitest.fn(),\n clientCacheKey: {} as any,\n requestContext: {},\n logger,\n narrowTypeInterfaceOrObjectMapping: {},\n };\n client.fetchMetadata = vitest.fn();\n\n function mockObjectFactory2Once() {\n const d = pDefer<\n (\n | Osdk.Instance<ObjectOrInterfaceDefinition, never, any, {}>\n | ObjectHolder\n )[]\n >();\n vi.mocked(client[additionalContext].objectFactory2).mockReturnValueOnce(\n d.promise as Promise<ObjectHolder[]>,\n );\n return d;\n }\n\n function mockFetchPageOnce<\n X extends PageResult<\n Osdk.Instance<ObjectTypeDefinition>\n >,\n >(): DeferredPromise<X> {\n const d = pDefer<X>();\n\n const objectSet: ObjectSet<ObjectTypeDefinition> = {\n fetchPage: async (fetchPageArgs: FetchPageArgs<any>) => {\n mockLog(\"fetchPage\", fetchPageArgs);\n const r = await d.promise;\n return { ...r, $primaryKey: fetchPageArgs };\n },\n where: (clause) => {\n mockLog(\"where\", clause);\n return objectSet;\n },\n } as Pick<\n ObjectSet<ObjectTypeDefinition>,\n \"fetchPage\" | \"where\"\n > as ObjectSet<ObjectTypeDefinition>;\n\n client.mockReturnValueOnce(objectSet);\n return d;\n }\n\n function mockFetchOneOnce<\n X extends Partial<OsdkBase<any>>,\n >(expectedId?: string | number | boolean): DeferredPromise<X> {\n const d = pDefer<X>();\n\n client.mockReturnValueOnce(\n {\n fetchOne: async (a: FetchPageArgs<any>) => {\n mockLog(\"fetchOne\", a);\n invariant(\n expectedId === undefined || a === expectedId,\n \"expected id to match\",\n );\n const r = await d.promise;\n invariant(\n r.$primaryKey === a,\n `expected id to match. Got ${\n JSON.stringify(a)\n } but object to return was ${r.$primaryKey}`,\n );\n return r as Osdk.Instance<any>;\n },\n } as Pick<ObjectSet<ObjectTypeDefinition>, \"fetchOne\">,\n );\n return d;\n }\n\n function mockApplyActionOnce(): DeferredPromise<\n Partial<ActionEditResponse>\n > {\n const d = pDefer<Partial<ActionEditResponse>>();\n\n client.mockReturnValueOnce(\n {\n applyAction: async (_args): Promise<ActionEditResponse> => {\n const x = await d.promise;\n return {\n type: \"edits\",\n addedLinks: x.addedLinks ?? [],\n addedObjects: x.addedObjects ?? [],\n deletedObjects: x.deletedObjects ?? [],\n deletedLinks: x.deletedLinks ?? [],\n deletedLinksCount: x.deletedLinksCount ?? 0,\n deletedObjectsCount: x.deletedObjectsCount ?? 0,\n editedObjectTypes: x.editedObjectTypes ?? [],\n modifiedObjects: x.modifiedObjects ?? [],\n };\n },\n } as Pick<\n ActionSignatureFromDef<ActionDefinition>,\n \"applyAction\"\n >,\n );\n return d;\n }\n\n return {\n client,\n mockApplyActionOnce,\n mockFetchOneOnce,\n mockObjectFactory2Once,\n mockFetchPageOnce,\n };\n}\n\n/**\n * Manages test subscriptions with automatic cleanup\n */\nexport function createDefer() {\n let subscriptions: Unsubscribable[];\n\n beforeEach(() => {\n subscriptions = [];\n });\n\n afterEach(() => {\n for (const s of subscriptions) {\n s.unsubscribe();\n }\n subscriptions = [];\n });\n\n return function defer(x: Unsubscribable): Unsubscribable {\n subscriptions.push(x);\n return x;\n };\n}\n\nexport function expectSingleLinkCallAndClear<T extends ObjectTypeDefinition>(\n subFn: MockedObject<Observer<SpecificLinkPayload | undefined>>,\n resolvedList: ObjectHolder[] | Osdk.Instance<T>[] | undefined,\n payloadOptions: Omit<Partial<SpecificLinkPayload>, \"resolvedList\"> = {},\n): SpecificLinkPayload | undefined {\n if (vitest.isFakeTimers()) {\n vitest.runOnlyPendingTimers();\n }\n expect(subFn.next).toHaveBeenCalledExactlyOnceWith(\n expect.objectContaining(\n linkPayloadContaining({\n ...payloadOptions,\n resolvedList: resolvedList as unknown as Array<\n ObjectHolder\n >,\n }),\n ),\n );\n\n const ret = subFn.next.mock.calls[0][0];\n subFn.next.mockClear();\n return ret;\n}\n\nexport function expectSingleListCallAndClear<T extends ObjectTypeDefinition>(\n subFn: MockedObject<Observer<ListPayload | undefined>>,\n resolvedList: ObjectHolder[] | Osdk.Instance<T>[],\n payloadOptions: Omit<Partial<ListPayload>, \"resolvedList\"> = {},\n): ListPayload | undefined {\n if (vitest.isFakeTimers()) {\n vitest.runOnlyPendingTimers();\n }\n expect(subFn.next).toHaveBeenCalledExactlyOnceWith(\n expect.objectContaining(\n listPayloadContaining({\n ...payloadOptions,\n resolvedList: resolvedList as unknown as Array<\n ObjectHolder\n >,\n }),\n ),\n );\n const ret = subFn.next.mock.calls[0][0];\n subFn.next.mockClear();\n return ret;\n}\n\n/**\n * Validates object payload emissions in tests\n */\nexport function expectSingleObjectCallAndClear<T extends ObjectTypeDefinition>(\n subFn: MockedObject<Observer<ObjectPayload | undefined>>,\n object: Osdk.Instance<T> | undefined,\n status?: Status,\n): ObjectPayload | undefined {\n expect(subFn.next).toHaveBeenCalledExactlyOnceWith(\n expect.objectContaining({\n object,\n status: status ?? expect.any(String),\n }),\n );\n\n const ret = subFn.next.mock.calls[0][0];\n subFn.next.mockClear();\n return ret;\n}\n\nexport async function waitForCall(\n subFn: Mock<(e: any) => void> | MockedObject<Observer<any>>,\n times: number = 1,\n): Promise<void> {\n if (\"next\" in subFn && \"error\" in subFn && \"complete\" in subFn) {\n subFn = subFn.next;\n }\n try {\n await vi.waitFor(() => {\n expect(subFn).toHaveBeenCalledTimes(times);\n }, {\n interval: 0,\n });\n } catch (e) {\n // eslint-disable-next-line no-console\n console.log(\n `We are going to fail waiting for ${times} calls because these are our calls: `,\n inspect(subFn.mock.calls, {\n depth: 9,\n colors: true,\n compact: 2,\n }),\n );\n // we don't need the error, it will retrigger on the next line\n // and that provides better behavior in the vitest vscode\n // plugin. This places the error in the test itself instead of\n // only in this file\n }\n expect(subFn).toHaveBeenCalledTimes(times);\n}\n\nexport function expectNoMoreCalls(\n observer: MockedObject<\n Observer<any>\n >,\n): void {\n expect(observer.next).not.toHaveBeenCalled();\n expect(observer.error).not.toHaveBeenCalled();\n}\n\nfunction createSubscriptionHelper() {\n}\n\nexport type MockedSingleSubCallback =\n & MockedObject<Observer<ObjectPayload | undefined>>\n & {\n // expectLoaded: (value: unknown) => Promise<void>;\n // expectLoading: (value: unknown) => Promise<void>;\n expectLoadingAndLoaded: (q: {\n loading?: unknown;\n loaded: unknown;\n }) => Promise<void>;\n };\n\nexport function mockSingleSubCallback(): MockedSingleSubCallback {\n const ret = mockObserver<ObjectPayload | undefined>();\n\n // async function expectLoaded(value: unknown) {\n // await waitForCall(ret);\n // // as long as we get the loaded call we are happy\n // expect(ret).toHaveBeenLastCalledWith(\n // cacheEntryContaining({\n // value,\n // status: \"loaded\",\n // }),\n // );\n // ret.mockClear();\n // }\n\n // async function expectLoading(value: unknown) {\n // await waitForCall(ret);\n // // as long as we get the loaded call we are happy\n // expect(ret).toHaveBeenCalledExactlyOnceWith(\n // cacheEntryContaining({\n // value,\n // status: \"loading\",\n // }),\n // );\n // ret.mockClear();\n // }\n\n return Object.assign(ret, {\n // expectLoaded,\n // expectLoading,\n expectLoadingAndLoaded: async (\n q: { loading?: unknown; loaded: unknown },\n ) => {\n await waitForCall(ret.next, 2);\n\n // as long as we get the loaded call we are happy\n expect(ret.next).toHaveBeenNthCalledWith(\n 1,\n q.loading,\n );\n expect(ret.next).toHaveBeenNthCalledWith(\n 2,\n q.loaded,\n );\n expect(ret.next).toHaveBeenCalledTimes(2);\n ret.next.mockClear();\n },\n });\n}\n\nexport function mockObserver<T>(): MockedObject<Observer<T>> {\n return {\n next: vitest.fn(),\n\n // error: vitest.fn((x) => console.error(x)),\n error: vitest.fn(),\n complete: vitest.fn(),\n };\n}\n\n// todo: find uses of this and replace with direct call to mockObserver<ListPayload | undefined>\nexport function mockListSubCallback(): MockedObject<\n Observer<ListPayload | undefined>\n> {\n return mockObserver<ListPayload | undefined>();\n}\n\n// todo: find uses of this and replace with direct call to mockObserver<SpecificLinkPayload | undefined>\nexport function mockLinkSubCallback(): MockedObject<\n Observer<SpecificLinkPayload | undefined>\n> {\n return mockObserver<SpecificLinkPayload | undefined>();\n}\n\nexport function cacheEntryContaining(x: Partial<Entry<any>>): Entry<any> {\n return {\n cacheKey: x.cacheKey ?? expect.any(Object),\n value: \"value\" in x\n ? x.value\n : expect.toBeOneOf([expect.anything(), undefined]),\n status: x.status ?? expect.anything(),\n lastUpdated: x.lastUpdated ?? expect.anything(),\n };\n}\n\nfunction nonOptionalValue<T extends object, K extends keyof T>(\n src: T,\n key: K,\n): NonNullable<T[K]> {\n return key in src\n ? src[key]\n : expect.toBeOneOf([expect.anything(), undefined]);\n}\n\nexport function objectPayloadContaining(\n x: Partial<ObjectPayload>,\n): ObjectPayload {\n return {\n object: nonOptionalValue(x, \"object\"),\n isOptimistic: expect.any(Boolean),\n status: x.status ?? expect.anything(),\n lastUpdated: x.lastUpdated ?? expect.anything(),\n };\n}\n\nexport function listPayloadContaining(\n x: Partial<ListPayload>,\n): ListPayload {\n return {\n fetchMore: x.fetchMore ?? expect.any(Function),\n hasMore: x.hasMore ?? expect.any(Boolean),\n resolvedList: x.resolvedList ?? expect.anything(),\n isOptimistic: expect.any(Boolean),\n status: x.status ?? expect.anything(),\n lastUpdated: x.lastUpdated ?? expect.anything(),\n };\n}\n\nexport function linkPayloadContaining(\n x: Partial<SpecificLinkPayload>,\n): SpecificLinkPayload {\n return {\n fetchMore: x.fetchMore ?? expect.any(Function),\n hasMore: x.hasMore ?? expect.any(Boolean),\n resolvedList: x.resolvedList ?? expect.anything(),\n isOptimistic: expect.any(Boolean),\n status: x.status ?? expect.anything(),\n lastUpdated: x.lastUpdated ?? expect.anything(),\n ...(\"totalCount\" in x\n ? { totalCount: x.totalCount }\n : {}),\n } as SpecificLinkPayload;\n}\n\nexport function applyCustomMatchers(): void {\n expect.extend({\n toBeGreaterThan: (r: number, e: number) => {\n return {\n pass: r > e,\n message: () => `expected ${r} to be greater than ${e} (lastUpdated)`,\n };\n },\n });\n}\n\ninterface CustomMatchers<R = any> {\n toBeGreaterThan: (n: number) => R;\n}\n\ninterface CustomAsymmetricMatchers<R = any> {\n toBeGreaterThan: (n: number) => R;\n}\n\ndeclare module \"vitest\" {\n interface Assertion<T = any> extends CustomMatchers<T> {}\n interface AsymmetricMatchersContaining extends CustomAsymmetricMatchers {}\n}\n\n/**\n * Updates the internal state of a list and will create a new internal query if needed.\n *\n * Helper method only for tests right now. May be removed later.\n *\n * @param apiName\n * @param where\n * @param orderBy\n * @param objects\n * @param param4\n * @param opts\n */\nexport function updateList<T extends ObjectOrInterfaceDefinition>(\n store: Store,\n {\n type,\n where,\n orderBy,\n }: {\n type: Pick<T, \"apiName\" | \"type\">;\n where: WhereClause<T>;\n orderBy: OrderBy<T>;\n },\n objects: ObjectHolder[] | Osdk.Instance<T>[],\n { optimisticId }: { optimisticId?: OptimisticId } = {},\n opts: ListQueryOptions<T> = { dedupeInterval: 0 },\n): void {\n if (process.env.NODE_ENV !== \"production\") {\n store.logger?.child({ methodName: \"updateList\" }).info(\n \"\",\n { optimisticId },\n );\n }\n\n const query = store.lists.getQuery({\n ...opts,\n type,\n where: where ?? {},\n orderBy: orderBy ?? {},\n });\n\n store.batch({ optimisticId }, (batch) => {\n const rdpConfig = query.rdpConfig;\n const objectCacheKeys = store.objects.storeOsdkInstances(\n objects,\n batch,\n rdpConfig,\n );\n query._updateList(objectCacheKeys, \"loaded\", batch, false);\n });\n}\n\nexport function getObject(\n store: Store,\n type: string,\n pk: number,\n): ObjectHolder | undefined {\n return store.getValue(\n store.cacheKeys.get<ObjectCacheKey>(\"object\", type, pk),\n )?.value;\n}\n\nexport function updateObject<T extends ObjectOrInterfaceDefinition>(\n store: Store,\n value: Osdk.Instance<T>,\n { optimisticId }: { optimisticId?: OptimisticId } = {},\n): Osdk.Instance<T> {\n const query = store.objects.getQuery({\n apiName: value.$apiName,\n pk: value.$primaryKey,\n }, undefined);\n\n store.batch({ optimisticId }, (batch) => {\n return query.writeToStore(\n value as unknown as ObjectHolder<typeof value>,\n \"loaded\",\n batch,\n );\n });\n\n return value;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAeA,SAASA,KAAK,QAAQ,OAAO;AAC7B,SAASC,OAAO,QAAQ,WAAW;AAEnC,OAAOC,MAAM,MAAM,SAAS;AAE5B,OAAOC,SAAS,MAAM,gBAAgB;AAEtC,SAASC,SAAS,EAAEC,UAAU,EAAEC,MAAM,EAAEC,EAAE,EAAEC,MAAM,QAAQ,QAAQ;AAGlE,SAASC,iBAAiB,QAAQ,iBAAiB;AAanD,MAAMC,KAAK,GAAG,IAAIV,KAAK,CAAC,CAAC,CAAC,CAAC;;AAkC3B,SAASW,OAAOA,CAAC,GAAGC,IAAW,EAAE;EAC/B;EACAC,OAAO,CAACC,GAAG,CACTJ,KAAK,CAACK,MAAM,CAAC,YAAY,CAAC,EAC1B,GAAGH,IACL,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASI,gBAAgBA,CAC9BC,QAA6B,EAC7BC,OAAgD,EACxC;EACR,MAAMC,MAAM,GAAG;IACbC,KAAK,EAAE,CAACV,KAAK,CAACW,IAAI,EAAEX,KAAK,CAACY,MAAM,CAAC;IACjCC,IAAI,EAAE,CAACb,KAAK,CAACc,KAAK,EAAEd,KAAK,CAACe,OAAO,CAAC;IAClCC,KAAK,EAAE,CAAChB,KAAK,CAACiB,IAAI,EAAEjB,KAAK,CAACkB,MAAM,CAAC;IACjCC,KAAK,EAAE,CAACnB,KAAK,CAACoB,GAAG,EAAEpB,KAAK,CAACqB,KAAK,CAAC;IAC/BC,IAAI,EAAE,CAACtB,KAAK,CAACK,MAAM,EAAEL,KAAK,CAACuB,QAAQ,CAAC;IACpCC,KAAK,EAAE,CAACxB,KAAK,CAACyB,SAAS,EAAEzB,KAAK,CAAC0B,WAAW;EAC5C,CAAU;EACV,SAASC,eAAeA,CACtBC,IAA6D,EAC7D;IACA,OAAO/B,EAAE,CAACgC,EAAE,CACV,CACE,GAAG3B,IAKF,KACE;MACH,MAAM4B,OAAO,GAAG5B,IAAI,CAAC6B,MAAM,GAAG,CAAC,IAAI,OAAO7B,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ;MAC9D,MAAM8B,GAA4B,GAAGF,OAAO,GAAG5B,IAAI,CAAC,CAAC,CAAC,GAAU,CAAC,CAAC;MAClE,MAAM+B,IAAW,GAAGH,OAAO,GAAG5B,IAAI,CAACgC,KAAK,CAAC,CAAC,CAAC,GAAGhC,IAAI,CAACgC,KAAK,CAAC,CAAC,CAAC;;MAE3D;MACA/B,OAAO,CAACC,GAAG,CACT,GAAGK,MAAM,CAACmB,IAAI,CAAC,CAAC,CAAC,CAAC,CAACA,IAAI,CAAC,GACtBpB,OAAO,EAAE2B,SAAS,GAAG,GAAG,GAAG1B,MAAM,CAACmB,IAAI,CAAC,CAAC,CAAC,CAAC,CAACpB,OAAO,CAAC2B,SAAS,CAAC,GAAG,EAAE,GACjEH,GAAG,EAAEI,UAAU,GAAG,KAAKpC,KAAK,CAACqC,OAAO,CAACL,GAAG,CAACI,UAAU,CAAC,IAAI,GAAG,EAAE,EAAE,EAClE,GAAGH,IACL,CAAC;MACD,IAAI1B,QAAQ,IAAI+B,MAAM,CAACC,IAAI,CAAChC,QAAQ,CAAC,CAACwB,MAAM,GAAG,CAAC,EAAE;QAChD;QACA5B,OAAO,CAACC,GAAG,CAACG,QAAQ,CAAC;MACvB;IACF,CACF,CAAC;EACH;EACA,OAAO;IACLG,KAAK,EAAEiB,eAAe,CAAC,OAAO,CAAC;IAC/BR,KAAK,EAAEQ,eAAe,CAAC,OAAO,CAAC;IAC/Bd,IAAI,EAAEc,eAAe,CAAC,MAAM,CAAC;IAC7BL,IAAI,EAAEK,eAAe,CAAC,MAAM,CAAC;IAC7BH,KAAK,EAAEG,eAAe,CAAC,OAAO,CAAC;IAC/Ba,KAAK,EAAE3C,EAAE,CAACgC,EAAE,CAAkB,CAACY,aAAa,EAAEC,YAAY,KACxDpC,gBAAgB,CAAC;MACf,GAAGC,QAAQ;MACX,GAAGkC;IACL,CAAC,EAAE;MACDE,KAAK,EAAE,CAACD,YAAY,IAAIlC,OAAO,GAAGmC,KAAK;MACvCR,SAAS,EAAE3B,OAAO,EAAE2B,SAAS,IAAIO,YAAY,EAAEP,SAAS,GACpD,GAAG3B,OAAO,EAAE2B,SAAS,GAAG,GAAG3B,OAAO,CAAC2B,SAAS,GAAG,GAAG,EAAE,GACpDO,YAAY,EAAEP,SAAS,IAAI,EAAE,EAC7B,GACAS;IACN,CAAC,CACH,CAAC;IACD5B,KAAK,EAAEW,eAAe,CAAC,OAAO,CAAC;IAC/BkB,cAAc,EAAEhD,EAAE,CAACgC,EAAE,CAAC,MAAU,IAAI;EACtC,CAAC;AACH;;AAEA;AACA;AACA;AACA,OAAO,SAASiB,sBAAsBA,CAAA,EAAqB;EACzD,MAAMC,MAAM,GAAGjD,MAAM,CAAC+B,EAAE,CAAgB,CAAqC;EAE7E,MAAMmB,MAAM,GAAG1C,gBAAgB,CAAC,CAAC,CAAC,CAAC;;EAEnC;EACAyC,MAAM,CAACE,kBAAkB,CAAC,CAAC,GAAG/C,IAAW,KAAK;IAC5C,MAAMgD,WAAW,GAAGF,MAAM,CAACR,KAAK,CAAC,CAAC,CAAC,EAAE;MAAEL,SAAS,EAAE;IAAuB,CAAC,CAAC;IAC3E,IAAI;MACF,MAAM,IAAIgB,KAAK,CAAC,4CAA4C,CAAC;IAC/D,CAAC,CAAC,OAAOC,CAAC,EAAE;MACVF,WAAW,CAAC/B,KAAK,CAAC,0BAA0B,EAAEiC,CAAC,CAAC;IAClD;IAEA,IAAIC,KAAK;IACT,MAAMC,aAAa,GAAG;MACpBD,KAAK,EAAEA,CAAC,GAAGE,SAAgB,KAAK;QAC9BL,WAAW,CAAClC,KAAK,CAAC,OAAO,EAAEuC,SAAS,CAAC;QACrCF,KAAK,GAAGE,SAAS;QACjB,OAAOD,aAAa;MACtB,CAAC;MACDE,SAAS,EAAEA,CAAC,GAAGC,SAAgB,KAAK;QAClCP,WAAW,CAAClC,KAAK,CAAC,WAAW,EAAEqC,KAAK,EAAGI,SAAS,CAAC;QACjD,MAAM,IAAIN,KAAK,CAAC,IAAI,CAAC;MACvB,CAAC;MACDO,QAAQ,EAAEA,CAAC,GAAGD,SAAgB,KAAK;QACjCP,WAAW,CAAClC,KAAK,CAAC,UAAU,EAAEyC,SAAS,CAAC;QAExC,MAAM,IAAIN,KAAK,CAAC,IAAI,CAAC;MACvB;IACF,CAAC;IACD,OAAOG,aAAa;EACtB,CAAC,CAAC;EAEFP,MAAM,CAAChD,iBAAiB,CAAC,GAAG;IAC1B4D,OAAO,EAAE,uBAAuB;IAChCC,WAAW,EAAE,cAAc;IAC3BC,aAAa,EAAE/D,MAAM,CAAC+B,EAAE,CAAC,CAAC;IAC1BiC,cAAc,EAAEhE,MAAM,CAAC+B,EAAE,CAAC,CAAC;IAC3BkC,gBAAgB,EAAE;MAChBC,mBAAmB,EAAElE,MAAM,CAAC+B,EAAE,CAAC,CAAC;MAChCoC,sBAAsB,EAAEnE,MAAM,CAAC+B,EAAE,CAAC,CAAC;MACnCqC,mBAAmB,EAAEpE,MAAM,CAAC+B,EAAE,CAAC,CAAC;MAChCsC,kBAAkB,EAAErE,MAAM,CAAC+B,EAAE,CAAC;IAChC,CAAC;IACDuC,aAAa,EAAEtE,MAAM,CAAC+B,EAAE,CAAC,CAAC;IAC1BwC,gBAAgB,EAAEvE,MAAM,CAAC+B,EAAE,CAAC,CAAC;IAC7ByC,KAAK,EAAExE,MAAM,CAAC+B,EAAE,CAAC,CAAC;IAClB0C,cAAc,EAAE,CAAC,CAAQ;IACzBC,cAAc,EAAE,CAAC,CAAC;IAClBxB,MAAM;IACNyB,kCAAkC,EAAE,CAAC;EACvC,CAAC;EACD1B,MAAM,CAAC2B,aAAa,GAAG5E,MAAM,CAAC+B,EAAE,CAAC,CAAC;EAiGlC,OAAO;IACLkB,MAAM;IACN4B,mBAAmB,EA/BrB,SAAAA,CAAA,EAEE;MACA,MAAMC,CAAC,GAAGpF,MAAM,CAA8B,CAAC;MAE/CuD,MAAM,CAAC8B,mBAAmB,CACxB;QACEC,WAAW,EAAE,MAAAA,CAAA,KAA8C;UACzD,MAAMC,CAAC,GAAG,MAAMH,CAAC,CAACI,OAAO;UACzB,OAAO;YACLC,IAAI,EAAE,OAAO;YACbC,UAAU,EAAEH,CAAC,CAACG,UAAU,IAAI,EAAE;YAC9BC,YAAY,EAAEJ,CAAC,CAACI,YAAY,IAAI,EAAE;YAClCC,cAAc,EAAEL,CAAC,CAACK,cAAc,IAAI,EAAE;YACtCC,YAAY,EAAEN,CAAC,CAACM,YAAY,IAAI,EAAE;YAClCC,iBAAiB,EAAEP,CAAC,CAACO,iBAAiB,IAAI,CAAC;YAC3CC,mBAAmB,EAAER,CAAC,CAACQ,mBAAmB,IAAI,CAAC;YAC/CC,iBAAiB,EAAET,CAAC,CAACS,iBAAiB,IAAI,EAAE;YAC5CC,eAAe,EAAEV,CAAC,CAACU,eAAe,IAAI;UACxC,CAAC;QACH;MACF,CAIF,CAAC;MACD,OAAOb,CAAC;IACV,CAIqB;IACnBc,gBAAgB,EA3DlB,SAAAA,CAEEC,UAAsC,EAAsB;MAC5D,MAAMf,CAAC,GAAGpF,MAAM,CAAI,CAAC;MAErBuD,MAAM,CAAC8B,mBAAmB,CACxB;QACEnB,QAAQ,EAAE,MAAOkC,CAAqB,IAAK;UACzC3F,OAAO,CAAC,UAAU,EAAE2F,CAAC,CAAC;UACtB,EACED,UAAU,KAAK/C,SAAS,IAAIgD,CAAC,KAAKD,UAAU,IAAAE,OAAA,CAAAC,GAAA,CAAAC,QAAA,oBAD9CtG,SAAS,QAEP,sBAAsB,IAFxBA,SAAS;UAIT,MAAMuG,CAAC,GAAG,MAAMpB,CAAC,CAACI,OAAO;UACzB,EACEgB,CAAC,CAACC,WAAW,KAAKL,CAAC,IAAAC,OAAA,CAAAC,GAAA,CAAAC,QAAA,oBADrBtG,SAAS,QAEP,6BACEyG,IAAI,CAACC,SAAS,CAACP,CAAC,CAAC,6BACUI,CAAC,CAACC,WAAW,EAAE,IAJ9CxG,SAAS;UAMT,OAAOuG,CAAC;QACV;MACF,CACF,CAAC;MACD,OAAOpB,CAAC;IACV,CAkCkB;IAChBwB,sBAAsB,EAnGxB,SAAAA,CAAA,EAAkC;MAChC,MAAMxB,CAAC,GAAGpF,MAAM,CAKd,CAAC;MACHK,EAAE,CAACwG,MAAM,CAACtD,MAAM,CAAChD,iBAAiB,CAAC,CAAC+D,cAAc,CAAC,CAACe,mBAAmB,CACrED,CAAC,CAACI,OACJ,CAAC;MACD,OAAOJ,CAAC;IACV,CAwFwB;IACtB0B,iBAAiB,EAvFnB,SAAAA,CAAA,EAIwB;MACtB,MAAM1B,CAAC,GAAGpF,MAAM,CAAI,CAAC;MAErB,MAAM+G,SAA0C,GAAG;QACjD/C,SAAS,EAAE,MAAOgD,aAAiC,IAAK;UACtDvG,OAAO,CAAC,WAAW,EAAEuG,aAAa,CAAC;UACnC,MAAMR,CAAC,GAAG,MAAMpB,CAAC,CAACI,OAAO;UACzB,OAAO;YAAE,GAAGgB,CAAC;YAAEC,WAAW,EAAEO;UAAc,CAAC;QAC7C,CAAC;QACDnD,KAAK,EAAGoD,MAAM,IAAK;UACjBxG,OAAO,CAAC,OAAO,EAAEwG,MAAM,CAAC;UACxB,OAAOF,SAAS;QAClB;MACF,CAGoC;MAEpCxD,MAAM,CAAC8B,mBAAmB,CAAC0B,SAAS,CAAC;MACrC,OAAO3B,CAAC;IACV;EAgEA,CAAC;AACH;;AAEA;AACA;AACA;AACA,OAAO,SAAS8B,WAAWA,CAAA,EAAG;EAC5B,IAAIC,aAA+B;EAEnChH,UAAU,CAAC,MAAM;IACfgH,aAAa,GAAG,EAAE;EACpB,CAAC,CAAC;EAEFjH,SAAS,CAAC,MAAM;IACd,KAAK,MAAMkH,CAAC,IAAID,aAAa,EAAE;MAC7BC,CAAC,CAACC,WAAW,CAAC,CAAC;IACjB;IACAF,aAAa,GAAG,EAAE;EACpB,CAAC,CAAC;EAEF,OAAO,UAAe5B,CAAiB,EAAkB;IACvD4B,aAAa,CAACG,IAAI,CAAC/B,CAAC,CAAC;IACrB,OAAOA,CAAC;EACV,CAAC;AACH;AAEA,OAAO,SAASgC,4BAA4BA,CAC1CC,KAA8D,EAC9DC,YAA6D,EAC7DC,cAAkE,GAAG,CAAC,CAAC,EACtC;EACjC,IAAIpH,MAAM,CAACqH,YAAY,CAAC,CAAC,EAAE;IACzBrH,MAAM,CAACsH,oBAAoB,CAAC,CAAC;EAC/B;EACAxH,MAAM,CAACoH,KAAK,CAACK,IAAI,CAAC,CAACC,+BAA+B,CAChD1H,MAAM,CAAC2H,gBAAgB,CACrBC,qBAAqB,CAAC;IACpB,GAAGN,cAAc;IACjBD,YAAY,EAAEA;EAGhB,CAAC,CACH,CACF,CAAC;EAED,MAAMQ,GAAG,GAAGT,KAAK,CAACK,IAAI,CAACK,IAAI,CAACC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACvCX,KAAK,CAACK,IAAI,CAACO,SAAS,CAAC,CAAC;EACtB,OAAOH,GAAG;AACZ;AAEA,OAAO,SAASI,4BAA4BA,CAC1Cb,KAAsD,EACtDC,YAAiD,EACjDC,cAA0D,GAAG,CAAC,CAAC,EACtC;EACzB,IAAIpH,MAAM,CAACqH,YAAY,CAAC,CAAC,EAAE;IACzBrH,MAAM,CAACsH,oBAAoB,CAAC,CAAC;EAC/B;EACAxH,MAAM,CAACoH,KAAK,CAACK,IAAI,CAAC,CAACC,+BAA+B,CAChD1H,MAAM,CAAC2H,gBAAgB,CACrBO,qBAAqB,CAAC;IACpB,GAAGZ,cAAc;IACjBD,YAAY,EAAEA;EAGhB,CAAC,CACH,CACF,CAAC;EACD,MAAMQ,GAAG,GAAGT,KAAK,CAACK,IAAI,CAACK,IAAI,CAACC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACvCX,KAAK,CAACK,IAAI,CAACO,SAAS,CAAC,CAAC;EACtB,OAAOH,GAAG;AACZ;;AAEA;AACA;AACA;AACA,OAAO,SAASM,8BAA8BA,CAC5Cf,KAAwD,EACxDgB,MAAoC,EACpCC,MAAe,EACY;EAC3BrI,MAAM,CAACoH,KAAK,CAACK,IAAI,CAAC,CAACC,+BAA+B,CAChD1H,MAAM,CAAC2H,gBAAgB,CAAC;IACtBS,MAAM;IACNC,MAAM,EAAEA,MAAM,IAAIrI,MAAM,CAACsI,GAAG,CAACC,MAAM;EACrC,CAAC,CACH,CAAC;EAED,MAAMV,GAAG,GAAGT,KAAK,CAACK,IAAI,CAACK,IAAI,CAACC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACvCX,KAAK,CAACK,IAAI,CAACO,SAAS,CAAC,CAAC;EACtB,OAAOH,GAAG;AACZ;AAEA,OAAO,eAAeW,WAAWA,CAC/BpB,KAA2D,EAC3DqB,KAAa,GAAG,CAAC,EACF;EACf,IAAI,MAAM,IAAIrB,KAAK,IAAI,OAAO,IAAIA,KAAK,IAAI,UAAU,IAAIA,KAAK,EAAE;IAC9DA,KAAK,GAAGA,KAAK,CAACK,IAAI;EACpB;EACA,IAAI;IACF,MAAMxH,EAAE,CAACyI,OAAO,CAAC,MAAM;MACrB1I,MAAM,CAACoH,KAAK,CAAC,CAACuB,qBAAqB,CAACF,KAAK,CAAC;IAC5C,CAAC,EAAE;MACDG,QAAQ,EAAE;IACZ,CAAC,CAAC;EACJ,CAAC,CAAC,OAAOpF,CAAC,EAAE;IACV;IACAjD,OAAO,CAACC,GAAG,CACT,oCAAoCiI,KAAK,sCAAsC,EAC/E9I,OAAO,CAACyH,KAAK,CAACU,IAAI,CAACC,KAAK,EAAE;MACxBc,KAAK,EAAE,CAAC;MACRhI,MAAM,EAAE,IAAI;MACZiI,OAAO,EAAE;IACX,CAAC,CACH,CAAC;IACD;IACA;IACA;IACA;EACF;EACA9I,MAAM,CAACoH,KAAK,CAAC,CAACuB,qBAAqB,CAACF,KAAK,CAAC;AAC5C;AAEA,OAAO,SAASM,iBAAiBA,CAC/BC,QAEC,EACK;EACNhJ,MAAM,CAACgJ,QAAQ,CAACvB,IAAI,CAAC,CAACwB,GAAG,CAACC,gBAAgB,CAAC,CAAC;EAC5ClJ,MAAM,CAACgJ,QAAQ,CAACzH,KAAK,CAAC,CAAC0H,GAAG,CAACC,gBAAgB,CAAC,CAAC;AAC/C;AAEA,SAASC,wBAAwBA,CAAA,EAAG,CACpC;AAaA,OAAO,SAASC,qBAAqBA,CAAA,EAA4B;EAC/D,MAAMvB,GAAG,GAAGwB,YAAY,CAA4B,CAAC;;EAErD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA,OAAO3G,MAAM,CAAC4G,MAAM,CAACzB,GAAG,EAAE;IACxB;IACA;IACA0B,sBAAsB,EAAE,MACtBC,CAAyC,IACtC;MACH,MAAMhB,WAAW,CAACX,GAAG,CAACJ,IAAI,EAAE,CAAC,CAAC;;MAE9B;MACAzH,MAAM,CAAC6H,GAAG,CAACJ,IAAI,CAAC,CAACgC,uBAAuB,CACtC,CAAC,EACDD,CAAC,CAACE,OACJ,CAAC;MACD1J,MAAM,CAAC6H,GAAG,CAACJ,IAAI,CAAC,CAACgC,uBAAuB,CACtC,CAAC,EACDD,CAAC,CAACG,MACJ,CAAC;MACD3J,MAAM,CAAC6H,GAAG,CAACJ,IAAI,CAAC,CAACkB,qBAAqB,CAAC,CAAC,CAAC;MACzCd,GAAG,CAACJ,IAAI,CAACO,SAAS,CAAC,CAAC;IACtB;EACF,CAAC,CAAC;AACJ;AAEA,OAAO,SAASqB,YAAYA,CAAA,EAAiC;EAC3D,OAAO;IACL5B,IAAI,EAAEvH,MAAM,CAAC+B,EAAE,CAAC,CAAC;IAEjB;IACAV,KAAK,EAAErB,MAAM,CAAC+B,EAAE,CAAC,CAAC;IAClB2H,QAAQ,EAAE1J,MAAM,CAAC+B,EAAE,CAAC;EACtB,CAAC;AACH;;AAEA;AACA,OAAO,SAAS4H,mBAAmBA,CAAA,EAEjC;EACA,OAAOR,YAAY,CAA0B,CAAC;AAChD;;AAEA;AACA,OAAO,SAASS,mBAAmBA,CAAA,EAEjC;EACA,OAAOT,YAAY,CAAkC,CAAC;AACxD;AAEA,OAAO,SAASU,oBAAoBA,CAAC5E,CAAsB,EAAc;EACvE,OAAO;IACL6E,QAAQ,EAAE7E,CAAC,CAAC6E,QAAQ,IAAIhK,MAAM,CAACsI,GAAG,CAAC5F,MAAM,CAAC;IAC1CuH,KAAK,EAAE,OAAO,IAAI9E,CAAC,GACfA,CAAC,CAAC8E,KAAK,GACPjK,MAAM,CAACkK,SAAS,CAAC,CAAClK,MAAM,CAACmK,QAAQ,CAAC,CAAC,EAAEnH,SAAS,CAAC,CAAC;IACpDqF,MAAM,EAAElD,CAAC,CAACkD,MAAM,IAAIrI,MAAM,CAACmK,QAAQ,CAAC,CAAC;IACrCC,WAAW,EAAEjF,CAAC,CAACiF,WAAW,IAAIpK,MAAM,CAACmK,QAAQ,CAAC;EAChD,CAAC;AACH;AAEA,SAASE,gBAAgBA,CACvBC,GAAM,EACNC,GAAM,EACa;EACnB,OAAOA,GAAG,IAAID,GAAG,GACbA,GAAG,CAACC,GAAG,CAAC,GACRvK,MAAM,CAACkK,SAAS,CAAC,CAAClK,MAAM,CAACmK,QAAQ,CAAC,CAAC,EAAEnH,SAAS,CAAC,CAAC;AACtD;AAEA,OAAO,SAASwH,uBAAuBA,CACrCrF,CAAyB,EACV;EACf,OAAO;IACLiD,MAAM,EAAEiC,gBAAgB,CAAClF,CAAC,EAAE,QAAQ,CAAC;IACrCsF,YAAY,EAAEzK,MAAM,CAACsI,GAAG,CAACoC,OAAO,CAAC;IACjCrC,MAAM,EAAElD,CAAC,CAACkD,MAAM,IAAIrI,MAAM,CAACmK,QAAQ,CAAC,CAAC;IACrCC,WAAW,EAAEjF,CAAC,CAACiF,WAAW,IAAIpK,MAAM,CAACmK,QAAQ,CAAC;EAChD,CAAC;AACH;AAEA,OAAO,SAASjC,qBAAqBA,CACnC/C,CAAuB,EACV;EACb,OAAO;IACLwF,SAAS,EAAExF,CAAC,CAACwF,SAAS,IAAI3K,MAAM,CAACsI,GAAG,CAACsC,QAAQ,CAAC;IAC9CC,OAAO,EAAE1F,CAAC,CAAC0F,OAAO,IAAI7K,MAAM,CAACsI,GAAG,CAACoC,OAAO,CAAC;IACzCrD,YAAY,EAAElC,CAAC,CAACkC,YAAY,IAAIrH,MAAM,CAACmK,QAAQ,CAAC,CAAC;IACjDM,YAAY,EAAEzK,MAAM,CAACsI,GAAG,CAACoC,OAAO,CAAC;IACjCrC,MAAM,EAAElD,CAAC,CAACkD,MAAM,IAAIrI,MAAM,CAACmK,QAAQ,CAAC,CAAC;IACrCC,WAAW,EAAEjF,CAAC,CAACiF,WAAW,IAAIpK,MAAM,CAACmK,QAAQ,CAAC;EAChD,CAAC;AACH;AAEA,OAAO,SAASvC,qBAAqBA,CACnCzC,CAA+B,EACV;EACrB,OAAO;IACLwF,SAAS,EAAExF,CAAC,CAACwF,SAAS,IAAI3K,MAAM,CAACsI,GAAG,CAACsC,QAAQ,CAAC;IAC9CC,OAAO,EAAE1F,CAAC,CAAC0F,OAAO,IAAI7K,MAAM,CAACsI,GAAG,CAACoC,OAAO,CAAC;IACzCrD,YAAY,EAAElC,CAAC,CAACkC,YAAY,IAAIrH,MAAM,CAACmK,QAAQ,CAAC,CAAC;IACjDM,YAAY,EAAEzK,MAAM,CAACsI,GAAG,CAACoC,OAAO,CAAC;IACjCrC,MAAM,EAAElD,CAAC,CAACkD,MAAM,IAAIrI,MAAM,CAACmK,QAAQ,CAAC,CAAC;IACrCC,WAAW,EAAEjF,CAAC,CAACiF,WAAW,IAAIpK,MAAM,CAACmK,QAAQ,CAAC,CAAC;IAC/C,IAAI,YAAY,IAAIhF,CAAC,GACjB;MAAE2F,UAAU,EAAE3F,CAAC,CAAC2F;IAAW,CAAC,GAC5B,CAAC,CAAC;EACR,CAAC;AACH;AAEA,OAAO,SAASC,mBAAmBA,CAAA,EAAS;EAC1C/K,MAAM,CAACgL,MAAM,CAAC;IACZC,eAAe,EAAEA,CAAC7E,CAAS,EAAE5C,CAAS,KAAK;MACzC,OAAO;QACL0H,IAAI,EAAE9E,CAAC,GAAG5C,CAAC;QACX2H,OAAO,EAAEA,CAAA,KAAM,YAAY/E,CAAC,uBAAuB5C,CAAC;MACtD,CAAC;IACH;EACF,CAAC,CAAC;AACJ;AAeA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAAS4H,UAAUA,CACxBC,KAAY,EACZ;EACEhG,IAAI;EACJ5B,KAAK;EACL6H;AAKF,CAAC,EACDC,OAA4C,EAC5C;EAAEC;AAA8C,CAAC,GAAG,CAAC,CAAC,EACtDC,IAAyB,GAAG;EAAEC,cAAc,EAAE;AAAE,CAAC,EAC3C;EACN,IAAIzF,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;IACzCkF,KAAK,CAACjI,MAAM,EAAER,KAAK,CAAC;MAAEJ,UAAU,EAAE;IAAa,CAAC,CAAC,CAACvB,IAAI,CACpD,EAAE,EACF;MAAEuK;IAAa,CACjB,CAAC;EACH;EAEA,MAAMG,KAAK,GAAGN,KAAK,CAACO,KAAK,CAACC,QAAQ,CAAC;IACjC,GAAGJ,IAAI;IACPpG,IAAI;IACJ5B,KAAK,EAAEA,KAAK,IAAI,CAAC,CAAC;IAClB6H,OAAO,EAAEA,OAAO,IAAI,CAAC;EACvB,CAAC,CAAC;EAEFD,KAAK,CAACS,KAAK,CAAC;IAAEN;EAAa,CAAC,EAAGM,KAAK,IAAK;IACvC,MAAMC,SAAS,GAAGJ,KAAK,CAACI,SAAS;IACjC,MAAMC,eAAe,GAAGX,KAAK,CAACE,OAAO,CAACU,kBAAkB,CACtDV,OAAO,EACPO,KAAK,EACLC,SACF,CAAC;IACDJ,KAAK,CAACO,WAAW,CAACF,eAAe,EAAE,QAAQ,EAAEF,KAAK,EAAE,KAAK,CAAC;EAC5D,CAAC,CAAC;AACJ;AAEA,OAAO,SAASK,SAASA,CACvBd,KAAY,EACZhG,IAAY,EACZ+G,EAAU,EACgB;EAC1B,OAAOf,KAAK,CAACgB,QAAQ,CACnBhB,KAAK,CAACiB,SAAS,CAACC,GAAG,CAAiB,QAAQ,EAAElH,IAAI,EAAE+G,EAAE,CACxD,CAAC,EAAEnC,KAAK;AACV;AAEA,OAAO,SAASuC,YAAYA,CAC1BnB,KAAY,EACZpB,KAAuB,EACvB;EAAEuB;AAA8C,CAAC,GAAG,CAAC,CAAC,EACpC;EAClB,MAAMG,KAAK,GAAGN,KAAK,CAACE,OAAO,CAACM,QAAQ,CAAC;IACnCY,OAAO,EAAExC,KAAK,CAACyC,QAAQ;IACvBN,EAAE,EAAEnC,KAAK,CAAC5D;EACZ,CAAC,EAAErD,SAAS,CAAC;EAEbqI,KAAK,CAACS,KAAK,CAAC;IAAEN;EAAa,CAAC,EAAGM,KAAK,IAAK;IACvC,OAAOH,KAAK,CAACgB,YAAY,CACvB1C,KAAK,EACL,QAAQ,EACR6B,KACF,CAAC;EACH,CAAC,CAAC;EAEF,OAAO7B,KAAK;AACd","ignoreList":[]}
|
|
@@ -97,8 +97,13 @@ export function mergeObjectFields(sourceValue, sourceRdpFields, targetRdpFields,
|
|
|
97
97
|
if (targetCurrentValue) {
|
|
98
98
|
const targetUnderlying = targetCurrentValue[UnderlyingOsdkObject];
|
|
99
99
|
for (const field of targetRdpFields) {
|
|
100
|
-
if (
|
|
101
|
-
|
|
100
|
+
if (field in targetUnderlying) {
|
|
101
|
+
// Preserve target's value when:
|
|
102
|
+
// 1. Source doesn't have this RDP field at all, OR
|
|
103
|
+
// 2. Source hasn't provided the value (undefined)
|
|
104
|
+
if (!sourceRdpFields.has(field) || newProps[field] === undefined) {
|
|
105
|
+
newProps[field] = targetUnderlying[field];
|
|
106
|
+
}
|
|
102
107
|
}
|
|
103
108
|
}
|
|
104
109
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rdpFieldOperations.js","names":["createOsdkObject","ClientRef","ObjectDefRef","UnderlyingOsdkObject","extractRdpFieldNames","rdpConfig","Set","Object","keys","stripRdpFields","value","rdpFields","size","underlying","objectDef","newProps","$apiName","$objectType","$primaryKey","$title","$rid","key","properties","has","isSuperset","superset","subset","field","filterToRdpFields","rdpFieldsToKeep","sourceRdpFields","isRdpField","mergeObjectFields","sourceValue","targetRdpFields","targetCurrentValue","sourceUnderlying","targetUnderlying"],"sources":["rdpFieldOperations.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createOsdkObject } from \"../../../object/convertWireToOsdkObjects/createOsdkObject.js\";\nimport {\n ClientRef,\n ObjectDefRef,\n UnderlyingOsdkObject,\n} from \"../../../object/convertWireToOsdkObjects/InternalSymbols.js\";\nimport type { ObjectHolder } from \"../../../object/convertWireToOsdkObjects/ObjectHolder.js\";\nimport type { SimpleOsdkProperties } from \"../../../object/SimpleOsdkProperties.js\";\nimport type { Canonical } from \"../Canonical.js\";\nimport type { Rdp } from \"../RdpCanonicalizer.js\";\n\nexport function extractRdpFieldNames(\n rdpConfig: Canonical<Rdp> | undefined,\n): ReadonlySet<string> {\n if (!rdpConfig) {\n return new Set();\n }\n return new Set(Object.keys(rdpConfig));\n}\n\nfunction stripRdpFields(\n value: ObjectHolder,\n rdpFields: ReadonlySet<string>,\n): ObjectHolder {\n if (rdpFields.size === 0) {\n return value;\n }\n\n const underlying = value[UnderlyingOsdkObject] as SimpleOsdkProperties;\n const objectDef = value[ObjectDefRef];\n\n const newProps: SimpleOsdkProperties = {\n $apiName: underlying.$apiName,\n $objectType: underlying.$objectType,\n $primaryKey: underlying.$primaryKey,\n $title: underlying.$title,\n $rid: underlying.$rid,\n };\n\n for (const key of Object.keys(underlying)) {\n if (key in objectDef.properties && !rdpFields.has(key)) {\n newProps[key] = underlying[key];\n }\n }\n\n return createOsdkObject(value[ClientRef], objectDef, newProps);\n}\n\nfunction isSuperset(\n superset: ReadonlySet<string>,\n subset: ReadonlySet<string>,\n): boolean {\n for (const field of subset) {\n if (!superset.has(field)) {\n return false;\n }\n }\n return true;\n}\n\nfunction filterToRdpFields(\n value: ObjectHolder,\n rdpFieldsToKeep: ReadonlySet<string>,\n sourceRdpFields: ReadonlySet<string>,\n): ObjectHolder {\n const underlying = value[UnderlyingOsdkObject] as SimpleOsdkProperties;\n const objectDef = value[ObjectDefRef];\n\n const newProps: SimpleOsdkProperties = {\n $apiName: underlying.$apiName,\n $objectType: underlying.$objectType,\n $primaryKey: underlying.$primaryKey,\n $title: underlying.$title,\n $rid: underlying.$rid,\n };\n\n for (const key of Object.keys(underlying)) {\n if (key in objectDef.properties) {\n const isRdpField = sourceRdpFields.has(key);\n if (!isRdpField || rdpFieldsToKeep.has(key)) {\n newProps[key] = underlying[key];\n }\n }\n }\n\n return createOsdkObject(value[ClientRef], objectDef, newProps);\n}\n\nexport function mergeObjectFields(\n sourceValue: ObjectHolder,\n sourceRdpFields: ReadonlySet<string>,\n targetRdpFields: ReadonlySet<string>,\n targetCurrentValue: ObjectHolder | undefined,\n): ObjectHolder {\n if (targetRdpFields.size === 0) {\n return stripRdpFields(sourceValue, sourceRdpFields);\n }\n\n if (isSuperset(sourceRdpFields, targetRdpFields)) {\n if (sourceRdpFields.size === targetRdpFields.size) {\n return sourceValue;\n }\n return filterToRdpFields(sourceValue, targetRdpFields, sourceRdpFields);\n }\n\n const sourceUnderlying =\n sourceValue[UnderlyingOsdkObject] as SimpleOsdkProperties;\n const objectDef = sourceValue[ObjectDefRef];\n\n const newProps: SimpleOsdkProperties = {\n $apiName: sourceUnderlying.$apiName,\n $objectType: sourceUnderlying.$objectType,\n $primaryKey: sourceUnderlying.$primaryKey,\n $title: sourceUnderlying.$title,\n $rid: sourceUnderlying.$rid,\n };\n\n for (const key of Object.keys(sourceUnderlying)) {\n if (\n key in objectDef.properties\n && (!sourceRdpFields.has(key) || targetRdpFields.has(key))\n ) {\n newProps[key] = sourceUnderlying[key];\n }\n }\n\n if (targetCurrentValue) {\n const targetUnderlying =\n targetCurrentValue[UnderlyingOsdkObject] as SimpleOsdkProperties;\n for (const field of targetRdpFields) {\n if (!sourceRdpFields.has(field)
|
|
1
|
+
{"version":3,"file":"rdpFieldOperations.js","names":["createOsdkObject","ClientRef","ObjectDefRef","UnderlyingOsdkObject","extractRdpFieldNames","rdpConfig","Set","Object","keys","stripRdpFields","value","rdpFields","size","underlying","objectDef","newProps","$apiName","$objectType","$primaryKey","$title","$rid","key","properties","has","isSuperset","superset","subset","field","filterToRdpFields","rdpFieldsToKeep","sourceRdpFields","isRdpField","mergeObjectFields","sourceValue","targetRdpFields","targetCurrentValue","sourceUnderlying","targetUnderlying","undefined"],"sources":["rdpFieldOperations.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createOsdkObject } from \"../../../object/convertWireToOsdkObjects/createOsdkObject.js\";\nimport {\n ClientRef,\n ObjectDefRef,\n UnderlyingOsdkObject,\n} from \"../../../object/convertWireToOsdkObjects/InternalSymbols.js\";\nimport type { ObjectHolder } from \"../../../object/convertWireToOsdkObjects/ObjectHolder.js\";\nimport type { SimpleOsdkProperties } from \"../../../object/SimpleOsdkProperties.js\";\nimport type { Canonical } from \"../Canonical.js\";\nimport type { Rdp } from \"../RdpCanonicalizer.js\";\n\nexport function extractRdpFieldNames(\n rdpConfig: Canonical<Rdp> | undefined,\n): ReadonlySet<string> {\n if (!rdpConfig) {\n return new Set();\n }\n return new Set(Object.keys(rdpConfig));\n}\n\nfunction stripRdpFields(\n value: ObjectHolder,\n rdpFields: ReadonlySet<string>,\n): ObjectHolder {\n if (rdpFields.size === 0) {\n return value;\n }\n\n const underlying = value[UnderlyingOsdkObject] as SimpleOsdkProperties;\n const objectDef = value[ObjectDefRef];\n\n const newProps: SimpleOsdkProperties = {\n $apiName: underlying.$apiName,\n $objectType: underlying.$objectType,\n $primaryKey: underlying.$primaryKey,\n $title: underlying.$title,\n $rid: underlying.$rid,\n };\n\n for (const key of Object.keys(underlying)) {\n if (key in objectDef.properties && !rdpFields.has(key)) {\n newProps[key] = underlying[key];\n }\n }\n\n return createOsdkObject(value[ClientRef], objectDef, newProps);\n}\n\nfunction isSuperset(\n superset: ReadonlySet<string>,\n subset: ReadonlySet<string>,\n): boolean {\n for (const field of subset) {\n if (!superset.has(field)) {\n return false;\n }\n }\n return true;\n}\n\nfunction filterToRdpFields(\n value: ObjectHolder,\n rdpFieldsToKeep: ReadonlySet<string>,\n sourceRdpFields: ReadonlySet<string>,\n): ObjectHolder {\n const underlying = value[UnderlyingOsdkObject] as SimpleOsdkProperties;\n const objectDef = value[ObjectDefRef];\n\n const newProps: SimpleOsdkProperties = {\n $apiName: underlying.$apiName,\n $objectType: underlying.$objectType,\n $primaryKey: underlying.$primaryKey,\n $title: underlying.$title,\n $rid: underlying.$rid,\n };\n\n for (const key of Object.keys(underlying)) {\n if (key in objectDef.properties) {\n const isRdpField = sourceRdpFields.has(key);\n if (!isRdpField || rdpFieldsToKeep.has(key)) {\n newProps[key] = underlying[key];\n }\n }\n }\n\n return createOsdkObject(value[ClientRef], objectDef, newProps);\n}\n\nexport function mergeObjectFields(\n sourceValue: ObjectHolder,\n sourceRdpFields: ReadonlySet<string>,\n targetRdpFields: ReadonlySet<string>,\n targetCurrentValue: ObjectHolder | undefined,\n): ObjectHolder {\n if (targetRdpFields.size === 0) {\n return stripRdpFields(sourceValue, sourceRdpFields);\n }\n\n if (isSuperset(sourceRdpFields, targetRdpFields)) {\n if (sourceRdpFields.size === targetRdpFields.size) {\n return sourceValue;\n }\n return filterToRdpFields(sourceValue, targetRdpFields, sourceRdpFields);\n }\n\n const sourceUnderlying =\n sourceValue[UnderlyingOsdkObject] as SimpleOsdkProperties;\n const objectDef = sourceValue[ObjectDefRef];\n\n const newProps: SimpleOsdkProperties = {\n $apiName: sourceUnderlying.$apiName,\n $objectType: sourceUnderlying.$objectType,\n $primaryKey: sourceUnderlying.$primaryKey,\n $title: sourceUnderlying.$title,\n $rid: sourceUnderlying.$rid,\n };\n\n for (const key of Object.keys(sourceUnderlying)) {\n if (\n key in objectDef.properties\n && (!sourceRdpFields.has(key) || targetRdpFields.has(key))\n ) {\n newProps[key] = sourceUnderlying[key];\n }\n }\n\n if (targetCurrentValue) {\n const targetUnderlying =\n targetCurrentValue[UnderlyingOsdkObject] as SimpleOsdkProperties;\n for (const field of targetRdpFields) {\n if (field in targetUnderlying) {\n // Preserve target's value when:\n // 1. Source doesn't have this RDP field at all, OR\n // 2. Source hasn't provided the value (undefined)\n if (\n !sourceRdpFields.has(field)\n || newProps[field] === undefined\n ) {\n newProps[field] = targetUnderlying[field];\n }\n }\n }\n }\n\n return createOsdkObject(\n sourceValue[ClientRef],\n objectDef,\n newProps,\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -155,6 +155,61 @@ describe("rdpFieldOperations", () => {
|
|
|
155
155
|
expect(underlying.rdpField1).toBe("source-rdp1");
|
|
156
156
|
expect(underlying.rdpField2).toBe(999);
|
|
157
157
|
});
|
|
158
|
+
it("mergeObjectFields preserves target RDP value when source has undefined for shared field", () => {
|
|
159
|
+
const source = createTestObject({
|
|
160
|
+
employeeId: 50030,
|
|
161
|
+
fullName: "John Doe",
|
|
162
|
+
rdpField1: undefined
|
|
163
|
+
});
|
|
164
|
+
const target = createTestObject({
|
|
165
|
+
employeeId: 50030,
|
|
166
|
+
rdpField1: "existing-value",
|
|
167
|
+
rdpField2: 999
|
|
168
|
+
});
|
|
169
|
+
const result = mergeObjectFields(source, new Set(["rdpField1"]), new Set(["rdpField1", "rdpField2"]), target);
|
|
170
|
+
assertValidObjectHolder(result);
|
|
171
|
+
const underlying = getUnderlyingProps(result);
|
|
172
|
+
expect(underlying.employeeId).toBe(50030);
|
|
173
|
+
expect(underlying.fullName).toBe("John Doe");
|
|
174
|
+
// Target's non-null value should be preserved when source has undefined
|
|
175
|
+
expect(underlying.rdpField1).toBe("existing-value");
|
|
176
|
+
expect(underlying.rdpField2).toBe(999);
|
|
177
|
+
});
|
|
178
|
+
it("mergeObjectFields uses source RDP value when both source and target have non-null", () => {
|
|
179
|
+
const source = createTestObject({
|
|
180
|
+
employeeId: 50030,
|
|
181
|
+
fullName: "John Doe",
|
|
182
|
+
rdpField1: "source-value"
|
|
183
|
+
});
|
|
184
|
+
const target = createTestObject({
|
|
185
|
+
employeeId: 50030,
|
|
186
|
+
rdpField1: "target-value",
|
|
187
|
+
rdpField2: 999
|
|
188
|
+
});
|
|
189
|
+
const result = mergeObjectFields(source, new Set(["rdpField1"]), new Set(["rdpField1", "rdpField2"]), target);
|
|
190
|
+
assertValidObjectHolder(result);
|
|
191
|
+
const underlying = getUnderlyingProps(result);
|
|
192
|
+
// Source's non-null value takes precedence when both are non-null
|
|
193
|
+
expect(underlying.rdpField1).toBe("source-value");
|
|
194
|
+
expect(underlying.rdpField2).toBe(999);
|
|
195
|
+
});
|
|
196
|
+
it("mergeObjectFields propagates null RDP values from source", () => {
|
|
197
|
+
const source = createTestObject({
|
|
198
|
+
employeeId: 50030,
|
|
199
|
+
fullName: "John Doe",
|
|
200
|
+
rdpField1: null
|
|
201
|
+
});
|
|
202
|
+
const target = createTestObject({
|
|
203
|
+
employeeId: 50030,
|
|
204
|
+
rdpField1: "target-value",
|
|
205
|
+
rdpField2: 999
|
|
206
|
+
});
|
|
207
|
+
const result = mergeObjectFields(source, new Set(["rdpField1"]), new Set(["rdpField1", "rdpField2"]), target);
|
|
208
|
+
assertValidObjectHolder(result);
|
|
209
|
+
const underlying = getUnderlyingProps(result);
|
|
210
|
+
expect(underlying.rdpField1).toBeNull();
|
|
211
|
+
expect(underlying.rdpField2).toBe(999);
|
|
212
|
+
});
|
|
158
213
|
it("mergeObjectFields handles undefined target", () => {
|
|
159
214
|
const source = createTestObject({
|
|
160
215
|
employeeId: 50030,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rdpFieldOperations.test.js","names":["describe","expect","it","createOsdkObject","ClientRef","ObjectDefRef","UnderlyingOsdkObject","InterfaceDefinitions","extractRdpFieldNames","mergeObjectFields","mockClient","employeeObjectDef","apiName","type","primaryKeyApiName","primaryKeyType","titleProperty","rid","displayName","description","undefined","icon","visibility","pluralDisplayName","status","interfaceMap","inverseInterfaceMap","links","implements","properties","employeeId","fullName","office","rdpField1","rdpField2","rdpField3","createTestObject","props","$apiName","$objectType","$primaryKey","$title","assertValidObjectHolder","obj","toBeDefined","toBe","Object","isFrozen","getUnderlyingProps","toEqual","Set","source","result","underlying","toBeUndefined","rdpFields","target"],"sources":["rdpFieldOperations.test.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { describe, expect, it } from \"vitest\";\nimport type { MinimalClient } from \"../../../MinimalClientContext.js\";\nimport { createOsdkObject } from \"../../../object/convertWireToOsdkObjects/createOsdkObject.js\";\nimport {\n ClientRef,\n ObjectDefRef,\n UnderlyingOsdkObject,\n} from \"../../../object/convertWireToOsdkObjects/InternalSymbols.js\";\nimport type { ObjectHolder } from \"../../../object/convertWireToOsdkObjects/ObjectHolder.js\";\nimport type { SimpleOsdkProperties } from \"../../../object/SimpleOsdkProperties.js\";\nimport type { FetchedObjectTypeDefinition } from \"../../../ontology/OntologyProvider.js\";\nimport { InterfaceDefinitions } from \"../../../ontology/OntologyProvider.js\";\nimport {\n extractRdpFieldNames,\n mergeObjectFields,\n} from \"./rdpFieldOperations.js\";\n\nconst mockClient = {} as MinimalClient;\n\nconst employeeObjectDef = {\n apiName: \"Employee\",\n type: \"object\",\n primaryKeyApiName: \"employeeId\",\n primaryKeyType: \"integer\",\n titleProperty: \"fullName\",\n rid: \"\",\n displayName: \"\",\n description: undefined,\n icon: undefined,\n visibility: undefined,\n pluralDisplayName: \"\",\n status: \"ACTIVE\",\n interfaceMap: {},\n inverseInterfaceMap: {},\n links: {},\n implements: [],\n [InterfaceDefinitions]: {},\n properties: {\n employeeId: { type: \"integer\" },\n fullName: { type: \"string\" },\n office: { type: \"string\" },\n rdpField1: { type: \"string\" },\n rdpField2: { type: \"double\" },\n rdpField3: { type: \"string\" },\n },\n} satisfies FetchedObjectTypeDefinition;\n\nfunction createTestObject(\n props: Partial<SimpleOsdkProperties>,\n): ObjectHolder {\n const defaultProps: SimpleOsdkProperties = {\n $apiName: \"Employee\",\n $objectType: \"Employee\",\n $primaryKey: 50030,\n $title: \"John Doe\",\n };\n return createOsdkObject(mockClient, employeeObjectDef, {\n ...defaultProps,\n ...props,\n });\n}\n\nfunction assertValidObjectHolder(obj: ObjectHolder): void {\n expect(obj[UnderlyingOsdkObject]).toBeDefined();\n expect(obj[ObjectDefRef]).toBeDefined();\n expect(obj[ClientRef]).toBeDefined();\n expect(obj[ClientRef]).toBe(mockClient);\n expect(obj[ObjectDefRef]).toBe(employeeObjectDef);\n expect(Object.isFrozen(obj)).toBe(true);\n}\n\nfunction getUnderlyingProps(obj: ObjectHolder): SimpleOsdkProperties {\n return obj[UnderlyingOsdkObject] as SimpleOsdkProperties;\n}\n\ndescribe(\"rdpFieldOperations\", () => {\n it(\"extractRdpFieldNames returns empty set for undefined\", () => {\n expect(extractRdpFieldNames(undefined)).toEqual(new Set());\n });\n\n it(\"mergeObjectFields returns same object when source has no rdp fields\", () => {\n const source = createTestObject({\n employeeId: 50030,\n fullName: \"John Doe\",\n });\n\n const result = mergeObjectFields(source, new Set(), new Set(), undefined);\n\n expect(result).toBe(source);\n });\n\n it(\"mergeObjectFields strips rdp fields from source\", () => {\n const source = createTestObject({\n employeeId: 50030,\n fullName: \"John Doe\",\n rdpField1: \"rdp-value-1\",\n rdpField2: 42,\n });\n\n const result = mergeObjectFields(\n source,\n new Set([\"rdpField1\", \"rdpField2\"]),\n new Set(),\n undefined,\n );\n\n assertValidObjectHolder(result);\n const underlying = getUnderlyingProps(result);\n expect(underlying.employeeId).toBe(50030);\n expect(underlying.fullName).toBe(\"John Doe\");\n expect(underlying.rdpField1).toBeUndefined();\n expect(underlying.rdpField2).toBeUndefined();\n });\n\n it(\"mergeObjectFields returns source unchanged when rdp field sets are equal\", () => {\n const source = createTestObject({\n employeeId: 50030,\n rdpField1: \"value\",\n rdpField2: 42,\n });\n const rdpFields = new Set([\"rdpField1\", \"rdpField2\"]);\n\n const result = mergeObjectFields(source, rdpFields, rdpFields, undefined);\n\n expect(result).toBe(source);\n });\n\n it(\"mergeObjectFields filters to target rdp fields when source is strict superset\", () => {\n const source = createTestObject({\n employeeId: 50030,\n fullName: \"John Doe\",\n rdpField1: \"value1\",\n rdpField2: 42,\n rdpField3: \"value3\",\n });\n\n const result = mergeObjectFields(\n source,\n new Set([\"rdpField1\", \"rdpField2\", \"rdpField3\"]),\n new Set([\"rdpField1\"]),\n undefined,\n );\n\n assertValidObjectHolder(result);\n const underlying = getUnderlyingProps(result);\n expect(underlying.employeeId).toBe(50030);\n expect(underlying.fullName).toBe(\"John Doe\");\n expect(underlying.rdpField1).toBe(\"value1\");\n expect(underlying.rdpField2).toBeUndefined();\n expect(underlying.rdpField3).toBeUndefined();\n });\n\n it(\"mergeObjectFields merges source and target rdp fields\", () => {\n const source = createTestObject({\n employeeId: 50030,\n fullName: \"John Doe\",\n office: \"NYC\",\n rdpField1: \"source-rdp1\",\n });\n const target = createTestObject({\n employeeId: 50030,\n rdpField2: 999,\n });\n\n const result = mergeObjectFields(\n source,\n new Set([\"rdpField1\"]),\n new Set([\"rdpField1\", \"rdpField2\"]),\n target,\n );\n\n assertValidObjectHolder(result);\n const underlying = getUnderlyingProps(result);\n expect(underlying.employeeId).toBe(50030);\n expect(underlying.fullName).toBe(\"John Doe\");\n expect(underlying.office).toBe(\"NYC\");\n expect(underlying.rdpField1).toBe(\"source-rdp1\");\n expect(underlying.rdpField2).toBe(999);\n });\n\n it(\"mergeObjectFields handles undefined target\", () => {\n const source = createTestObject({\n employeeId: 50030,\n fullName: \"John Doe\",\n rdpField1: \"source-rdp1\",\n });\n\n const result = mergeObjectFields(\n source,\n new Set([\"rdpField1\"]),\n new Set([\"rdpField1\", \"rdpField2\"]),\n undefined,\n );\n\n assertValidObjectHolder(result);\n const underlying = getUnderlyingProps(result);\n expect(underlying.employeeId).toBe(50030);\n expect(underlying.rdpField1).toBe(\"source-rdp1\");\n expect(underlying.rdpField2).toBeUndefined();\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"rdpFieldOperations.test.js","names":["describe","expect","it","createOsdkObject","ClientRef","ObjectDefRef","UnderlyingOsdkObject","InterfaceDefinitions","extractRdpFieldNames","mergeObjectFields","mockClient","employeeObjectDef","apiName","type","primaryKeyApiName","primaryKeyType","titleProperty","rid","displayName","description","undefined","icon","visibility","pluralDisplayName","status","interfaceMap","inverseInterfaceMap","links","implements","properties","employeeId","fullName","office","rdpField1","rdpField2","rdpField3","createTestObject","props","$apiName","$objectType","$primaryKey","$title","assertValidObjectHolder","obj","toBeDefined","toBe","Object","isFrozen","getUnderlyingProps","toEqual","Set","source","result","underlying","toBeUndefined","rdpFields","target","toBeNull"],"sources":["rdpFieldOperations.test.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { describe, expect, it } from \"vitest\";\nimport type { MinimalClient } from \"../../../MinimalClientContext.js\";\nimport { createOsdkObject } from \"../../../object/convertWireToOsdkObjects/createOsdkObject.js\";\nimport {\n ClientRef,\n ObjectDefRef,\n UnderlyingOsdkObject,\n} from \"../../../object/convertWireToOsdkObjects/InternalSymbols.js\";\nimport type { ObjectHolder } from \"../../../object/convertWireToOsdkObjects/ObjectHolder.js\";\nimport type { SimpleOsdkProperties } from \"../../../object/SimpleOsdkProperties.js\";\nimport type { FetchedObjectTypeDefinition } from \"../../../ontology/OntologyProvider.js\";\nimport { InterfaceDefinitions } from \"../../../ontology/OntologyProvider.js\";\nimport {\n extractRdpFieldNames,\n mergeObjectFields,\n} from \"./rdpFieldOperations.js\";\n\nconst mockClient = {} as MinimalClient;\n\nconst employeeObjectDef = {\n apiName: \"Employee\",\n type: \"object\",\n primaryKeyApiName: \"employeeId\",\n primaryKeyType: \"integer\",\n titleProperty: \"fullName\",\n rid: \"\",\n displayName: \"\",\n description: undefined,\n icon: undefined,\n visibility: undefined,\n pluralDisplayName: \"\",\n status: \"ACTIVE\",\n interfaceMap: {},\n inverseInterfaceMap: {},\n links: {},\n implements: [],\n [InterfaceDefinitions]: {},\n properties: {\n employeeId: { type: \"integer\" },\n fullName: { type: \"string\" },\n office: { type: \"string\" },\n rdpField1: { type: \"string\" },\n rdpField2: { type: \"double\" },\n rdpField3: { type: \"string\" },\n },\n} satisfies FetchedObjectTypeDefinition;\n\nfunction createTestObject(\n props: Partial<SimpleOsdkProperties>,\n): ObjectHolder {\n const defaultProps: SimpleOsdkProperties = {\n $apiName: \"Employee\",\n $objectType: \"Employee\",\n $primaryKey: 50030,\n $title: \"John Doe\",\n };\n return createOsdkObject(mockClient, employeeObjectDef, {\n ...defaultProps,\n ...props,\n });\n}\n\nfunction assertValidObjectHolder(obj: ObjectHolder): void {\n expect(obj[UnderlyingOsdkObject]).toBeDefined();\n expect(obj[ObjectDefRef]).toBeDefined();\n expect(obj[ClientRef]).toBeDefined();\n expect(obj[ClientRef]).toBe(mockClient);\n expect(obj[ObjectDefRef]).toBe(employeeObjectDef);\n expect(Object.isFrozen(obj)).toBe(true);\n}\n\nfunction getUnderlyingProps(obj: ObjectHolder): SimpleOsdkProperties {\n return obj[UnderlyingOsdkObject] as SimpleOsdkProperties;\n}\n\ndescribe(\"rdpFieldOperations\", () => {\n it(\"extractRdpFieldNames returns empty set for undefined\", () => {\n expect(extractRdpFieldNames(undefined)).toEqual(new Set());\n });\n\n it(\"mergeObjectFields returns same object when source has no rdp fields\", () => {\n const source = createTestObject({\n employeeId: 50030,\n fullName: \"John Doe\",\n });\n\n const result = mergeObjectFields(source, new Set(), new Set(), undefined);\n\n expect(result).toBe(source);\n });\n\n it(\"mergeObjectFields strips rdp fields from source\", () => {\n const source = createTestObject({\n employeeId: 50030,\n fullName: \"John Doe\",\n rdpField1: \"rdp-value-1\",\n rdpField2: 42,\n });\n\n const result = mergeObjectFields(\n source,\n new Set([\"rdpField1\", \"rdpField2\"]),\n new Set(),\n undefined,\n );\n\n assertValidObjectHolder(result);\n const underlying = getUnderlyingProps(result);\n expect(underlying.employeeId).toBe(50030);\n expect(underlying.fullName).toBe(\"John Doe\");\n expect(underlying.rdpField1).toBeUndefined();\n expect(underlying.rdpField2).toBeUndefined();\n });\n\n it(\"mergeObjectFields returns source unchanged when rdp field sets are equal\", () => {\n const source = createTestObject({\n employeeId: 50030,\n rdpField1: \"value\",\n rdpField2: 42,\n });\n const rdpFields = new Set([\"rdpField1\", \"rdpField2\"]);\n\n const result = mergeObjectFields(source, rdpFields, rdpFields, undefined);\n\n expect(result).toBe(source);\n });\n\n it(\"mergeObjectFields filters to target rdp fields when source is strict superset\", () => {\n const source = createTestObject({\n employeeId: 50030,\n fullName: \"John Doe\",\n rdpField1: \"value1\",\n rdpField2: 42,\n rdpField3: \"value3\",\n });\n\n const result = mergeObjectFields(\n source,\n new Set([\"rdpField1\", \"rdpField2\", \"rdpField3\"]),\n new Set([\"rdpField1\"]),\n undefined,\n );\n\n assertValidObjectHolder(result);\n const underlying = getUnderlyingProps(result);\n expect(underlying.employeeId).toBe(50030);\n expect(underlying.fullName).toBe(\"John Doe\");\n expect(underlying.rdpField1).toBe(\"value1\");\n expect(underlying.rdpField2).toBeUndefined();\n expect(underlying.rdpField3).toBeUndefined();\n });\n\n it(\"mergeObjectFields merges source and target rdp fields\", () => {\n const source = createTestObject({\n employeeId: 50030,\n fullName: \"John Doe\",\n office: \"NYC\",\n rdpField1: \"source-rdp1\",\n });\n const target = createTestObject({\n employeeId: 50030,\n rdpField2: 999,\n });\n\n const result = mergeObjectFields(\n source,\n new Set([\"rdpField1\"]),\n new Set([\"rdpField1\", \"rdpField2\"]),\n target,\n );\n\n assertValidObjectHolder(result);\n const underlying = getUnderlyingProps(result);\n expect(underlying.employeeId).toBe(50030);\n expect(underlying.fullName).toBe(\"John Doe\");\n expect(underlying.office).toBe(\"NYC\");\n expect(underlying.rdpField1).toBe(\"source-rdp1\");\n expect(underlying.rdpField2).toBe(999);\n });\n\n it(\"mergeObjectFields preserves target RDP value when source has undefined for shared field\", () => {\n const source = createTestObject({\n employeeId: 50030,\n fullName: \"John Doe\",\n rdpField1: undefined,\n });\n const target = createTestObject({\n employeeId: 50030,\n rdpField1: \"existing-value\",\n rdpField2: 999,\n });\n\n const result = mergeObjectFields(\n source,\n new Set([\"rdpField1\"]),\n new Set([\"rdpField1\", \"rdpField2\"]),\n target,\n );\n\n assertValidObjectHolder(result);\n const underlying = getUnderlyingProps(result);\n expect(underlying.employeeId).toBe(50030);\n expect(underlying.fullName).toBe(\"John Doe\");\n // Target's non-null value should be preserved when source has undefined\n expect(underlying.rdpField1).toBe(\"existing-value\");\n expect(underlying.rdpField2).toBe(999);\n });\n\n it(\"mergeObjectFields uses source RDP value when both source and target have non-null\", () => {\n const source = createTestObject({\n employeeId: 50030,\n fullName: \"John Doe\",\n rdpField1: \"source-value\",\n });\n const target = createTestObject({\n employeeId: 50030,\n rdpField1: \"target-value\",\n rdpField2: 999,\n });\n\n const result = mergeObjectFields(\n source,\n new Set([\"rdpField1\"]),\n new Set([\"rdpField1\", \"rdpField2\"]),\n target,\n );\n\n assertValidObjectHolder(result);\n const underlying = getUnderlyingProps(result);\n // Source's non-null value takes precedence when both are non-null\n expect(underlying.rdpField1).toBe(\"source-value\");\n expect(underlying.rdpField2).toBe(999);\n });\n\n it(\"mergeObjectFields propagates null RDP values from source\", () => {\n const source = createTestObject({\n employeeId: 50030,\n fullName: \"John Doe\",\n rdpField1: null as unknown as string,\n });\n const target = createTestObject({\n employeeId: 50030,\n rdpField1: \"target-value\",\n rdpField2: 999,\n });\n\n const result = mergeObjectFields(\n source,\n new Set([\"rdpField1\"]),\n new Set([\"rdpField1\", \"rdpField2\"]),\n target,\n );\n\n assertValidObjectHolder(result);\n const underlying = getUnderlyingProps(result);\n expect(underlying.rdpField1).toBeNull();\n expect(underlying.rdpField2).toBe(999);\n });\n\n it(\"mergeObjectFields handles undefined target\", () => {\n const source = createTestObject({\n employeeId: 50030,\n fullName: \"John Doe\",\n rdpField1: \"source-rdp1\",\n });\n\n const result = mergeObjectFields(\n source,\n new Set([\"rdpField1\"]),\n new Set([\"rdpField1\", \"rdpField2\"]),\n undefined,\n );\n\n assertValidObjectHolder(result);\n const underlying = getUnderlyingProps(result);\n expect(underlying.employeeId).toBe(50030);\n expect(underlying.rdpField1).toBe(\"source-rdp1\");\n expect(underlying.rdpField2).toBeUndefined();\n });\n});\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,QAAQ;AAE7C,SAASC,gBAAgB,QAAQ,8DAA8D;AAC/F,SACEC,SAAS,EACTC,YAAY,EACZC,oBAAoB,QACf,6DAA6D;AAIpE,SAASC,oBAAoB,QAAQ,uCAAuC;AAC5E,SACEC,oBAAoB,EACpBC,iBAAiB,QACZ,yBAAyB;AAEhC,MAAMC,UAAU,GAAG,CAAC,CAAkB;AAEtC,MAAMC,iBAAiB,GAAG;EACxBC,OAAO,EAAE,UAAU;EACnBC,IAAI,EAAE,QAAQ;EACdC,iBAAiB,EAAE,YAAY;EAC/BC,cAAc,EAAE,SAAS;EACzBC,aAAa,EAAE,UAAU;EACzBC,GAAG,EAAE,EAAE;EACPC,WAAW,EAAE,EAAE;EACfC,WAAW,EAAEC,SAAS;EACtBC,IAAI,EAAED,SAAS;EACfE,UAAU,EAAEF,SAAS;EACrBG,iBAAiB,EAAE,EAAE;EACrBC,MAAM,EAAE,QAAQ;EAChBC,YAAY,EAAE,CAAC,CAAC;EAChBC,mBAAmB,EAAE,CAAC,CAAC;EACvBC,KAAK,EAAE,CAAC,CAAC;EACTC,UAAU,EAAE,EAAE;EACd,CAACrB,oBAAoB,GAAG,CAAC,CAAC;EAC1BsB,UAAU,EAAE;IACVC,UAAU,EAAE;MAAEjB,IAAI,EAAE;IAAU,CAAC;IAC/BkB,QAAQ,EAAE;MAAElB,IAAI,EAAE;IAAS,CAAC;IAC5BmB,MAAM,EAAE;MAAEnB,IAAI,EAAE;IAAS,CAAC;IAC1BoB,SAAS,EAAE;MAAEpB,IAAI,EAAE;IAAS,CAAC;IAC7BqB,SAAS,EAAE;MAAErB,IAAI,EAAE;IAAS,CAAC;IAC7BsB,SAAS,EAAE;MAAEtB,IAAI,EAAE;IAAS;EAC9B;AACF,CAAuC;AAEvC,SAASuB,gBAAgBA,CACvBC,KAAoC,EACtB;EAOd,OAAOlC,gBAAgB,CAACO,UAAU,EAAEC,iBAAiB,EAAE;IACrD,GAPyC;MACzC2B,QAAQ,EAAE,UAAU;MACpBC,WAAW,EAAE,UAAU;MACvBC,WAAW,EAAE,KAAK;MAClBC,MAAM,EAAE;IACV,CAEiB;IACf,GAAGJ;EACL,CAAC,CAAC;AACJ;AAEA,SAASK,uBAAuBA,CAACC,GAAiB,EAAQ;EACxD1C,MAAM,CAAC0C,GAAG,CAACrC,oBAAoB,CAAC,CAAC,CAACsC,WAAW,CAAC,CAAC;EAC/C3C,MAAM,CAAC0C,GAAG,CAACtC,YAAY,CAAC,CAAC,CAACuC,WAAW,CAAC,CAAC;EACvC3C,MAAM,CAAC0C,GAAG,CAACvC,SAAS,CAAC,CAAC,CAACwC,WAAW,CAAC,CAAC;EACpC3C,MAAM,CAAC0C,GAAG,CAACvC,SAAS,CAAC,CAAC,CAACyC,IAAI,CAACnC,UAAU,CAAC;EACvCT,MAAM,CAAC0C,GAAG,CAACtC,YAAY,CAAC,CAAC,CAACwC,IAAI,CAAClC,iBAAiB,CAAC;EACjDV,MAAM,CAAC6C,MAAM,CAACC,QAAQ,CAACJ,GAAG,CAAC,CAAC,CAACE,IAAI,CAAC,IAAI,CAAC;AACzC;AAEA,SAASG,kBAAkBA,CAACL,GAAiB,EAAwB;EACnE,OAAOA,GAAG,CAACrC,oBAAoB,CAAC;AAClC;AAEAN,QAAQ,CAAC,oBAAoB,EAAE,MAAM;EACnCE,EAAE,CAAC,sDAAsD,EAAE,MAAM;IAC/DD,MAAM,CAACO,oBAAoB,CAACY,SAAS,CAAC,CAAC,CAAC6B,OAAO,CAAC,IAAIC,GAAG,CAAC,CAAC,CAAC;EAC5D,CAAC,CAAC;EAEFhD,EAAE,CAAC,qEAAqE,EAAE,MAAM;IAC9E,MAAMiD,MAAM,GAAGf,gBAAgB,CAAC;MAC9BN,UAAU,EAAE,KAAK;MACjBC,QAAQ,EAAE;IACZ,CAAC,CAAC;IAEF,MAAMqB,MAAM,GAAG3C,iBAAiB,CAAC0C,MAAM,EAAE,IAAID,GAAG,CAAC,CAAC,EAAE,IAAIA,GAAG,CAAC,CAAC,EAAE9B,SAAS,CAAC;IAEzEnB,MAAM,CAACmD,MAAM,CAAC,CAACP,IAAI,CAACM,MAAM,CAAC;EAC7B,CAAC,CAAC;EAEFjD,EAAE,CAAC,iDAAiD,EAAE,MAAM;IAC1D,MAAMiD,MAAM,GAAGf,gBAAgB,CAAC;MAC9BN,UAAU,EAAE,KAAK;MACjBC,QAAQ,EAAE,UAAU;MACpBE,SAAS,EAAE,aAAa;MACxBC,SAAS,EAAE;IACb,CAAC,CAAC;IAEF,MAAMkB,MAAM,GAAG3C,iBAAiB,CAC9B0C,MAAM,EACN,IAAID,GAAG,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,EACnC,IAAIA,GAAG,CAAC,CAAC,EACT9B,SACF,CAAC;IAEDsB,uBAAuB,CAACU,MAAM,CAAC;IAC/B,MAAMC,UAAU,GAAGL,kBAAkB,CAACI,MAAM,CAAC;IAC7CnD,MAAM,CAACoD,UAAU,CAACvB,UAAU,CAAC,CAACe,IAAI,CAAC,KAAK,CAAC;IACzC5C,MAAM,CAACoD,UAAU,CAACtB,QAAQ,CAAC,CAACc,IAAI,CAAC,UAAU,CAAC;IAC5C5C,MAAM,CAACoD,UAAU,CAACpB,SAAS,CAAC,CAACqB,aAAa,CAAC,CAAC;IAC5CrD,MAAM,CAACoD,UAAU,CAACnB,SAAS,CAAC,CAACoB,aAAa,CAAC,CAAC;EAC9C,CAAC,CAAC;EAEFpD,EAAE,CAAC,0EAA0E,EAAE,MAAM;IACnF,MAAMiD,MAAM,GAAGf,gBAAgB,CAAC;MAC9BN,UAAU,EAAE,KAAK;MACjBG,SAAS,EAAE,OAAO;MAClBC,SAAS,EAAE;IACb,CAAC,CAAC;IACF,MAAMqB,SAAS,GAAG,IAAIL,GAAG,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAErD,MAAME,MAAM,GAAG3C,iBAAiB,CAAC0C,MAAM,EAAEI,SAAS,EAAEA,SAAS,EAAEnC,SAAS,CAAC;IAEzEnB,MAAM,CAACmD,MAAM,CAAC,CAACP,IAAI,CAACM,MAAM,CAAC;EAC7B,CAAC,CAAC;EAEFjD,EAAE,CAAC,+EAA+E,EAAE,MAAM;IACxF,MAAMiD,MAAM,GAAGf,gBAAgB,CAAC;MAC9BN,UAAU,EAAE,KAAK;MACjBC,QAAQ,EAAE,UAAU;MACpBE,SAAS,EAAE,QAAQ;MACnBC,SAAS,EAAE,EAAE;MACbC,SAAS,EAAE;IACb,CAAC,CAAC;IAEF,MAAMiB,MAAM,GAAG3C,iBAAiB,CAC9B0C,MAAM,EACN,IAAID,GAAG,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,EAChD,IAAIA,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,EACtB9B,SACF,CAAC;IAEDsB,uBAAuB,CAACU,MAAM,CAAC;IAC/B,MAAMC,UAAU,GAAGL,kBAAkB,CAACI,MAAM,CAAC;IAC7CnD,MAAM,CAACoD,UAAU,CAACvB,UAAU,CAAC,CAACe,IAAI,CAAC,KAAK,CAAC;IACzC5C,MAAM,CAACoD,UAAU,CAACtB,QAAQ,CAAC,CAACc,IAAI,CAAC,UAAU,CAAC;IAC5C5C,MAAM,CAACoD,UAAU,CAACpB,SAAS,CAAC,CAACY,IAAI,CAAC,QAAQ,CAAC;IAC3C5C,MAAM,CAACoD,UAAU,CAACnB,SAAS,CAAC,CAACoB,aAAa,CAAC,CAAC;IAC5CrD,MAAM,CAACoD,UAAU,CAAClB,SAAS,CAAC,CAACmB,aAAa,CAAC,CAAC;EAC9C,CAAC,CAAC;EAEFpD,EAAE,CAAC,uDAAuD,EAAE,MAAM;IAChE,MAAMiD,MAAM,GAAGf,gBAAgB,CAAC;MAC9BN,UAAU,EAAE,KAAK;MACjBC,QAAQ,EAAE,UAAU;MACpBC,MAAM,EAAE,KAAK;MACbC,SAAS,EAAE;IACb,CAAC,CAAC;IACF,MAAMuB,MAAM,GAAGpB,gBAAgB,CAAC;MAC9BN,UAAU,EAAE,KAAK;MACjBI,SAAS,EAAE;IACb,CAAC,CAAC;IAEF,MAAMkB,MAAM,GAAG3C,iBAAiB,CAC9B0C,MAAM,EACN,IAAID,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,EACtB,IAAIA,GAAG,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,EACnCM,MACF,CAAC;IAEDd,uBAAuB,CAACU,MAAM,CAAC;IAC/B,MAAMC,UAAU,GAAGL,kBAAkB,CAACI,MAAM,CAAC;IAC7CnD,MAAM,CAACoD,UAAU,CAACvB,UAAU,CAAC,CAACe,IAAI,CAAC,KAAK,CAAC;IACzC5C,MAAM,CAACoD,UAAU,CAACtB,QAAQ,CAAC,CAACc,IAAI,CAAC,UAAU,CAAC;IAC5C5C,MAAM,CAACoD,UAAU,CAACrB,MAAM,CAAC,CAACa,IAAI,CAAC,KAAK,CAAC;IACrC5C,MAAM,CAACoD,UAAU,CAACpB,SAAS,CAAC,CAACY,IAAI,CAAC,aAAa,CAAC;IAChD5C,MAAM,CAACoD,UAAU,CAACnB,SAAS,CAAC,CAACW,IAAI,CAAC,GAAG,CAAC;EACxC,CAAC,CAAC;EAEF3C,EAAE,CAAC,yFAAyF,EAAE,MAAM;IAClG,MAAMiD,MAAM,GAAGf,gBAAgB,CAAC;MAC9BN,UAAU,EAAE,KAAK;MACjBC,QAAQ,EAAE,UAAU;MACpBE,SAAS,EAAEb;IACb,CAAC,CAAC;IACF,MAAMoC,MAAM,GAAGpB,gBAAgB,CAAC;MAC9BN,UAAU,EAAE,KAAK;MACjBG,SAAS,EAAE,gBAAgB;MAC3BC,SAAS,EAAE;IACb,CAAC,CAAC;IAEF,MAAMkB,MAAM,GAAG3C,iBAAiB,CAC9B0C,MAAM,EACN,IAAID,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,EACtB,IAAIA,GAAG,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,EACnCM,MACF,CAAC;IAEDd,uBAAuB,CAACU,MAAM,CAAC;IAC/B,MAAMC,UAAU,GAAGL,kBAAkB,CAACI,MAAM,CAAC;IAC7CnD,MAAM,CAACoD,UAAU,CAACvB,UAAU,CAAC,CAACe,IAAI,CAAC,KAAK,CAAC;IACzC5C,MAAM,CAACoD,UAAU,CAACtB,QAAQ,CAAC,CAACc,IAAI,CAAC,UAAU,CAAC;IAC5C;IACA5C,MAAM,CAACoD,UAAU,CAACpB,SAAS,CAAC,CAACY,IAAI,CAAC,gBAAgB,CAAC;IACnD5C,MAAM,CAACoD,UAAU,CAACnB,SAAS,CAAC,CAACW,IAAI,CAAC,GAAG,CAAC;EACxC,CAAC,CAAC;EAEF3C,EAAE,CAAC,mFAAmF,EAAE,MAAM;IAC5F,MAAMiD,MAAM,GAAGf,gBAAgB,CAAC;MAC9BN,UAAU,EAAE,KAAK;MACjBC,QAAQ,EAAE,UAAU;MACpBE,SAAS,EAAE;IACb,CAAC,CAAC;IACF,MAAMuB,MAAM,GAAGpB,gBAAgB,CAAC;MAC9BN,UAAU,EAAE,KAAK;MACjBG,SAAS,EAAE,cAAc;MACzBC,SAAS,EAAE;IACb,CAAC,CAAC;IAEF,MAAMkB,MAAM,GAAG3C,iBAAiB,CAC9B0C,MAAM,EACN,IAAID,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,EACtB,IAAIA,GAAG,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,EACnCM,MACF,CAAC;IAEDd,uBAAuB,CAACU,MAAM,CAAC;IAC/B,MAAMC,UAAU,GAAGL,kBAAkB,CAACI,MAAM,CAAC;IAC7C;IACAnD,MAAM,CAACoD,UAAU,CAACpB,SAAS,CAAC,CAACY,IAAI,CAAC,cAAc,CAAC;IACjD5C,MAAM,CAACoD,UAAU,CAACnB,SAAS,CAAC,CAACW,IAAI,CAAC,GAAG,CAAC;EACxC,CAAC,CAAC;EAEF3C,EAAE,CAAC,0DAA0D,EAAE,MAAM;IACnE,MAAMiD,MAAM,GAAGf,gBAAgB,CAAC;MAC9BN,UAAU,EAAE,KAAK;MACjBC,QAAQ,EAAE,UAAU;MACpBE,SAAS,EAAE;IACb,CAAC,CAAC;IACF,MAAMuB,MAAM,GAAGpB,gBAAgB,CAAC;MAC9BN,UAAU,EAAE,KAAK;MACjBG,SAAS,EAAE,cAAc;MACzBC,SAAS,EAAE;IACb,CAAC,CAAC;IAEF,MAAMkB,MAAM,GAAG3C,iBAAiB,CAC9B0C,MAAM,EACN,IAAID,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,EACtB,IAAIA,GAAG,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,EACnCM,MACF,CAAC;IAEDd,uBAAuB,CAACU,MAAM,CAAC;IAC/B,MAAMC,UAAU,GAAGL,kBAAkB,CAACI,MAAM,CAAC;IAC7CnD,MAAM,CAACoD,UAAU,CAACpB,SAAS,CAAC,CAACwB,QAAQ,CAAC,CAAC;IACvCxD,MAAM,CAACoD,UAAU,CAACnB,SAAS,CAAC,CAACW,IAAI,CAAC,GAAG,CAAC;EACxC,CAAC,CAAC;EAEF3C,EAAE,CAAC,4CAA4C,EAAE,MAAM;IACrD,MAAMiD,MAAM,GAAGf,gBAAgB,CAAC;MAC9BN,UAAU,EAAE,KAAK;MACjBC,QAAQ,EAAE,UAAU;MACpBE,SAAS,EAAE;IACb,CAAC,CAAC;IAEF,MAAMmB,MAAM,GAAG3C,iBAAiB,CAC9B0C,MAAM,EACN,IAAID,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,EACtB,IAAIA,GAAG,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,EACnC9B,SACF,CAAC;IAEDsB,uBAAuB,CAACU,MAAM,CAAC;IAC/B,MAAMC,UAAU,GAAGL,kBAAkB,CAACI,MAAM,CAAC;IAC7CnD,MAAM,CAACoD,UAAU,CAACvB,UAAU,CAAC,CAACe,IAAI,CAAC,KAAK,CAAC;IACzC5C,MAAM,CAACoD,UAAU,CAACpB,SAAS,CAAC,CAACY,IAAI,CAAC,aAAa,CAAC;IAChD5C,MAAM,CAACoD,UAAU,CAACnB,SAAS,CAAC,CAACoB,aAAa,CAAC,CAAC;EAC9C,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unstable-do-not-use.js","names":["augment","computeObjectSetCacheKey","createObservableClient","getMetaTagContent","getOsdkConfig","createClientWithTransaction"],"sources":["unstable-do-not-use.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 { augment } from \"../object/fetchPage.js\";\n\n// THIS IS NOT THE FINAL NAME DO NOT SHIP LIKE THIS\nexport type { ActionSignatureFromDef } from \"../actions/applyAction.js\";\nexport { computeObjectSetCacheKey } from \"../observable/computeObjectSetCacheKey.js\";\nexport { createObservableClient } from \"../observable/ObservableClient.js\";\nexport type {\n ObservableClient,\n ObserveAggregationArgs,\n ObserveFunctionCallbackArgs,\n ObserveFunctionOptions,\n ObserveObjectCallbackArgs,\n ObserveObjectsCallbackArgs,\n ObserveObjectSetArgs,\n Unsubscribable,\n} from \"../observable/ObservableClient.js\";\nexport type { Observer } from \"../observable/ObservableClient/common.js\";\nexport type { ObserveLinks } from \"../observable/ObservableClient/ObserveLink.js\";\nexport {\n getMetaTagContent,\n getOsdkConfig,\n} from \"../public-utils/osdkConfig.js\";\nexport type { OsdkConfig } from \"../public-utils/osdkConfig.js\";\n\nexport { createClientWithTransaction } from \"../createClient.js\";\nexport type { QueryParameterType, QueryReturnType } from \"../queries/types.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,OAAO,QAAQ,wBAAwB;;
|
|
1
|
+
{"version":3,"file":"unstable-do-not-use.js","names":["augment","getWireObjectSet","isObjectSet","computeObjectSetCacheKey","createObservableClient","getMetaTagContent","getOsdkConfig","createClientWithTransaction"],"sources":["unstable-do-not-use.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 { augment } from \"../object/fetchPage.js\";\nexport { getWireObjectSet, isObjectSet } from \"../objectSet/createObjectSet.js\";\n\n// THIS IS NOT THE FINAL NAME DO NOT SHIP LIKE THIS\nexport type { ActionSignatureFromDef } from \"../actions/applyAction.js\";\nexport { computeObjectSetCacheKey } from \"../observable/computeObjectSetCacheKey.js\";\nexport { createObservableClient } from \"../observable/ObservableClient.js\";\nexport type {\n ObservableClient,\n ObserveAggregationArgs,\n ObserveFunctionCallbackArgs,\n ObserveFunctionOptions,\n ObserveObjectCallbackArgs,\n ObserveObjectsCallbackArgs,\n ObserveObjectSetArgs,\n Unsubscribable,\n} from \"../observable/ObservableClient.js\";\nexport type { Observer } from \"../observable/ObservableClient/common.js\";\nexport type { ObserveLinks } from \"../observable/ObservableClient/ObserveLink.js\";\nexport {\n getMetaTagContent,\n getOsdkConfig,\n} from \"../public-utils/osdkConfig.js\";\nexport type { OsdkConfig } from \"../public-utils/osdkConfig.js\";\n\nexport { createClientWithTransaction } from \"../createClient.js\";\nexport type { QueryParameterType, QueryReturnType } from \"../queries/types.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,OAAO,QAAQ,wBAAwB;AAChD,SAASC,gBAAgB,EAAEC,WAAW,QAAQ,iCAAiC;;AAE/E;;AAEA,SAASC,wBAAwB,QAAQ,2CAA2C;AACpF,SAASC,sBAAsB,QAAQ,mCAAmC;AAa1E,SACEC,iBAAiB,EACjBC,aAAa,QACR,+BAA+B;AAGtC,SAASC,2BAA2B,QAAQ,oBAAoB","ignoreList":[]}
|
|
@@ -14,6 +14,6 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
export const USER_AGENT = `osdk-client/${"2.8.0-beta.
|
|
18
|
-
export const OBSERVABLE_USER_AGENT = `osdk-observable-client/${"2.8.0-beta.
|
|
17
|
+
export const USER_AGENT = `osdk-client/${"2.8.0-beta.10"}`;
|
|
18
|
+
export const OBSERVABLE_USER_AGENT = `osdk-observable-client/${"2.8.0-beta.10"}`;
|
|
19
19
|
//# sourceMappingURL=UserAgent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserAgent.js","names":["USER_AGENT","OBSERVABLE_USER_AGENT"],"sources":["UserAgent.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 const USER_AGENT: string = `osdk-client/${process.env.PACKAGE_VERSION}`;\nexport const OBSERVABLE_USER_AGENT: string =\n `osdk-observable-client/${process.env.PACKAGE_VERSION}`;\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO,MAAMA,UAAkB,GAAG
|
|
1
|
+
{"version":3,"file":"UserAgent.js","names":["USER_AGENT","OBSERVABLE_USER_AGENT"],"sources":["UserAgent.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 const USER_AGENT: string = `osdk-client/${process.env.PACKAGE_VERSION}`;\nexport const OBSERVABLE_USER_AGENT: string =\n `osdk-observable-client/${process.env.PACKAGE_VERSION}`;\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO,MAAMA,UAAkB,GAAG,gCAA4C;AAC9E,OAAO,MAAMC,qBAA6B,GACxC,2CAAuD","ignoreList":[]}
|
|
@@ -14,6 +14,13 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
+
/** Type representing whether a definition is an object or interface */
|
|
18
|
+
|
|
19
|
+
/** @internal */
|
|
20
|
+
export function getDefType(apiNameOrDef) {
|
|
21
|
+
return typeof apiNameOrDef === "string" ? "object" : apiNameOrDef.type;
|
|
22
|
+
}
|
|
23
|
+
|
|
17
24
|
/** @internal */
|
|
18
25
|
export function isInterfaceActionParam(o) {
|
|
19
26
|
return o != null && typeof o === "object" && "$objectType" in o && "$primaryKey" in o;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaceUtils.js","names":["isInterfaceActionParam","o","isInterfaceQueryParam","isInterfaceSpecifier","$objectType","$apiName"],"sources":["interfaceUtils.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {
|
|
1
|
+
{"version":3,"file":"interfaceUtils.js","names":["getDefType","apiNameOrDef","type","isInterfaceActionParam","o","isInterfaceQueryParam","isInterfaceSpecifier","$objectType","$apiName"],"sources":["interfaceUtils.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n ActionParam,\n ObjectOrInterfaceDefinition,\n PrimaryKeyTypes,\n QueryParam,\n} from \"@osdk/api\";\n\n/** Type representing whether a definition is an object or interface */\nexport type DefType = \"object\" | \"interface\";\n\n/** @internal */\nexport function getDefType(\n apiNameOrDef: string | ObjectOrInterfaceDefinition,\n): DefType {\n return typeof apiNameOrDef === \"string\" ? \"object\" : apiNameOrDef.type;\n}\n\n/** @internal */\nexport function isInterfaceActionParam(\n o: any,\n): o is ActionParam.InterfaceType<any> {\n return o != null && typeof o === \"object\"\n && \"$objectType\" in o && \"$primaryKey\" in o;\n}\n\n/** @internal */\nexport function isInterfaceQueryParam(\n o: any,\n): o is QueryParam.InterfaceType<any> {\n return o != null && typeof o === \"object\"\n && \"$objectType\" in o && \"$primaryKey\" in o;\n}\n\n/** @internal */\nexport function isInterfaceSpecifier(\n o: any,\n): o is {\n $apiName: string;\n $objectType: string;\n $primaryKey: PrimaryKeyTypes;\n} {\n return o != null && typeof o === \"object\"\n && \"$objectType\" in o && \"$primaryKey\" in o && o.$objectType !== o.$apiName;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA;;AAGA;AACA,OAAO,SAASA,UAAUA,CACxBC,YAAkD,EACzC;EACT,OAAO,OAAOA,YAAY,KAAK,QAAQ,GAAG,QAAQ,GAAGA,YAAY,CAACC,IAAI;AACxE;;AAEA;AACA,OAAO,SAASC,sBAAsBA,CACpCC,CAAM,EAC+B;EACrC,OAAOA,CAAC,IAAI,IAAI,IAAI,OAAOA,CAAC,KAAK,QAAQ,IACpC,aAAa,IAAIA,CAAC,IAAI,aAAa,IAAIA,CAAC;AAC/C;;AAEA;AACA,OAAO,SAASC,qBAAqBA,CACnCD,CAAM,EAC8B;EACpC,OAAOA,CAAC,IAAI,IAAI,IAAI,OAAOA,CAAC,KAAK,QAAQ,IACpC,aAAa,IAAIA,CAAC,IAAI,aAAa,IAAIA,CAAC;AAC/C;;AAEA;AACA,OAAO,SAASE,oBAAoBA,CAClCF,CAAM,EAKN;EACA,OAAOA,CAAC,IAAI,IAAI,IAAI,OAAOA,CAAC,KAAK,QAAQ,IACpC,aAAa,IAAIA,CAAC,IAAI,aAAa,IAAIA,CAAC,IAAIA,CAAC,CAACG,WAAW,KAAKH,CAAC,CAACI,QAAQ;AAC/E","ignoreList":[]}
|
package/build/types/Client.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ export interface Client extends SharedClient, OldSharedClient {
|
|
|
16
16
|
<Q extends Experiment<"2.0.8"> | Experiment<"2.1.0"> | Experiment<"2.2.0">>(experiment: Q): ExperimentFns<Q>;
|
|
17
17
|
fetchMetadata<Q extends (ObjectTypeDefinition | InterfaceDefinition | ActionDefinition<any> | QueryDefinition<any>)>(o: Q): Promise<Q extends ObjectTypeDefinition ? ObjectMetadata : Q extends InterfaceDefinition ? InterfaceMetadata : Q extends ActionDefinition<any> ? ActionMetadata : Q extends QueryDefinition<any> ? QueryMetadata : never>;
|
|
18
18
|
}
|
|
19
|
-
declare const MaxOsdkVersion = "2.
|
|
19
|
+
declare const MaxOsdkVersion = "2.8.0";
|
|
20
20
|
export type MaxOsdkVersion = typeof MaxOsdkVersion;
|
|
21
21
|
declare const ErrorMessage: unique symbol;
|
|
22
22
|
export {};
|
|
@@ -1 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
import type { ObjectOrInterfaceDefinition, ObjectSet } from "@osdk/api";
|
|
2
|
+
import type { MinimalObjectSet } from "@osdk/api/unstable";
|
|
3
|
+
import type { ObjectSet as WireObjectSet } from "@osdk/foundry.ontologies";
|
|
4
|
+
export declare function isObjectSet(o: object): o is ObjectSet<ObjectOrInterfaceDefinition>;
|
|
5
|
+
export declare function getWireObjectSet(objectSet: ObjectSet<any> | MinimalObjectSet<any>): WireObjectSet;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"","names":[],"sources":["../../../src/objectSet/createObjectSet.ts"],"version":3,"file":"createObjectSet.d.ts"}
|
|
1
|
+
{"mappings":"AAgBA,cAUE,6BACA,iBAUK,WAAY;AACnB,cAAc,wBAAwB,oBAAqB;AAC3D,cAEE,aAAa,qBAER,0BAA2B;AAuBlC,OAAO,iBAAS,YACdA,YACC,KAAK,UAAU;AAKlB,OAAO,iBAAS,iBACdC,WAAW,iBAAiB,wBAC3B","names":["o: object","objectSet: ObjectSet<any> | MinimalObjectSet<any>"],"sources":["../../../src/objectSet/createObjectSet.ts"],"version":3,"file":"createObjectSet.d.ts"}
|
|
@@ -7,6 +7,7 @@ export declare namespace ObserveLinks {
|
|
|
7
7
|
L extends keyof CompileTimeMetadata<Q>["links"] & string
|
|
8
8
|
> extends CommonObserveOptions, ObserveOptions {
|
|
9
9
|
srcType: Pick<Q, "type" | "apiName">;
|
|
10
|
+
sourceUnderlyingObjectType: string;
|
|
10
11
|
pk: PrimaryKeyType<Q>;
|
|
11
12
|
linkName: L;
|
|
12
13
|
where?: WhereClause<CompileTimeMetadata<Q>["links"][L]["targetType"]>;
|
|
@@ -28,5 +29,5 @@ export interface ObserveLinks {
|
|
|
28
29
|
observeLinks<
|
|
29
30
|
T extends ObjectTypeDefinition | InterfaceDefinition,
|
|
30
31
|
L extends keyof CompileTimeMetadata<T>["links"] & string
|
|
31
|
-
>(objects: Osdk.Instance<T> | ReadonlyArray<Osdk.Instance<T>>, linkName: L, options: Omit<ObserveLinks.Options<T, L>, "srcType" | "pk">, subFn: Observer<ObserveLinks.CallbackArgs<CompileTimeMetadata<T>["links"][L]["targetType"]>>): Unsubscribable;
|
|
32
|
+
>(objects: Osdk.Instance<T> | ReadonlyArray<Osdk.Instance<T>>, linkName: L, options: Omit<ObserveLinks.Options<T, L>, "srcType" | "pk" | "sourceUnderlyingObjectType">, subFn: Observer<ObserveLinks.CallbackArgs<CompileTimeMetadata<T>["links"][L]["targetType"]>>): Unsubscribable;
|
|
32
33
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"AAgBA,cACE,qBACA,qBACA,sBACA,MACA,gBACA,mBACK,WAAY;AACnB,cAAc,sBAAsB,sBAAuB;AAC3D,cACE,sBACA,kBACA,gBACA,UACA,SACA,cACK,aAAc;AAErB,yBAAiB;WACE;EACf,UAAU,uBAAuB;EACjC,gBAAgB,oBAAoB,GAAG;WAC/B,sBAAsB,eAAe;EAC7C,SAAS,KAAK,GAAG,SAAS;EAC1B,IAAI,eAAe;EACnB,UAAU;EACV,QAAQ,YAAY,oBAAoB,GAAG,SAAS,GAAG;EACvD;EACA,UAAU,QAAQ,oBAAoB,GAAG,SAAS,GAAG;EACrD,mBAAmB;EACnB;CACD;WAEgB,aACf,UAAU,uBAAuB,qBACjC;EACA,cAAc,KAAK,SAAS;EAC5B;EACA;EACA,iBAAiB;EACjB;EACA,QAAQ;CACT;;AAGH,iBAAiB,aAAa;CAC5B;EACE,UAAU,uBAAuB;EACjC,gBAAgB,oBAAoB,GAAG;GAEvCA,SAAS,KAAK,SAAS,KAAK,cAAc,KAAK,SAAS,KACxDC,UAAU,GACVC,SAAS,
|
|
1
|
+
{"mappings":"AAgBA,cACE,qBACA,qBACA,sBACA,MACA,gBACA,mBACK,WAAY;AACnB,cAAc,sBAAsB,sBAAuB;AAC3D,cACE,sBACA,kBACA,gBACA,UACA,SACA,cACK,aAAc;AAErB,yBAAiB;WACE;EACf,UAAU,uBAAuB;EACjC,gBAAgB,oBAAoB,GAAG;WAC/B,sBAAsB,eAAe;EAC7C,SAAS,KAAK,GAAG,SAAS;EAC1B;EACA,IAAI,eAAe;EACnB,UAAU;EACV,QAAQ,YAAY,oBAAoB,GAAG,SAAS,GAAG;EACvD;EACA,UAAU,QAAQ,oBAAoB,GAAG,SAAS,GAAG;EACrD,mBAAmB;EACnB;CACD;WAEgB,aACf,UAAU,uBAAuB,qBACjC;EACA,cAAc,KAAK,SAAS;EAC5B;EACA;EACA,iBAAiB;EACjB;EACA,QAAQ;CACT;;AAGH,iBAAiB,aAAa;CAC5B;EACE,UAAU,uBAAuB;EACjC,gBAAgB,oBAAoB,GAAG;GAEvCA,SAAS,KAAK,SAAS,KAAK,cAAc,KAAK,SAAS,KACxDC,UAAU,GACVC,SAAS,KACP,aAAa,QAAQ,GAAG,IACxB,YAAY,OAAO,+BAErBC,OAAO,SACL,aAAa,aACX,oBAAoB,GAAG,SAAS,GAAG,kBAGtC;AACJ","names":["objects: Osdk.Instance<T> | ReadonlyArray<Osdk.Instance<T>>","linkName: L","options: Omit<\n ObserveLinks.Options<T, L>,\n \"srcType\" | \"pk\" | \"sourceUnderlyingObjectType\"\n >","subFn: Observer<\n ObserveLinks.CallbackArgs<\n CompileTimeMetadata<T>[\"links\"][L][\"targetType\"]\n >\n >"],"sources":["../../../../src/observable/ObservableClient/ObserveLink.ts"],"version":3,"file":"ObserveLink.d.ts"}
|