From 8fbd657bfdfca8200ffaaf6e5fe84159055046ff Mon Sep 17 00:00:00 2001 From: Melisa Anabella Rossi Date: Sat, 13 Jul 2024 18:47:28 -0300 Subject: [PATCH] feat: add new bid schema --- report/schemas.api.md | 25 ++--------- src/dapps/bid.ts | 98 +++++++++++++++++++++++++++++++++---------- 2 files changed, 79 insertions(+), 44 deletions(-) diff --git a/report/schemas.api.md b/report/schemas.api.md index a1674b7c..7c410f90 100644 --- a/report/schemas.api.md +++ b/report/schemas.api.md @@ -230,28 +230,13 @@ export type BaseEvent = { timestamp: number; }; +// Warning: (ae-forgotten-export) The symbol "LegacyBid" needs to be exported by the entry point index.d.ts +// Warning: (ae-forgotten-export) The symbol "BidTrade" needs to be exported by the entry point index.d.ts // Warning: (ae-missing-release-tag) "Bid" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // Warning: (ae-missing-release-tag) "Bid" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -export type Bid = { - id: string; - bidAddress: string; - bidder: string; - seller: string; - price: string; - fingerprint: string; - status: ListingStatus; - blockchainId: string; - blockNumber: string; - expiresAt: number; - createdAt: number; - updatedAt: number; - contractAddress: string; - tokenId: string; - network: Network.ETHEREUM | Network.MATIC; - chainId: ChainId; -}; +export type Bid = LegacyBid | BidTrade; // @public (undocumented) export namespace Bid { @@ -2974,9 +2959,7 @@ export namespace WorldConfiguration { // // src/dapps/account.ts:30:3 - (ae-incompatible-release-tags) The symbol "network" is marked as @public, but its signature references "Network" which is marked as @alpha // src/dapps/analyticsDayData.ts:14:3 - (ae-incompatible-release-tags) The symbol "network" is marked as @public, but its signature references "Network" which is marked as @alpha -// src/dapps/bid.ts:21:3 - (ae-incompatible-release-tags) The symbol "network" is marked as @public, but its signature references "Network" which is marked as @alpha -// src/dapps/bid.ts:22:3 - (ae-incompatible-release-tags) The symbol "chainId" is marked as @public, but its signature references "ChainId" which is marked as @alpha -// src/dapps/bid.ts:41:3 - (ae-incompatible-release-tags) The symbol "network" is marked as @public, but its signature references "Network" which is marked as @alpha +// src/dapps/bid.ts:58:3 - (ae-incompatible-release-tags) The symbol "network" is marked as @public, but its signature references "Network" which is marked as @alpha // src/dapps/collection.ts:15:3 - (ae-incompatible-release-tags) The symbol "network" is marked as @public, but its signature references "Network" which is marked as @alpha // src/dapps/collection.ts:16:3 - (ae-incompatible-release-tags) The symbol "chainId" is marked as @public, but its signature references "ChainId" which is marked as @alpha // src/dapps/collection.ts:39:3 - (ae-incompatible-release-tags) The symbol "network" is marked as @public, but its signature references "Network" which is marked as @alpha diff --git a/src/dapps/bid.ts b/src/dapps/bid.ts index 4d820b75..aa079f81 100644 --- a/src/dapps/bid.ts +++ b/src/dapps/bid.ts @@ -3,25 +3,42 @@ import { ChainId } from './chain-id' import { ListingStatus } from './listing-status' import { Network } from './network' -export type Bid = { +export type BaseBid = { id: string - bidAddress: string bidder: string seller: string price: string - fingerprint: string status: ListingStatus - blockchainId: string - blockNumber: string expiresAt: number createdAt: number updatedAt: number contractAddress: string - tokenId: string network: Network.ETHEREUM | Network.MATIC chainId: ChainId + fingerprint: string +} + +type LegacyBid = BaseBid & { + bidAddress: string + blockchainId: string + blockNumber: string + tokenId: string +} + +export type ItemBid = BaseBid & { + tradeId: string + itemId: string } +export type NFTBid = BaseBid & { + tradeId: string + tokenId: string +} + +export type BidTrade = NFTBid | ItemBid + +export type Bid = LegacyBid | BidTrade + export enum BidSortBy { RECENTLY_OFFERED = 'recently_offered', RECENTLY_UPDATED = 'recently_updated', @@ -42,15 +59,12 @@ export type BidFilters = { } export namespace Bid { - export const schema: JSONSchema = { + const baseBidSchema: JSONSchema = { type: 'object', properties: { id: { type: 'string' }, - bidAddress: { - type: 'string' - }, bidder: { type: 'string' }, @@ -64,18 +78,9 @@ export namespace Bid { type: 'string' }, status: ListingStatus.schema, - blockchainId: { - type: 'string' - }, - blockNumber: { - type: 'string' - }, contractAddress: { type: 'string' }, - tokenId: { - type: 'string' - }, network: Network.schema, chainId: ChainId.schema, expiresAt: { @@ -90,16 +95,12 @@ export namespace Bid { }, required: [ 'id', - 'bidAddress', 'bidder', 'seller', 'price', 'fingerprint', 'status', - 'blockchainId', - 'blockNumber', 'contractAddress', - 'tokenId', 'network', 'chainId', 'expiresAt', @@ -108,5 +109,56 @@ export namespace Bid { ] } + export const schema: JSONSchema = { + type: 'object', + required: [], + oneOf: [ + { + properties: { + ...baseBidSchema.properties, + tradeId: { + type: 'string' + }, + tokenId: { + type: 'string' + } + }, + required: [...baseBidSchema.required, 'tradeId', 'tokenId'] + }, + { + type: 'object', + properties: { + ...baseBidSchema.properties, + tradeId: { + type: 'string' + }, + itemId: { + type: 'string' + } + }, + required: [...baseBidSchema.required, 'tradeId', 'item'] + }, + { + type: 'object', + properties: { + ...baseBidSchema.properties, + bidAddress: { + type: 'string' + }, + blockchainId: { + type: 'string' + }, + blockNumber: { + type: 'string' + }, + tokenId: { + type: 'string' + } + }, + required: [...baseBidSchema.required, 'bidAddress', 'blockchainId', 'blockNumber', 'tokenId'] + } + ] + } + export const validate: ValidateFunction = generateLazyValidator(schema) }