@mysten/kiosk 0.10.7 → 0.11.0
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 +15 -0
- package/dist/cjs/query/kiosk.d.ts +0 -6
- package/dist/cjs/query/kiosk.js +81 -22
- package/dist/cjs/query/kiosk.js.map +2 -2
- package/dist/esm/query/kiosk.d.ts +0 -6
- package/dist/esm/query/kiosk.js +81 -22
- package/dist/esm/query/kiosk.js.map +2 -2
- package/dist/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/query/kiosk.ts +107 -28
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# @mysten/kiosk
|
|
2
2
|
|
|
3
|
+
## 0.11.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- d76da22: Remove MatchAny filter when loading owned kiosks. This may result in an extra request,
|
|
8
|
+
and a change of cursor format when loading owned kiosks
|
|
9
|
+
|
|
10
|
+
## 0.10.8
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- Updated dependencies [8baac61]
|
|
15
|
+
- Updated dependencies [8baac61]
|
|
16
|
+
- @mysten/sui@1.23.0
|
|
17
|
+
|
|
3
18
|
## 0.10.7
|
|
4
19
|
|
|
5
20
|
### Patch Changes
|
|
@@ -1,12 +1,6 @@
|
|
|
1
1
|
import type { PaginationArguments, SuiClient } from '@mysten/sui/client';
|
|
2
2
|
import type { FetchKioskOptions, KioskExtension, OwnedKiosks, PagedKioskData } from '../types/index.js';
|
|
3
3
|
export declare function fetchKiosk(client: SuiClient, kioskId: string, pagination: PaginationArguments<string>, options: FetchKioskOptions): Promise<PagedKioskData>;
|
|
4
|
-
/**
|
|
5
|
-
* A function to fetch all the user's kiosk Caps
|
|
6
|
-
* And a list of the kiosk address ids.
|
|
7
|
-
* Returns a list of `kioskOwnerCapIds` and `kioskIds`.
|
|
8
|
-
* Extra options allow pagination.
|
|
9
|
-
*/
|
|
10
4
|
export declare function getOwnedKiosks(client: SuiClient, address: string, options?: {
|
|
11
5
|
pagination?: PaginationArguments<string>;
|
|
12
6
|
personalKioskType: string;
|
package/dist/cjs/query/kiosk.js
CHANGED
|
@@ -51,42 +51,101 @@ async function fetchKiosk(client, kioskId, pagination, options) {
|
|
|
51
51
|
hasNextPage: false
|
|
52
52
|
};
|
|
53
53
|
}
|
|
54
|
+
const DEFAULT_PAGE_SIZE = 50;
|
|
55
|
+
const PERSON_KIOSK_CURSOR = "personal";
|
|
56
|
+
const OWNED_KIOSKS_CURSOR = "owned";
|
|
54
57
|
async function getOwnedKiosks(client, address, options) {
|
|
55
|
-
if (!(0, import_utils.isValidSuiAddress)(address))
|
|
58
|
+
if (!(0, import_utils.isValidSuiAddress)(address)) {
|
|
56
59
|
return {
|
|
57
60
|
nextCursor: null,
|
|
58
61
|
hasNextPage: false,
|
|
59
62
|
kioskOwnerCaps: [],
|
|
60
63
|
kioskIds: []
|
|
61
64
|
};
|
|
62
|
-
const filter = {
|
|
63
|
-
MatchAny: [
|
|
64
|
-
{
|
|
65
|
-
StructType: import_types.KIOSK_OWNER_CAP
|
|
66
|
-
}
|
|
67
|
-
]
|
|
68
|
-
};
|
|
69
|
-
if (options?.personalKioskType) {
|
|
70
|
-
filter.MatchAny.push({
|
|
71
|
-
StructType: options.personalKioskType
|
|
72
|
-
});
|
|
73
65
|
}
|
|
74
|
-
const
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
66
|
+
const limit = options?.pagination?.limit ?? DEFAULT_PAGE_SIZE;
|
|
67
|
+
const [cursorType, cursor] = options?.pagination?.cursor?.split(":") ?? [
|
|
68
|
+
PERSON_KIOSK_CURSOR,
|
|
69
|
+
null
|
|
70
|
+
];
|
|
71
|
+
if (options?.personalKioskType && cursorType === PERSON_KIOSK_CURSOR) {
|
|
72
|
+
const personalKioskResponse = formatOwnedKioskResponse(
|
|
73
|
+
await client.getOwnedObjects({
|
|
74
|
+
owner: address,
|
|
75
|
+
filter: {
|
|
76
|
+
StructType: options.personalKioskType
|
|
77
|
+
},
|
|
78
|
+
options: {
|
|
79
|
+
showContent: true,
|
|
80
|
+
showType: true
|
|
81
|
+
},
|
|
82
|
+
cursor,
|
|
83
|
+
limit
|
|
84
|
+
}),
|
|
85
|
+
PERSON_KIOSK_CURSOR
|
|
86
|
+
);
|
|
87
|
+
if (personalKioskResponse.hasNextPage) {
|
|
88
|
+
return personalKioskResponse;
|
|
89
|
+
}
|
|
90
|
+
const remainingLimit = limit - personalKioskResponse.kioskOwnerCaps.length;
|
|
91
|
+
if (remainingLimit < 1) {
|
|
92
|
+
return {
|
|
93
|
+
nextCursor: `${OWNED_KIOSKS_CURSOR}:`,
|
|
94
|
+
hasNextPage: true,
|
|
95
|
+
kioskOwnerCaps: personalKioskResponse.kioskOwnerCaps,
|
|
96
|
+
kioskIds: personalKioskResponse.kioskIds
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
const ownedKiosksResponse = formatOwnedKioskResponse(
|
|
100
|
+
await client.getOwnedObjects({
|
|
101
|
+
owner: address,
|
|
102
|
+
filter: {
|
|
103
|
+
StructType: import_types.KIOSK_OWNER_CAP
|
|
104
|
+
},
|
|
105
|
+
options: {
|
|
106
|
+
showContent: true,
|
|
107
|
+
showType: true
|
|
108
|
+
},
|
|
109
|
+
limit: remainingLimit
|
|
110
|
+
}),
|
|
111
|
+
OWNED_KIOSKS_CURSOR
|
|
112
|
+
);
|
|
113
|
+
return {
|
|
114
|
+
nextCursor: ownedKiosksResponse.nextCursor,
|
|
115
|
+
hasNextPage: ownedKiosksResponse.hasNextPage,
|
|
116
|
+
kioskOwnerCaps: [
|
|
117
|
+
...personalKioskResponse.kioskOwnerCaps,
|
|
118
|
+
...ownedKiosksResponse.kioskOwnerCaps
|
|
119
|
+
],
|
|
120
|
+
kioskIds: [...personalKioskResponse.kioskIds, ...ownedKiosksResponse.kioskIds]
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
return formatOwnedKioskResponse(
|
|
124
|
+
await client.getOwnedObjects({
|
|
125
|
+
owner: address,
|
|
126
|
+
filter: {
|
|
127
|
+
StructType: import_types.KIOSK_OWNER_CAP
|
|
128
|
+
},
|
|
129
|
+
options: {
|
|
130
|
+
showContent: true,
|
|
131
|
+
showType: true
|
|
132
|
+
},
|
|
133
|
+
// cursor might be an empty string if the number of personal kiosks was a multiple of the limit.
|
|
134
|
+
cursor: cursor ? cursor : null,
|
|
135
|
+
limit
|
|
136
|
+
}),
|
|
137
|
+
OWNED_KIOSKS_CURSOR
|
|
138
|
+
);
|
|
139
|
+
}
|
|
140
|
+
function formatOwnedKioskResponse(response, cursorType) {
|
|
141
|
+
const { data, hasNextPage, nextCursor } = response;
|
|
83
142
|
const kioskIdList = data?.map((x) => {
|
|
84
143
|
const fields = x.data?.content?.dataType === "moveObject" ? x.data.content.fields : null;
|
|
85
144
|
return fields?.cap ? fields?.cap?.fields?.for : fields?.for;
|
|
86
145
|
});
|
|
87
146
|
const filteredData = data.filter((x) => "data" in x).map((x) => x.data);
|
|
88
147
|
return {
|
|
89
|
-
nextCursor,
|
|
148
|
+
nextCursor: nextCursor ? `${cursorType}:${nextCursor}` : nextCursor,
|
|
90
149
|
hasNextPage,
|
|
91
150
|
kioskOwnerCaps: filteredData.map((x, idx) => ({
|
|
92
151
|
isPersonal: x.type !== import_types.KIOSK_OWNER_CAP,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/query/kiosk.ts"],
|
|
4
|
-
"sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type {\n\tPaginationArguments,\n\tSuiClient,\n\tSuiObjectData,\n\
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUA,mBAAkC;AASlC,mBAAgC;AAChC,IAAAA,gBAQO;AAEP,eAAsB,WACrB,QACA,SACA,YACA,SAC0B;AAK1B,QAAM,OAAO,UAAM,mCAAoB,QAAQ,SAAS,UAAU;AAElE,QAAM,WAA2B,CAAC;AAClC,QAAM,gBAA0B,CAAC;AAGjC,QAAM,gBAAY,gCAAiB,MAAM,UAAU,eAAe,OAAO;AAKzE,QAAM,CAAC,OAAO,gBAAgB,KAAK,IAAI,MAAM,QAAQ,IAAI;AAAA,IACxD,QAAQ,sBAAkB,8BAAe,QAAQ,OAAO,IAAI,QAAQ,QAAQ,MAAS;AAAA,IACrF,QAAQ,wBACL,6BAAc,QAAQ,UAAU,YAAY;AAAA,MAC5C,aAAa;AAAA,IACd,CAAC,IACA,QAAQ,QAAQ,CAAC,CAAC;AAAA,IACrB,QAAQ,kBACL,6BAAc,QAAQ,UAAU,SAAS,QAAQ,iBAAiB,EAAE,aAAa,KAAK,CAAC,IACvF,QAAQ,QAAQ,CAAC,CAAC;AAAA,EACtB,CAAC;AAED,MAAI,QAAQ,gBAAiB,WAAU,QAAQ;AAE/C,6CAAwB,WAAW,UAAU,cAAc;AAE3D,uCAAkB,WAAW,aAAa;AAG1C;AAAA,IACC;AAAA,IACA,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAK;AAAA,EACjD;AAEA,SAAO;AAAA,IACN,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,aAAa;AAAA,EACd;AACD;
|
|
4
|
+
"sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type {\n\tPaginatedObjectsResponse,\n\tPaginationArguments,\n\tSuiClient,\n\tSuiObjectData,\n\tSuiObjectResponse,\n} from '@mysten/sui/client';\nimport { isValidSuiAddress } from '@mysten/sui/utils';\n\nimport type {\n\tFetchKioskOptions,\n\tKioskExtension,\n\tKioskListing,\n\tOwnedKiosks,\n\tPagedKioskData,\n} from '../types/index.js';\nimport { KIOSK_OWNER_CAP } from '../types/index.js';\nimport {\n\tattachListingsAndPrices,\n\tattachLockedItems,\n\tattachObjects,\n\textractKioskData,\n\tgetAllDynamicFields,\n\tgetAllObjects,\n\tgetKioskObject,\n} from '../utils.js';\n\nexport async function fetchKiosk(\n\tclient: SuiClient,\n\tkioskId: string,\n\tpagination: PaginationArguments<string>,\n\toptions: FetchKioskOptions,\n): Promise<PagedKioskData> {\n\t// TODO: Replace the `getAllDynamicFields` with a paginated\n\t// response, once we have better RPC support for\n\t// type filtering & batch fetching.\n\t// This can't work with pagination currently.\n\tconst data = await getAllDynamicFields(client, kioskId, pagination);\n\n\tconst listings: KioskListing[] = [];\n\tconst lockedItemIds: string[] = [];\n\n\t// extracted kiosk data.\n\tconst kioskData = extractKioskData(data, listings, lockedItemIds, kioskId);\n\n\t// split the fetching in two queries as we are most likely passing different options for each kind.\n\t// For items, we usually seek the Display.\n\t// For listings we usually seek the DF value (price) / exclusivity.\n\tconst [kiosk, listingObjects, items] = await Promise.all([\n\t\toptions.withKioskFields ? getKioskObject(client, kioskId) : Promise.resolve(undefined),\n\t\toptions.withListingPrices\n\t\t\t? getAllObjects(client, kioskData.listingIds, {\n\t\t\t\t\tshowContent: true,\n\t\t\t\t})\n\t\t\t: Promise.resolve([]),\n\t\toptions.withObjects\n\t\t\t? getAllObjects(client, kioskData.itemIds, options.objectOptions || { showDisplay: true })\n\t\t\t: Promise.resolve([]),\n\t]);\n\n\tif (options.withKioskFields) kioskData.kiosk = kiosk;\n\t// attach items listings. IF we have `options.withListingPrices === true`, it will also attach the prices.\n\tattachListingsAndPrices(kioskData, listings, listingObjects);\n\t// add `locked` status to items that are locked.\n\tattachLockedItems(kioskData, lockedItemIds);\n\n\t// Attach the objects for the queried items.\n\tattachObjects(\n\t\tkioskData,\n\t\titems.filter((x) => !!x.data).map((x) => x.data!),\n\t);\n\n\treturn {\n\t\tdata: kioskData,\n\t\tnextCursor: null,\n\t\thasNextPage: false,\n\t};\n}\n\n/**\n * A function to fetch all the user's kiosk Caps\n * And a list of the kiosk address ids.\n * Returns a list of `kioskOwnerCapIds` and `kioskIds`.\n * Extra options allow pagination.\n */\n\nconst DEFAULT_PAGE_SIZE = 50;\nconst PERSON_KIOSK_CURSOR = 'personal';\nconst OWNED_KIOSKS_CURSOR = 'owned';\nexport async function getOwnedKiosks(\n\tclient: SuiClient,\n\taddress: string,\n\toptions?: {\n\t\tpagination?: PaginationArguments<string>;\n\t\tpersonalKioskType: string;\n\t},\n): Promise<OwnedKiosks> {\n\t// TODO: this should throw an error, but I am not going to change it right now incase it breaks existing code.\n\tif (!isValidSuiAddress(address)) {\n\t\treturn {\n\t\t\tnextCursor: null,\n\t\t\thasNextPage: false,\n\t\t\tkioskOwnerCaps: [],\n\t\t\tkioskIds: [],\n\t\t};\n\t}\n\n\tconst limit = options?.pagination?.limit ?? DEFAULT_PAGE_SIZE;\n\tconst [cursorType, cursor] = options?.pagination?.cursor?.split(':') ?? [\n\t\tPERSON_KIOSK_CURSOR,\n\t\tnull,\n\t];\n\n\tif (options?.personalKioskType && cursorType === PERSON_KIOSK_CURSOR) {\n\t\tconst personalKioskResponse = formatOwnedKioskResponse(\n\t\t\tawait client.getOwnedObjects({\n\t\t\t\towner: address,\n\t\t\t\tfilter: {\n\t\t\t\t\tStructType: options.personalKioskType,\n\t\t\t\t},\n\t\t\t\toptions: {\n\t\t\t\t\tshowContent: true,\n\t\t\t\t\tshowType: true,\n\t\t\t\t},\n\t\t\t\tcursor,\n\t\t\t\tlimit,\n\t\t\t}),\n\t\t\tPERSON_KIOSK_CURSOR,\n\t\t);\n\n\t\tif (personalKioskResponse.hasNextPage) {\n\t\t\treturn personalKioskResponse;\n\t\t}\n\n\t\tconst remainingLimit = limit - personalKioskResponse.kioskOwnerCaps.length;\n\n\t\t// If we have all personal kiosks, but don't have space for the owned kiosks\n\t\t// we need to start loading owned kiosks for the next page, but don't have a real cursor\n\t\tif (remainingLimit < 1) {\n\t\t\treturn {\n\t\t\t\tnextCursor: `${OWNED_KIOSKS_CURSOR}:`,\n\t\t\t\thasNextPage: true,\n\t\t\t\tkioskOwnerCaps: personalKioskResponse.kioskOwnerCaps,\n\t\t\t\tkioskIds: personalKioskResponse.kioskIds,\n\t\t\t};\n\t\t}\n\n\t\tconst ownedKiosksResponse = formatOwnedKioskResponse(\n\t\t\tawait client.getOwnedObjects({\n\t\t\t\towner: address,\n\t\t\t\tfilter: {\n\t\t\t\t\tStructType: KIOSK_OWNER_CAP,\n\t\t\t\t},\n\t\t\t\toptions: {\n\t\t\t\t\tshowContent: true,\n\t\t\t\t\tshowType: true,\n\t\t\t\t},\n\t\t\t\tlimit: remainingLimit,\n\t\t\t}),\n\t\t\tOWNED_KIOSKS_CURSOR,\n\t\t);\n\n\t\treturn {\n\t\t\tnextCursor: ownedKiosksResponse.nextCursor,\n\t\t\thasNextPage: ownedKiosksResponse.hasNextPage,\n\t\t\tkioskOwnerCaps: [\n\t\t\t\t...personalKioskResponse.kioskOwnerCaps,\n\t\t\t\t...ownedKiosksResponse.kioskOwnerCaps,\n\t\t\t],\n\t\t\tkioskIds: [...personalKioskResponse.kioskIds, ...ownedKiosksResponse.kioskIds],\n\t\t};\n\t}\n\n\treturn formatOwnedKioskResponse(\n\t\tawait client.getOwnedObjects({\n\t\t\towner: address,\n\t\t\tfilter: {\n\t\t\t\tStructType: KIOSK_OWNER_CAP,\n\t\t\t},\n\t\t\toptions: {\n\t\t\t\tshowContent: true,\n\t\t\t\tshowType: true,\n\t\t\t},\n\t\t\t// cursor might be an empty string if the number of personal kiosks was a multiple of the limit.\n\t\t\tcursor: cursor ? cursor : null,\n\t\t\tlimit,\n\t\t}),\n\t\tOWNED_KIOSKS_CURSOR,\n\t);\n}\n\nfunction formatOwnedKioskResponse(\n\tresponse: PaginatedObjectsResponse,\n\tcursorType: string,\n): OwnedKiosks {\n\tconst { data, hasNextPage, nextCursor } = response;\n\t// get kioskIds from the OwnerCaps.\n\tconst kioskIdList = data?.map((x: SuiObjectResponse) => {\n\t\tconst fields =\n\t\t\tx.data?.content?.dataType === 'moveObject'\n\t\t\t\t? (x.data.content.fields as unknown as\n\t\t\t\t\t\t| {\n\t\t\t\t\t\t\t\tcap: { fields: { for: string } };\n\t\t\t\t\t\t\t\tfor?: never;\n\t\t\t\t\t\t }\n\t\t\t\t\t\t| {\n\t\t\t\t\t\t\t\tcap?: never;\n\t\t\t\t\t\t\t\tfor: string;\n\t\t\t\t\t\t })\n\t\t\t\t: null;\n\t\treturn fields?.cap ? fields?.cap?.fields?.for : (fields?.for as string);\n\t});\n\n\t// clean up data that might have an error in them.\n\t// only return valid objects.\n\tconst filteredData = data.filter((x) => 'data' in x).map((x) => x.data) as SuiObjectData[];\n\n\treturn {\n\t\tnextCursor: nextCursor ? `${cursorType}:${nextCursor}` : nextCursor,\n\t\thasNextPage,\n\t\tkioskOwnerCaps: filteredData.map((x, idx) => ({\n\t\t\tisPersonal: x.type !== KIOSK_OWNER_CAP,\n\t\t\tdigest: x.digest,\n\t\t\tversion: x.version,\n\t\t\tobjectId: x.objectId,\n\t\t\tkioskId: kioskIdList[idx],\n\t\t})),\n\t\tkioskIds: kioskIdList,\n\t};\n}\n\n// Get a kiosk extension data for a given kioskId and extensionType.\nexport async function fetchKioskExtension(\n\tclient: SuiClient,\n\tkioskId: string,\n\textensionType: string,\n): Promise<KioskExtension | null> {\n\tconst extension = await client.getDynamicFieldObject({\n\t\tparentId: kioskId,\n\t\tname: {\n\t\t\ttype: `0x2::kiosk_extension::ExtensionKey<${extensionType}>`,\n\t\t\tvalue: {\n\t\t\t\tdummy_field: false,\n\t\t\t},\n\t\t},\n\t});\n\n\tif (!extension.data) return null;\n\n\tconst fields = (extension?.data?.content as { fields: { [k: string]: any } })?.fields?.value\n\t\t?.fields;\n\n\treturn {\n\t\tobjectId: extension.data.objectId,\n\t\ttype: extensionType,\n\t\tisEnabled: fields?.is_enabled,\n\t\tpermissions: fields?.permissions,\n\t\tstorageId: fields?.storage?.fields?.id?.id,\n\t\tstorageSize: fields?.storage?.fields?.size,\n\t};\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["import_utils"]
|
|
7
7
|
}
|
|
@@ -1,12 +1,6 @@
|
|
|
1
1
|
import type { PaginationArguments, SuiClient } from '@mysten/sui/client';
|
|
2
2
|
import type { FetchKioskOptions, KioskExtension, OwnedKiosks, PagedKioskData } from '../types/index.js';
|
|
3
3
|
export declare function fetchKiosk(client: SuiClient, kioskId: string, pagination: PaginationArguments<string>, options: FetchKioskOptions): Promise<PagedKioskData>;
|
|
4
|
-
/**
|
|
5
|
-
* A function to fetch all the user's kiosk Caps
|
|
6
|
-
* And a list of the kiosk address ids.
|
|
7
|
-
* Returns a list of `kioskOwnerCapIds` and `kioskIds`.
|
|
8
|
-
* Extra options allow pagination.
|
|
9
|
-
*/
|
|
10
4
|
export declare function getOwnedKiosks(client: SuiClient, address: string, options?: {
|
|
11
5
|
pagination?: PaginationArguments<string>;
|
|
12
6
|
personalKioskType: string;
|
package/dist/esm/query/kiosk.js
CHANGED
|
@@ -34,42 +34,101 @@ async function fetchKiosk(client, kioskId, pagination, options) {
|
|
|
34
34
|
hasNextPage: false
|
|
35
35
|
};
|
|
36
36
|
}
|
|
37
|
+
const DEFAULT_PAGE_SIZE = 50;
|
|
38
|
+
const PERSON_KIOSK_CURSOR = "personal";
|
|
39
|
+
const OWNED_KIOSKS_CURSOR = "owned";
|
|
37
40
|
async function getOwnedKiosks(client, address, options) {
|
|
38
|
-
if (!isValidSuiAddress(address))
|
|
41
|
+
if (!isValidSuiAddress(address)) {
|
|
39
42
|
return {
|
|
40
43
|
nextCursor: null,
|
|
41
44
|
hasNextPage: false,
|
|
42
45
|
kioskOwnerCaps: [],
|
|
43
46
|
kioskIds: []
|
|
44
47
|
};
|
|
45
|
-
const filter = {
|
|
46
|
-
MatchAny: [
|
|
47
|
-
{
|
|
48
|
-
StructType: KIOSK_OWNER_CAP
|
|
49
|
-
}
|
|
50
|
-
]
|
|
51
|
-
};
|
|
52
|
-
if (options?.personalKioskType) {
|
|
53
|
-
filter.MatchAny.push({
|
|
54
|
-
StructType: options.personalKioskType
|
|
55
|
-
});
|
|
56
48
|
}
|
|
57
|
-
const
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
49
|
+
const limit = options?.pagination?.limit ?? DEFAULT_PAGE_SIZE;
|
|
50
|
+
const [cursorType, cursor] = options?.pagination?.cursor?.split(":") ?? [
|
|
51
|
+
PERSON_KIOSK_CURSOR,
|
|
52
|
+
null
|
|
53
|
+
];
|
|
54
|
+
if (options?.personalKioskType && cursorType === PERSON_KIOSK_CURSOR) {
|
|
55
|
+
const personalKioskResponse = formatOwnedKioskResponse(
|
|
56
|
+
await client.getOwnedObjects({
|
|
57
|
+
owner: address,
|
|
58
|
+
filter: {
|
|
59
|
+
StructType: options.personalKioskType
|
|
60
|
+
},
|
|
61
|
+
options: {
|
|
62
|
+
showContent: true,
|
|
63
|
+
showType: true
|
|
64
|
+
},
|
|
65
|
+
cursor,
|
|
66
|
+
limit
|
|
67
|
+
}),
|
|
68
|
+
PERSON_KIOSK_CURSOR
|
|
69
|
+
);
|
|
70
|
+
if (personalKioskResponse.hasNextPage) {
|
|
71
|
+
return personalKioskResponse;
|
|
72
|
+
}
|
|
73
|
+
const remainingLimit = limit - personalKioskResponse.kioskOwnerCaps.length;
|
|
74
|
+
if (remainingLimit < 1) {
|
|
75
|
+
return {
|
|
76
|
+
nextCursor: `${OWNED_KIOSKS_CURSOR}:`,
|
|
77
|
+
hasNextPage: true,
|
|
78
|
+
kioskOwnerCaps: personalKioskResponse.kioskOwnerCaps,
|
|
79
|
+
kioskIds: personalKioskResponse.kioskIds
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
const ownedKiosksResponse = formatOwnedKioskResponse(
|
|
83
|
+
await client.getOwnedObjects({
|
|
84
|
+
owner: address,
|
|
85
|
+
filter: {
|
|
86
|
+
StructType: KIOSK_OWNER_CAP
|
|
87
|
+
},
|
|
88
|
+
options: {
|
|
89
|
+
showContent: true,
|
|
90
|
+
showType: true
|
|
91
|
+
},
|
|
92
|
+
limit: remainingLimit
|
|
93
|
+
}),
|
|
94
|
+
OWNED_KIOSKS_CURSOR
|
|
95
|
+
);
|
|
96
|
+
return {
|
|
97
|
+
nextCursor: ownedKiosksResponse.nextCursor,
|
|
98
|
+
hasNextPage: ownedKiosksResponse.hasNextPage,
|
|
99
|
+
kioskOwnerCaps: [
|
|
100
|
+
...personalKioskResponse.kioskOwnerCaps,
|
|
101
|
+
...ownedKiosksResponse.kioskOwnerCaps
|
|
102
|
+
],
|
|
103
|
+
kioskIds: [...personalKioskResponse.kioskIds, ...ownedKiosksResponse.kioskIds]
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
return formatOwnedKioskResponse(
|
|
107
|
+
await client.getOwnedObjects({
|
|
108
|
+
owner: address,
|
|
109
|
+
filter: {
|
|
110
|
+
StructType: KIOSK_OWNER_CAP
|
|
111
|
+
},
|
|
112
|
+
options: {
|
|
113
|
+
showContent: true,
|
|
114
|
+
showType: true
|
|
115
|
+
},
|
|
116
|
+
// cursor might be an empty string if the number of personal kiosks was a multiple of the limit.
|
|
117
|
+
cursor: cursor ? cursor : null,
|
|
118
|
+
limit
|
|
119
|
+
}),
|
|
120
|
+
OWNED_KIOSKS_CURSOR
|
|
121
|
+
);
|
|
122
|
+
}
|
|
123
|
+
function formatOwnedKioskResponse(response, cursorType) {
|
|
124
|
+
const { data, hasNextPage, nextCursor } = response;
|
|
66
125
|
const kioskIdList = data?.map((x) => {
|
|
67
126
|
const fields = x.data?.content?.dataType === "moveObject" ? x.data.content.fields : null;
|
|
68
127
|
return fields?.cap ? fields?.cap?.fields?.for : fields?.for;
|
|
69
128
|
});
|
|
70
129
|
const filteredData = data.filter((x) => "data" in x).map((x) => x.data);
|
|
71
130
|
return {
|
|
72
|
-
nextCursor,
|
|
131
|
+
nextCursor: nextCursor ? `${cursorType}:${nextCursor}` : nextCursor,
|
|
73
132
|
hasNextPage,
|
|
74
133
|
kioskOwnerCaps: filteredData.map((x, idx) => ({
|
|
75
134
|
isPersonal: x.type !== KIOSK_OWNER_CAP,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/query/kiosk.ts"],
|
|
4
|
-
"sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type {\n\tPaginationArguments,\n\tSuiClient,\n\tSuiObjectData,\n\
|
|
5
|
-
"mappings": "AAUA,SAAS,yBAAyB;AASlC,SAAS,uBAAuB;AAChC;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AAEP,eAAsB,WACrB,QACA,SACA,YACA,SAC0B;AAK1B,QAAM,OAAO,MAAM,oBAAoB,QAAQ,SAAS,UAAU;AAElE,QAAM,WAA2B,CAAC;AAClC,QAAM,gBAA0B,CAAC;AAGjC,QAAM,YAAY,iBAAiB,MAAM,UAAU,eAAe,OAAO;AAKzE,QAAM,CAAC,OAAO,gBAAgB,KAAK,IAAI,MAAM,QAAQ,IAAI;AAAA,IACxD,QAAQ,kBAAkB,eAAe,QAAQ,OAAO,IAAI,QAAQ,QAAQ,MAAS;AAAA,IACrF,QAAQ,oBACL,cAAc,QAAQ,UAAU,YAAY;AAAA,MAC5C,aAAa;AAAA,IACd,CAAC,IACA,QAAQ,QAAQ,CAAC,CAAC;AAAA,IACrB,QAAQ,cACL,cAAc,QAAQ,UAAU,SAAS,QAAQ,iBAAiB,EAAE,aAAa,KAAK,CAAC,IACvF,QAAQ,QAAQ,CAAC,CAAC;AAAA,EACtB,CAAC;AAED,MAAI,QAAQ,gBAAiB,WAAU,QAAQ;AAE/C,0BAAwB,WAAW,UAAU,cAAc;AAE3D,oBAAkB,WAAW,aAAa;AAG1C;AAAA,IACC;AAAA,IACA,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAK;AAAA,EACjD;AAEA,SAAO;AAAA,IACN,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,aAAa;AAAA,EACd;AACD;
|
|
4
|
+
"sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type {\n\tPaginatedObjectsResponse,\n\tPaginationArguments,\n\tSuiClient,\n\tSuiObjectData,\n\tSuiObjectResponse,\n} from '@mysten/sui/client';\nimport { isValidSuiAddress } from '@mysten/sui/utils';\n\nimport type {\n\tFetchKioskOptions,\n\tKioskExtension,\n\tKioskListing,\n\tOwnedKiosks,\n\tPagedKioskData,\n} from '../types/index.js';\nimport { KIOSK_OWNER_CAP } from '../types/index.js';\nimport {\n\tattachListingsAndPrices,\n\tattachLockedItems,\n\tattachObjects,\n\textractKioskData,\n\tgetAllDynamicFields,\n\tgetAllObjects,\n\tgetKioskObject,\n} from '../utils.js';\n\nexport async function fetchKiosk(\n\tclient: SuiClient,\n\tkioskId: string,\n\tpagination: PaginationArguments<string>,\n\toptions: FetchKioskOptions,\n): Promise<PagedKioskData> {\n\t// TODO: Replace the `getAllDynamicFields` with a paginated\n\t// response, once we have better RPC support for\n\t// type filtering & batch fetching.\n\t// This can't work with pagination currently.\n\tconst data = await getAllDynamicFields(client, kioskId, pagination);\n\n\tconst listings: KioskListing[] = [];\n\tconst lockedItemIds: string[] = [];\n\n\t// extracted kiosk data.\n\tconst kioskData = extractKioskData(data, listings, lockedItemIds, kioskId);\n\n\t// split the fetching in two queries as we are most likely passing different options for each kind.\n\t// For items, we usually seek the Display.\n\t// For listings we usually seek the DF value (price) / exclusivity.\n\tconst [kiosk, listingObjects, items] = await Promise.all([\n\t\toptions.withKioskFields ? getKioskObject(client, kioskId) : Promise.resolve(undefined),\n\t\toptions.withListingPrices\n\t\t\t? getAllObjects(client, kioskData.listingIds, {\n\t\t\t\t\tshowContent: true,\n\t\t\t\t})\n\t\t\t: Promise.resolve([]),\n\t\toptions.withObjects\n\t\t\t? getAllObjects(client, kioskData.itemIds, options.objectOptions || { showDisplay: true })\n\t\t\t: Promise.resolve([]),\n\t]);\n\n\tif (options.withKioskFields) kioskData.kiosk = kiosk;\n\t// attach items listings. IF we have `options.withListingPrices === true`, it will also attach the prices.\n\tattachListingsAndPrices(kioskData, listings, listingObjects);\n\t// add `locked` status to items that are locked.\n\tattachLockedItems(kioskData, lockedItemIds);\n\n\t// Attach the objects for the queried items.\n\tattachObjects(\n\t\tkioskData,\n\t\titems.filter((x) => !!x.data).map((x) => x.data!),\n\t);\n\n\treturn {\n\t\tdata: kioskData,\n\t\tnextCursor: null,\n\t\thasNextPage: false,\n\t};\n}\n\n/**\n * A function to fetch all the user's kiosk Caps\n * And a list of the kiosk address ids.\n * Returns a list of `kioskOwnerCapIds` and `kioskIds`.\n * Extra options allow pagination.\n */\n\nconst DEFAULT_PAGE_SIZE = 50;\nconst PERSON_KIOSK_CURSOR = 'personal';\nconst OWNED_KIOSKS_CURSOR = 'owned';\nexport async function getOwnedKiosks(\n\tclient: SuiClient,\n\taddress: string,\n\toptions?: {\n\t\tpagination?: PaginationArguments<string>;\n\t\tpersonalKioskType: string;\n\t},\n): Promise<OwnedKiosks> {\n\t// TODO: this should throw an error, but I am not going to change it right now incase it breaks existing code.\n\tif (!isValidSuiAddress(address)) {\n\t\treturn {\n\t\t\tnextCursor: null,\n\t\t\thasNextPage: false,\n\t\t\tkioskOwnerCaps: [],\n\t\t\tkioskIds: [],\n\t\t};\n\t}\n\n\tconst limit = options?.pagination?.limit ?? DEFAULT_PAGE_SIZE;\n\tconst [cursorType, cursor] = options?.pagination?.cursor?.split(':') ?? [\n\t\tPERSON_KIOSK_CURSOR,\n\t\tnull,\n\t];\n\n\tif (options?.personalKioskType && cursorType === PERSON_KIOSK_CURSOR) {\n\t\tconst personalKioskResponse = formatOwnedKioskResponse(\n\t\t\tawait client.getOwnedObjects({\n\t\t\t\towner: address,\n\t\t\t\tfilter: {\n\t\t\t\t\tStructType: options.personalKioskType,\n\t\t\t\t},\n\t\t\t\toptions: {\n\t\t\t\t\tshowContent: true,\n\t\t\t\t\tshowType: true,\n\t\t\t\t},\n\t\t\t\tcursor,\n\t\t\t\tlimit,\n\t\t\t}),\n\t\t\tPERSON_KIOSK_CURSOR,\n\t\t);\n\n\t\tif (personalKioskResponse.hasNextPage) {\n\t\t\treturn personalKioskResponse;\n\t\t}\n\n\t\tconst remainingLimit = limit - personalKioskResponse.kioskOwnerCaps.length;\n\n\t\t// If we have all personal kiosks, but don't have space for the owned kiosks\n\t\t// we need to start loading owned kiosks for the next page, but don't have a real cursor\n\t\tif (remainingLimit < 1) {\n\t\t\treturn {\n\t\t\t\tnextCursor: `${OWNED_KIOSKS_CURSOR}:`,\n\t\t\t\thasNextPage: true,\n\t\t\t\tkioskOwnerCaps: personalKioskResponse.kioskOwnerCaps,\n\t\t\t\tkioskIds: personalKioskResponse.kioskIds,\n\t\t\t};\n\t\t}\n\n\t\tconst ownedKiosksResponse = formatOwnedKioskResponse(\n\t\t\tawait client.getOwnedObjects({\n\t\t\t\towner: address,\n\t\t\t\tfilter: {\n\t\t\t\t\tStructType: KIOSK_OWNER_CAP,\n\t\t\t\t},\n\t\t\t\toptions: {\n\t\t\t\t\tshowContent: true,\n\t\t\t\t\tshowType: true,\n\t\t\t\t},\n\t\t\t\tlimit: remainingLimit,\n\t\t\t}),\n\t\t\tOWNED_KIOSKS_CURSOR,\n\t\t);\n\n\t\treturn {\n\t\t\tnextCursor: ownedKiosksResponse.nextCursor,\n\t\t\thasNextPage: ownedKiosksResponse.hasNextPage,\n\t\t\tkioskOwnerCaps: [\n\t\t\t\t...personalKioskResponse.kioskOwnerCaps,\n\t\t\t\t...ownedKiosksResponse.kioskOwnerCaps,\n\t\t\t],\n\t\t\tkioskIds: [...personalKioskResponse.kioskIds, ...ownedKiosksResponse.kioskIds],\n\t\t};\n\t}\n\n\treturn formatOwnedKioskResponse(\n\t\tawait client.getOwnedObjects({\n\t\t\towner: address,\n\t\t\tfilter: {\n\t\t\t\tStructType: KIOSK_OWNER_CAP,\n\t\t\t},\n\t\t\toptions: {\n\t\t\t\tshowContent: true,\n\t\t\t\tshowType: true,\n\t\t\t},\n\t\t\t// cursor might be an empty string if the number of personal kiosks was a multiple of the limit.\n\t\t\tcursor: cursor ? cursor : null,\n\t\t\tlimit,\n\t\t}),\n\t\tOWNED_KIOSKS_CURSOR,\n\t);\n}\n\nfunction formatOwnedKioskResponse(\n\tresponse: PaginatedObjectsResponse,\n\tcursorType: string,\n): OwnedKiosks {\n\tconst { data, hasNextPage, nextCursor } = response;\n\t// get kioskIds from the OwnerCaps.\n\tconst kioskIdList = data?.map((x: SuiObjectResponse) => {\n\t\tconst fields =\n\t\t\tx.data?.content?.dataType === 'moveObject'\n\t\t\t\t? (x.data.content.fields as unknown as\n\t\t\t\t\t\t| {\n\t\t\t\t\t\t\t\tcap: { fields: { for: string } };\n\t\t\t\t\t\t\t\tfor?: never;\n\t\t\t\t\t\t }\n\t\t\t\t\t\t| {\n\t\t\t\t\t\t\t\tcap?: never;\n\t\t\t\t\t\t\t\tfor: string;\n\t\t\t\t\t\t })\n\t\t\t\t: null;\n\t\treturn fields?.cap ? fields?.cap?.fields?.for : (fields?.for as string);\n\t});\n\n\t// clean up data that might have an error in them.\n\t// only return valid objects.\n\tconst filteredData = data.filter((x) => 'data' in x).map((x) => x.data) as SuiObjectData[];\n\n\treturn {\n\t\tnextCursor: nextCursor ? `${cursorType}:${nextCursor}` : nextCursor,\n\t\thasNextPage,\n\t\tkioskOwnerCaps: filteredData.map((x, idx) => ({\n\t\t\tisPersonal: x.type !== KIOSK_OWNER_CAP,\n\t\t\tdigest: x.digest,\n\t\t\tversion: x.version,\n\t\t\tobjectId: x.objectId,\n\t\t\tkioskId: kioskIdList[idx],\n\t\t})),\n\t\tkioskIds: kioskIdList,\n\t};\n}\n\n// Get a kiosk extension data for a given kioskId and extensionType.\nexport async function fetchKioskExtension(\n\tclient: SuiClient,\n\tkioskId: string,\n\textensionType: string,\n): Promise<KioskExtension | null> {\n\tconst extension = await client.getDynamicFieldObject({\n\t\tparentId: kioskId,\n\t\tname: {\n\t\t\ttype: `0x2::kiosk_extension::ExtensionKey<${extensionType}>`,\n\t\t\tvalue: {\n\t\t\t\tdummy_field: false,\n\t\t\t},\n\t\t},\n\t});\n\n\tif (!extension.data) return null;\n\n\tconst fields = (extension?.data?.content as { fields: { [k: string]: any } })?.fields?.value\n\t\t?.fields;\n\n\treturn {\n\t\tobjectId: extension.data.objectId,\n\t\ttype: extensionType,\n\t\tisEnabled: fields?.is_enabled,\n\t\tpermissions: fields?.permissions,\n\t\tstorageId: fields?.storage?.fields?.id?.id,\n\t\tstorageSize: fields?.storage?.fields?.size,\n\t};\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|