@osdk/faux 0.1.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1047 -0
- package/build/browser/BaseError.js +21 -0
- package/build/browser/BaseError.js.map +1 -0
- package/build/browser/FauxFoundry/BaseOsdkObjectType.js +2 -0
- package/build/browser/FauxFoundry/BaseOsdkObjectType.js.map +1 -0
- package/build/browser/FauxFoundry/BaseServerObject.js +30 -0
- package/build/browser/FauxFoundry/BaseServerObject.js.map +1 -0
- package/build/browser/FauxFoundry/FauxActionImpl.js +2 -0
- package/build/browser/FauxFoundry/FauxActionImpl.js.map +1 -0
- package/build/browser/FauxFoundry/FauxAttachmentStore.js +60 -0
- package/build/browser/FauxFoundry/FauxAttachmentStore.js.map +1 -0
- package/build/browser/FauxFoundry/FauxDataStore.js +470 -0
- package/build/browser/FauxFoundry/FauxDataStore.js.map +1 -0
- package/build/browser/FauxFoundry/FauxDataStore.test.js +190 -0
- package/build/browser/FauxFoundry/FauxDataStore.test.js.map +1 -0
- package/build/browser/FauxFoundry/FauxDataStoreBatch.js +125 -0
- package/build/browser/FauxFoundry/FauxDataStoreBatch.js.map +1 -0
- package/build/browser/FauxFoundry/FauxFoundry.js +87 -0
- package/build/browser/FauxFoundry/FauxFoundry.js.map +1 -0
- package/build/browser/FauxFoundry/FauxOntology.js +228 -0
- package/build/browser/FauxFoundry/FauxOntology.js.map +1 -0
- package/build/browser/FauxFoundry/FauxQueryImpl.js +2 -0
- package/build/browser/FauxFoundry/FauxQueryImpl.js.map +1 -0
- package/build/browser/FauxFoundry/ObjectLocator.js +29 -0
- package/build/browser/FauxFoundry/ObjectLocator.js.map +1 -0
- package/build/browser/FauxFoundry/filterObjects.js +122 -0
- package/build/browser/FauxFoundry/filterObjects.js.map +1 -0
- package/build/browser/FauxFoundry/filterTimeSeriesData.js +70 -0
- package/build/browser/FauxFoundry/filterTimeSeriesData.js.map +1 -0
- package/build/browser/FauxFoundry/filterTimeSeriesData.test.js +116 -0
- package/build/browser/FauxFoundry/filterTimeSeriesData.test.js.map +1 -0
- package/build/browser/FauxFoundry/getObjectsFromSet.js +217 -0
- package/build/browser/FauxFoundry/getObjectsFromSet.js.map +1 -0
- package/build/browser/FauxFoundry/typeHelpers/ActionTypeBuilder.js +64 -0
- package/build/browser/FauxFoundry/typeHelpers/ActionTypeBuilder.js.map +1 -0
- package/build/browser/FauxFoundry/typeHelpers/JustProps.js +2 -0
- package/build/browser/FauxFoundry/typeHelpers/JustProps.js.map +1 -0
- package/build/browser/FauxFoundry/typeHelpers/TH_ActionDefinition.js +2 -0
- package/build/browser/FauxFoundry/typeHelpers/TH_ActionDefinition.js.map +1 -0
- package/build/browser/FauxFoundry/typeHelpers/TH_ActionParameterV2.js +25 -0
- package/build/browser/FauxFoundry/typeHelpers/TH_ActionParameterV2.js.map +1 -0
- package/build/browser/FauxFoundry/typeHelpers/TH_ActionTypeV2.js +35 -0
- package/build/browser/FauxFoundry/typeHelpers/TH_ActionTypeV2.js.map +1 -0
- package/build/browser/FauxFoundry/typeHelpers/TH_ApplyActionRequestV2.js +2 -0
- package/build/browser/FauxFoundry/typeHelpers/TH_ApplyActionRequestV2.js.map +1 -0
- package/build/browser/FauxFoundry/typeHelpers/TH_ObjectTypeFullMetadata.js +2 -0
- package/build/browser/FauxFoundry/typeHelpers/TH_ObjectTypeFullMetadata.js.map +1 -0
- package/build/browser/FauxFoundry/typeHelpers/ToObjectTypeDefinition.js +2 -0
- package/build/browser/FauxFoundry/typeHelpers/ToObjectTypeDefinition.js.map +1 -0
- package/build/browser/FauxFoundry/typeHelpers/index.js +20 -0
- package/build/browser/FauxFoundry/typeHelpers/index.js.map +1 -0
- package/build/browser/FauxFoundry/validateAction.js +245 -0
- package/build/browser/FauxFoundry/validateAction.js.map +1 -0
- package/build/browser/defaultOntologyForConjure.js +25 -0
- package/build/browser/defaultOntologyForConjure.js.map +1 -0
- package/build/browser/defaultOntologyMetadata.js +23 -0
- package/build/browser/defaultOntologyMetadata.js.map +1 -0
- package/build/browser/errors.js +134 -0
- package/build/browser/errors.js.map +1 -0
- package/build/browser/filterObjects.js +86 -0
- package/build/browser/filterObjects.js.map +1 -0
- package/build/browser/handlers/authHandlerMiddleware.js +41 -0
- package/build/browser/handlers/authHandlerMiddleware.js.map +1 -0
- package/build/browser/handlers/createActionHandlers.js +49 -0
- package/build/browser/handlers/createActionHandlers.js.map +1 -0
- package/build/browser/handlers/createAttachmentHandlers.js +88 -0
- package/build/browser/handlers/createAttachmentHandlers.js.map +1 -0
- package/build/browser/handlers/createFauxFoundryHandlers.js +29 -0
- package/build/browser/handlers/createFauxFoundryHandlers.js.map +1 -0
- package/build/browser/handlers/createLoadObjectsHandlers.js +91 -0
- package/build/browser/handlers/createLoadObjectsHandlers.js.map +1 -0
- package/build/browser/handlers/createMediaRefHandlers.js +70 -0
- package/build/browser/handlers/createMediaRefHandlers.js.map +1 -0
- package/build/browser/handlers/createMultipassServerHandlers.js +67 -0
- package/build/browser/handlers/createMultipassServerHandlers.js.map +1 -0
- package/build/browser/handlers/createObjectSetHandlers.js +50 -0
- package/build/browser/handlers/createObjectSetHandlers.js.map +1 -0
- package/build/browser/handlers/createOntologyHandlers.js +122 -0
- package/build/browser/handlers/createOntologyHandlers.js.map +1 -0
- package/build/browser/handlers/createQueryHandlers.js +38 -0
- package/build/browser/handlers/createQueryHandlers.js.map +1 -0
- package/build/browser/handlers/createTimeseriesAndGeotimeHandlers.js +95 -0
- package/build/browser/handlers/createTimeseriesAndGeotimeHandlers.js.map +1 -0
- package/build/browser/handlers/util/getPaginationParams.js +33 -0
- package/build/browser/handlers/util/getPaginationParams.js.map +1 -0
- package/build/browser/handlers/util/handleOpenApiCall.js +85 -0
- package/build/browser/handlers/util/handleOpenApiCall.js.map +1 -0
- package/build/browser/handlers/util/loadAll.js +24 -0
- package/build/browser/handlers/util/loadAll.js.map +1 -0
- package/build/browser/handlers/util/pageThroughResponseSearchParams.js +39 -0
- package/build/browser/handlers/util/pageThroughResponseSearchParams.js.map +1 -0
- package/build/browser/handlers/util/requireParam.js +29 -0
- package/build/browser/handlers/util/requireParam.js.map +1 -0
- package/build/browser/handlers/util/requireSearchParams.js +29 -0
- package/build/browser/handlers/util/requireSearchParams.js.map +1 -0
- package/build/browser/index.js +29 -0
- package/build/browser/index.js.map +1 -0
- package/build/browser/mock/OntologiesV2/ActionTypesV2.js +21 -0
- package/build/browser/mock/OntologiesV2/ActionTypesV2.js.map +1 -0
- package/build/browser/mock/OntologiesV2/Actions.js +21 -0
- package/build/browser/mock/OntologiesV2/Actions.js.map +1 -0
- package/build/browser/mock/OntologiesV2/AttachmentPropertiesV2.js +21 -0
- package/build/browser/mock/OntologiesV2/AttachmentPropertiesV2.js.map +1 -0
- package/build/browser/mock/OntologiesV2/Attachments.js +22 -0
- package/build/browser/mock/OntologiesV2/Attachments.js.map +1 -0
- package/build/browser/mock/OntologiesV2/LinkedObjectsV2.js +21 -0
- package/build/browser/mock/OntologiesV2/LinkedObjectsV2.js.map +1 -0
- package/build/browser/mock/OntologiesV2/MediaReferenceProperties.js +22 -0
- package/build/browser/mock/OntologiesV2/MediaReferenceProperties.js.map +1 -0
- package/build/browser/mock/OntologiesV2/ObjectTypesV2.js +24 -0
- package/build/browser/mock/OntologiesV2/ObjectTypesV2.js.map +1 -0
- package/build/browser/mock/OntologiesV2/OntologiesV2.js +27 -0
- package/build/browser/mock/OntologiesV2/OntologiesV2.js.map +1 -0
- package/build/browser/mock/OntologiesV2/OntologyInterfaces.js +21 -0
- package/build/browser/mock/OntologiesV2/OntologyInterfaces.js.map +1 -0
- package/build/browser/mock/OntologiesV2/OntologyObjectSets.js +22 -0
- package/build/browser/mock/OntologiesV2/OntologyObjectSets.js.map +1 -0
- package/build/browser/mock/OntologiesV2/OntologyObjectsV2.js +21 -0
- package/build/browser/mock/OntologiesV2/OntologyObjectsV2.js.map +1 -0
- package/build/browser/mock/OntologiesV2/Queries.js +20 -0
- package/build/browser/mock/OntologiesV2/Queries.js.map +1 -0
- package/build/browser/mock/OntologiesV2/QueryTypes.js +21 -0
- package/build/browser/mock/OntologiesV2/QueryTypes.js.map +1 -0
- package/build/browser/mock/OntologiesV2/TimeSeriesPropertiesV2.js +22 -0
- package/build/browser/mock/OntologiesV2/TimeSeriesPropertiesV2.js.map +1 -0
- package/build/browser/mock/OntologiesV2/TimeSeriesValueBankProperties.js +21 -0
- package/build/browser/mock/OntologiesV2/TimeSeriesValueBankProperties.js.map +1 -0
- package/build/browser/mock/OntologiesV2/index.js +32 -0
- package/build/browser/mock/OntologiesV2/index.js.map +1 -0
- package/build/browser/mock/index.js +18 -0
- package/build/browser/mock/index.js.map +1 -0
- package/build/browser/withoutRid.js +24 -0
- package/build/browser/withoutRid.js.map +1 -0
- package/build/cjs/index.cjs +2983 -0
- package/build/cjs/index.cjs.map +1 -0
- package/build/cjs/index.d.cts +562 -0
- package/build/esm/BaseError.js +21 -0
- package/build/esm/BaseError.js.map +1 -0
- package/build/esm/FauxFoundry/BaseOsdkObjectType.js +2 -0
- package/build/esm/FauxFoundry/BaseOsdkObjectType.js.map +1 -0
- package/build/esm/FauxFoundry/BaseServerObject.js +30 -0
- package/build/esm/FauxFoundry/BaseServerObject.js.map +1 -0
- package/build/esm/FauxFoundry/FauxActionImpl.js +2 -0
- package/build/esm/FauxFoundry/FauxActionImpl.js.map +1 -0
- package/build/esm/FauxFoundry/FauxAttachmentStore.js +60 -0
- package/build/esm/FauxFoundry/FauxAttachmentStore.js.map +1 -0
- package/build/esm/FauxFoundry/FauxDataStore.js +470 -0
- package/build/esm/FauxFoundry/FauxDataStore.js.map +1 -0
- package/build/esm/FauxFoundry/FauxDataStore.test.js +190 -0
- package/build/esm/FauxFoundry/FauxDataStore.test.js.map +1 -0
- package/build/esm/FauxFoundry/FauxDataStoreBatch.js +125 -0
- package/build/esm/FauxFoundry/FauxDataStoreBatch.js.map +1 -0
- package/build/esm/FauxFoundry/FauxFoundry.js +87 -0
- package/build/esm/FauxFoundry/FauxFoundry.js.map +1 -0
- package/build/esm/FauxFoundry/FauxOntology.js +228 -0
- package/build/esm/FauxFoundry/FauxOntology.js.map +1 -0
- package/build/esm/FauxFoundry/FauxQueryImpl.js +2 -0
- package/build/esm/FauxFoundry/FauxQueryImpl.js.map +1 -0
- package/build/esm/FauxFoundry/ObjectLocator.js +29 -0
- package/build/esm/FauxFoundry/ObjectLocator.js.map +1 -0
- package/build/esm/FauxFoundry/filterObjects.js +122 -0
- package/build/esm/FauxFoundry/filterObjects.js.map +1 -0
- package/build/esm/FauxFoundry/filterTimeSeriesData.js +70 -0
- package/build/esm/FauxFoundry/filterTimeSeriesData.js.map +1 -0
- package/build/esm/FauxFoundry/filterTimeSeriesData.test.js +116 -0
- package/build/esm/FauxFoundry/filterTimeSeriesData.test.js.map +1 -0
- package/build/esm/FauxFoundry/getObjectsFromSet.js +217 -0
- package/build/esm/FauxFoundry/getObjectsFromSet.js.map +1 -0
- package/build/esm/FauxFoundry/typeHelpers/ActionTypeBuilder.js +64 -0
- package/build/esm/FauxFoundry/typeHelpers/ActionTypeBuilder.js.map +1 -0
- package/build/esm/FauxFoundry/typeHelpers/JustProps.js +2 -0
- package/build/esm/FauxFoundry/typeHelpers/JustProps.js.map +1 -0
- package/build/esm/FauxFoundry/typeHelpers/TH_ActionDefinition.js +2 -0
- package/build/esm/FauxFoundry/typeHelpers/TH_ActionDefinition.js.map +1 -0
- package/build/esm/FauxFoundry/typeHelpers/TH_ActionParameterV2.js +25 -0
- package/build/esm/FauxFoundry/typeHelpers/TH_ActionParameterV2.js.map +1 -0
- package/build/esm/FauxFoundry/typeHelpers/TH_ActionTypeV2.js +35 -0
- package/build/esm/FauxFoundry/typeHelpers/TH_ActionTypeV2.js.map +1 -0
- package/build/esm/FauxFoundry/typeHelpers/TH_ApplyActionRequestV2.js +2 -0
- package/build/esm/FauxFoundry/typeHelpers/TH_ApplyActionRequestV2.js.map +1 -0
- package/build/esm/FauxFoundry/typeHelpers/TH_ObjectTypeFullMetadata.js +2 -0
- package/build/esm/FauxFoundry/typeHelpers/TH_ObjectTypeFullMetadata.js.map +1 -0
- package/build/esm/FauxFoundry/typeHelpers/ToObjectTypeDefinition.js +2 -0
- package/build/esm/FauxFoundry/typeHelpers/ToObjectTypeDefinition.js.map +1 -0
- package/build/esm/FauxFoundry/typeHelpers/index.js +20 -0
- package/build/esm/FauxFoundry/typeHelpers/index.js.map +1 -0
- package/build/esm/FauxFoundry/validateAction.js +245 -0
- package/build/esm/FauxFoundry/validateAction.js.map +1 -0
- package/build/esm/defaultOntologyForConjure.js +25 -0
- package/build/esm/defaultOntologyForConjure.js.map +1 -0
- package/build/esm/defaultOntologyMetadata.js +23 -0
- package/build/esm/defaultOntologyMetadata.js.map +1 -0
- package/build/esm/errors.js +134 -0
- package/build/esm/errors.js.map +1 -0
- package/build/esm/filterObjects.js +86 -0
- package/build/esm/filterObjects.js.map +1 -0
- package/build/esm/handlers/authHandlerMiddleware.js +41 -0
- package/build/esm/handlers/authHandlerMiddleware.js.map +1 -0
- package/build/esm/handlers/createActionHandlers.js +49 -0
- package/build/esm/handlers/createActionHandlers.js.map +1 -0
- package/build/esm/handlers/createAttachmentHandlers.js +88 -0
- package/build/esm/handlers/createAttachmentHandlers.js.map +1 -0
- package/build/esm/handlers/createFauxFoundryHandlers.js +29 -0
- package/build/esm/handlers/createFauxFoundryHandlers.js.map +1 -0
- package/build/esm/handlers/createLoadObjectsHandlers.js +91 -0
- package/build/esm/handlers/createLoadObjectsHandlers.js.map +1 -0
- package/build/esm/handlers/createMediaRefHandlers.js +70 -0
- package/build/esm/handlers/createMediaRefHandlers.js.map +1 -0
- package/build/esm/handlers/createMultipassServerHandlers.js +67 -0
- package/build/esm/handlers/createMultipassServerHandlers.js.map +1 -0
- package/build/esm/handlers/createObjectSetHandlers.js +50 -0
- package/build/esm/handlers/createObjectSetHandlers.js.map +1 -0
- package/build/esm/handlers/createOntologyHandlers.js +122 -0
- package/build/esm/handlers/createOntologyHandlers.js.map +1 -0
- package/build/esm/handlers/createQueryHandlers.js +38 -0
- package/build/esm/handlers/createQueryHandlers.js.map +1 -0
- package/build/esm/handlers/createTimeseriesAndGeotimeHandlers.js +95 -0
- package/build/esm/handlers/createTimeseriesAndGeotimeHandlers.js.map +1 -0
- package/build/esm/handlers/util/getPaginationParams.js +33 -0
- package/build/esm/handlers/util/getPaginationParams.js.map +1 -0
- package/build/esm/handlers/util/handleOpenApiCall.js +85 -0
- package/build/esm/handlers/util/handleOpenApiCall.js.map +1 -0
- package/build/esm/handlers/util/loadAll.js +24 -0
- package/build/esm/handlers/util/loadAll.js.map +1 -0
- package/build/esm/handlers/util/pageThroughResponseSearchParams.js +39 -0
- package/build/esm/handlers/util/pageThroughResponseSearchParams.js.map +1 -0
- package/build/esm/handlers/util/requireParam.js +29 -0
- package/build/esm/handlers/util/requireParam.js.map +1 -0
- package/build/esm/handlers/util/requireSearchParams.js +29 -0
- package/build/esm/handlers/util/requireSearchParams.js.map +1 -0
- package/build/esm/index.js +29 -0
- package/build/esm/index.js.map +1 -0
- package/build/esm/mock/OntologiesV2/ActionTypesV2.js +21 -0
- package/build/esm/mock/OntologiesV2/ActionTypesV2.js.map +1 -0
- package/build/esm/mock/OntologiesV2/Actions.js +21 -0
- package/build/esm/mock/OntologiesV2/Actions.js.map +1 -0
- package/build/esm/mock/OntologiesV2/AttachmentPropertiesV2.js +21 -0
- package/build/esm/mock/OntologiesV2/AttachmentPropertiesV2.js.map +1 -0
- package/build/esm/mock/OntologiesV2/Attachments.js +22 -0
- package/build/esm/mock/OntologiesV2/Attachments.js.map +1 -0
- package/build/esm/mock/OntologiesV2/LinkedObjectsV2.js +21 -0
- package/build/esm/mock/OntologiesV2/LinkedObjectsV2.js.map +1 -0
- package/build/esm/mock/OntologiesV2/MediaReferenceProperties.js +22 -0
- package/build/esm/mock/OntologiesV2/MediaReferenceProperties.js.map +1 -0
- package/build/esm/mock/OntologiesV2/ObjectTypesV2.js +24 -0
- package/build/esm/mock/OntologiesV2/ObjectTypesV2.js.map +1 -0
- package/build/esm/mock/OntologiesV2/OntologiesV2.js +27 -0
- package/build/esm/mock/OntologiesV2/OntologiesV2.js.map +1 -0
- package/build/esm/mock/OntologiesV2/OntologyInterfaces.js +21 -0
- package/build/esm/mock/OntologiesV2/OntologyInterfaces.js.map +1 -0
- package/build/esm/mock/OntologiesV2/OntologyObjectSets.js +22 -0
- package/build/esm/mock/OntologiesV2/OntologyObjectSets.js.map +1 -0
- package/build/esm/mock/OntologiesV2/OntologyObjectsV2.js +21 -0
- package/build/esm/mock/OntologiesV2/OntologyObjectsV2.js.map +1 -0
- package/build/esm/mock/OntologiesV2/Queries.js +20 -0
- package/build/esm/mock/OntologiesV2/Queries.js.map +1 -0
- package/build/esm/mock/OntologiesV2/QueryTypes.js +21 -0
- package/build/esm/mock/OntologiesV2/QueryTypes.js.map +1 -0
- package/build/esm/mock/OntologiesV2/TimeSeriesPropertiesV2.js +22 -0
- package/build/esm/mock/OntologiesV2/TimeSeriesPropertiesV2.js.map +1 -0
- package/build/esm/mock/OntologiesV2/TimeSeriesValueBankProperties.js +21 -0
- package/build/esm/mock/OntologiesV2/TimeSeriesValueBankProperties.js.map +1 -0
- package/build/esm/mock/OntologiesV2/index.js +32 -0
- package/build/esm/mock/OntologiesV2/index.js.map +1 -0
- package/build/esm/mock/index.js +18 -0
- package/build/esm/mock/index.js.map +1 -0
- package/build/esm/withoutRid.js +24 -0
- package/build/esm/withoutRid.js.map +1 -0
- package/build/types/BaseError.d.ts +7 -0
- package/build/types/BaseError.d.ts.map +1 -0
- package/build/types/FauxFoundry/BaseOsdkObjectType.d.ts +5 -0
- package/build/types/FauxFoundry/BaseOsdkObjectType.d.ts.map +1 -0
- package/build/types/FauxFoundry/BaseServerObject.d.ts +18 -0
- package/build/types/FauxFoundry/BaseServerObject.d.ts.map +1 -0
- package/build/types/FauxFoundry/FauxActionImpl.d.ts +8 -0
- package/build/types/FauxFoundry/FauxActionImpl.d.ts.map +1 -0
- package/build/types/FauxFoundry/FauxAttachmentStore.d.ts +10 -0
- package/build/types/FauxFoundry/FauxAttachmentStore.d.ts.map +1 -0
- package/build/types/FauxFoundry/FauxDataStore.d.ts +70 -0
- package/build/types/FauxFoundry/FauxDataStore.d.ts.map +1 -0
- package/build/types/FauxFoundry/FauxDataStore.test.d.ts +1 -0
- package/build/types/FauxFoundry/FauxDataStore.test.d.ts.map +1 -0
- package/build/types/FauxFoundry/FauxDataStoreBatch.d.ts +22 -0
- package/build/types/FauxFoundry/FauxDataStoreBatch.d.ts.map +1 -0
- package/build/types/FauxFoundry/FauxFoundry.d.ts +25 -0
- package/build/types/FauxFoundry/FauxFoundry.d.ts.map +1 -0
- package/build/types/FauxFoundry/FauxOntology.d.ts +39 -0
- package/build/types/FauxFoundry/FauxOntology.d.ts.map +1 -0
- package/build/types/FauxFoundry/FauxQueryImpl.d.ts +5 -0
- package/build/types/FauxFoundry/FauxQueryImpl.d.ts.map +1 -0
- package/build/types/FauxFoundry/ObjectLocator.d.ts +11 -0
- package/build/types/FauxFoundry/ObjectLocator.d.ts.map +1 -0
- package/build/types/FauxFoundry/filterObjects.d.ts +3 -0
- package/build/types/FauxFoundry/filterObjects.d.ts.map +1 -0
- package/build/types/FauxFoundry/filterTimeSeriesData.d.ts +2 -0
- package/build/types/FauxFoundry/filterTimeSeriesData.d.ts.map +1 -0
- package/build/types/FauxFoundry/filterTimeSeriesData.test.d.ts +1 -0
- package/build/types/FauxFoundry/filterTimeSeriesData.test.d.ts.map +1 -0
- package/build/types/FauxFoundry/getObjectsFromSet.d.ts +6 -0
- package/build/types/FauxFoundry/getObjectsFromSet.d.ts.map +1 -0
- package/build/types/FauxFoundry/typeHelpers/ActionTypeBuilder.d.ts +27 -0
- package/build/types/FauxFoundry/typeHelpers/ActionTypeBuilder.d.ts.map +1 -0
- package/build/types/FauxFoundry/typeHelpers/JustProps.d.ts +4 -0
- package/build/types/FauxFoundry/typeHelpers/JustProps.d.ts.map +1 -0
- package/build/types/FauxFoundry/typeHelpers/TH_ActionDefinition.d.ts +43 -0
- package/build/types/FauxFoundry/typeHelpers/TH_ActionDefinition.d.ts.map +1 -0
- package/build/types/FauxFoundry/typeHelpers/TH_ActionParameterV2.d.ts +15 -0
- package/build/types/FauxFoundry/typeHelpers/TH_ActionParameterV2.d.ts.map +1 -0
- package/build/types/FauxFoundry/typeHelpers/TH_ActionTypeV2.d.ts +8 -0
- package/build/types/FauxFoundry/typeHelpers/TH_ActionTypeV2.d.ts.map +1 -0
- package/build/types/FauxFoundry/typeHelpers/TH_ApplyActionRequestV2.d.ts +24 -0
- package/build/types/FauxFoundry/typeHelpers/TH_ApplyActionRequestV2.d.ts.map +1 -0
- package/build/types/FauxFoundry/typeHelpers/TH_ObjectTypeFullMetadata.d.ts +18 -0
- package/build/types/FauxFoundry/typeHelpers/TH_ObjectTypeFullMetadata.d.ts.map +1 -0
- package/build/types/FauxFoundry/typeHelpers/ToObjectTypeDefinition.d.ts +12 -0
- package/build/types/FauxFoundry/typeHelpers/ToObjectTypeDefinition.d.ts.map +1 -0
- package/build/types/FauxFoundry/typeHelpers/index.d.ts +10 -0
- package/build/types/FauxFoundry/typeHelpers/index.d.ts.map +1 -0
- package/build/types/FauxFoundry/validateAction.d.ts +9 -0
- package/build/types/FauxFoundry/validateAction.d.ts.map +1 -0
- package/build/types/defaultOntologyForConjure.d.ts +7 -0
- package/build/types/defaultOntologyForConjure.d.ts.map +1 -0
- package/build/types/defaultOntologyMetadata.d.ts +2 -0
- package/build/types/defaultOntologyMetadata.d.ts.map +1 -0
- package/build/types/errors.d.ts +14 -0
- package/build/types/errors.d.ts.map +1 -0
- package/build/types/filterObjects.d.ts +8 -0
- package/build/types/filterObjects.d.ts.map +1 -0
- package/build/types/handlers/authHandlerMiddleware.d.ts +5 -0
- package/build/types/handlers/authHandlerMiddleware.d.ts.map +1 -0
- package/build/types/handlers/createActionHandlers.d.ts +3 -0
- package/build/types/handlers/createActionHandlers.d.ts.map +1 -0
- package/build/types/handlers/createAttachmentHandlers.d.ts +2 -0
- package/build/types/handlers/createAttachmentHandlers.d.ts.map +1 -0
- package/build/types/handlers/createFauxFoundryHandlers.d.ts +4 -0
- package/build/types/handlers/createFauxFoundryHandlers.d.ts.map +1 -0
- package/build/types/handlers/createLoadObjectsHandlers.d.ts +2 -0
- package/build/types/handlers/createLoadObjectsHandlers.d.ts.map +1 -0
- package/build/types/handlers/createMediaRefHandlers.d.ts +2 -0
- package/build/types/handlers/createMediaRefHandlers.d.ts.map +1 -0
- package/build/types/handlers/createMultipassServerHandlers.d.ts +2 -0
- package/build/types/handlers/createMultipassServerHandlers.d.ts.map +1 -0
- package/build/types/handlers/createObjectSetHandlers.d.ts +3 -0
- package/build/types/handlers/createObjectSetHandlers.d.ts.map +1 -0
- package/build/types/handlers/createOntologyHandlers.d.ts +4 -0
- package/build/types/handlers/createOntologyHandlers.d.ts.map +1 -0
- package/build/types/handlers/createQueryHandlers.d.ts +2 -0
- package/build/types/handlers/createQueryHandlers.d.ts.map +1 -0
- package/build/types/handlers/createTimeseriesAndGeotimeHandlers.d.ts +2 -0
- package/build/types/handlers/createTimeseriesAndGeotimeHandlers.d.ts.map +1 -0
- package/build/types/handlers/util/getPaginationParams.d.ts +11 -0
- package/build/types/handlers/util/getPaginationParams.d.ts.map +1 -0
- package/build/types/handlers/util/handleOpenApiCall.d.ts +49 -0
- package/build/types/handlers/util/handleOpenApiCall.d.ts.map +1 -0
- package/build/types/handlers/util/loadAll.d.ts +1 -0
- package/build/types/handlers/util/loadAll.d.ts.map +1 -0
- package/build/types/handlers/util/pageThroughResponseSearchParams.d.ts +20 -0
- package/build/types/handlers/util/pageThroughResponseSearchParams.d.ts.map +1 -0
- package/build/types/handlers/util/requireParam.d.ts +8 -0
- package/build/types/handlers/util/requireParam.d.ts.map +1 -0
- package/build/types/handlers/util/requireSearchParams.d.ts +2 -0
- package/build/types/handlers/util/requireSearchParams.d.ts.map +1 -0
- package/build/types/index.d.ts +14 -0
- package/build/types/index.d.ts.map +1 -0
- package/build/types/mock/OntologiesV2/ActionTypesV2.d.ts +4 -0
- package/build/types/mock/OntologiesV2/ActionTypesV2.d.ts.map +1 -0
- package/build/types/mock/OntologiesV2/Actions.d.ts +4 -0
- package/build/types/mock/OntologiesV2/Actions.d.ts.map +1 -0
- package/build/types/mock/OntologiesV2/AttachmentPropertiesV2.d.ts +4 -0
- package/build/types/mock/OntologiesV2/AttachmentPropertiesV2.d.ts.map +1 -0
- package/build/types/mock/OntologiesV2/Attachments.d.ts +5 -0
- package/build/types/mock/OntologiesV2/Attachments.d.ts.map +1 -0
- package/build/types/mock/OntologiesV2/LinkedObjectsV2.d.ts +4 -0
- package/build/types/mock/OntologiesV2/LinkedObjectsV2.d.ts.map +1 -0
- package/build/types/mock/OntologiesV2/MediaReferenceProperties.d.ts +5 -0
- package/build/types/mock/OntologiesV2/MediaReferenceProperties.d.ts.map +1 -0
- package/build/types/mock/OntologiesV2/ObjectTypesV2.d.ts +7 -0
- package/build/types/mock/OntologiesV2/ObjectTypesV2.d.ts.map +1 -0
- package/build/types/mock/OntologiesV2/OntologiesV2.d.ts +9 -0
- package/build/types/mock/OntologiesV2/OntologiesV2.d.ts.map +1 -0
- package/build/types/mock/OntologiesV2/OntologyInterfaces.d.ts +4 -0
- package/build/types/mock/OntologiesV2/OntologyInterfaces.d.ts.map +1 -0
- package/build/types/mock/OntologiesV2/OntologyObjectSets.d.ts +5 -0
- package/build/types/mock/OntologiesV2/OntologyObjectSets.d.ts.map +1 -0
- package/build/types/mock/OntologiesV2/OntologyObjectsV2.d.ts +4 -0
- package/build/types/mock/OntologiesV2/OntologyObjectsV2.d.ts.map +1 -0
- package/build/types/mock/OntologiesV2/Queries.d.ts +3 -0
- package/build/types/mock/OntologiesV2/Queries.d.ts.map +1 -0
- package/build/types/mock/OntologiesV2/QueryTypes.d.ts +4 -0
- package/build/types/mock/OntologiesV2/QueryTypes.d.ts.map +1 -0
- package/build/types/mock/OntologiesV2/TimeSeriesPropertiesV2.d.ts +5 -0
- package/build/types/mock/OntologiesV2/TimeSeriesPropertiesV2.d.ts.map +1 -0
- package/build/types/mock/OntologiesV2/TimeSeriesValueBankProperties.d.ts +4 -0
- package/build/types/mock/OntologiesV2/TimeSeriesValueBankProperties.d.ts.map +1 -0
- package/build/types/mock/OntologiesV2/index.d.ts +15 -0
- package/build/types/mock/OntologiesV2/index.d.ts.map +1 -0
- package/build/types/mock/index.d.ts +1 -0
- package/build/types/mock/index.d.ts.map +1 -0
- package/build/types/withoutRid.d.ts +3 -0
- package/build/types/withoutRid.d.ts.map +1 -0
- package/package.json +88 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FauxDataStore.js","names":["DefaultMap","MultiMap","randomUUID","crypto","invariant","InvalidRequest","ObjectNotFoundError","subSelectProperties","getPaginationParamsFromRequest","OpenApiCallError","pageThroughResponseSearchParams","isBaseServerObject","FauxDataStoreBatch","filterTimeSeriesData","createOrderBySortFn","getObjectsFromSet","objectLocator","parseLocator","validateAction","FauxDataStore","objects","Map","singleLinks","manyLinks","Set","fauxOntology","attachments","timeSeriesData","media","constructor","clear","ontology","assertObjectExists","#assertObjectExists","objectType","primaryKey","getObject","String","assertObjectDoesNotExist","#assertObjectDoesNotExist","errorCode","errorName","errorInstanceId","parameters","registerObject","anyObj","bso","process","env","NODE_ENV","Object","keys","some","s","startsWith","osdkCreatableToBso","apiName","__apiName","$apiName","__primaryKey","$primaryKey","others","get","set","freeze","#osdkCreatableToBso","meta","getObjectTypeFullMetadataOrThrow","realPrimaryKey","maybeTitle","titleProperty","rid","$rid","JSON","stringify","__title","undefined","__rid","replaceObjectOrThrow","x","unregisterObjectOrThrow","delete","registerLink","src","srcLinkName","dst","destLinkName","srcLocator","dstLocator","srcSide","dstSide","getBothLinkTypeSides","linkTypeRid","updateSingleLinkSide","unregisterLink","dstLinkName","removeSingleSideOfLink","registerTimeSeriesData","property","data","getObjectOrThrow","def","properties","dataType","type","getTimeSeriesData","filter","allData","#updateSingleLinkSide","cardinality","linkNameToObj","oldLocator","Error","registerMedia","content","mediaType","path","mediaItemRid","mediaRef","mimeType","reference","mediaSetViewItem","mediaSetRid","mediaSetViewRid","metaData","sizeBytes","byteLength","getMediaOrThrow","obj","propertyDef","propertyBaseType","propertyValue","ret","#removeSingleSideOfLink","locator","linkSide","expectedPriorValue","links","has","remove","object","getObjectByRid","pkToObjects","getLinksOrThrow","linkApiName","linkTypeSide","getLinkTypeSideV2","locators","Array","from","map","a","split","getLinkOrThrow","linkType","targetPrimaryKey","allLinks","l","getObjectsOfType","values","getObjectsFromObjectSet","parsedBody","selected","select","objectSet","totalCount","nextPageToken","orderBy","sort","page","excludeRid","getAttachmentMetadata","propertyName","getAttachmentMetadataByRid","getAttachmentBuffer","applyAction","actionTypeApiName","req","actionDef","getActionDef","actionImpl","getActionImpl","validation","result","batch","r","submissionCriteria","edits","options","mode","returnEdits","objectEdits","batchApplyAction","batchReq","requests","actionType","item"],"sources":["FauxDataStore.ts"],"sourcesContent":["/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { CompileTimeMetadata, ObjectTypeDefinition } from \"@osdk/api\";\nimport type {\n MediaItemRid,\n MediaReference,\n MediaType,\n} from \"@osdk/foundry.core\";\nimport type * as OntologiesV2 from \"@osdk/foundry.ontologies\";\nimport { DefaultMap, MultiMap } from \"mnemonist\";\nimport { randomUUID } from \"node:crypto\";\nimport * as crypto from \"node:crypto\";\nimport invariant from \"tiny-invariant\";\nimport type { ReadonlyDeep } from \"type-fest\";\nimport { InvalidRequest, ObjectNotFoundError } from \"../errors.js\";\nimport { subSelectProperties } from \"../filterObjects.js\";\nimport { getPaginationParamsFromRequest } from \"../handlers/util/getPaginationParams.js\";\nimport { OpenApiCallError } from \"../handlers/util/handleOpenApiCall.js\";\nimport type { PagedBodyResponseWithTotal } from \"../handlers/util/pageThroughResponseSearchParams.js\";\nimport { pageThroughResponseSearchParams } from \"../handlers/util/pageThroughResponseSearchParams.js\";\nimport {\n type BaseServerObject,\n isBaseServerObject,\n} from \"./BaseServerObject.js\";\nimport type { FauxAttachmentStore } from \"./FauxAttachmentStore.js\";\nimport { FauxDataStoreBatch } from \"./FauxDataStoreBatch.js\";\nimport type { FauxOntology } from \"./FauxOntology.js\";\nimport { filterTimeSeriesData } from \"./filterTimeSeriesData.js\";\nimport { createOrderBySortFn, getObjectsFromSet } from \"./getObjectsFromSet.js\";\nimport type { ObjectLocator } from \"./ObjectLocator.js\";\nimport { objectLocator, parseLocator } from \"./ObjectLocator.js\";\nimport type { JustProps } from \"./typeHelpers/JustProps.js\";\nimport { validateAction } from \"./validateAction.js\";\n\nexport interface MediaMetadataAndContent {\n content: ArrayBuffer;\n mediaRef: MediaReference;\n metaData: OntologiesV2.MediaMetadata;\n}\n\ntype ObjectTypeCreatableWithoutApiName<T extends ObjectTypeDefinition> =\n OrUndefinedToOptional<JustProps<T>>;\n\n/**\n * Represents the properties needed to create an object, specifically,\n * the properties of the object and the $apiName\n */\ntype ObjectTypeCreatable<T extends ObjectTypeDefinition> =\n & ObjectTypeCreatableWithoutApiName<T>\n & { $apiName: CompileTimeMetadata<T>[\"apiName\"] };\n\n/**\n * Helper type for converting `foo: string | undefined` into `foo?: string`\n */\ntype OrUndefinedToOptional<T extends object> =\n & {\n [K in keyof T as T[K] extends undefined ? K : never]?: T[K];\n }\n & {\n [K in keyof T as T[K] extends undefined ? never : K]?: T[K];\n };\n\n/**\n * Type safe object for representing \"client\" side objects.\n */\ninterface BaseObjectTypeCreatable {\n $apiName?: OntologiesV2.ObjectTypeApiName;\n\n /** if present it must match the correct value */\n $primaryKey?: string | number | boolean;\n\n /** If set, will use the as the $rid for the object, otherwise one is created for you */\n $rid?: string;\n\n /**\n * All the properties.\n *\n * FUTURE: This only handles the primitive types right now. If we want to be able to create\n * objects with some helpers for other types, this will need to be updated.\n */\n [key: string]: string | number | boolean | undefined;\n}\n\nexport class FauxDataStore {\n #objects = new DefaultMap<\n OntologiesV2.ObjectTypeApiName,\n Map<string, BaseServerObject>\n >(\n (key) => new Map(),\n );\n\n #singleLinks = new DefaultMap(\n (_objectLocator: ObjectLocator) =>\n new Map<OntologiesV2.LinkTypeApiName, ObjectLocator>(),\n );\n\n #manyLinks = new DefaultMap(\n (_objectLocator: ObjectLocator) => new MultiMap<string, ObjectLocator>(Set),\n );\n\n #fauxOntology: FauxOntology;\n\n #attachments: FauxAttachmentStore;\n\n #timeSeriesData = new DefaultMap(\n (_objectType: OntologiesV2.ObjectTypeApiName) =>\n new DefaultMap((_pk: string) =>\n new DefaultMap((_property: OntologiesV2.PropertyApiName) =>\n [] as Array<OntologiesV2.TimeSeriesPoint>\n )\n ),\n );\n\n #media = new DefaultMap(\n (_objectType: OntologiesV2.ObjectTypeApiName) =>\n new DefaultMap((_propName: OntologiesV2.PropertyApiName) => {\n return new Map<MediaItemRid, MediaMetadataAndContent>();\n }),\n );\n\n constructor(fauxOntology: FauxOntology, attachments: FauxAttachmentStore) {\n this.#fauxOntology = fauxOntology;\n this.#attachments = attachments;\n }\n\n /**\n * Removes all data that is associated with a namespace/ontology.\n *\n * Note: does not clear `attachments` nor does it clear the ontology itself.\n */\n public clear(): void {\n this.#media.clear();\n this.#timeSeriesData.clear();\n this.#manyLinks.clear();\n this.#singleLinks.clear();\n this.#objects.clear();\n }\n\n get ontology(): FauxOntology {\n return this.#fauxOntology;\n }\n\n #assertObjectExists(\n objectType: string,\n primaryKey: string | number | boolean,\n ) {\n if (!this.getObject(objectType, primaryKey)) {\n throw new OpenApiCallError(\n 404,\n ObjectNotFoundError(objectType, String(primaryKey)),\n );\n }\n }\n\n #assertObjectDoesNotExist(\n objectType: string,\n primaryKey: string | number | boolean,\n ): void {\n if (this.getObject(objectType, primaryKey)) {\n throw new OpenApiCallError(\n 500,\n {\n errorCode: \"CONFLICT\",\n errorName: \"ObjectAlreadyExists\",\n errorInstanceId: \"faux-foundry\",\n parameters: {\n objectType,\n primaryKey: String(primaryKey),\n },\n } satisfies OntologiesV2.ObjectAlreadyExists,\n );\n }\n }\n\n /**\n * Version for use in places like @osdk/client.\n *\n * @param obj An `Osdk.Instance` like object for the ObjectType in the generics\n */\n registerObject<T extends ObjectTypeDefinition>(\n objectType: T,\n obj: ObjectTypeCreatable<T> | ObjectTypeCreatableWithoutApiName<T>,\n ): void;\n /**\n * Version of register object generally used in shared.test\n * @param obj A raw server side representation of an object\n *\n * Don't use, its too easy to end up with an any.\n */\n registerObject(obj: BaseServerObject): void;\n registerObject(\n objectType: string | ObjectTypeDefinition | BaseServerObject,\n anyObj?: BaseServerObject | BaseObjectTypeCreatable,\n ): void {\n let bso: BaseServerObject;\n // obj = { ...obj }; // make a copy so we can mutate it\n\n if (isBaseServerObject(objectType)) {\n invariant(\n anyObj == null,\n \"Internal overload should only pass one argument\",\n );\n invariant(\n !Object.keys(objectType).some(s => s.startsWith(\"$\")),\n \"Object should not have any keys starting with $ if it has __apiName\",\n );\n bso = objectType;\n } else if (anyObj == null) {\n invariant(false, \"should not be possible due to overloads\");\n } else if (isBaseServerObject(anyObj)) {\n invariant(\n !Object.keys(anyObj).some(s => s.startsWith(\"$\")),\n \"Object should not have any keys starting with $ if it has __apiName\",\n );\n bso = anyObj;\n } else {\n bso = this.#osdkCreatableToBso(objectType, anyObj);\n }\n\n const apiName = bso.__apiName || bso.$apiName;\n invariant(apiName, \"Object should have an __apiName or $apiName\");\n\n this.#assertObjectDoesNotExist(apiName, bso.__primaryKey);\n\n if (!(\"__apiName\" in bso && \"__primaryKey\" in bso)) {\n invariant(\n \"$apiName\" in bso && \"$primaryKey\" in bso,\n \"Object should have (__apiName and __primaryKey) or ($apiName and $primaryKey)\",\n );\n const { $apiName, $primaryKey, ...others } = bso as\n & {\n $apiName: OntologiesV2.ObjectTypeApiName;\n $primaryKey: string | number | boolean;\n }\n & Record<\n string,\n unknown\n >;\n bso = {\n __apiName: $apiName,\n __primaryKey: $primaryKey,\n ...others,\n };\n }\n this.#assertObjectDoesNotExist(bso.__apiName, bso.__primaryKey);\n this.#objects.get(bso.__apiName).set(\n String(bso.__primaryKey),\n Object.freeze({ ...bso }),\n );\n }\n\n #osdkCreatableToBso(\n objectType: string | ObjectTypeDefinition,\n anyObj: BaseObjectTypeCreatable,\n ) {\n objectType = typeof objectType === \"string\"\n ? objectType\n : objectType.apiName;\n\n if (\"$apiName\" in anyObj) {\n invariant(anyObj.$apiName === objectType);\n }\n const { $apiName, $primaryKey, ...others } = anyObj;\n\n const meta = this.ontology.getObjectTypeFullMetadataOrThrow(\n objectType,\n );\n const realPrimaryKey = anyObj[meta.objectType.primaryKey] as\n | string\n | number\n | boolean;\n\n const maybeTitle = anyObj[meta.objectType.titleProperty];\n const rid = anyObj.$rid\n ?? `ri.phonograph2-objects.main.object.${crypto.randomUUID()}`;\n\n invariant(\n realPrimaryKey != null,\n `Object should have a primary key. ${JSON.stringify(anyObj)}`,\n );\n\n invariant(\n $primaryKey == null || $primaryKey === realPrimaryKey,\n \"Primary key mismatch\",\n );\n\n return {\n __apiName: objectType,\n __primaryKey: realPrimaryKey,\n __title: maybeTitle ? String(maybeTitle) : undefined,\n __rid: rid,\n ...others,\n };\n }\n\n replaceObjectOrThrow(x: BaseServerObject): void {\n this.#assertObjectExists(x.__apiName, x.__primaryKey);\n this.#objects.get(x.__apiName).set(String(x.__primaryKey), x);\n }\n\n /** Throws if the object does not already exist */\n unregisterObjectOrThrow(\n objectType: string,\n primaryKey: string | number | boolean,\n ): void {\n this.#assertObjectExists(objectType, primaryKey);\n this.#objects.get(objectType).delete(String(primaryKey));\n }\n\n registerLink(\n src: BaseServerObject,\n srcLinkName: string,\n dst: BaseServerObject,\n destLinkName: string,\n ): void {\n const srcLocator = objectLocator(src);\n const dstLocator = objectLocator(dst);\n const [srcSide, dstSide] = this.#fauxOntology.getBothLinkTypeSides(\n src.__apiName,\n srcLinkName,\n dst.__apiName,\n );\n\n invariant(\n srcSide.linkTypeRid === dstSide.linkTypeRid,\n `Expected both sides of the link to have the same rid, but got ${srcSide.linkTypeRid} and ${dstSide.linkTypeRid}`,\n );\n invariant(\n dstSide.apiName === destLinkName,\n `Link name mismatch on dst side. Expected ${destLinkName} but found ${dstSide.apiName}`,\n );\n\n this.#updateSingleLinkSide(\n srcSide,\n srcLocator,\n dstSide,\n dstLocator,\n );\n this.#updateSingleLinkSide(\n dstSide,\n dstLocator,\n srcSide,\n srcLocator,\n );\n }\n\n unregisterLink(\n src: BaseServerObject,\n srcLinkName: string,\n dst: BaseServerObject,\n dstLinkName: string,\n ): void {\n const srcLocator = objectLocator(src);\n const dstLocator = objectLocator(dst);\n const [srcSide, dstSide] = this.#fauxOntology.getBothLinkTypeSides(\n src.__apiName,\n srcLinkName,\n dst.__apiName,\n );\n\n invariant(\n dstSide.apiName === dstLinkName,\n `Link name mismatch on dst side. Expected ${dstLinkName} but found ${dstSide.apiName}`,\n );\n\n this.#removeSingleSideOfLink(srcLocator, srcSide, dstLocator);\n this.#removeSingleSideOfLink(dstLocator, dstSide, srcLocator);\n }\n\n registerTimeSeriesData(\n objectType: OntologiesV2.ObjectTypeApiName,\n primaryKey: string,\n property: OntologiesV2.PropertyApiName,\n data: OntologiesV2.TimeSeriesPoint[],\n ): void {\n this.getObjectOrThrow(objectType, primaryKey);\n const def = this.ontology.getObjectTypeFullMetadataOrThrow(objectType);\n invariant(\n def.objectType.properties[property].dataType.type === \"timeseries\"\n || def.objectType.properties[property].dataType.type\n === \"geotimeSeriesReference\",\n );\n this.#timeSeriesData.get(objectType).get(String(primaryKey)).set(\n property,\n data,\n );\n }\n\n getTimeSeriesData(\n objectType: OntologiesV2.ObjectTypeApiName,\n primaryKey: string,\n property: OntologiesV2.PropertyApiName,\n filter?: OntologiesV2.StreamTimeSeriesPointsRequest,\n ): OntologiesV2.TimeSeriesPoint[] {\n this.getObjectOrThrow(objectType, primaryKey);\n const allData = this.#timeSeriesData.get(objectType).get(String(primaryKey))\n .get(\n property,\n );\n if (!filter) return allData;\n return filterTimeSeriesData(allData, filter);\n }\n\n #updateSingleLinkSide(\n srcSide: OntologiesV2.LinkTypeSideV2,\n srcLocator: ObjectLocator,\n dstSide: OntologiesV2.LinkTypeSideV2,\n dstLocator: ObjectLocator,\n ) {\n const srcLinkName = srcSide.apiName;\n if (srcSide.cardinality === \"ONE\") {\n const linkNameToObj = this.#singleLinks.get(srcLocator);\n const oldLocator = linkNameToObj.get(srcLinkName);\n\n if (oldLocator && oldLocator !== dstLocator) {\n // we need to remove the other side's old value\n this.#removeSingleSideOfLink(\n oldLocator,\n dstSide,\n srcLocator,\n );\n }\n linkNameToObj.set(srcLinkName, dstLocator);\n } else if (srcSide.cardinality === \"MANY\") {\n const linkNameToObj = this.#manyLinks.get(srcLocator);\n linkNameToObj.set(srcLinkName, dstLocator);\n } else {\n // \"never\" case\n throw new Error(\"unexpected cardinality: \" + srcSide.cardinality);\n }\n }\n\n registerMedia(\n objectType: OntologiesV2.ObjectTypeApiName,\n property: OntologiesV2.PropertyApiName,\n content: ArrayBuffer,\n mediaType: MediaType,\n path: string | undefined,\n // This should be the correct prefix, per\n // https://github.com/palantir/osdk-ts/pull/1303#discussion_r2001989395\n mediaItemRid: MediaItemRid = `ri.mio.main.media-item.${randomUUID()}`,\n ): MediaReference {\n const mediaRef: ReadonlyDeep<MediaReference> = Object.freeze({\n mimeType: mediaType,\n reference: Object.freeze({\n type: \"mediaSetViewItem\",\n mediaSetViewItem: Object.freeze({\n mediaItemRid,\n mediaSetRid: \"ri.unimplemented.in.shared.test\",\n mediaSetViewRid: \"ri.unimplemented.in.shared.test\",\n }),\n }),\n });\n\n this.#media.get(objectType).get(property).set(\n mediaItemRid,\n Object.freeze({\n content,\n mediaRef,\n metaData: Object.freeze({\n mediaType,\n path,\n sizeBytes: String(content.byteLength),\n }),\n }),\n );\n\n return mediaRef;\n }\n\n getMediaOrThrow(\n objectType: OntologiesV2.ObjectTypeApiName,\n primaryKey: string,\n property: OntologiesV2.PropertyApiName,\n ): MediaMetadataAndContent {\n const obj = this.getObjectOrThrow(objectType, primaryKey);\n const propertyDef =\n this.ontology.getObjectTypeFullMetadataOrThrow(objectType)\n .objectType.properties[property];\n\n if (!propertyDef) {\n // This should be the correct error, per\n // https://github.com/palantir/osdk-ts/pull/1303#discussion_r2001968959\n throw new OpenApiCallError(\n 400,\n {\n errorCode: \"NOT_FOUND\",\n errorName: \"PropertiesNotFound\",\n errorInstanceId: \"faux-foundry\",\n parameters: {\n objectType,\n properties: [property],\n },\n } satisfies OntologiesV2.PropertiesNotFound,\n );\n }\n\n if (propertyDef.dataType.type !== \"mediaReference\") {\n // FIXME: what would the backend do here?\n throw new OpenApiCallError(\n 400,\n {\n errorCode: \"INVALID_ARGUMENT\",\n errorName: \"InvalidPropertyType\",\n errorInstanceId: \"faux-foundry\",\n parameters: {\n property,\n propertyBaseType: propertyDef.dataType.type,\n },\n } satisfies OntologiesV2.InvalidPropertyType,\n );\n }\n\n const rid = obj[property].reference.mediaSetViewItem.mediaItemRid;\n\n if (!rid || !rid.startsWith(\"ri.\")) {\n throw new OpenApiCallError(\n 400,\n {\n errorCode: \"INVALID_ARGUMENT\",\n errorName: \"InvalidPropertyValue\",\n errorInstanceId: \"faux-foundry\",\n parameters: {\n property,\n propertyBaseType: propertyDef.dataType.type,\n propertyValue: rid,\n },\n } satisfies OntologiesV2.InvalidPropertyValue,\n );\n }\n\n const ret = this.#media.get(objectType).get(property).get(rid);\n\n if (!ret) {\n throw new OpenApiCallError(400, InvalidRequest(\"Invalid parameters\"));\n }\n return ret;\n }\n\n #removeSingleSideOfLink(\n locator: ObjectLocator,\n linkSide: OntologiesV2.LinkTypeSideV2,\n expectedPriorValue: ObjectLocator,\n ) {\n const destLinkName = linkSide.apiName;\n if (linkSide.cardinality === \"ONE\") {\n const links = this.#singleLinks.get(locator);\n invariant(links.get(destLinkName) === expectedPriorValue);\n links.delete(destLinkName);\n } else {\n const links = this.#manyLinks.get(locator);\n invariant(links.get(destLinkName)?.has(expectedPriorValue));\n links.remove(destLinkName, expectedPriorValue);\n }\n }\n\n getObject(\n apiName: string,\n primaryKey: string | number | boolean,\n ): BaseServerObject | undefined {\n return this.#objects\n .get(apiName)\n .get(String(primaryKey));\n }\n\n getObjectOrThrow(\n apiName: string,\n primaryKey: string | number | boolean,\n ): BaseServerObject {\n const object = this.getObject(apiName, primaryKey);\n\n if (!object) {\n throw new OpenApiCallError(\n 404,\n ObjectNotFoundError(apiName, String(primaryKey)),\n );\n }\n return object;\n }\n\n getObjectByRid(rid: string): BaseServerObject | undefined {\n for (const [, pkToObjects] of this.#objects) {\n for (const [, obj] of pkToObjects) {\n if (obj.__rid === rid) {\n return obj;\n }\n }\n }\n }\n\n getLinksOrThrow(\n apiName: string,\n primaryKey: string | number | boolean,\n linkApiName: string,\n ): BaseServerObject[] {\n const object = this.getObjectOrThrow(apiName, primaryKey);\n\n const linkTypeSide = this.#fauxOntology.getLinkTypeSideV2(\n apiName,\n linkApiName,\n );\n\n if (linkTypeSide.cardinality === \"ONE\") {\n const locator = this.#singleLinks\n .get(objectLocator(object))\n .get(linkApiName);\n if (locator === undefined) {\n return [];\n }\n const { objectType, primaryKey } = parseLocator(locator);\n\n return [this.getObjectOrThrow(objectType, primaryKey)]; // will throw if not found\n } else {\n const locators = this.#manyLinks\n .get(objectLocator(object))\n .get(linkApiName);\n\n return Array.from(locators ?? [])\n .map((a) => {\n const [objectType, primaryKey] = a.split(\":\") ?? [];\n invariant(objectType && primaryKey, \"Invalid locator format\");\n return this.getObjectOrThrow(objectType, primaryKey);\n });\n }\n }\n\n getLinkOrThrow(\n objectType: string,\n primaryKey: string | number | boolean,\n linkType: string,\n targetPrimaryKey: string | number | boolean,\n ): BaseServerObject {\n const allLinks = this.getLinksOrThrow(objectType, primaryKey, linkType);\n const object =\n allLinks.filter(l => String(l.__primaryKey) === targetPrimaryKey)[0];\n\n if (!object) {\n throw new OpenApiCallError(\n 404,\n ObjectNotFoundError(\n `${objectType} -> ${linkType}`,\n String(targetPrimaryKey),\n ),\n );\n }\n return object;\n }\n\n getObjectsOfType(apiName: string): Iterable<BaseServerObject> {\n return this.#objects\n .get(apiName)\n .values();\n }\n\n getObjectsFromObjectSet(\n parsedBody:\n | OntologiesV2.LoadObjectSetV2MultipleObjectTypesRequest\n | OntologiesV2.LoadObjectSetRequestV2,\n ): PagedBodyResponseWithTotal<BaseServerObject> {\n const selected = parsedBody.select;\n // when we have interfaces in here, we have a little trick for\n // caching off the important properties\n let objects = getObjectsFromSet(this, parsedBody.objectSet, undefined);\n\n if (!objects) {\n return {\n data: [],\n totalCount: \"0\",\n nextPageToken: undefined,\n };\n }\n\n if (parsedBody.orderBy) {\n objects = objects.sort(createOrderBySortFn(parsedBody.orderBy));\n }\n\n // finally, if we got interfaces, the objects have names like the interface and we need\n // to return them like the object.\n\n const page = pageThroughResponseSearchParams(\n objects,\n getPaginationParamsFromRequest(parsedBody),\n false,\n );\n\n if (!page) {\n throw new OpenApiCallError(\n 404,\n InvalidRequest(\n `No objects found for ${JSON.stringify(parsedBody)}`,\n ),\n );\n }\n const ret = subSelectProperties(\n page,\n [...selected],\n true,\n parsedBody.excludeRid,\n );\n\n return ret;\n }\n\n getAttachmentMetadata(\n objectType: string,\n primaryKey: string | number | boolean,\n propertyName: string,\n ): OntologiesV2.AttachmentV2 {\n const rid = this.getObjectOrThrow(objectType, primaryKey)[propertyName];\n return this.#attachments.getAttachmentMetadataByRid(rid);\n }\n\n getAttachmentBuffer(\n objectType: string,\n primaryKey: string | number | boolean,\n propertyName: string,\n ): ArrayBuffer {\n const rid = this.getObjectOrThrow(objectType, primaryKey)[propertyName];\n return this.#attachments.getAttachmentBuffer(rid);\n }\n\n applyAction(\n actionTypeApiName: string,\n req: OntologiesV2.ApplyActionRequestV2,\n ): OntologiesV2.SyncApplyActionResponseV2 {\n const actionDef = this.#fauxOntology.getActionDef(actionTypeApiName);\n const actionImpl = this.#fauxOntology.getActionImpl(actionTypeApiName);\n\n const validation = validateAction(req, actionDef, this);\n if (validation.result === \"INVALID\") {\n return { validation };\n }\n\n const batch = new FauxDataStoreBatch(this);\n const r = actionImpl(batch, req, {\n def: actionDef,\n attachments: this.#attachments,\n });\n\n // The legacy actions return the full payload\n // they want to return, so we need to do that\n // but the future is for the actionImpl's to\n // return void and to do validation details here\n if (r) return r;\n\n return {\n validation: {\n parameters: {},\n result: \"VALID\",\n submissionCriteria: [],\n },\n edits: req.options?.mode === \"VALIDATE_AND_EXECUTE\"\n && (\n req.options.returnEdits === \"ALL\"\n || req.options.returnEdits === \"ALL_V2_WITH_DELETIONS\"\n )\n ? {\n type: \"edits\",\n ...batch.objectEdits,\n }\n : undefined,\n };\n }\n\n batchApplyAction(\n actionTypeApiName: string,\n batchReq: OntologiesV2.BatchApplyActionRequestV2,\n ): OntologiesV2.BatchApplyActionResponseV2 {\n const actionDef = this.#fauxOntology.getActionDef(actionTypeApiName);\n const actionImpl = this.#fauxOntology.getActionImpl(actionTypeApiName);\n\n for (const req of batchReq.requests) {\n const result = validateAction(req, actionDef, this);\n if (result.result === \"INVALID\") {\n throw new OpenApiCallError(\n 500,\n {\n errorCode: \"INVALID_ARGUMENT\",\n errorName: \"ActionValidationFailed\",\n errorInstanceId: \"faux-foundry\",\n parameters: {\n actionType: actionTypeApiName,\n },\n } as OntologiesV2.ActionValidationFailed,\n );\n }\n }\n\n const batch = new FauxDataStoreBatch(this);\n\n const returnLargeScaleEdits = false;\n for (const item of batchReq.requests) {\n actionImpl(\n batch,\n {\n ...item,\n options: {\n mode: \"VALIDATE_AND_EXECUTE\",\n returnEdits: batchReq.options?.returnEdits,\n },\n },\n { def: actionDef, attachments: this.#attachments },\n );\n }\n if (batchReq.options?.returnEdits === \"NONE\") {\n return {};\n }\n\n if (returnLargeScaleEdits) {\n const editedObjectTypes = new Set<OntologiesV2.ObjectTypeApiName>();\n for (const edit of batch.objectEdits.edits) {\n if (\n edit.type === \"modifyObject\" || edit.type === \"addObject\"\n || edit.type === \"deleteObject\"\n ) {\n editedObjectTypes.add(edit.objectType);\n }\n }\n\n return {\n edits: {\n type: \"largeScaleEdits\",\n editedObjectTypes: Array.from(editedObjectTypes),\n },\n };\n }\n\n return {\n edits: {\n type: \"edits\",\n ...batch.objectEdits,\n edits: batch.objectEdits.edits.filter(x =>\n x.type !== \"deleteObject\" && x.type !== \"deleteLink\"\n ),\n },\n };\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2025 Palantir Technologies, Inc. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import { beforeEach, describe, expect, it } from "vitest";
|
|
18
|
+
import { FauxAttachmentStore } from "./FauxAttachmentStore.js";
|
|
19
|
+
import { FauxDataStore } from "./FauxDataStore.js";
|
|
20
|
+
import { FauxOntology } from "./FauxOntology.js";
|
|
21
|
+
describe(FauxDataStore, () => {
|
|
22
|
+
describe("Simple Employee ontology", () => {
|
|
23
|
+
let attachmentsStore;
|
|
24
|
+
let fauxOntology;
|
|
25
|
+
let fauxDataStore;
|
|
26
|
+
const employees = Object.fromEntries(["a", "b", "c", "d"].map(id => [id, {
|
|
27
|
+
__apiName: "Employee",
|
|
28
|
+
__primaryKey: id,
|
|
29
|
+
id
|
|
30
|
+
}]));
|
|
31
|
+
beforeEach(() => {
|
|
32
|
+
attachmentsStore = new FauxAttachmentStore();
|
|
33
|
+
fauxOntology = new FauxOntology({
|
|
34
|
+
apiName: "foo",
|
|
35
|
+
description: "foo",
|
|
36
|
+
displayName: "foo",
|
|
37
|
+
rid: "ri.foo"
|
|
38
|
+
});
|
|
39
|
+
fauxDataStore = new FauxDataStore(fauxOntology, attachmentsStore);
|
|
40
|
+
fauxOntology.registerObjectType({
|
|
41
|
+
implementsInterfaces: [],
|
|
42
|
+
implementsInterfaces2: {},
|
|
43
|
+
linkTypes: [{
|
|
44
|
+
apiName: "peeps",
|
|
45
|
+
status: "EXPERIMENTAL",
|
|
46
|
+
objectTypeApiName: "Employee",
|
|
47
|
+
cardinality: "MANY",
|
|
48
|
+
displayName: "Peeps",
|
|
49
|
+
linkTypeRid: "rid.link-type.327"
|
|
50
|
+
}, {
|
|
51
|
+
apiName: "lead",
|
|
52
|
+
status: "EXPERIMENTAL",
|
|
53
|
+
objectTypeApiName: "Employee",
|
|
54
|
+
cardinality: "ONE",
|
|
55
|
+
displayName: "Lead",
|
|
56
|
+
linkTypeRid: "rid.link-type.327"
|
|
57
|
+
}],
|
|
58
|
+
objectType: {
|
|
59
|
+
apiName: "Employee",
|
|
60
|
+
description: "Employee",
|
|
61
|
+
displayName: "Employee",
|
|
62
|
+
rid: "ri.Employee",
|
|
63
|
+
icon: {
|
|
64
|
+
color: "#000000",
|
|
65
|
+
name: "whoCares",
|
|
66
|
+
type: "blueprint"
|
|
67
|
+
},
|
|
68
|
+
pluralDisplayName: "Employees",
|
|
69
|
+
primaryKey: "id",
|
|
70
|
+
properties: {
|
|
71
|
+
id: {
|
|
72
|
+
dataType: {
|
|
73
|
+
type: "string"
|
|
74
|
+
},
|
|
75
|
+
rid: "ri.id",
|
|
76
|
+
displayName: "id",
|
|
77
|
+
description: "id"
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
status: "ACTIVE",
|
|
81
|
+
titleProperty: "id"
|
|
82
|
+
},
|
|
83
|
+
sharedPropertyTypeMapping: {}
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
const getLeadsAndPeeps = id => ({
|
|
87
|
+
lead: fauxDataStore.getLinksOrThrow("Employee", id, "lead")[0],
|
|
88
|
+
peeps: fauxDataStore.getLinksOrThrow("Employee", id, "peeps")
|
|
89
|
+
});
|
|
90
|
+
it("should work in the happy paths", () => {
|
|
91
|
+
const {
|
|
92
|
+
a,
|
|
93
|
+
b,
|
|
94
|
+
c,
|
|
95
|
+
d
|
|
96
|
+
} = employees;
|
|
97
|
+
|
|
98
|
+
// set a's lead to b
|
|
99
|
+
fauxDataStore.registerObject(a);
|
|
100
|
+
fauxDataStore.registerObject(b);
|
|
101
|
+
fauxDataStore.registerLink(a, "lead", b, "peeps");
|
|
102
|
+
expect(getLeadsAndPeeps("a")).toMatchObject({
|
|
103
|
+
lead: b,
|
|
104
|
+
peeps: []
|
|
105
|
+
});
|
|
106
|
+
expect(getLeadsAndPeeps("b")).toMatchObject({
|
|
107
|
+
lead: undefined,
|
|
108
|
+
peeps: [a]
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
// try the reverse (many to one this time)
|
|
112
|
+
fauxDataStore.registerObject(c);
|
|
113
|
+
fauxDataStore.registerObject(d);
|
|
114
|
+
// set c's lead to d
|
|
115
|
+
fauxDataStore.registerLink(d, "peeps", c, "lead");
|
|
116
|
+
expect(getLeadsAndPeeps("d")).toMatchObject({
|
|
117
|
+
lead: undefined,
|
|
118
|
+
peeps: [c]
|
|
119
|
+
});
|
|
120
|
+
expect(getLeadsAndPeeps("c")).toMatchObject({
|
|
121
|
+
lead: d,
|
|
122
|
+
peeps: []
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
// set b's lead to c
|
|
126
|
+
fauxDataStore.registerLink(c, "peeps", b, "lead");
|
|
127
|
+
expect(getLeadsAndPeeps("b")).toMatchObject({
|
|
128
|
+
lead: c,
|
|
129
|
+
peeps: [a]
|
|
130
|
+
});
|
|
131
|
+
expect(getLeadsAndPeeps("c")).toMatchObject({
|
|
132
|
+
lead: d,
|
|
133
|
+
peeps: [b]
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
// change b's lead to d
|
|
137
|
+
fauxDataStore.registerLink(d, "peeps", b, "lead");
|
|
138
|
+
expect(getLeadsAndPeeps("b")).toMatchObject({
|
|
139
|
+
lead: d,
|
|
140
|
+
peeps: [a] // b's peeps should not change
|
|
141
|
+
});
|
|
142
|
+
expect(getLeadsAndPeeps("c")).toMatchObject({
|
|
143
|
+
lead: d,
|
|
144
|
+
peeps: [] // c should no longer have b as a peep
|
|
145
|
+
});
|
|
146
|
+
expect(getLeadsAndPeeps("d")).toMatchObject({
|
|
147
|
+
lead: undefined,
|
|
148
|
+
peeps: [c, b] // d has two peeps now
|
|
149
|
+
});
|
|
150
|
+
|
|
151
|
+
// remove b's lead
|
|
152
|
+
fauxDataStore.unregisterLink(d, "peeps", b, "lead");
|
|
153
|
+
expect(getLeadsAndPeeps("b")).toMatchObject({
|
|
154
|
+
lead: undefined,
|
|
155
|
+
peeps: [a] // b's peeps should not change
|
|
156
|
+
});
|
|
157
|
+
expect(getLeadsAndPeeps("d")).toMatchObject({
|
|
158
|
+
lead: undefined,
|
|
159
|
+
peeps: [c] // d no longer leads b
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
// change b's lead to d but in the other direction
|
|
163
|
+
fauxDataStore.registerLink(b, "lead", d, "peeps");
|
|
164
|
+
expect(getLeadsAndPeeps("b")).toMatchObject({
|
|
165
|
+
lead: d,
|
|
166
|
+
peeps: [a] // b's peeps should not change
|
|
167
|
+
});
|
|
168
|
+
expect(getLeadsAndPeeps("c")).toMatchObject({
|
|
169
|
+
lead: d,
|
|
170
|
+
peeps: [] // c should no longer have b as a peep
|
|
171
|
+
});
|
|
172
|
+
expect(getLeadsAndPeeps("d")).toMatchObject({
|
|
173
|
+
lead: undefined,
|
|
174
|
+
peeps: [c, b] // d has two peeps now
|
|
175
|
+
});
|
|
176
|
+
|
|
177
|
+
// remove b's lead in the other direction
|
|
178
|
+
fauxDataStore.unregisterLink(b, "lead", d, "peeps");
|
|
179
|
+
expect(getLeadsAndPeeps("b")).toMatchObject({
|
|
180
|
+
lead: undefined,
|
|
181
|
+
peeps: [a] // b's peeps should not change
|
|
182
|
+
});
|
|
183
|
+
expect(getLeadsAndPeeps("d")).toMatchObject({
|
|
184
|
+
lead: undefined,
|
|
185
|
+
peeps: [c] // d no longer leads b
|
|
186
|
+
});
|
|
187
|
+
});
|
|
188
|
+
});
|
|
189
|
+
});
|
|
190
|
+
//# sourceMappingURL=FauxDataStore.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FauxDataStore.test.js","names":["beforeEach","describe","expect","it","FauxAttachmentStore","FauxDataStore","FauxOntology","attachmentsStore","fauxOntology","fauxDataStore","employees","Object","fromEntries","map","id","__apiName","__primaryKey","apiName","description","displayName","rid","registerObjectType","implementsInterfaces","implementsInterfaces2","linkTypes","status","objectTypeApiName","cardinality","linkTypeRid","objectType","icon","color","name","type","pluralDisplayName","primaryKey","properties","dataType","titleProperty","sharedPropertyTypeMapping","getLeadsAndPeeps","lead","getLinksOrThrow","peeps","a","b","c","d","registerObject","registerLink","toMatchObject","undefined","unregisterLink"],"sources":["FauxDataStore.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 { beforeEach, describe, expect, it } from \"vitest\";\nimport type { BaseServerObject } from \"./BaseServerObject.js\";\nimport { FauxAttachmentStore } from \"./FauxAttachmentStore.js\";\nimport { FauxDataStore } from \"./FauxDataStore.js\";\nimport { FauxOntology } from \"./FauxOntology.js\";\n\ndescribe(FauxDataStore, () => {\n describe(\"Simple Employee ontology\", () => {\n let attachmentsStore: FauxAttachmentStore;\n let fauxOntology: FauxOntology;\n let fauxDataStore: FauxDataStore;\n\n const pks = [\"a\", \"b\", \"c\", \"d\"] as const;\n const employees = Object\n .fromEntries(\n pks.map((id) =>\n [id, {\n __apiName: \"Employee\",\n __primaryKey: id,\n id,\n }] as const\n ),\n ) as unknown as Record<typeof pks[number], BaseServerObject>;\n\n beforeEach(() => {\n attachmentsStore = new FauxAttachmentStore();\n fauxOntology = new FauxOntology({\n apiName: \"foo\",\n description: \"foo\",\n displayName: \"foo\",\n rid: \"ri.foo\",\n });\n fauxDataStore = new FauxDataStore(fauxOntology, attachmentsStore);\n\n const Employee = {\n implementsInterfaces: [],\n implementsInterfaces2: {},\n linkTypes: [{\n apiName: \"peeps\",\n status: \"EXPERIMENTAL\",\n objectTypeApiName: \"Employee\",\n cardinality: \"MANY\",\n displayName: \"Peeps\",\n linkTypeRid: \"rid.link-type.327\",\n }, {\n apiName: \"lead\",\n status: \"EXPERIMENTAL\",\n objectTypeApiName: \"Employee\",\n cardinality: \"ONE\",\n displayName: \"Lead\",\n linkTypeRid: \"rid.link-type.327\",\n }],\n objectType: {\n apiName: \"Employee\",\n description: \"Employee\",\n displayName: \"Employee\",\n rid: \"ri.Employee\",\n icon: {\n color: \"#000000\",\n name: \"whoCares\",\n type: \"blueprint\",\n },\n pluralDisplayName: \"Employees\",\n primaryKey: \"id\",\n properties: {\n id: {\n dataType: { type: \"string\" },\n rid: \"ri.id\",\n displayName: \"id\",\n description: \"id\",\n },\n },\n status: \"ACTIVE\",\n titleProperty: \"id\",\n },\n sharedPropertyTypeMapping: {},\n } as const;\n\n fauxOntology.registerObjectType(Employee);\n });\n\n const getLeadsAndPeeps = (id: string) => ({\n lead: fauxDataStore.getLinksOrThrow(\"Employee\", id, \"lead\")[0],\n peeps: fauxDataStore.getLinksOrThrow(\"Employee\", id, \"peeps\"),\n });\n\n it(\"should work in the happy paths\", () => {\n const { a, b, c, d } = employees;\n\n // set a's lead to b\n fauxDataStore.registerObject(a);\n fauxDataStore.registerObject(b);\n fauxDataStore.registerLink(a, \"lead\", b, \"peeps\");\n\n expect(getLeadsAndPeeps(\"a\")).toMatchObject({\n lead: b,\n peeps: [],\n });\n expect(getLeadsAndPeeps(\"b\")).toMatchObject({\n lead: undefined,\n peeps: [a],\n });\n\n // try the reverse (many to one this time)\n fauxDataStore.registerObject(c);\n fauxDataStore.registerObject(d);\n // set c's lead to d\n fauxDataStore.registerLink(d, \"peeps\", c, \"lead\");\n\n expect(getLeadsAndPeeps(\"d\")).toMatchObject({\n lead: undefined,\n peeps: [c],\n });\n expect(getLeadsAndPeeps(\"c\")).toMatchObject({\n lead: d,\n peeps: [],\n });\n\n // set b's lead to c\n fauxDataStore.registerLink(c, \"peeps\", b, \"lead\");\n expect(getLeadsAndPeeps(\"b\")).toMatchObject({\n lead: c,\n peeps: [a],\n });\n expect(getLeadsAndPeeps(\"c\")).toMatchObject({\n lead: d,\n peeps: [b],\n });\n\n // change b's lead to d\n fauxDataStore.registerLink(d, \"peeps\", b, \"lead\");\n expect(getLeadsAndPeeps(\"b\")).toMatchObject({\n lead: d,\n peeps: [a], // b's peeps should not change\n });\n expect(getLeadsAndPeeps(\"c\")).toMatchObject({\n lead: d,\n peeps: [], // c should no longer have b as a peep\n });\n expect(getLeadsAndPeeps(\"d\")).toMatchObject({\n lead: undefined,\n peeps: [c, b], // d has two peeps now\n });\n\n // remove b's lead\n fauxDataStore.unregisterLink(d, \"peeps\", b, \"lead\");\n expect(getLeadsAndPeeps(\"b\")).toMatchObject({\n lead: undefined,\n peeps: [a], // b's peeps should not change\n });\n expect(getLeadsAndPeeps(\"d\")).toMatchObject({\n lead: undefined,\n peeps: [c], // d no longer leads b\n });\n\n // change b's lead to d but in the other direction\n fauxDataStore.registerLink(b, \"lead\", d, \"peeps\");\n expect(getLeadsAndPeeps(\"b\")).toMatchObject({\n lead: d,\n peeps: [a], // b's peeps should not change\n });\n expect(getLeadsAndPeeps(\"c\")).toMatchObject({\n lead: d,\n peeps: [], // c should no longer have b as a peep\n });\n expect(getLeadsAndPeeps(\"d\")).toMatchObject({\n lead: undefined,\n peeps: [c, b], // d has two peeps now\n });\n\n // remove b's lead in the other direction\n fauxDataStore.unregisterLink(b, \"lead\", d, \"peeps\");\n expect(getLeadsAndPeeps(\"b\")).toMatchObject({\n lead: undefined,\n peeps: [a], // b's peeps should not change\n });\n expect(getLeadsAndPeeps(\"d\")).toMatchObject({\n lead: undefined,\n peeps: [c], // d no longer leads b\n });\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,125 @@
|
|
|
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
|
+
|
|
17
|
+
import deepEqual from "fast-deep-equal";
|
|
18
|
+
import { OpenApiCallError } from "../handlers/util/handleOpenApiCall.js";
|
|
19
|
+
/**
|
|
20
|
+
* This is separate from the FauxDataStore so that we can in the future support
|
|
21
|
+
* this not-committing on errors. That functionality just does not exist at the moment
|
|
22
|
+
*/
|
|
23
|
+
export class FauxDataStoreBatch {
|
|
24
|
+
#fauxDataStore;
|
|
25
|
+
objectEdits = {
|
|
26
|
+
addedLinksCount: 0,
|
|
27
|
+
addedObjectCount: 0,
|
|
28
|
+
deletedLinksCount: 0,
|
|
29
|
+
deletedObjectsCount: 0,
|
|
30
|
+
modifiedObjectsCount: 0,
|
|
31
|
+
edits: []
|
|
32
|
+
};
|
|
33
|
+
constructor(fauxDataStore) {
|
|
34
|
+
this.#fauxDataStore = fauxDataStore;
|
|
35
|
+
}
|
|
36
|
+
getObject = (objectType, primaryKey) => {
|
|
37
|
+
return this.#fauxDataStore.getObjectOrThrow(objectType, primaryKey);
|
|
38
|
+
};
|
|
39
|
+
addObject(objectType, primaryKey, object) {
|
|
40
|
+
const existingObject = this.#fauxDataStore.getObject(objectType, primaryKey);
|
|
41
|
+
if (existingObject) {
|
|
42
|
+
throw new OpenApiCallError(500, {
|
|
43
|
+
errorCode: "CONFLICT",
|
|
44
|
+
errorName: "ObjectAlreadyExists",
|
|
45
|
+
errorInstanceId: "",
|
|
46
|
+
parameters: {
|
|
47
|
+
objectType,
|
|
48
|
+
primaryKey
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
const fullMetadata = this.#fauxDataStore.ontology.getObjectTypeFullMetadataOrThrow(objectType);
|
|
53
|
+
this.#fauxDataStore.registerObject({
|
|
54
|
+
...object,
|
|
55
|
+
__apiName: objectType,
|
|
56
|
+
__primaryKey: primaryKey,
|
|
57
|
+
[fullMetadata.objectType.primaryKey]: primaryKey
|
|
58
|
+
});
|
|
59
|
+
this.objectEdits.edits.push({
|
|
60
|
+
type: "addObject",
|
|
61
|
+
primaryKey,
|
|
62
|
+
objectType
|
|
63
|
+
});
|
|
64
|
+
this.objectEdits.addedObjectCount += 1;
|
|
65
|
+
}
|
|
66
|
+
modifyObject(objectType, primaryKey, update) {
|
|
67
|
+
const origObj = this.#fauxDataStore.getObjectOrThrow(objectType, primaryKey);
|
|
68
|
+
const newObj = {
|
|
69
|
+
...origObj,
|
|
70
|
+
...update
|
|
71
|
+
};
|
|
72
|
+
if (!deepEqual(origObj, newObj)) {
|
|
73
|
+
this.#fauxDataStore.replaceObjectOrThrow(newObj);
|
|
74
|
+
this.objectEdits.edits.push({
|
|
75
|
+
type: "modifyObject",
|
|
76
|
+
primaryKey,
|
|
77
|
+
objectType
|
|
78
|
+
});
|
|
79
|
+
this.objectEdits.modifiedObjectsCount += 1;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
deleteObject = (objectType, primaryKey) => {
|
|
83
|
+
this.#fauxDataStore.unregisterObjectOrThrow(objectType, primaryKey);
|
|
84
|
+
this.objectEdits.edits.push({
|
|
85
|
+
type: "deleteObject",
|
|
86
|
+
objectType,
|
|
87
|
+
primaryKey: primaryKey
|
|
88
|
+
});
|
|
89
|
+
};
|
|
90
|
+
addLink = (leftObjectType, leftPrimaryKey, leftLinkName, rightObjectType, rightPrimaryKey) => {
|
|
91
|
+
const [leftTypeSideV2, rightTypeSideV2] = this.#fauxDataStore.ontology.getBothLinkTypeSides(leftObjectType, leftLinkName, rightObjectType);
|
|
92
|
+
this.#fauxDataStore.registerLink({
|
|
93
|
+
__apiName: leftObjectType,
|
|
94
|
+
__primaryKey: leftPrimaryKey
|
|
95
|
+
}, leftTypeSideV2.apiName, {
|
|
96
|
+
__apiName: rightObjectType,
|
|
97
|
+
__primaryKey: rightPrimaryKey
|
|
98
|
+
}, rightTypeSideV2.apiName);
|
|
99
|
+
this.objectEdits.edits.push({
|
|
100
|
+
type: "addLink",
|
|
101
|
+
aSideObject: {
|
|
102
|
+
objectType: leftObjectType,
|
|
103
|
+
primaryKey: leftPrimaryKey
|
|
104
|
+
},
|
|
105
|
+
bSideObject: {
|
|
106
|
+
objectType: rightObjectType,
|
|
107
|
+
primaryKey: rightPrimaryKey
|
|
108
|
+
},
|
|
109
|
+
linkTypeApiNameAtoB: leftLinkName,
|
|
110
|
+
linkTypeApiNameBtoA: rightTypeSideV2.apiName
|
|
111
|
+
});
|
|
112
|
+
this.objectEdits.addedLinksCount += 1;
|
|
113
|
+
};
|
|
114
|
+
removeLink = (leftObjectType, leftPrimaryKey, leftLinkName, rightObjectType, rightPrimaryKey) => {
|
|
115
|
+
const [leftTypeSideV2, rightTypeSideV2] = this.#fauxDataStore.ontology.getBothLinkTypeSides(leftObjectType, leftLinkName, rightObjectType);
|
|
116
|
+
this.#fauxDataStore.unregisterLink({
|
|
117
|
+
__apiName: leftObjectType,
|
|
118
|
+
__primaryKey: leftPrimaryKey
|
|
119
|
+
}, leftTypeSideV2.apiName, {
|
|
120
|
+
__apiName: rightObjectType,
|
|
121
|
+
__primaryKey: rightPrimaryKey
|
|
122
|
+
}, rightTypeSideV2.apiName);
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=FauxDataStoreBatch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FauxDataStoreBatch.js","names":["deepEqual","OpenApiCallError","FauxDataStoreBatch","fauxDataStore","objectEdits","addedLinksCount","addedObjectCount","deletedLinksCount","deletedObjectsCount","modifiedObjectsCount","edits","constructor","getObject","objectType","primaryKey","getObjectOrThrow","addObject","object","existingObject","errorCode","errorName","errorInstanceId","parameters","fullMetadata","ontology","getObjectTypeFullMetadataOrThrow","registerObject","__apiName","__primaryKey","push","type","modifyObject","update","origObj","newObj","replaceObjectOrThrow","deleteObject","unregisterObjectOrThrow","addLink","leftObjectType","leftPrimaryKey","leftLinkName","rightObjectType","rightPrimaryKey","leftTypeSideV2","rightTypeSideV2","getBothLinkTypeSides","registerLink","apiName","aSideObject","bSideObject","linkTypeApiNameAtoB","linkTypeApiNameBtoA","removeLink","unregisterLink"],"sources":["FauxDataStoreBatch.ts"],"sourcesContent":["/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n CompileTimeMetadata,\n ObjectTypeDefinition,\n PrimaryKeyType,\n} from \"@osdk/api\";\nimport type * as OntologiesV2 from \"@osdk/foundry.ontologies\";\nimport deepEqual from \"fast-deep-equal\";\nimport { OpenApiCallError } from \"../handlers/util/handleOpenApiCall.js\";\nimport type { BaseServerObject } from \"./BaseServerObject.js\";\nimport type { FauxDataStore } from \"./FauxDataStore.js\";\nimport type { JustProps } from \"./typeHelpers/JustProps.js\";\n\n/**\n * This is separate from the FauxDataStore so that we can in the future support\n * this not-committing on errors. That functionality just does not exist at the moment\n */\nexport class FauxDataStoreBatch {\n #fauxDataStore: FauxDataStore;\n objectEdits: OntologiesV2.ObjectEdits = {\n addedLinksCount: 0,\n addedObjectCount: 0,\n deletedLinksCount: 0,\n deletedObjectsCount: 0,\n modifiedObjectsCount: 0,\n edits: [],\n };\n\n constructor(fauxDataStore: FauxDataStore) {\n this.#fauxDataStore = fauxDataStore;\n }\n\n getObject = (\n objectType: string,\n primaryKey: string | number | boolean,\n ): BaseServerObject => {\n return this.#fauxDataStore.getObjectOrThrow(\n objectType,\n primaryKey,\n );\n };\n\n public addObject<T extends ObjectTypeDefinition>(\n objectType: T[\"apiName\"],\n primaryKey: PrimaryKeyType<T>,\n update: Omit<JustProps<T>, CompileTimeMetadata<T>[\"primaryKeyApiName\"]>,\n ): void;\n public addObject(\n objectType: string,\n primaryKey: string | number | boolean,\n object: BaseServerObject,\n ): void;\n public addObject(\n objectType: string,\n primaryKey: string | number | boolean,\n object: BaseServerObject,\n ): void {\n const existingObject = this.#fauxDataStore.getObject(\n objectType,\n primaryKey,\n );\n if (existingObject) {\n throw new OpenApiCallError(\n 500,\n {\n errorCode: \"CONFLICT\",\n errorName: \"ObjectAlreadyExists\",\n errorInstanceId: \"\",\n parameters: {\n objectType,\n primaryKey,\n },\n } satisfies OntologiesV2.ObjectAlreadyExists,\n );\n }\n\n const fullMetadata = this.#fauxDataStore.ontology\n .getObjectTypeFullMetadataOrThrow(objectType);\n\n this.#fauxDataStore.registerObject({\n ...object,\n __apiName: objectType,\n __primaryKey: primaryKey,\n [fullMetadata.objectType.primaryKey]: primaryKey,\n });\n this.objectEdits.edits.push({\n type: \"addObject\",\n primaryKey,\n objectType,\n });\n this.objectEdits.addedObjectCount += 1;\n }\n\n public modifyObject<T extends ObjectTypeDefinition>(\n objectType: T[\"apiName\"],\n primaryKey: PrimaryKeyType<T>,\n update: Partial<JustProps<T>>,\n ): void;\n public modifyObject(\n objectType: string,\n primaryKey: string | number | boolean,\n update: Partial<BaseServerObject>,\n ): void;\n public modifyObject(\n objectType: string,\n primaryKey: string | number | boolean,\n update: Partial<BaseServerObject>,\n ): void {\n const origObj = this.#fauxDataStore.getObjectOrThrow(\n objectType,\n primaryKey,\n );\n const newObj = {\n ...origObj,\n ...update,\n };\n\n if (!deepEqual(origObj, newObj)) {\n this.#fauxDataStore.replaceObjectOrThrow(newObj);\n this.objectEdits.edits.push({\n type: \"modifyObject\",\n primaryKey,\n objectType,\n });\n this.objectEdits.modifiedObjectsCount += 1;\n }\n }\n\n deleteObject = (\n objectType: string,\n primaryKey: string | number | boolean,\n ): void => {\n this.#fauxDataStore.unregisterObjectOrThrow(objectType, primaryKey);\n this.objectEdits.edits.push({\n type: \"deleteObject\",\n objectType,\n primaryKey: primaryKey,\n });\n };\n\n addLink = (\n leftObjectType: string,\n leftPrimaryKey: string | number | boolean,\n leftLinkName: string,\n rightObjectType: string,\n rightPrimaryKey: string | number | boolean,\n ): void => {\n const [leftTypeSideV2, rightTypeSideV2] = this.#fauxDataStore.ontology\n .getBothLinkTypeSides(\n leftObjectType,\n leftLinkName,\n rightObjectType,\n );\n\n this.#fauxDataStore.registerLink(\n { __apiName: leftObjectType, __primaryKey: leftPrimaryKey },\n leftTypeSideV2.apiName,\n { __apiName: rightObjectType, __primaryKey: rightPrimaryKey },\n rightTypeSideV2.apiName,\n );\n\n this.objectEdits.edits.push({\n type: \"addLink\",\n aSideObject: {\n objectType: leftObjectType,\n primaryKey: leftPrimaryKey,\n },\n bSideObject: {\n objectType: rightObjectType,\n primaryKey: rightPrimaryKey,\n },\n linkTypeApiNameAtoB: leftLinkName,\n linkTypeApiNameBtoA: rightTypeSideV2.apiName,\n });\n\n this.objectEdits.addedLinksCount += 1;\n };\n\n removeLink = (\n leftObjectType: string,\n leftPrimaryKey: string | number | boolean,\n leftLinkName: string,\n rightObjectType: string,\n rightPrimaryKey: string | number | boolean,\n ): void => {\n const [leftTypeSideV2, rightTypeSideV2] = this.#fauxDataStore.ontology\n .getBothLinkTypeSides(\n leftObjectType,\n leftLinkName,\n rightObjectType,\n );\n\n this.#fauxDataStore.unregisterLink(\n { __apiName: leftObjectType, __primaryKey: leftPrimaryKey },\n leftTypeSideV2.apiName,\n { __apiName: rightObjectType, __primaryKey: rightPrimaryKey },\n rightTypeSideV2.apiName,\n );\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,87 @@
|
|
|
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
|
+
|
|
17
|
+
import * as crypto from "node:crypto";
|
|
18
|
+
import { OntologyNotFoundError } from "../errors.js";
|
|
19
|
+
import { createFauxFoundryHandlers } from "../handlers/createFauxFoundryHandlers.js";
|
|
20
|
+
import { OpenApiCallError } from "../handlers/util/handleOpenApiCall.js";
|
|
21
|
+
import { FauxAttachmentStore } from "./FauxAttachmentStore.js";
|
|
22
|
+
import { FauxDataStore } from "./FauxDataStore.js";
|
|
23
|
+
import { FauxOntology } from "./FauxOntology.js";
|
|
24
|
+
export class FauxFoundry {
|
|
25
|
+
#ontologiesByRid = new Map();
|
|
26
|
+
#ontologiesByApiName = new Map();
|
|
27
|
+
#dataStoresByOntologyApiName = new Map();
|
|
28
|
+
#handlers;
|
|
29
|
+
attachments = new FauxAttachmentStore();
|
|
30
|
+
constructor(baseUrl, defaultOntology = {
|
|
31
|
+
apiName: "default-ontology",
|
|
32
|
+
displayName: "Ontology",
|
|
33
|
+
description: "The default ontology",
|
|
34
|
+
rid: `ri.ontology.main.ontology.${crypto.randomUUID()}`
|
|
35
|
+
}, {
|
|
36
|
+
logger
|
|
37
|
+
} = {}) {
|
|
38
|
+
this.baseUrl = baseUrl;
|
|
39
|
+
this.#handlers = createFauxFoundryHandlers(baseUrl, this);
|
|
40
|
+
this.createOntology(defaultOntology);
|
|
41
|
+
this.defaultOntologyRid = defaultOntology.rid;
|
|
42
|
+
this.logger = logger;
|
|
43
|
+
}
|
|
44
|
+
get handlers() {
|
|
45
|
+
return this.#handlers;
|
|
46
|
+
}
|
|
47
|
+
getDefaultOntology() {
|
|
48
|
+
return this.getOntology(this.defaultOntologyRid);
|
|
49
|
+
}
|
|
50
|
+
getDefaultDataStore() {
|
|
51
|
+
return this.getDataStore(this.defaultOntologyRid);
|
|
52
|
+
}
|
|
53
|
+
createOntology(metadata) {
|
|
54
|
+
const ret = new FauxOntology(metadata);
|
|
55
|
+
this.registerOntology(ret);
|
|
56
|
+
return ret;
|
|
57
|
+
}
|
|
58
|
+
registerOntology(ontology) {
|
|
59
|
+
this.#ontologiesByApiName.set(ontology.getOntologyFullMetadata().ontology.apiName, ontology);
|
|
60
|
+
this.#ontologiesByRid.set(ontology.getOntologyFullMetadata().ontology.rid, ontology);
|
|
61
|
+
}
|
|
62
|
+
getOntology(ontologyApiNameOrRid) {
|
|
63
|
+
const ontology = this.#ontologiesByApiName.get(ontologyApiNameOrRid) ?? this.#ontologiesByRid.get(ontologyApiNameOrRid);
|
|
64
|
+
if (!ontology) {
|
|
65
|
+
throw new OpenApiCallError(404, OntologyNotFoundError(ontologyApiNameOrRid));
|
|
66
|
+
}
|
|
67
|
+
return ontology;
|
|
68
|
+
}
|
|
69
|
+
setDataStore(ontologyApiNameOrRid, fauxDataStore) {
|
|
70
|
+
const ontology = this.getOntology(ontologyApiNameOrRid); // will throw
|
|
71
|
+
this.#dataStoresByOntologyApiName.set(ontology.apiName, fauxDataStore);
|
|
72
|
+
}
|
|
73
|
+
getDataStore(ontologyApiNameOrRid) {
|
|
74
|
+
const ontology = this.getOntology(ontologyApiNameOrRid); // will throw
|
|
75
|
+
const dataStore = this.#dataStoresByOntologyApiName.get(ontology.apiName);
|
|
76
|
+
if (!dataStore) {
|
|
77
|
+
const ret = new FauxDataStore(ontology, this.attachments);
|
|
78
|
+
this.setDataStore(ontologyApiNameOrRid, ret);
|
|
79
|
+
return ret;
|
|
80
|
+
}
|
|
81
|
+
return dataStore;
|
|
82
|
+
}
|
|
83
|
+
getEveryOntology() {
|
|
84
|
+
return Object.values(this.#ontologiesByApiName);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=FauxFoundry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FauxFoundry.js","names":["crypto","OntologyNotFoundError","createFauxFoundryHandlers","OpenApiCallError","FauxAttachmentStore","FauxDataStore","FauxOntology","FauxFoundry","ontologiesByRid","Map","ontologiesByApiName","dataStoresByOntologyApiName","handlers","attachments","constructor","baseUrl","defaultOntology","apiName","displayName","description","rid","randomUUID","logger","createOntology","defaultOntologyRid","getDefaultOntology","getOntology","getDefaultDataStore","getDataStore","metadata","ret","registerOntology","ontology","set","getOntologyFullMetadata","ontologyApiNameOrRid","get","setDataStore","fauxDataStore","dataStore","getEveryOntology","Object","values"],"sources":["FauxFoundry.ts"],"sourcesContent":["/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Logger } from \"@osdk/api\";\nimport type { Ontology, OntologyV2 } from \"@osdk/foundry.ontologies\";\nimport type { RequestHandler } from \"msw\";\nimport * as crypto from \"node:crypto\";\nimport { OntologyNotFoundError } from \"../errors.js\";\nimport { createFauxFoundryHandlers } from \"../handlers/createFauxFoundryHandlers.js\";\nimport { OpenApiCallError } from \"../handlers/util/handleOpenApiCall.js\";\nimport { FauxAttachmentStore } from \"./FauxAttachmentStore.js\";\nimport { FauxDataStore } from \"./FauxDataStore.js\";\nimport { FauxOntology } from \"./FauxOntology.js\";\n\nexport class FauxFoundry {\n #ontologiesByRid = new Map<string, FauxOntology>();\n #ontologiesByApiName = new Map<string, FauxOntology>();\n\n #dataStoresByOntologyApiName = new Map<string, FauxDataStore>();\n\n #handlers: RequestHandler[];\n\n readonly attachments: FauxAttachmentStore = new FauxAttachmentStore();\n readonly baseUrl: string;\n readonly defaultOntologyRid: any;\n readonly logger: Logger | undefined;\n\n constructor(\n baseUrl: string,\n defaultOntology: Ontology = {\n apiName: \"default-ontology\",\n displayName: \"Ontology\",\n description: \"The default ontology\",\n rid: `ri.ontology.main.ontology.${crypto.randomUUID()}`,\n },\n { logger }: { logger?: Logger } = {},\n ) {\n this.baseUrl = baseUrl;\n this.#handlers = createFauxFoundryHandlers(baseUrl, this);\n this.createOntology(defaultOntology);\n this.defaultOntologyRid = defaultOntology.rid;\n this.logger = logger;\n }\n\n get handlers(): RequestHandler[] {\n return this.#handlers;\n }\n\n getDefaultOntology(): FauxOntology {\n return this.getOntology(this.defaultOntologyRid);\n }\n\n getDefaultDataStore(): FauxDataStore {\n return this.getDataStore(this.defaultOntologyRid);\n }\n\n createOntology(metadata: OntologyV2): FauxOntology {\n const ret = new FauxOntology(metadata);\n this.registerOntology(ret);\n\n return ret;\n }\n\n registerOntology(ontology: FauxOntology): void {\n this.#ontologiesByApiName.set(\n ontology.getOntologyFullMetadata().ontology.apiName,\n ontology,\n );\n\n this.#ontologiesByRid.set(\n ontology.getOntologyFullMetadata().ontology.rid,\n ontology,\n );\n }\n\n getOntology(ontologyApiNameOrRid: string): FauxOntology {\n const ontology = this.#ontologiesByApiName.get(ontologyApiNameOrRid)\n ?? this.#ontologiesByRid.get(ontologyApiNameOrRid);\n if (!ontology) {\n throw new OpenApiCallError(\n 404,\n OntologyNotFoundError(ontologyApiNameOrRid),\n );\n }\n return ontology;\n }\n\n setDataStore(\n ontologyApiNameOrRid: string,\n fauxDataStore: FauxDataStore,\n ): void {\n const ontology = this.getOntology(ontologyApiNameOrRid); // will throw\n this.#dataStoresByOntologyApiName.set(\n ontology.apiName,\n fauxDataStore,\n );\n }\n\n getDataStore(ontologyApiNameOrRid: string): FauxDataStore {\n const ontology = this.getOntology(ontologyApiNameOrRid); // will throw\n const dataStore = this.#dataStoresByOntologyApiName.get(ontology.apiName);\n if (!dataStore) {\n const ret = new FauxDataStore(ontology, this.attachments);\n this.setDataStore(ontologyApiNameOrRid, ret);\n return ret;\n }\n return dataStore;\n }\n\n getEveryOntology(): FauxOntology[] {\n return Object.values(this.#ontologiesByApiName);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|