@tact-lang/tact-language-server
Version:
Language Server for Tact
1,002 lines (914 loc) • 2.69 MB
JavaScript
#!/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',