@layerzerolabs/common-utils-macros-stellar-contracts 0.2.122 → 0.2.124

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@layerzerolabs/common-utils-macros-stellar-contracts",
3
- "version": "0.2.122",
3
+ "version": "0.2.124",
4
4
  "private": false,
5
5
  "description": "Stellar common-utils procedural macros",
6
6
  "license": "MIT",
@@ -13,7 +13,7 @@
13
13
  "clippy.toml"
14
14
  ],
15
15
  "devDependencies": {
16
- "@layerzerolabs/vm-tooling-stellar": "0.2.122"
16
+ "@layerzerolabs/vm-tooling-stellar": "0.2.124"
17
17
  },
18
18
  "publishConfig": {
19
19
  "access": "public",
@@ -31,7 +31,9 @@
31
31
  "build": "pnpm exec lz-tool --script \"cargo build\" stellar",
32
32
  "clean": "rm -rf ./target ./node_modules",
33
33
  "format": "pnpm exec lz-tool --script \"cargo fmt\" stellar",
34
- "lint": "pnpm exec lz-tool --script \"cargo clippy -- -D warnings\" stellar",
34
+ "format:check": "pnpm exec lz-tool --script \"cargo fmt -- --check\" stellar",
35
+ "lint": "pnpm exec lz-tool --script \"cargo fmt -- --check && cargo clippy --all-targets -- -D warnings\" stellar",
36
+ "lint:fix": "pnpm exec lz-tool --script \"cargo clippy --all-targets --fix --allow-dirty --allow-staged && cargo fmt\" stellar",
35
37
  "test": "pnpm exec lz-tool --script \"cargo nextest run\" stellar"
36
38
  }
37
39
  }
package/rustfmt.toml CHANGED
@@ -1,15 +1,12 @@
1
- format_macro_bodies = true
1
+ # Only stable rustfmt options are kept here: the Stellar docker toolchain runs
2
+ # rustfmt on the stable channel (rust 1.90.0), which silently drops unstable
3
+ # options (they only apply on nightly). Do not re-add unstable options unless the
4
+ # tooling is switched to a pinned nightly (see the Solana packages for that setup).
2
5
  max_width = 120
3
- format_macro_matchers = true
4
- format_strings = true
5
- imports_granularity = "Crate"
6
- match_arm_blocks = false
7
- reorder_impl_items = true
8
- group_imports = "StdExternalCrate"
9
6
  use_field_init_shorthand = true
10
7
  use_small_heuristics = "Max"
11
- wrap_comments = true
12
- format_code_in_doc_comments = true
13
8
 
14
- # most of these are unstable, so we enable them
15
- unstable_features = true
9
+ # style_edition is a stable option honored by the docker toolchain. Pin it to
10
+ # 2021 to match every crate's `edition = "2021"` so formatting stays stable
11
+ # across rustfmt versions (setting it to 2024 would reformat the code).
12
+ style_edition = "2021"
@@ -213,6 +213,7 @@ fn test_contracttrait_with_ttl_rejects_non_trait_input() {
213
213
  // ============================================================================
214
214
 
215
215
  #[test]
216
+ #[allow(clippy::type_complexity)]
216
217
  fn test_contractimpl_with_ttl_adds_contractimpl_attribute_table_driven() {
217
218
  // (name, attr, input, expected_substrings, forbidden_substrings)
218
219
  let cases: Vec<(&str, TokenStream, TokenStream, Vec<&str>, Vec<&str>)> = vec![
@@ -254,6 +255,7 @@ fn test_contractimpl_with_ttl_adds_contractimpl_attribute_table_driven() {
254
255
  }
255
256
 
256
257
  #[test]
258
+ #[allow(clippy::type_complexity)]
257
259
  fn test_contracttrait_with_ttl_adds_contracttrait_attribute_table_driven() {
258
260
  // (name, attr, input, expected_substrings, forbidden_substrings)
259
261
  let cases: Vec<(&str, TokenStream, TokenStream, Vec<&str>, Vec<&str>)> = vec![
package/src/tests/rbac.rs CHANGED
@@ -91,7 +91,8 @@ fn test_role_check_inserts_expected_statements_table_driven() {
91
91
  args: quote! { caller, "minter" },
92
92
  input: quote! { pub fn mint(env: &Env, caller: Address, amount: i128) {} },
93
93
  require_auth: false,
94
- expected_ensure_stmt: "utils::rbac::ensure_role::<Self>(env,&soroban_sdk::Symbol::new(env,\"minter\"),&caller);",
94
+ expected_ensure_stmt:
95
+ "utils::rbac::ensure_role::<Self>(env,&soroban_sdk::Symbol::new(env,\"minter\"),&caller);",
95
96
  expected_auth_stmt: None,
96
97
  expected_stmt_count: 1,
97
98
  },
@@ -100,7 +101,8 @@ fn test_role_check_inserts_expected_statements_table_driven() {
100
101
  args: quote! { caller, "minter" },
101
102
  input: quote! { pub fn mint(env: Env, caller: Address, amount: i128) {} },
102
103
  require_auth: true,
103
- expected_ensure_stmt: "utils::rbac::ensure_role::<Self>(&env,&soroban_sdk::Symbol::new(&env,\"minter\"),&caller);",
104
+ expected_ensure_stmt:
105
+ "utils::rbac::ensure_role::<Self>(&env,&soroban_sdk::Symbol::new(&env,\"minter\"),&caller);",
104
106
  expected_auth_stmt: Some("caller.require_auth();"),
105
107
  expected_stmt_count: 2,
106
108
  },
@@ -109,7 +111,8 @@ fn test_role_check_inserts_expected_statements_table_driven() {
109
111
  args: quote! { caller, "minter" },
110
112
  input: quote! { pub fn mint(env: &Env, caller: Address, amount: i128) {} },
111
113
  require_auth: true,
112
- expected_ensure_stmt: "utils::rbac::ensure_role::<Self>(env,&soroban_sdk::Symbol::new(env,\"minter\"),&caller);",
114
+ expected_ensure_stmt:
115
+ "utils::rbac::ensure_role::<Self>(env,&soroban_sdk::Symbol::new(env,\"minter\"),&caller);",
113
116
  expected_auth_stmt: Some("caller.require_auth();"),
114
117
  expected_stmt_count: 2,
115
118
  },
@@ -118,7 +121,8 @@ fn test_role_check_inserts_expected_statements_table_driven() {
118
121
  args: quote! { account, "admin" },
119
122
  input: quote! { pub fn admin_action(env: Env, account: &Address) {} },
120
123
  require_auth: false,
121
- expected_ensure_stmt: "utils::rbac::ensure_role::<Self>(&env,&soroban_sdk::Symbol::new(&env,\"admin\"),account);",
124
+ expected_ensure_stmt:
125
+ "utils::rbac::ensure_role::<Self>(&env,&soroban_sdk::Symbol::new(&env,\"admin\"),account);",
122
126
  expected_auth_stmt: None,
123
127
  expected_stmt_count: 1,
124
128
  },
@@ -151,19 +155,22 @@ fn test_has_role_role_arg_variants_generate_expected_symbol_new_table_driven() {
151
155
  name: "role string literal passed to Symbol::new (Env ref)",
152
156
  args: quote! { caller, "minter" },
153
157
  input: quote! { pub fn mint(env: &Env, caller: Address) {} },
154
- expected_ensure_stmt: "utils::rbac::ensure_role::<Self>(env,&soroban_sdk::Symbol::new(env,\"minter\"),&caller);",
158
+ expected_ensure_stmt:
159
+ "utils::rbac::ensure_role::<Self>(env,&soroban_sdk::Symbol::new(env,\"minter\"),&caller);",
155
160
  },
156
161
  Case {
157
162
  name: "role const expr passed to Symbol::new (Env ref)",
158
163
  args: quote! { caller, MINTER_ROLE },
159
164
  input: quote! { pub fn mint(env: &Env, caller: Address) {} },
160
- expected_ensure_stmt: "utils::rbac::ensure_role::<Self>(env,&soroban_sdk::Symbol::new(env,MINTER_ROLE),&caller);",
165
+ expected_ensure_stmt:
166
+ "utils::rbac::ensure_role::<Self>(env,&soroban_sdk::Symbol::new(env,MINTER_ROLE),&caller);",
161
167
  },
162
168
  Case {
163
169
  name: "role const expr passed to Symbol::new (Env owned)",
164
170
  args: quote! { caller, MINTER_ROLE },
165
171
  input: quote! { pub fn mint(env: Env, caller: Address) {} },
166
- expected_ensure_stmt: "utils::rbac::ensure_role::<Self>(&env,&soroban_sdk::Symbol::new(&env,MINTER_ROLE),&caller);",
172
+ expected_ensure_stmt:
173
+ "utils::rbac::ensure_role::<Self>(&env,&soroban_sdk::Symbol::new(&env,MINTER_ROLE),&caller);",
167
174
  },
168
175
  Case {
169
176
  name: "role path expr passed to Symbol::new",
@@ -316,32 +323,38 @@ fn test_has_role_env_variants_generate_correct_env_ref_in_ensure_role() {
316
323
  Case {
317
324
  name: "owned Env",
318
325
  input: quote! { pub fn mint(env: Env, caller: Address) {} },
319
- expected_ensure_stmt: "utils::rbac::ensure_role::<Self>(&env,&soroban_sdk::Symbol::new(&env,\"minter\"),&caller);",
326
+ expected_ensure_stmt:
327
+ "utils::rbac::ensure_role::<Self>(&env,&soroban_sdk::Symbol::new(&env,\"minter\"),&caller);",
320
328
  },
321
329
  Case {
322
330
  name: "ref Env",
323
331
  input: quote! { pub fn mint(env: &Env, caller: Address) {} },
324
- expected_ensure_stmt: "utils::rbac::ensure_role::<Self>(env,&soroban_sdk::Symbol::new(env,\"minter\"),&caller);",
332
+ expected_ensure_stmt:
333
+ "utils::rbac::ensure_role::<Self>(env,&soroban_sdk::Symbol::new(env,\"minter\"),&caller);",
325
334
  },
326
335
  Case {
327
336
  name: "mut ref Env",
328
337
  input: quote! { pub fn mint(env: &mut Env, caller: Address) {} },
329
- expected_ensure_stmt: "utils::rbac::ensure_role::<Self>(env,&soroban_sdk::Symbol::new(env,\"minter\"),&caller);",
338
+ expected_ensure_stmt:
339
+ "utils::rbac::ensure_role::<Self>(env,&soroban_sdk::Symbol::new(env,\"minter\"),&caller);",
330
340
  },
331
341
  Case {
332
342
  name: "qualified owned Env",
333
343
  input: quote! { pub fn mint(env: soroban_sdk::Env, caller: Address) {} },
334
- expected_ensure_stmt: "utils::rbac::ensure_role::<Self>(&env,&soroban_sdk::Symbol::new(&env,\"minter\"),&caller);",
344
+ expected_ensure_stmt:
345
+ "utils::rbac::ensure_role::<Self>(&env,&soroban_sdk::Symbol::new(&env,\"minter\"),&caller);",
335
346
  },
336
347
  Case {
337
348
  name: "qualified ref Env",
338
349
  input: quote! { pub fn mint(env: &soroban_sdk::Env, caller: Address) {} },
339
- expected_ensure_stmt: "utils::rbac::ensure_role::<Self>(env,&soroban_sdk::Symbol::new(env,\"minter\"),&caller);",
350
+ expected_ensure_stmt:
351
+ "utils::rbac::ensure_role::<Self>(env,&soroban_sdk::Symbol::new(env,\"minter\"),&caller);",
340
352
  },
341
353
  Case {
342
354
  name: "leading :: qualified owned Env",
343
355
  input: quote! { pub fn mint(env: ::soroban_sdk::Env, caller: Address) {} },
344
- expected_ensure_stmt: "utils::rbac::ensure_role::<Self>(&env,&soroban_sdk::Symbol::new(&env,\"minter\"),&caller);",
356
+ expected_ensure_stmt:
357
+ "utils::rbac::ensure_role::<Self>(&env,&soroban_sdk::Symbol::new(&env,\"minter\"),&caller);",
345
358
  },
346
359
  ];
347
360
 
@@ -364,27 +377,32 @@ fn test_has_role_address_variants_generate_correct_param_reference() {
364
377
  Case {
365
378
  name: "Address by value -> &caller",
366
379
  input: quote! { pub fn mint(env: &Env, caller: Address) {} },
367
- expected_ensure_stmt: "utils::rbac::ensure_role::<Self>(env,&soroban_sdk::Symbol::new(env,\"minter\"),&caller);",
380
+ expected_ensure_stmt:
381
+ "utils::rbac::ensure_role::<Self>(env,&soroban_sdk::Symbol::new(env,\"minter\"),&caller);",
368
382
  },
369
383
  Case {
370
384
  name: "&Address -> caller",
371
385
  input: quote! { pub fn mint(env: &Env, caller: &Address) {} },
372
- expected_ensure_stmt: "utils::rbac::ensure_role::<Self>(env,&soroban_sdk::Symbol::new(env,\"minter\"),caller);",
386
+ expected_ensure_stmt:
387
+ "utils::rbac::ensure_role::<Self>(env,&soroban_sdk::Symbol::new(env,\"minter\"),caller);",
373
388
  },
374
389
  Case {
375
390
  name: "&mut Address -> caller",
376
391
  input: quote! { pub fn mint(env: &Env, caller: &mut Address) {} },
377
- expected_ensure_stmt: "utils::rbac::ensure_role::<Self>(env,&soroban_sdk::Symbol::new(env,\"minter\"),caller);",
392
+ expected_ensure_stmt:
393
+ "utils::rbac::ensure_role::<Self>(env,&soroban_sdk::Symbol::new(env,\"minter\"),caller);",
378
394
  },
379
395
  Case {
380
396
  name: "qualified Address by value",
381
397
  input: quote! { pub fn mint(env: &Env, caller: soroban_sdk::Address) {} },
382
- expected_ensure_stmt: "utils::rbac::ensure_role::<Self>(env,&soroban_sdk::Symbol::new(env,\"minter\"),&caller);",
398
+ expected_ensure_stmt:
399
+ "utils::rbac::ensure_role::<Self>(env,&soroban_sdk::Symbol::new(env,\"minter\"),&caller);",
383
400
  },
384
401
  Case {
385
402
  name: "qualified &Address",
386
403
  input: quote! { pub fn mint(env: &Env, caller: &soroban_sdk::Address) {} },
387
- expected_ensure_stmt: "utils::rbac::ensure_role::<Self>(env,&soroban_sdk::Symbol::new(env,\"minter\"),caller);",
404
+ expected_ensure_stmt:
405
+ "utils::rbac::ensure_role::<Self>(env,&soroban_sdk::Symbol::new(env,\"minter\"),caller);",
388
406
  },
389
407
  ];
390
408
 
@@ -470,7 +488,8 @@ fn test_authorizer_role_generates_auth_check_instead_of_ensure_role() {
470
488
  args: quote! { operator, AUTHORIZER },
471
489
  input: quote! { pub fn admin_action(env: &Env, operator: Address) {} },
472
490
  require_auth: false,
473
- expected_ensure_stmt: "utils::rbac::ensure_role::<Self>(env,&soroban_sdk::Symbol::new(env,AUTHORIZER),&operator);",
491
+ expected_ensure_stmt:
492
+ "utils::rbac::ensure_role::<Self>(env,&soroban_sdk::Symbol::new(env,AUTHORIZER),&operator);",
474
493
  expected_auth_stmt: None,
475
494
  expected_stmt_count: 1,
476
495
  },
@@ -479,7 +498,8 @@ fn test_authorizer_role_generates_auth_check_instead_of_ensure_role() {
479
498
  args: quote! { operator, AUTHORIZER },
480
499
  input: quote! { pub fn admin_action(env: Env, operator: Address) {} },
481
500
  require_auth: true,
482
- expected_ensure_stmt: "utils::rbac::ensure_role::<Self>(&env,&soroban_sdk::Symbol::new(&env,AUTHORIZER),&operator);",
501
+ expected_ensure_stmt:
502
+ "utils::rbac::ensure_role::<Self>(&env,&soroban_sdk::Symbol::new(&env,AUTHORIZER),&operator);",
483
503
  expected_auth_stmt: Some("operator.require_auth();"),
484
504
  expected_stmt_count: 2,
485
505
  },
@@ -488,7 +508,8 @@ fn test_authorizer_role_generates_auth_check_instead_of_ensure_role() {
488
508
  args: quote! { operator, AUTHORIZER },
489
509
  input: quote! { pub fn admin_action(env: &Env, operator: &Address) {} },
490
510
  require_auth: true,
491
- expected_ensure_stmt: "utils::rbac::ensure_role::<Self>(env,&soroban_sdk::Symbol::new(env,AUTHORIZER),operator);",
511
+ expected_ensure_stmt:
512
+ "utils::rbac::ensure_role::<Self>(env,&soroban_sdk::Symbol::new(env,AUTHORIZER),operator);",
492
513
  expected_auth_stmt: Some("operator.require_auth();"),
493
514
  expected_stmt_count: 2,
494
515
  },