@ichaingo/better-link 1.1.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/README.md ADDED
@@ -0,0 +1,11 @@
1
+ # betterLink
2
+
3
+ This library was generated with [Nx](https://nx.dev).
4
+
5
+ ## Building
6
+
7
+ Run `nx build betterLink` to build the library.
8
+
9
+ ## Running unit tests
10
+
11
+ Run `nx test betterLink` to execute the unit tests via [Vitest](https://vitest.dev/).
@@ -0,0 +1,87 @@
1
+ interface IGotoAddressOptions {
2
+ chain: string;
3
+ address: string;
4
+ contract?: boolean;
5
+ params?: Record<string, string>;
6
+ }
7
+ interface IGotoTokenOptions {
8
+ chain: string;
9
+ address?: string;
10
+ params?: Record<string, string>;
11
+ }
12
+ interface IGotoPersonOptions {
13
+ slug: string;
14
+ params?: Record<string, string>;
15
+ }
16
+ interface IGotoProjectOptions {
17
+ slug: string;
18
+ params?: Record<string, string>;
19
+ }
20
+ interface IGotoOrganizationOptions {
21
+ slug: string;
22
+ params?: Record<string, string>;
23
+ }
24
+ interface IGotoTransactionOptions {
25
+ chain: string;
26
+ hash: string;
27
+ params?: Record<string, string>;
28
+ }
29
+ interface IGotoBlockOptions {
30
+ chain: string;
31
+ height: string | number;
32
+ type?: string;
33
+ params?: Record<string, string>;
34
+ }
35
+ interface IGotoEntityOptions {
36
+ slug: string;
37
+ params?: Record<string, string>;
38
+ }
39
+ interface IGotoETFOptions {
40
+ region: string;
41
+ slug: string;
42
+ tokenSymbol: string;
43
+ params?: Record<string, string>;
44
+ }
45
+ interface IGotoExplorerOptions {
46
+ chain: string;
47
+ params?: Record<string, string>;
48
+ }
49
+ interface IGotoMarketOptions {
50
+ page?: number;
51
+ params?: Record<string, string>;
52
+ }
53
+ interface IGotoChatOptions {
54
+ locale?: string;
55
+ theme?: string;
56
+ q?: string;
57
+ }
58
+ interface IGotoAISQLOptions {
59
+ locale?: string;
60
+ theme?: string;
61
+ q?: string;
62
+ }
63
+ interface IGotoLoginOptions {
64
+ locale: string;
65
+ theme: string;
66
+ redirect: string;
67
+ }
68
+ export default function BetterLink(): {
69
+ gotoAddress: (options: IGotoAddressOptions) => string;
70
+ gotoToken: (options: IGotoTokenOptions) => string;
71
+ gotoProject: (options: IGotoProjectOptions) => string;
72
+ gotoPerson: (options: IGotoPersonOptions) => string;
73
+ gotoOrganization: (options: IGotoOrganizationOptions) => string;
74
+ gotoTransaction: (options: IGotoTransactionOptions) => string;
75
+ gotoBlock: (options: IGotoBlockOptions) => string;
76
+ gotoEntity: (options: IGotoEntityOptions) => string;
77
+ gotoETF: (options: IGotoETFOptions) => string;
78
+ gotoExplorer: (options: IGotoExplorerOptions) => string;
79
+ gotoMarket: (options: IGotoMarketOptions) => string;
80
+ gotoNews: (options: IGotoMarketOptions) => string;
81
+ gotoChat(options: IGotoChatOptions): string;
82
+ gotoAISQL(options: IGotoAISQLOptions): string;
83
+ gotoExplorerSearch(params: Record<string, string>): string;
84
+ gotoLogin(options: IGotoLoginOptions): string;
85
+ };
86
+ export {};
87
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,UAAU,mBAAmB;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AACD,UAAU,iBAAiB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AACD,UAAU,kBAAkB;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AACD,UAAU,mBAAmB;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AACD,UAAU,wBAAwB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AACD,UAAU,uBAAuB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AACD,UAAU,iBAAiB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AACD,UAAU,kBAAkB;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AACD,UAAU,eAAe;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AACD,UAAU,oBAAoB;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AACD,UAAU,kBAAkB;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AACD,UAAU,gBAAgB;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ;AACD,UAAU,iBAAiB;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ;AACD,UAAU,iBAAiB;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AA+BD,MAAM,CAAC,OAAO,UAAU,UAAU;2BAEP,mBAAmB;yBAKrB,iBAAiB;2BAKf,mBAAmB;0BAKpB,kBAAkB;gCAKZ,wBAAwB;+BAKzB,uBAAuB;yBAK7B,iBAAiB;0BAWhB,kBAAkB;uBAKrB,eAAe;4BAYV,oBAAoB;0BAKtB,kBAAkB;wBAKpB,kBAAkB;sBAKnB,gBAAgB;uBAKf,iBAAiB;+BAKT,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;uBAS9B,iBAAiB;EAMxC"}
package/dist/index.js ADDED
@@ -0,0 +1,102 @@
1
+ const g = /* @__PURE__ */ new Map([
2
+ ["bitcoin", "btc"],
3
+ ["litecoin", "ltc"],
4
+ ["dogecoin", "doge"],
5
+ ["bitcoincash", "bch"],
6
+ ["ethereum", "eth"],
7
+ ["tron", "trx"],
8
+ ["solana", "sol"],
9
+ ["terra", "terra"],
10
+ ["near", "near"],
11
+ ["polygon", "matic"],
12
+ ["avalanche", "avax"],
13
+ ["binance", "bsc"],
14
+ ["bnb chain", "bnb"]
15
+ ]);
16
+ function a(e) {
17
+ return g.get(e == null ? void 0 : e.toLowerCase()) || (e == null ? void 0 : e.toLowerCase());
18
+ }
19
+ function n(e) {
20
+ var t;
21
+ const o = {};
22
+ return e && Object.keys(e).forEach((r) => {
23
+ e[r] && (o[r] = e[r]);
24
+ }), ((t = Object.keys(o)) == null ? void 0 : t.length) > 0 ? `?${new URLSearchParams(o).toString()}` : "";
25
+ }
26
+ function i() {
27
+ return {
28
+ gotoAddress: (e) => {
29
+ const { chain: o, address: t, params: r } = e, s = n(r);
30
+ return `/explorer/${a(o)}/address/${t}${s}`;
31
+ },
32
+ gotoToken: (e) => {
33
+ const { chain: o, address: t, params: r } = e, s = n(r);
34
+ return `/explorer/${a(o)}/token${t && t.length > 10 ? `/${t}` : ""}${s}`;
35
+ },
36
+ gotoProject: (e) => {
37
+ const { slug: o, params: t } = e, r = n(t);
38
+ return `/project/${o}${r}`;
39
+ },
40
+ gotoPerson: (e) => {
41
+ const { slug: o, params: t } = e, r = n(t);
42
+ return `/person/${o}${r}`;
43
+ },
44
+ gotoOrganization: (e) => {
45
+ const { slug: o, params: t } = e, r = n(t);
46
+ return `/organization/${o}${r}`;
47
+ },
48
+ gotoTransaction: (e) => {
49
+ const { chain: o, hash: t, params: r } = e, s = n(r);
50
+ return `/explorer/${a(o)}/tx/${t}${s}`;
51
+ },
52
+ gotoBlock: (e) => {
53
+ const { chain: o, height: t, type: r, params: s } = e, c = n(s), $ = typeof t == "number" ? t : t != null && t.includes("coinbase_") ? `0x${t == null ? void 0 : t.replace("coinbase_", "")}` : t;
54
+ return `/explorer/${a(o)}/block${r ? `/${r}` : ""}/${$}${c}`;
55
+ },
56
+ gotoEntity: (e) => {
57
+ const { slug: o, params: t } = e, r = n(t);
58
+ return `/entity/${o}${r}`;
59
+ },
60
+ gotoETF: (e) => {
61
+ const { region: o, slug: t, tokenSymbol: r, params: s } = e, c = n(s), $ = o == null ? void 0 : o.toLowerCase(), l = r == null ? void 0 : r.toLowerCase(), h = `/etf/${l}-${$}`;
62
+ return l === t ? `${h}${c}` : `${h}/${t}${c}`;
63
+ },
64
+ gotoExplorer: (e) => {
65
+ const { chain: o, params: t } = e, r = n(t);
66
+ return `/explorer/${a(o)}${r}`;
67
+ },
68
+ gotoMarket: (e) => {
69
+ const { page: o, params: t } = e, r = n(t);
70
+ return `/market${o ? `/${o}` : ""}${r}`;
71
+ },
72
+ gotoNews: (e) => {
73
+ const { page: o, params: t } = e, r = n(t);
74
+ return `/news${o ? `/${o}` : ""}${r}`;
75
+ },
76
+ gotoChat(e) {
77
+ const { locale: o, q: t, theme: r } = e, s = n({ q: t || "", theme: r || "" });
78
+ return `${process.env.NEXT_PUBLIC_CHAT_URL}${o ? `/${o}` : ""}/chat${s}`;
79
+ },
80
+ gotoAISQL(e) {
81
+ const { locale: o, q: t, theme: r } = e, s = n({ q: t || "", theme: r || "" });
82
+ return `${process.env.NEXT_PUBLIC_CHAT_URL}${o ? `/${o}` : ""}/sql${s}`;
83
+ },
84
+ gotoExplorerSearch(e) {
85
+ var t, r;
86
+ return `/explorer/search${n({
87
+ chain: g.get((t = e == null ? void 0 : e.chain) == null ? void 0 : t.toLowerCase()) || ((r = e == null ? void 0 : e.chain) == null ? void 0 : r.toLowerCase()) || "",
88
+ q: (e == null ? void 0 : e.q) || "",
89
+ type: (e == null ? void 0 : e.type) || "",
90
+ _t: Date.now().toString()
91
+ // 添加时间戳强制刷新
92
+ })}`;
93
+ },
94
+ gotoLogin(e) {
95
+ const { locale: o, theme: t, redirect: r } = e, s = n({ theme: t || "", redirect_uri: r || "" });
96
+ return `${o ? `/${o}` : ""}/login${s}`;
97
+ }
98
+ };
99
+ }
100
+ export {
101
+ i as default
102
+ };
package/package.json ADDED
@@ -0,0 +1,21 @@
1
+ {
2
+ "name": "@ichaingo/better-link",
3
+ "version": "1.1.0",
4
+ "type": "module",
5
+ "main": "./dist/index.js",
6
+ "module": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ "./package.json": "./package.json",
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.js",
13
+ "default": "./dist/index.js"
14
+ }
15
+ },
16
+ "files": [
17
+ "dist",
18
+ "!**/*.tsbuildinfo"
19
+ ],
20
+ "dependencies": {}
21
+ }