@fastnear/utils 0.6.2 → 0.7.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.
@@ -0,0 +1,187 @@
1
+ /* ⋈ 🏃🏻💨 FastNEAR Utils - CJS (@fastnear/utils version 0.6.3) */
2
+ /* https://www.npmjs.com/package/@fastnear/utils/v/0.6.3 */
3
+ "use strict";
4
+ var __create = Object.create;
5
+ var __defProp = Object.defineProperty;
6
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
7
+ var __getOwnPropNames = Object.getOwnPropertyNames;
8
+ var __getProtoOf = Object.getPrototypeOf;
9
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
10
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
11
+ var __export = (target, all) => {
12
+ for (var name in all)
13
+ __defProp(target, name, { get: all[name], enumerable: true });
14
+ };
15
+ var __copyProps = (to, from, except, desc) => {
16
+ if (from && typeof from === "object" || typeof from === "function") {
17
+ for (let key of __getOwnPropNames(from))
18
+ if (!__hasOwnProp.call(to, key) && key !== except)
19
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
20
+ }
21
+ return to;
22
+ };
23
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
24
+ // If the importer is in node compatibility mode or this is not an ESM
25
+ // file that has been converted to a CommonJS file using a Babel-
26
+ // compatible transform (i.e. "__esModule" has not been set), then set
27
+ // "default" to the CommonJS "module.exports" for node compatibility.
28
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
29
+ mod
30
+ ));
31
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
32
+ var misc_exports = {};
33
+ __export(misc_exports, {
34
+ base64ToBytes: () => base64ToBytes,
35
+ bytesToBase64: () => bytesToBase64,
36
+ canSignWithLAK: () => canSignWithLAK,
37
+ convertUnit: () => convertUnit,
38
+ deepCopy: () => deepCopy,
39
+ fromBase58: () => import_base58_js.base58_to_binary,
40
+ fromBase64: () => fromBase64,
41
+ fromHex: () => fromHex,
42
+ lsGet: () => lsGet,
43
+ lsSet: () => lsSet,
44
+ parseJsonFromBytes: () => parseJsonFromBytes,
45
+ toBase58: () => import_base58_js.binary_to_base58,
46
+ toBase64: () => toBase64,
47
+ toHex: () => toHex,
48
+ tryParseJson: () => tryParseJson
49
+ });
50
+ module.exports = __toCommonJS(misc_exports);
51
+ var import_base58_js = require("base58-js");
52
+ var import_big = __toESM(require("big.js"), 1);
53
+ var import_js_base64 = require("js-base64");
54
+ var import_storage = require("./storage.js");
55
+ function toHex(data) {
56
+ return Array.from(data).map((b) => b.toString(16).padStart(2, "0")).join("");
57
+ }
58
+ __name(toHex, "toHex");
59
+ function fromHex(hex) {
60
+ if (hex.length % 2) throw new Error("Hex string must be even length");
61
+ const bytes = new Uint8Array(hex.length / 2);
62
+ for (let i = 0; i < hex.length; i += 2) {
63
+ bytes[i / 2] = parseInt(hex.slice(i, i + 2), 16);
64
+ }
65
+ return bytes;
66
+ }
67
+ __name(fromHex, "fromHex");
68
+ function base64ToBytes(b64Val) {
69
+ return (0, import_js_base64.toUint8Array)(b64Val);
70
+ }
71
+ __name(base64ToBytes, "base64ToBytes");
72
+ function bytesToBase64(bytesArr) {
73
+ return (0, import_js_base64.fromUint8Array)(bytesArr);
74
+ }
75
+ __name(bytesToBase64, "bytesToBase64");
76
+ function toBase64(strVal) {
77
+ try {
78
+ return (0, import_js_base64.encode)(strVal);
79
+ } catch (e) {
80
+ console.error("Issue base64 encoding", e);
81
+ return null;
82
+ }
83
+ }
84
+ __name(toBase64, "toBase64");
85
+ function fromBase64(strVal) {
86
+ try {
87
+ return (0, import_js_base64.decode)(strVal);
88
+ } catch (e) {
89
+ console.error("Issue base64 decoding", e);
90
+ return null;
91
+ }
92
+ }
93
+ __name(fromBase64, "fromBase64");
94
+ function convertUnit(s, ...args) {
95
+ if (Array.isArray(s)) {
96
+ s = s.reduce((acc, part, i) => {
97
+ return acc + (args[i - 1] ?? "") + part;
98
+ });
99
+ }
100
+ if (typeof s == "string") {
101
+ const match = s.match(/([0-9.,_]+)\s*([a-zA-Z]+)?/);
102
+ if (match) {
103
+ const amount = match[1].replace(/[_,]/g, "");
104
+ const unitPart = match[2];
105
+ if (unitPart) {
106
+ switch (unitPart.toLowerCase()) {
107
+ case "near":
108
+ return (0, import_big.default)(amount).mul((0, import_big.default)(10).pow(24)).toFixed(0);
109
+ case "tgas":
110
+ return (0, import_big.default)(amount).mul((0, import_big.default)(10).pow(12)).toFixed(0);
111
+ case "ggas":
112
+ return (0, import_big.default)(amount).mul((0, import_big.default)(10).pow(9)).toFixed(0);
113
+ case "gas":
114
+ case "yoctonear":
115
+ return (0, import_big.default)(amount).toFixed(0);
116
+ default:
117
+ throw new Error(`Unknown unit: ${unitPart}`);
118
+ }
119
+ } else {
120
+ return (0, import_big.default)(amount).toFixed(0);
121
+ }
122
+ }
123
+ }
124
+ return (0, import_big.default)(`${s}`).toFixed(0);
125
+ }
126
+ __name(convertUnit, "convertUnit");
127
+ function lsSet(key, value) {
128
+ import_storage.storage.set(key, value);
129
+ }
130
+ __name(lsSet, "lsSet");
131
+ function lsGet(key) {
132
+ return import_storage.storage.get(key);
133
+ }
134
+ __name(lsGet, "lsGet");
135
+ function deepCopy(obj) {
136
+ return JSON.parse(JSON.stringify(obj));
137
+ }
138
+ __name(deepCopy, "deepCopy");
139
+ function tryParseJson(...args) {
140
+ try {
141
+ return JSON.parse(args[0]);
142
+ } catch {
143
+ if (args.length > 1) {
144
+ return args[1];
145
+ }
146
+ return args[0];
147
+ }
148
+ }
149
+ __name(tryParseJson, "tryParseJson");
150
+ function parseJsonFromBytes(bytes) {
151
+ try {
152
+ const decoder = new TextDecoder();
153
+ return JSON.parse(
154
+ decoder.decode(bytes instanceof Uint8Array ? bytes : new Uint8Array(bytes))
155
+ );
156
+ } catch (e) {
157
+ try {
158
+ return bytes instanceof Uint8Array ? bytes : new Uint8Array(bytes);
159
+ } catch (e2) {
160
+ return bytes;
161
+ }
162
+ }
163
+ }
164
+ __name(parseJsonFromBytes, "parseJsonFromBytes");
165
+ function canSignWithLAK(actions) {
166
+ return actions.length === 1 && actions[0].type === "FunctionCall" && (0, import_big.default)(actions[0]?.deposit ?? "0").eq(0);
167
+ }
168
+ __name(canSignWithLAK, "canSignWithLAK");
169
+ // Annotate the CommonJS export names for ESM import in node:
170
+ 0 && (module.exports = {
171
+ base64ToBytes,
172
+ bytesToBase64,
173
+ canSignWithLAK,
174
+ convertUnit,
175
+ deepCopy,
176
+ fromBase58,
177
+ fromBase64,
178
+ fromHex,
179
+ lsGet,
180
+ lsSet,
181
+ parseJsonFromBytes,
182
+ toBase58,
183
+ toBase64,
184
+ toHex,
185
+ tryParseJson
186
+ });
187
+ //# sourceMappingURL=misc.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/misc.ts"],"sourcesContent":["import {\n binary_to_base58 as toBase58,\n base58_to_binary as fromBase58,\n} from \"base58-js\";\nimport Big from \"big.js\";\nimport {\n encode as JsBase64Encode,\n decode as JsBase64Decode,\n fromUint8Array as JsBase64FromUint8Array,\n toUint8Array as JsBase64ToUint8Array\n} from 'js-base64';\nimport {Hex} from \"@noble/curves/abstract/utils\";\nimport { storage } from \"./storage.js\";\n\nexport { toBase58, fromBase58 };\n\nexport function toHex(data: Uint8Array): string {\n return Array.from(data)\n .map(b => b.toString(16).padStart(2, '0'))\n .join('');\n}\n\nexport function fromHex(hex: string): Uint8Array {\n if (hex.length % 2) throw new Error('Hex string must be even length');\n const bytes = new Uint8Array(hex.length / 2);\n for (let i = 0; i < hex.length; i += 2) {\n bytes[i/2] = parseInt(hex.slice(i, i + 2), 16);\n }\n return bytes;\n}\n\nexport function base64ToBytes(b64Val: string): Uint8Array {\n return JsBase64ToUint8Array(b64Val);\n}\n\nexport function bytesToBase64(bytesArr: Uint8Array): string {\n return JsBase64FromUint8Array(bytesArr);\n}\n\nexport function toBase64(strVal: string) {\n try {\n return JsBase64Encode(strVal);\n } catch (e) {\n console.error('Issue base64 encoding', e);\n return null;\n }\n}\n\nexport function fromBase64(strVal: string) {\n try {\n return JsBase64Decode(strVal);\n } catch (e) {\n console.error('Issue base64 decoding', e);\n return null;\n }\n}\n\nexport function convertUnit(s: string | TemplateStringsArray, ...args: any[]): string {\n // Reconstruct raw string from template literal\n if (Array.isArray(s)) {\n s = s.reduce((acc, part, i) => {\n return acc + (args[i - 1] ?? \"\") + part;\n });\n }\n // Convert from `100 NEAR` into yoctoNear\n if (typeof s == \"string\") {\n const match = s.match(/([0-9.,_]+)\\s*([a-zA-Z]+)?/);\n if (match) {\n const amount = match[1].replace(/[_,]/g, \"\");\n const unitPart = match[2];\n if (unitPart) {\n switch (unitPart.toLowerCase()) {\n case \"near\":\n return Big(amount).mul(Big(10).pow(24)).toFixed(0);\n case \"tgas\":\n return Big(amount).mul(Big(10).pow(12)).toFixed(0);\n case \"ggas\":\n return Big(amount).mul(Big(10).pow(9)).toFixed(0);\n case \"gas\":\n case \"yoctonear\":\n return Big(amount).toFixed(0);\n default:\n throw new Error(`Unknown unit: ${unitPart}`);\n }\n } else {\n return Big(amount).toFixed(0);\n }\n }\n }\n return Big(`${s}`).toFixed(0);\n}\n\nexport function lsSet(key: string, value: any) {\n storage.set(key, value);\n}\n\nexport function lsGet(key: string): any {\n return storage.get(key);\n}\n\n// export function lsSet(key, value) {\n// if (value === null || value === undefined) {\n// localStorage.removeItem(LsPrefix + key);\n// } else {\n// localStorage.setItem(LsPrefix + key, JSON.stringify(value));\n// }\n// }\n//\n// export function lsGet(key) {\n// const value = localStorage.getItem(LsPrefix + key);\n// return tryParseJson(value, null);\n// }\n\nexport function deepCopy(obj) {\n return JSON.parse(JSON.stringify(obj));\n}\n\nexport function tryParseJson(...args) {\n try {\n return JSON.parse(args[0]);\n } catch {\n if (args.length > 1) {\n return args[1];\n }\n return args[0];\n }\n}\n\nexport function parseJsonFromBytes(bytes: Uint8Array) {\n try {\n const decoder = new TextDecoder();\n return JSON.parse(\n decoder.decode(bytes instanceof Uint8Array ? bytes : new Uint8Array(bytes))\n );\n } catch (e) {\n try {\n return bytes instanceof Uint8Array ? bytes : new Uint8Array(bytes);\n } catch (e) {\n return bytes;\n }\n }\n}\n\nexport function canSignWithLAK(actions) {\n return (\n actions.length === 1 &&\n actions[0].type === \"FunctionCall\" &&\n Big(actions[0]?.deposit ?? \"0\").eq(0)\n );\n}\n"],"mappings":"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","names":["fromBase58","toBase58","JsBase64ToUint8Array","JsBase64FromUint8Array","JsBase64Encode","JsBase64Decode","Big","e"]}
@@ -0,0 +1,69 @@
1
+ /* ⋈ 🏃🏻💨 FastNEAR Utils - CJS (@fastnear/utils version 0.6.3) */
2
+ /* https://www.npmjs.com/package/@fastnear/utils/v/0.6.3 */
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 storage_exports = {};
23
+ __export(storage_exports, {
24
+ LsPrefix: () => LsPrefix,
25
+ createDefaultStorage: () => createDefaultStorage,
26
+ memoryStore: () => memoryStore,
27
+ storage: () => storage
28
+ });
29
+ module.exports = __toCommonJS(storage_exports);
30
+ const LsPrefix = "__fastnear_";
31
+ const createDefaultStorage = /* @__PURE__ */ __name(() => typeof localStorage !== "undefined" ? localStorage : {
32
+ getItem: /* @__PURE__ */ __name((key) => memoryStore.get(key) || null, "getItem"),
33
+ setItem: /* @__PURE__ */ __name((key, value) => memoryStore.set(key, value), "setItem"),
34
+ removeItem: /* @__PURE__ */ __name((key) => memoryStore.delete(key), "removeItem"),
35
+ clear: /* @__PURE__ */ __name(() => memoryStore.clear(), "clear")
36
+ }, "createDefaultStorage");
37
+ const memoryStore = /* @__PURE__ */ new Map();
38
+ let storageBackend = createDefaultStorage();
39
+ const storage = {
40
+ setBackend: /* @__PURE__ */ __name((customBackend) => {
41
+ storageBackend = customBackend;
42
+ }, "setBackend"),
43
+ set: /* @__PURE__ */ __name((key, value) => {
44
+ if (value === null || value === void 0) {
45
+ storageBackend.removeItem(LsPrefix + key);
46
+ } else {
47
+ storageBackend.setItem(LsPrefix + key, JSON.stringify(value));
48
+ }
49
+ }, "set"),
50
+ get: /* @__PURE__ */ __name((key) => {
51
+ const value = storageBackend.getItem(LsPrefix + key);
52
+ if (value === null) return null;
53
+ try {
54
+ return JSON.parse(value);
55
+ } catch {
56
+ return value;
57
+ }
58
+ }, "get"),
59
+ remove: /* @__PURE__ */ __name((key) => storageBackend.removeItem(key), "remove"),
60
+ clear: /* @__PURE__ */ __name(() => storageBackend.clear(), "clear")
61
+ };
62
+ // Annotate the CommonJS export names for ESM import in node:
63
+ 0 && (module.exports = {
64
+ LsPrefix,
65
+ createDefaultStorage,
66
+ memoryStore,
67
+ storage
68
+ });
69
+ //# sourceMappingURL=storage.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/storage.ts"],"sourcesContent":["export const LsPrefix = \"__fastnear_\";\n\nexport interface StorageBackend {\n getItem(key: string): string | null;\n setItem(key: string, value: string): void;\n removeItem(key: string): void;\n clear(): void;\n}\n\n// Default: Use `localStorage` if available, otherwise an in-memory fallback\nexport const createDefaultStorage = (): StorageBackend =>\n typeof localStorage !== \"undefined\"\n ? localStorage\n : {\n getItem: (key) => memoryStore.get(key) || null,\n setItem: (key, value) => memoryStore.set(key, value),\n removeItem: (key) => memoryStore.delete(key),\n clear: () => memoryStore.clear(),\n };\n\nexport const memoryStore = new Map<string, string>(); // Internal memory storage\n\nlet storageBackend: StorageBackend = createDefaultStorage();\n\n// Functional storage module\nexport const storage = {\n setBackend: (customBackend: StorageBackend) => {\n storageBackend = customBackend;\n },\n\n set: (key: string, value: any) => {\n if (value === null || value === undefined) {\n storageBackend.removeItem(LsPrefix + key);\n } else {\n storageBackend.setItem(LsPrefix + key, JSON.stringify(value));\n }\n },\n\n get: (key: string): any => {\n const value = storageBackend.getItem(LsPrefix + key);\n if (value === null) return null;\n try {\n return JSON.parse(value);\n } catch {\n return value; // Return raw string if not JSON\n }\n },\n\n remove: (key: string) => storageBackend.removeItem(key),\n clear: () => storageBackend.clear(),\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,MAAM,WAAW;AAUjB,MAAM,uBAAuB,6BAClC,OAAO,iBAAiB,cACpB,eACA;AAAA,EACA,SAAS,wBAAC,QAAQ,YAAY,IAAI,GAAG,KAAK,MAAjC;AAAA,EACT,SAAS,wBAAC,KAAK,UAAU,YAAY,IAAI,KAAK,KAAK,GAA1C;AAAA,EACT,YAAY,wBAAC,QAAQ,YAAY,OAAO,GAAG,GAA/B;AAAA,EACZ,OAAO,6BAAM,YAAY,MAAM,GAAxB;AACT,GARgC;AAU7B,MAAM,cAAc,oBAAI,IAAoB;AAEnD,IAAI,iBAAiC,qBAAqB;AAGnD,MAAM,UAAU;AAAA,EACrB,YAAY,wBAAC,kBAAkC;AAC7C,qBAAiB;AAAA,EACnB,GAFY;AAAA,EAIZ,KAAK,wBAAC,KAAa,UAAe;AAChC,QAAI,UAAU,QAAQ,UAAU,QAAW;AACzC,qBAAe,WAAW,WAAW,GAAG;AAAA,IAC1C,OAAO;AACL,qBAAe,QAAQ,WAAW,KAAK,KAAK,UAAU,KAAK,CAAC;AAAA,IAC9D;AAAA,EACF,GANK;AAAA,EAQL,KAAK,wBAAC,QAAqB;AACzB,UAAM,QAAQ,eAAe,QAAQ,WAAW,GAAG;AACnD,QAAI,UAAU,KAAM,QAAO;AAC3B,QAAI;AACF,aAAO,KAAK,MAAM,KAAK;AAAA,IACzB,QAAQ;AACN,aAAO;AAAA,IACT;AAAA,EACF,GARK;AAAA,EAUL,QAAQ,wBAAC,QAAgB,eAAe,WAAW,GAAG,GAA9C;AAAA,EACR,OAAO,6BAAM,eAAe,MAAM,GAA3B;AACT;","names":[]}
@@ -0,0 +1,198 @@
1
+ /* ⋈ 🏃🏻💨 FastNEAR Utils - CJS (@fastnear/utils version 0.6.3) */
2
+ /* https://www.npmjs.com/package/@fastnear/utils/v/0.6.3 */
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 transaction_exports = {};
23
+ __export(transaction_exports, {
24
+ SCHEMA: () => SCHEMA,
25
+ mapAction: () => mapAction,
26
+ mapTransaction: () => mapTransaction,
27
+ serializeSignedTransaction: () => serializeSignedTransaction,
28
+ serializeTransaction: () => serializeTransaction,
29
+ txToJson: () => txToJson,
30
+ txToJsonStringified: () => txToJsonStringified
31
+ });
32
+ module.exports = __toCommonJS(transaction_exports);
33
+ var import_borsh = require("borsh");
34
+ var import_crypto = require("./crypto.js");
35
+ var import_misc = require("./misc.js");
36
+ var import_borsh_schema = require("@fastnear/borsh-schema");
37
+ const txToJson = /* @__PURE__ */ __name((tx) => {
38
+ return JSON.parse(JSON.stringify(
39
+ tx,
40
+ (key, value) => typeof value === "bigint" ? value.toString() : value
41
+ ));
42
+ }, "txToJson");
43
+ const txToJsonStringified = /* @__PURE__ */ __name((tx) => {
44
+ return JSON.stringify(txToJson(tx));
45
+ }, "txToJsonStringified");
46
+ function mapTransaction(jsonTransaction) {
47
+ return {
48
+ signerId: jsonTransaction.signerId,
49
+ publicKey: {
50
+ ed25519Key: {
51
+ data: (0, import_crypto.keyFromString)(jsonTransaction.publicKey)
52
+ }
53
+ },
54
+ nonce: BigInt(jsonTransaction.nonce),
55
+ receiverId: jsonTransaction.receiverId,
56
+ blockHash: (0, import_misc.fromBase58)(jsonTransaction.blockHash),
57
+ actions: jsonTransaction.actions.map(mapAction)
58
+ };
59
+ }
60
+ __name(mapTransaction, "mapTransaction");
61
+ function serializeTransaction(jsonTransaction) {
62
+ console.log("fastnear: serializing transaction");
63
+ const transaction = mapTransaction(jsonTransaction);
64
+ console.log("fastnear: mapped transaction for borsh:", transaction);
65
+ return (0, import_borsh.serialize)(SCHEMA.Transaction, transaction);
66
+ }
67
+ __name(serializeTransaction, "serializeTransaction");
68
+ function serializeSignedTransaction(jsonTransaction, signature) {
69
+ console.log("fastnear: Serializing Signed Transaction", jsonTransaction);
70
+ console.log("fastnear: signature", signature);
71
+ console.log("fastnear: signature length", (0, import_misc.fromBase58)(signature).length);
72
+ const mappedSignedTx = mapTransaction(jsonTransaction);
73
+ console.log("fastnear: mapped (for borsh schema) signed transaction", mappedSignedTx);
74
+ const plainSignedTransaction = {
75
+ transaction: mappedSignedTx,
76
+ signature: {
77
+ ed25519Signature: {
78
+ data: (0, import_misc.fromBase58)(signature)
79
+ }
80
+ }
81
+ };
82
+ const borshSignedTx = (0, import_borsh.serialize)(SCHEMA.SignedTransaction, plainSignedTransaction, true);
83
+ console.log("fastnear: borsh-serialized signed transaction:", borshSignedTx);
84
+ return borshSignedTx;
85
+ }
86
+ __name(serializeSignedTransaction, "serializeSignedTransaction");
87
+ function mapAction(action) {
88
+ switch (action.type) {
89
+ case "CreateAccount": {
90
+ return {
91
+ createAccount: {}
92
+ };
93
+ }
94
+ case "DeployContract": {
95
+ return {
96
+ deployContract: {
97
+ code: (0, import_misc.fromBase64)(action.codeBase64)
98
+ }
99
+ };
100
+ }
101
+ case "FunctionCall": {
102
+ const argsAsString = JSON.stringify(action.args);
103
+ const argsEncoded = new TextEncoder().encode(argsAsString);
104
+ return {
105
+ functionCall: {
106
+ methodName: action.methodName,
107
+ args: argsEncoded,
108
+ gas: BigInt(action.gas),
109
+ deposit: BigInt(action.deposit)
110
+ }
111
+ };
112
+ }
113
+ case "Transfer": {
114
+ return {
115
+ transfer: {
116
+ deposit: BigInt(action.deposit)
117
+ }
118
+ };
119
+ }
120
+ case "Stake": {
121
+ return {
122
+ stake: {
123
+ stake: BigInt(action.stake),
124
+ publicKey: {
125
+ ed25519Key: {
126
+ data: (0, import_crypto.keyFromString)(action.publicKey)
127
+ }
128
+ }
129
+ }
130
+ };
131
+ }
132
+ case "AddKey": {
133
+ return {
134
+ addKey: {
135
+ publicKey: {
136
+ ed25519Key: {
137
+ data: (0, import_crypto.keyFromString)(action.publicKey)
138
+ }
139
+ },
140
+ accessKey: {
141
+ nonce: BigInt(action.accessKey.nonce),
142
+ permission: action.accessKey.permission === "FullAccess" ? { fullAccess: {} } : {
143
+ functionCall: {
144
+ allowance: action.accessKey.allowance ? BigInt(action.accessKey.allowance) : null,
145
+ receiverId: action.accessKey.receiverId,
146
+ methodNames: action.accessKey.methodNames
147
+ }
148
+ }
149
+ }
150
+ }
151
+ };
152
+ }
153
+ case "DeleteKey": {
154
+ return {
155
+ deleteKey: {
156
+ publicKey: {
157
+ ed25519Key: {
158
+ data: (0, import_crypto.keyFromString)(action.publicKey)
159
+ }
160
+ }
161
+ }
162
+ };
163
+ }
164
+ case "DeleteAccount": {
165
+ return {
166
+ deleteAccount: {
167
+ beneficiaryId: action.beneficiaryId
168
+ }
169
+ };
170
+ }
171
+ case "SignedDelegate": {
172
+ return {
173
+ signedDelegate: {
174
+ delegateAction: mapAction(action.delegateAction),
175
+ signature: {
176
+ ed25519Signature: (0, import_misc.fromBase58)(action.signature)
177
+ }
178
+ }
179
+ };
180
+ }
181
+ default: {
182
+ throw new Error("Not implemented action: " + action.type);
183
+ }
184
+ }
185
+ }
186
+ __name(mapAction, "mapAction");
187
+ const SCHEMA = (0, import_borsh_schema.getBorshSchema)();
188
+ // Annotate the CommonJS export names for ESM import in node:
189
+ 0 && (module.exports = {
190
+ SCHEMA,
191
+ mapAction,
192
+ mapTransaction,
193
+ serializeSignedTransaction,
194
+ serializeTransaction,
195
+ txToJson,
196
+ txToJsonStringified
197
+ });
198
+ //# sourceMappingURL=transaction.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/transaction.ts"],"sourcesContent":["import { serialize as borshSerialize, deserialize as borshDeserialize, Schema } from \"borsh\";\nimport { keyFromString } from \"./crypto.js\";\nimport { fromBase58, fromBase64, toBase64 } from \"./misc.js\";\nimport { getBorshSchema } from \"@fastnear/borsh-schema\";\n\nexport interface PlainTransaction {\n signerId: string;\n publicKey: string;\n nonce: string | bigint | number;\n receiverId: string;\n blockHash: string;\n actions: Array<any>;\n}\n\nexport interface PlainSignedTransaction {\n transaction: object;\n signature: object;\n}\n\n// Function to return a JSON-ready version of the transaction\nexport const txToJson = (tx: PlainTransaction): Record<string, any> => {\n return JSON.parse(JSON.stringify(tx, (key, value) =>\n typeof value === 'bigint' ? value.toString() : value\n ));\n};\n\n// dude let's make this better. head just couldn't find a good name\nexport const txToJsonStringified = (tx: PlainTransaction): string => {\n return JSON.stringify(txToJson(tx));\n}\n\nexport function mapTransaction(jsonTransaction: PlainTransaction) {\n return {\n signerId: jsonTransaction.signerId,\n publicKey: {\n ed25519Key: {\n data: keyFromString(jsonTransaction.publicKey)\n }\n },\n nonce: BigInt(jsonTransaction.nonce),\n receiverId: jsonTransaction.receiverId,\n blockHash: fromBase58(jsonTransaction.blockHash),\n actions: jsonTransaction.actions.map(mapAction)\n };\n}\n\nexport function serializeTransaction(jsonTransaction: PlainTransaction) {\n console.log(\"fastnear: serializing transaction\");\n\n const transaction = mapTransaction(jsonTransaction);\n console.log(\"fastnear: mapped transaction for borsh:\", transaction);\n\n return borshSerialize(SCHEMA.Transaction, transaction);\n}\n\nexport function serializeSignedTransaction(jsonTransaction: PlainTransaction, signature) {\n console.log(\"fastnear: Serializing Signed Transaction\", jsonTransaction);\n console.log('fastnear: signature', signature)\n console.log('fastnear: signature length', fromBase58(signature).length)\n\n const mappedSignedTx = mapTransaction(jsonTransaction)\n console.log('fastnear: mapped (for borsh schema) signed transaction', mappedSignedTx)\n\n const plainSignedTransaction: PlainSignedTransaction = {\n transaction: mappedSignedTx,\n signature: {\n ed25519Signature: {\n data: fromBase58(signature),\n },\n },\n };\n\n const borshSignedTx = borshSerialize(SCHEMA.SignedTransaction, plainSignedTransaction, true);\n console.log('fastnear: borsh-serialized signed transaction:', borshSignedTx);\n\n return borshSignedTx;\n}\n\nexport function mapAction(action: any): object {\n switch (action.type) {\n case \"CreateAccount\": {\n return {\n createAccount: {},\n };\n }\n case \"DeployContract\": {\n return {\n deployContract: {\n code: fromBase64(action.codeBase64),\n },\n };\n }\n case \"FunctionCall\": {\n // turn JS object into json string\n const argsAsString = JSON.stringify(action.args)\n // an alternative to using NodeJS Buffer, TextEncoder can help but is limited\n const argsEncoded = new TextEncoder().encode(argsAsString)\n\n return {\n functionCall: {\n methodName: action.methodName,\n args: argsEncoded,\n gas: BigInt(action.gas),\n deposit: BigInt(action.deposit),\n },\n };\n }\n case \"Transfer\": {\n return {\n transfer: {\n deposit: BigInt(action.deposit),\n },\n };\n }\n case \"Stake\": {\n return {\n stake: {\n stake: BigInt(action.stake),\n publicKey: {\n ed25519Key: {\n data: keyFromString(action.publicKey),\n },\n },\n },\n };\n }\n case \"AddKey\": {\n return {\n addKey: {\n publicKey: {\n ed25519Key: {\n data: keyFromString(action.publicKey),\n },\n },\n accessKey: {\n nonce: BigInt(action.accessKey.nonce),\n permission:\n action.accessKey.permission === \"FullAccess\"\n ? { fullAccess: {} }\n : {\n functionCall: {\n allowance: action.accessKey.allowance\n ? BigInt(action.accessKey.allowance)\n : null,\n receiverId: action.accessKey.receiverId,\n methodNames: action.accessKey.methodNames,\n },\n },\n },\n },\n };\n }\n case \"DeleteKey\": {\n return {\n deleteKey: {\n publicKey: {\n ed25519Key: {\n data: keyFromString(action.publicKey),\n },\n },\n },\n };\n }\n case \"DeleteAccount\": {\n return {\n deleteAccount: {\n beneficiaryId: action.beneficiaryId,\n },\n };\n }\n case \"SignedDelegate\": {\n return {\n signedDelegate: {\n delegateAction: mapAction(action.delegateAction),\n signature: {\n ed25519Signature: fromBase58(action.signature),\n },\n },\n };\n }\n default: {\n throw new Error(\"Not implemented action: \" + action.type);\n }\n }\n}\n\nexport const SCHEMA = getBorshSchema();\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAqF;AACrF,oBAA8B;AAC9B,kBAAiD;AACjD,0BAA+B;AAiBxB,MAAM,WAAW,wBAAC,OAA8C;AACrE,SAAO,KAAK,MAAM,KAAK;AAAA,IAAU;AAAA,IAAI,CAAC,KAAK,UACzC,OAAO,UAAU,WAAW,MAAM,SAAS,IAAI;AAAA,EACjD,CAAC;AACH,GAJwB;AAOjB,MAAM,sBAAsB,wBAAC,OAAiC;AACnE,SAAO,KAAK,UAAU,SAAS,EAAE,CAAC;AACpC,GAFmC;AAI5B,SAAS,eAAe,iBAAmC;AAChE,SAAO;AAAA,IACL,UAAU,gBAAgB;AAAA,IAC1B,WAAW;AAAA,MACT,YAAY;AAAA,QACV,UAAM,6BAAc,gBAAgB,SAAS;AAAA,MAC/C;AAAA,IACF;AAAA,IACA,OAAO,OAAO,gBAAgB,KAAK;AAAA,IACnC,YAAY,gBAAgB;AAAA,IAC5B,eAAW,wBAAW,gBAAgB,SAAS;AAAA,IAC/C,SAAS,gBAAgB,QAAQ,IAAI,SAAS;AAAA,EAChD;AACF;AAbgB;AAeT,SAAS,qBAAqB,iBAAmC;AACtE,UAAQ,IAAI,mCAAmC;AAE/C,QAAM,cAAc,eAAe,eAAe;AAClD,UAAQ,IAAI,2CAA2C,WAAW;AAElE,aAAO,aAAAA,WAAe,OAAO,aAAa,WAAW;AACvD;AAPgB;AAST,SAAS,2BAA2B,iBAAmC,WAAW;AACvF,UAAQ,IAAI,4CAA4C,eAAe;AACvE,UAAQ,IAAI,uBAAuB,SAAS;AAC5C,UAAQ,IAAI,kCAA8B,wBAAW,SAAS,EAAE,MAAM;AAEtE,QAAM,iBAAiB,eAAe,eAAe;AACrD,UAAQ,IAAI,0DAA0D,cAAc;AAEpF,QAAM,yBAAiD;AAAA,IACrD,aAAa;AAAA,IACb,WAAW;AAAA,MACT,kBAAkB;AAAA,QAChB,UAAM,wBAAW,SAAS;AAAA,MAC5B;AAAA,IACF;AAAA,EACF;AAEA,QAAM,oBAAgB,aAAAA,WAAe,OAAO,mBAAmB,wBAAwB,IAAI;AAC3F,UAAQ,IAAI,kDAAkD,aAAa;AAE3E,SAAO;AACT;AArBgB;AAuBT,SAAS,UAAU,QAAqB;AAC7C,UAAQ,OAAO,MAAM;AAAA,IACnB,KAAK,iBAAiB;AACpB,aAAO;AAAA,QACL,eAAe,CAAC;AAAA,MAClB;AAAA,IACF;AAAA,IACA,KAAK,kBAAkB;AACrB,aAAO;AAAA,QACL,gBAAgB;AAAA,UACd,UAAM,wBAAW,OAAO,UAAU;AAAA,QACpC;AAAA,MACF;AAAA,IACF;AAAA,IACA,KAAK,gBAAgB;AAEnB,YAAM,eAAe,KAAK,UAAU,OAAO,IAAI;AAE/C,YAAM,cAAc,IAAI,YAAY,EAAE,OAAO,YAAY;AAEzD,aAAO;AAAA,QACL,cAAc;AAAA,UACZ,YAAY,OAAO;AAAA,UACnB,MAAM;AAAA,UACN,KAAK,OAAO,OAAO,GAAG;AAAA,UACtB,SAAS,OAAO,OAAO,OAAO;AAAA,QAChC;AAAA,MACF;AAAA,IACF;AAAA,IACA,KAAK,YAAY;AACf,aAAO;AAAA,QACL,UAAU;AAAA,UACR,SAAS,OAAO,OAAO,OAAO;AAAA,QAChC;AAAA,MACF;AAAA,IACF;AAAA,IACA,KAAK,SAAS;AACZ,aAAO;AAAA,QACL,OAAO;AAAA,UACL,OAAO,OAAO,OAAO,KAAK;AAAA,UAC1B,WAAW;AAAA,YACT,YAAY;AAAA,cACV,UAAM,6BAAc,OAAO,SAAS;AAAA,YACtC;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,KAAK,UAAU;AACb,aAAO;AAAA,QACL,QAAQ;AAAA,UACN,WAAW;AAAA,YACT,YAAY;AAAA,cACV,UAAM,6BAAc,OAAO,SAAS;AAAA,YACtC;AAAA,UACF;AAAA,UACA,WAAW;AAAA,YACT,OAAO,OAAO,OAAO,UAAU,KAAK;AAAA,YACpC,YACE,OAAO,UAAU,eAAe,eAC5B,EAAE,YAAY,CAAC,EAAE,IACjB;AAAA,cACA,cAAc;AAAA,gBACZ,WAAW,OAAO,UAAU,YACxB,OAAO,OAAO,UAAU,SAAS,IACjC;AAAA,gBACJ,YAAY,OAAO,UAAU;AAAA,gBAC7B,aAAa,OAAO,UAAU;AAAA,cAChC;AAAA,YACF;AAAA,UACN;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,KAAK,aAAa;AAChB,aAAO;AAAA,QACL,WAAW;AAAA,UACT,WAAW;AAAA,YACT,YAAY;AAAA,cACV,UAAM,6BAAc,OAAO,SAAS;AAAA,YACtC;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,KAAK,iBAAiB;AACpB,aAAO;AAAA,QACL,eAAe;AAAA,UACb,eAAe,OAAO;AAAA,QACxB;AAAA,MACF;AAAA,IACF;AAAA,IACA,KAAK,kBAAkB;AACrB,aAAO;AAAA,QACL,gBAAgB;AAAA,UACd,gBAAgB,UAAU,OAAO,cAAc;AAAA,UAC/C,WAAW;AAAA,YACT,sBAAkB,wBAAW,OAAO,SAAS;AAAA,UAC/C;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,SAAS;AACP,YAAM,IAAI,MAAM,6BAA6B,OAAO,IAAI;AAAA,IAC1D;AAAA,EACF;AACF;AA1GgB;AA4GT,MAAM,aAAS,oCAAe;","names":["borshSerialize"]}
@@ -0,0 +1,52 @@
1
+ /* ⋈ 🏃🏻💨 FastNEAR Utils - ESM (@fastnear/utils version 0.6.3) */
2
+ /* https://www.npmjs.com/package/@fastnear/utils/v/0.6.3 */
3
+ var __defProp = Object.defineProperty;
4
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
5
+ import { ed25519 } from "@noble/curves/ed25519";
6
+ import { sha256 } from "@noble/hashes/sha2";
7
+ import { fromBase58, toBase58 } from "./misc.js";
8
+ const keyFromString = /* @__PURE__ */ __name((key) => fromBase58(
9
+ key.includes(":") ? (() => {
10
+ const [curve, keyPart] = key.split(":");
11
+ if (curve !== "ed25519") {
12
+ throw new Error(`Unsupported curve: ${curve}`);
13
+ }
14
+ return keyPart;
15
+ })() : key
16
+ ), "keyFromString");
17
+ const keyToString = /* @__PURE__ */ __name((key) => `ed25519:${toBase58(key)}`, "keyToString");
18
+ function publicKeyFromPrivate(privateKey) {
19
+ const secret = keyFromString(privateKey).slice(0, 32);
20
+ const publicKey = ed25519.getPublicKey(secret);
21
+ return keyToString(publicKey);
22
+ }
23
+ __name(publicKeyFromPrivate, "publicKeyFromPrivate");
24
+ function privateKeyFromRandom() {
25
+ const privateKey = crypto.getRandomValues(new Uint8Array(64));
26
+ return keyToString(privateKey);
27
+ }
28
+ __name(privateKeyFromRandom, "privateKeyFromRandom");
29
+ function signHash(hashBytes, privateKey, opts) {
30
+ const secret = keyFromString(privateKey).slice(0, 32);
31
+ const signature = ed25519.sign(hashBytes, secret);
32
+ if (opts?.returnBase58) {
33
+ return toBase58(signature);
34
+ }
35
+ return signature;
36
+ }
37
+ __name(signHash, "signHash");
38
+ function signBytes(bytes, privateKey) {
39
+ const hash = sha256(bytes);
40
+ return signHash(hash, privateKey);
41
+ }
42
+ __name(signBytes, "signBytes");
43
+ export {
44
+ keyFromString,
45
+ keyToString,
46
+ privateKeyFromRandom,
47
+ publicKeyFromPrivate,
48
+ sha256,
49
+ signBytes,
50
+ signHash
51
+ };
52
+ //# sourceMappingURL=crypto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/crypto.ts"],"sourcesContent":["import { ed25519 } from \"@noble/curves/ed25519\";\nimport { sha256 } from \"@noble/hashes/sha2\";\nimport { fromBase58, toBase58 } from \"./misc.js\";\nimport {Hex} from \"@noble/curves/abstract/utils\";\n\nexport { sha256 };\n\nexport const keyFromString = (key) =>\n fromBase58(\n key.includes(\":\")\n ? (() => {\n const [curve, keyPart] = key.split(\":\");\n if (curve !== \"ed25519\") {\n throw new Error(`Unsupported curve: ${curve}`);\n }\n return keyPart;\n })()\n : key,\n );\n\nexport const keyToString = (key: Uint8Array) => `ed25519:${toBase58(key)}`;\n\nexport function publicKeyFromPrivate(privateKey: string) {\n const secret = keyFromString(privateKey).slice(0, 32);\n const publicKey = ed25519.getPublicKey(secret);\n return keyToString(publicKey);\n}\n\nexport function privateKeyFromRandom() {\n const privateKey = crypto.getRandomValues(new Uint8Array(64));\n return keyToString(privateKey);\n}\n\nexport function signHash(hashBytes: Uint8Array, privateKey: string, opts?: any): Hex {\n const secret = keyFromString(privateKey).slice(0, 32);\n const signature = ed25519.sign(hashBytes, secret);\n\n if (opts?.returnBase58) {\n return toBase58(signature);\n }\n\n return signature;\n}\n\nexport function signBytes(bytes: Uint8Array, privateKey: string) {\n const hash = sha256(bytes);\n return signHash(hash, privateKey);\n}\n"],"mappings":";;;;AAAA,SAAS,eAAe;AACxB,SAAS,cAAc;AACvB,SAAS,YAAY,gBAAgB;AAK9B,MAAM,gBAAgB,wBAAC,QAC5B;AAAA,EACE,IAAI,SAAS,GAAG,KACX,MAAM;AACL,UAAM,CAAC,OAAO,OAAO,IAAI,IAAI,MAAM,GAAG;AACtC,QAAI,UAAU,WAAW;AACvB,YAAM,IAAI,MAAM,sBAAsB,KAAK,EAAE;AAAA,IAC/C;AACA,WAAO;AAAA,EACT,GAAG,IACH;AACN,GAX2B;AAatB,MAAM,cAAc,wBAAC,QAAoB,WAAW,SAAS,GAAG,CAAC,IAA7C;AAEpB,SAAS,qBAAqB,YAAoB;AACvD,QAAM,SAAS,cAAc,UAAU,EAAE,MAAM,GAAG,EAAE;AACpD,QAAM,YAAY,QAAQ,aAAa,MAAM;AAC7C,SAAO,YAAY,SAAS;AAC9B;AAJgB;AAMT,SAAS,uBAAuB;AACrC,QAAM,aAAa,OAAO,gBAAgB,IAAI,WAAW,EAAE,CAAC;AAC5D,SAAO,YAAY,UAAU;AAC/B;AAHgB;AAKT,SAAS,SAAS,WAAuB,YAAoB,MAAiB;AACnF,QAAM,SAAS,cAAc,UAAU,EAAE,MAAM,GAAG,EAAE;AACpD,QAAM,YAAY,QAAQ,KAAK,WAAW,MAAM;AAEhD,MAAI,MAAM,cAAc;AACtB,WAAO,SAAS,SAAS;AAAA,EAC3B;AAEA,SAAO;AACT;AATgB;AAWT,SAAS,UAAU,OAAmB,YAAoB;AAC/D,QAAM,OAAO,OAAO,KAAK;AACzB,SAAO,SAAS,MAAM,UAAU;AAClC;AAHgB;","names":[]}