@osdk/client 2.0.0-beta.13 → 2.0.0-beta.15
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 +40 -0
- package/build/browser/Client.d.ts +39 -0
- package/build/browser/Client.d.ts.map +1 -0
- package/build/browser/Client.js +20 -0
- package/build/browser/Client.js.map +1 -0
- package/build/browser/Definitions.test.d.ts +2 -0
- package/build/browser/Definitions.test.d.ts.map +1 -0
- package/build/browser/Definitions.test.js +35 -0
- package/build/browser/Definitions.test.js.map +1 -0
- package/build/browser/Logger.d.ts +19 -0
- package/build/browser/Logger.d.ts.map +1 -0
- package/build/browser/Logger.js +17 -0
- package/build/browser/Logger.js.map +1 -0
- package/build/browser/MinimalClientContext.d.ts +26 -0
- package/build/browser/MinimalClientContext.d.ts.map +1 -0
- package/build/browser/MinimalClientContext.js +17 -0
- package/build/browser/MinimalClientContext.js.map +1 -0
- package/build/browser/ResultOrError.d.ts +12 -0
- package/build/browser/ResultOrError.d.ts.map +1 -0
- package/build/browser/ResultOrError.js +19 -0
- package/build/browser/ResultOrError.js.map +1 -0
- package/build/browser/SatisfiesSemver.d.ts +4 -0
- package/build/browser/SatisfiesSemver.d.ts.map +1 -0
- package/build/browser/SatisfiesSemver.js +17 -0
- package/build/browser/SatisfiesSemver.js.map +1 -0
- package/build/browser/SatisfiesSemver.test.d.ts +2 -0
- package/build/browser/SatisfiesSemver.test.d.ts.map +1 -0
- package/build/browser/SatisfiesSemver.test.js +69 -0
- package/build/browser/SatisfiesSemver.test.js.map +1 -0
- package/build/browser/__unstable/ConjureSupport.d.ts +55 -0
- package/build/browser/__unstable/ConjureSupport.d.ts.map +1 -0
- package/build/browser/__unstable/ConjureSupport.js +174 -0
- package/build/browser/__unstable/ConjureSupport.js.map +1 -0
- package/build/browser/__unstable/createBulkLinksAsyncIterFactory.d.ts +10 -0
- package/build/browser/__unstable/createBulkLinksAsyncIterFactory.d.ts.map +1 -0
- package/build/browser/__unstable/createBulkLinksAsyncIterFactory.js +114 -0
- package/build/browser/__unstable/createBulkLinksAsyncIterFactory.js.map +1 -0
- package/build/browser/actions/ActionValidationError.d.ts +6 -0
- package/build/browser/actions/ActionValidationError.d.ts.map +1 -0
- package/build/browser/actions/ActionValidationError.js +23 -0
- package/build/browser/actions/ActionValidationError.js.map +1 -0
- package/build/browser/actions/actions.test.d.ts +2 -0
- package/build/browser/actions/actions.test.d.ts.map +1 -0
- package/build/browser/actions/actions.test.js +323 -0
- package/build/browser/actions/actions.test.js.map +1 -0
- package/build/browser/actions/applyAction.d.ts +30 -0
- package/build/browser/actions/applyAction.d.ts.map +1 -0
- package/build/browser/actions/applyAction.js +114 -0
- package/build/browser/actions/applyAction.js.map +1 -0
- package/build/browser/createAttachmentFromRid.d.ts +10 -0
- package/build/browser/createAttachmentFromRid.d.ts.map +1 -0
- package/build/browser/createAttachmentFromRid.js +38 -0
- package/build/browser/createAttachmentFromRid.js.map +1 -0
- package/build/browser/createClient.d.ts +6 -0
- package/build/browser/createClient.d.ts.map +1 -0
- package/build/browser/createClient.js +88 -0
- package/build/browser/createClient.js.map +1 -0
- package/build/browser/createClient.test.d.ts +2 -0
- package/build/browser/createClient.test.d.ts.map +1 -0
- package/build/browser/createClient.test.js +45 -0
- package/build/browser/createClient.test.js.map +1 -0
- package/build/browser/createMinimalClient.d.ts +2 -0
- package/build/browser/createMinimalClient.d.ts.map +1 -0
- package/build/browser/createMinimalClient.js +42 -0
- package/build/browser/createMinimalClient.js.map +1 -0
- package/build/browser/createPlatformClient.d.ts +17 -0
- package/build/browser/createPlatformClient.d.ts.map +1 -0
- package/build/browser/createPlatformClient.js +33 -0
- package/build/browser/createPlatformClient.js.map +1 -0
- package/build/browser/createTimeseriesProperty.d.ts +14 -0
- package/build/browser/createTimeseriesProperty.d.ts.map +1 -0
- package/build/browser/createTimeseriesProperty.js +79 -0
- package/build/browser/createTimeseriesProperty.js.map +1 -0
- package/build/browser/definitions/LinkDefinitions.test.d.ts +2 -0
- package/build/browser/definitions/LinkDefinitions.test.d.ts.map +1 -0
- package/build/browser/definitions/LinkDefinitions.test.js +41 -0
- package/build/browser/definitions/LinkDefinitions.test.js.map +1 -0
- package/build/browser/fetchMetadata.d.ts +2 -0
- package/build/browser/fetchMetadata.d.ts.map +1 -0
- package/build/browser/fetchMetadata.js +35 -0
- package/build/browser/fetchMetadata.js.map +1 -0
- package/build/browser/fetchMetadata.test.d.ts +2 -0
- package/build/browser/fetchMetadata.test.d.ts.map +1 -0
- package/build/browser/fetchMetadata.test.js +218 -0
- package/build/browser/fetchMetadata.test.js.map +1 -0
- package/build/browser/index.d.ts +13 -0
- package/build/browser/index.d.ts.map +1 -0
- package/build/browser/index.js +22 -725
- package/build/browser/index.js.map +1 -1
- package/build/browser/intellisense.test.d.ts +2 -0
- package/build/browser/intellisense.test.d.ts.map +1 -0
- package/build/browser/intellisense.test.helpers/callsQueryAcceptsObject.d.ts +2 -0
- package/build/browser/intellisense.test.helpers/callsQueryAcceptsObject.d.ts.map +1 -0
- package/build/browser/intellisense.test.helpers/callsQueryAcceptsObject.js +25 -0
- package/build/browser/intellisense.test.helpers/callsQueryAcceptsObject.js.map +1 -0
- package/build/browser/intellisense.test.js +86 -0
- package/build/browser/intellisense.test.js.map +1 -0
- package/build/browser/internal/conversions/legacyToModernSingleAggregationResult.d.ts +2 -0
- package/build/browser/internal/conversions/legacyToModernSingleAggregationResult.d.ts.map +1 -0
- package/build/browser/internal/conversions/legacyToModernSingleAggregationResult.js +34 -0
- package/build/browser/internal/conversions/legacyToModernSingleAggregationResult.js.map +1 -0
- package/build/browser/internal/conversions/modernToLegacyAggregationClause.d.ts +2 -0
- package/build/browser/internal/conversions/modernToLegacyAggregationClause.d.ts.map +1 -0
- package/build/browser/internal/conversions/modernToLegacyAggregationClause.js +38 -0
- package/build/browser/internal/conversions/modernToLegacyAggregationClause.js.map +1 -0
- package/build/browser/internal/conversions/modernToLegacyGroupByClause.d.ts +2 -0
- package/build/browser/internal/conversions/modernToLegacyGroupByClause.d.ts.map +1 -0
- package/build/browser/internal/conversions/modernToLegacyGroupByClause.js +62 -0
- package/build/browser/internal/conversions/modernToLegacyGroupByClause.js.map +1 -0
- package/build/browser/internal/conversions/modernToLegacyWhereClause.d.ts +2 -0
- package/build/browser/internal/conversions/modernToLegacyWhereClause.d.ts.map +1 -0
- package/build/browser/internal/conversions/modernToLegacyWhereClause.js +144 -0
- package/build/browser/internal/conversions/modernToLegacyWhereClause.js.map +1 -0
- package/build/browser/internal/conversions/modernToLegacyWhereClause.test.d.ts +2 -0
- package/build/browser/internal/conversions/modernToLegacyWhereClause.test.d.ts.map +1 -0
- package/build/browser/internal/conversions/modernToLegacyWhereClause.test.js +486 -0
- package/build/browser/internal/conversions/modernToLegacyWhereClause.test.js.map +1 -0
- package/build/browser/object/AttachmentUpload.d.ts +4 -0
- package/build/browser/object/AttachmentUpload.d.ts.map +1 -0
- package/build/browser/object/AttachmentUpload.js +27 -0
- package/build/browser/object/AttachmentUpload.js.map +1 -0
- package/build/browser/object/Cache.d.ts +2 -0
- package/build/browser/object/Cache.d.ts.map +1 -0
- package/build/browser/object/Cache.js +76 -0
- package/build/browser/object/Cache.js.map +1 -0
- package/build/browser/object/Cache.test.d.ts +11 -0
- package/build/browser/object/Cache.test.d.ts.map +1 -0
- package/build/browser/object/Cache.test.js +283 -0
- package/build/browser/object/Cache.test.js.map +1 -0
- package/build/browser/object/SimpleCache.d.ts +38 -0
- package/build/browser/object/SimpleCache.d.ts.map +1 -0
- package/build/browser/object/SimpleCache.js +67 -0
- package/build/browser/object/SimpleCache.js.map +1 -0
- package/build/browser/object/aggregate.d.ts +2 -0
- package/build/browser/object/aggregate.d.ts.map +1 -0
- package/build/browser/object/aggregate.js +69 -0
- package/build/browser/object/aggregate.js.map +1 -0
- package/build/browser/object/aggregate.test.d.ts +2 -0
- package/build/browser/object/aggregate.test.d.ts.map +1 -0
- package/build/browser/object/aggregate.test.js +398 -0
- package/build/browser/object/aggregate.test.js.map +1 -0
- package/build/browser/object/attachment.test.d.ts +2 -0
- package/build/browser/object/attachment.test.d.ts.map +1 -0
- package/build/browser/object/attachment.test.js +55 -0
- package/build/browser/object/attachment.test.js.map +1 -0
- package/build/browser/object/convertWireToOsdkObjects/InterfaceHolder.d.ts +11 -0
- package/build/browser/object/convertWireToOsdkObjects/InterfaceHolder.d.ts.map +1 -0
- package/build/browser/object/convertWireToOsdkObjects/InterfaceHolder.js +17 -0
- package/build/browser/object/convertWireToOsdkObjects/InterfaceHolder.js.map +1 -0
- package/build/browser/object/convertWireToOsdkObjects/InternalSymbols.d.ts +13 -0
- package/build/browser/object/convertWireToOsdkObjects/InternalSymbols.d.ts.map +1 -0
- package/build/browser/object/convertWireToOsdkObjects/InternalSymbols.js +22 -0
- package/build/browser/object/convertWireToOsdkObjects/InternalSymbols.js.map +1 -0
- package/build/browser/object/convertWireToOsdkObjects/ObjectHolder.d.ts +2 -0
- package/build/browser/object/convertWireToOsdkObjects/ObjectHolder.d.ts.map +1 -0
- package/build/browser/object/convertWireToOsdkObjects/ObjectHolder.js +17 -0
- package/build/browser/object/convertWireToOsdkObjects/ObjectHolder.js.map +1 -0
- package/build/browser/object/convertWireToOsdkObjects/OsdkCustomInspectPrototype.d.ts +2 -0
- package/build/browser/object/convertWireToOsdkObjects/OsdkCustomInspectPrototype.d.ts.map +1 -0
- package/build/browser/object/convertWireToOsdkObjects/OsdkCustomInspectPrototype.js +48 -0
- package/build/browser/object/convertWireToOsdkObjects/OsdkCustomInspectPrototype.js.map +1 -0
- package/build/browser/object/convertWireToOsdkObjects/PropertyDescriptorRecord.d.ts +8 -0
- package/build/browser/object/convertWireToOsdkObjects/PropertyDescriptorRecord.d.ts.map +1 -0
- package/build/browser/object/convertWireToOsdkObjects/PropertyDescriptorRecord.js +17 -0
- package/build/browser/object/convertWireToOsdkObjects/PropertyDescriptorRecord.js.map +1 -0
- package/build/browser/object/convertWireToOsdkObjects/createOsdkInterface.d.ts +2 -0
- package/build/browser/object/convertWireToOsdkObjects/createOsdkInterface.d.ts.map +1 -0
- package/build/browser/object/convertWireToOsdkObjects/createOsdkInterface.js +82 -0
- package/build/browser/object/convertWireToOsdkObjects/createOsdkInterface.js.map +1 -0
- package/build/browser/object/convertWireToOsdkObjects/createOsdkObject.d.ts +2 -0
- package/build/browser/object/convertWireToOsdkObjects/createOsdkObject.d.ts.map +1 -0
- package/build/browser/object/convertWireToOsdkObjects/createOsdkObject.js +114 -0
- package/build/browser/object/convertWireToOsdkObjects/createOsdkObject.js.map +1 -0
- package/build/browser/object/convertWireToOsdkObjects/getDollarAs.d.ts +3 -0
- package/build/browser/object/convertWireToOsdkObjects/getDollarAs.d.ts.map +1 -0
- package/build/browser/object/convertWireToOsdkObjects/getDollarAs.js +55 -0
- package/build/browser/object/convertWireToOsdkObjects/getDollarAs.js.map +1 -0
- package/build/browser/object/convertWireToOsdkObjects/getDollarLink.d.ts +2 -0
- package/build/browser/object/convertWireToOsdkObjects/getDollarLink.d.ts.map +1 -0
- package/build/browser/object/convertWireToOsdkObjects/getDollarLink.js +60 -0
- package/build/browser/object/convertWireToOsdkObjects/getDollarLink.js.map +1 -0
- package/build/browser/object/convertWireToOsdkObjects.d.ts +2 -0
- package/build/browser/object/convertWireToOsdkObjects.d.ts.map +1 -0
- package/build/browser/object/convertWireToOsdkObjects.js +150 -0
- package/build/browser/object/convertWireToOsdkObjects.js.map +1 -0
- package/build/browser/object/convertWireToOsdkObjects.test.d.ts +2 -0
- package/build/browser/object/convertWireToOsdkObjects.test.d.ts.map +1 -0
- package/build/browser/object/convertWireToOsdkObjects.test.js +254 -0
- package/build/browser/object/convertWireToOsdkObjects.test.js.map +1 -0
- package/build/browser/object/fetchPage.d.ts +3 -0
- package/build/browser/object/fetchPage.d.ts.map +1 -0
- package/build/browser/object/fetchPage.js +135 -0
- package/build/browser/object/fetchPage.js.map +1 -0
- package/build/browser/object/fetchPage.test.d.ts +2 -0
- package/build/browser/object/fetchPage.test.d.ts.map +1 -0
- package/build/browser/object/fetchPage.test.js +106 -0
- package/build/browser/object/fetchPage.test.js.map +1 -0
- package/build/browser/object/fetchSingle.d.ts +2 -0
- package/build/browser/object/fetchSingle.d.ts.map +1 -0
- package/build/browser/object/fetchSingle.js +47 -0
- package/build/browser/object/fetchSingle.js.map +1 -0
- package/build/browser/object/object.test.d.ts +12 -0
- package/build/browser/object/object.test.d.ts.map +1 -0
- package/build/browser/object/object.test.js +179 -0
- package/build/browser/object/object.test.js.map +1 -0
- package/build/browser/object/timeseries.test.d.ts +2 -0
- package/build/browser/object/timeseries.test.d.ts.map +1 -0
- package/build/browser/object/timeseries.test.js +163 -0
- package/build/browser/object/timeseries.test.js.map +1 -0
- package/build/browser/objectSet/ObjectSet.test.d.ts +2 -0
- package/build/browser/objectSet/ObjectSet.test.d.ts.map +1 -0
- package/build/browser/objectSet/ObjectSet.test.js +313 -0
- package/build/browser/objectSet/ObjectSet.test.js.map +1 -0
- package/build/browser/objectSet/ObjectSetFactory.d.ts +2 -0
- package/build/browser/objectSet/ObjectSetFactory.d.ts.map +1 -0
- package/build/browser/objectSet/ObjectSetFactory.js +17 -0
- package/build/browser/objectSet/ObjectSetFactory.js.map +1 -0
- package/build/browser/objectSet/ObjectSetListenerWebsocket.d.ts +7 -0
- package/build/browser/objectSet/ObjectSetListenerWebsocket.d.ts.map +1 -0
- package/build/browser/objectSet/ObjectSetListenerWebsocket.js +533 -0
- package/build/browser/objectSet/ObjectSetListenerWebsocket.js.map +1 -0
- package/build/browser/objectSet/ObjectSetListenerWebsocket.test.d.ts +2 -0
- package/build/browser/objectSet/ObjectSetListenerWebsocket.test.d.ts.map +1 -0
- package/build/browser/objectSet/ObjectSetListenerWebsocket.test.js +338 -0
- package/build/browser/objectSet/ObjectSetListenerWebsocket.test.js.map +1 -0
- package/build/browser/objectSet/conjureUnionType.d.ts +13 -0
- package/build/browser/objectSet/conjureUnionType.d.ts.map +1 -0
- package/build/browser/objectSet/conjureUnionType.js +27 -0
- package/build/browser/objectSet/conjureUnionType.js.map +1 -0
- package/build/browser/objectSet/createObjectSet.d.ts +2 -0
- package/build/browser/objectSet/createObjectSet.d.ts.map +1 -0
- package/build/browser/objectSet/createObjectSet.js +136 -0
- package/build/browser/objectSet/createObjectSet.js.map +1 -0
- package/build/browser/objectSet/toConjureObjectSet.d.ts +2 -0
- package/build/browser/objectSet/toConjureObjectSet.d.ts.map +1 -0
- package/build/browser/objectSet/toConjureObjectSet.js +158 -0
- package/build/browser/objectSet/toConjureObjectSet.js.map +1 -0
- package/build/browser/ontology/OntologyProvider.d.ts +32 -0
- package/build/browser/ontology/OntologyProvider.d.ts.map +1 -0
- package/build/browser/ontology/OntologyProvider.js +17 -0
- package/build/browser/ontology/OntologyProvider.js.map +1 -0
- package/build/browser/ontology/StandardOntologyProvider.d.ts +5 -0
- package/build/browser/ontology/StandardOntologyProvider.d.ts.map +1 -0
- package/build/browser/ontology/StandardOntologyProvider.js +59 -0
- package/build/browser/ontology/StandardOntologyProvider.js.map +1 -0
- package/build/browser/ontology/StandardOntologyProvider.test.d.ts +2 -0
- package/build/browser/ontology/StandardOntologyProvider.test.d.ts.map +1 -0
- package/build/browser/ontology/StandardOntologyProvider.test.js +48 -0
- package/build/browser/ontology/StandardOntologyProvider.test.js.map +1 -0
- package/build/browser/ontology/loadActionMetadata.d.ts +4 -0
- package/build/browser/ontology/loadActionMetadata.d.ts.map +1 -0
- package/build/browser/ontology/loadActionMetadata.js +22 -0
- package/build/browser/ontology/loadActionMetadata.js.map +1 -0
- package/build/browser/ontology/loadFullObjectMetadata.d.ts +6 -0
- package/build/browser/ontology/loadFullObjectMetadata.d.ts.map +1 -0
- package/build/browser/ontology/loadFullObjectMetadata.js +28 -0
- package/build/browser/ontology/loadFullObjectMetadata.js.map +1 -0
- package/build/browser/ontology/loadInterfaceMetadata.d.ts +4 -0
- package/build/browser/ontology/loadInterfaceMetadata.d.ts.map +1 -0
- package/build/browser/ontology/loadInterfaceMetadata.js +24 -0
- package/build/browser/ontology/loadInterfaceMetadata.js.map +1 -0
- package/build/browser/ontology/loadQueryMetadata.d.ts +4 -0
- package/build/browser/ontology/loadQueryMetadata.d.ts.map +1 -0
- package/build/browser/ontology/loadQueryMetadata.js +22 -0
- package/build/browser/ontology/loadQueryMetadata.js.map +1 -0
- package/build/browser/ontology/makeConjureContext.d.ts +4 -0
- package/build/browser/ontology/makeConjureContext.d.ts.map +1 -0
- package/build/browser/ontology/makeConjureContext.js +28 -0
- package/build/browser/ontology/makeConjureContext.js.map +1 -0
- package/build/browser/pageRequestAsAsyncIter.d.ts +10 -0
- package/build/browser/pageRequestAsAsyncIter.d.ts.map +1 -0
- package/build/browser/pageRequestAsAsyncIter.js +37 -0
- package/build/browser/pageRequestAsAsyncIter.js.map +1 -0
- package/build/browser/public/unstable-do-not-use.d.ts +2 -0
- package/build/browser/public/unstable-do-not-use.d.ts.map +1 -0
- package/build/browser/public/unstable-do-not-use.js +16 -2
- package/build/browser/public/unstable-do-not-use.js.map +1 -1
- package/build/browser/queries/applyQuery.d.ts +6 -0
- package/build/browser/queries/applyQuery.d.ts.map +1 -0
- package/build/browser/queries/applyQuery.js +234 -0
- package/build/browser/queries/applyQuery.js.map +1 -0
- package/build/browser/queries/queries.test.d.ts +2 -0
- package/build/browser/queries/queries.test.d.ts.map +1 -0
- package/build/browser/queries/queries.test.js +171 -0
- package/build/browser/queries/queries.test.js.map +1 -0
- package/build/browser/queries/types.d.ts +20 -0
- package/build/browser/queries/types.d.ts.map +1 -0
- package/build/browser/queries/types.js +17 -0
- package/build/browser/queries/types.js.map +1 -0
- package/build/browser/tsserver.d.ts +34 -0
- package/build/browser/tsserver.d.ts.map +1 -0
- package/build/browser/tsserver.js +133 -0
- package/build/browser/tsserver.js.map +1 -0
- package/build/browser/util/ArrayElement.d.ts +2 -0
- package/build/browser/util/ArrayElement.d.ts.map +1 -0
- package/build/browser/util/ArrayElement.js +17 -0
- package/build/browser/util/ArrayElement.js.map +1 -0
- package/build/browser/util/NOOP.d.ts +4 -0
- package/build/browser/util/NOOP.d.ts.map +1 -0
- package/build/browser/util/NOOP.js +17 -0
- package/build/browser/util/NOOP.js.map +1 -0
- package/build/browser/util/NullableProps.d.ts +6 -0
- package/build/browser/util/NullableProps.d.ts.map +1 -0
- package/build/browser/util/NullableProps.js +17 -0
- package/build/browser/util/NullableProps.js.map +1 -0
- package/build/browser/util/UserAgent.d.ts +2 -0
- package/build/browser/util/UserAgent.d.ts.map +1 -0
- package/build/browser/util/UserAgent.js +17 -0
- package/build/browser/util/UserAgent.js.map +1 -0
- package/build/browser/util/WireObjectSet.d.ts +2 -0
- package/build/browser/util/WireObjectSet.d.ts.map +1 -0
- package/build/browser/util/WireObjectSet.js +21 -0
- package/build/browser/util/WireObjectSet.js.map +1 -0
- package/build/browser/util/addUserAgentAndRequestContextHeaders.d.ts +4 -0
- package/build/browser/util/addUserAgentAndRequestContextHeaders.d.ts.map +1 -0
- package/build/browser/util/addUserAgentAndRequestContextHeaders.js +27 -0
- package/build/browser/util/addUserAgentAndRequestContextHeaders.js.map +1 -0
- package/build/browser/util/augmentRequestContext.d.ts +32 -0
- package/build/browser/util/augmentRequestContext.d.ts.map +1 -0
- package/build/browser/util/augmentRequestContext.js +52 -0
- package/build/browser/util/augmentRequestContext.js.map +1 -0
- package/build/browser/util/isOntologyObjectV2.d.ts +2 -0
- package/build/browser/util/isOntologyObjectV2.d.ts.map +1 -0
- package/build/browser/util/isOntologyObjectV2.js +20 -0
- package/build/browser/util/isOntologyObjectV2.js.map +1 -0
- package/build/browser/util/isOsdkBaseObject.d.ts +3 -0
- package/build/browser/util/isOsdkBaseObject.d.ts.map +1 -0
- package/build/browser/util/isOsdkBaseObject.js +19 -0
- package/build/browser/util/isOsdkBaseObject.js.map +1 -0
- package/build/browser/util/isOsdkObject.d.ts +3 -0
- package/build/browser/util/isOsdkObject.d.ts.map +1 -0
- package/build/browser/util/isOsdkObject.js +19 -0
- package/build/browser/util/isOsdkObject.js.map +1 -0
- package/build/browser/util/partialBy.d.ts +3 -0
- package/build/browser/util/partialBy.d.ts.map +1 -0
- package/build/browser/util/partialBy.js +17 -0
- package/build/browser/util/partialBy.js.map +1 -0
- package/build/browser/util/streamutils.d.ts +3 -0
- package/build/browser/util/streamutils.d.ts.map +1 -0
- package/build/browser/util/streamutils.js +95 -0
- package/build/browser/util/streamutils.js.map +1 -0
- package/build/browser/util/toDataValue.d.ts +2 -0
- package/build/browser/util/toDataValue.d.ts.map +1 -0
- package/build/browser/util/toDataValue.js +73 -0
- package/build/browser/util/toDataValue.js.map +1 -0
- package/build/browser/util/toDataValue.test.d.ts +2 -0
- package/build/browser/util/toDataValue.test.d.ts.map +1 -0
- package/build/browser/util/toDataValue.test.js +117 -0
- package/build/browser/util/toDataValue.test.js.map +1 -0
- package/build/browser/util/toDataValueQueries.d.ts +2 -0
- package/build/browser/util/toDataValueQueries.d.ts.map +1 -0
- package/build/browser/util/toDataValueQueries.js +107 -0
- package/build/browser/util/toDataValueQueries.js.map +1 -0
- package/build/esm/Client.d.ts +6 -7
- package/build/esm/Client.d.ts.map +1 -1
- package/build/esm/Client.js +20 -0
- package/build/esm/Client.js.map +1 -0
- package/build/esm/Definitions.test.js +35 -0
- package/build/esm/Definitions.test.js.map +1 -0
- package/build/esm/Logger.js +17 -0
- package/build/esm/Logger.js.map +1 -0
- package/build/esm/MinimalClientContext.js +17 -0
- package/build/esm/MinimalClientContext.js.map +1 -0
- package/build/esm/ResultOrError.js +19 -0
- package/build/esm/ResultOrError.js.map +1 -0
- package/build/esm/SatisfiesSemver.js +17 -0
- package/build/esm/SatisfiesSemver.js.map +1 -0
- package/build/esm/SatisfiesSemver.test.js +69 -0
- package/build/esm/SatisfiesSemver.test.js.map +1 -0
- package/build/esm/__unstable/ConjureSupport.js +174 -0
- package/build/esm/__unstable/ConjureSupport.js.map +1 -0
- package/build/esm/__unstable/createBulkLinksAsyncIterFactory.d.ts +1 -1
- package/build/esm/__unstable/createBulkLinksAsyncIterFactory.d.ts.map +1 -1
- package/build/esm/__unstable/createBulkLinksAsyncIterFactory.js +114 -0
- package/build/esm/__unstable/createBulkLinksAsyncIterFactory.js.map +1 -0
- package/build/esm/actions/ActionValidationError.d.ts +1 -1
- package/build/esm/actions/ActionValidationError.d.ts.map +1 -1
- package/build/esm/actions/ActionValidationError.js +23 -0
- package/build/esm/actions/ActionValidationError.js.map +1 -0
- package/build/esm/actions/actions.test.js +323 -0
- package/build/esm/actions/actions.test.js.map +1 -0
- package/build/esm/actions/applyAction.d.ts +9 -10
- package/build/esm/actions/applyAction.d.ts.map +1 -1
- package/build/esm/actions/applyAction.js +114 -0
- package/build/esm/actions/applyAction.js.map +1 -0
- package/build/esm/createAttachmentFromRid.d.ts +1 -1
- package/build/esm/createAttachmentFromRid.d.ts.map +1 -1
- package/build/esm/createAttachmentFromRid.js +38 -0
- package/build/esm/createAttachmentFromRid.js.map +1 -0
- package/build/esm/createClient.d.ts.map +1 -1
- package/build/esm/createClient.js +88 -0
- package/build/esm/createClient.js.map +1 -0
- package/build/esm/createClient.test.js +45 -0
- package/build/esm/createClient.test.js.map +1 -0
- package/build/esm/createMinimalClient.js +42 -0
- package/build/esm/createMinimalClient.js.map +1 -0
- package/build/esm/createPlatformClient.js +33 -0
- package/build/esm/createPlatformClient.js.map +1 -0
- package/build/esm/createTimeseriesProperty.d.ts +12 -2
- package/build/esm/createTimeseriesProperty.d.ts.map +1 -1
- package/build/esm/createTimeseriesProperty.js +79 -0
- package/build/esm/createTimeseriesProperty.js.map +1 -0
- package/build/esm/definitions/LinkDefinitions.test.js +41 -0
- package/build/esm/definitions/LinkDefinitions.test.js.map +1 -0
- package/build/esm/fetchMetadata.js +35 -0
- package/build/esm/fetchMetadata.js.map +1 -0
- package/build/esm/fetchMetadata.test.js +218 -0
- package/build/esm/fetchMetadata.test.js.map +1 -0
- package/build/esm/index.d.ts +2 -2
- package/build/esm/index.d.ts.map +1 -1
- package/build/esm/index.js +22 -725
- package/build/esm/index.js.map +1 -1
- package/build/esm/intellisense.test.helpers/callsQueryAcceptsObject.js +25 -0
- package/build/esm/intellisense.test.helpers/callsQueryAcceptsObject.js.map +1 -0
- package/build/esm/intellisense.test.js +86 -0
- package/build/esm/intellisense.test.js.map +1 -0
- package/build/esm/internal/conversions/legacyToModernSingleAggregationResult.js +34 -0
- package/build/esm/internal/conversions/legacyToModernSingleAggregationResult.js.map +1 -0
- package/build/esm/internal/conversions/modernToLegacyAggregationClause.js +38 -0
- package/build/esm/internal/conversions/modernToLegacyAggregationClause.js.map +1 -0
- package/build/esm/internal/conversions/modernToLegacyGroupByClause.js +62 -0
- package/build/esm/internal/conversions/modernToLegacyGroupByClause.js.map +1 -0
- package/build/esm/internal/conversions/modernToLegacyWhereClause.js +144 -0
- package/build/esm/internal/conversions/modernToLegacyWhereClause.js.map +1 -0
- package/build/esm/internal/conversions/modernToLegacyWhereClause.test.js +486 -0
- package/build/esm/internal/conversions/modernToLegacyWhereClause.test.js.map +1 -0
- package/build/esm/object/AttachmentUpload.d.ts +1 -1
- package/build/esm/object/AttachmentUpload.d.ts.map +1 -1
- package/build/esm/object/AttachmentUpload.js +27 -0
- package/build/esm/object/AttachmentUpload.js.map +1 -0
- package/build/esm/object/Cache.js +76 -0
- package/build/esm/object/Cache.js.map +1 -0
- package/build/esm/object/Cache.test.js +283 -0
- package/build/esm/object/Cache.test.js.map +1 -0
- package/build/esm/object/SimpleCache.js +67 -0
- package/build/esm/object/SimpleCache.js.map +1 -0
- package/build/esm/object/aggregate.js +69 -0
- package/build/esm/object/aggregate.js.map +1 -0
- package/build/esm/object/aggregate.test.js +398 -0
- package/build/esm/object/aggregate.test.js.map +1 -0
- package/build/esm/object/attachment.test.js +55 -0
- package/build/esm/object/attachment.test.js.map +1 -0
- package/build/esm/object/convertWireToOsdkObjects/InterfaceHolder.d.ts +4 -5
- package/build/esm/object/convertWireToOsdkObjects/InterfaceHolder.d.ts.map +1 -1
- package/build/esm/object/convertWireToOsdkObjects/InterfaceHolder.js +17 -0
- package/build/esm/object/convertWireToOsdkObjects/InterfaceHolder.js.map +1 -0
- package/build/esm/object/convertWireToOsdkObjects/InternalSymbols.d.ts +2 -3
- package/build/esm/object/convertWireToOsdkObjects/InternalSymbols.d.ts.map +1 -1
- package/build/esm/object/convertWireToOsdkObjects/InternalSymbols.js +22 -0
- package/build/esm/object/convertWireToOsdkObjects/InternalSymbols.js.map +1 -0
- package/build/esm/object/convertWireToOsdkObjects/ObjectHolder.js +17 -0
- package/build/esm/object/convertWireToOsdkObjects/ObjectHolder.js.map +1 -0
- package/build/esm/object/convertWireToOsdkObjects/OsdkCustomInspectPrototype.d.ts.map +1 -1
- package/build/esm/object/convertWireToOsdkObjects/OsdkCustomInspectPrototype.js +48 -0
- package/build/esm/object/convertWireToOsdkObjects/OsdkCustomInspectPrototype.js.map +1 -0
- package/build/esm/object/convertWireToOsdkObjects/PropertyDescriptorRecord.js +17 -0
- package/build/esm/object/convertWireToOsdkObjects/PropertyDescriptorRecord.js.map +1 -0
- package/build/esm/object/convertWireToOsdkObjects/createOsdkInterface.js +82 -0
- package/build/esm/object/convertWireToOsdkObjects/createOsdkInterface.js.map +1 -0
- package/build/esm/object/convertWireToOsdkObjects/createOsdkObject.js +114 -0
- package/build/esm/object/convertWireToOsdkObjects/createOsdkObject.js.map +1 -0
- package/build/esm/object/convertWireToOsdkObjects/getDollarAs.d.ts +1 -1
- package/build/esm/object/convertWireToOsdkObjects/getDollarAs.d.ts.map +1 -1
- package/build/esm/object/convertWireToOsdkObjects/getDollarAs.js +55 -0
- package/build/esm/object/convertWireToOsdkObjects/getDollarAs.js.map +1 -0
- package/build/esm/object/convertWireToOsdkObjects/getDollarLink.js +60 -0
- package/build/esm/object/convertWireToOsdkObjects/getDollarLink.js.map +1 -0
- package/build/esm/object/convertWireToOsdkObjects.js +150 -0
- package/build/esm/object/convertWireToOsdkObjects.js.map +1 -0
- package/build/esm/object/convertWireToOsdkObjects.test.js +254 -0
- package/build/esm/object/convertWireToOsdkObjects.test.js.map +1 -0
- package/build/esm/object/fetchPage.d.ts +2 -3
- package/build/esm/object/fetchPage.d.ts.map +1 -1
- package/build/esm/object/fetchPage.js +135 -0
- package/build/esm/object/fetchPage.js.map +1 -0
- package/build/esm/object/fetchPage.test.js +106 -0
- package/build/esm/object/fetchPage.test.js.map +1 -0
- package/build/esm/object/fetchSingle.js +47 -0
- package/build/esm/object/fetchSingle.js.map +1 -0
- package/build/esm/object/object.test.d.ts +1 -1
- package/build/esm/object/object.test.d.ts.map +1 -1
- package/build/esm/object/object.test.js +179 -0
- package/build/esm/object/object.test.js.map +1 -0
- package/build/esm/object/timeseries.test.js +163 -0
- package/build/esm/object/timeseries.test.js.map +1 -0
- package/build/esm/objectSet/ObjectSet.test.js +313 -0
- package/build/esm/objectSet/ObjectSet.test.js.map +1 -0
- package/build/esm/objectSet/ObjectSetFactory.js +17 -0
- package/build/esm/objectSet/ObjectSetFactory.js.map +1 -0
- package/build/esm/objectSet/ObjectSetListenerWebsocket.d.ts.map +1 -1
- package/build/esm/objectSet/ObjectSetListenerWebsocket.js +536 -0
- package/build/esm/objectSet/ObjectSetListenerWebsocket.js.map +1 -0
- package/build/esm/objectSet/ObjectSetListenerWebsocket.test.js +338 -0
- package/build/esm/objectSet/ObjectSetListenerWebsocket.test.js.map +1 -0
- package/build/esm/objectSet/conjureUnionType.js +27 -0
- package/build/esm/objectSet/conjureUnionType.js.map +1 -0
- package/build/esm/objectSet/createObjectSet.js +136 -0
- package/build/esm/objectSet/createObjectSet.js.map +1 -0
- package/build/esm/objectSet/toConjureObjectSet.js +158 -0
- package/build/esm/objectSet/toConjureObjectSet.js.map +1 -0
- package/build/esm/ontology/OntologyProvider.d.ts +5 -5
- package/build/esm/ontology/OntologyProvider.d.ts.map +1 -1
- package/build/esm/ontology/OntologyProvider.js +17 -0
- package/build/esm/ontology/OntologyProvider.js.map +1 -0
- package/build/esm/ontology/StandardOntologyProvider.js +59 -0
- package/build/esm/ontology/StandardOntologyProvider.js.map +1 -0
- package/build/esm/ontology/StandardOntologyProvider.test.js +48 -0
- package/build/esm/ontology/StandardOntologyProvider.test.js.map +1 -0
- package/build/esm/ontology/loadActionMetadata.d.ts +1 -1
- package/build/esm/ontology/loadActionMetadata.d.ts.map +1 -1
- package/build/esm/ontology/loadActionMetadata.js +22 -0
- package/build/esm/ontology/loadActionMetadata.js.map +1 -0
- package/build/esm/ontology/loadFullObjectMetadata.d.ts +1 -1
- package/build/esm/ontology/loadFullObjectMetadata.d.ts.map +1 -1
- package/build/esm/ontology/loadFullObjectMetadata.js +28 -0
- package/build/esm/ontology/loadFullObjectMetadata.js.map +1 -0
- package/build/esm/ontology/loadInterfaceMetadata.d.ts +1 -1
- package/build/esm/ontology/loadInterfaceMetadata.d.ts.map +1 -1
- package/build/esm/ontology/loadInterfaceMetadata.js +24 -0
- package/build/esm/ontology/loadInterfaceMetadata.js.map +1 -0
- package/build/esm/ontology/loadQueryMetadata.js +22 -0
- package/build/esm/ontology/loadQueryMetadata.js.map +1 -0
- package/build/esm/ontology/makeConjureContext.js +28 -0
- package/build/esm/ontology/makeConjureContext.js.map +1 -0
- package/build/esm/pageRequestAsAsyncIter.js +37 -0
- package/build/esm/pageRequestAsAsyncIter.js.map +1 -0
- package/build/esm/public/unstable-do-not-use.js +16 -2
- package/build/esm/public/unstable-do-not-use.js.map +1 -1
- package/build/esm/queries/applyQuery.d.ts +1 -2
- package/build/esm/queries/applyQuery.d.ts.map +1 -1
- package/build/esm/queries/applyQuery.js +234 -0
- package/build/esm/queries/applyQuery.js.map +1 -0
- package/build/esm/queries/queries.test.js +171 -0
- package/build/esm/queries/queries.test.js.map +1 -0
- package/build/esm/queries/types.d.ts +1 -2
- package/build/esm/queries/types.d.ts.map +1 -1
- package/build/esm/queries/types.js +17 -0
- package/build/esm/queries/types.js.map +1 -0
- package/build/esm/tsserver.js +133 -0
- package/build/esm/tsserver.js.map +1 -0
- package/build/esm/util/ArrayElement.js +17 -0
- package/build/esm/util/ArrayElement.js.map +1 -0
- package/build/esm/util/NOOP.js +17 -0
- package/build/esm/util/NOOP.js.map +1 -0
- package/build/esm/util/NullableProps.js +17 -0
- package/build/esm/util/NullableProps.js.map +1 -0
- package/build/esm/util/UserAgent.js +17 -0
- package/build/esm/util/UserAgent.js.map +1 -0
- package/build/esm/util/WireObjectSet.js +21 -0
- package/build/esm/util/WireObjectSet.js.map +1 -0
- package/build/esm/util/addUserAgentAndRequestContextHeaders.js +27 -0
- package/build/esm/util/addUserAgentAndRequestContextHeaders.js.map +1 -0
- package/build/esm/util/augmentRequestContext.js +52 -0
- package/build/esm/util/augmentRequestContext.js.map +1 -0
- package/build/esm/util/isOntologyObjectV2.js +20 -0
- package/build/esm/util/isOntologyObjectV2.js.map +1 -0
- package/build/esm/util/isOsdkBaseObject.d.ts +1 -1
- package/build/esm/util/isOsdkBaseObject.d.ts.map +1 -1
- package/build/esm/util/isOsdkBaseObject.js +19 -0
- package/build/esm/util/isOsdkBaseObject.js.map +1 -0
- package/build/esm/util/isOsdkObject.d.ts +1 -1
- package/build/esm/util/isOsdkObject.d.ts.map +1 -1
- package/build/esm/util/isOsdkObject.js +19 -0
- package/build/esm/util/isOsdkObject.js.map +1 -0
- package/build/esm/util/partialBy.js +17 -0
- package/build/esm/util/partialBy.js.map +1 -0
- package/build/esm/util/streamutils.js +95 -0
- package/build/esm/util/streamutils.js.map +1 -0
- package/build/esm/util/toDataValue.js +73 -0
- package/build/esm/util/toDataValue.js.map +1 -0
- package/build/esm/util/toDataValue.test.js +117 -0
- package/build/esm/util/toDataValue.test.js.map +1 -0
- package/build/esm/util/toDataValueQueries.js +107 -0
- package/build/esm/util/toDataValueQueries.js.map +1 -0
- package/package.json +14 -18
- package/build/browser/chunk-CG25K4WC.js +0 -2502
- package/build/browser/chunk-CG25K4WC.js.map +0 -1
- package/build/esm/chunk-MQTCPUPF.js +0 -2505
- package/build/esm/chunk-MQTCPUPF.js.map +0 -1
|
@@ -0,0 +1,338 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2024 Palantir Technologies, Inc. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { $ontologyRid, Employee, Office } from "@osdk/client.test.ontology";
|
|
17
|
+
import { apiServer } from "@osdk/shared.test";
|
|
18
|
+
import ImportedWebSocket from "isomorphic-ws";
|
|
19
|
+
import { http, HttpResponse } from "msw";
|
|
20
|
+
import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
|
|
21
|
+
import { z } from "zod";
|
|
22
|
+
import { createMinimalClient } from "../createMinimalClient.js";
|
|
23
|
+
import { conjureUnionType } from "./conjureUnionType.js";
|
|
24
|
+
import { ObjectSetListenerWebsocket } from "./ObjectSetListenerWebsocket.js";
|
|
25
|
+
// it needs to be hoisted because its referenced from our mocked WebSocket
|
|
26
|
+
// which must be hoisted to work
|
|
27
|
+
const rootLogger = await vi.hoisted(async () => {
|
|
28
|
+
const pino = (await import("pino")).pino;
|
|
29
|
+
const pinoPretty = await import("pino-pretty");
|
|
30
|
+
const {
|
|
31
|
+
EventEmitter
|
|
32
|
+
} = await import("node:events");
|
|
33
|
+
return Promise.resolve(pino({
|
|
34
|
+
level: "info"
|
|
35
|
+
}, pinoPretty.build({
|
|
36
|
+
sync: true,
|
|
37
|
+
timestampKey: undefined,
|
|
38
|
+
errorLikeObjectKeys: ["error", "err", "exception"],
|
|
39
|
+
errorProps: "stack,cause,properties",
|
|
40
|
+
ignore: "time,hostname,pid",
|
|
41
|
+
destination: new class extends EventEmitter {
|
|
42
|
+
write(a) {
|
|
43
|
+
// remove trailing newline since console.log adds one
|
|
44
|
+
if (a.at(-1) === "\n") a = a.slice(0, -1);
|
|
45
|
+
// This lets the test framework aggregate the logs per test, whereas direct to stdout does not
|
|
46
|
+
console.log(a);
|
|
47
|
+
}
|
|
48
|
+
}()
|
|
49
|
+
})));
|
|
50
|
+
});
|
|
51
|
+
// make local uses of WebSocket typed right
|
|
52
|
+
const MockedWebSocket = ImportedWebSocket;
|
|
53
|
+
const STACK = "https://stack.palantir.com";
|
|
54
|
+
vi.mock("isomorphic-ws", async importOriginal => {
|
|
55
|
+
const original = await importOriginal();
|
|
56
|
+
const WebSocket = createMockWebSocketConstructor(original.default, rootLogger);
|
|
57
|
+
return {
|
|
58
|
+
default: WebSocket,
|
|
59
|
+
WebSocket
|
|
60
|
+
};
|
|
61
|
+
});
|
|
62
|
+
describe("ObjectSetListenerWebsocket", async () => {
|
|
63
|
+
beforeAll(async () => {
|
|
64
|
+
apiServer.listen();
|
|
65
|
+
addLoggerToApiServer(rootLogger);
|
|
66
|
+
});
|
|
67
|
+
afterAll(() => {
|
|
68
|
+
apiServer.close();
|
|
69
|
+
});
|
|
70
|
+
describe("basic setup", () => {
|
|
71
|
+
let minimalClient;
|
|
72
|
+
const MINIMUM_RECONNECT_DELAY = 2_000;
|
|
73
|
+
const OBJECT_SET_EXPIRY_MS = 60_000;
|
|
74
|
+
let client;
|
|
75
|
+
let listener;
|
|
76
|
+
let oslwInst = 0;
|
|
77
|
+
beforeEach(() => {
|
|
78
|
+
minimalClient = createMinimalClient({
|
|
79
|
+
ontologyRid: $ontologyRid
|
|
80
|
+
}, STACK, async () => "myAccessToken", {
|
|
81
|
+
logger: rootLogger
|
|
82
|
+
});
|
|
83
|
+
client = new ObjectSetListenerWebsocket({
|
|
84
|
+
...minimalClient,
|
|
85
|
+
logger: rootLogger.child({
|
|
86
|
+
oslwInst: oslwInst++
|
|
87
|
+
})
|
|
88
|
+
}, {
|
|
89
|
+
minimumReconnectDelayMs: MINIMUM_RECONNECT_DELAY,
|
|
90
|
+
objectSetExpiryMs: OBJECT_SET_EXPIRY_MS
|
|
91
|
+
});
|
|
92
|
+
listener = {
|
|
93
|
+
onChange: vi.fn(),
|
|
94
|
+
onError: vi.fn(),
|
|
95
|
+
onOutOfDate: vi.fn()
|
|
96
|
+
};
|
|
97
|
+
let objectSetRidCounter = 0;
|
|
98
|
+
apiServer.use(http.post(`${STACK}/object-set-service/api/objectSets/temporary`, () => HttpResponse.json({
|
|
99
|
+
objectSetRid: `rid.hi.${objectSetRidCounter++}`
|
|
100
|
+
})), http.post(`${STACK}/object-set-watcher/api/object-set-watcher/batchEnableWatcher`, async () => {
|
|
101
|
+
return HttpResponse.json({});
|
|
102
|
+
}));
|
|
103
|
+
vi.useFakeTimers();
|
|
104
|
+
});
|
|
105
|
+
afterEach(() => {
|
|
106
|
+
vi.restoreAllMocks();
|
|
107
|
+
apiServer.resetHandlers();
|
|
108
|
+
});
|
|
109
|
+
it("should not send onOutOfDate since it has not subscribed yet", () => {
|
|
110
|
+
expect(MockedWebSocket).not.toHaveBeenCalled();
|
|
111
|
+
expect(listener.onOutOfDate).not.toHaveBeenCalled();
|
|
112
|
+
expect(listener.onChange).not.toHaveBeenCalled();
|
|
113
|
+
expect(listener.onError).not.toHaveBeenCalled();
|
|
114
|
+
});
|
|
115
|
+
describe("requests subscription", () => {
|
|
116
|
+
let ws;
|
|
117
|
+
let unsubscribe;
|
|
118
|
+
let subReq1;
|
|
119
|
+
beforeEach(async () => {
|
|
120
|
+
[ws, unsubscribe] = await subscribeAndExpectWebSocket(client, listener);
|
|
121
|
+
subReq1 = await expectSingleSubscribeMessage(ws);
|
|
122
|
+
});
|
|
123
|
+
afterEach(() => {
|
|
124
|
+
// just ensure we ended in good states, as we clear these as we consume them
|
|
125
|
+
expect(MockedWebSocket).not.toHaveBeenCalled();
|
|
126
|
+
// make sure we are unsubscribed so closing the socket doesn't trigger reconnects
|
|
127
|
+
unsubscribe();
|
|
128
|
+
// disconnect the socket
|
|
129
|
+
setWebSocketState(ws, "close");
|
|
130
|
+
vi.runAllTicks();
|
|
131
|
+
// Make sure we cleaned up
|
|
132
|
+
expectEqualRemoveAndAddListeners(ws);
|
|
133
|
+
});
|
|
134
|
+
it("only sends a single request", async () => {
|
|
135
|
+
respondSuccessToSubscribe(ws, subReq1);
|
|
136
|
+
// actually this is broken FIXME
|
|
137
|
+
unsubscribe();
|
|
138
|
+
expect(ws.send).not.toHaveBeenCalled();
|
|
139
|
+
});
|
|
140
|
+
describe("socket closed before subscription confirmed", () => {
|
|
141
|
+
beforeEach(() => {
|
|
142
|
+
setWebSocketState(ws, "close");
|
|
143
|
+
expectEqualRemoveAndAddListeners(ws);
|
|
144
|
+
});
|
|
145
|
+
describe("reconnect", async () => {
|
|
146
|
+
beforeEach(async () => {
|
|
147
|
+
[ws] = await Promise.all([expectWebSocketConstructed(),
|
|
148
|
+
// delay for connection reconnect
|
|
149
|
+
vi.advanceTimersByTimeAsync(MINIMUM_RECONNECT_DELAY)]);
|
|
150
|
+
setWebSocketState(ws, "open");
|
|
151
|
+
});
|
|
152
|
+
describe("subscribe and respond", () => {
|
|
153
|
+
beforeEach(async () => {
|
|
154
|
+
const subReq2 = await expectSingleSubscribeMessage(ws);
|
|
155
|
+
respondSuccessToSubscribe(ws, subReq2);
|
|
156
|
+
});
|
|
157
|
+
it("should not send out of date", () => {
|
|
158
|
+
expect(listener.onOutOfDate).not.toHaveBeenCalled();
|
|
159
|
+
});
|
|
160
|
+
});
|
|
161
|
+
});
|
|
162
|
+
});
|
|
163
|
+
describe("successfully subscribed", () => {
|
|
164
|
+
beforeEach(() => {
|
|
165
|
+
respondSuccessToSubscribe(ws, subReq1);
|
|
166
|
+
});
|
|
167
|
+
describe("additional subscription", async () => {
|
|
168
|
+
let unsubscribe2;
|
|
169
|
+
let subReq2;
|
|
170
|
+
beforeEach(async () => {
|
|
171
|
+
[unsubscribe2, subReq2] = await Promise.all([client.subscribe({
|
|
172
|
+
type: "base",
|
|
173
|
+
objectType: Office.apiName
|
|
174
|
+
}, listener), expectSingleSubscribeMessage(ws)]);
|
|
175
|
+
rootLogger.fatal({
|
|
176
|
+
subReq2
|
|
177
|
+
});
|
|
178
|
+
respondSuccessToSubscribe(ws, subReq2);
|
|
179
|
+
});
|
|
180
|
+
afterEach(() => {
|
|
181
|
+
unsubscribe2();
|
|
182
|
+
});
|
|
183
|
+
it("does not trigger an out of date ", () => {
|
|
184
|
+
expect(listener.onOutOfDate).not.toHaveBeenCalled();
|
|
185
|
+
});
|
|
186
|
+
});
|
|
187
|
+
describe("temporary object set expires", () => {
|
|
188
|
+
beforeEach(async () => {
|
|
189
|
+
await vi.advanceTimersByTimeAsync(OBJECT_SET_EXPIRY_MS + 1000);
|
|
190
|
+
});
|
|
191
|
+
it("should resubscribe and fire out of date", async () => {
|
|
192
|
+
vi.runAllTicks();
|
|
193
|
+
const subReq2 = await expectSingleSubscribeMessage(ws);
|
|
194
|
+
expect(subReq2.id).not.toEqual(subReq1.id);
|
|
195
|
+
respondSuccessToSubscribe(ws, subReq2);
|
|
196
|
+
expect(listener.onOutOfDate).toHaveBeenCalledTimes(1);
|
|
197
|
+
});
|
|
198
|
+
});
|
|
199
|
+
describe("socket closed abruptly", () => {
|
|
200
|
+
beforeEach(() => {
|
|
201
|
+
setWebSocketState(ws, "close");
|
|
202
|
+
expectEqualRemoveAndAddListeners(ws);
|
|
203
|
+
});
|
|
204
|
+
describe("reconnect, resubscribe successfully", async () => {
|
|
205
|
+
beforeEach(async () => {
|
|
206
|
+
[ws] = await Promise.all([expectWebSocketConstructed(),
|
|
207
|
+
// delay for connection reconnect
|
|
208
|
+
vi.advanceTimersByTimeAsync(MINIMUM_RECONNECT_DELAY)]);
|
|
209
|
+
setWebSocketState(ws, "open");
|
|
210
|
+
const subReq2 = await expectSingleSubscribeMessage(ws);
|
|
211
|
+
respondSuccessToSubscribe(ws, subReq2);
|
|
212
|
+
});
|
|
213
|
+
it("should send out of date", () => {
|
|
214
|
+
expect(listener.onOutOfDate).toHaveBeenCalledTimes(1);
|
|
215
|
+
});
|
|
216
|
+
});
|
|
217
|
+
});
|
|
218
|
+
it("should not send onOutOfDate for first call", () => {
|
|
219
|
+
expect(MockedWebSocket).not.toHaveBeenCalled();
|
|
220
|
+
expect(listener.onOutOfDate).not.toHaveBeenCalled();
|
|
221
|
+
expect(listener.onChange).not.toHaveBeenCalled();
|
|
222
|
+
expect(listener.onError).not.toHaveBeenCalled();
|
|
223
|
+
});
|
|
224
|
+
});
|
|
225
|
+
});
|
|
226
|
+
});
|
|
227
|
+
});
|
|
228
|
+
function respondSuccessToSubscribe(ws, subReq2) {
|
|
229
|
+
sendToClient(ws, conjureUnionType("subscribeResponses", {
|
|
230
|
+
id: subReq2.id,
|
|
231
|
+
responses: subReq2.requests.map((_, i) => conjureUnionType("success", {
|
|
232
|
+
id: `id-${i}`
|
|
233
|
+
}))
|
|
234
|
+
}));
|
|
235
|
+
}
|
|
236
|
+
function expectEqualRemoveAndAddListeners(ws) {
|
|
237
|
+
expect(ws.removeEventListener).toHaveBeenCalledTimes(ws.addEventListener.mock.calls.length);
|
|
238
|
+
}
|
|
239
|
+
async function expectSingleSubscribeMessage(ws) {
|
|
240
|
+
return SubscribeMessage.parse(await consumeSingleSend(ws));
|
|
241
|
+
}
|
|
242
|
+
async function subscribeAndExpectWebSocket(client, listener) {
|
|
243
|
+
const [ws, unsubscribe] = await Promise.all([expectWebSocketConstructed(), client.subscribe({
|
|
244
|
+
type: "base",
|
|
245
|
+
objectType: Employee.apiName
|
|
246
|
+
}, listener)]);
|
|
247
|
+
// otherwise the ObjectSetListenerWebSocket is sitting waiting for it to "connect"
|
|
248
|
+
setWebSocketState(ws, "open");
|
|
249
|
+
return [ws, unsubscribe];
|
|
250
|
+
}
|
|
251
|
+
async function expectWebSocketConstructed() {
|
|
252
|
+
expect(MockedWebSocket).toHaveBeenCalledTimes(0);
|
|
253
|
+
const ws = await vi.waitFor(() => {
|
|
254
|
+
expect(MockedWebSocket).toHaveBeenCalled();
|
|
255
|
+
expect(MockedWebSocket.mock.results[0].type === "return");
|
|
256
|
+
return MockedWebSocket.mock.results[0].value;
|
|
257
|
+
});
|
|
258
|
+
expect(MockedWebSocket).toHaveBeenCalledTimes(1);
|
|
259
|
+
MockedWebSocket.mockClear();
|
|
260
|
+
expect(MockedWebSocket).toHaveBeenCalledTimes(0);
|
|
261
|
+
return ws;
|
|
262
|
+
}
|
|
263
|
+
async function consumeSingleSend(ws) {
|
|
264
|
+
return await vi.waitFor(() => {
|
|
265
|
+
expect(ws.send).toBeCalledTimes(1);
|
|
266
|
+
const result = JSON.parse(ws.send.mock.lastCall[0].toString());
|
|
267
|
+
ws.send.mockClear();
|
|
268
|
+
return result;
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
function createMockWebSocketConstructor(OriginalWebSocket, logger) {
|
|
272
|
+
let i = 0;
|
|
273
|
+
const ret = vi.fn(function (..._args) {
|
|
274
|
+
const webSocketInst = i++;
|
|
275
|
+
logger.debug("WebSocket constructor called");
|
|
276
|
+
const eventEmitter = new EventTarget();
|
|
277
|
+
return {
|
|
278
|
+
addEventListener: vi.fn(eventEmitter.addEventListener.bind(eventEmitter)),
|
|
279
|
+
removeEventListener: vi.fn(eventEmitter.removeEventListener.bind(eventEmitter)),
|
|
280
|
+
send: vi.fn(a => {
|
|
281
|
+
logger.debug({
|
|
282
|
+
message: JSON.parse(a.toString()),
|
|
283
|
+
webSocketInst
|
|
284
|
+
}, "send() called");
|
|
285
|
+
}),
|
|
286
|
+
close: vi.fn(),
|
|
287
|
+
_eventEmitter: eventEmitter,
|
|
288
|
+
readyState: OriginalWebSocket.CONNECTING
|
|
289
|
+
};
|
|
290
|
+
// ^ we only implement some things but the type system wants to think its the full deal,
|
|
291
|
+
// thus the satisfies plus the cast
|
|
292
|
+
});
|
|
293
|
+
Object.assign(ret, {
|
|
294
|
+
OPEN: OriginalWebSocket.OPEN,
|
|
295
|
+
CLOSED: OriginalWebSocket.CLOSED,
|
|
296
|
+
CLOSING: OriginalWebSocket.CLOSING,
|
|
297
|
+
CONNECTING: OriginalWebSocket.CONNECTING
|
|
298
|
+
});
|
|
299
|
+
return ret;
|
|
300
|
+
}
|
|
301
|
+
function setWebSocketState(ws, readyState) {
|
|
302
|
+
const newState = readyState === "open" ? ImportedWebSocket.OPEN : ImportedWebSocket.CLOSED;
|
|
303
|
+
if (newState === ws.readyState) return;
|
|
304
|
+
ws.readyState = newState;
|
|
305
|
+
ws._eventEmitter.dispatchEvent(new Event(readyState, {}));
|
|
306
|
+
}
|
|
307
|
+
function addLoggerToApiServer(logger) {
|
|
308
|
+
const z = (name, {
|
|
309
|
+
requestId,
|
|
310
|
+
request
|
|
311
|
+
}) => logger.trace({
|
|
312
|
+
requestId,
|
|
313
|
+
url: request.url
|
|
314
|
+
}, name);
|
|
315
|
+
const eventNames = ["request:start", "request:match", "request:end", "request:unhandled", "response:bypass", "response:mocked"];
|
|
316
|
+
for (const c of eventNames) {
|
|
317
|
+
apiServer.events.on(c, z.bind(undefined, c));
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
const SubscribeMessage = z.object({
|
|
321
|
+
id: z.string(),
|
|
322
|
+
requests: z.array(z.object({
|
|
323
|
+
objectSet: z.string(),
|
|
324
|
+
objectSetContext: z.any(),
|
|
325
|
+
watchAllLinks: z.boolean()
|
|
326
|
+
}))
|
|
327
|
+
});
|
|
328
|
+
class MessageEvent extends Event {
|
|
329
|
+
data;
|
|
330
|
+
constructor(data) {
|
|
331
|
+
super("message");
|
|
332
|
+
this.data = JSON.stringify(data);
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
function sendToClient(ws, t) {
|
|
336
|
+
ws._eventEmitter.dispatchEvent(new MessageEvent(t));
|
|
337
|
+
}
|
|
338
|
+
//# sourceMappingURL=ObjectSetListenerWebsocket.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ObjectSetListenerWebsocket.test.js","names":["$ontologyRid","Employee","Office","apiServer","ImportedWebSocket","http","HttpResponse","afterAll","afterEach","beforeAll","beforeEach","describe","expect","it","vi","z","createMinimalClient","conjureUnionType","ObjectSetListenerWebsocket","rootLogger","hoisted","pino","pinoPretty","EventEmitter","Promise","resolve","level","build","sync","timestampKey","undefined","errorLikeObjectKeys","errorProps","ignore","destination","write","a","at","slice","console","log","MockedWebSocket","STACK","mock","importOriginal","original","WebSocket","createMockWebSocketConstructor","default","listen","addLoggerToApiServer","close","minimalClient","MINIMUM_RECONNECT_DELAY","OBJECT_SET_EXPIRY_MS","client","listener","oslwInst","ontologyRid","logger","child","minimumReconnectDelayMs","objectSetExpiryMs","onChange","fn","onError","onOutOfDate","objectSetRidCounter","use","post","json","objectSetRid","useFakeTimers","restoreAllMocks","resetHandlers","not","toHaveBeenCalled","ws","unsubscribe","subReq1","subscribeAndExpectWebSocket","expectSingleSubscribeMessage","setWebSocketState","runAllTicks","expectEqualRemoveAndAddListeners","respondSuccessToSubscribe","send","all","expectWebSocketConstructed","advanceTimersByTimeAsync","subReq2","unsubscribe2","subscribe","type","objectType","apiName","fatal","id","toEqual","toHaveBeenCalledTimes","sendToClient","responses","requests","map","_","i","removeEventListener","addEventListener","calls","length","SubscribeMessage","parse","consumeSingleSend","waitFor","results","value","mockClear","toBeCalledTimes","result","JSON","lastCall","toString","OriginalWebSocket","ret","_args","webSocketInst","debug","eventEmitter","EventTarget","bind","message","_eventEmitter","readyState","CONNECTING","Object","assign","OPEN","CLOSED","CLOSING","newState","dispatchEvent","Event","name","requestId","request","trace","url","eventNames","c","events","on","object","string","array","objectSet","objectSetContext","any","watchAllLinks","boolean","MessageEvent","data","constructor","stringify","t"],"sources":["ObjectSetListenerWebsocket.test.js"],"sourcesContent":["/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { $ontologyRid, Employee, Office } from \"@osdk/client.test.ontology\";\nimport { apiServer } from \"@osdk/shared.test\";\nimport ImportedWebSocket from \"isomorphic-ws\";\nimport { http, HttpResponse } from \"msw\";\nimport { afterAll, afterEach, beforeAll, beforeEach, describe, expect, it, vi, } from \"vitest\";\nimport { z } from \"zod\";\nimport { createMinimalClient } from \"../createMinimalClient.js\";\nimport { conjureUnionType } from \"./conjureUnionType.js\";\nimport { ObjectSetListenerWebsocket } from \"./ObjectSetListenerWebsocket.js\";\n// it needs to be hoisted because its referenced from our mocked WebSocket\n// which must be hoisted to work\nconst rootLogger = await vi.hoisted(async () => {\n const pino = (await import(\"pino\")).pino;\n const pinoPretty = await import(\"pino-pretty\");\n const { EventEmitter } = await import(\"node:events\");\n class PinoConsoleLogDestination extends EventEmitter {\n write(a) {\n // remove trailing newline since console.log adds one\n if (a.at(-1) === \"\\n\")\n a = a.slice(0, -1);\n // This lets the test framework aggregate the logs per test, whereas direct to stdout does not\n console.log(a);\n }\n }\n return Promise.resolve(pino({ level: \"info\" }, (pinoPretty.build)({\n sync: true,\n timestampKey: undefined,\n errorLikeObjectKeys: [\"error\", \"err\", \"exception\"],\n errorProps: \"stack,cause,properties\",\n ignore: \"time,hostname,pid\",\n destination: new PinoConsoleLogDestination(),\n })));\n});\n// make local uses of WebSocket typed right\nconst MockedWebSocket = ImportedWebSocket;\nconst STACK = \"https://stack.palantir.com\";\nvi.mock(\"isomorphic-ws\", async (importOriginal) => {\n const original = await importOriginal();\n const WebSocket = createMockWebSocketConstructor(original.default, rootLogger);\n return { default: WebSocket, WebSocket };\n});\ndescribe(\"ObjectSetListenerWebsocket\", async () => {\n beforeAll(async () => {\n apiServer.listen();\n addLoggerToApiServer(rootLogger);\n });\n afterAll(() => {\n apiServer.close();\n });\n describe(\"basic setup\", () => {\n let minimalClient;\n const MINIMUM_RECONNECT_DELAY = 2_000;\n const OBJECT_SET_EXPIRY_MS = 60_000;\n let client;\n let listener;\n let oslwInst = 0;\n beforeEach(() => {\n minimalClient = createMinimalClient({ ontologyRid: $ontologyRid }, STACK, async () => \"myAccessToken\", { logger: rootLogger });\n client = new ObjectSetListenerWebsocket({\n ...minimalClient,\n logger: rootLogger.child({ oslwInst: oslwInst++ }),\n }, {\n minimumReconnectDelayMs: MINIMUM_RECONNECT_DELAY,\n objectSetExpiryMs: OBJECT_SET_EXPIRY_MS,\n });\n listener = {\n onChange: vi.fn(),\n onError: vi.fn(),\n onOutOfDate: vi.fn(),\n };\n let objectSetRidCounter = 0;\n apiServer.use(http.post(`${STACK}/object-set-service/api/objectSets/temporary`, () => HttpResponse.json({\n objectSetRid: `rid.hi.${objectSetRidCounter++}`,\n })), http.post(`${STACK}/object-set-watcher/api/object-set-watcher/batchEnableWatcher`, async () => {\n return HttpResponse.json({});\n }));\n vi.useFakeTimers();\n });\n afterEach(() => {\n vi.restoreAllMocks();\n apiServer.resetHandlers();\n });\n it(\"should not send onOutOfDate since it has not subscribed yet\", () => {\n expect(MockedWebSocket).not.toHaveBeenCalled();\n expect(listener.onOutOfDate).not.toHaveBeenCalled();\n expect(listener.onChange).not.toHaveBeenCalled();\n expect(listener.onError).not.toHaveBeenCalled();\n });\n describe(\"requests subscription\", () => {\n let ws;\n let unsubscribe;\n let subReq1;\n beforeEach(async () => {\n [ws, unsubscribe] = await subscribeAndExpectWebSocket(client, listener);\n subReq1 = await expectSingleSubscribeMessage(ws);\n });\n afterEach(() => {\n // just ensure we ended in good states, as we clear these as we consume them\n expect(MockedWebSocket).not.toHaveBeenCalled();\n // make sure we are unsubscribed so closing the socket doesn't trigger reconnects\n unsubscribe();\n // disconnect the socket\n setWebSocketState(ws, \"close\");\n vi.runAllTicks();\n // Make sure we cleaned up\n expectEqualRemoveAndAddListeners(ws);\n });\n it(\"only sends a single request\", async () => {\n respondSuccessToSubscribe(ws, subReq1);\n // actually this is broken FIXME\n unsubscribe();\n expect(ws.send).not.toHaveBeenCalled();\n });\n describe(\"socket closed before subscription confirmed\", () => {\n beforeEach(() => {\n setWebSocketState(ws, \"close\");\n expectEqualRemoveAndAddListeners(ws);\n });\n describe(\"reconnect\", async () => {\n beforeEach(async () => {\n [ws] = await Promise.all([\n expectWebSocketConstructed(),\n // delay for connection reconnect\n vi.advanceTimersByTimeAsync(MINIMUM_RECONNECT_DELAY),\n ]);\n setWebSocketState(ws, \"open\");\n });\n describe(\"subscribe and respond\", () => {\n beforeEach(async () => {\n const subReq2 = await expectSingleSubscribeMessage(ws);\n respondSuccessToSubscribe(ws, subReq2);\n });\n it(\"should not send out of date\", () => {\n expect(listener.onOutOfDate).not.toHaveBeenCalled();\n });\n });\n });\n });\n describe(\"successfully subscribed\", () => {\n beforeEach(() => {\n respondSuccessToSubscribe(ws, subReq1);\n });\n describe(\"additional subscription\", async () => {\n let unsubscribe2;\n let subReq2;\n beforeEach(async () => {\n [unsubscribe2, subReq2] = await Promise.all([\n client.subscribe({\n type: \"base\",\n objectType: Office.apiName,\n }, listener),\n expectSingleSubscribeMessage(ws),\n ]);\n rootLogger.fatal({ subReq2 });\n respondSuccessToSubscribe(ws, subReq2);\n });\n afterEach(() => {\n unsubscribe2();\n });\n it(\"does not trigger an out of date \", () => {\n expect(listener.onOutOfDate).not.toHaveBeenCalled();\n });\n });\n describe(\"temporary object set expires\", () => {\n beforeEach(async () => {\n await vi.advanceTimersByTimeAsync(OBJECT_SET_EXPIRY_MS + 1000);\n });\n it(\"should resubscribe and fire out of date\", async () => {\n vi.runAllTicks();\n const subReq2 = await expectSingleSubscribeMessage(ws);\n expect(subReq2.id).not.toEqual(subReq1.id);\n respondSuccessToSubscribe(ws, subReq2);\n expect(listener.onOutOfDate).toHaveBeenCalledTimes(1);\n });\n });\n describe(\"socket closed abruptly\", () => {\n beforeEach(() => {\n setWebSocketState(ws, \"close\");\n expectEqualRemoveAndAddListeners(ws);\n });\n describe(\"reconnect, resubscribe successfully\", async () => {\n beforeEach(async () => {\n [ws] = await Promise.all([\n expectWebSocketConstructed(),\n // delay for connection reconnect\n vi.advanceTimersByTimeAsync(MINIMUM_RECONNECT_DELAY),\n ]);\n setWebSocketState(ws, \"open\");\n const subReq2 = await expectSingleSubscribeMessage(ws);\n respondSuccessToSubscribe(ws, subReq2);\n });\n it(\"should send out of date\", () => {\n expect(listener.onOutOfDate).toHaveBeenCalledTimes(1);\n });\n });\n });\n it(\"should not send onOutOfDate for first call\", () => {\n expect(MockedWebSocket).not.toHaveBeenCalled();\n expect(listener.onOutOfDate).not.toHaveBeenCalled();\n expect(listener.onChange).not.toHaveBeenCalled();\n expect(listener.onError).not.toHaveBeenCalled();\n });\n });\n });\n });\n});\nfunction respondSuccessToSubscribe(ws, subReq2) {\n sendToClient(ws, conjureUnionType(\"subscribeResponses\", {\n id: subReq2.id,\n responses: subReq2.requests.map((_, i) => conjureUnionType(\"success\", { id: `id-${i}` })),\n }));\n}\nfunction expectEqualRemoveAndAddListeners(ws) {\n expect(ws.removeEventListener).toHaveBeenCalledTimes(ws.addEventListener.mock.calls.length);\n}\nasync function expectSingleSubscribeMessage(ws) {\n return SubscribeMessage.parse(await consumeSingleSend(ws));\n}\nasync function subscribeAndExpectWebSocket(client, listener) {\n const [ws, unsubscribe] = await Promise.all([\n expectWebSocketConstructed(),\n client.subscribe({\n type: \"base\",\n objectType: Employee.apiName,\n }, listener),\n ]);\n // otherwise the ObjectSetListenerWebSocket is sitting waiting for it to \"connect\"\n setWebSocketState(ws, \"open\");\n return [ws, unsubscribe];\n}\nasync function expectWebSocketConstructed() {\n expect(MockedWebSocket).toHaveBeenCalledTimes(0);\n const ws = await vi.waitFor(() => {\n expect(MockedWebSocket).toHaveBeenCalled();\n expect(MockedWebSocket.mock.results[0].type === \"return\");\n return MockedWebSocket.mock.results[0].value;\n });\n expect(MockedWebSocket).toHaveBeenCalledTimes(1);\n MockedWebSocket.mockClear();\n expect(MockedWebSocket).toHaveBeenCalledTimes(0);\n return ws;\n}\nasync function consumeSingleSend(ws) {\n return await vi.waitFor(() => {\n expect(ws.send).toBeCalledTimes(1);\n const result = JSON.parse(ws.send.mock.lastCall[0].toString());\n ws.send.mockClear();\n return result;\n });\n}\nfunction createMockWebSocketConstructor(OriginalWebSocket, logger) {\n let i = 0;\n const ret = vi.fn(function (..._args) {\n const webSocketInst = i++;\n logger.debug(\"WebSocket constructor called\");\n const eventEmitter = new EventTarget();\n return {\n addEventListener: vi.fn(eventEmitter.addEventListener.bind(eventEmitter)),\n removeEventListener: vi.fn(eventEmitter.removeEventListener.bind(eventEmitter)),\n send: vi.fn((a, _b) => {\n logger.debug({ message: JSON.parse(a.toString()), webSocketInst }, \"send() called\");\n }),\n close: vi.fn(),\n _eventEmitter: eventEmitter,\n readyState: OriginalWebSocket.CONNECTING,\n };\n // ^ we only implement some things but the type system wants to think its the full deal,\n // thus the satisfies plus the cast\n });\n Object.assign(ret, {\n OPEN: OriginalWebSocket.OPEN,\n CLOSED: OriginalWebSocket.CLOSED,\n CLOSING: OriginalWebSocket.CLOSING,\n CONNECTING: OriginalWebSocket.CONNECTING,\n });\n return ret;\n}\nfunction setWebSocketState(ws, readyState) {\n const newState = readyState === \"open\"\n ? ImportedWebSocket.OPEN\n : ImportedWebSocket.CLOSED;\n if (newState === ws.readyState)\n return;\n ws.readyState = newState;\n ws._eventEmitter.dispatchEvent(new Event(readyState, {}));\n}\nfunction addLoggerToApiServer(logger) {\n const z = (name, { requestId, request }) => logger.trace({ requestId, url: request.url }, name);\n const eventNames = [\n \"request:start\",\n \"request:match\",\n \"request:end\",\n \"request:unhandled\",\n \"response:bypass\",\n \"response:mocked\",\n ];\n for (const c of eventNames) {\n apiServer.events.on(c, z.bind(undefined, c));\n }\n}\nconst SubscribeMessage = z.object({\n id: z.string(),\n requests: z.array(z.object({\n objectSet: z.string(),\n objectSetContext: z.any(),\n watchAllLinks: z.boolean(),\n })),\n});\nclass MessageEvent extends Event {\n data;\n constructor(data) {\n super(\"message\");\n this.data = JSON.stringify(data);\n }\n}\nfunction sendToClient(ws, t) {\n ws._eventEmitter.dispatchEvent(new MessageEvent(t));\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2024 Palantir Technologies, Inc. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Helper function that creates the shape of a conjure union in fewer bytes than manually declaring it (when compressed)
|
|
18
|
+
*
|
|
19
|
+
* e.g `{type:"base",base:{foo:5}}` becomes `a("base",{foo:5})`
|
|
20
|
+
*/
|
|
21
|
+
export function conjureUnionType(type, value) {
|
|
22
|
+
return {
|
|
23
|
+
type,
|
|
24
|
+
[type]: value
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=conjureUnionType.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conjureUnionType.js","names":["conjureUnionType","type","value"],"sources":["conjureUnionType.js"],"sourcesContent":["/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Helper function that creates the shape of a conjure union in fewer bytes than manually declaring it (when compressed)\n *\n * e.g `{type:\"base\",base:{foo:5}}` becomes `a(\"base\",{foo:5})`\n */\nexport function conjureUnionType(type, value) {\n return {\n type,\n [type]: value,\n };\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,gBAAgBA,CAACC,IAAI,EAAEC,KAAK,EAAE;EAC1C,OAAO;IACHD,IAAI;IACJ,CAACA,IAAI,GAAGC;EACZ,CAAC;AACL","ignoreList":[]}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2023 Palantir Technologies, Inc. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { __EXPERIMENTAL__NOT_SUPPORTED_YET_subscribe } from "@osdk/api/unstable";
|
|
17
|
+
import { modernToLegacyWhereClause } from "../internal/conversions/modernToLegacyWhereClause.js";
|
|
18
|
+
import { aggregate } from "../object/aggregate.js";
|
|
19
|
+
import { fetchPageInternal, fetchPageWithErrorsInternal } from "../object/fetchPage.js";
|
|
20
|
+
import { fetchSingle, fetchSingleWithErrors } from "../object/fetchSingle.js";
|
|
21
|
+
import { augmentRequestContext } from "../util/augmentRequestContext.js";
|
|
22
|
+
import { isWireObjectSet } from "../util/WireObjectSet.js";
|
|
23
|
+
import { ObjectSetListenerWebsocket } from "./ObjectSetListenerWebsocket.js";
|
|
24
|
+
function isObjectTypeDefinition(def) {
|
|
25
|
+
return def.type === "object";
|
|
26
|
+
}
|
|
27
|
+
/* @internal */
|
|
28
|
+
export function isObjectSet(o) {
|
|
29
|
+
return o != null && typeof o === "object" && isWireObjectSet(objectSetDefinitions.get(o));
|
|
30
|
+
}
|
|
31
|
+
/** @internal */
|
|
32
|
+
export function getWireObjectSet(objectSet) {
|
|
33
|
+
return objectSetDefinitions.get(objectSet);
|
|
34
|
+
}
|
|
35
|
+
const objectSetDefinitions = new WeakMap();
|
|
36
|
+
/** @internal */
|
|
37
|
+
export function createObjectSet(objectType, clientCtx, objectSet = {
|
|
38
|
+
type: "base",
|
|
39
|
+
objectType: objectType["apiName"]
|
|
40
|
+
}) {
|
|
41
|
+
const base = {
|
|
42
|
+
aggregate: aggregate.bind(globalThis, augmentRequestContext(clientCtx, () => ({
|
|
43
|
+
finalMethodCall: "aggregate"
|
|
44
|
+
})), objectType, objectSet),
|
|
45
|
+
fetchPage: fetchPageInternal.bind(globalThis, augmentRequestContext(clientCtx, () => ({
|
|
46
|
+
finalMethodCall: "fetchPage"
|
|
47
|
+
})), objectType, objectSet),
|
|
48
|
+
fetchPageWithErrors: fetchPageWithErrorsInternal.bind(globalThis, augmentRequestContext(clientCtx, () => ({
|
|
49
|
+
finalMethodCall: "fetchPageWithErrors"
|
|
50
|
+
})), objectType, objectSet),
|
|
51
|
+
where: clause => {
|
|
52
|
+
return clientCtx.objectSetFactory(objectType, clientCtx, {
|
|
53
|
+
type: "filter",
|
|
54
|
+
objectSet: objectSet,
|
|
55
|
+
where: modernToLegacyWhereClause(clause)
|
|
56
|
+
});
|
|
57
|
+
},
|
|
58
|
+
pivotTo: function (type) {
|
|
59
|
+
return createSearchAround(type)();
|
|
60
|
+
},
|
|
61
|
+
union: (...objectSets) => {
|
|
62
|
+
return clientCtx.objectSetFactory(objectType, clientCtx, {
|
|
63
|
+
type: "union",
|
|
64
|
+
objectSets: [objectSet, ...objectSets.map(os => objectSetDefinitions.get(os))]
|
|
65
|
+
});
|
|
66
|
+
},
|
|
67
|
+
intersect: (...objectSets) => {
|
|
68
|
+
return clientCtx.objectSetFactory(objectType, clientCtx, {
|
|
69
|
+
type: "intersect",
|
|
70
|
+
objectSets: [objectSet, ...objectSets.map(os => objectSetDefinitions.get(os))]
|
|
71
|
+
});
|
|
72
|
+
},
|
|
73
|
+
subtract: (...objectSets) => {
|
|
74
|
+
return clientCtx.objectSetFactory(objectType, clientCtx, {
|
|
75
|
+
type: "subtract",
|
|
76
|
+
objectSets: [objectSet, ...objectSets.map(os => objectSetDefinitions.get(os))]
|
|
77
|
+
});
|
|
78
|
+
},
|
|
79
|
+
asyncIter: async function* (args) {
|
|
80
|
+
let $nextPageToken = undefined;
|
|
81
|
+
do {
|
|
82
|
+
const result = await fetchPageInternal(augmentRequestContext(clientCtx, () => ({
|
|
83
|
+
finalMethodCall: "asyncIter"
|
|
84
|
+
})), objectType, objectSet, {
|
|
85
|
+
...args,
|
|
86
|
+
$nextPageToken
|
|
87
|
+
});
|
|
88
|
+
$nextPageToken = result.nextPageToken;
|
|
89
|
+
for (const obj of result.data) {
|
|
90
|
+
yield obj;
|
|
91
|
+
}
|
|
92
|
+
} while ($nextPageToken != null);
|
|
93
|
+
},
|
|
94
|
+
fetchOne: isObjectTypeDefinition(objectType) ? async (primaryKey, options) => {
|
|
95
|
+
return await fetchSingle(augmentRequestContext(clientCtx, () => ({
|
|
96
|
+
finalMethodCall: "fetchOne"
|
|
97
|
+
})), objectType, options, await createWithPk(clientCtx, objectType, objectSet, primaryKey));
|
|
98
|
+
} : undefined,
|
|
99
|
+
fetchOneWithErrors: isObjectTypeDefinition(objectType) ? async (primaryKey, options) => {
|
|
100
|
+
return await fetchSingleWithErrors(augmentRequestContext(clientCtx, () => ({
|
|
101
|
+
finalMethodCall: "fetchOneWithErrors"
|
|
102
|
+
})), objectType, options, await createWithPk(clientCtx, objectType, objectSet, primaryKey));
|
|
103
|
+
} : undefined,
|
|
104
|
+
[__EXPERIMENTAL__NOT_SUPPORTED_YET_subscribe]: listener => {
|
|
105
|
+
const pendingSubscribe = ObjectSetListenerWebsocket.getInstance(clientCtx).subscribe(objectSet, listener);
|
|
106
|
+
return async () => (await pendingSubscribe)();
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
function createSearchAround(link) {
|
|
110
|
+
return () => {
|
|
111
|
+
return clientCtx.objectSetFactory(objectType, clientCtx, {
|
|
112
|
+
type: "searchAround",
|
|
113
|
+
objectSet,
|
|
114
|
+
link
|
|
115
|
+
});
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
objectSetDefinitions.set(base, objectSet);
|
|
119
|
+
// we are using a type assertion because the marker symbol defined in BaseObjectSet isn't actually used
|
|
120
|
+
// at runtime.
|
|
121
|
+
return base;
|
|
122
|
+
}
|
|
123
|
+
async function createWithPk(clientCtx, objectType, objectSet, primaryKey) {
|
|
124
|
+
const objDef = await clientCtx.ontologyProvider.getObjectDefinition(objectType.apiName);
|
|
125
|
+
const withPk = {
|
|
126
|
+
type: "filter",
|
|
127
|
+
objectSet: objectSet,
|
|
128
|
+
where: {
|
|
129
|
+
type: "eq",
|
|
130
|
+
field: objDef.primaryKeyApiName,
|
|
131
|
+
value: primaryKey
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
return withPk;
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=createObjectSet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createObjectSet.js","names":["__EXPERIMENTAL__NOT_SUPPORTED_YET_subscribe","modernToLegacyWhereClause","aggregate","fetchPageInternal","fetchPageWithErrorsInternal","fetchSingle","fetchSingleWithErrors","augmentRequestContext","isWireObjectSet","ObjectSetListenerWebsocket","isObjectTypeDefinition","def","type","isObjectSet","o","objectSetDefinitions","get","getWireObjectSet","objectSet","WeakMap","createObjectSet","objectType","clientCtx","base","bind","globalThis","finalMethodCall","fetchPage","fetchPageWithErrors","where","clause","objectSetFactory","pivotTo","createSearchAround","union","objectSets","map","os","intersect","subtract","asyncIter","args","$nextPageToken","undefined","result","nextPageToken","obj","data","fetchOne","primaryKey","options","createWithPk","fetchOneWithErrors","listener","pendingSubscribe","getInstance","subscribe","link","set","objDef","ontologyProvider","getObjectDefinition","apiName","withPk","field","primaryKeyApiName","value"],"sources":["createObjectSet.js"],"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 */\nimport { __EXPERIMENTAL__NOT_SUPPORTED_YET_subscribe } from \"@osdk/api/unstable\";\nimport { modernToLegacyWhereClause } from \"../internal/conversions/modernToLegacyWhereClause.js\";\nimport { aggregate } from \"../object/aggregate.js\";\nimport { fetchPageInternal, fetchPageWithErrorsInternal, } from \"../object/fetchPage.js\";\nimport { fetchSingle, fetchSingleWithErrors } from \"../object/fetchSingle.js\";\nimport { augmentRequestContext } from \"../util/augmentRequestContext.js\";\nimport { isWireObjectSet } from \"../util/WireObjectSet.js\";\nimport { ObjectSetListenerWebsocket } from \"./ObjectSetListenerWebsocket.js\";\nfunction isObjectTypeDefinition(def) {\n return def.type === \"object\";\n}\n/* @internal */\nexport function isObjectSet(o) {\n return o != null && typeof o === \"object\"\n && isWireObjectSet(objectSetDefinitions.get(o));\n}\n/** @internal */\nexport function getWireObjectSet(objectSet) {\n return objectSetDefinitions.get(objectSet);\n}\nconst objectSetDefinitions = new WeakMap();\n/** @internal */\nexport function createObjectSet(objectType, clientCtx, objectSet = {\n type: \"base\",\n objectType: objectType[\"apiName\"],\n}) {\n const base = {\n aggregate: (aggregate).bind(globalThis, augmentRequestContext(clientCtx, _ => ({ finalMethodCall: \"aggregate\" })), objectType, objectSet),\n fetchPage: fetchPageInternal.bind(globalThis, augmentRequestContext(clientCtx, _ => ({ finalMethodCall: \"fetchPage\" })), objectType, objectSet),\n fetchPageWithErrors: fetchPageWithErrorsInternal.bind(globalThis, augmentRequestContext(clientCtx, _ => ({ finalMethodCall: \"fetchPageWithErrors\" })), objectType, objectSet),\n where: (clause) => {\n return clientCtx.objectSetFactory(objectType, clientCtx, {\n type: \"filter\",\n objectSet: objectSet,\n where: modernToLegacyWhereClause(clause),\n });\n },\n pivotTo: function (type) {\n return createSearchAround(type)();\n },\n union: (...objectSets) => {\n return clientCtx.objectSetFactory(objectType, clientCtx, {\n type: \"union\",\n objectSets: [\n objectSet,\n ...objectSets.map(os => objectSetDefinitions.get(os)),\n ],\n });\n },\n intersect: (...objectSets) => {\n return clientCtx.objectSetFactory(objectType, clientCtx, {\n type: \"intersect\",\n objectSets: [\n objectSet,\n ...objectSets.map(os => objectSetDefinitions.get(os)),\n ],\n });\n },\n subtract: (...objectSets) => {\n return clientCtx.objectSetFactory(objectType, clientCtx, {\n type: \"subtract\",\n objectSets: [\n objectSet,\n ...objectSets.map(os => objectSetDefinitions.get(os)),\n ],\n });\n },\n asyncIter: async function* (args) {\n let $nextPageToken = undefined;\n do {\n const result = await fetchPageInternal(augmentRequestContext(clientCtx, _ => ({ finalMethodCall: \"asyncIter\" })), objectType, objectSet, { ...args, $nextPageToken });\n $nextPageToken = result.nextPageToken;\n for (const obj of result.data) {\n yield obj;\n }\n } while ($nextPageToken != null);\n },\n fetchOne: (isObjectTypeDefinition(objectType)\n ? async (primaryKey, options) => {\n return await fetchSingle(augmentRequestContext(clientCtx, _ => ({ finalMethodCall: \"fetchOne\" })), objectType, options, await createWithPk(clientCtx, objectType, objectSet, primaryKey));\n }\n : undefined),\n fetchOneWithErrors: (isObjectTypeDefinition(objectType)\n ? async (primaryKey, options) => {\n return await fetchSingleWithErrors(augmentRequestContext(clientCtx, _ => ({ finalMethodCall: \"fetchOneWithErrors\" })), objectType, options, await createWithPk(clientCtx, objectType, objectSet, primaryKey));\n }\n : undefined),\n [__EXPERIMENTAL__NOT_SUPPORTED_YET_subscribe]: (listener) => {\n const pendingSubscribe = ObjectSetListenerWebsocket.getInstance(clientCtx).subscribe(objectSet, listener);\n return async () => (await pendingSubscribe)();\n },\n };\n function createSearchAround(link) {\n return () => {\n return clientCtx.objectSetFactory(objectType, clientCtx, {\n type: \"searchAround\",\n objectSet,\n link,\n });\n };\n }\n objectSetDefinitions.set(base, objectSet);\n // we are using a type assertion because the marker symbol defined in BaseObjectSet isn't actually used\n // at runtime.\n return base;\n}\nasync function createWithPk(clientCtx, objectType, objectSet, primaryKey) {\n const objDef = await clientCtx.ontologyProvider.getObjectDefinition(objectType.apiName);\n const withPk = {\n type: \"filter\",\n objectSet: objectSet,\n where: {\n type: \"eq\",\n field: objDef.primaryKeyApiName,\n value: primaryKey,\n },\n };\n return withPk;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,2CAA2C,QAAQ,oBAAoB;AAChF,SAASC,yBAAyB,QAAQ,sDAAsD;AAChG,SAASC,SAAS,QAAQ,wBAAwB;AAClD,SAASC,iBAAiB,EAAEC,2BAA2B,QAAS,wBAAwB;AACxF,SAASC,WAAW,EAAEC,qBAAqB,QAAQ,0BAA0B;AAC7E,SAASC,qBAAqB,QAAQ,kCAAkC;AACxE,SAASC,eAAe,QAAQ,0BAA0B;AAC1D,SAASC,0BAA0B,QAAQ,iCAAiC;AAC5E,SAASC,sBAAsBA,CAACC,GAAG,EAAE;EACjC,OAAOA,GAAG,CAACC,IAAI,KAAK,QAAQ;AAChC;AACA;AACA,OAAO,SAASC,WAAWA,CAACC,CAAC,EAAE;EAC3B,OAAOA,CAAC,IAAI,IAAI,IAAI,OAAOA,CAAC,KAAK,QAAQ,IAClCN,eAAe,CAACO,oBAAoB,CAACC,GAAG,CAACF,CAAC,CAAC,CAAC;AACvD;AACA;AACA,OAAO,SAASG,gBAAgBA,CAACC,SAAS,EAAE;EACxC,OAAOH,oBAAoB,CAACC,GAAG,CAACE,SAAS,CAAC;AAC9C;AACA,MAAMH,oBAAoB,GAAG,IAAII,OAAO,CAAC,CAAC;AAC1C;AACA,OAAO,SAASC,eAAeA,CAACC,UAAU,EAAEC,SAAS,EAAEJ,SAAS,GAAG;EAC/DN,IAAI,EAAE,MAAM;EACZS,UAAU,EAAEA,UAAU,CAAC,SAAS;AACpC,CAAC,EAAE;EACC,MAAME,IAAI,GAAG;IACTrB,SAAS,EAAGA,SAAS,CAAEsB,IAAI,CAACC,UAAU,EAAElB,qBAAqB,CAACe,SAAS,EAAE,OAAM;MAAEI,eAAe,EAAE;IAAY,CAAC,CAAC,CAAC,EAAEL,UAAU,EAAEH,SAAS,CAAC;IACzIS,SAAS,EAAExB,iBAAiB,CAACqB,IAAI,CAACC,UAAU,EAAElB,qBAAqB,CAACe,SAAS,EAAE,OAAM;MAAEI,eAAe,EAAE;IAAY,CAAC,CAAC,CAAC,EAAEL,UAAU,EAAEH,SAAS,CAAC;IAC/IU,mBAAmB,EAAExB,2BAA2B,CAACoB,IAAI,CAACC,UAAU,EAAElB,qBAAqB,CAACe,SAAS,EAAE,OAAM;MAAEI,eAAe,EAAE;IAAsB,CAAC,CAAC,CAAC,EAAEL,UAAU,EAAEH,SAAS,CAAC;IAC7KW,KAAK,EAAGC,MAAM,IAAK;MACf,OAAOR,SAAS,CAACS,gBAAgB,CAACV,UAAU,EAAEC,SAAS,EAAE;QACrDV,IAAI,EAAE,QAAQ;QACdM,SAAS,EAAEA,SAAS;QACpBW,KAAK,EAAE5B,yBAAyB,CAAC6B,MAAM;MAC3C,CAAC,CAAC;IACN,CAAC;IACDE,OAAO,EAAE,SAAAA,CAAUpB,IAAI,EAAE;MACrB,OAAOqB,kBAAkB,CAACrB,IAAI,CAAC,CAAC,CAAC;IACrC,CAAC;IACDsB,KAAK,EAAEA,CAAC,GAAGC,UAAU,KAAK;MACtB,OAAOb,SAAS,CAACS,gBAAgB,CAACV,UAAU,EAAEC,SAAS,EAAE;QACrDV,IAAI,EAAE,OAAO;QACbuB,UAAU,EAAE,CACRjB,SAAS,EACT,GAAGiB,UAAU,CAACC,GAAG,CAACC,EAAE,IAAItB,oBAAoB,CAACC,GAAG,CAACqB,EAAE,CAAC,CAAC;MAE7D,CAAC,CAAC;IACN,CAAC;IACDC,SAAS,EAAEA,CAAC,GAAGH,UAAU,KAAK;MAC1B,OAAOb,SAAS,CAACS,gBAAgB,CAACV,UAAU,EAAEC,SAAS,EAAE;QACrDV,IAAI,EAAE,WAAW;QACjBuB,UAAU,EAAE,CACRjB,SAAS,EACT,GAAGiB,UAAU,CAACC,GAAG,CAACC,EAAE,IAAItB,oBAAoB,CAACC,GAAG,CAACqB,EAAE,CAAC,CAAC;MAE7D,CAAC,CAAC;IACN,CAAC;IACDE,QAAQ,EAAEA,CAAC,GAAGJ,UAAU,KAAK;MACzB,OAAOb,SAAS,CAACS,gBAAgB,CAACV,UAAU,EAAEC,SAAS,EAAE;QACrDV,IAAI,EAAE,UAAU;QAChBuB,UAAU,EAAE,CACRjB,SAAS,EACT,GAAGiB,UAAU,CAACC,GAAG,CAACC,EAAE,IAAItB,oBAAoB,CAACC,GAAG,CAACqB,EAAE,CAAC,CAAC;MAE7D,CAAC,CAAC;IACN,CAAC;IACDG,SAAS,EAAE,gBAAAA,CAAiBC,IAAI,EAAE;MAC9B,IAAIC,cAAc,GAAGC,SAAS;MAC9B,GAAG;QACC,MAAMC,MAAM,GAAG,MAAMzC,iBAAiB,CAACI,qBAAqB,CAACe,SAAS,EAAE,OAAM;UAAEI,eAAe,EAAE;QAAY,CAAC,CAAC,CAAC,EAAEL,UAAU,EAAEH,SAAS,EAAE;UAAE,GAAGuB,IAAI;UAAEC;QAAe,CAAC,CAAC;QACrKA,cAAc,GAAGE,MAAM,CAACC,aAAa;QACrC,KAAK,MAAMC,GAAG,IAAIF,MAAM,CAACG,IAAI,EAAE;UAC3B,MAAMD,GAAG;QACb;MACJ,CAAC,QAAQJ,cAAc,IAAI,IAAI;IACnC,CAAC;IACDM,QAAQ,EAAGtC,sBAAsB,CAACW,UAAU,CAAC,GACvC,OAAO4B,UAAU,EAAEC,OAAO,KAAK;MAC7B,OAAO,MAAM7C,WAAW,CAACE,qBAAqB,CAACe,SAAS,EAAE,OAAM;QAAEI,eAAe,EAAE;MAAW,CAAC,CAAC,CAAC,EAAEL,UAAU,EAAE6B,OAAO,EAAE,MAAMC,YAAY,CAAC7B,SAAS,EAAED,UAAU,EAAEH,SAAS,EAAE+B,UAAU,CAAC,CAAC;IAC7L,CAAC,GACCN,SAAU;IAChBS,kBAAkB,EAAG1C,sBAAsB,CAACW,UAAU,CAAC,GACjD,OAAO4B,UAAU,EAAEC,OAAO,KAAK;MAC7B,OAAO,MAAM5C,qBAAqB,CAACC,qBAAqB,CAACe,SAAS,EAAE,OAAM;QAAEI,eAAe,EAAE;MAAqB,CAAC,CAAC,CAAC,EAAEL,UAAU,EAAE6B,OAAO,EAAE,MAAMC,YAAY,CAAC7B,SAAS,EAAED,UAAU,EAAEH,SAAS,EAAE+B,UAAU,CAAC,CAAC;IACjN,CAAC,GACCN,SAAU;IAChB,CAAC3C,2CAA2C,GAAIqD,QAAQ,IAAK;MACzD,MAAMC,gBAAgB,GAAG7C,0BAA0B,CAAC8C,WAAW,CAACjC,SAAS,CAAC,CAACkC,SAAS,CAACtC,SAAS,EAAEmC,QAAQ,CAAC;MACzG,OAAO,YAAY,CAAC,MAAMC,gBAAgB,EAAE,CAAC;IACjD;EACJ,CAAC;EACD,SAASrB,kBAAkBA,CAACwB,IAAI,EAAE;IAC9B,OAAO,MAAM;MACT,OAAOnC,SAAS,CAACS,gBAAgB,CAACV,UAAU,EAAEC,SAAS,EAAE;QACrDV,IAAI,EAAE,cAAc;QACpBM,SAAS;QACTuC;MACJ,CAAC,CAAC;IACN,CAAC;EACL;EACA1C,oBAAoB,CAAC2C,GAAG,CAACnC,IAAI,EAAEL,SAAS,CAAC;EACzC;EACA;EACA,OAAOK,IAAI;AACf;AACA,eAAe4B,YAAYA,CAAC7B,SAAS,EAAED,UAAU,EAAEH,SAAS,EAAE+B,UAAU,EAAE;EACtE,MAAMU,MAAM,GAAG,MAAMrC,SAAS,CAACsC,gBAAgB,CAACC,mBAAmB,CAACxC,UAAU,CAACyC,OAAO,CAAC;EACvF,MAAMC,MAAM,GAAG;IACXnD,IAAI,EAAE,QAAQ;IACdM,SAAS,EAAEA,SAAS;IACpBW,KAAK,EAAE;MACHjB,IAAI,EAAE,IAAI;MACVoD,KAAK,EAAEL,MAAM,CAACM,iBAAiB;MAC/BC,KAAK,EAAEjB;IACX;EACJ,CAAC;EACD,OAAOc,MAAM;AACjB","ignoreList":[]}
|