@fastnear/wallet-adapter 0.9.7 → 0.9.10

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.
Files changed (42) hide show
  1. package/dist/cjs/actions.cjs +103 -0
  2. package/dist/cjs/actions.cjs.map +1 -0
  3. package/dist/cjs/errors.cjs +73 -0
  4. package/dist/cjs/errors.cjs.map +1 -0
  5. package/dist/cjs/index.cjs +17 -164
  6. package/dist/cjs/index.cjs.map +1 -1
  7. package/dist/cjs/index.d.cts +173 -104
  8. package/dist/cjs/meteor.cjs +437 -0
  9. package/dist/cjs/meteor.cjs.map +1 -0
  10. package/dist/cjs/near-mobile.cjs +521 -0
  11. package/dist/cjs/near-mobile.cjs.map +1 -0
  12. package/dist/cjs/polling.cjs +88 -0
  13. package/dist/cjs/polling.cjs.map +1 -0
  14. package/dist/cjs/rpc.cjs +128 -0
  15. package/dist/cjs/rpc.cjs.map +1 -0
  16. package/dist/cjs/storage.cjs +69 -0
  17. package/dist/cjs/storage.cjs.map +1 -0
  18. package/dist/cjs/types.cjs +19 -0
  19. package/dist/cjs/types.cjs.map +1 -0
  20. package/dist/esm/actions.js +80 -0
  21. package/dist/esm/actions.js.map +1 -0
  22. package/dist/esm/errors.js +47 -0
  23. package/dist/esm/errors.js.map +1 -0
  24. package/dist/esm/index.d.ts +173 -104
  25. package/dist/esm/index.js +11 -164
  26. package/dist/esm/index.js.map +1 -1
  27. package/dist/esm/meteor.js +414 -0
  28. package/dist/esm/meteor.js.map +1 -0
  29. package/dist/esm/near-mobile.js +504 -0
  30. package/dist/esm/near-mobile.js.map +1 -0
  31. package/dist/esm/polling.js +64 -0
  32. package/dist/esm/polling.js.map +1 -0
  33. package/dist/esm/rpc.js +104 -0
  34. package/dist/esm/rpc.js.map +1 -0
  35. package/dist/esm/storage.js +44 -0
  36. package/dist/esm/storage.js.map +1 -0
  37. package/dist/esm/types.js +3 -0
  38. package/dist/esm/types.js.map +1 -0
  39. package/dist/umd/browser.global.js +6281 -144
  40. package/dist/umd/browser.global.js.map +1 -1
  41. package/package.json +13 -6
  42. package/README.md +0 -9
@@ -0,0 +1,103 @@
1
+ /* ⋈ 🏃🏻💨 FastNear Wallet Adapters - CJS (@fastnear/wallet-adapter version 0.9.10) */
2
+ /* https://www.npmjs.com/package/@fastnear/wallet-adapter/v/0.9.10 */
3
+ "use strict";
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
9
+ var __export = (target, all) => {
10
+ for (var name in all)
11
+ __defProp(target, name, { get: all[name], enumerable: true });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from))
16
+ if (!__hasOwnProp.call(to, key) && key !== except)
17
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
18
+ }
19
+ return to;
20
+ };
21
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
22
+ var actions_exports = {};
23
+ __export(actions_exports, {
24
+ connectorActionsToFastnearActions: () => connectorActionsToFastnearActions
25
+ });
26
+ module.exports = __toCommonJS(actions_exports);
27
+ var import_utils = require("@fastnear/utils");
28
+ const toBase64Code = /* @__PURE__ */ __name((value) => {
29
+ if (typeof value === "string") return value;
30
+ if (value instanceof Uint8Array) return (0, import_utils.bytesToBase64)(value);
31
+ if (Array.isArray(value)) return (0, import_utils.bytesToBase64)(Uint8Array.from(value));
32
+ throw new Error("DeployContract code must be Uint8Array, Array<number>, or base64 string");
33
+ }, "toBase64Code");
34
+ const connectorActionsToFastnearActions = /* @__PURE__ */ __name((actions) => {
35
+ return actions.map((action) => {
36
+ if (typeof action !== "object" || action == null) {
37
+ throw new Error("Invalid action");
38
+ }
39
+ if (!("type" in action) || typeof action.type !== "string") {
40
+ throw new Error("Action is missing type");
41
+ }
42
+ switch (action.type) {
43
+ case "FunctionCall":
44
+ return {
45
+ type: "FunctionCall",
46
+ methodName: action.params?.methodName,
47
+ args: action.params?.args ?? {},
48
+ gas: action.params?.gas ?? "30000000000000",
49
+ deposit: action.params?.deposit ?? "0"
50
+ };
51
+ case "Transfer":
52
+ return {
53
+ type: "Transfer",
54
+ deposit: action.params?.deposit
55
+ };
56
+ case "AddKey":
57
+ return {
58
+ type: "AddKey",
59
+ publicKey: action.params?.publicKey,
60
+ accessKey: {
61
+ nonce: action.params?.accessKey?.nonce ?? 0,
62
+ permission: action.params?.accessKey?.permission === "FullAccess" ? "FullAccess" : {
63
+ receiverId: action.params?.accessKey?.permission?.receiverId,
64
+ methodNames: action.params?.accessKey?.permission?.methodNames ?? [],
65
+ allowance: action.params?.accessKey?.permission?.allowance
66
+ }
67
+ }
68
+ };
69
+ case "DeleteKey":
70
+ return {
71
+ type: "DeleteKey",
72
+ publicKey: action.params?.publicKey
73
+ };
74
+ case "CreateAccount":
75
+ return {
76
+ type: "CreateAccount"
77
+ };
78
+ case "DeleteAccount":
79
+ return {
80
+ type: "DeleteAccount",
81
+ beneficiaryId: action.params?.beneficiaryId
82
+ };
83
+ case "DeployContract":
84
+ return {
85
+ type: "DeployContract",
86
+ codeBase64: toBase64Code(action.params?.code)
87
+ };
88
+ case "Stake":
89
+ return {
90
+ type: "Stake",
91
+ stake: action.params?.stake,
92
+ publicKey: action.params?.publicKey
93
+ };
94
+ default:
95
+ throw new Error(`Unsupported action type: ${action.type}`);
96
+ }
97
+ });
98
+ }, "connectorActionsToFastnearActions");
99
+ // Annotate the CommonJS export names for ESM import in node:
100
+ 0 && (module.exports = {
101
+ connectorActionsToFastnearActions
102
+ });
103
+ //# sourceMappingURL=actions.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/actions.ts"],"sourcesContent":["import { bytesToBase64 } from \"@fastnear/utils\";\nimport type { ConnectorActionLike } from \"./types.js\";\n\nconst toBase64Code = (value: unknown): string => {\n if (typeof value === \"string\") return value;\n if (value instanceof Uint8Array) return bytesToBase64(value);\n if (Array.isArray(value)) return bytesToBase64(Uint8Array.from(value));\n throw new Error(\"DeployContract code must be Uint8Array, Array<number>, or base64 string\");\n};\n\nexport const connectorActionsToFastnearActions = (actions: ConnectorActionLike[]): any[] => {\n return actions.map((action) => {\n if (typeof action !== \"object\" || action == null) {\n throw new Error(\"Invalid action\");\n }\n\n if (!(\"type\" in action) || typeof action.type !== \"string\") {\n throw new Error(\"Action is missing type\");\n }\n\n switch (action.type) {\n case \"FunctionCall\":\n return {\n type: \"FunctionCall\",\n methodName: action.params?.methodName,\n args: action.params?.args ?? {},\n gas: action.params?.gas ?? \"30000000000000\",\n deposit: action.params?.deposit ?? \"0\",\n };\n case \"Transfer\":\n return {\n type: \"Transfer\",\n deposit: action.params?.deposit,\n };\n case \"AddKey\":\n return {\n type: \"AddKey\",\n publicKey: action.params?.publicKey,\n accessKey: {\n nonce: action.params?.accessKey?.nonce ?? 0,\n permission:\n action.params?.accessKey?.permission === \"FullAccess\"\n ? \"FullAccess\"\n : {\n receiverId: action.params?.accessKey?.permission?.receiverId,\n methodNames: action.params?.accessKey?.permission?.methodNames ?? [],\n allowance: action.params?.accessKey?.permission?.allowance,\n },\n },\n };\n case \"DeleteKey\":\n return {\n type: \"DeleteKey\",\n publicKey: action.params?.publicKey,\n };\n case \"CreateAccount\":\n return {\n type: \"CreateAccount\",\n };\n case \"DeleteAccount\":\n return {\n type: \"DeleteAccount\",\n beneficiaryId: action.params?.beneficiaryId,\n };\n case \"DeployContract\":\n return {\n type: \"DeployContract\",\n codeBase64: toBase64Code(action.params?.code),\n };\n case \"Stake\":\n return {\n type: \"Stake\",\n stake: action.params?.stake,\n publicKey: action.params?.publicKey,\n };\n default:\n throw new Error(`Unsupported action type: ${action.type}`);\n }\n });\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA8B;AAG9B,MAAM,eAAe,wBAAC,UAA2B;AAC/C,MAAI,OAAO,UAAU,SAAU,QAAO;AACtC,MAAI,iBAAiB,WAAY,YAAO,4BAAc,KAAK;AAC3D,MAAI,MAAM,QAAQ,KAAK,EAAG,YAAO,4BAAc,WAAW,KAAK,KAAK,CAAC;AACrE,QAAM,IAAI,MAAM,yEAAyE;AAC3F,GALqB;AAOd,MAAM,oCAAoC,wBAAC,YAA0C;AAC1F,SAAO,QAAQ,IAAI,CAAC,WAAW;AAC7B,QAAI,OAAO,WAAW,YAAY,UAAU,MAAM;AAChD,YAAM,IAAI,MAAM,gBAAgB;AAAA,IAClC;AAEA,QAAI,EAAE,UAAU,WAAW,OAAO,OAAO,SAAS,UAAU;AAC1D,YAAM,IAAI,MAAM,wBAAwB;AAAA,IAC1C;AAEA,YAAQ,OAAO,MAAM;AAAA,MACnB,KAAK;AACH,eAAO;AAAA,UACL,MAAM;AAAA,UACN,YAAY,OAAO,QAAQ;AAAA,UAC3B,MAAM,OAAO,QAAQ,QAAQ,CAAC;AAAA,UAC9B,KAAK,OAAO,QAAQ,OAAO;AAAA,UAC3B,SAAS,OAAO,QAAQ,WAAW;AAAA,QACrC;AAAA,MACF,KAAK;AACH,eAAO;AAAA,UACL,MAAM;AAAA,UACN,SAAS,OAAO,QAAQ;AAAA,QAC1B;AAAA,MACF,KAAK;AACH,eAAO;AAAA,UACL,MAAM;AAAA,UACN,WAAW,OAAO,QAAQ;AAAA,UAC1B,WAAW;AAAA,YACT,OAAO,OAAO,QAAQ,WAAW,SAAS;AAAA,YAC1C,YACE,OAAO,QAAQ,WAAW,eAAe,eACrC,eACA;AAAA,cACE,YAAY,OAAO,QAAQ,WAAW,YAAY;AAAA,cAClD,aAAa,OAAO,QAAQ,WAAW,YAAY,eAAe,CAAC;AAAA,cACnE,WAAW,OAAO,QAAQ,WAAW,YAAY;AAAA,YACnD;AAAA,UACR;AAAA,QACF;AAAA,MACF,KAAK;AACH,eAAO;AAAA,UACL,MAAM;AAAA,UACN,WAAW,OAAO,QAAQ;AAAA,QAC5B;AAAA,MACF,KAAK;AACH,eAAO;AAAA,UACL,MAAM;AAAA,QACR;AAAA,MACF,KAAK;AACH,eAAO;AAAA,UACL,MAAM;AAAA,UACN,eAAe,OAAO,QAAQ;AAAA,QAChC;AAAA,MACF,KAAK;AACH,eAAO;AAAA,UACL,MAAM;AAAA,UACN,YAAY,aAAa,OAAO,QAAQ,IAAI;AAAA,QAC9C;AAAA,MACF,KAAK;AACH,eAAO;AAAA,UACL,MAAM;AAAA,UACN,OAAO,OAAO,QAAQ;AAAA,UACtB,WAAW,OAAO,QAAQ;AAAA,QAC5B;AAAA,MACF;AACE,cAAM,IAAI,MAAM,4BAA4B,OAAO,IAAI,EAAE;AAAA,IAC7D;AAAA,EACF,CAAC;AACH,GArEiD;","names":[]}
@@ -0,0 +1,73 @@
1
+ /* ⋈ 🏃🏻💨 FastNear Wallet Adapters - CJS (@fastnear/wallet-adapter version 0.9.10) */
2
+ /* https://www.npmjs.com/package/@fastnear/wallet-adapter/v/0.9.10 */
3
+ "use strict";
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
9
+ var __export = (target, all) => {
10
+ for (var name in all)
11
+ __defProp(target, name, { get: all[name], enumerable: true });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from))
16
+ if (!__hasOwnProp.call(to, key) && key !== except)
17
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
18
+ }
19
+ return to;
20
+ };
21
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
22
+ var errors_exports = {};
23
+ __export(errors_exports, {
24
+ TransportError: () => TransportError,
25
+ UserRejectedError: () => UserRejectedError,
26
+ isTransportError: () => isTransportError,
27
+ isUserRejectedError: () => isUserRejectedError
28
+ });
29
+ module.exports = __toCommonJS(errors_exports);
30
+ class TransportError extends Error {
31
+ static {
32
+ __name(this, "TransportError");
33
+ }
34
+ code;
35
+ cause;
36
+ details;
37
+ constructor(code, message, options) {
38
+ super(message);
39
+ this.name = "TransportError";
40
+ this.code = code;
41
+ this.cause = options?.cause;
42
+ this.details = options?.details;
43
+ }
44
+ }
45
+ class UserRejectedError extends Error {
46
+ static {
47
+ __name(this, "UserRejectedError");
48
+ }
49
+ code;
50
+ cause;
51
+ details;
52
+ constructor(code, message, options) {
53
+ super(message);
54
+ this.name = "UserRejectedError";
55
+ this.code = code;
56
+ this.cause = options?.cause;
57
+ this.details = options?.details;
58
+ }
59
+ }
60
+ const isUserRejectedError = /* @__PURE__ */ __name((error) => {
61
+ return error instanceof UserRejectedError;
62
+ }, "isUserRejectedError");
63
+ const isTransportError = /* @__PURE__ */ __name((error) => {
64
+ return error instanceof TransportError;
65
+ }, "isTransportError");
66
+ // Annotate the CommonJS export names for ESM import in node:
67
+ 0 && (module.exports = {
68
+ TransportError,
69
+ UserRejectedError,
70
+ isTransportError,
71
+ isUserRejectedError
72
+ });
73
+ //# sourceMappingURL=errors.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/errors.ts"],"sourcesContent":["export class TransportError extends Error {\n readonly code: string;\n readonly cause?: unknown;\n readonly details?: unknown;\n\n constructor(code: string, message: string, options?: { cause?: unknown; details?: unknown }) {\n super(message);\n this.name = \"TransportError\";\n this.code = code;\n this.cause = options?.cause;\n this.details = options?.details;\n }\n}\n\nexport class UserRejectedError extends Error {\n readonly code: string;\n readonly cause?: unknown;\n readonly details?: unknown;\n\n constructor(code: string, message: string, options?: { cause?: unknown; details?: unknown }) {\n super(message);\n this.name = \"UserRejectedError\";\n this.code = code;\n this.cause = options?.cause;\n this.details = options?.details;\n }\n}\n\nexport const isUserRejectedError = (error: unknown): error is UserRejectedError => {\n return error instanceof UserRejectedError;\n};\n\nexport const isTransportError = (error: unknown): error is TransportError => {\n return error instanceof TransportError;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,MAAM,uBAAuB,MAAM;AAAA,EAA1C,OAA0C;AAAA;AAAA;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EAET,YAAY,MAAc,SAAiB,SAAkD;AAC3F,UAAM,OAAO;AACb,SAAK,OAAO;AACZ,SAAK,OAAO;AACZ,SAAK,QAAQ,SAAS;AACtB,SAAK,UAAU,SAAS;AAAA,EAC1B;AACF;AAEO,MAAM,0BAA0B,MAAM;AAAA,EAd7C,OAc6C;AAAA;AAAA;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EAET,YAAY,MAAc,SAAiB,SAAkD;AAC3F,UAAM,OAAO;AACb,SAAK,OAAO;AACZ,SAAK,OAAO;AACZ,SAAK,QAAQ,SAAS;AACtB,SAAK,UAAU,SAAS;AAAA,EAC1B;AACF;AAEO,MAAM,sBAAsB,wBAAC,UAA+C;AACjF,SAAO,iBAAiB;AAC1B,GAFmC;AAI5B,MAAM,mBAAmB,wBAAC,UAA4C;AAC3E,SAAO,iBAAiB;AAC1B,GAFgC;","names":[]}
@@ -1,11 +1,10 @@
1
- /* ⋈ 🏃🏻💨 FastNEAR Wallet Adapter - CJS (@fastnear/wallet-adapter version 0.9.7) */
2
- /* https://www.npmjs.com/package/@fastnear/wallet-adapter/v/0.9.7 */
1
+ /* ⋈ 🏃🏻💨 FastNear Wallet Adapters - CJS (@fastnear/wallet-adapter version 0.9.10) */
2
+ /* https://www.npmjs.com/package/@fastnear/wallet-adapter/v/0.9.10 */
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
5
5
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
6
  var __getOwnPropNames = Object.getOwnPropertyNames;
7
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
9
8
  var __export = (target, all) => {
10
9
  for (var name in all)
11
10
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -21,170 +20,24 @@ var __copyProps = (to, from, except, desc) => {
21
20
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
22
21
  var index_exports = {};
23
22
  __export(index_exports, {
24
- WalletAdapter: () => WalletAdapter
23
+ TransportError: () => import_errors.TransportError,
24
+ UserRejectedError: () => import_errors.UserRejectedError,
25
+ createMeteorAdapter: () => import_meteor.createMeteorAdapter,
26
+ createNearMobileAdapter: () => import_near_mobile.createNearMobileAdapter,
27
+ isTransportError: () => import_errors.isTransportError,
28
+ isUserRejectedError: () => import_errors.isUserRejectedError
25
29
  });
26
30
  module.exports = __toCommonJS(index_exports);
27
- class WalletAdapter {
28
- static {
29
- __name(this, "WalletAdapter");
30
- }
31
- /** @type {HTMLIFrameElement} */
32
- #iframe = null;
33
- /** @type {string} */
34
- #targetOrigin;
35
- /** @type {string} */
36
- #widgetUrl;
37
- /** @type {Map<string, Function>} */
38
- #pending = /* @__PURE__ */ new Map();
39
- /** @type {WalletState} */
40
- #state;
41
- /** @type {Function} */
42
- #onStateUpdate;
43
- /** @type {string} */
44
- #callbackUrl;
45
- /** @type {string} */
46
- static defaultWidgetUrl = "https://wallet-adapter.fastnear.com";
47
- /**
48
- * @param {WalletAdapterConfig} [config]
49
- */
50
- constructor({
51
- widgetUrl = WalletAdapter.defaultWidgetUrl,
52
- targetOrigin = "*",
53
- onStateUpdate,
54
- lastState,
55
- callbackUrl = window.location.href
56
- } = {}) {
57
- this.#targetOrigin = targetOrigin;
58
- this.#widgetUrl = widgetUrl;
59
- this.#onStateUpdate = onStateUpdate;
60
- this.#callbackUrl = callbackUrl;
61
- this.#state = lastState || {};
62
- window.addEventListener("message", this.#handleMessage.bind(this));
63
- }
64
- /**
65
- * Creates an iframe for wallet interaction
66
- * @param {string} path - Path to load in iframe
67
- * @returns {HTMLIFrameElement}
68
- */
69
- #createIframe(path) {
70
- if (this.#iframe) {
71
- this.#iframe.remove();
72
- }
73
- const url = new URL(path, this.#widgetUrl);
74
- const iframe = document.createElement("iframe");
75
- iframe.src = url.toString();
76
- iframe.allow = "usb";
77
- iframe.style.border = "none";
78
- iframe.style.zIndex = "10000";
79
- iframe.style.position = "fixed";
80
- iframe.style.display = "block";
81
- iframe.style.top = "0";
82
- iframe.style.left = "0";
83
- iframe.style.width = "100%";
84
- iframe.style.height = "100%";
85
- document.body.appendChild(iframe);
86
- this.#iframe = iframe;
87
- return iframe;
88
- }
89
- /**
90
- * Handles messages from the wallet widget
91
- * @param {MessageEvent} event
92
- */
93
- #handleMessage(event) {
94
- if (this.#targetOrigin !== "*" && event.origin !== this.#targetOrigin) {
95
- return;
96
- }
97
- const { id, type, action, payload } = event.data;
98
- if (type !== "wallet-adapter") return;
99
- if (action === "close") {
100
- this.#iframe?.remove();
101
- this.#iframe = null;
102
- return;
103
- }
104
- if (payload?.state) {
105
- this.#state = { ...this.#state, ...payload.state };
106
- this.#onStateUpdate?.(this.#state);
107
- }
108
- const resolve = this.#pending.get(id);
109
- if (resolve) {
110
- this.#pending.delete(id);
111
- this.#iframe?.remove();
112
- this.#iframe = null;
113
- resolve(payload);
114
- }
115
- }
116
- /**
117
- * Sends a message to the wallet widget
118
- * @param {string} path - Path to load in iframe
119
- * @param {string} method - Method to call
120
- * @param {Object} params - Parameters to pass
121
- * @returns {Promise<any>}
122
- */
123
- async #sendMessage(path, method, params) {
124
- return new Promise((resolve) => {
125
- const id = Math.random().toString(36).slice(2);
126
- this.#pending.set(id, resolve);
127
- const iframe = this.#createIframe(path);
128
- iframe.onload = () => {
129
- iframe.contentWindow?.postMessage(
130
- {
131
- type: "wallet-adapter",
132
- method,
133
- params: {
134
- id,
135
- ...params,
136
- state: this.#state,
137
- callbackUrl: params.callbackUrl || this.#callbackUrl
138
- }
139
- },
140
- this.#targetOrigin
141
- );
142
- };
143
- });
144
- }
145
- /**
146
- * Get current wallet state
147
- * @returns {WalletState}
148
- */
149
- getState() {
150
- return { ...this.#state };
151
- }
152
- /**
153
- * Set current wallet state
154
- * @param state
155
- */
156
- setState(state) {
157
- this.#state = state;
158
- }
159
- /**
160
- * Sign in with a NEAR wallet
161
- * @param {SignInConfig} config
162
- * @returns {Promise<any>}
163
- *
164
- * Should be returning SignInResult
165
- */
166
- async signIn(config) {
167
- return this.#sendMessage("/login.html", "signIn", config);
168
- }
169
- /**
170
- * Send a transaction using connected wallet
171
- * @param {TransactionConfig} config
172
- * @returns {Promise<TransactionResult>}
173
- */
174
- async sendTransactions(config) {
175
- return this.#sendMessage("/send.html", "sendTransactions", config);
176
- }
177
- /**
178
- * Clean up adapter resources
179
- */
180
- destroy() {
181
- window.removeEventListener("message", this.#handleMessage);
182
- this.#iframe?.remove();
183
- this.#iframe = null;
184
- }
185
- }
31
+ var import_meteor = require("./meteor.js");
32
+ var import_near_mobile = require("./near-mobile.js");
33
+ var import_errors = require("./errors.js");
186
34
  // Annotate the CommonJS export names for ESM import in node:
187
35
  0 && (module.exports = {
188
- WalletAdapter
36
+ TransportError,
37
+ UserRejectedError,
38
+ createMeteorAdapter,
39
+ createNearMobileAdapter,
40
+ isTransportError,
41
+ isUserRejectedError
189
42
  });
190
43
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["/**\n * @typedef {Object} WalletState\n * @property {string} [accountId] - NEAR account ID if signed in\n * @property {string} [publicKey] - Public key if available\n * @property {string} [privateKey] - Private key if available\n * @property {string} [lastWalletId] - ID of last used wallet\n * @property {string} [networkId] - ID of last used network\n */\n\n/**\n * @typedef {Object} SignInConfig\n * @property {string} networkId - NEAR network ID ('mainnet' or 'testnet')\n * @property {string} contractId - Contract ID to request access for\n * @property {string} [walletId] - Preferred wallet to use. E.g. 'near', 'here', 'meteor'\n * @property {string} [callbackUrl] - URL to redirect back to after wallet interaction\n */\n\n/**\n * @typedef {Object} SignInResult\n * @property {string} [url] - URL to redirect to if needed\n * @property {string} [accountId] - Account ID if immediately available\n * @property {string} [error] - Error message if sign in failed\n */\nexport interface SignInResult {\n url?: string;\n accountId?: string;\n error?: string;\n}\n\n/**\n * @typedef {Object} Transaction\n * @property {string} [signerId] - Transaction signer account ID\n * @property {string} receiverId - Transaction receiver account ID\n * @property {Object[]} actions - Transaction actions to perform\n */\n\n/**\n * @typedef {Object} TransactionConfig\n * @property {Transaction} transactions - Transaction actions to perform\n * @property {string} [callbackUrl] - URL to redirect back to after wallet interaction\n */\n\n/**\n * @typedef {Object} TransactionResult\n * @property {string} [url] - URL to redirect to if needed\n * @property {string} [hash] - Transaction hash if immediately available\n * @property {string} [error] - Error message if transaction failed\n * Represents the result of attempting to send or execute a transaction.\n */\nexport interface TransactionResult {\n /** URL to redirect to if needed. */\n url?: string;\n\n /** Transaction hash if immediately available. */\n hash?: string;\n\n /** Error message if the transaction failed. */\n error?: string;\n}\n\nexport interface WalletAdapterConstructor {\n widgetUrl?: string;\n targetOrigin?: string;\n onStateUpdate?: (state: any) => void;\n lastState?: any;\n callbackUrl?: string;\n}\n\n/**\n * @typedef {Object} WalletAdapterConfig\n * @property {string} [widgetUrl] - URL of the wallet widget (defaults to official hosted version)\n * @property {string} [targetOrigin] - Target origin for postMessage (defaults to '*')\n * @property {string} [lastState] - The last state that was given by WalletAdapter before the redirect or reload.\n * @property {(state: WalletState) => void} [onStateUpdate] - Called when wallet state changes\n * @property {string} [callbackUrl] - Default callback URL for wallet interactions (defaults to current page URL)\n */\n\n/**\n * Interface for interacting with NEAR wallets\n */\nexport class WalletAdapter {\n /** @type {HTMLIFrameElement} */\n #iframe: HTMLIFrameElement | null = null;\n\n /** @type {string} */\n #targetOrigin;\n\n /** @type {string} */\n #widgetUrl;\n\n /** @type {Map<string, Function>} */\n #pending = new Map();\n\n /** @type {WalletState} */\n #state;\n\n /** @type {Function} */\n #onStateUpdate;\n\n /** @type {string} */\n #callbackUrl;\n\n /** @type {string} */\n static defaultWidgetUrl = \"https://wallet-adapter.fastnear.com\";\n\n /**\n * @param {WalletAdapterConfig} [config]\n */\n constructor({\n widgetUrl = WalletAdapter.defaultWidgetUrl,\n targetOrigin = \"*\",\n onStateUpdate,\n lastState,\n callbackUrl = window.location.href,\n }: WalletAdapterConstructor = {}) {\n this.#targetOrigin = targetOrigin;\n this.#widgetUrl = widgetUrl;\n this.#onStateUpdate = onStateUpdate;\n this.#callbackUrl = callbackUrl;\n this.#state = lastState || {};\n window.addEventListener(\"message\", this.#handleMessage.bind(this));\n }\n\n /**\n * Creates an iframe for wallet interaction\n * @param {string} path - Path to load in iframe\n * @returns {HTMLIFrameElement}\n */\n #createIframe(path) {\n // Remove existing iframe if any\n if (this.#iframe) {\n this.#iframe.remove();\n }\n\n // Create URL\n const url = new URL(path, this.#widgetUrl);\n\n // Create and configure iframe\n const iframe = document.createElement(\"iframe\");\n iframe.src = url.toString();\n iframe.allow = \"usb\";\n iframe.style.border = \"none\";\n iframe.style.zIndex = \"10000\";\n iframe.style.position = \"fixed\";\n iframe.style.display = \"block\";\n iframe.style.top = \"0\";\n iframe.style.left = \"0\";\n iframe.style.width = \"100%\";\n iframe.style.height = \"100%\";\n document.body.appendChild(iframe);\n\n this.#iframe = iframe;\n return iframe;\n }\n\n /**\n * Handles messages from the wallet widget\n * @param {MessageEvent} event\n */\n #handleMessage(event) {\n // Check origin if specified\n if (this.#targetOrigin !== \"*\" && event.origin !== this.#targetOrigin) {\n return;\n }\n\n const { id, type, action, payload } = event.data;\n if (type !== \"wallet-adapter\") return;\n\n // Handle close action\n if (action === \"close\") {\n this.#iframe?.remove();\n this.#iframe = null;\n return;\n }\n\n // Update state if provided\n if (payload?.state) {\n this.#state = { ...this.#state, ...payload.state };\n this.#onStateUpdate?.(this.#state);\n }\n\n // Resolve pending promise if any\n const resolve = this.#pending.get(id) as ((value: SignInResult) => void);\n if (resolve) {\n this.#pending.delete(id);\n this.#iframe?.remove();\n this.#iframe = null;\n resolve(payload as SignInResult);\n }\n }\n\n /**\n * Sends a message to the wallet widget\n * @param {string} path - Path to load in iframe\n * @param {string} method - Method to call\n * @param {Object} params - Parameters to pass\n * @returns {Promise<any>}\n */\n async #sendMessage(path, method, params): Promise<TransactionResult> {\n return new Promise((resolve) => {\n const id = Math.random().toString(36).slice(2);\n this.#pending.set(id, resolve);\n\n const iframe = this.#createIframe(path);\n\n iframe.onload = () => {\n iframe.contentWindow?.postMessage(\n {\n type: \"wallet-adapter\",\n method,\n params: {\n id,\n ...params,\n state: this.#state,\n callbackUrl: params.callbackUrl || this.#callbackUrl,\n },\n },\n this.#targetOrigin\n );\n };\n });\n }\n\n /**\n * Get current wallet state\n * @returns {WalletState}\n */\n getState() {\n return { ...this.#state };\n }\n\n /**\n * Set current wallet state\n * @param state\n */\n setState(state) {\n this.#state = state;\n }\n\n /**\n * Sign in with a NEAR wallet\n * @param {SignInConfig} config\n * @returns {Promise<any>}\n *\n * Should be returning SignInResult\n */\n async signIn(config): Promise<any> {\n return this.#sendMessage(\"/login.html\", \"signIn\", config);\n }\n\n /**\n * Send a transaction using connected wallet\n * @param {TransactionConfig} config\n * @returns {Promise<TransactionResult>}\n */\n async sendTransactions(config): Promise<TransactionResult> {\n return this.#sendMessage(\"/send.html\", \"sendTransactions\", config);\n }\n\n /**\n * Clean up adapter resources\n */\n destroy() {\n window.removeEventListener(\"message\", this.#handleMessage);\n this.#iframe?.remove();\n this.#iframe = null;\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["export { createMeteorAdapter } from \"./meteor.js\";\nexport { createNearMobileAdapter } from \"./near-mobile.js\";\n\nexport { TransportError, UserRejectedError, isTransportError, isUserRejectedError } from \"./errors.js\";\n\nexport type {\n WalletAdapter,\n WalletNetwork,\n WalletAccount,\n ConnectorActionLike,\n SignInParams,\n SignOutParams,\n GetAccountsParams,\n SignMessageParams,\n SignAndSendTransactionParams,\n SignAndSendTransactionsParams,\n AdapterStorage,\n PopupWindowLike,\n MeteorExtensionBridge,\n MeteorAdapterOptions,\n NearMobileMetadata,\n NearMobileRequestPayload,\n NearMobileAdapterOptions,\n} from \"./types.js\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAoC;AACpC,yBAAwC;AAExC,oBAAyF;","names":[]}