UNPKG

@tact-lang/tact-language-server

Version:
1,002 lines (914 loc) 2.69 MB
#!/usr/bin/env node /******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({ /***/ "./node_modules/@textlint/ast-node-types/module/src/ASTNodeTypes.js": /*!**************************************************************************!*\ !*** ./node_modules/@textlint/ast-node-types/module/src/ASTNodeTypes.js ***! \**************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ ASTNodeTypes: () => (/* binding */ ASTNodeTypes) /* harmony export */ }); // Notes: Add new Node types // 1. Add new Node type to ASTNodeTypes // 2. Update txtnode.md // 3. Add test to packages/@textlint/types/test/Rule/TxtNode-test.ts /** * ASTNodeTypes is a list of ASTNode type. */ var ASTNodeTypes; (function (ASTNodeTypes) { ASTNodeTypes["Document"] = "Document"; ASTNodeTypes["DocumentExit"] = "Document:exit"; ASTNodeTypes["Paragraph"] = "Paragraph"; ASTNodeTypes["ParagraphExit"] = "Paragraph:exit"; ASTNodeTypes["BlockQuote"] = "BlockQuote"; ASTNodeTypes["BlockQuoteExit"] = "BlockQuote:exit"; ASTNodeTypes["ListItem"] = "ListItem"; ASTNodeTypes["ListItemExit"] = "ListItem:exit"; ASTNodeTypes["List"] = "List"; ASTNodeTypes["ListExit"] = "List:exit"; ASTNodeTypes["Header"] = "Header"; ASTNodeTypes["HeaderExit"] = "Header:exit"; ASTNodeTypes["CodeBlock"] = "CodeBlock"; ASTNodeTypes["CodeBlockExit"] = "CodeBlock:exit"; /** * @deprecated use Html instead of it */ ASTNodeTypes["HtmlBlock"] = "HtmlBlock"; ASTNodeTypes["HtmlBlockExit"] = "HtmlBlock:exit"; ASTNodeTypes["HorizontalRule"] = "HorizontalRule"; ASTNodeTypes["HorizontalRuleExit"] = "HorizontalRule:exit"; ASTNodeTypes["Comment"] = "Comment"; ASTNodeTypes["CommentExit"] = "Comment:exit"; /** * @deprecated */ ASTNodeTypes["ReferenceDef"] = "ReferenceDef"; /** * @deprecated */ ASTNodeTypes["ReferenceDefExit"] = "ReferenceDef:exit"; // inline ASTNodeTypes["Str"] = "Str"; ASTNodeTypes["StrExit"] = "Str:exit"; ASTNodeTypes["Break"] = "Break"; ASTNodeTypes["BreakExit"] = "Break:exit"; ASTNodeTypes["Emphasis"] = "Emphasis"; ASTNodeTypes["EmphasisExit"] = "Emphasis:exit"; ASTNodeTypes["Strong"] = "Strong"; ASTNodeTypes["StrongExit"] = "Strong:exit"; ASTNodeTypes["Html"] = "Html"; ASTNodeTypes["HtmlExit"] = "Html:exit"; ASTNodeTypes["Link"] = "Link"; ASTNodeTypes["LinkExit"] = "Link:exit"; ASTNodeTypes["Image"] = "Image"; ASTNodeTypes["ImageExit"] = "Image:exit"; ASTNodeTypes["Code"] = "Code"; ASTNodeTypes["CodeExit"] = "Code:exit"; ASTNodeTypes["Delete"] = "Delete"; ASTNodeTypes["DeleteExit"] = "Delete:exit"; // Table is supported in textlint v13+ ASTNodeTypes["Table"] = "Table"; ASTNodeTypes["TableExit"] = "Table:exit"; ASTNodeTypes["TableRow"] = "TableRow"; ASTNodeTypes["TableRowExit"] = "TableRow:exit"; ASTNodeTypes["TableCell"] = "TableCell"; ASTNodeTypes["TableCellExit"] = "TableCell:exit"; })(ASTNodeTypes || (ASTNodeTypes = {})); //# sourceMappingURL=ASTNodeTypes.js.map /***/ }), /***/ "./node_modules/@textlint/ast-node-types/module/src/index.js": /*!*******************************************************************!*\ !*** ./node_modules/@textlint/ast-node-types/module/src/index.js ***! \*******************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ ASTNodeTypes: () => (/* reexport safe */ _ASTNodeTypes__WEBPACK_IMPORTED_MODULE_0__.ASTNodeTypes) /* harmony export */ }); /* harmony import */ var _ASTNodeTypes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ASTNodeTypes */ "./node_modules/@textlint/ast-node-types/module/src/ASTNodeTypes.js"); //# sourceMappingURL=index.js.map /***/ }), /***/ "./node_modules/@textlint/markdown-to-ast/module/src/index.js": /*!********************************************************************!*\ !*** ./node_modules/@textlint/markdown-to-ast/module/src/index.js ***! \********************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ Syntax: () => (/* reexport safe */ _textlint_ast_node_types__WEBPACK_IMPORTED_MODULE_1__.ASTNodeTypes), /* harmony export */ parse: () => (/* binding */ parse) /* harmony export */ }); /* harmony import */ var _mapping_markdown_syntax_map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mapping/markdown-syntax-map */ "./node_modules/@textlint/markdown-to-ast/module/src/mapping/markdown-syntax-map.js"); /* harmony import */ var _textlint_ast_node_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @textlint/ast-node-types */ "./node_modules/@textlint/ast-node-types/module/src/index.js"); /* harmony import */ var neotraverse_legacy__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! neotraverse/legacy */ "./node_modules/neotraverse/dist/legacy/legacy.mjs"); /* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! debug */ "./node_modules/debug/src/index.js"); /* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(debug__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _parse_markdown__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./parse-markdown */ "./node_modules/@textlint/markdown-to-ast/module/src/parse-markdown.js"); const debug = debug__WEBPACK_IMPORTED_MODULE_3___default()("@textlint/markdown-to-ast"); /** * parse Markdown text and return ast mapped location info. * @param {string} text */ function parse(text) { // remark-parse's AST does not consider BOM // AST's position does not +1 by BOM // So, just trim BOM and parse it for `raw` property // textlint's SourceCode also take same approach - trim BOM and check the position // This means that the loading side need to consider BOM position - for example fs.readFile and text slice script. // https://github.com/micromark/micromark/blob/0f19c1ac25964872a160d8b536878b125ddfe393/lib/preprocess.mjs#L29-L31 const hasBOM = text.charCodeAt(0) === 0xfeff; const textWithoutBOM = hasBOM ? text.slice(1) : text; const ast = (0,_parse_markdown__WEBPACK_IMPORTED_MODULE_4__.parseMarkdown)(textWithoutBOM); (0,neotraverse_legacy__WEBPACK_IMPORTED_MODULE_2__["default"])(ast).forEach(function (node) { // eslint-disable-next-line no-invalid-this if (this.notLeaf) { if (node.type) { const replacedType = _mapping_markdown_syntax_map__WEBPACK_IMPORTED_MODULE_0__.SyntaxMap[node.type]; if (!replacedType) { debug(`replacedType : ${replacedType} , node.type: ${node.type}`); } else { node.type = replacedType; } } // map `range`, `loc` and `raw` to node if (node.position) { const position = node.position; // line start with 1 // column start with 0 const positionCompensated = { start: { line: position.start.line, column: Math.max(position.start.column - 1, 0) }, end: { line: position.end.line, column: Math.max(position.end.column - 1, 0) } }; const range = [position.start.offset, position.end.offset]; node.loc = positionCompensated; node.range = range; node.raw = textWithoutBOM.slice(range[0], range[1]); // Compatible for https://github.com/syntax-tree/unist, but it is hidden Object.defineProperty(node, "position", { enumerable: false, configurable: false, writable: false, value: position }); } } }); return ast; } //# sourceMappingURL=index.js.map /***/ }), /***/ "./node_modules/@textlint/markdown-to-ast/module/src/mapping/markdown-syntax-map.js": /*!******************************************************************************************!*\ !*** ./node_modules/@textlint/markdown-to-ast/module/src/mapping/markdown-syntax-map.js ***! \******************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ SyntaxMap: () => (/* binding */ SyntaxMap) /* harmony export */ }); /* harmony import */ var _textlint_ast_node_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @textlint/ast-node-types */ "./node_modules/@textlint/ast-node-types/module/src/index.js"); // LICENSE : MIT const SyntaxMap = { root: _textlint_ast_node_types__WEBPACK_IMPORTED_MODULE_0__.ASTNodeTypes.Document, paragraph: _textlint_ast_node_types__WEBPACK_IMPORTED_MODULE_0__.ASTNodeTypes.Paragraph, blockquote: _textlint_ast_node_types__WEBPACK_IMPORTED_MODULE_0__.ASTNodeTypes.BlockQuote, listItem: _textlint_ast_node_types__WEBPACK_IMPORTED_MODULE_0__.ASTNodeTypes.ListItem, list: _textlint_ast_node_types__WEBPACK_IMPORTED_MODULE_0__.ASTNodeTypes.List, Bullet: "Bullet", // no need? heading: _textlint_ast_node_types__WEBPACK_IMPORTED_MODULE_0__.ASTNodeTypes.Header, code: _textlint_ast_node_types__WEBPACK_IMPORTED_MODULE_0__.ASTNodeTypes.CodeBlock, HtmlBlock: _textlint_ast_node_types__WEBPACK_IMPORTED_MODULE_0__.ASTNodeTypes.HtmlBlock, thematicBreak: _textlint_ast_node_types__WEBPACK_IMPORTED_MODULE_0__.ASTNodeTypes.HorizontalRule, // inline block text: _textlint_ast_node_types__WEBPACK_IMPORTED_MODULE_0__.ASTNodeTypes.Str, break: _textlint_ast_node_types__WEBPACK_IMPORTED_MODULE_0__.ASTNodeTypes.Break, emphasis: _textlint_ast_node_types__WEBPACK_IMPORTED_MODULE_0__.ASTNodeTypes.Emphasis, strong: _textlint_ast_node_types__WEBPACK_IMPORTED_MODULE_0__.ASTNodeTypes.Strong, html: _textlint_ast_node_types__WEBPACK_IMPORTED_MODULE_0__.ASTNodeTypes.Html, link: _textlint_ast_node_types__WEBPACK_IMPORTED_MODULE_0__.ASTNodeTypes.Link, image: _textlint_ast_node_types__WEBPACK_IMPORTED_MODULE_0__.ASTNodeTypes.Image, inlineCode: _textlint_ast_node_types__WEBPACK_IMPORTED_MODULE_0__.ASTNodeTypes.Code, delete: _textlint_ast_node_types__WEBPACK_IMPORTED_MODULE_0__.ASTNodeTypes.Delete, // remark(markdown) extension // Following type is not in @textlint/ast-node-types yaml: "Yaml", table: "Table", tableRow: "TableRow", tableCell: "TableCell", linkReference: "LinkReference", imageReference: "ImageReference", footnoteReference: "FootnoteReference", // textlint@12+ definition: "Definition", /** * @deprecated */ ReferenceDef: _textlint_ast_node_types__WEBPACK_IMPORTED_MODULE_0__.ASTNodeTypes.ReferenceDef }; //# sourceMappingURL=markdown-syntax-map.js.map /***/ }), /***/ "./node_modules/@textlint/markdown-to-ast/module/src/parse-markdown.js": /*!*****************************************************************************!*\ !*** ./node_modules/@textlint/markdown-to-ast/module/src/parse-markdown.js ***! \*****************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ parseMarkdown: () => (/* binding */ parseMarkdown) /* harmony export */ }); /* harmony import */ var unified__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! unified */ "./node_modules/unified/index.js"); /* harmony import */ var unified__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(unified__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var mdast_util_gfm_autolink_literal_from_markdown__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! mdast-util-gfm-autolink-literal/from-markdown */ "./node_modules/mdast-util-gfm-autolink-literal/from-markdown.js"); /* harmony import */ var remark_gfm__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! remark-gfm */ "./node_modules/remark-gfm/index.js"); /* harmony import */ var remark_gfm__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(remark_gfm__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var remark_parse__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! remark-parse */ "./node_modules/remark-parse/index.js"); /* harmony import */ var remark_parse__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(remark_parse__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var remark_frontmatter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! remark-frontmatter */ "./node_modules/remark-frontmatter/index.js"); /* harmony import */ var remark_frontmatter__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(remark_frontmatter__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var remark_footnotes__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! remark-footnotes */ "./node_modules/remark-footnotes/index.js"); /* harmony import */ var remark_footnotes__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(remark_footnotes__WEBPACK_IMPORTED_MODULE_5__); // @ts-ignore // FIXME: Disable auto link literal transforms that break AST node // https://github.com/remarkjs/remark-gfm/issues/16 // Need to override before import gfm plugin mdast_util_gfm_autolink_literal_from_markdown__WEBPACK_IMPORTED_MODULE_1__.transforms = []; // Load plugins const remark = unified__WEBPACK_IMPORTED_MODULE_0___default()().use((remark_parse__WEBPACK_IMPORTED_MODULE_3___default())).use((remark_frontmatter__WEBPACK_IMPORTED_MODULE_4___default()), ["yaml"]).use((remark_gfm__WEBPACK_IMPORTED_MODULE_2___default())).use((remark_footnotes__WEBPACK_IMPORTED_MODULE_5___default()), { inlineNotes: true }); const parseMarkdown = (text) => { return remark.parse(text); }; //# sourceMappingURL=parse-markdown.js.map /***/ }), /***/ "./node_modules/@ton/crypto-primitives/dist/node.js": /*!**********************************************************!*\ !*** ./node_modules/@ton/crypto-primitives/dist/node.js ***! \**********************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; /** * Copyright (c) Whales Corp. * All Rights Reserved. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ Object.defineProperty(exports, "__esModule", ({ value: true })); exports.sha512 = exports.sha256 = exports.pbkdf2_sha512 = exports.hmac_sha512 = exports.getSecureRandomWords = exports.getSecureRandomBytes = void 0; var getSecureRandom_1 = __webpack_require__(/*! ./node/getSecureRandom */ "./node_modules/@ton/crypto-primitives/dist/node/getSecureRandom.js"); Object.defineProperty(exports, "getSecureRandomBytes", ({ enumerable: true, get: function () { return getSecureRandom_1.getSecureRandomBytes; } })); Object.defineProperty(exports, "getSecureRandomWords", ({ enumerable: true, get: function () { return getSecureRandom_1.getSecureRandomWords; } })); var hmac_sha512_1 = __webpack_require__(/*! ./node/hmac_sha512 */ "./node_modules/@ton/crypto-primitives/dist/node/hmac_sha512.js"); Object.defineProperty(exports, "hmac_sha512", ({ enumerable: true, get: function () { return hmac_sha512_1.hmac_sha512; } })); var pbkdf2_sha512_1 = __webpack_require__(/*! ./node/pbkdf2_sha512 */ "./node_modules/@ton/crypto-primitives/dist/node/pbkdf2_sha512.js"); Object.defineProperty(exports, "pbkdf2_sha512", ({ enumerable: true, get: function () { return pbkdf2_sha512_1.pbkdf2_sha512; } })); var sha256_1 = __webpack_require__(/*! ./node/sha256 */ "./node_modules/@ton/crypto-primitives/dist/node/sha256.js"); Object.defineProperty(exports, "sha256", ({ enumerable: true, get: function () { return sha256_1.sha256; } })); var sha512_1 = __webpack_require__(/*! ./node/sha512 */ "./node_modules/@ton/crypto-primitives/dist/node/sha512.js"); Object.defineProperty(exports, "sha512", ({ enumerable: true, get: function () { return sha512_1.sha512; } })); /***/ }), /***/ "./node_modules/@ton/crypto-primitives/dist/node/getSecureRandom.js": /*!**************************************************************************!*\ !*** ./node_modules/@ton/crypto-primitives/dist/node/getSecureRandom.js ***! \**************************************************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; /** * Copyright (c) Whales Corp. * All Rights Reserved. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.getSecureRandomWords = exports.getSecureRandomBytes = void 0; const crypto_1 = __importDefault(__webpack_require__(/*! crypto */ "crypto")); function getSecureRandomBytes(size) { return crypto_1.default.randomBytes(size); } exports.getSecureRandomBytes = getSecureRandomBytes; function getSecureRandomWords(size) { let res = new Uint16Array(size); crypto_1.default.randomFillSync(res); return res; } exports.getSecureRandomWords = getSecureRandomWords; /***/ }), /***/ "./node_modules/@ton/crypto-primitives/dist/node/hmac_sha512.js": /*!**********************************************************************!*\ !*** ./node_modules/@ton/crypto-primitives/dist/node/hmac_sha512.js ***! \**********************************************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; /** * Copyright (c) Whales Corp. * All Rights Reserved. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.hmac_sha512 = void 0; const crypto_1 = __importDefault(__webpack_require__(/*! crypto */ "crypto")); async function hmac_sha512(key, data) { let keyBuffer = typeof key === 'string' ? Buffer.from(key, 'utf-8') : key; let dataBuffer = typeof data === 'string' ? Buffer.from(data, 'utf-8') : data; return crypto_1.default.createHmac('sha512', keyBuffer) .update(dataBuffer) .digest(); } exports.hmac_sha512 = hmac_sha512; /***/ }), /***/ "./node_modules/@ton/crypto-primitives/dist/node/pbkdf2_sha512.js": /*!************************************************************************!*\ !*** ./node_modules/@ton/crypto-primitives/dist/node/pbkdf2_sha512.js ***! \************************************************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; /** * Copyright (c) Whales Corp. * All Rights Reserved. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.pbkdf2_sha512 = void 0; const crypto_1 = __importDefault(__webpack_require__(/*! crypto */ "crypto")); function pbkdf2_sha512(key, salt, iterations, keyLen) { return new Promise((resolve, reject) => crypto_1.default.pbkdf2(key, salt, iterations, keyLen, 'sha512', (error, derivedKey) => { if (error) { reject(error); } else { resolve(derivedKey); } })); } exports.pbkdf2_sha512 = pbkdf2_sha512; /***/ }), /***/ "./node_modules/@ton/crypto-primitives/dist/node/sha256.js": /*!*****************************************************************!*\ !*** ./node_modules/@ton/crypto-primitives/dist/node/sha256.js ***! \*****************************************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; /** * Copyright (c) Whales Corp. * All Rights Reserved. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.sha256 = void 0; const crypto_1 = __importDefault(__webpack_require__(/*! crypto */ "crypto")); async function sha256(source) { return crypto_1.default.createHash('sha256').update(source).digest(); } exports.sha256 = sha256; /***/ }), /***/ "./node_modules/@ton/crypto-primitives/dist/node/sha512.js": /*!*****************************************************************!*\ !*** ./node_modules/@ton/crypto-primitives/dist/node/sha512.js ***! \*****************************************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; /** * Copyright (c) Whales Corp. * All Rights Reserved. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.sha512 = void 0; const crypto_1 = __importDefault(__webpack_require__(/*! crypto */ "crypto")); async function sha512(source) { return crypto_1.default.createHash('sha512').update(source).digest(); } exports.sha512 = sha512; /***/ }), /***/ "./node_modules/@ton/crypto/dist/hd/ed25519.js": /*!*****************************************************!*\ !*** ./node_modules/@ton/crypto/dist/hd/ed25519.js ***! \*****************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; /** * Copyright (c) Whales Corp. * All Rights Reserved. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ Object.defineProperty(exports, "__esModule", ({ value: true })); exports.deriveEd25519Path = exports.deriveED25519HardenedKey = exports.getED25519MasterKeyFromSeed = void 0; const hmac_sha512_1 = __webpack_require__(/*! ../primitives/hmac_sha512 */ "./node_modules/@ton/crypto/dist/primitives/hmac_sha512.js"); const ED25519_CURVE = 'ed25519 seed'; const HARDENED_OFFSET = 0x80000000; async function getED25519MasterKeyFromSeed(seed) { const I = await (0, hmac_sha512_1.hmac_sha512)(ED25519_CURVE, seed); const IL = I.slice(0, 32); const IR = I.slice(32); return { key: IL, chainCode: IR, }; } exports.getED25519MasterKeyFromSeed = getED25519MasterKeyFromSeed; ; async function deriveED25519HardenedKey(parent, index) { if (index >= HARDENED_OFFSET) { throw Error('Key index must be less than offset'); } // Key Derive Path: 0x00 + parent.key + index; const indexBuffer = Buffer.alloc(4); indexBuffer.writeUInt32BE(index + HARDENED_OFFSET, 0); const data = Buffer.concat([Buffer.alloc(1, 0), parent.key, indexBuffer]); // Derive key const I = await (0, hmac_sha512_1.hmac_sha512)(parent.chainCode, data); const IL = I.slice(0, 32); const IR = I.slice(32); return { key: IL, chainCode: IR, }; } exports.deriveED25519HardenedKey = deriveED25519HardenedKey; ; async function deriveEd25519Path(seed, path) { let state = await getED25519MasterKeyFromSeed(seed); let remaining = [...path]; while (remaining.length > 0) { let index = remaining[0]; remaining = remaining.slice(1); state = await deriveED25519HardenedKey(state, index); } return state.key; } exports.deriveEd25519Path = deriveEd25519Path; /***/ }), /***/ "./node_modules/@ton/crypto/dist/hd/mnemonics.js": /*!*******************************************************!*\ !*** ./node_modules/@ton/crypto/dist/hd/mnemonics.js ***! \*******************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; /** * Copyright (c) Whales Corp. * All Rights Reserved. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ Object.defineProperty(exports, "__esModule", ({ value: true })); exports.deriveMnemonicsPath = exports.deriveMnemonicHardenedKey = exports.getMnemonicsMasterKeyFromSeed = void 0; const mnemonic_1 = __webpack_require__(/*! ../mnemonic/mnemonic */ "./node_modules/@ton/crypto/dist/mnemonic/mnemonic.js"); const hmac_sha512_1 = __webpack_require__(/*! ../primitives/hmac_sha512 */ "./node_modules/@ton/crypto/dist/primitives/hmac_sha512.js"); const HARDENED_OFFSET = 0x80000000; const MNEMONICS_SEED = 'TON Mnemonics HD seed'; async function getMnemonicsMasterKeyFromSeed(seed) { const I = await (0, hmac_sha512_1.hmac_sha512)(MNEMONICS_SEED, seed); const IL = I.slice(0, 32); const IR = I.slice(32); return { key: IL, chainCode: IR, }; } exports.getMnemonicsMasterKeyFromSeed = getMnemonicsMasterKeyFromSeed; ; async function deriveMnemonicHardenedKey(parent, index) { if (index >= HARDENED_OFFSET) { throw Error('Key index must be less than offset'); } // Key Derive Path: 0x00 + parent.key + index; const indexBuffer = Buffer.alloc(4); indexBuffer.writeUInt32BE(index + HARDENED_OFFSET, 0); const data = Buffer.concat([Buffer.alloc(1, 0), parent.key, indexBuffer]); // Derive key const I = await (0, hmac_sha512_1.hmac_sha512)(parent.chainCode, data); const IL = I.slice(0, 32); const IR = I.slice(32); return { key: IL, chainCode: IR, }; } exports.deriveMnemonicHardenedKey = deriveMnemonicHardenedKey; async function deriveMnemonicsPath(seed, path, wordsCount = 24, password) { let state = await getMnemonicsMasterKeyFromSeed(seed); let remaining = [...path]; while (remaining.length > 0) { let index = remaining[0]; remaining = remaining.slice(1); state = await deriveMnemonicHardenedKey(state, index); } return await (0, mnemonic_1.mnemonicFromRandomSeed)(state.key, wordsCount, password); } exports.deriveMnemonicsPath = deriveMnemonicsPath; /***/ }), /***/ "./node_modules/@ton/crypto/dist/hd/symmetric.js": /*!*******************************************************!*\ !*** ./node_modules/@ton/crypto/dist/hd/symmetric.js ***! \*******************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; /** * Copyright (c) Whales Corp. * All Rights Reserved. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ Object.defineProperty(exports, "__esModule", ({ value: true })); exports.deriveSymmetricPath = exports.deriveSymmetricHardenedKey = exports.getSymmetricMasterKeyFromSeed = void 0; const hmac_sha512_1 = __webpack_require__(/*! ../primitives/hmac_sha512 */ "./node_modules/@ton/crypto/dist/primitives/hmac_sha512.js"); const SYMMETRIC_SEED = 'Symmetric key seed'; async function getSymmetricMasterKeyFromSeed(seed) { const I = await (0, hmac_sha512_1.hmac_sha512)(SYMMETRIC_SEED, seed); const IL = I.slice(32); const IR = I.slice(0, 32); return { key: IL, chainCode: IR, }; } exports.getSymmetricMasterKeyFromSeed = getSymmetricMasterKeyFromSeed; ; async function deriveSymmetricHardenedKey(parent, offset) { // Prepare data const data = Buffer.concat([Buffer.alloc(1, 0), Buffer.from(offset)]); // Derive key const I = await (0, hmac_sha512_1.hmac_sha512)(parent.chainCode, data); const IL = I.slice(32); const IR = I.slice(0, 32); return { key: IL, chainCode: IR, }; } exports.deriveSymmetricHardenedKey = deriveSymmetricHardenedKey; async function deriveSymmetricPath(seed, path) { let state = await getSymmetricMasterKeyFromSeed(seed); let remaining = [...path]; while (remaining.length > 0) { let index = remaining[0]; remaining = remaining.slice(1); state = await deriveSymmetricHardenedKey(state, index); } return state.key; } exports.deriveSymmetricPath = deriveSymmetricPath; /***/ }), /***/ "./node_modules/@ton/crypto/dist/index.js": /*!************************************************!*\ !*** ./node_modules/@ton/crypto/dist/index.js ***! \************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; /** * Copyright (c) Whales Corp. * All Rights Reserved. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ Object.defineProperty(exports, "__esModule", ({ value: true })); exports.getMnemonicsMasterKeyFromSeed = exports.deriveMnemonicHardenedKey = exports.deriveMnemonicsPath = exports.deriveSymmetricPath = exports.deriveSymmetricHardenedKey = exports.getSymmetricMasterKeyFromSeed = exports.deriveEd25519Path = exports.deriveED25519HardenedKey = exports.getED25519MasterKeyFromSeed = exports.signVerify = exports.sign = exports.keyPairFromSecretKey = exports.keyPairFromSeed = exports.openBox = exports.sealBox = exports.mnemonicWordList = exports.mnemonicToHDSeed = exports.mnemonicToSeed = exports.mnemonicToWalletKey = exports.mnemonicToPrivateKey = exports.mnemonicValidate = exports.mnemonicNew = exports.newSecurePassphrase = exports.newSecureWords = exports.getSecureRandomNumber = exports.getSecureRandomWords = exports.getSecureRandomBytes = exports.hmac_sha512 = exports.pbkdf2_sha512 = exports.sha512_sync = exports.sha512 = exports.sha256_sync = exports.sha256 = void 0; var sha256_1 = __webpack_require__(/*! ./primitives/sha256 */ "./node_modules/@ton/crypto/dist/primitives/sha256.js"); Object.defineProperty(exports, "sha256", ({ enumerable: true, get: function () { return sha256_1.sha256; } })); Object.defineProperty(exports, "sha256_sync", ({ enumerable: true, get: function () { return sha256_1.sha256_sync; } })); var sha512_1 = __webpack_require__(/*! ./primitives/sha512 */ "./node_modules/@ton/crypto/dist/primitives/sha512.js"); Object.defineProperty(exports, "sha512", ({ enumerable: true, get: function () { return sha512_1.sha512; } })); Object.defineProperty(exports, "sha512_sync", ({ enumerable: true, get: function () { return sha512_1.sha512_sync; } })); var pbkdf2_sha512_1 = __webpack_require__(/*! ./primitives/pbkdf2_sha512 */ "./node_modules/@ton/crypto/dist/primitives/pbkdf2_sha512.js"); Object.defineProperty(exports, "pbkdf2_sha512", ({ enumerable: true, get: function () { return pbkdf2_sha512_1.pbkdf2_sha512; } })); var hmac_sha512_1 = __webpack_require__(/*! ./primitives/hmac_sha512 */ "./node_modules/@ton/crypto/dist/primitives/hmac_sha512.js"); Object.defineProperty(exports, "hmac_sha512", ({ enumerable: true, get: function () { return hmac_sha512_1.hmac_sha512; } })); var getSecureRandom_1 = __webpack_require__(/*! ./primitives/getSecureRandom */ "./node_modules/@ton/crypto/dist/primitives/getSecureRandom.js"); Object.defineProperty(exports, "getSecureRandomBytes", ({ enumerable: true, get: function () { return getSecureRandom_1.getSecureRandomBytes; } })); Object.defineProperty(exports, "getSecureRandomWords", ({ enumerable: true, get: function () { return getSecureRandom_1.getSecureRandomWords; } })); Object.defineProperty(exports, "getSecureRandomNumber", ({ enumerable: true, get: function () { return getSecureRandom_1.getSecureRandomNumber; } })); var newSecureWords_1 = __webpack_require__(/*! ./passwords/newSecureWords */ "./node_modules/@ton/crypto/dist/passwords/newSecureWords.js"); Object.defineProperty(exports, "newSecureWords", ({ enumerable: true, get: function () { return newSecureWords_1.newSecureWords; } })); var newSecurePassphrase_1 = __webpack_require__(/*! ./passwords/newSecurePassphrase */ "./node_modules/@ton/crypto/dist/passwords/newSecurePassphrase.js"); Object.defineProperty(exports, "newSecurePassphrase", ({ enumerable: true, get: function () { return newSecurePassphrase_1.newSecurePassphrase; } })); var mnemonic_1 = __webpack_require__(/*! ./mnemonic/mnemonic */ "./node_modules/@ton/crypto/dist/mnemonic/mnemonic.js"); Object.defineProperty(exports, "mnemonicNew", ({ enumerable: true, get: function () { return mnemonic_1.mnemonicNew; } })); Object.defineProperty(exports, "mnemonicValidate", ({ enumerable: true, get: function () { return mnemonic_1.mnemonicValidate; } })); Object.defineProperty(exports, "mnemonicToPrivateKey", ({ enumerable: true, get: function () { return mnemonic_1.mnemonicToPrivateKey; } })); Object.defineProperty(exports, "mnemonicToWalletKey", ({ enumerable: true, get: function () { return mnemonic_1.mnemonicToWalletKey; } })); Object.defineProperty(exports, "mnemonicToSeed", ({ enumerable: true, get: function () { return mnemonic_1.mnemonicToSeed; } })); Object.defineProperty(exports, "mnemonicToHDSeed", ({ enumerable: true, get: function () { return mnemonic_1.mnemonicToHDSeed; } })); var wordlist_1 = __webpack_require__(/*! ./mnemonic/wordlist */ "./node_modules/@ton/crypto/dist/mnemonic/wordlist.js"); Object.defineProperty(exports, "mnemonicWordList", ({ enumerable: true, get: function () { return wordlist_1.wordlist; } })); var nacl_1 = __webpack_require__(/*! ./primitives/nacl */ "./node_modules/@ton/crypto/dist/primitives/nacl.js"); Object.defineProperty(exports, "sealBox", ({ enumerable: true, get: function () { return nacl_1.sealBox; } })); Object.defineProperty(exports, "openBox", ({ enumerable: true, get: function () { return nacl_1.openBox; } })); var nacl_2 = __webpack_require__(/*! ./primitives/nacl */ "./node_modules/@ton/crypto/dist/primitives/nacl.js"); Object.defineProperty(exports, "keyPairFromSeed", ({ enumerable: true, get: function () { return nacl_2.keyPairFromSeed; } })); Object.defineProperty(exports, "keyPairFromSecretKey", ({ enumerable: true, get: function () { return nacl_2.keyPairFromSecretKey; } })); Object.defineProperty(exports, "sign", ({ enumerable: true, get: function () { return nacl_2.sign; } })); Object.defineProperty(exports, "signVerify", ({ enumerable: true, get: function () { return nacl_2.signVerify; } })); var ed25519_1 = __webpack_require__(/*! ./hd/ed25519 */ "./node_modules/@ton/crypto/dist/hd/ed25519.js"); Object.defineProperty(exports, "getED25519MasterKeyFromSeed", ({ enumerable: true, get: function () { return ed25519_1.getED25519MasterKeyFromSeed; } })); Object.defineProperty(exports, "deriveED25519HardenedKey", ({ enumerable: true, get: function () { return ed25519_1.deriveED25519HardenedKey; } })); Object.defineProperty(exports, "deriveEd25519Path", ({ enumerable: true, get: function () { return ed25519_1.deriveEd25519Path; } })); var symmetric_1 = __webpack_require__(/*! ./hd/symmetric */ "./node_modules/@ton/crypto/dist/hd/symmetric.js"); Object.defineProperty(exports, "getSymmetricMasterKeyFromSeed", ({ enumerable: true, get: function () { return symmetric_1.getSymmetricMasterKeyFromSeed; } })); Object.defineProperty(exports, "deriveSymmetricHardenedKey", ({ enumerable: true, get: function () { return symmetric_1.deriveSymmetricHardenedKey; } })); Object.defineProperty(exports, "deriveSymmetricPath", ({ enumerable: true, get: function () { return symmetric_1.deriveSymmetricPath; } })); var mnemonics_1 = __webpack_require__(/*! ./hd/mnemonics */ "./node_modules/@ton/crypto/dist/hd/mnemonics.js"); Object.defineProperty(exports, "deriveMnemonicsPath", ({ enumerable: true, get: function () { return mnemonics_1.deriveMnemonicsPath; } })); Object.defineProperty(exports, "deriveMnemonicHardenedKey", ({ enumerable: true, get: function () { return mnemonics_1.deriveMnemonicHardenedKey; } })); Object.defineProperty(exports, "getMnemonicsMasterKeyFromSeed", ({ enumerable: true, get: function () { return mnemonics_1.getMnemonicsMasterKeyFromSeed; } })); /***/ }), /***/ "./node_modules/@ton/crypto/dist/mnemonic/mnemonic.js": /*!************************************************************!*\ !*** ./node_modules/@ton/crypto/dist/mnemonic/mnemonic.js ***! \************************************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; /** * Copyright (c) Whales Corp. * All Rights Reserved. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.mnemonicFromRandomSeed = exports.mnemonicIndexesToBytes = exports.bytesToMnemonics = exports.bytesToMnemonicIndexes = exports.mnemonicNew = exports.mnemonicValidate = exports.mnemonicToHDSeed = exports.mnemonicToWalletKey = exports.mnemonicToPrivateKey = exports.mnemonicToSeed = exports.mnemonicToEntropy = void 0; const tweetnacl_1 = __importDefault(__webpack_require__(/*! tweetnacl */ "./node_modules/tweetnacl/nacl-fast.js")); const getSecureRandom_1 = __webpack_require__(/*! ../primitives/getSecureRandom */ "./node_modules/@ton/crypto/dist/primitives/getSecureRandom.js"); const hmac_sha512_1 = __webpack_require__(/*! ../primitives/hmac_sha512 */ "./node_modules/@ton/crypto/dist/primitives/hmac_sha512.js"); const pbkdf2_sha512_1 = __webpack_require__(/*! ../primitives/pbkdf2_sha512 */ "./node_modules/@ton/crypto/dist/primitives/pbkdf2_sha512.js"); const binary_1 = __webpack_require__(/*! ../utils/binary */ "./node_modules/@ton/crypto/dist/utils/binary.js"); const wordlist_1 = __webpack_require__(/*! ./wordlist */ "./node_modules/@ton/crypto/dist/mnemonic/wordlist.js"); const PBKDF_ITERATIONS = 100000; async function isPasswordNeeded(mnemonicArray) { const passlessEntropy = await mnemonicToEntropy(mnemonicArray); return (await isPasswordSeed(passlessEntropy)) && !(await isBasicSeed(passlessEntropy)); } function normalizeMnemonic(src) { return src.map((v) => v.toLowerCase().trim()); } async function isBasicSeed(entropy) { // https://github.com/ton-blockchain/ton/blob/24dc184a2ea67f9c47042b4104bbb4d82289fac1/tonlib/tonlib/keys/Mnemonic.cpp#L68 // bool Mnemonic::is_basic_seed() { // td::SecureString hash(64); // td::pbkdf2_sha512(as_slice(to_entropy()), "TON seed version", td::max(1, PBKDF_ITERATIONS / 256), // hash.as_mutable_slice()); // return hash.as_slice()[0] == 0; // } const seed = await (0, pbkdf2_sha512_1.pbkdf2_sha512)(entropy, 'TON seed version', Math.max(1, Math.floor(PBKDF_ITERATIONS / 256)), 64); return seed[0] == 0; } async function isPasswordSeed(entropy) { // https://github.com/ton-blockchain/ton/blob/24dc184a2ea67f9c47042b4104bbb4d82289fac1/tonlib/tonlib/keys/Mnemonic.cpp#L75 // bool Mnemonic::is_password_seed() { // td::SecureString hash(64); // td::pbkdf2_sha512(as_slice(to_entropy()), "TON fast seed version", 1, hash.as_mutable_slice()); // return hash.as_slice()[0] == 1; // } const seed = await (0, pbkdf2_sha512_1.pbkdf2_sha512)(entropy, 'TON fast seed version', 1, 64); return seed[0] == 1; } async function mnemonicToEntropy(mnemonicArray, password) { // https://github.com/ton-blockchain/ton/blob/24dc184a2ea67f9c47042b4104bbb4d82289fac1/tonlib/tonlib/keys/Mnemonic.cpp#L52 // td::SecureString Mnemonic::to_entropy() const { // td::SecureString res(64); // td::hmac_sha512(join(words_), password_, res.as_mutable_slice()); // return res; // } return await (0, hmac_sha512_1.hmac_sha512)(mnemonicArray.join(' '), password && password.length > 0 ? password : ''); } exports.mnemonicToEntropy = mnemonicToEntropy; async function mnemonicToSeed(mnemonicArray, seed, password) { // https://github.com/ton-blockchain/ton/blob/24dc184a2ea67f9c47042b4104bbb4d82289fac1/tonlib/tonlib/keys/Mnemonic.cpp#L58 // td::SecureString Mnemonic::to_seed() const { // td::SecureString hash(64); // td::pbkdf2_sha512(as_slice(to_entropy()), "TON default seed", PBKDF_ITERATIONS, hash.as_mutable_slice()); // return hash; // } const entropy = await mnemonicToEntropy(mnemonicArray, password); return await (0, pbkdf2_sha512_1.pbkdf2_sha512)(entropy, seed, PBKDF_ITERATIONS, 64); } exports.mnemonicToSeed = mnemonicToSeed; /** * Extract private key from mnemonic * @param mnemonicArray mnemonic array * @param password mnemonic password * @returns Key Pair */ async function mnemonicToPrivateKey(mnemonicArray, password) { // https://github.com/ton-blockchain/ton/blob/24dc184a2ea67f9c47042b4104bbb4d82289fac1/tonlib/tonlib/keys/Mnemonic.cpp#L64 // td::Ed25519::PrivateKey Mnemonic::to_private_key() const { // return td::Ed25519::PrivateKey(td::SecureString(as_slice(to_seed()).substr(0, td::Ed25519::PrivateKey::LENGTH))); // } mnemonicArray = normalizeMnemonic(mnemonicArray); const seed = (await mnemonicToSeed(mnemonicArray, 'TON default seed', password)); let keyPair = tweetnacl_1.default.sign.keyPair.fromSeed(seed.slice(0, 32)); return { publicKey: Buffer.from(keyPair.publicKey), secretKey: Buffer.from(keyPair.secretKey) }; } exports.mnemonicToPrivateKey = mnemonicToPrivateKey; /** * Convert mnemonic to wallet key pair * @param mnemonicArray mnemonic array * @param password mnemonic password * @returns Key Pair */ async function mnemonicToWalletKey(mnemonicArray, password) { let seedPk = await mnemonicToPrivateKey(mnemonicArray, password); let seedSecret = seedPk.secretKey.slice(0, 32); const keyPair = tweetnacl_1.default.sign.keyPair.fromSeed(seedSecret); return { publicKey: Buffer.from(keyPair.publicKey), secretKey: Buffer.from(keyPair.secretKey) }; } exports.mnemonicToWalletKey = mnemonicToWalletKey; /** * Convert mnemonics to HD seed * @param mnemonicArray mnemonic array * @param password mnemonic password * @returns 64 byte seed */ async function mnemonicToHDSeed(mnemonicArray, password) { mnemonicArray = normalizeMnemonic(mnemonicArray); return (await mnemonicToSeed(mnemonicArray, 'TON HD Keys seed', password)); } exports.mnemonicToHDSeed = mnemonicToHDSeed; /** * Validate Mnemonic * @param mnemonicArray mnemonic array * @param password mnemonic password * @returns true for valid mnemonic */ async function mnemonicValidate(mnemonicArray, password) { // Normalize mnemonicArray = normalizeMnemonic(mnemonicArray); // Validate mnemonic words for (let word of mnemonicArray) { if (wordlist_1.wordlist.indexOf(word) < 0) { return false; } } // Check password if (password && password.length > 0) { if (!await isPasswordNeeded(mnemonicArray)) { return false; } } // Validate seed return await isBasicSeed(await mnemonicToEntropy(mnemonicArray, password)); } exports.mnemonicValidate = mnemonicValidate; /** * Generate new Mnemonic * @param wordsCount number of words to generate * @param password mnemonic password * @returns */ async function mnemonicNew(wordsCount = 24, password) { // https://github.com/ton-blockchain/ton/blob/24dc184a2ea67f9c47042b4104bbb4d82289fac1/tonlib/tonlib/keys/Mnemonic.cpp#L159 let mnemonicArray = []; while (true) { // Regenerate new mnemonics mnemonicArray = []; for (let i = 0; i < wordsCount; i++) { let ind = await (0, getSecureRandom_1.getSecureRandomNumber)(0, wordlist_1.wordlist.length); mnemonicArray.push(wordlist_1.wordlist[ind]); } // Chek password conformance if (password && password.length > 0) { if (!await isPasswordNeeded(mnemonicArray)) { continue; } } // Check if basic seed correct if (!(await isBasicSeed(await mnemonicToEntropy(mnemonicArray, password)))) { continue; } break; } return mnemonicArray; } exports.mnemonicNew = mnemonicNew; /** * Converts bytes to mnemonics array (could be invalid for TON) * @param src source buffer * @param wordsCount number of words */ function bytesToMnemonicIndexes(src, wordsCount) { let bits = (0, binary_1.bytesToBits)(src); let indexes = []; for (let i = 0; i < wordsCount; i++) { let sl = bits.slice(i * 11, i * 11 + 11); indexes.push(parseInt(sl, 2)); } return indexes; } exports.bytesToMnemonicIndexes = bytesToMnemonicIndexes; function bytesToMnemonics(src, wordsCount) { let mnemonics = bytesToMnemonicIndexes(src, wordsCount); let res = []; for (let m of mnemonics) { res.push(wordlist_1.wordlist[m]); } return res; } exports.bytesToMnemonics = bytesToMnemonics; /** * Converts mnemonics indexes to buffer with zero padding in the end * @param src source indexes * @returns Buffer */ function mnemonicIndexesToBytes(src) { let res = ''; for (let s of src) { if (!Number.isSafeInteger(s)) { throw Error('Invalid input'); } if (s < 0 || s >= 2028) { throw Error('Invalid input'); } res += (0, binary_1.lpad)(s.toString(2), '0', 11); } while (res.length % 8 !== 0) { res = res + '0'; } return (0, binary_1.bitsToBytes)(res); } exports.mnemonicIndexesToBytes = mnemonicIndexesToBytes; /** * Generates deterministically mnemonics * @param seed * @param wordsCount * @param password */ async function mnemonicFromRandomSeed(seed, wordsCount = 24, password) { const bytesLength = Math.ceil(wordsCount * 11 / 8); let currentSeed = seed; while (true) { // Create entropy let entropy = await (0, pbkdf2_sha512_1.pbkdf2_sha512)(currentSeed, 'TON mnemonic seed', Math.max(1, Math.floor(PBKDF_ITERATIONS / 256)), bytesLength); // Create mnemonics let mnemonics = bytesToMnemonics(entropy, wordsCount); // Check if mnemonics are valid if (await mnemonicValidate(mnemonics, password)) { return mnemonics; } currentSeed = entropy; } } exports.mnemonicFromRandomSeed = mnemonicFromRandomSeed; /***/ }), /***/ "./node_modules/@ton/crypto/dist/mnemonic/wordlist.js": /*!************************************************************!*\ !*** ./node_modules/@ton/crypto/dist/mnemonic/wordlist.js ***! \************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; /** * Copyright (c) Whales Corp. * All Rights Reserved. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ Object.defineProperty(exports, "__esModule", ({ value: true })); exports.wordlist = void 0; const EN = ['abandon', 'ability', 'able', 'about', 'above', 'absent', 'absorb', 'abstract', 'absurd', 'abuse', 'access', 'accident', 'account', 'accuse', 'achieve', 'acid', 'acoustic', 'acquire', 'across', 'act', 'action', 'actor', 'actress', 'actual', 'adapt', 'add', 'addict', 'address', 'adjust', 'admit', 'adult', 'advance', 'advice', 'aerobic', 'affair', 'afford', 'afraid', 'again', 'age', 'agent', 'agree', 'ahead', 'aim', 'air', 'airport', 'aisle', 'alarm', 'album', 'alcohol', 'alert', 'alien', 'all', 'alley', 'allow', 'almost', 'alone', 'alpha', 'already', 'also', 'alter', 'always', 'amateur', 'amazing', 'among', 'amount', 'amused', 'analyst', 'anchor', 'ancient', 'anger', 'angle', 'angry', 'animal', 'ankle', 'announce', 'annual', 'another', 'answer', 'antenna', 'antique', 'anxiety', 'any', 'apart', 'apology', 'appear', 'apple', 'approve', 'april', 'arch', 'arctic', 'area', 'arena', 'argue', 'arm', 'armed', 'armor', 'army', 'around', 'arrange', 'arrest', 'arrive', 'arrow', 'art', 'artefact', 'artist', 'artwork', 'ask', 'aspect', 'assault', 'asset', 'assist', 'assume', 'asthma', 'athlete', 'atom', 'attack', 'attend', 'attitude', 'attract', 'auction', 'audit', 'august', 'aunt', 'author', 'auto', 'autumn', 'average', 'avocado', 'avoid', 'awake', 'aware', 'away', 'awesome', 'awful', 'awkward', 'axis', 'baby', 'bachelor', 'bacon', 'badge', 'bag', 'balance', 'balcony', 'ball', 'bamboo', 'banana', 'banner', 'bar', 'barely', 'bargain', 'barrel', 'base', 'basic', 'basket', 'battle', 'beach', 'bean', 'beauty', 'because', 'become', 'beef', 'before', 'begin', 'behave', 'behind', 'believe', 'below', 'belt',