From 8fbd657bfdfca8200ffaaf6e5fe84159055046ff Mon Sep 17 00:00:00 2001 From: Melisa Anabella Rossi Date: Sat, 13 Jul 2024 18:47:28 -0300 Subject: [PATCH 1/3] 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) } From 7064eb7d4ddc91eb9967bd0e042ee9c4d67bea09 Mon Sep 17 00:00:00 2001 From: Melisa Anabella Rossi Date: Sat, 13 Jul 2024 19:26:07 -0300 Subject: [PATCH 2/3] feat: add signature to trade --- report/schemas.api.md | 55 +++++++++++++++++++++++++++++++++++++------ src/dapps/trade.ts | 1 + src/index.ts | 7 +++++- 3 files changed, 55 insertions(+), 8 deletions(-) diff --git a/report/schemas.api.md b/report/schemas.api.md index 7c410f90..fb30f876 100644 --- a/report/schemas.api.md +++ b/report/schemas.api.md @@ -230,6 +230,15 @@ export type BaseEvent = { timestamp: number; }; +// Warning: (ae-missing-release-tag) "BaseTradeAsset" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type BaseTradeAsset = { + assetType: TradeAssetType; + contractAddress: string; + extra: string; +}; + // 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) @@ -480,6 +489,14 @@ export type CollectionFilters = { network?: Network; }; +// Warning: (ae-missing-release-tag) "CollectionItemTradeAsset" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type CollectionItemTradeAsset = BaseTradeAsset & { + assetType: TradeAssetType.COLLECTION_ITEM; + itemId: string; +}; + // Warning: (ae-missing-release-tag) "CollectionSortBy" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) @@ -774,6 +791,22 @@ export enum EntityType { WEARABLE = "wearable" } +// Warning: (ae-missing-release-tag) "ERC20TradeAsset" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type ERC20TradeAsset = BaseTradeAsset & { + assetType: TradeAssetType.ERC20; + amount: string; +}; + +// Warning: (ae-missing-release-tag) "ERC721TradeAsset" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type ERC721TradeAsset = BaseTradeAsset & { + assetType: TradeAssetType.ERC721; + tokenId: string; +}; + // @public export type EthAddress = string; @@ -2634,6 +2667,7 @@ export type ThirdPartyProps = { // @public (undocumented) export type Trade = { id: string; + signature: string; signer: string; network: Network; chainId: ChainId; @@ -2644,14 +2678,21 @@ export type Trade = { received: TradeAssetWithBeneficiary[]; }; -// Warning: (ae-forgotten-export) The symbol "CollectionItemTradeAsset" needs to be exported by the entry point index.d.ts -// Warning: (ae-forgotten-export) The symbol "ERC20TradeAsset" needs to be exported by the entry point index.d.ts -// Warning: (ae-forgotten-export) The symbol "ERC721TradeAsset" needs to be exported by the entry point index.d.ts // Warning: (ae-missing-release-tag) "TradeAsset" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) export type TradeAsset = CollectionItemTradeAsset | ERC20TradeAsset | ERC721TradeAsset; +// Warning: (ae-missing-release-tag) "TradeAssetDirection" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export enum TradeAssetDirection { + // (undocumented) + RECEIVED = "received", + // (undocumented) + SENT = "sent" +} + // Warning: (ae-missing-release-tag) "TradeAssetType" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) @@ -2995,10 +3036,10 @@ export namespace WorldConfiguration { // src/dapps/sale.ts:18:3 - (ae-incompatible-release-tags) The symbol "network" is marked as @public, but its signature references "Network" which is marked as @alpha // src/dapps/sale.ts:19:3 - (ae-incompatible-release-tags) The symbol "chainId" is marked as @public, but its signature references "ChainId" which is marked as @alpha // src/dapps/sale.ts:42:3 - (ae-incompatible-release-tags) The symbol "network" is marked as @public, but its signature references "Network" which is marked as @alpha -// src/dapps/trade.ts:69:3 - (ae-incompatible-release-tags) The symbol "network" is marked as @public, but its signature references "Network" which is marked as @alpha -// src/dapps/trade.ts:70:3 - (ae-incompatible-release-tags) The symbol "chainId" is marked as @public, but its signature references "ChainId" which is marked as @alpha -// src/dapps/trade.ts:81:3 - (ae-incompatible-release-tags) The symbol "network" is marked as @public, but its signature references "Network" which is marked as @alpha -// src/dapps/trade.ts:82:3 - (ae-incompatible-release-tags) The symbol "chainId" is marked as @public, but its signature references "ChainId" which is marked as @alpha +// src/dapps/trade.ts:70:3 - (ae-incompatible-release-tags) The symbol "network" is marked as @public, but its signature references "Network" which is marked as @alpha +// src/dapps/trade.ts:71:3 - (ae-incompatible-release-tags) The symbol "chainId" is marked as @public, but its signature references "ChainId" which is marked as @alpha +// src/dapps/trade.ts:82:3 - (ae-incompatible-release-tags) The symbol "network" is marked as @public, but its signature references "Network" which is marked as @alpha +// src/dapps/trade.ts:83:3 - (ae-incompatible-release-tags) The symbol "chainId" is marked as @public, but its signature references "ChainId" which is marked as @alpha // src/platform/events/blockchain.ts:19:3 - (ae-forgotten-export) The symbol "BidMetadata" needs to be exported by the entry point index.d.ts // src/platform/events/blockchain.ts:60:3 - (ae-forgotten-export) The symbol "RentalMetadata" needs to be exported by the entry point index.d.ts // src/platform/item/emote/adr74/emote-data-adr74.ts:7:3 - (ae-incompatible-release-tags) The symbol "representations" is marked as @public, but its signature references "EmoteRepresentationADR74" which is marked as @alpha diff --git a/src/dapps/trade.ts b/src/dapps/trade.ts index a0c143a9..3a887d29 100644 --- a/src/dapps/trade.ts +++ b/src/dapps/trade.ts @@ -65,6 +65,7 @@ export type TradeAssetWithBeneficiary = TradeAsset & { export type Trade = { id: string + signature: string signer: string network: Network chainId: ChainId diff --git a/src/index.ts b/src/index.ts index 9395dba1..7bbea68f 100644 --- a/src/index.ts +++ b/src/index.ts @@ -27,11 +27,16 @@ export { Trade, TradeAsset, TradeAssetType, + TradeAssetDirection, TradeChecks, TradeExternalCheck, TradeCreation, TradeType, - TradeAssetWithBeneficiary + TradeAssetWithBeneficiary, + BaseTradeAsset, + ERC20TradeAsset, + ERC721TradeAsset, + CollectionItemTradeAsset } from './dapps/trade' export { RentalStatus, From 6f99c39a4ac44b2dc03de4fcd2bfc70edf204bf8 Mon Sep 17 00:00:00 2001 From: Melisa Anabella Rossi Date: Mon, 15 Jul 2024 10:53:39 -0300 Subject: [PATCH 3/3] Apply suggestions from code review Co-authored-by: Lautaro Petaccio <1120791+LautaroPetaccio@users.noreply.github.com> Signed-off-by: Melisa Anabella Rossi --- src/dapps/bid.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dapps/bid.ts b/src/dapps/bid.ts index aa079f81..2e01ac05 100644 --- a/src/dapps/bid.ts +++ b/src/dapps/bid.ts @@ -136,7 +136,7 @@ export namespace Bid { type: 'string' } }, - required: [...baseBidSchema.required, 'tradeId', 'item'] + required: [...baseBidSchema.required, 'tradeId', 'itemId'] }, { type: 'object',