@bonfida/spl-name-service 0.1.44 → 0.1.47
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/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/record.d.ts +7 -0
- package/dist/record.js +11 -1
- package/dist/record.js.map +1 -1
- package/dist/resolve.d.ts +2 -0
- package/dist/resolve.js +29 -0
- package/dist/resolve.js.map +1 -0
- package/dist/types/record.d.ts +1 -0
- package/dist/types/record.js +1 -0
- package/dist/types/record.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +1 -0
- package/src/record.ts +12 -0
- package/src/resolve.ts +30 -0
- package/src/types/record.ts +1 -0
- package/tests/resolve.test.ts +22 -0
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -27,4 +27,5 @@ __exportStar(require("./constants"), exports);
|
|
|
27
27
|
__exportStar(require("./int"), exports);
|
|
28
28
|
__exportStar(require("./record"), exports);
|
|
29
29
|
__exportStar(require("./types/record"), exports);
|
|
30
|
+
__exportStar(require("./resolve"), exports);
|
|
30
31
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,6CAA2B;AAC3B,0CAAwB;AACxB,qDAAmC;AACnC,2CAAyB;AACzB,0CAAwB;AACxB,iDAA+B;AAC/B,wCAAsB;AACtB,oDAAkC;AAClC,8CAA4B;AAC5B,wCAAsB;AACtB,2CAAyB;AACzB,iDAA+B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,6CAA2B;AAC3B,0CAAwB;AACxB,qDAAmC;AACnC,2CAAyB;AACzB,0CAAwB;AACxB,iDAA+B;AAC/B,wCAAsB;AACtB,oDAAkC;AAClC,8CAA4B;AAC5B,wCAAsB;AACtB,2CAAyB;AACzB,iDAA+B;AAC/B,4CAA0B"}
|
package/dist/record.d.ts
CHANGED
|
@@ -114,3 +114,10 @@ export declare const getPicRecord: (connection: Connection, domain: string) => P
|
|
|
114
114
|
* @returns
|
|
115
115
|
*/
|
|
116
116
|
export declare const getShdwRecord: (connection: Connection, domain: string) => Promise<NameRegistryState>;
|
|
117
|
+
/**
|
|
118
|
+
* This function can be used to retrieve the SOL record of a domain name
|
|
119
|
+
* @param connection The Solana RPC connection object
|
|
120
|
+
* @param domain The .sol domain name
|
|
121
|
+
* @returns
|
|
122
|
+
*/
|
|
123
|
+
export declare const getSolRecord: (connection: Connection, domain: string) => Promise<NameRegistryState>;
|
package/dist/record.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getShdwRecord = exports.getPicRecord = exports.getTelegramRecord = exports.getTwitterRecord = exports.getRedditRecord = exports.getGithubRecord = exports.getDiscordRecord = exports.getUrlRecord = exports.getEmailRecord = exports.getDogeRecord = exports.getLtcRecord = exports.getBtcRecord = exports.getEthRecord = exports.getArweaveRecord = exports.getIpfsRecord = exports.getRecord = void 0;
|
|
3
|
+
exports.getSolRecord = exports.getShdwRecord = exports.getPicRecord = exports.getTelegramRecord = exports.getTwitterRecord = exports.getRedditRecord = exports.getGithubRecord = exports.getDiscordRecord = exports.getUrlRecord = exports.getEmailRecord = exports.getDogeRecord = exports.getLtcRecord = exports.getBtcRecord = exports.getEthRecord = exports.getArweaveRecord = exports.getIpfsRecord = exports.getRecord = void 0;
|
|
4
4
|
const record_1 = require("./types/record");
|
|
5
5
|
const utils_1 = require("./utils");
|
|
6
6
|
const state_1 = require("./state");
|
|
@@ -171,4 +171,14 @@ const getShdwRecord = async (connection, domain) => {
|
|
|
171
171
|
return await (0, exports.getRecord)(connection, domain, record_1.Record.SHDW);
|
|
172
172
|
};
|
|
173
173
|
exports.getShdwRecord = getShdwRecord;
|
|
174
|
+
/**
|
|
175
|
+
* This function can be used to retrieve the SOL record of a domain name
|
|
176
|
+
* @param connection The Solana RPC connection object
|
|
177
|
+
* @param domain The .sol domain name
|
|
178
|
+
* @returns
|
|
179
|
+
*/
|
|
180
|
+
const getSolRecord = async (connection, domain) => {
|
|
181
|
+
return await (0, exports.getRecord)(connection, domain, record_1.Record.SOL);
|
|
182
|
+
};
|
|
183
|
+
exports.getSolRecord = getSolRecord;
|
|
174
184
|
//# sourceMappingURL=record.js.map
|
package/dist/record.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record.js","sourceRoot":"","sources":["../src/record.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"record.js","sourceRoot":"","sources":["../src/record.ts"],"names":[],"mappings":"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"}
|
package/dist/resolve.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolve = void 0;
|
|
4
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
5
|
+
const record_1 = require("./record");
|
|
6
|
+
const utils_1 = require("./utils");
|
|
7
|
+
const state_1 = require("./state");
|
|
8
|
+
const resolve = async (connection, domain) => {
|
|
9
|
+
var _a;
|
|
10
|
+
const { pubkey } = await (0, utils_1.getDomainKey)(domain);
|
|
11
|
+
const { registry, nftOwner } = await state_1.NameRegistryState.retrieve(connection, pubkey);
|
|
12
|
+
if (nftOwner) {
|
|
13
|
+
return nftOwner;
|
|
14
|
+
}
|
|
15
|
+
try {
|
|
16
|
+
const solRecord = await (0, record_1.getSolRecord)(connection, domain);
|
|
17
|
+
const base58 = (_a = solRecord.data) === null || _a === void 0 ? void 0 : _a.toString();
|
|
18
|
+
if (!base58) {
|
|
19
|
+
throw new Error("SOL record is not set");
|
|
20
|
+
}
|
|
21
|
+
return new web3_js_1.PublicKey(base58);
|
|
22
|
+
}
|
|
23
|
+
catch (err) {
|
|
24
|
+
console.log(err);
|
|
25
|
+
}
|
|
26
|
+
return registry.owner;
|
|
27
|
+
};
|
|
28
|
+
exports.resolve = resolve;
|
|
29
|
+
//# sourceMappingURL=resolve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":";;;AAAA,6CAAwD;AACxD,qCAAwC;AACxC,mCAAuC;AACvC,mCAA4C;AAErC,MAAM,OAAO,GAAG,KAAK,EAAE,UAAsB,EAAE,MAAc,EAAE,EAAE;;IACtE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAA,oBAAY,EAAC,MAAM,CAAC,CAAC;IAE9C,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,yBAAiB,CAAC,QAAQ,CAC7D,UAAU,EACV,MAAM,CACP,CAAC;IAEF,IAAI,QAAQ,EAAE;QACZ,OAAO,QAAQ,CAAC;KACjB;IAED,IAAI;QACF,MAAM,SAAS,GAAG,MAAM,IAAA,qBAAY,EAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,MAAA,SAAS,CAAC,IAAI,0CAAE,QAAQ,EAAE,CAAC;QAC1C,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;SAC1C;QACD,OAAO,IAAI,mBAAS,CAAC,MAAM,CAAC,CAAC;KAC9B;IAAC,OAAO,GAAG,EAAE;QACZ,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KAClB;IAED,OAAO,QAAQ,CAAC,KAAK,CAAC;AACxB,CAAC,CAAC;AAxBW,QAAA,OAAO,WAwBlB"}
|
package/dist/types/record.d.ts
CHANGED
package/dist/types/record.js
CHANGED
package/dist/types/record.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record.js","sourceRoot":"","sources":["../../src/types/record.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,IAAY,
|
|
1
|
+
{"version":3,"file":"record.js","sourceRoot":"","sources":["../../src/types/record.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,IAAY,MAiBX;AAjBD,WAAY,MAAM;IAChB,uBAAa,CAAA;IACb,uBAAa,CAAA;IACb,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,qBAAW,CAAA;IACX,uBAAa,CAAA;IACb,yBAAe,CAAA;IACf,qBAAW,CAAA;IACX,6BAAmB,CAAA;IACnB,2BAAiB,CAAA;IACjB,2BAAiB,CAAA;IACjB,6BAAmB,CAAA;IACnB,+BAAqB,CAAA;IACrB,qBAAW,CAAA;IACX,uBAAa,CAAA;AACf,CAAC,EAjBW,MAAM,GAAN,cAAM,KAAN,cAAM,QAiBjB"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
package/src/record.ts
CHANGED
|
@@ -195,3 +195,15 @@ export const getPicRecord = async (connection: Connection, domain: string) => {
|
|
|
195
195
|
export const getShdwRecord = async (connection: Connection, domain: string) => {
|
|
196
196
|
return await getRecord(connection, domain, Record.SHDW);
|
|
197
197
|
};
|
|
198
|
+
|
|
199
|
+
/**
|
|
200
|
+
* This function can be used to retrieve the SOL record of a domain name
|
|
201
|
+
* @param connection The Solana RPC connection object
|
|
202
|
+
* @param domain The .sol domain name
|
|
203
|
+
* @returns
|
|
204
|
+
*/
|
|
205
|
+
export const getSolRecord = async (connection: Connection, domain: string) => {
|
|
206
|
+
return await getRecord(connection, domain, Record.SOL);
|
|
207
|
+
};
|
|
208
|
+
|
|
209
|
+
|
package/src/resolve.ts
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Connection, PublicKey } from "@solana/web3.js";
|
|
2
|
+
import { getSolRecord } from "./record";
|
|
3
|
+
import { getDomainKey } from "./utils";
|
|
4
|
+
import { NameRegistryState } from "./state";
|
|
5
|
+
|
|
6
|
+
export const resolve = async (connection: Connection, domain: string) => {
|
|
7
|
+
const { pubkey } = await getDomainKey(domain);
|
|
8
|
+
|
|
9
|
+
const { registry, nftOwner } = await NameRegistryState.retrieve(
|
|
10
|
+
connection,
|
|
11
|
+
pubkey
|
|
12
|
+
);
|
|
13
|
+
|
|
14
|
+
if (nftOwner) {
|
|
15
|
+
return nftOwner;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
try {
|
|
19
|
+
const solRecord = await getSolRecord(connection, domain);
|
|
20
|
+
const base58 = solRecord.data?.toString();
|
|
21
|
+
if (!base58) {
|
|
22
|
+
throw new Error("SOL record is not set");
|
|
23
|
+
}
|
|
24
|
+
return new PublicKey(base58);
|
|
25
|
+
} catch (err) {
|
|
26
|
+
console.log(err);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return registry.owner;
|
|
30
|
+
};
|
package/src/types/record.ts
CHANGED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { test, jest } from "@jest/globals";
|
|
2
|
+
import { Connection, clusterApiUrl, PublicKey } from "@solana/web3.js";
|
|
3
|
+
import { resolve } from "../src/resolve";
|
|
4
|
+
|
|
5
|
+
jest.setTimeout(5_000);
|
|
6
|
+
|
|
7
|
+
const connection = new Connection(clusterApiUrl("mainnet-beta"));
|
|
8
|
+
|
|
9
|
+
test("Resolve domains", async () => {
|
|
10
|
+
// Resolve bonfida.sol
|
|
11
|
+
let domain = "🍍.sol";
|
|
12
|
+
let owner = await resolve(connection, domain);
|
|
13
|
+
expect(owner.toBase58()).toBe("CnNHzcp7L4jKiA2Rsca3hZyVwSmoqXaT8wGwzS8WvvB2");
|
|
14
|
+
|
|
15
|
+
domain = "beach";
|
|
16
|
+
owner = await resolve(connection, domain);
|
|
17
|
+
expect(owner.toBase58()).toBe("CnNHzcp7L4jKiA2Rsca3hZyVwSmoqXaT8wGwzS8WvvB2");
|
|
18
|
+
|
|
19
|
+
domain = "boston.sol";
|
|
20
|
+
owner = await resolve(connection, domain);
|
|
21
|
+
expect(owner.toBase58()).toBe("78j3JUUd2nrA52Srx2zrEQ8jez7FDqnAETMAVEXDctB7");
|
|
22
|
+
});
|