diff --git a/packages/wasm-sdk/index.html b/packages/wasm-sdk/index.html
index 1996061fe50..c188c223f93 100644
--- a/packages/wasm-sdk/index.html
+++ b/packages/wasm-sdk/index.html
@@ -1591,6 +1591,14 @@
Results
inputs: [
{ name: "name", type: "text", label: "DPNS Name", required: true, placeholder: "Enter name (e.g., alice or alice.dash)" }
]
+ },
+ dpnsSearch: {
+ label: "DPNS Search Name",
+ description: "Search for DPNS names that start with a given prefix",
+ inputs: [
+ { name: "prefix", type: "text", label: "Name Prefix", required: true, placeholder: "Enter prefix (e.g., ali)" },
+ { name: "limit", type: "number", label: "Limit", required: false, placeholder: "Default: 10" }
+ ]
}
}
},
@@ -3473,6 +3481,60 @@ Results
identityId: resolvedIdentityId,
message: resolvedIdentityId ? `Resolved to identity: ${resolvedIdentityId}` : `Name "${values.name}" not found`
};
+ } else if (queryType === 'dpnsSearch') {
+ // Handle DPNS name search with starts-with query
+ const limit = values.limit || 10;
+
+ // DPNS contract ID on testnet
+ const DPNS_CONTRACT_ID = "GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec";
+ const DPNS_DOCUMENT_TYPE = "domain";
+
+ // Build where clause for starts-with query on normalizedLabel
+ const whereClause = JSON.stringify([
+ ["normalizedLabel", "startsWith", values.prefix.toLowerCase()],
+ ["normalizedParentDomainName", "==", "dash"]
+ ]);
+
+ // Order by normalizedLabel ascending
+ const orderBy = JSON.stringify([
+ ["normalizedLabel", "asc"]
+ ]);
+
+ // Execute the document query
+ const documents = await get_documents(
+ sdk,
+ DPNS_CONTRACT_ID,
+ DPNS_DOCUMENT_TYPE,
+ whereClause,
+ orderBy,
+ limit,
+ null, // startAfter
+ null // startAt
+ );
+
+ // Transform the results to show username and owner identity
+ const searchResults = documents.map(doc => {
+ // Access the data field which contains the DPNS document fields
+ const data = doc.data || doc;
+
+ return {
+ username: `${data.normalizedLabel || data.label || 'unknown'}.${data.normalizedParentDomainName || 'dash'}`,
+ label: data.label || '',
+ normalizedLabel: data.normalizedLabel || '',
+ ownerId: doc.ownerId || doc.$ownerId || '',
+ documentId: doc.id || doc.$id || ''
+ };
+ });
+
+ result = {
+ prefix: values.prefix,
+ totalResults: searchResults.length,
+ limit: limit,
+ results: searchResults,
+ message: searchResults.length > 0
+ ? `Found ${searchResults.length} name(s) starting with "${values.prefix}"`
+ : `No names found starting with "${values.prefix}"`
+ };
}
// Protocol/Version queries
else if (queryType === 'getProtocolVersionUpgradeState') {