opik 0.0.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/dist/Node18UniversalStreamWrapper-5PLK6H2I.js +216 -0
- package/dist/NodePre18StreamWrapper-PJE27LW2.js +88 -0
- package/dist/UndiciStreamWrapper-M2WUKUR4.js +204 -0
- package/dist/chunk-MLKGABMK.js +9 -0
- package/dist/index.cjs +10735 -0
- package/dist/index.d.cts +3653 -0
- package/dist/index.d.ts +3653 -0
- package/dist/index.js +10173 -0
- package/examples/manual-trace.js +16 -0
- package/package.json +56 -0
- package/src/opik/client/Client.ts +65 -0
- package/src/opik/config/Config.ts +35 -0
- package/src/opik/index.ts +2 -0
- package/src/opik/rest_api/Client.ts +247 -0
- package/src/opik/rest_api/api/errors/BadRequestError.ts +16 -0
- package/src/opik/rest_api/api/errors/ConflictError.ts +16 -0
- package/src/opik/rest_api/api/errors/ForbiddenError.ts +17 -0
- package/src/opik/rest_api/api/errors/NotFoundError.ts +16 -0
- package/src/opik/rest_api/api/errors/NotImplementedError.ts +16 -0
- package/src/opik/rest_api/api/errors/UnauthorizedError.ts +17 -0
- package/src/opik/rest_api/api/errors/UnprocessableEntityError.ts +16 -0
- package/src/opik/rest_api/api/errors/index.ts +7 -0
- package/src/opik/rest_api/api/index.ts +3 -0
- package/src/opik/rest_api/api/resources/chatCompletions/client/Client.ts +125 -0
- package/src/opik/rest_api/api/resources/chatCompletions/client/index.ts +1 -0
- package/src/opik/rest_api/api/resources/chatCompletions/client/requests/ChatCompletionRequest.ts +33 -0
- package/src/opik/rest_api/api/resources/chatCompletions/client/requests/index.ts +1 -0
- package/src/opik/rest_api/api/resources/chatCompletions/index.ts +1 -0
- package/src/opik/rest_api/api/resources/check/client/Client.ts +141 -0
- package/src/opik/rest_api/api/resources/check/client/index.ts +1 -0
- package/src/opik/rest_api/api/resources/check/index.ts +1 -0
- package/src/opik/rest_api/api/resources/datasets/client/Client.ts +1244 -0
- package/src/opik/rest_api/api/resources/datasets/client/index.ts +1 -0
- package/src/opik/rest_api/api/resources/datasets/client/requests/DatasetIdentifier.ts +13 -0
- package/src/opik/rest_api/api/resources/datasets/client/requests/DatasetIdentifierPublic.ts +13 -0
- package/src/opik/rest_api/api/resources/datasets/client/requests/DatasetItemBatchWrite.ts +21 -0
- package/src/opik/rest_api/api/resources/datasets/client/requests/DatasetItemStreamRequest.ts +9 -0
- package/src/opik/rest_api/api/resources/datasets/client/requests/DatasetItemsDelete.ts +13 -0
- package/src/opik/rest_api/api/resources/datasets/client/requests/DatasetUpdate.ts +14 -0
- package/src/opik/rest_api/api/resources/datasets/client/requests/DatasetWrite.ts +15 -0
- package/src/opik/rest_api/api/resources/datasets/client/requests/FindDatasetItemsWithExperimentItemsRequest.ts +17 -0
- package/src/opik/rest_api/api/resources/datasets/client/requests/FindDatasetsRequest.ts +16 -0
- package/src/opik/rest_api/api/resources/datasets/client/requests/GetDatasetItemsOutputColumnsRequest.ts +11 -0
- package/src/opik/rest_api/api/resources/datasets/client/requests/GetDatasetItemsRequest.ts +13 -0
- package/src/opik/rest_api/api/resources/datasets/client/requests/index.ts +11 -0
- package/src/opik/rest_api/api/resources/datasets/index.ts +1 -0
- package/src/opik/rest_api/api/resources/experiments/client/Client.ts +858 -0
- package/src/opik/rest_api/api/resources/experiments/client/index.ts +1 -0
- package/src/opik/rest_api/api/resources/experiments/client/requests/ExperimentItemStreamRequest.ts +9 -0
- package/src/opik/rest_api/api/resources/experiments/client/requests/ExperimentItemsBatch.ts +19 -0
- package/src/opik/rest_api/api/resources/experiments/client/requests/ExperimentItemsDelete.ts +13 -0
- package/src/opik/rest_api/api/resources/experiments/client/requests/ExperimentWrite.ts +19 -0
- package/src/opik/rest_api/api/resources/experiments/client/requests/ExperimentsDelete.ts +13 -0
- package/src/opik/rest_api/api/resources/experiments/client/requests/FindExperimentsRequest.ts +16 -0
- package/src/opik/rest_api/api/resources/experiments/client/requests/FindFeedbackScoreNamesRequest.ts +11 -0
- package/src/opik/rest_api/api/resources/experiments/client/requests/IdentifierPublic.ts +13 -0
- package/src/opik/rest_api/api/resources/experiments/client/requests/index.ts +8 -0
- package/src/opik/rest_api/api/resources/experiments/index.ts +1 -0
- package/src/opik/rest_api/api/resources/feedbackDefinitions/client/Client.ts +515 -0
- package/src/opik/rest_api/api/resources/feedbackDefinitions/client/index.ts +1 -0
- package/src/opik/rest_api/api/resources/feedbackDefinitions/client/requests/FindFeedbackDefinitionsRequest.ts +16 -0
- package/src/opik/rest_api/api/resources/feedbackDefinitions/client/requests/index.ts +1 -0
- package/src/opik/rest_api/api/resources/feedbackDefinitions/index.ts +2 -0
- package/src/opik/rest_api/api/resources/feedbackDefinitions/types/FindFeedbackDefinitionsRequestType.ts +10 -0
- package/src/opik/rest_api/api/resources/feedbackDefinitions/types/index.ts +1 -0
- package/src/opik/rest_api/api/resources/index.ts +23 -0
- package/src/opik/rest_api/api/resources/llmProviderKey/client/Client.ts +412 -0
- package/src/opik/rest_api/api/resources/llmProviderKey/client/index.ts +1 -0
- package/src/opik/rest_api/api/resources/llmProviderKey/client/requests/ProviderApiKeyUpdate.ts +13 -0
- package/src/opik/rest_api/api/resources/llmProviderKey/client/requests/ProviderApiKeyWrite.ts +13 -0
- package/src/opik/rest_api/api/resources/llmProviderKey/client/requests/index.ts +2 -0
- package/src/opik/rest_api/api/resources/llmProviderKey/index.ts +1 -0
- package/src/opik/rest_api/api/resources/projects/client/Client.ts +720 -0
- package/src/opik/rest_api/api/resources/projects/client/index.ts +1 -0
- package/src/opik/rest_api/api/resources/projects/client/requests/FindProjectsRequest.ts +14 -0
- package/src/opik/rest_api/api/resources/projects/client/requests/ProjectMetricRequestPublic.ts +16 -0
- package/src/opik/rest_api/api/resources/projects/client/requests/ProjectRetrievePublic.ts +13 -0
- package/src/opik/rest_api/api/resources/projects/client/requests/ProjectUpdate.ts +12 -0
- package/src/opik/rest_api/api/resources/projects/client/requests/ProjectWrite.ts +14 -0
- package/src/opik/rest_api/api/resources/projects/client/requests/index.ts +5 -0
- package/src/opik/rest_api/api/resources/projects/index.ts +2 -0
- package/src/opik/rest_api/api/resources/projects/types/ProjectMetricRequestPublicInterval.ts +11 -0
- package/src/opik/rest_api/api/resources/projects/types/ProjectMetricRequestPublicMetricType.ts +18 -0
- package/src/opik/rest_api/api/resources/projects/types/index.ts +2 -0
- package/src/opik/rest_api/api/resources/prompts/client/Client.ts +900 -0
- package/src/opik/rest_api/api/resources/prompts/client/index.ts +1 -0
- package/src/opik/rest_api/api/resources/prompts/client/requests/CreatePromptVersionDetail.ts +19 -0
- package/src/opik/rest_api/api/resources/prompts/client/requests/GetPromptVersionsRequest.ts +12 -0
- package/src/opik/rest_api/api/resources/prompts/client/requests/GetPromptsRequest.ts +13 -0
- package/src/opik/rest_api/api/resources/prompts/client/requests/PromptUpdatable.ts +14 -0
- package/src/opik/rest_api/api/resources/prompts/client/requests/PromptVersionRetrieveDetail.ts +14 -0
- package/src/opik/rest_api/api/resources/prompts/client/requests/PromptWrite.ts +16 -0
- package/src/opik/rest_api/api/resources/prompts/client/requests/index.ts +6 -0
- package/src/opik/rest_api/api/resources/prompts/index.ts +1 -0
- package/src/opik/rest_api/api/resources/spans/client/Client.ts +957 -0
- package/src/opik/rest_api/api/resources/spans/client/index.ts +1 -0
- package/src/opik/rest_api/api/resources/spans/client/requests/FindFeedbackScoreNames1Request.ts +14 -0
- package/src/opik/rest_api/api/resources/spans/client/requests/GetSpanStatsRequest.ts +17 -0
- package/src/opik/rest_api/api/resources/spans/client/requests/GetSpansByProjectRequest.ts +20 -0
- package/src/opik/rest_api/api/resources/spans/client/requests/SpanBatchWrite.ts +20 -0
- package/src/opik/rest_api/api/resources/spans/client/requests/SpanUpdate.ts +29 -0
- package/src/opik/rest_api/api/resources/spans/client/requests/index.ts +5 -0
- package/src/opik/rest_api/api/resources/spans/index.ts +2 -0
- package/src/opik/rest_api/api/resources/spans/types/FindFeedbackScoreNames1RequestType.ts +11 -0
- package/src/opik/rest_api/api/resources/spans/types/GetSpanStatsRequestType.ts +11 -0
- package/src/opik/rest_api/api/resources/spans/types/GetSpansByProjectRequestType.ts +11 -0
- package/src/opik/rest_api/api/resources/spans/types/index.ts +3 -0
- package/src/opik/rest_api/api/resources/systemUsage/client/Client.ts +347 -0
- package/src/opik/rest_api/api/resources/systemUsage/client/index.ts +1 -0
- package/src/opik/rest_api/api/resources/systemUsage/index.ts +1 -0
- package/src/opik/rest_api/api/resources/traces/client/Client.ts +990 -0
- package/src/opik/rest_api/api/resources/traces/client/index.ts +1 -0
- package/src/opik/rest_api/api/resources/traces/client/requests/FindFeedbackScoreNames2Request.ts +11 -0
- package/src/opik/rest_api/api/resources/traces/client/requests/GetTraceStatsRequest.ts +13 -0
- package/src/opik/rest_api/api/resources/traces/client/requests/GetTracesByProjectRequest.ts +16 -0
- package/src/opik/rest_api/api/resources/traces/client/requests/TraceBatchWrite.ts +18 -0
- package/src/opik/rest_api/api/resources/traces/client/requests/TraceUpdate.ts +22 -0
- package/src/opik/rest_api/api/resources/traces/client/requests/index.ts +5 -0
- package/src/opik/rest_api/api/resources/traces/index.ts +1 -0
- package/src/opik/rest_api/api/types/AssistantMessage.ts +14 -0
- package/src/opik/rest_api/api/types/AssistantMessageRole.ts +13 -0
- package/src/opik/rest_api/api/types/AuthDetailsHolder.ts +5 -0
- package/src/opik/rest_api/api/types/AvgValueStatPublic.ts +7 -0
- package/src/opik/rest_api/api/types/BatchDelete.ts +7 -0
- package/src/opik/rest_api/api/types/BiInformation.ts +9 -0
- package/src/opik/rest_api/api/types/BiInformationResponse.ts +9 -0
- package/src/opik/rest_api/api/types/CategoricalFeedbackDefinition.ts +13 -0
- package/src/opik/rest_api/api/types/CategoricalFeedbackDefinitionCreate.ts +9 -0
- package/src/opik/rest_api/api/types/CategoricalFeedbackDefinitionPublic.ts +13 -0
- package/src/opik/rest_api/api/types/CategoricalFeedbackDefinitionUpdate.ts +9 -0
- package/src/opik/rest_api/api/types/CategoricalFeedbackDetail.ts +7 -0
- package/src/opik/rest_api/api/types/CategoricalFeedbackDetailCreate.ts +7 -0
- package/src/opik/rest_api/api/types/CategoricalFeedbackDetailPublic.ts +7 -0
- package/src/opik/rest_api/api/types/CategoricalFeedbackDetailUpdate.ts +7 -0
- package/src/opik/rest_api/api/types/ChatCompletionChoice.ts +12 -0
- package/src/opik/rest_api/api/types/ChatCompletionResponse.ts +14 -0
- package/src/opik/rest_api/api/types/ChunkedOutputJsonNode.ts +10 -0
- package/src/opik/rest_api/api/types/ChunkedOutputJsonNodeType.ts +7 -0
- package/src/opik/rest_api/api/types/Column.ts +13 -0
- package/src/opik/rest_api/api/types/ColumnCompare.ts +13 -0
- package/src/opik/rest_api/api/types/ColumnCompareTypesItem.ts +14 -0
- package/src/opik/rest_api/api/types/ColumnPublic.ts +13 -0
- package/src/opik/rest_api/api/types/ColumnPublicTypesItem.ts +14 -0
- package/src/opik/rest_api/api/types/ColumnTypesItem.ts +14 -0
- package/src/opik/rest_api/api/types/CompletionTokensDetails.ts +7 -0
- package/src/opik/rest_api/api/types/CountValueStatPublic.ts +7 -0
- package/src/opik/rest_api/api/types/DataPointNumberPublic.ts +8 -0
- package/src/opik/rest_api/api/types/Dataset.ts +17 -0
- package/src/opik/rest_api/api/types/DatasetItem.ts +21 -0
- package/src/opik/rest_api/api/types/DatasetItemBatch.ts +13 -0
- package/src/opik/rest_api/api/types/DatasetItemCompare.ts +21 -0
- package/src/opik/rest_api/api/types/DatasetItemCompareSource.ts +12 -0
- package/src/opik/rest_api/api/types/DatasetItemPageCompare.ts +13 -0
- package/src/opik/rest_api/api/types/DatasetItemPagePublic.ts +13 -0
- package/src/opik/rest_api/api/types/DatasetItemPublic.ts +21 -0
- package/src/opik/rest_api/api/types/DatasetItemPublicSource.ts +12 -0
- package/src/opik/rest_api/api/types/DatasetItemSource.ts +12 -0
- package/src/opik/rest_api/api/types/DatasetItemWrite.ts +16 -0
- package/src/opik/rest_api/api/types/DatasetItemWriteSource.ts +12 -0
- package/src/opik/rest_api/api/types/DatasetPagePublic.ts +12 -0
- package/src/opik/rest_api/api/types/DatasetPublic.ts +17 -0
- package/src/opik/rest_api/api/types/DeleteFeedbackScore.ts +7 -0
- package/src/opik/rest_api/api/types/Delta.ts +12 -0
- package/src/opik/rest_api/api/types/DeltaRole.ts +13 -0
- package/src/opik/rest_api/api/types/ErrorInfo.ts +9 -0
- package/src/opik/rest_api/api/types/ErrorInfoPublic.ts +9 -0
- package/src/opik/rest_api/api/types/ErrorInfoWrite.ts +9 -0
- package/src/opik/rest_api/api/types/ErrorMessage.ts +9 -0
- package/src/opik/rest_api/api/types/ErrorMessageDetail.ts +9 -0
- package/src/opik/rest_api/api/types/ErrorMessagePublic.ts +7 -0
- package/src/opik/rest_api/api/types/Experiment.ts +20 -0
- package/src/opik/rest_api/api/types/ExperimentItem.ts +19 -0
- package/src/opik/rest_api/api/types/ExperimentItemCompare.ts +19 -0
- package/src/opik/rest_api/api/types/ExperimentItemPublic.ts +14 -0
- package/src/opik/rest_api/api/types/ExperimentPagePublic.ts +12 -0
- package/src/opik/rest_api/api/types/ExperimentPublic.ts +20 -0
- package/src/opik/rest_api/api/types/Feedback.ts +26 -0
- package/src/opik/rest_api/api/types/FeedbackCreate.ts +22 -0
- package/src/opik/rest_api/api/types/FeedbackDefinitionPagePublic.ts +12 -0
- package/src/opik/rest_api/api/types/FeedbackObjectPublic.ts +26 -0
- package/src/opik/rest_api/api/types/FeedbackPublic.ts +26 -0
- package/src/opik/rest_api/api/types/FeedbackScore.ts +17 -0
- package/src/opik/rest_api/api/types/FeedbackScoreAverage.ts +8 -0
- package/src/opik/rest_api/api/types/FeedbackScoreAveragePublic.ts +8 -0
- package/src/opik/rest_api/api/types/FeedbackScoreBatch.ts +9 -0
- package/src/opik/rest_api/api/types/FeedbackScoreBatchItem.ts +16 -0
- package/src/opik/rest_api/api/types/FeedbackScoreBatchItemSource.ts +10 -0
- package/src/opik/rest_api/api/types/FeedbackScoreCompare.ts +17 -0
- package/src/opik/rest_api/api/types/FeedbackScoreCompareSource.ts +10 -0
- package/src/opik/rest_api/api/types/FeedbackScorePublic.ts +17 -0
- package/src/opik/rest_api/api/types/FeedbackScorePublicSource.ts +10 -0
- package/src/opik/rest_api/api/types/FeedbackScoreSource.ts +10 -0
- package/src/opik/rest_api/api/types/FeedbackUpdate.ts +22 -0
- package/src/opik/rest_api/api/types/Function.ts +12 -0
- package/src/opik/rest_api/api/types/FunctionCall.ts +8 -0
- package/src/opik/rest_api/api/types/JsonNode.ts +5 -0
- package/src/opik/rest_api/api/types/JsonNodeCompare.ts +5 -0
- package/src/opik/rest_api/api/types/JsonNodePublic.ts +5 -0
- package/src/opik/rest_api/api/types/JsonNodeWrite.ts +5 -0
- package/src/opik/rest_api/api/types/JsonObjectSchema.ts +14 -0
- package/src/opik/rest_api/api/types/JsonSchema.ts +11 -0
- package/src/opik/rest_api/api/types/JsonSchemaElement.ts +7 -0
- package/src/opik/rest_api/api/types/Message.ts +5 -0
- package/src/opik/rest_api/api/types/NumericalFeedbackDefinition.ts +13 -0
- package/src/opik/rest_api/api/types/NumericalFeedbackDefinitionCreate.ts +9 -0
- package/src/opik/rest_api/api/types/NumericalFeedbackDefinitionPublic.ts +13 -0
- package/src/opik/rest_api/api/types/NumericalFeedbackDefinitionUpdate.ts +9 -0
- package/src/opik/rest_api/api/types/NumericalFeedbackDetail.ts +8 -0
- package/src/opik/rest_api/api/types/NumericalFeedbackDetailCreate.ts +8 -0
- package/src/opik/rest_api/api/types/NumericalFeedbackDetailPublic.ts +8 -0
- package/src/opik/rest_api/api/types/NumericalFeedbackDetailUpdate.ts +8 -0
- package/src/opik/rest_api/api/types/PageColumns.ts +9 -0
- package/src/opik/rest_api/api/types/PercentageValueStatPublic.ts +9 -0
- package/src/opik/rest_api/api/types/PercentageValuesPublic.ts +9 -0
- package/src/opik/rest_api/api/types/Project.ts +14 -0
- package/src/opik/rest_api/api/types/ProjectMetricResponsePublic.ts +12 -0
- package/src/opik/rest_api/api/types/ProjectMetricResponsePublicInterval.ts +11 -0
- package/src/opik/rest_api/api/types/ProjectMetricResponsePublicMetricType.ts +18 -0
- package/src/opik/rest_api/api/types/ProjectPagePublic.ts +13 -0
- package/src/opik/rest_api/api/types/ProjectPublic.ts +14 -0
- package/src/opik/rest_api/api/types/ProjectStatItemObjectPublic.ts +28 -0
- package/src/opik/rest_api/api/types/ProjectStatsPublic.ts +9 -0
- package/src/opik/rest_api/api/types/Prompt.ts +18 -0
- package/src/opik/rest_api/api/types/PromptDetail.ts +17 -0
- package/src/opik/rest_api/api/types/PromptPagePublic.ts +12 -0
- package/src/opik/rest_api/api/types/PromptPublic.ts +14 -0
- package/src/opik/rest_api/api/types/PromptVersion.ts +15 -0
- package/src/opik/rest_api/api/types/PromptVersionDetail.ts +15 -0
- package/src/opik/rest_api/api/types/PromptVersionLink.ts +9 -0
- package/src/opik/rest_api/api/types/PromptVersionLinkPublic.ts +9 -0
- package/src/opik/rest_api/api/types/PromptVersionLinkWrite.ts +7 -0
- package/src/opik/rest_api/api/types/PromptVersionPagePublic.ts +12 -0
- package/src/opik/rest_api/api/types/PromptVersionPublic.ts +14 -0
- package/src/opik/rest_api/api/types/ProviderApiKey.ts +13 -0
- package/src/opik/rest_api/api/types/ProviderApiKeyPublic.ts +12 -0
- package/src/opik/rest_api/api/types/ResponseFormat.ts +10 -0
- package/src/opik/rest_api/api/types/ResponseFormatType.ts +11 -0
- package/src/opik/rest_api/api/types/ResultsNumberPublic.ts +10 -0
- package/src/opik/rest_api/api/types/Span.ts +32 -0
- package/src/opik/rest_api/api/types/SpanBatch.ts +9 -0
- package/src/opik/rest_api/api/types/SpanPagePublic.ts +12 -0
- package/src/opik/rest_api/api/types/SpanPublic.ts +30 -0
- package/src/opik/rest_api/api/types/SpanPublicType.ts +11 -0
- package/src/opik/rest_api/api/types/SpanType.ts +11 -0
- package/src/opik/rest_api/api/types/SpanWrite.ts +25 -0
- package/src/opik/rest_api/api/types/SpanWriteType.ts +11 -0
- package/src/opik/rest_api/api/types/StreamOptions.ts +7 -0
- package/src/opik/rest_api/api/types/Tool.ts +10 -0
- package/src/opik/rest_api/api/types/ToolCall.ts +12 -0
- package/src/opik/rest_api/api/types/Trace.ts +27 -0
- package/src/opik/rest_api/api/types/TraceBatch.ts +9 -0
- package/src/opik/rest_api/api/types/TraceCountResponse.ts +9 -0
- package/src/opik/rest_api/api/types/TracePagePublic.ts +12 -0
- package/src/opik/rest_api/api/types/TracePublic.ts +25 -0
- package/src/opik/rest_api/api/types/TraceWrite.ts +19 -0
- package/src/opik/rest_api/api/types/Usage.ts +12 -0
- package/src/opik/rest_api/api/types/WorkspaceTraceCount.ts +8 -0
- package/src/opik/rest_api/api/types/index.ts +138 -0
- package/src/opik/rest_api/core/api-promise/APIPromise.ts +54 -0
- package/src/opik/rest_api/core/api-promise/index.ts +1 -0
- package/src/opik/rest_api/core/fetcher/APIResponse.ts +12 -0
- package/src/opik/rest_api/core/fetcher/Fetcher.ts +143 -0
- package/src/opik/rest_api/core/fetcher/Supplier.ts +11 -0
- package/src/opik/rest_api/core/fetcher/createRequestUrl.ts +10 -0
- package/src/opik/rest_api/core/fetcher/getFetchFn.ts +25 -0
- package/src/opik/rest_api/core/fetcher/getHeader.ts +8 -0
- package/src/opik/rest_api/core/fetcher/getRequestBody.ts +14 -0
- package/src/opik/rest_api/core/fetcher/getResponseBody.ts +34 -0
- package/src/opik/rest_api/core/fetcher/index.ts +5 -0
- package/src/opik/rest_api/core/fetcher/makeRequest.ts +44 -0
- package/src/opik/rest_api/core/fetcher/requestWithRetries.ts +33 -0
- package/src/opik/rest_api/core/fetcher/signals.ts +38 -0
- package/src/opik/rest_api/core/fetcher/stream-wrappers/Node18UniversalStreamWrapper.ts +256 -0
- package/src/opik/rest_api/core/fetcher/stream-wrappers/NodePre18StreamWrapper.ts +106 -0
- package/src/opik/rest_api/core/fetcher/stream-wrappers/UndiciStreamWrapper.ts +243 -0
- package/src/opik/rest_api/core/fetcher/stream-wrappers/chooseStreamWrapper.ts +33 -0
- package/src/opik/rest_api/core/index.ts +4 -0
- package/src/opik/rest_api/core/runtime/index.ts +1 -0
- package/src/opik/rest_api/core/runtime/runtime.ts +126 -0
- package/src/opik/rest_api/core/schemas/Schema.ts +99 -0
- package/src/opik/rest_api/core/schemas/builders/bigint/bigint.ts +50 -0
- package/src/opik/rest_api/core/schemas/builders/bigint/index.ts +1 -0
- package/src/opik/rest_api/core/schemas/builders/date/date.ts +65 -0
- package/src/opik/rest_api/core/schemas/builders/date/index.ts +1 -0
- package/src/opik/rest_api/core/schemas/builders/enum/enum.ts +43 -0
- package/src/opik/rest_api/core/schemas/builders/enum/index.ts +1 -0
- package/src/opik/rest_api/core/schemas/builders/index.ts +14 -0
- package/src/opik/rest_api/core/schemas/builders/lazy/index.ts +3 -0
- package/src/opik/rest_api/core/schemas/builders/lazy/lazy.ts +32 -0
- package/src/opik/rest_api/core/schemas/builders/lazy/lazyObject.ts +20 -0
- package/src/opik/rest_api/core/schemas/builders/list/index.ts +1 -0
- package/src/opik/rest_api/core/schemas/builders/list/list.ts +73 -0
- package/src/opik/rest_api/core/schemas/builders/literals/booleanLiteral.ts +29 -0
- package/src/opik/rest_api/core/schemas/builders/literals/index.ts +2 -0
- package/src/opik/rest_api/core/schemas/builders/literals/stringLiteral.ts +29 -0
- package/src/opik/rest_api/core/schemas/builders/object/index.ts +22 -0
- package/src/opik/rest_api/core/schemas/builders/object/object.ts +324 -0
- package/src/opik/rest_api/core/schemas/builders/object/objectWithoutOptionalProperties.ts +18 -0
- package/src/opik/rest_api/core/schemas/builders/object/property.ts +23 -0
- package/src/opik/rest_api/core/schemas/builders/object/types.ts +72 -0
- package/src/opik/rest_api/core/schemas/builders/object-like/getObjectLikeUtils.ts +79 -0
- package/src/opik/rest_api/core/schemas/builders/object-like/index.ts +2 -0
- package/src/opik/rest_api/core/schemas/builders/object-like/types.ts +11 -0
- package/src/opik/rest_api/core/schemas/builders/primitives/any.ts +4 -0
- package/src/opik/rest_api/core/schemas/builders/primitives/boolean.ts +25 -0
- package/src/opik/rest_api/core/schemas/builders/primitives/index.ts +5 -0
- package/src/opik/rest_api/core/schemas/builders/primitives/number.ts +25 -0
- package/src/opik/rest_api/core/schemas/builders/primitives/string.ts +25 -0
- package/src/opik/rest_api/core/schemas/builders/primitives/unknown.ts +4 -0
- package/src/opik/rest_api/core/schemas/builders/record/index.ts +2 -0
- package/src/opik/rest_api/core/schemas/builders/record/record.ts +130 -0
- package/src/opik/rest_api/core/schemas/builders/record/types.ts +17 -0
- package/src/opik/rest_api/core/schemas/builders/schema-utils/JsonError.ts +9 -0
- package/src/opik/rest_api/core/schemas/builders/schema-utils/ParseError.ts +9 -0
- package/src/opik/rest_api/core/schemas/builders/schema-utils/getSchemaUtils.ts +105 -0
- package/src/opik/rest_api/core/schemas/builders/schema-utils/index.ts +4 -0
- package/src/opik/rest_api/core/schemas/builders/schema-utils/stringifyValidationErrors.ts +8 -0
- package/src/opik/rest_api/core/schemas/builders/set/index.ts +1 -0
- package/src/opik/rest_api/core/schemas/builders/set/set.ts +43 -0
- package/src/opik/rest_api/core/schemas/builders/undiscriminated-union/index.ts +6 -0
- package/src/opik/rest_api/core/schemas/builders/undiscriminated-union/types.ts +10 -0
- package/src/opik/rest_api/core/schemas/builders/undiscriminated-union/undiscriminatedUnion.ts +60 -0
- package/src/opik/rest_api/core/schemas/builders/union/discriminant.ts +14 -0
- package/src/opik/rest_api/core/schemas/builders/union/index.ts +10 -0
- package/src/opik/rest_api/core/schemas/builders/union/types.ts +26 -0
- package/src/opik/rest_api/core/schemas/builders/union/union.ts +170 -0
- package/src/opik/rest_api/core/schemas/index.ts +2 -0
- package/src/opik/rest_api/core/schemas/utils/MaybePromise.ts +1 -0
- package/src/opik/rest_api/core/schemas/utils/addQuestionMarksToNullableProperties.ts +15 -0
- package/src/opik/rest_api/core/schemas/utils/createIdentitySchemaCreator.ts +21 -0
- package/src/opik/rest_api/core/schemas/utils/entries.ts +3 -0
- package/src/opik/rest_api/core/schemas/utils/filterObject.ts +10 -0
- package/src/opik/rest_api/core/schemas/utils/getErrorMessageForIncorrectType.ts +25 -0
- package/src/opik/rest_api/core/schemas/utils/isPlainObject.ts +17 -0
- package/src/opik/rest_api/core/schemas/utils/keys.ts +3 -0
- package/src/opik/rest_api/core/schemas/utils/maybeSkipValidation.ts +38 -0
- package/src/opik/rest_api/core/schemas/utils/partition.ts +12 -0
- package/src/opik/rest_api/environments.ts +9 -0
- package/src/opik/rest_api/errors/OpikApiError.ts +45 -0
- package/src/opik/rest_api/errors/OpikApiTimeoutError.ts +10 -0
- package/src/opik/rest_api/errors/index.ts +2 -0
- package/src/opik/rest_api/index.ts +4 -0
- package/src/opik/rest_api/serialization/index.ts +2 -0
- package/src/opik/rest_api/serialization/resources/chatCompletions/client/index.ts +1 -0
- package/src/opik/rest_api/serialization/resources/chatCompletions/client/requests/ChatCompletionRequest.ts +72 -0
- package/src/opik/rest_api/serialization/resources/chatCompletions/client/requests/index.ts +1 -0
- package/src/opik/rest_api/serialization/resources/chatCompletions/index.ts +1 -0
- package/src/opik/rest_api/serialization/resources/datasets/client/index.ts +1 -0
- package/src/opik/rest_api/serialization/resources/datasets/client/requests/DatasetIdentifier.ts +20 -0
- package/src/opik/rest_api/serialization/resources/datasets/client/requests/DatasetIdentifierPublic.ts +20 -0
- package/src/opik/rest_api/serialization/resources/datasets/client/requests/DatasetItemBatchWrite.ts +25 -0
- package/src/opik/rest_api/serialization/resources/datasets/client/requests/DatasetItemStreamRequest.ts +24 -0
- package/src/opik/rest_api/serialization/resources/datasets/client/requests/DatasetItemsDelete.ts +20 -0
- package/src/opik/rest_api/serialization/resources/datasets/client/requests/DatasetUpdate.ts +20 -0
- package/src/opik/rest_api/serialization/resources/datasets/client/requests/DatasetWrite.ts +22 -0
- package/src/opik/rest_api/serialization/resources/datasets/client/requests/index.ts +7 -0
- package/src/opik/rest_api/serialization/resources/datasets/index.ts +1 -0
- package/src/opik/rest_api/serialization/resources/experiments/client/findFeedbackScoreNames.ts +15 -0
- package/src/opik/rest_api/serialization/resources/experiments/client/index.ts +2 -0
- package/src/opik/rest_api/serialization/resources/experiments/client/requests/ExperimentItemStreamRequest.ts +24 -0
- package/src/opik/rest_api/serialization/resources/experiments/client/requests/ExperimentItemsBatch.ts +21 -0
- package/src/opik/rest_api/serialization/resources/experiments/client/requests/ExperimentItemsDelete.ts +20 -0
- package/src/opik/rest_api/serialization/resources/experiments/client/requests/ExperimentWrite.ts +28 -0
- package/src/opik/rest_api/serialization/resources/experiments/client/requests/ExperimentsDelete.ts +20 -0
- package/src/opik/rest_api/serialization/resources/experiments/client/requests/IdentifierPublic.ts +18 -0
- package/src/opik/rest_api/serialization/resources/experiments/client/requests/index.ts +6 -0
- package/src/opik/rest_api/serialization/resources/experiments/index.ts +1 -0
- package/src/opik/rest_api/serialization/resources/feedbackDefinitions/index.ts +1 -0
- package/src/opik/rest_api/serialization/resources/feedbackDefinitions/types/FindFeedbackDefinitionsRequestType.ts +16 -0
- package/src/opik/rest_api/serialization/resources/feedbackDefinitions/types/index.ts +1 -0
- package/src/opik/rest_api/serialization/resources/index.ts +20 -0
- package/src/opik/rest_api/serialization/resources/llmProviderKey/client/index.ts +1 -0
- package/src/opik/rest_api/serialization/resources/llmProviderKey/client/requests/ProviderApiKeyUpdate.ts +20 -0
- package/src/opik/rest_api/serialization/resources/llmProviderKey/client/requests/ProviderApiKeyWrite.ts +20 -0
- package/src/opik/rest_api/serialization/resources/llmProviderKey/client/requests/index.ts +2 -0
- package/src/opik/rest_api/serialization/resources/llmProviderKey/index.ts +1 -0
- package/src/opik/rest_api/serialization/resources/projects/client/index.ts +1 -0
- package/src/opik/rest_api/serialization/resources/projects/client/requests/ProjectMetricRequestPublic.ts +28 -0
- package/src/opik/rest_api/serialization/resources/projects/client/requests/ProjectRetrievePublic.ts +20 -0
- package/src/opik/rest_api/serialization/resources/projects/client/requests/ProjectUpdate.ts +20 -0
- package/src/opik/rest_api/serialization/resources/projects/client/requests/ProjectWrite.ts +20 -0
- package/src/opik/rest_api/serialization/resources/projects/client/requests/index.ts +4 -0
- package/src/opik/rest_api/serialization/resources/projects/index.ts +2 -0
- package/src/opik/rest_api/serialization/resources/projects/types/ProjectMetricRequestPublicInterval.ts +16 -0
- package/src/opik/rest_api/serialization/resources/projects/types/ProjectMetricRequestPublicMetricType.ts +16 -0
- package/src/opik/rest_api/serialization/resources/projects/types/index.ts +2 -0
- package/src/opik/rest_api/serialization/resources/prompts/client/index.ts +1 -0
- package/src/opik/rest_api/serialization/resources/prompts/client/requests/CreatePromptVersionDetail.ts +23 -0
- package/src/opik/rest_api/serialization/resources/prompts/client/requests/PromptUpdatable.ts +20 -0
- package/src/opik/rest_api/serialization/resources/prompts/client/requests/PromptVersionRetrieveDetail.ts +22 -0
- package/src/opik/rest_api/serialization/resources/prompts/client/requests/PromptWrite.ts +24 -0
- package/src/opik/rest_api/serialization/resources/prompts/client/requests/index.ts +4 -0
- package/src/opik/rest_api/serialization/resources/prompts/index.ts +1 -0
- package/src/opik/rest_api/serialization/resources/spans/client/findFeedbackScoreNames1.ts +13 -0
- package/src/opik/rest_api/serialization/resources/spans/client/index.ts +2 -0
- package/src/opik/rest_api/serialization/resources/spans/client/requests/SpanBatchWrite.ts +19 -0
- package/src/opik/rest_api/serialization/resources/spans/client/requests/SpanUpdate.ts +44 -0
- package/src/opik/rest_api/serialization/resources/spans/client/requests/index.ts +2 -0
- package/src/opik/rest_api/serialization/resources/spans/index.ts +2 -0
- package/src/opik/rest_api/serialization/resources/spans/types/FindFeedbackScoreNames1RequestType.ts +16 -0
- package/src/opik/rest_api/serialization/resources/spans/types/GetSpanStatsRequestType.ts +16 -0
- package/src/opik/rest_api/serialization/resources/spans/types/GetSpansByProjectRequestType.ts +16 -0
- package/src/opik/rest_api/serialization/resources/spans/types/index.ts +3 -0
- package/src/opik/rest_api/serialization/resources/traces/client/findFeedbackScoreNames2.ts +13 -0
- package/src/opik/rest_api/serialization/resources/traces/client/index.ts +2 -0
- package/src/opik/rest_api/serialization/resources/traces/client/requests/TraceBatchWrite.ts +19 -0
- package/src/opik/rest_api/serialization/resources/traces/client/requests/TraceUpdate.ts +34 -0
- package/src/opik/rest_api/serialization/resources/traces/client/requests/index.ts +2 -0
- package/src/opik/rest_api/serialization/resources/traces/index.ts +1 -0
- package/src/opik/rest_api/serialization/types/AssistantMessage.ts +33 -0
- package/src/opik/rest_api/serialization/types/AssistantMessageRole.ts +16 -0
- package/src/opik/rest_api/serialization/types/AuthDetailsHolder.ts +16 -0
- package/src/opik/rest_api/serialization/types/AvgValueStatPublic.ts +20 -0
- package/src/opik/rest_api/serialization/types/BatchDelete.ts +18 -0
- package/src/opik/rest_api/serialization/types/BiInformation.ts +22 -0
- package/src/opik/rest_api/serialization/types/BiInformationResponse.ts +21 -0
- package/src/opik/rest_api/serialization/types/CategoricalFeedbackDefinition.ts +29 -0
- package/src/opik/rest_api/serialization/types/CategoricalFeedbackDefinitionCreate.ts +21 -0
- package/src/opik/rest_api/serialization/types/CategoricalFeedbackDefinitionPublic.ts +29 -0
- package/src/opik/rest_api/serialization/types/CategoricalFeedbackDefinitionUpdate.ts +21 -0
- package/src/opik/rest_api/serialization/types/CategoricalFeedbackDetail.ts +20 -0
- package/src/opik/rest_api/serialization/types/CategoricalFeedbackDetailCreate.ts +20 -0
- package/src/opik/rest_api/serialization/types/CategoricalFeedbackDetailPublic.ts +20 -0
- package/src/opik/rest_api/serialization/types/CategoricalFeedbackDetailUpdate.ts +20 -0
- package/src/opik/rest_api/serialization/types/ChatCompletionChoice.ts +28 -0
- package/src/opik/rest_api/serialization/types/ChatCompletionResponse.ts +32 -0
- package/src/opik/rest_api/serialization/types/ChunkedOutputJsonNode.ts +23 -0
- package/src/opik/rest_api/serialization/types/ChunkedOutputJsonNodeType.ts +20 -0
- package/src/opik/rest_api/serialization/types/Column.ts +25 -0
- package/src/opik/rest_api/serialization/types/ColumnCompare.ts +25 -0
- package/src/opik/rest_api/serialization/types/ColumnCompareTypesItem.ts +16 -0
- package/src/opik/rest_api/serialization/types/ColumnPublic.ts +25 -0
- package/src/opik/rest_api/serialization/types/ColumnPublicTypesItem.ts +16 -0
- package/src/opik/rest_api/serialization/types/ColumnTypesItem.ts +14 -0
- package/src/opik/rest_api/serialization/types/CompletionTokensDetails.ts +20 -0
- package/src/opik/rest_api/serialization/types/CountValueStatPublic.ts +20 -0
- package/src/opik/rest_api/serialization/types/DataPointNumberPublic.ts +22 -0
- package/src/opik/rest_api/serialization/types/Dataset.ts +44 -0
- package/src/opik/rest_api/serialization/types/DatasetItem.ts +48 -0
- package/src/opik/rest_api/serialization/types/DatasetItemBatch.ts +25 -0
- package/src/opik/rest_api/serialization/types/DatasetItemCompare.ts +51 -0
- package/src/opik/rest_api/serialization/types/DatasetItemCompareSource.ts +16 -0
- package/src/opik/rest_api/serialization/types/DatasetItemPageCompare.ts +30 -0
- package/src/opik/rest_api/serialization/types/DatasetItemPagePublic.ts +30 -0
- package/src/opik/rest_api/serialization/types/DatasetItemPublic.ts +51 -0
- package/src/opik/rest_api/serialization/types/DatasetItemPublicSource.ts +16 -0
- package/src/opik/rest_api/serialization/types/DatasetItemSource.ts +16 -0
- package/src/opik/rest_api/serialization/types/DatasetItemWrite.ts +37 -0
- package/src/opik/rest_api/serialization/types/DatasetItemWriteSource.ts +16 -0
- package/src/opik/rest_api/serialization/types/DatasetPagePublic.ts +27 -0
- package/src/opik/rest_api/serialization/types/DatasetPublic.ts +44 -0
- package/src/opik/rest_api/serialization/types/DeleteFeedbackScore.ts +20 -0
- package/src/opik/rest_api/serialization/types/Delta.ts +26 -0
- package/src/opik/rest_api/serialization/types/DeltaRole.ts +14 -0
- package/src/opik/rest_api/serialization/types/ErrorInfo.ts +22 -0
- package/src/opik/rest_api/serialization/types/ErrorInfoPublic.ts +24 -0
- package/src/opik/rest_api/serialization/types/ErrorInfoWrite.ts +22 -0
- package/src/opik/rest_api/serialization/types/ErrorMessage.ts +22 -0
- package/src/opik/rest_api/serialization/types/ErrorMessageDetail.ts +24 -0
- package/src/opik/rest_api/serialization/types/ErrorMessagePublic.ts +20 -0
- package/src/opik/rest_api/serialization/types/Experiment.ts +46 -0
- package/src/opik/rest_api/serialization/types/ExperimentItem.ts +43 -0
- package/src/opik/rest_api/serialization/types/ExperimentItemCompare.ts +45 -0
- package/src/opik/rest_api/serialization/types/ExperimentItemPublic.ts +34 -0
- package/src/opik/rest_api/serialization/types/ExperimentPagePublic.ts +27 -0
- package/src/opik/rest_api/serialization/types/ExperimentPublic.ts +48 -0
- package/src/opik/rest_api/serialization/types/Feedback.ts +48 -0
- package/src/opik/rest_api/serialization/types/FeedbackCreate.ts +41 -0
- package/src/opik/rest_api/serialization/types/FeedbackDefinitionPagePublic.ts +27 -0
- package/src/opik/rest_api/serialization/types/FeedbackObjectPublic.ts +51 -0
- package/src/opik/rest_api/serialization/types/FeedbackPublic.ts +49 -0
- package/src/opik/rest_api/serialization/types/FeedbackScore.ts +35 -0
- package/src/opik/rest_api/serialization/types/FeedbackScoreAverage.ts +22 -0
- package/src/opik/rest_api/serialization/types/FeedbackScoreAveragePublic.ts +22 -0
- package/src/opik/rest_api/serialization/types/FeedbackScoreBatch.ts +21 -0
- package/src/opik/rest_api/serialization/types/FeedbackScoreBatchItem.ts +33 -0
- package/src/opik/rest_api/serialization/types/FeedbackScoreBatchItemSource.ts +16 -0
- package/src/opik/rest_api/serialization/types/FeedbackScoreCompare.ts +37 -0
- package/src/opik/rest_api/serialization/types/FeedbackScoreCompareSource.ts +16 -0
- package/src/opik/rest_api/serialization/types/FeedbackScorePublic.ts +37 -0
- package/src/opik/rest_api/serialization/types/FeedbackScorePublicSource.ts +16 -0
- package/src/opik/rest_api/serialization/types/FeedbackScoreSource.ts +16 -0
- package/src/opik/rest_api/serialization/types/FeedbackUpdate.ts +41 -0
- package/src/opik/rest_api/serialization/types/Function.ts +25 -0
- package/src/opik/rest_api/serialization/types/FunctionCall.ts +20 -0
- package/src/opik/rest_api/serialization/types/JsonNode.ts +14 -0
- package/src/opik/rest_api/serialization/types/JsonNodeCompare.ts +14 -0
- package/src/opik/rest_api/serialization/types/JsonNodePublic.ts +14 -0
- package/src/opik/rest_api/serialization/types/JsonNodeWrite.ts +14 -0
- package/src/opik/rest_api/serialization/types/JsonObjectSchema.ts +34 -0
- package/src/opik/rest_api/serialization/types/JsonSchema.ts +23 -0
- package/src/opik/rest_api/serialization/types/JsonSchemaElement.ts +20 -0
- package/src/opik/rest_api/serialization/types/Message.ts +16 -0
- package/src/opik/rest_api/serialization/types/NumericalFeedbackDefinition.ts +29 -0
- package/src/opik/rest_api/serialization/types/NumericalFeedbackDefinitionCreate.ts +21 -0
- package/src/opik/rest_api/serialization/types/NumericalFeedbackDefinitionPublic.ts +29 -0
- package/src/opik/rest_api/serialization/types/NumericalFeedbackDefinitionUpdate.ts +21 -0
- package/src/opik/rest_api/serialization/types/NumericalFeedbackDetail.ts +22 -0
- package/src/opik/rest_api/serialization/types/NumericalFeedbackDetailCreate.ts +22 -0
- package/src/opik/rest_api/serialization/types/NumericalFeedbackDetailPublic.ts +22 -0
- package/src/opik/rest_api/serialization/types/NumericalFeedbackDetailUpdate.ts +22 -0
- package/src/opik/rest_api/serialization/types/PageColumns.ts +19 -0
- package/src/opik/rest_api/serialization/types/PercentageValueStatPublic.ts +21 -0
- package/src/opik/rest_api/serialization/types/PercentageValuesPublic.ts +24 -0
- package/src/opik/rest_api/serialization/types/Project.ts +32 -0
- package/src/opik/rest_api/serialization/types/ProjectMetricResponsePublic.ts +29 -0
- package/src/opik/rest_api/serialization/types/ProjectMetricResponsePublicInterval.ts +16 -0
- package/src/opik/rest_api/serialization/types/ProjectMetricResponsePublicMetricType.ts +16 -0
- package/src/opik/rest_api/serialization/types/ProjectPagePublic.ts +29 -0
- package/src/opik/rest_api/serialization/types/ProjectPublic.ts +32 -0
- package/src/opik/rest_api/serialization/types/ProjectStatItemObjectPublic.ts +50 -0
- package/src/opik/rest_api/serialization/types/ProjectStatsPublic.ts +21 -0
- package/src/opik/rest_api/serialization/types/Prompt.ts +37 -0
- package/src/opik/rest_api/serialization/types/PromptDetail.ts +35 -0
- package/src/opik/rest_api/serialization/types/PromptPagePublic.ts +27 -0
- package/src/opik/rest_api/serialization/types/PromptPublic.ts +32 -0
- package/src/opik/rest_api/serialization/types/PromptVersion.ts +30 -0
- package/src/opik/rest_api/serialization/types/PromptVersionDetail.ts +32 -0
- package/src/opik/rest_api/serialization/types/PromptVersionLink.ts +24 -0
- package/src/opik/rest_api/serialization/types/PromptVersionLinkPublic.ts +24 -0
- package/src/opik/rest_api/serialization/types/PromptVersionLinkWrite.ts +20 -0
- package/src/opik/rest_api/serialization/types/PromptVersionPagePublic.ts +27 -0
- package/src/opik/rest_api/serialization/types/PromptVersionPublic.ts +30 -0
- package/src/opik/rest_api/serialization/types/ProviderApiKey.ts +30 -0
- package/src/opik/rest_api/serialization/types/ProviderApiKeyPublic.ts +30 -0
- package/src/opik/rest_api/serialization/types/ResponseFormat.ts +22 -0
- package/src/opik/rest_api/serialization/types/ResponseFormatType.ts +16 -0
- package/src/opik/rest_api/serialization/types/ResultsNumberPublic.ts +23 -0
- package/src/opik/rest_api/serialization/types/Span.ts +65 -0
- package/src/opik/rest_api/serialization/types/SpanBatch.ts +19 -0
- package/src/opik/rest_api/serialization/types/SpanPagePublic.ts +25 -0
- package/src/opik/rest_api/serialization/types/SpanPublic.ts +67 -0
- package/src/opik/rest_api/serialization/types/SpanPublicType.ts +14 -0
- package/src/opik/rest_api/serialization/types/SpanType.ts +15 -0
- package/src/opik/rest_api/serialization/types/SpanWrite.ts +51 -0
- package/src/opik/rest_api/serialization/types/SpanWriteType.ts +14 -0
- package/src/opik/rest_api/serialization/types/StreamOptions.ts +18 -0
- package/src/opik/rest_api/serialization/types/Tool.ts +20 -0
- package/src/opik/rest_api/serialization/types/ToolCall.ts +25 -0
- package/src/opik/rest_api/serialization/types/Trace.ts +54 -0
- package/src/opik/rest_api/serialization/types/TraceBatch.ts +19 -0
- package/src/opik/rest_api/serialization/types/TraceCountResponse.ts +24 -0
- package/src/opik/rest_api/serialization/types/TracePagePublic.ts +27 -0
- package/src/opik/rest_api/serialization/types/TracePublic.ts +56 -0
- package/src/opik/rest_api/serialization/types/TraceWrite.ts +38 -0
- package/src/opik/rest_api/serialization/types/Usage.ts +27 -0
- package/src/opik/rest_api/serialization/types/WorkspaceTraceCount.ts +22 -0
- package/src/opik/rest_api/serialization/types/index.ts +138 -0
- package/src/opik/tracer/Span.ts +34 -0
- package/src/opik/tracer/Trace.ts +61 -0
- package/tests/client.test.ts +25 -0
- package/tsconfig.json +25 -0
- package/tsup.config.ts +11 -0
- package/vitest.config.ts +13 -0
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
import { MaybeValid, Schema, SchemaType, ValidationError } from "../../Schema";
|
|
2
|
+
import { entries } from "../../utils/entries";
|
|
3
|
+
import { filterObject } from "../../utils/filterObject";
|
|
4
|
+
import { getErrorMessageForIncorrectType } from "../../utils/getErrorMessageForIncorrectType";
|
|
5
|
+
import { isPlainObject } from "../../utils/isPlainObject";
|
|
6
|
+
import { keys } from "../../utils/keys";
|
|
7
|
+
import { maybeSkipValidation } from "../../utils/maybeSkipValidation";
|
|
8
|
+
import { partition } from "../../utils/partition";
|
|
9
|
+
import { getObjectLikeUtils } from "../object-like";
|
|
10
|
+
import { getSchemaUtils } from "../schema-utils";
|
|
11
|
+
import { isProperty } from "./property";
|
|
12
|
+
import {
|
|
13
|
+
BaseObjectSchema,
|
|
14
|
+
inferObjectSchemaFromPropertySchemas,
|
|
15
|
+
inferParsedObjectFromPropertySchemas,
|
|
16
|
+
inferRawObjectFromPropertySchemas,
|
|
17
|
+
ObjectSchema,
|
|
18
|
+
ObjectUtils,
|
|
19
|
+
PropertySchemas,
|
|
20
|
+
} from "./types";
|
|
21
|
+
|
|
22
|
+
interface ObjectPropertyWithRawKey {
|
|
23
|
+
rawKey: string;
|
|
24
|
+
parsedKey: string;
|
|
25
|
+
valueSchema: Schema<any, any>;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export function object<ParsedKeys extends string, T extends PropertySchemas<ParsedKeys>>(
|
|
29
|
+
schemas: T
|
|
30
|
+
): inferObjectSchemaFromPropertySchemas<T> {
|
|
31
|
+
const baseSchema: BaseObjectSchema<
|
|
32
|
+
inferRawObjectFromPropertySchemas<T>,
|
|
33
|
+
inferParsedObjectFromPropertySchemas<T>
|
|
34
|
+
> = {
|
|
35
|
+
_getRawProperties: () =>
|
|
36
|
+
Object.entries(schemas).map(([parsedKey, propertySchema]) =>
|
|
37
|
+
isProperty(propertySchema) ? propertySchema.rawKey : parsedKey
|
|
38
|
+
) as unknown as (keyof inferRawObjectFromPropertySchemas<T>)[],
|
|
39
|
+
_getParsedProperties: () => keys(schemas) as unknown as (keyof inferParsedObjectFromPropertySchemas<T>)[],
|
|
40
|
+
|
|
41
|
+
parse: (raw, opts) => {
|
|
42
|
+
const rawKeyToProperty: Record<string, ObjectPropertyWithRawKey> = {};
|
|
43
|
+
const requiredKeys: string[] = [];
|
|
44
|
+
|
|
45
|
+
for (const [parsedKey, schemaOrObjectProperty] of entries(schemas)) {
|
|
46
|
+
const rawKey = isProperty(schemaOrObjectProperty) ? schemaOrObjectProperty.rawKey : parsedKey;
|
|
47
|
+
const valueSchema: Schema<any, any> = isProperty(schemaOrObjectProperty)
|
|
48
|
+
? schemaOrObjectProperty.valueSchema
|
|
49
|
+
: schemaOrObjectProperty;
|
|
50
|
+
|
|
51
|
+
const property: ObjectPropertyWithRawKey = {
|
|
52
|
+
rawKey,
|
|
53
|
+
parsedKey: parsedKey as string,
|
|
54
|
+
valueSchema,
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
rawKeyToProperty[rawKey] = property;
|
|
58
|
+
|
|
59
|
+
if (isSchemaRequired(valueSchema)) {
|
|
60
|
+
requiredKeys.push(rawKey);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
return validateAndTransformObject({
|
|
65
|
+
value: raw,
|
|
66
|
+
requiredKeys,
|
|
67
|
+
getProperty: (rawKey) => {
|
|
68
|
+
const property = rawKeyToProperty[rawKey];
|
|
69
|
+
if (property == null) {
|
|
70
|
+
return undefined;
|
|
71
|
+
}
|
|
72
|
+
return {
|
|
73
|
+
transformedKey: property.parsedKey,
|
|
74
|
+
transform: (propertyValue) =>
|
|
75
|
+
property.valueSchema.parse(propertyValue, {
|
|
76
|
+
...opts,
|
|
77
|
+
breadcrumbsPrefix: [...(opts?.breadcrumbsPrefix ?? []), rawKey],
|
|
78
|
+
}),
|
|
79
|
+
};
|
|
80
|
+
},
|
|
81
|
+
unrecognizedObjectKeys: opts?.unrecognizedObjectKeys,
|
|
82
|
+
skipValidation: opts?.skipValidation,
|
|
83
|
+
breadcrumbsPrefix: opts?.breadcrumbsPrefix,
|
|
84
|
+
omitUndefined: opts?.omitUndefined,
|
|
85
|
+
});
|
|
86
|
+
},
|
|
87
|
+
|
|
88
|
+
json: (parsed, opts) => {
|
|
89
|
+
const requiredKeys: string[] = [];
|
|
90
|
+
|
|
91
|
+
for (const [parsedKey, schemaOrObjectProperty] of entries(schemas)) {
|
|
92
|
+
const valueSchema: Schema<any, any> = isProperty(schemaOrObjectProperty)
|
|
93
|
+
? schemaOrObjectProperty.valueSchema
|
|
94
|
+
: schemaOrObjectProperty;
|
|
95
|
+
|
|
96
|
+
if (isSchemaRequired(valueSchema)) {
|
|
97
|
+
requiredKeys.push(parsedKey as string);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
return validateAndTransformObject({
|
|
102
|
+
value: parsed,
|
|
103
|
+
requiredKeys,
|
|
104
|
+
getProperty: (
|
|
105
|
+
parsedKey
|
|
106
|
+
): { transformedKey: string; transform: (propertyValue: unknown) => MaybeValid<any> } | undefined => {
|
|
107
|
+
const property = schemas[parsedKey as keyof T];
|
|
108
|
+
|
|
109
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
110
|
+
if (property == null) {
|
|
111
|
+
return undefined;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
if (isProperty(property)) {
|
|
115
|
+
return {
|
|
116
|
+
transformedKey: property.rawKey,
|
|
117
|
+
transform: (propertyValue) =>
|
|
118
|
+
property.valueSchema.json(propertyValue, {
|
|
119
|
+
...opts,
|
|
120
|
+
breadcrumbsPrefix: [...(opts?.breadcrumbsPrefix ?? []), parsedKey],
|
|
121
|
+
}),
|
|
122
|
+
};
|
|
123
|
+
} else {
|
|
124
|
+
return {
|
|
125
|
+
transformedKey: parsedKey,
|
|
126
|
+
transform: (propertyValue) =>
|
|
127
|
+
property.json(propertyValue, {
|
|
128
|
+
...opts,
|
|
129
|
+
breadcrumbsPrefix: [...(opts?.breadcrumbsPrefix ?? []), parsedKey],
|
|
130
|
+
}),
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
unrecognizedObjectKeys: opts?.unrecognizedObjectKeys,
|
|
135
|
+
skipValidation: opts?.skipValidation,
|
|
136
|
+
breadcrumbsPrefix: opts?.breadcrumbsPrefix,
|
|
137
|
+
omitUndefined: opts?.omitUndefined,
|
|
138
|
+
});
|
|
139
|
+
},
|
|
140
|
+
|
|
141
|
+
getType: () => SchemaType.OBJECT,
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
return {
|
|
145
|
+
...maybeSkipValidation(baseSchema),
|
|
146
|
+
...getSchemaUtils(baseSchema),
|
|
147
|
+
...getObjectLikeUtils(baseSchema),
|
|
148
|
+
...getObjectUtils(baseSchema),
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
function validateAndTransformObject<Transformed>({
|
|
153
|
+
value,
|
|
154
|
+
requiredKeys,
|
|
155
|
+
getProperty,
|
|
156
|
+
unrecognizedObjectKeys = "fail",
|
|
157
|
+
skipValidation = false,
|
|
158
|
+
breadcrumbsPrefix = [],
|
|
159
|
+
}: {
|
|
160
|
+
value: unknown;
|
|
161
|
+
requiredKeys: string[];
|
|
162
|
+
getProperty: (
|
|
163
|
+
preTransformedKey: string
|
|
164
|
+
) => { transformedKey: string; transform: (propertyValue: unknown) => MaybeValid<any> } | undefined;
|
|
165
|
+
unrecognizedObjectKeys: "fail" | "passthrough" | "strip" | undefined;
|
|
166
|
+
skipValidation: boolean | undefined;
|
|
167
|
+
breadcrumbsPrefix: string[] | undefined;
|
|
168
|
+
omitUndefined: boolean | undefined;
|
|
169
|
+
}): MaybeValid<Transformed> {
|
|
170
|
+
if (!isPlainObject(value)) {
|
|
171
|
+
return {
|
|
172
|
+
ok: false,
|
|
173
|
+
errors: [
|
|
174
|
+
{
|
|
175
|
+
path: breadcrumbsPrefix,
|
|
176
|
+
message: getErrorMessageForIncorrectType(value, "object"),
|
|
177
|
+
},
|
|
178
|
+
],
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
const missingRequiredKeys = new Set(requiredKeys);
|
|
183
|
+
const errors: ValidationError[] = [];
|
|
184
|
+
const transformed: Record<string | number | symbol, any> = {};
|
|
185
|
+
|
|
186
|
+
for (const [preTransformedKey, preTransformedItemValue] of Object.entries(value)) {
|
|
187
|
+
const property = getProperty(preTransformedKey);
|
|
188
|
+
|
|
189
|
+
if (property != null) {
|
|
190
|
+
missingRequiredKeys.delete(preTransformedKey);
|
|
191
|
+
|
|
192
|
+
const value = property.transform(preTransformedItemValue);
|
|
193
|
+
if (value.ok) {
|
|
194
|
+
transformed[property.transformedKey] = value.value;
|
|
195
|
+
} else {
|
|
196
|
+
transformed[preTransformedKey] = preTransformedItemValue;
|
|
197
|
+
errors.push(...value.errors);
|
|
198
|
+
}
|
|
199
|
+
} else {
|
|
200
|
+
switch (unrecognizedObjectKeys) {
|
|
201
|
+
case "fail":
|
|
202
|
+
errors.push({
|
|
203
|
+
path: [...breadcrumbsPrefix, preTransformedKey],
|
|
204
|
+
message: `Unexpected key "${preTransformedKey}"`,
|
|
205
|
+
});
|
|
206
|
+
break;
|
|
207
|
+
case "strip":
|
|
208
|
+
break;
|
|
209
|
+
case "passthrough":
|
|
210
|
+
transformed[preTransformedKey] = preTransformedItemValue;
|
|
211
|
+
break;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
errors.push(
|
|
217
|
+
...requiredKeys
|
|
218
|
+
.filter((key) => missingRequiredKeys.has(key))
|
|
219
|
+
.map((key) => ({
|
|
220
|
+
path: breadcrumbsPrefix,
|
|
221
|
+
message: `Missing required key "${key}"`,
|
|
222
|
+
}))
|
|
223
|
+
);
|
|
224
|
+
|
|
225
|
+
if (errors.length === 0 || skipValidation) {
|
|
226
|
+
return {
|
|
227
|
+
ok: true,
|
|
228
|
+
value: transformed as Transformed,
|
|
229
|
+
};
|
|
230
|
+
} else {
|
|
231
|
+
return {
|
|
232
|
+
ok: false,
|
|
233
|
+
errors,
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
export function getObjectUtils<Raw, Parsed>(schema: BaseObjectSchema<Raw, Parsed>): ObjectUtils<Raw, Parsed> {
|
|
239
|
+
return {
|
|
240
|
+
extend: <RawExtension, ParsedExtension>(extension: ObjectSchema<RawExtension, ParsedExtension>) => {
|
|
241
|
+
const baseSchema: BaseObjectSchema<Raw & RawExtension, Parsed & ParsedExtension> = {
|
|
242
|
+
_getParsedProperties: () => [...schema._getParsedProperties(), ...extension._getParsedProperties()],
|
|
243
|
+
_getRawProperties: () => [...schema._getRawProperties(), ...extension._getRawProperties()],
|
|
244
|
+
parse: (raw, opts) => {
|
|
245
|
+
return validateAndTransformExtendedObject({
|
|
246
|
+
extensionKeys: extension._getRawProperties(),
|
|
247
|
+
value: raw,
|
|
248
|
+
transformBase: (rawBase) => schema.parse(rawBase, opts),
|
|
249
|
+
transformExtension: (rawExtension) => extension.parse(rawExtension, opts),
|
|
250
|
+
});
|
|
251
|
+
},
|
|
252
|
+
json: (parsed, opts) => {
|
|
253
|
+
return validateAndTransformExtendedObject({
|
|
254
|
+
extensionKeys: extension._getParsedProperties(),
|
|
255
|
+
value: parsed,
|
|
256
|
+
transformBase: (parsedBase) => schema.json(parsedBase, opts),
|
|
257
|
+
transformExtension: (parsedExtension) => extension.json(parsedExtension, opts),
|
|
258
|
+
});
|
|
259
|
+
},
|
|
260
|
+
getType: () => SchemaType.OBJECT,
|
|
261
|
+
};
|
|
262
|
+
|
|
263
|
+
return {
|
|
264
|
+
...baseSchema,
|
|
265
|
+
...getSchemaUtils(baseSchema),
|
|
266
|
+
...getObjectLikeUtils(baseSchema),
|
|
267
|
+
...getObjectUtils(baseSchema),
|
|
268
|
+
};
|
|
269
|
+
},
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
function validateAndTransformExtendedObject<PreTransformedExtension, TransformedBase, TransformedExtension>({
|
|
274
|
+
extensionKeys,
|
|
275
|
+
value,
|
|
276
|
+
transformBase,
|
|
277
|
+
transformExtension,
|
|
278
|
+
}: {
|
|
279
|
+
extensionKeys: (keyof PreTransformedExtension)[];
|
|
280
|
+
value: unknown;
|
|
281
|
+
transformBase: (value: unknown) => MaybeValid<TransformedBase>;
|
|
282
|
+
transformExtension: (value: unknown) => MaybeValid<TransformedExtension>;
|
|
283
|
+
}): MaybeValid<TransformedBase & TransformedExtension> {
|
|
284
|
+
const extensionPropertiesSet = new Set(extensionKeys);
|
|
285
|
+
const [extensionProperties, baseProperties] = partition(keys(value), (key) =>
|
|
286
|
+
extensionPropertiesSet.has(key as keyof PreTransformedExtension)
|
|
287
|
+
);
|
|
288
|
+
|
|
289
|
+
const transformedBase = transformBase(filterObject(value, baseProperties));
|
|
290
|
+
const transformedExtension = transformExtension(filterObject(value, extensionProperties));
|
|
291
|
+
|
|
292
|
+
if (transformedBase.ok && transformedExtension.ok) {
|
|
293
|
+
return {
|
|
294
|
+
ok: true,
|
|
295
|
+
value: {
|
|
296
|
+
...transformedBase.value,
|
|
297
|
+
...transformedExtension.value,
|
|
298
|
+
},
|
|
299
|
+
};
|
|
300
|
+
} else {
|
|
301
|
+
return {
|
|
302
|
+
ok: false,
|
|
303
|
+
errors: [
|
|
304
|
+
...(transformedBase.ok ? [] : transformedBase.errors),
|
|
305
|
+
...(transformedExtension.ok ? [] : transformedExtension.errors),
|
|
306
|
+
],
|
|
307
|
+
};
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
function isSchemaRequired(schema: Schema<any, any>): boolean {
|
|
312
|
+
return !isSchemaOptional(schema);
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
function isSchemaOptional(schema: Schema<any, any>): boolean {
|
|
316
|
+
switch (schema.getType()) {
|
|
317
|
+
case SchemaType.ANY:
|
|
318
|
+
case SchemaType.UNKNOWN:
|
|
319
|
+
case SchemaType.OPTIONAL:
|
|
320
|
+
return true;
|
|
321
|
+
default:
|
|
322
|
+
return false;
|
|
323
|
+
}
|
|
324
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { object } from "./object";
|
|
2
|
+
import { inferParsedPropertySchema, inferRawObjectFromPropertySchemas, ObjectSchema, PropertySchemas } from "./types";
|
|
3
|
+
|
|
4
|
+
export function objectWithoutOptionalProperties<ParsedKeys extends string, T extends PropertySchemas<ParsedKeys>>(
|
|
5
|
+
schemas: T
|
|
6
|
+
): inferObjectWithoutOptionalPropertiesSchemaFromPropertySchemas<T> {
|
|
7
|
+
return object(schemas) as unknown as inferObjectWithoutOptionalPropertiesSchemaFromPropertySchemas<T>;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export type inferObjectWithoutOptionalPropertiesSchemaFromPropertySchemas<T extends PropertySchemas<keyof T>> =
|
|
11
|
+
ObjectSchema<
|
|
12
|
+
inferRawObjectFromPropertySchemas<T>,
|
|
13
|
+
inferParsedObjectWithoutOptionalPropertiesFromPropertySchemas<T>
|
|
14
|
+
>;
|
|
15
|
+
|
|
16
|
+
export type inferParsedObjectWithoutOptionalPropertiesFromPropertySchemas<T extends PropertySchemas<keyof T>> = {
|
|
17
|
+
[K in keyof T]: inferParsedPropertySchema<T[K]>;
|
|
18
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Schema } from "../../Schema";
|
|
2
|
+
|
|
3
|
+
export function property<RawKey extends string, RawValue, ParsedValue>(
|
|
4
|
+
rawKey: RawKey,
|
|
5
|
+
valueSchema: Schema<RawValue, ParsedValue>
|
|
6
|
+
): Property<RawKey, RawValue, ParsedValue> {
|
|
7
|
+
return {
|
|
8
|
+
rawKey,
|
|
9
|
+
valueSchema,
|
|
10
|
+
isProperty: true,
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export interface Property<RawKey extends string, RawValue, ParsedValue> {
|
|
15
|
+
rawKey: RawKey;
|
|
16
|
+
valueSchema: Schema<RawValue, ParsedValue>;
|
|
17
|
+
isProperty: true;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export function isProperty<O extends Property<any, any, any>>(maybeProperty: unknown): maybeProperty is O {
|
|
21
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
22
|
+
return (maybeProperty as O).isProperty;
|
|
23
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { BaseSchema, inferParsed, inferRaw, Schema } from "../../Schema";
|
|
2
|
+
import { addQuestionMarksToNullableProperties } from "../../utils/addQuestionMarksToNullableProperties";
|
|
3
|
+
import { ObjectLikeUtils } from "../object-like";
|
|
4
|
+
import { SchemaUtils } from "../schema-utils";
|
|
5
|
+
import { Property } from "./property";
|
|
6
|
+
|
|
7
|
+
export type ObjectSchema<Raw, Parsed> = BaseObjectSchema<Raw, Parsed> &
|
|
8
|
+
ObjectLikeUtils<Raw, Parsed> &
|
|
9
|
+
ObjectUtils<Raw, Parsed> &
|
|
10
|
+
SchemaUtils<Raw, Parsed>;
|
|
11
|
+
|
|
12
|
+
export interface BaseObjectSchema<Raw, Parsed> extends BaseSchema<Raw, Parsed> {
|
|
13
|
+
_getRawProperties: () => (keyof Raw)[];
|
|
14
|
+
_getParsedProperties: () => (keyof Parsed)[];
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export interface ObjectUtils<Raw, Parsed> {
|
|
18
|
+
extend: <RawExtension, ParsedExtension>(
|
|
19
|
+
schemas: ObjectSchema<RawExtension, ParsedExtension>
|
|
20
|
+
) => ObjectSchema<Raw & RawExtension, Parsed & ParsedExtension>;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export type inferRawObject<O extends ObjectSchema<any, any>> = O extends ObjectSchema<infer Raw, any> ? Raw : never;
|
|
24
|
+
|
|
25
|
+
export type inferParsedObject<O extends ObjectSchema<any, any>> = O extends ObjectSchema<any, infer Parsed>
|
|
26
|
+
? Parsed
|
|
27
|
+
: never;
|
|
28
|
+
|
|
29
|
+
export type inferObjectSchemaFromPropertySchemas<T extends PropertySchemas<keyof T>> = ObjectSchema<
|
|
30
|
+
inferRawObjectFromPropertySchemas<T>,
|
|
31
|
+
inferParsedObjectFromPropertySchemas<T>
|
|
32
|
+
>;
|
|
33
|
+
|
|
34
|
+
export type inferRawObjectFromPropertySchemas<T extends PropertySchemas<keyof T>> =
|
|
35
|
+
addQuestionMarksToNullableProperties<{
|
|
36
|
+
[ParsedKey in keyof T as inferRawKey<ParsedKey, T[ParsedKey]>]: inferRawPropertySchema<T[ParsedKey]>;
|
|
37
|
+
}>;
|
|
38
|
+
|
|
39
|
+
export type inferParsedObjectFromPropertySchemas<T extends PropertySchemas<keyof T>> =
|
|
40
|
+
addQuestionMarksToNullableProperties<{
|
|
41
|
+
[K in keyof T]: inferParsedPropertySchema<T[K]>;
|
|
42
|
+
}>;
|
|
43
|
+
|
|
44
|
+
export type PropertySchemas<ParsedKeys extends string | number | symbol> = Record<
|
|
45
|
+
ParsedKeys,
|
|
46
|
+
Property<any, any, any> | Schema<any, any>
|
|
47
|
+
>;
|
|
48
|
+
|
|
49
|
+
export type inferRawPropertySchema<P extends Property<any, any, any> | Schema<any, any>> = P extends Property<
|
|
50
|
+
any,
|
|
51
|
+
infer Raw,
|
|
52
|
+
any
|
|
53
|
+
>
|
|
54
|
+
? Raw
|
|
55
|
+
: P extends Schema<any, any>
|
|
56
|
+
? inferRaw<P>
|
|
57
|
+
: never;
|
|
58
|
+
|
|
59
|
+
export type inferParsedPropertySchema<P extends Property<any, any, any> | Schema<any, any>> = P extends Property<
|
|
60
|
+
any,
|
|
61
|
+
any,
|
|
62
|
+
infer Parsed
|
|
63
|
+
>
|
|
64
|
+
? Parsed
|
|
65
|
+
: P extends Schema<any, any>
|
|
66
|
+
? inferParsed<P>
|
|
67
|
+
: never;
|
|
68
|
+
|
|
69
|
+
export type inferRawKey<
|
|
70
|
+
ParsedKey extends string | number | symbol,
|
|
71
|
+
P extends Property<any, any, any> | Schema<any, any>
|
|
72
|
+
> = P extends Property<infer Raw, any, any> ? Raw : ParsedKey;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { BaseSchema } from "../../Schema";
|
|
2
|
+
import { filterObject } from "../../utils/filterObject";
|
|
3
|
+
import { getErrorMessageForIncorrectType } from "../../utils/getErrorMessageForIncorrectType";
|
|
4
|
+
import { isPlainObject } from "../../utils/isPlainObject";
|
|
5
|
+
import { getSchemaUtils } from "../schema-utils";
|
|
6
|
+
import { ObjectLikeSchema, ObjectLikeUtils } from "./types";
|
|
7
|
+
|
|
8
|
+
export function getObjectLikeUtils<Raw, Parsed>(schema: BaseSchema<Raw, Parsed>): ObjectLikeUtils<Raw, Parsed> {
|
|
9
|
+
return {
|
|
10
|
+
withParsedProperties: (properties) => withParsedProperties(schema, properties),
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* object-like utils are defined in one file to resolve issues with circular imports
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
export function withParsedProperties<RawObjectShape, ParsedObjectShape, Properties>(
|
|
19
|
+
objectLike: BaseSchema<RawObjectShape, ParsedObjectShape>,
|
|
20
|
+
properties: { [K in keyof Properties]: Properties[K] | ((parsed: ParsedObjectShape) => Properties[K]) }
|
|
21
|
+
): ObjectLikeSchema<RawObjectShape, ParsedObjectShape & Properties> {
|
|
22
|
+
const objectSchema: BaseSchema<RawObjectShape, ParsedObjectShape & Properties> = {
|
|
23
|
+
parse: (raw, opts) => {
|
|
24
|
+
const parsedObject = objectLike.parse(raw, opts);
|
|
25
|
+
if (!parsedObject.ok) {
|
|
26
|
+
return parsedObject;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const additionalProperties = Object.entries(properties).reduce<Record<string, any>>(
|
|
30
|
+
(processed, [key, value]) => {
|
|
31
|
+
return {
|
|
32
|
+
...processed,
|
|
33
|
+
[key]: typeof value === "function" ? value(parsedObject.value) : value,
|
|
34
|
+
};
|
|
35
|
+
},
|
|
36
|
+
{}
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
return {
|
|
40
|
+
ok: true,
|
|
41
|
+
value: {
|
|
42
|
+
...parsedObject.value,
|
|
43
|
+
...(additionalProperties as Properties),
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
},
|
|
47
|
+
|
|
48
|
+
json: (parsed, opts) => {
|
|
49
|
+
if (!isPlainObject(parsed)) {
|
|
50
|
+
return {
|
|
51
|
+
ok: false,
|
|
52
|
+
errors: [
|
|
53
|
+
{
|
|
54
|
+
path: opts?.breadcrumbsPrefix ?? [],
|
|
55
|
+
message: getErrorMessageForIncorrectType(parsed, "object"),
|
|
56
|
+
},
|
|
57
|
+
],
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// strip out added properties
|
|
62
|
+
const addedPropertyKeys = new Set(Object.keys(properties));
|
|
63
|
+
const parsedWithoutAddedProperties = filterObject(
|
|
64
|
+
parsed,
|
|
65
|
+
Object.keys(parsed).filter((key) => !addedPropertyKeys.has(key))
|
|
66
|
+
);
|
|
67
|
+
|
|
68
|
+
return objectLike.json(parsedWithoutAddedProperties as ParsedObjectShape, opts);
|
|
69
|
+
},
|
|
70
|
+
|
|
71
|
+
getType: () => objectLike.getType(),
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
return {
|
|
75
|
+
...objectSchema,
|
|
76
|
+
...getSchemaUtils(objectSchema),
|
|
77
|
+
...getObjectLikeUtils(objectSchema),
|
|
78
|
+
};
|
|
79
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { BaseSchema, Schema } from "../../Schema";
|
|
2
|
+
|
|
3
|
+
export type ObjectLikeSchema<Raw, Parsed> = Schema<Raw, Parsed> &
|
|
4
|
+
BaseSchema<Raw, Parsed> &
|
|
5
|
+
ObjectLikeUtils<Raw, Parsed>;
|
|
6
|
+
|
|
7
|
+
export interface ObjectLikeUtils<Raw, Parsed> {
|
|
8
|
+
withParsedProperties: <T extends Record<string, any>>(properties: {
|
|
9
|
+
[K in keyof T]: T[K] | ((parsed: Parsed) => T[K]);
|
|
10
|
+
}) => ObjectLikeSchema<Raw, Parsed & T>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { SchemaType } from "../../Schema";
|
|
2
|
+
import { createIdentitySchemaCreator } from "../../utils/createIdentitySchemaCreator";
|
|
3
|
+
import { getErrorMessageForIncorrectType } from "../../utils/getErrorMessageForIncorrectType";
|
|
4
|
+
|
|
5
|
+
export const boolean = createIdentitySchemaCreator<boolean>(
|
|
6
|
+
SchemaType.BOOLEAN,
|
|
7
|
+
(value, { breadcrumbsPrefix = [] } = {}) => {
|
|
8
|
+
if (typeof value === "boolean") {
|
|
9
|
+
return {
|
|
10
|
+
ok: true,
|
|
11
|
+
value,
|
|
12
|
+
};
|
|
13
|
+
} else {
|
|
14
|
+
return {
|
|
15
|
+
ok: false,
|
|
16
|
+
errors: [
|
|
17
|
+
{
|
|
18
|
+
path: breadcrumbsPrefix,
|
|
19
|
+
message: getErrorMessageForIncorrectType(value, "boolean"),
|
|
20
|
+
},
|
|
21
|
+
],
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
);
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { SchemaType } from "../../Schema";
|
|
2
|
+
import { createIdentitySchemaCreator } from "../../utils/createIdentitySchemaCreator";
|
|
3
|
+
import { getErrorMessageForIncorrectType } from "../../utils/getErrorMessageForIncorrectType";
|
|
4
|
+
|
|
5
|
+
export const number = createIdentitySchemaCreator<number>(
|
|
6
|
+
SchemaType.NUMBER,
|
|
7
|
+
(value, { breadcrumbsPrefix = [] } = {}) => {
|
|
8
|
+
if (typeof value === "number") {
|
|
9
|
+
return {
|
|
10
|
+
ok: true,
|
|
11
|
+
value,
|
|
12
|
+
};
|
|
13
|
+
} else {
|
|
14
|
+
return {
|
|
15
|
+
ok: false,
|
|
16
|
+
errors: [
|
|
17
|
+
{
|
|
18
|
+
path: breadcrumbsPrefix,
|
|
19
|
+
message: getErrorMessageForIncorrectType(value, "number"),
|
|
20
|
+
},
|
|
21
|
+
],
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
);
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { SchemaType } from "../../Schema";
|
|
2
|
+
import { createIdentitySchemaCreator } from "../../utils/createIdentitySchemaCreator";
|
|
3
|
+
import { getErrorMessageForIncorrectType } from "../../utils/getErrorMessageForIncorrectType";
|
|
4
|
+
|
|
5
|
+
export const string = createIdentitySchemaCreator<string>(
|
|
6
|
+
SchemaType.STRING,
|
|
7
|
+
(value, { breadcrumbsPrefix = [] } = {}) => {
|
|
8
|
+
if (typeof value === "string") {
|
|
9
|
+
return {
|
|
10
|
+
ok: true,
|
|
11
|
+
value,
|
|
12
|
+
};
|
|
13
|
+
} else {
|
|
14
|
+
return {
|
|
15
|
+
ok: false,
|
|
16
|
+
errors: [
|
|
17
|
+
{
|
|
18
|
+
path: breadcrumbsPrefix,
|
|
19
|
+
message: getErrorMessageForIncorrectType(value, "string"),
|
|
20
|
+
},
|
|
21
|
+
],
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
);
|