@ton/blueprint 0.42.0 → 0.43.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.
package/dist/cli/cli.js CHANGED
File without changes
@@ -142,6 +142,8 @@ Verifies a deployed contract on ${chalk_1.default.underline('https://verifier.to
142
142
 
143
143
  ${chalk_1.default.bold('Flags:')}
144
144
  ${chalk_1.default.cyan('--mainnet')}, ${chalk_1.default.cyan('--testnet')} - selects network
145
+ ${chalk_1.default.cyan('--verifier')} - specifies the verifier ID to use (default: ${chalk_1.default.cyan('verifier.ton.org')})
146
+ ${chalk_1.default.cyan('--list-verifiers')} - lists all available verifiers for the selected network (or both networks if none selected)
145
147
  ${chalk_1.default.cyan('--compiler-version')} - specifies the exact compiler version to use (e.g. ${chalk_1.default.cyan('0.4.4-newops.1')}). Note: this does not change the underlying compiler itself.
146
148
  ${chalk_1.default.cyan('--custom')} [api-endpoint] - use custom API (requires --custom-type)
147
149
  ${chalk_1.default.cyan('--custom-version')} - API version (v2 default)
@@ -13,33 +13,68 @@ const createNetworkProvider_1 = require("../network/createNetworkProvider");
13
13
  const build_1 = require("./build");
14
14
  const utils_1 = require("../utils");
15
15
  const constants_1 = require("./constants");
16
- async function getBackends() {
17
- let backendsProd;
18
- let backendsTestnet;
16
+ const DEFAULT_VERIFIER_ID = 'verifier.ton.org';
17
+ const VERIFIER_CONFIG_URL = 'https://raw.githubusercontent.com/ton-community/contract-verifier-config/main/config.json';
18
+ const MAINNET_VERIFIER_REGISTRY = core_1.Address.parse('EQD-BJSVUJviud_Qv7Ymfd3qzXdrmV525e3YDzWQoHIAiInL');
19
+ const TESTNET_VERIFIER_REGISTRY = core_1.Address.parse('EQCsdKYwUaXkgJkz2l0ol6qT_WxeRbE_wBCwnEybmR0u5TO8');
20
+ async function getVerifierConfig() {
19
21
  try {
20
- const response = await fetch('https://raw.githubusercontent.com/ton-community/contract-verifier-config/main/config.json');
21
- if (response.status !== 200) {
22
- throw new Error(response.status + ' ' + response.statusText);
22
+ const response = await fetch(VERIFIER_CONFIG_URL);
23
+ if (!response.ok) {
24
+ throw new Error(`Failed to fetch verifier config: ${response.status} ${response.statusText}`);
23
25
  }
24
- const config = await response.json();
25
- backendsProd = config.backends;
26
- backendsTestnet = config.backendsTestnet;
26
+ return await response.json();
27
27
  }
28
- catch (e) {
29
- throw new Error('Unable to fetch contract verifer backends: ' + e);
28
+ catch (error) {
29
+ const errorMessage = error instanceof Error ? error.message : String(error);
30
+ throw new Error(`Unable to fetch contract verifier config: ${errorMessage}`);
31
+ }
32
+ }
33
+ async function listVerifiers(ui) {
34
+ try {
35
+ const config = await getVerifierConfig();
36
+ ui.write('\nAvailable verifiers:');
37
+ const mainnetVerifiers = config.verifiers.filter((v) => v.network === 'mainnet');
38
+ const testnetVerifiers = config.verifiers.filter((v) => v.network === 'testnet');
39
+ if (mainnetVerifiers.length > 0) {
40
+ ui.write('\n Mainnet:');
41
+ mainnetVerifiers.forEach((v) => {
42
+ ui.write(` - ${v.id}`);
43
+ });
44
+ }
45
+ if (testnetVerifiers.length > 0) {
46
+ ui.write('\n Testnet:');
47
+ testnetVerifiers.forEach((v) => {
48
+ ui.write(` - ${v.id}`);
49
+ });
50
+ }
51
+ if (mainnetVerifiers.length === 0 && testnetVerifiers.length === 0) {
52
+ ui.write(' (none)');
53
+ }
54
+ ui.write('');
55
+ }
56
+ catch (error) {
57
+ const errorMessage = error instanceof Error ? error.message : String(error);
58
+ throw new Error(`Unable to list verifiers: ${errorMessage}`);
59
+ }
60
+ }
61
+ async function getBackends(verifierId, network) {
62
+ try {
63
+ const config = await getVerifierConfig();
64
+ const verifierConfig = config.verifiers.find((v) => v.id === verifierId && v.network === network);
65
+ if (!verifierConfig) {
66
+ const availableVerifiers = config.verifiers
67
+ .filter((v) => v.network === network)
68
+ .map((v) => v.id)
69
+ .join(', ');
70
+ throw new Error(`Verifier '${verifierId}' not found for ${network} network. Available verifiers: ${availableVerifiers || 'none'}`);
71
+ }
72
+ return verifierConfig.backends;
73
+ }
74
+ catch (error) {
75
+ const errorMessage = error instanceof Error ? error.message : String(error);
76
+ throw new Error(`Unable to fetch contract verifier backends: ${errorMessage}`);
30
77
  }
31
- return {
32
- mainnet: {
33
- sourceRegistry: core_1.Address.parse('EQD-BJSVUJviud_Qv7Ymfd3qzXdrmV525e3YDzWQoHIAiInL'),
34
- backends: backendsProd,
35
- id: 'orbs.com',
36
- },
37
- testnet: {
38
- sourceRegistry: core_1.Address.parse('EQCsdKYwUaXkgJkz2l0ol6qT_WxeRbE_wBCwnEybmR0u5TO8'),
39
- backends: backendsTestnet,
40
- id: 'orbs-testnet',
41
- },
42
- };
43
78
  }
44
79
  function removeRandom(els) {
45
80
  return els.splice(Math.floor(Math.random() * els.length), 1)[0];
@@ -139,6 +174,10 @@ const verify = async (_args, ui, context) => {
139
174
  ui.write(constants_1.helpMessages['verify']);
140
175
  return;
141
176
  }
177
+ if (localArgs['--list-verifiers']) {
178
+ await listVerifiers(ui);
179
+ return;
180
+ }
142
181
  const preciseVersion = localArgs['--compiler-version'];
143
182
  const selectedContract = await (0, build_1.selectContract)(ui, (0, Runner_1.extractFirstArg)(localArgs));
144
183
  const networkProvider = await (0, createNetworkProvider_1.createNetworkProvider)(ui, localArgs, context.config, false);
@@ -258,16 +297,19 @@ const verify = async (_args, ui, context) => {
258
297
  fd.append('json', new Blob([JSON.stringify(src)], {
259
298
  type: 'application/json',
260
299
  }), 'blob');
261
- const backends = await getBackends();
262
- const backend = backends[network];
263
- const sourceRegistry = networkProvider.open(new SourceRegistry(backend.sourceRegistry));
300
+ const verifierId = localArgs['--verifier'] ?? DEFAULT_VERIFIER_ID;
301
+ const sourceRegistryAddress = network === 'mainnet' ? MAINNET_VERIFIER_REGISTRY : TESTNET_VERIFIER_REGISTRY;
302
+ const sourceRegistry = networkProvider.open(new SourceRegistry(sourceRegistryAddress));
264
303
  const verifierRegistry = networkProvider.open(new VerifierRegistry(await sourceRegistry.getVerifierRegistry()));
265
- const verifier = (await verifierRegistry.getVerifiers()).find((v) => v.name === backend.id);
266
- if (verifier === undefined) {
267
- throw new Error('Could not find verifier');
304
+ const verifiers = await verifierRegistry.getVerifiers();
305
+ const verifier = verifiers.find((v) => v.name === verifierId);
306
+ if (!verifier) {
307
+ const availableVerifiers = verifiers.map((v) => v.name).join(', ');
308
+ throw new Error(`Verifier '${verifierId}' is not registered in the verifier registry. Available verifiers: ${availableVerifiers || 'none'}`);
268
309
  }
269
- const remainingBackends = [...backend.backends];
270
- const sourceResponse = await fetch(removeRandom(remainingBackends) + '/source', {
310
+ const backends = await getBackends(verifierId, network);
311
+ const backendUrl = removeRandom(backends);
312
+ const sourceResponse = await fetch(`${backendUrl}/source`, {
271
313
  method: 'POST',
272
314
  body: fd,
273
315
  });
@@ -281,9 +323,9 @@ const verify = async (_args, ui, context) => {
281
323
  let msgCell = sourceResult.msgCell;
282
324
  let acquiredSigs = 1;
283
325
  while (acquiredSigs < verifier.quorum) {
284
- const curBackend = removeRandom(remainingBackends);
285
- ui.write(`Using backend: ${curBackend}`);
286
- const signResponse = await fetch(curBackend + '/sign', {
326
+ const backendUrl = removeRandom(backends);
327
+ ui.write(`Using backend: ${backendUrl}`);
328
+ const signResponse = await fetch(`${backendUrl}/sign`, {
287
329
  method: 'POST',
288
330
  body: JSON.stringify({
289
331
  messageCell: msgCell,
@@ -303,6 +345,7 @@ const verify = async (_args, ui, context) => {
303
345
  value: (0, core_1.toNano)('0.5'),
304
346
  body: c,
305
347
  });
306
- ui.write(`Contract successfully verified at https://verifier.ton.org/${addr}`);
348
+ const testnetFlag = network === 'testnet' ? '?testnet=true' : '';
349
+ ui.write(`Contract successfully verified at https://verifier.ton.org/${addr}${testnetFlag}`);
307
350
  };
308
351
  exports.verify = verify;
@@ -17,6 +17,8 @@ export declare const argSpec: {
17
17
  '--tonviewer': BooleanConstructor;
18
18
  '--toncx': BooleanConstructor;
19
19
  '--dton': BooleanConstructor;
20
+ '--verifier': StringConstructor;
21
+ '--list-verifiers': BooleanConstructor;
20
22
  };
21
23
  export type Args = arg.Result<typeof argSpec>;
22
24
  export declare function createNetworkProvider(ui: UIProvider, args: Args, config?: Config, allowCustom?: boolean): Promise<NetworkProvider>;
@@ -37,6 +37,8 @@ exports.argSpec = {
37
37
  '--tonviewer': Boolean,
38
38
  '--toncx': Boolean,
39
39
  '--dton': Boolean,
40
+ '--verifier': String,
41
+ '--list-verifiers': Boolean,
40
42
  };
41
43
  class SendProviderSender {
42
44
  get lastSendResult() {
package/package.json CHANGED
@@ -1,71 +1,71 @@
1
1
  {
2
- "name": "@ton/blueprint",
3
- "version": "0.42.0",
4
- "description": "Framework for development of TON smart contracts",
5
- "main": "dist/index.js",
6
- "bin": "./dist/cli/cli.js",
7
- "author": "TonTech",
8
- "license": "MIT",
9
- "repository": {
10
- "type": "git",
11
- "url": "git+https://github.com/ton-org/blueprint.git"
12
- },
13
- "files": [
14
- "dist/**/*"
15
- ],
16
- "scripts": {
17
- "build": "rm -rf dist && tsc && cp -r src/templates dist/",
18
- "test": "jest src",
19
- "release": "yarn build && yarn publish --access public",
20
- "lint": "eslint . --max-warnings 0",
21
- "lint:fix": "eslint . --max-warnings 0 --fix"
22
- },
23
- "prettier": "@ton/toolchain/prettier",
24
- "devDependencies": {
25
- "@tact-lang/compiler": "^1.6.13",
26
- "@ton-community/func-js": "^0.10.0",
27
- "@ton/core": "^0.61.0",
28
- "@ton/crypto": "^3.3.0",
29
- "@ton/sandbox": "^0.40.0",
30
- "@ton/tolk-js": "^1.0.0",
31
- "@ton/ton": "^15.3.1",
32
- "@ton/toolchain": "the-ton-tech/toolchain#v1.6.0",
33
- "@types/inquirer": "^8.2.6",
34
- "@types/jest": "^30.0.0",
35
- "@types/node": "^20.2.5",
36
- "@types/qrcode-terminal": "^0.12.0",
37
- "eslint": "^9.28.0",
38
- "globals": "^16.4.0",
39
- "jest": "^30.0.5",
40
- "ts-jest": "^29.4.1",
41
- "typescript": "^5.8.3"
42
- },
43
- "peerDependencies": {
44
- "@tact-lang/compiler": ">=1.6.5",
45
- "@ton-community/func-js": ">=0.10.0",
46
- "@ton/core": ">=0.61.0",
47
- "@ton/crypto": ">=3.3.0",
48
- "@ton/sandbox": ">=0.40.0",
49
- "@ton/tolk-js": ">=0.13.0",
50
- "@ton/ton": ">=15.2.1"
51
- },
52
- "peerDependenciesMeta": {
53
- "@ton/sandbox": {
54
- "optional": true
55
- }
56
- },
57
- "dependencies": {
58
- "@ton-api/client": "^0.2.0",
59
- "@ton-api/ton-adapter": "^0.2.0",
60
- "@tonconnect/sdk": "^2.2.0",
61
- "arg": "^5.0.2",
62
- "axios": "^1.7.7",
63
- "chalk": "^4.1.0",
64
- "dotenv": "^16.1.4",
65
- "inquirer": "^8.2.5",
66
- "qrcode-terminal": "^0.12.0",
67
- "ton-lite-client": "^3.1.1",
68
- "ts-node": "^10.9.1"
69
- },
70
- "packageManager": "yarn@4.9.2"
71
- }
2
+ "name": "@ton/blueprint",
3
+ "version": "0.43.0",
4
+ "description": "Framework for development of TON smart contracts",
5
+ "main": "dist/index.js",
6
+ "bin": "./dist/cli/cli.js",
7
+ "author": "TonTech",
8
+ "license": "MIT",
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "git+https://github.com/ton-org/blueprint.git"
12
+ },
13
+ "files": [
14
+ "dist/**/*"
15
+ ],
16
+ "scripts": {
17
+ "build": "rm -rf dist && tsc && cp -r src/templates dist/",
18
+ "test": "jest src",
19
+ "release": "yarn build && yarn publish --access public",
20
+ "lint": "eslint . --max-warnings 0",
21
+ "lint:fix": "eslint . --max-warnings 0 --fix"
22
+ },
23
+ "prettier": "@ton/toolchain/prettier",
24
+ "devDependencies": {
25
+ "@tact-lang/compiler": "^1.6.13",
26
+ "@ton-community/func-js": "^0.10.0",
27
+ "@ton/core": "^0.61.0",
28
+ "@ton/crypto": "^3.3.0",
29
+ "@ton/sandbox": "^0.40.0",
30
+ "@ton/tolk-js": "^1.0.0",
31
+ "@ton/ton": "^15.3.1",
32
+ "@ton/toolchain": "the-ton-tech/toolchain#v1.6.0",
33
+ "@types/inquirer": "^8.2.6",
34
+ "@types/jest": "^30.0.0",
35
+ "@types/node": "^20.2.5",
36
+ "@types/qrcode-terminal": "^0.12.0",
37
+ "eslint": "^9.28.0",
38
+ "globals": "^16.4.0",
39
+ "jest": "^30.0.5",
40
+ "ts-jest": "^29.4.1",
41
+ "typescript": "^5.8.3"
42
+ },
43
+ "peerDependencies": {
44
+ "@tact-lang/compiler": ">=1.6.5",
45
+ "@ton-community/func-js": ">=0.10.0",
46
+ "@ton/core": ">=0.61.0",
47
+ "@ton/crypto": ">=3.3.0",
48
+ "@ton/sandbox": ">=0.40.0",
49
+ "@ton/tolk-js": ">=0.13.0",
50
+ "@ton/ton": ">=15.2.1"
51
+ },
52
+ "peerDependenciesMeta": {
53
+ "@ton/sandbox": {
54
+ "optional": true
55
+ }
56
+ },
57
+ "dependencies": {
58
+ "@ton-api/client": "^0.2.0",
59
+ "@ton-api/ton-adapter": "^0.2.0",
60
+ "@tonconnect/sdk": "^2.2.0",
61
+ "arg": "^5.0.2",
62
+ "axios": "^1.7.7",
63
+ "chalk": "^4.1.0",
64
+ "dotenv": "^16.1.4",
65
+ "inquirer": "^8.2.5",
66
+ "qrcode-terminal": "^0.12.0",
67
+ "ton-lite-client": "^3.1.1",
68
+ "ts-node": "^10.9.1"
69
+ },
70
+ "packageManager": "yarn@4.9.2"
71
+ }
package/CHANGELOG.md DELETED
@@ -1,535 +0,0 @@
1
- # Changelog
2
-
3
- All notable changes to this project will be documented in this file.
4
-
5
- The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
- and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
-
8
- ## [0.42.0] - 2025-12-04
9
-
10
- ### Added
11
-
12
- - Added `blueprint test --ui` command
13
-
14
- ### Changed
15
-
16
- - Changed `@ton/sandbox` peer dependency to `>=0.40.0`
17
-
18
- ## [0.41.0] - 2025-09-23
19
-
20
- ### Added
21
-
22
- - Added `blueprint test --coverage` command
23
-
24
- ### Changed
25
-
26
- - When creating a contract, if the input contract name is invalid, blueprint does not exit, but asks for the name again
27
-
28
- ## [0.40.0] - 2025-08-18
29
-
30
- ### Added
31
-
32
- - Added `libraryHash` and `libraryBoc` to the build result when building libraries
33
-
34
- ## [0.39.1] - 2025-08-05
35
-
36
- ### Added
37
-
38
- - Added `--compiler-version` flag to support precise version selection when verifying
39
-
40
- ## [0.39.0] - 2025-08-04
41
-
42
- ### Added
43
-
44
- - Added `buildLibrary` wrapper compile config and `compile` function option to convert the built code into a library
45
-
46
- ## [0.38.0] - 2025-07-07
47
-
48
- ### Fixed
49
-
50
- - Fixed contracts not compiling in subfolders
51
-
52
- ### Changed
53
-
54
- - Changed contracts templates positions in `create` command
55
- - Changed counter template to match Tolk v1.0
56
-
57
- ## [0.37.0] - 2025-06-26
58
-
59
- ### Added
60
-
61
- - Added debugger support
62
-
63
- ## [0.36.1] - 2025-06-17
64
-
65
- ### Fixed
66
-
67
- - Fixed contract creation on Windows
68
-
69
- ## [0.36.0] - 2025-06-16
70
-
71
- ### Added
72
-
73
- - Added `getConfig` and `getContractState` methods to network provider
74
- - Added `getNormalizedExtMessageHash` function
75
- - Added `NetworkProvider.waitForLastTransaction` method
76
-
77
- ### Fixed
78
-
79
- - Use `Dirent.parentPath` instead of `.path` which is deprecated
80
-
81
- ## [0.35.1] - 2025-06-13
82
-
83
- ### Fixed
84
-
85
- - Fixed Tolk counter template
86
-
87
- ## [0.35.0] - 2025-06-02
88
-
89
- ### Added
90
-
91
- - Added ton lite client network provider
92
- - Added tolk verifier
93
- - Wallet v4 extended support: added v4r1, v4 is treated as v4r2
94
- - Added possibility to specify custom `manifestUrl` in blueprint configuration
95
- - Added documentation about the [Tact plugin by TON Studio](https://plugins.jetbrains.com/plugin/27290-tact)
96
- - Added tolk v0.13 support
97
-
98
- ### Changed
99
-
100
- - Updated documentation about Tact wrappers
101
-
102
- ## [0.34.0] - 2025-05-20
103
-
104
- ### Added
105
-
106
- - Added config option to look for wrappers recursively
107
- - Exported `getCompilerConfigForContract` function for plugin support
108
- - Added request timout configuration
109
- - Added docs for script args
110
- - Added the `rename` command which renames contracts
111
- - Added the `pack` command which builds and prepares a publish-ready package of contracts' wrappers
112
- - Added support for wallet IDs in mnemonic provider. Environment variables `WALLET_ID` or `SUBWALLET_NUMBER` should be set, or a .env file with them must be present in order for it to be usable
113
- - Added command `blueprint snapshot` to run tests with metric collection and write new benchmark report
114
- - Added option `blueprint test --gas-report` to run tests and compare with the last snapshot metrics
115
-
116
- ### Fixed
117
-
118
- - Fix address format in testnet
119
-
120
- ### Changed
121
-
122
- - Updated FunC stdlib
123
-
124
- ## [0.33.1] - 2025-05-16
125
-
126
- ### Fixed
127
-
128
- - Fixed blueprint build command failure in Tact projects
129
-
130
- ## [0.33.0] - 2025-05-16
131
-
132
- ### Added
133
-
134
- - Added `tact.config.json` support
135
- - Added tolk v0.12 support
136
-
137
- ### Fixed
138
-
139
- - Fixed tact counter deploy script error
140
-
141
- ## [0.32.1] - 2025-05-06
142
-
143
- ### Fixed
144
-
145
- - Fix unexpected code duplication on parralel compile
146
-
147
- ## [0.32.0] - 2025-05-02
148
-
149
- ### Added
150
-
151
- - Compiler version is now shown during contract build
152
- - Added 'All Contracts' option to build wizard
153
- - Added function to build all tact contracts, required for rebuilding before tests
154
-
155
- ### Changed
156
-
157
- - Made error of non-PascalCase contract names nicer
158
-
159
- ### Fixed
160
-
161
- - `blueprint build --all` now exits with a non-zero exit code on failure
162
-
163
- ## [0.31.1] - 2025-04-24
164
-
165
- ### Fixed
166
-
167
- - Fixed build directory creation
168
-
169
- ## [0.31.0] - 2025-04-24
170
-
171
- ### Added
172
-
173
- - Added Fift output for FunC and Tolk build command
174
- - Added API reference in code
175
-
176
- ### Changed
177
-
178
- - Improved CLI appearance
179
-
180
- ## [0.30.0] - 2025-04-08
181
-
182
- ### Fixed
183
-
184
- - Fixed Tact compilation
185
-
186
- ### Changed
187
-
188
- - Updated Tact templates and `@tact-lang/compiler` dependency to v1.6.5
189
-
190
- ## [0.29.0] - 2025-03-02
191
-
192
- ### Changed
193
-
194
- - Tolk's stderr is now printed on successful builds
195
-
196
- ## [0.28.0] - 2025-01-17
197
-
198
- ### Changed
199
-
200
- - Moved compilers to peer dependencies, allowing end users to use their preferred versions of compilers
201
-
202
- ## [0.27.0] - 2024-12-18
203
-
204
- ### Changed
205
-
206
- - Updated `@ton-community/func-js` dependency to v0.9.0
207
-
208
- ## [0.26.0] - 2024-11-26
209
-
210
- ### Added
211
-
212
- - Added support for tonapi as an API provider
213
-
214
- ## [0.25.0] - 2024-11-02
215
-
216
- ### Added
217
-
218
- - Support for Tolk, "next-generation FunC", a new language for writing smart contracts in TON. [Tolk overview](https://docs.ton.org/develop/tolk/overview)
219
-
220
- ## [0.24.0] - 2024-09-16
221
-
222
- ### Added
223
-
224
- - Added support for wallet v5 in the Mnemonic provider
225
-
226
- ### Changed
227
-
228
- - Changed the default API provider to Toncenter v2 (instead of Orbs TON Access). Rate limited requests are automatically retried
229
- - Updated dependencies
230
-
231
- ### Removed
232
-
233
- - Removed the specialized TonHub connector. Use TON Connect instead
234
-
235
- ## [0.23.0] - 2024-09-11
236
-
237
- ### Changed
238
-
239
- - Toncenter v2 is now used by default instead of orbs access. Rate limited API requests are automatically retried
240
-
241
- ### Removed
242
-
243
- - Removed `@orbs-network/ton-access` dependency
244
-
245
- ## [0.22.0] - 2024-07-08
246
-
247
- ### Added
248
-
249
- - Added support for scripts in subdirectories, for example `scripts/counter/deploy.ts`
250
- - Added the ability to specify test files in `blueprint test` command, for example `blueprint test Counter`
251
-
252
- ### Changed
253
-
254
- - Separated compilables and wrappers
255
-
256
- ### Fixed
257
-
258
- - Fixed `code overflow` error when generating QR code for ton:// link
259
-
260
- ## [0.21.0] - 2024-05-27
261
-
262
- ### Changed
263
-
264
- - Changed `contract.tact.template` counter template to return remaining value from the message
265
- - Updated TON Connect manifest
266
-
267
- ## [0.20.0] - 2024-05-07
268
-
269
- ### Added
270
-
271
- - Added auto-sourcing of root `tact.config.json` files for merging compilation options with `wrappers/*.compile.ts`
272
- - Added a warning for disabling `debug` in contract wrappers of Tact before doing production deployments
273
-
274
- ### Changed
275
-
276
- - Changed `@tact-lang/compiler` dependency to be `^1.3.0` instead of `^1.2.0`
277
- - Changed `compile.ts.template` template for Tact to have `debug` set to `true` by default
278
- - Changed `contract.tact.template` empty template for Tact to mention implicit empty `init()` function
279
-
280
- ## [0.19.1] - 2024-04-12
281
-
282
- ### Fixed
283
-
284
- - Fixed `verify` command
285
-
286
- ### Changed
287
-
288
- - Updated readme to reflect the fact that blueprint no longer automatically adds `jsonRPC` to custom v2 endpoints
289
-
290
- ## [0.19.0] - 2024-03-27
291
-
292
- ### Changed
293
-
294
- - Updated dependencies: func-js to 0.7.0, tonconnect sdk to 2.2.0
295
-
296
- ## [0.18.0] - 2024-03-13
297
-
298
- ### Changed
299
-
300
- - Changed `@tact-lang/compiler` dependency to be `^1.2.0` instead of `^1.1.5`
301
- - Updated the Tact counter template to use the new `+=` operator from Tact v1.2.0
302
-
303
- ## [0.17.0] - 2024-03-01
304
-
305
- This release contains a breaking change.
306
-
307
- ### Changed
308
-
309
- - Blueprint no longer automatically adds `jsonRPC` to custom v2 endpoints
310
-
311
- ### Added
312
-
313
- - Added `set` command which can currently set func version (run `blueprint set func`)
314
- - Added `open` and `getTransactions` to `WrappedContractProvider`
315
- - Added cell hash to build artifacts
316
-
317
- ## [0.16.0] - 2024-02-15
318
-
319
- ### Added
320
-
321
- - Added the `network` entry to the global config, which allows one to specify a custom network to be used instead of having to add `--custom` flags on each run
322
- - Added the `convert` command which attempts to convert a legacy bash build script into a blueprint `.compile.ts` file
323
- - Added the ability to pass any user data into the compile hooks
324
-
325
- ### Changed
326
-
327
- - Improved the `verify` command
328
-
329
- ## [0.15.0] - 2023-12-15
330
-
331
- ### Added
332
-
333
- - Added flags `--custom-version`, `--custom-key`, `--custom-type` to `run` and `verify` commands to allow better control over custom API behavior
334
-
335
- ### Changed
336
-
337
- - `--custom` now always adds `jsonRPC` to API URL for v2 APIs
338
-
339
- ### Fixed
340
-
341
- - Fixed argument handling
342
-
343
- ## [0.14.2] - 2023-12-01
344
-
345
- ### Changed
346
-
347
- - Changed `@tact-lang/compiler` dependency to be `^1.1.5` instead of `^1.1.3`
348
-
349
- ## [0.14.1] - 2023-12-01
350
-
351
- ### Fixed
352
-
353
- - Fixed test templates (added missing imports)
354
-
355
- ## [0.14.0] - 2023-11-23
356
-
357
- ### Added
358
-
359
- - Added `verify` command to quickly verify contracts on [verifier.ton.org](https://verifier.ton.org)
360
-
361
- ## [0.13.0] - 2023-11-05
362
-
363
- ### Added
364
-
365
- - Added plugin support
366
- - Added custom API v2 endpoints
367
-
368
- ### Changed
369
-
370
- - Improved docs
371
- - Changed deployed contract explorer link to use tonviewer
372
- - Moved `deployer` to the global `describe` context in default tests
373
-
374
- ## [0.12.1] - 2023-07-31
375
-
376
- ### Changed
377
-
378
- - Updated all dependencies to @ton organization packages
379
-
380
- ## [0.12.0] - 2023-07-14
381
-
382
- ### Fixed
383
-
384
- - Fixed Tact imports
385
- - Fixed missing newlines when printing error messages while building contracts
386
-
387
- ## [0.11.0] - 2023-07-03
388
-
389
- ### Added
390
-
391
- - Added an `options` field to the `tact` variant of `CompilerConfig`, which is of the same type as the `options` of the Tact compiler, and includes fields such as `debug`, `experimental`, etc
392
-
393
- ### Changed
394
-
395
- - Updated Tact to 1.1.3
396
-
397
- ## [0.10.0] - 2023-06-06
398
-
399
- ### Added
400
-
401
- - Added two optional fields to the `CompilerConfig`: `preCompileHook?: () => Promise<void>` and `postCompileHook?: (code: Cell) => Promise<void>`. The former one gets called before any compilation of the respective contract happens, the latter one - after any compilation with the compiled code cell (they are called both during the `build` command and when calling the `compile` function for the respective contracts)
402
-
403
- ### Changed
404
-
405
- - Changed the `run` command to only show `.ts` scripts
406
-
407
- ## [0.9.0] - 2023-04-21
408
-
409
- ### Changed
410
-
411
- - Updated dependencies, of note: func-js to use func 0.4.3, Tact to 1.1.1
412
-
413
- ## [0.8.0] - 2023-04-07
414
-
415
- ### Changed
416
-
417
- - Changed the `help` command to contain significantly more detailed help for every command
418
- - Added the `success: true` requirement to every template test
419
- - Updated dependencies
420
-
421
- ## [0.7.0] - 2023-04-03
422
-
423
- This release contains a breaking change.
424
-
425
- ### Changed
426
-
427
- - Changed the return type of `networkProvider.api()` and the type used internally in `NetworkProvider` from `TonClient` to `TonClient4`. This is a breaking change
428
- - Updated dependencies
429
-
430
- ## [0.6.1] - 2023-03-27
431
-
432
- ### Changed
433
-
434
- - Changed `UIProvider.prompt` return type from `Promise<void>` to `Promise<boolean>`
435
-
436
- ## [0.6.0] - 2023-03-21
437
-
438
- ### Added
439
-
440
- - Added support for [Tact](https://github.com/tact-lang/tact), including Tact smart contract templates
441
- - Added `--all` option for `build` command
442
-
443
- ### Changed
444
-
445
- - Updated dependencies
446
-
447
- ## [0.5.0] - 2023-03-13
448
-
449
- ### Changed
450
-
451
- - `SendProvider` now returns `Promise<any>` instead of `Promise<void>` from `sendTransaction`. This allows providers using TON Connect and TonHub to return the results from their backends to the end user
452
-
453
- ## [0.4.1] - 2023-03-02
454
-
455
- ### Changed
456
-
457
- - Changed ton peer dependency version to `>=13.4.1`
458
-
459
- ## [0.4.0] - 2023-03-01
460
-
461
- This release contains a breaking change.
462
-
463
- ### Changed
464
-
465
- - Changed ton-core peer dependency version to `>=0.48.0`. This is a breaking change
466
-
467
- ### Added
468
-
469
- - Added a new mnemonic deployer. Environment variables `WALLET_MNEMONIC` and `WALLET_VERSION` must be set, or a .env file with them must be present in order for it to be usable. Tonkeeper's v4R2 wallet corresponds to v4 version in blueprint
470
- - Added the ability to choose the explorer for the deployed contracts. Pass one of the CLI flags `--tonscan`, `--tonapi`, `--toncx`, `--dton` to choose. Tonscan is the default
471
- - Added ton-crypto peer dependency of version `>=3.2.0`
472
-
473
- ### Fixed
474
-
475
- - Fixed TonHub deployer's `Sent transaction` message
476
- - Fixed `SendMode.PAY_GAS_SEPARATLY` (missing E) typo in accordance with ton-core update
477
- - Fixed a crash when using `blueprint run` with flags but no file name
478
-
479
- ## [0.3.0] - 2023-02-27
480
-
481
- ### Added
482
-
483
- - Added an increment counter script for the counter template
484
- - Added `isContractDeployed(address)` method to `NetworkProvider`
485
- - Added `waitForDeploy(address, attempts?, sleepDuration?)` method to `NetworkProvider`
486
-
487
- ### Fixed
488
-
489
- - Fixed exit code 1 on Windows even in case of successful execution
490
- - Fixed paths to `.fc` files in `.compile.ts` files on Windows
491
- - Fixed `TonConnectProvider` output
492
-
493
- ### Changed
494
-
495
- - Converted ```Deployer sender does not support `bounce` ``` error into a warning
496
- - Added an optional `init?: { code?: Cell; data?: Cell }` argument to `provider` method on `NetworkProvider`
497
- - `createNetworkProvider` now requires a `UIProvider`
498
- - Removed excessive comments from counter template contract
499
- - Changed deploy script templates to use `sendDeploy` and `waitForDeploy` instead of `deploy`
500
- - Refactored test templates to create `Blockchain` and deploy contract in `beforeEach`
501
- - Disabled file choice menu when there is only 1 file
502
-
503
- ### Deprecated
504
-
505
- - Deprecated `deploy` method on `NetworkProvider`. Users are advised to use self-implemented `sendDeploy` (or similar) methods on their `Contract` instances together with `isContractDeployed` or `waitForDeploy` on `NetworkProvider`
506
-
507
- ## [0.2.0] - 2023-02-09
508
-
509
- ### Added
510
-
511
- - Added `blueprint test` command
512
- - Added a pretty help message
513
- - Added a hint to indicate that contract names must be PascalCase, and a restriction that contract names must start with a capital letter
514
- - Added a better error message on an unknown command
515
-
516
- ### Fixed
517
-
518
- - Fixed counter templates
519
- - Fixed an issue where using `networkProvider.provider` and `networkProvider.open` would lead to `Deployer sender does not support "bounce"` message when trying to send internal messages
520
-
521
- ### Changed
522
-
523
- - `networkProvider.provider` and `networkProvider.open` now wrap `TonClient`'s `ContractProvider` instead of directly using it for better control over passed arguments
524
- - Removed unnecessary `await` keywords from all templates
525
-
526
- ## [0.1.0] - 2023-02-03
527
-
528
- ### Added
529
-
530
- - Added fully interactive and fully non-interactive modes for the `create` command
531
- - Added `input(message)` method to `UIProvider` and `InquirerUIProvider`
532
-
533
- ### Fixed
534
-
535
- - File selection (compilation files in `build` and scripts in `run`) now accepts CLI argument hints in any case