@ton/blueprint 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/CHANGELOG.md +146 -0
  2. package/README.md +114 -0
  3. package/dist/cli/build.d.ts +4 -0
  4. package/dist/cli/build.js +68 -0
  5. package/dist/cli/cli.d.ts +7 -0
  6. package/dist/cli/cli.js +106 -0
  7. package/dist/cli/create.d.ts +6 -0
  8. package/dist/cli/create.js +96 -0
  9. package/dist/cli/help.d.ts +2 -0
  10. package/dist/cli/help.js +55 -0
  11. package/dist/cli/run.d.ts +2 -0
  12. package/dist/cli/run.js +18 -0
  13. package/dist/cli/test.d.ts +2 -0
  14. package/dist/cli/test.js +9 -0
  15. package/dist/compile/CompilerConfig.d.ts +21 -0
  16. package/dist/compile/CompilerConfig.js +2 -0
  17. package/dist/compile/OverwritableVirtualFileSystem.d.ts +10 -0
  18. package/dist/compile/OverwritableVirtualFileSystem.js +24 -0
  19. package/dist/compile/compile.d.ts +14 -0
  20. package/dist/compile/compile.js +115 -0
  21. package/dist/index.d.ts +6 -0
  22. package/dist/index.js +10 -0
  23. package/dist/network/NetworkProvider.d.ts +22 -0
  24. package/dist/network/NetworkProvider.js +2 -0
  25. package/dist/network/createNetworkProvider.d.ts +3 -0
  26. package/dist/network/createNetworkProvider.js +282 -0
  27. package/dist/network/send/DeeplinkProvider.d.ts +10 -0
  28. package/dist/network/send/DeeplinkProvider.js +44 -0
  29. package/dist/network/send/MnemonicProvider.d.ts +19 -0
  30. package/dist/network/send/MnemonicProvider.js +80 -0
  31. package/dist/network/send/SendProvider.d.ts +6 -0
  32. package/dist/network/send/SendProvider.js +2 -0
  33. package/dist/network/send/TonConnectProvider.d.ts +12 -0
  34. package/dist/network/send/TonConnectProvider.js +108 -0
  35. package/dist/network/send/TonHubProvider.d.ts +16 -0
  36. package/dist/network/send/TonHubProvider.js +110 -0
  37. package/dist/network/storage/FSStorage.d.ts +8 -0
  38. package/dist/network/storage/FSStorage.js +53 -0
  39. package/dist/network/storage/Storage.d.ts +18 -0
  40. package/dist/network/storage/Storage.js +2 -0
  41. package/dist/paths.d.ts +12 -0
  42. package/dist/paths.js +19 -0
  43. package/dist/template.d.ts +4 -0
  44. package/dist/template.js +15 -0
  45. package/dist/templates/func/common/wrappers/compile.ts.template +7 -0
  46. package/dist/templates/func/counter/contracts/contract.fc.template +72 -0
  47. package/dist/templates/func/counter/scripts/deploy.ts.template +22 -0
  48. package/dist/templates/func/counter/scripts/increment.ts.template +38 -0
  49. package/dist/templates/func/counter/tests/spec.ts.template +81 -0
  50. package/dist/templates/func/counter/wrappers/wrapper.ts.template +67 -0
  51. package/dist/templates/func/empty/contracts/contract.fc.template +6 -0
  52. package/dist/templates/func/empty/scripts/deploy.ts.template +14 -0
  53. package/dist/templates/func/empty/tests/spec.ts.template +39 -0
  54. package/dist/templates/func/empty/wrappers/wrapper.ts.template +30 -0
  55. package/dist/templates/tact/common/wrappers/compile.ts.template +7 -0
  56. package/dist/templates/tact/common/wrappers/wrapper.ts.template +2 -0
  57. package/dist/templates/tact/counter/contracts/contract.tact.template +29 -0
  58. package/dist/templates/tact/counter/scripts/deploy.ts.template +23 -0
  59. package/dist/templates/tact/counter/scripts/increment.ts.template +45 -0
  60. package/dist/templates/tact/counter/tests/spec.ts.template +82 -0
  61. package/dist/templates/tact/empty/contracts/contract.tact.template +8 -0
  62. package/dist/templates/tact/empty/scripts/deploy.ts.template +23 -0
  63. package/dist/templates/tact/empty/tests/spec.ts.template +41 -0
  64. package/dist/ui/InquirerUIProvider.d.ts +12 -0
  65. package/dist/ui/InquirerUIProvider.js +70 -0
  66. package/dist/ui/UIProvider.d.ts +8 -0
  67. package/dist/ui/UIProvider.js +2 -0
  68. package/dist/utils.d.ts +39 -0
  69. package/dist/utils.js +122 -0
  70. package/package.json +51 -0
package/dist/utils.js ADDED
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ var _a;
29
+ Object.defineProperty(exports, "__esModule", { value: true });
30
+ exports.getExplorerLink = exports.selectFile = exports.selectOption = exports.findScripts = exports.findCompiles = exports.oneOrZeroOf = exports.sleep = exports.tonDeepLink = void 0;
31
+ const path_1 = __importDefault(require("path"));
32
+ const promises_1 = __importDefault(require("fs/promises"));
33
+ const paths_1 = require("./paths");
34
+ const tonDeepLink = (address, amount, body, stateInit) => `ton://transfer/${address.toString({
35
+ urlSafe: true,
36
+ bounceable: true,
37
+ })}?amount=${amount.toString()}${body ? '&bin=' + body.toBoc().toString('base64url') : ''}${stateInit ? '&init=' + stateInit.toBoc().toString('base64url') : ''}`;
38
+ exports.tonDeepLink = tonDeepLink;
39
+ function sleep(ms) {
40
+ return new Promise((resolve) => {
41
+ setTimeout(resolve, ms);
42
+ });
43
+ }
44
+ exports.sleep = sleep;
45
+ function oneOrZeroOf(options) {
46
+ let opt = undefined;
47
+ for (const k in options) {
48
+ if (options[k]) {
49
+ if (opt === undefined) {
50
+ opt = k;
51
+ }
52
+ else {
53
+ throw new Error(`Please pick only one of the options: ${Object.keys(options).join(', ')}`);
54
+ }
55
+ }
56
+ }
57
+ return opt;
58
+ }
59
+ exports.oneOrZeroOf = oneOrZeroOf;
60
+ const compileEnd = '.compile.ts';
61
+ const findCompiles = async () => (await promises_1.default.readdir(paths_1.WRAPPERS_DIR))
62
+ .filter((f) => f.endsWith(compileEnd))
63
+ .map((f) => ({ path: path_1.default.join(paths_1.WRAPPERS_DIR, f), name: f.slice(0, f.length - compileEnd.length) }));
64
+ exports.findCompiles = findCompiles;
65
+ const findScripts = async () => (await promises_1.default.readdir(paths_1.SCRIPTS_DIR))
66
+ .filter((f) => f.endsWith('.ts'))
67
+ .map((f) => ({ path: path_1.default.join(paths_1.SCRIPTS_DIR, f), name: path_1.default.parse(f).name }));
68
+ exports.findScripts = findScripts;
69
+ async function selectOption(options, opts) {
70
+ if (opts.hint) {
71
+ const found = options.find((o) => o.value === opts.hint);
72
+ if (found === undefined) {
73
+ throw new Error(`Could not find option '${opts.hint}'`);
74
+ }
75
+ return found;
76
+ }
77
+ else {
78
+ return await opts.ui.choose(opts.msg, options, (o) => o.name);
79
+ }
80
+ }
81
+ exports.selectOption = selectOption;
82
+ async function selectFile(files, opts) {
83
+ let selected;
84
+ if (opts.hint) {
85
+ const found = files.find((f) => f.name.toLowerCase() === opts.hint?.toLowerCase());
86
+ if (found === undefined) {
87
+ throw new Error(`Could not find file with name '${opts.hint}'`);
88
+ }
89
+ selected = found;
90
+ opts.ui.write(`Using file: ${selected.name}`);
91
+ }
92
+ else {
93
+ if (files.length === 1) {
94
+ selected = files[0];
95
+ opts.ui.write(`Using file: ${selected.name}`);
96
+ }
97
+ else {
98
+ selected = await opts.ui.choose('Choose file to use', files, (f) => f.name);
99
+ }
100
+ }
101
+ return {
102
+ ...selected,
103
+ module: opts.import !== false ? await (_a = selected.path, Promise.resolve().then(() => __importStar(require(_a)))) : undefined,
104
+ };
105
+ }
106
+ exports.selectFile = selectFile;
107
+ function getExplorerLink(address, network, explorer) {
108
+ const networkPrefix = network === 'testnet' ? 'testnet.' : '';
109
+ switch (explorer) {
110
+ case 'tonscan':
111
+ return `https://${networkPrefix}tonscan.org/address/${address}`;
112
+ case 'tonapi':
113
+ return `https://${networkPrefix}tonapi.io/account/${address}`;
114
+ case 'toncx':
115
+ return `https://${networkPrefix}ton.cx/address/${address}`;
116
+ case 'dton':
117
+ return `https://${networkPrefix}dton.io/a/${address}`;
118
+ default:
119
+ return `https://${networkPrefix}tonscan.org/address/${address}`;
120
+ }
121
+ }
122
+ exports.getExplorerLink = getExplorerLink;
package/package.json ADDED
@@ -0,0 +1,51 @@
1
+ {
2
+ "name": "@ton/blueprint",
3
+ "version": "0.10.0",
4
+ "description": "Framework for development of TON smart contracts",
5
+ "main": "dist/index.js",
6
+ "bin": {
7
+ "blueprint": "./dist/cli/cli.js"
8
+ },
9
+ "author": "TonTech",
10
+ "license": "MIT",
11
+ "repository": {
12
+ "type": "git",
13
+ "url": "git+https://github.com/ton-org/blueprint.git"
14
+ },
15
+ "files": [
16
+ "dist/**/*"
17
+ ],
18
+ "scripts": {
19
+ "build": "rm -rf dist && tsc && cp -r src/templates dist/",
20
+ "release": "yarn build && yarn publish --access public",
21
+ "format": "prettier --write src"
22
+ },
23
+ "devDependencies": {
24
+ "@types/inquirer": "^8.2.6",
25
+ "@types/node": "^20.2.5",
26
+ "@types/qrcode-terminal": "^0.12.0",
27
+ "prettier": "^2.8.8",
28
+ "ton": "^13.5.0",
29
+ "ton-core": "^0.49.1",
30
+ "ton-crypto": "^3.2.0",
31
+ "typescript": "^4.9.5"
32
+ },
33
+ "peerDependencies": {
34
+ "ton": ">=13.4.1",
35
+ "ton-core": ">=0.48.0",
36
+ "ton-crypto": ">=3.2.0"
37
+ },
38
+ "dependencies": {
39
+ "@orbs-network/ton-access": "^2.3.3",
40
+ "@tact-lang/compiler": "^1.1.2",
41
+ "@ton-community/func-js": "^0.6.2",
42
+ "@tonconnect/sdk": "^2.1.3",
43
+ "arg": "^5.0.2",
44
+ "chalk": "^4.1.0",
45
+ "dotenv": "^16.1.4",
46
+ "inquirer": "^8.2.5",
47
+ "qrcode-terminal": "^0.12.0",
48
+ "ton-x": "^2.1.0",
49
+ "ts-node": "^10.9.1"
50
+ }
51
+ }