@0xobelisk/sui-common 0.5.20 → 0.5.22

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/index.d.ts CHANGED
@@ -17,9 +17,9 @@ declare function formatAndWriteTypescript(output: string, fullOutputPath: string
17
17
  */
18
18
  declare function posixPath(path: string): string;
19
19
 
20
- type BaseType = "String" | "vector<String>" | "address" | "bool" | "u8" | "u32" | "u64" | "u128" | "vector<address>" | "vector<bool>" | "vector<u8>" | "vector<vector<u8>>" | "vector<u32>" | "vector<u64>" | "vector<u128>" | string;
21
- type StorageDataType = "Struct" | "Enum";
22
- type StorageMapType = "Map" | "Bag" | "Table";
20
+ type BaseType = 'String' | 'vector<String>' | 'address' | 'bool' | 'u8' | 'u32' | 'u64' | 'u128' | 'vector<address>' | 'vector<bool>' | 'vector<u8>' | 'vector<vector<u8>>' | 'vector<u32>' | 'vector<u64>' | 'vector<u128>' | string;
21
+ type StorageDataType = 'Struct' | 'Enum';
22
+ type StorageMapType = 'Map' | 'Bag' | 'Table';
23
23
  type Address = string;
24
24
  type Bool = boolean;
25
25
  type U8 = number;
@@ -42,9 +42,8 @@ type DubheConfig = {
42
42
  name: string;
43
43
  description: string;
44
44
  schemas: Record<string, SchemaType>;
45
- migration_enabled: boolean;
46
45
  };
47
- type MoveType = "string" | "vector<string>" | "String" | "vector<String>" | "address" | "bool" | "u8" | "u32" | "u64" | "u128" | "vector<address>" | "vector<bool>" | "vector<u8>" | "vector<vector<u8>>" | "vector<u32>" | "vector<u64>" | "vector<u128>";
46
+ type MoveType = 'string' | 'vector<string>' | 'String' | 'vector<String>' | 'address' | 'bool' | 'u8' | 'u32' | 'u64' | 'u128' | 'vector<address>' | 'vector<bool>' | 'vector<u8>' | 'vector<vector<u8>>' | 'vector<u32>' | 'vector<u64>' | 'vector<u128>';
48
47
 
49
48
  declare function schemaGen(config: DubheConfig, srcPrefix?: string, network?: 'mainnet' | 'testnet' | 'devnet' | 'localnet', frameworkId?: string): Promise<void>;
50
49
 
package/dist/index.js CHANGED
@@ -1,68 +1,67 @@
1
- import w from"prettier";import X from"prettier-plugin-move-js";async function T(e,t){let r;t&&(r=await w.resolveConfig(t));try{return w.format(e,{plugins:[X],parser:"move-parse",printWidth:120,semi:!0,tabWidth:2,useTabs:!1,bracketSpacing:!0,...r})}catch(o){let s;return o instanceof Error?s=o.message:s=o,console.log(`Error during output formatting: ${s}`),e}}async function M(e){return w.format(e,{parser:"typescript"})}import S from"node:fs/promises";import W from"node:path";import j from"debug";var _=j("dubhe:common"),Y=j("dubhe:common");_.log=console.debug.bind(console);Y.log=console.error.bind(console);var y=_.extend("codegen"),q=_.extend("codegen");y.log=console.debug.bind(console);q.log=console.error.bind(console);async function m(e,t,r){let o=await T(e),s=` // Copyright (c) Obelisk Labs, Inc.
1
+ import v from"prettier";import Z from"prettier-plugin-move-js";async function D(e,t){let o;t&&(o=await v.resolveConfig(t));try{return v.format(e,{plugins:[Z],parser:"move-parse",printWidth:120,semi:!0,tabWidth:2,useTabs:!1,bracketSpacing:!0,...o})}catch(r){let n;return r instanceof Error?n=r.message:n=r,console.log(`Error during output formatting: ${n}`),e}}async function T(e){return v.format(e,{parser:"typescript"})}import y from"node:fs/promises";import j from"node:path";import M from"debug";var b=M("dubhe:common"),X=M("dubhe:common");b.log=console.debug.bind(console);X.log=console.error.bind(console);var _=b.extend("codegen"),Y=b.extend("codegen");_.log=console.debug.bind(console);Y.log=console.error.bind(console);async function m(e,t,o){let r=await D(e),n=` // Copyright (c) Obelisk Labs, Inc.
2
2
  // SPDX-License-Identifier: MIT
3
3
  #[allow(unused_use)]
4
4
 
5
5
  /* Autogenerated file. Do not edit manually. */
6
6
 
7
- `,n=`#[allow(lint(share_owned))]
7
+ `,s=`#[allow(lint(share_owned))]
8
8
 
9
- `,p=s+o;t.includes(".toml")||t.includes("system")||t.includes("migrate")?p=o:t.includes("deploy_hook")&&(p=n+o),await S.mkdir(W.dirname(t),{recursive:!0}),await S.writeFile(t,p),y(`${r}: ${t}`)}async function ve(e,t,r){let o=await M(e);await S.mkdir(W.dirname(t),{recursive:!0}),await S.writeFile(t,o),y(`${r}: ${t}`)}function ke(e){return e.replace(/\\/g,"/")}import{existsSync as A}from"fs";import g from"fs";function k(e){g.existsSync(e)&&(g.readdirSync(e).forEach(t=>{let r=`${e}/${t}`;g.lstatSync(r).isDirectory()?k(r):g.unlinkSync(r)}),g.rmdirSync(e))}function f(e){return Object.entries(e).map(([t,r])=>`${t}`).join(",")}function G(e){return`(${Object.entries(e).map(([t,r])=>`${r}`)})`}function l(e){return Object.entries(e).map(([t,r])=>`${t}: ${r}`)}function R(e){return Object.entries(e).map(([t,r])=>`self.${t}`)}async function H(e,t,r){console.log(`
10
- \u{1F4C4} Starting Move.toml Generation...`),console.log(` \u2514\u2500 Output path: ${t}/contracts/${e.name}/Move.toml`);let o=`[package]
9
+ `,a=n+r;t.includes(".toml")||t.includes("system")||t.includes("migrate")?a=r:t.includes("deploy_hook")&&(a=s+r),await y.mkdir(j.dirname(t),{recursive:!0}),await y.writeFile(t,a),_(`${o}: ${t}`)}async function xe(e,t,o){let r=await T(e);await y.mkdir(j.dirname(t),{recursive:!0}),await y.writeFile(t,r),_(`${o}: ${t}`)}function we(e){return e.replace(/\\/g,"/")}import{existsSync as k}from"fs";import d from"fs";function w(e){d.existsSync(e)&&(d.readdirSync(e).forEach(t=>{let o=`${e}/${t}`;d.lstatSync(o).isDirectory()?w(o):d.unlinkSync(o)}),d.rmdirSync(e))}function g(e){return Object.entries(e).map(([t,o])=>`${t}`).join(",")}function W(e){return`(${Object.entries(e).map(([t,o])=>`${o}`)})`}function p(e){return Object.entries(e).map(([t,o])=>`${t}: ${o}`)}function G(e){return Object.entries(e).map(([t,o])=>`self.${t}`)}async function R(e,t,o){console.log(`
10
+ \u{1F4C4} Starting Move.toml Generation...`),console.log(` \u2514\u2500 Output path: ${t}/contracts/${e.name}/Move.toml`);let r=`[package]
11
11
  name = "${e.name}"
12
- version = "0.0.1"
13
- edition = "2024.beta"
12
+ version = "1.0.0"
13
+ edition = "2024"
14
14
 
15
15
  [dependencies]
16
- Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "mainnet-v1.36.2" }
17
- Dubhe = { git = "https://github.com/0xobelisk/dubhe-framework.git", rev = "release-dubhe-v1.0.0-rc1" }
16
+ Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "mainnet-v1.38.3" }
17
+ Dubhe = { git = "https://github.com/0xobelisk/dubhe-framework.git", rev = "dubhe-testnet-v1.0.0" }
18
18
 
19
19
  [addresses]
20
20
  sui = "0x2"
21
- dubhe = "${r}"
22
21
  ${e.name} = "0x0"
23
- `;await m(o,`${t}/contracts/${e.name}/Move.toml`,"formatAndWriteMove"),console.log(`\u2705 Move.toml Generation Complete
24
- `)}function u(e){return e.split("_").map((t,r)=>t.charAt(0).toUpperCase()+t.slice(1).toLowerCase()).join("")}function J(e,t){return Object.entries(t).map(([r,o])=>`public(package) fun set_${r}(self: &mut ${e}, ${r}: ${o}) {
25
- self.${r} = ${r};
22
+ `;await m(r,`${t}/contracts/${e.name}/Move.toml`,"formatAndWriteMove"),console.log(`\u2705 Move.toml Generation Complete
23
+ `)}function u(e){return e.split("_").map((t,o)=>t.charAt(0).toUpperCase()+t.slice(1).toLowerCase()).join("")}function q(e,t){return Object.entries(t).map(([o,r])=>`public(package) fun set_${o}(self: &mut ${e}, ${o}: ${r}) {
24
+ self.${o} = ${o};
26
25
  }`).join(`
27
- `)}function P(e,t){return`public(package) fun set(self: &mut ${e}, ${l(t)}) {
28
- ${Object.entries(t).map(([r])=>`self.${r} = ${r};`).join(`
26
+ `)}function J(e,t){return`public(package) fun set(self: &mut ${e}, ${p(t)}) {
27
+ ${Object.entries(t).map(([o])=>`self.${o} = ${o};`).join(`
29
28
  `)}
30
- }`}function ee(e,t){return`public fun get(self: &${e}): ${G(t)} {
31
- (${R(t)})
32
- }`}function te(e,t){return Object.entries(t).map(([r,o])=>`public fun get_${r}(self: &${e}): ${o} {
33
- self.${r}
29
+ }`}function P(e,t){return`public fun get(self: &${e}): ${W(t)} {
30
+ (${G(t)})
31
+ }`}function ee(e,t){return Object.entries(t).map(([o,r])=>`public fun get_${o}(self: &${e}): ${r} {
32
+ self.${o}
34
33
  }`).join(`
35
- `)}function d(e){return e.replace(/([A-Z])/g,"_$1").toLowerCase().replace(/^_/,"")}async function O(e,t,r){console.log(`
36
- \u{1F4E6} Starting Schema Data Generation...`);for(let o in t){let s=t[o];if(s.data){console.log(` \u251C\u2500 Processing schema: ${o}`);for(let n of s.data){console.log(` \u2514\u2500 Generating ${n.name} ${Array.isArray(n.fields)?"(enum)":"(struct)"}`);let p="",i=s.data.filter(a=>Array.isArray(a.fields)).map(a=>a.name);Array.isArray(n.fields)?p=`module ${e}::${o}_${d(n.name)} {
37
- public enum ${n.name} has copy, drop , store {
38
- ${n.fields}
34
+ `)}function l(e){return e.replace(/([A-Z])/g,"_$1").toLowerCase().replace(/^_/,"")}async function H(e,t,o){console.log(`
35
+ \u{1F4E6} Starting Schema Data Generation...`);for(let r in t){let n=t[r];if(n.data){console.log(` \u251C\u2500 Processing schema: ${r}`);for(let s of n.data){console.log(` \u2514\u2500 Generating ${s.name} ${Array.isArray(s.fields)?"(enum)":"(struct)"}`);let a="",c=n.data.filter(i=>Array.isArray(i.fields)).map(i=>i.name);Array.isArray(s.fields)?a=`module ${e}::${r}_${l(s.name)} {
36
+ public enum ${s.name} has copy, drop , store {
37
+ ${s.fields}
39
38
  }
40
39
 
41
- ${n.fields.map(a=>`public fun new_${d(a)}(): ${n.name} {
42
- ${n.name}::${a}
43
- }`).join("")}`:p=`module ${e}::${o}_${d(n.name)} {
40
+ ${s.fields.map(i=>`public fun new_${l(i)}(): ${s.name} {
41
+ ${s.name}::${i}
42
+ }`).join("")}`:a=`module ${e}::${r}_${l(s.name)} {
44
43
  use std::ascii::String;
45
- ${i.map(a=>`use ${e}::${o}_${d(a)}::${a};`).join(`
44
+ ${c.map(i=>`use ${e}::${r}_${l(i)}::${i};`).join(`
46
45
  `)}
47
46
 
48
- public struct ${n.name} has copy, drop , store {
49
- ${l(n.fields)}
47
+ public struct ${s.name} has copy, drop , store {
48
+ ${p(s.fields)}
50
49
  }
51
50
 
52
- public fun new(${l(n.fields)}): ${n.name} {
53
- ${n.name} {
54
- ${f(n.fields)}
51
+ public fun new(${p(s.fields)}): ${s.name} {
52
+ ${s.name} {
53
+ ${g(s.fields)}
55
54
  }
56
55
  }
57
56
 
58
- ${ee(n.name,n.fields)}
59
- ${te(n.name,n.fields)}
60
- ${J(n.name,n.fields)}
61
- ${P(n.name,n.fields)}
62
- }`,await m(p,`${r}/contracts/${e}/sources/codegen/schemas/${o}_${d(n.name)}.move`,"formatAndWriteMove")}}}console.log(`\u2705 Schema Data Generation Complete
63
- `)}function re(e,t,r){return r.data?r.data.map(o=>`use ${e}::${t}_${d(o.name)}::${o.name};`).join(`
64
- `):""}async function z(e,t,r,o){console.log(`
65
- \u{1F528} Starting Schema Structure Generation...`);for(let s in t){console.log(` \u251C\u2500 Generating schema: ${s}`),console.log(` \u251C\u2500 Output path: ${r}/contracts/${e}/sources/codegen/schemas/${s}.move`),console.log(` \u2514\u2500 Structure fields: ${Object.keys(t[s].structure).length}`);let n=t[s],p=`module ${e}::${s}_schema {
57
+ ${P(s.name,s.fields)}
58
+ ${ee(s.name,s.fields)}
59
+ ${q(s.name,s.fields)}
60
+ ${J(s.name,s.fields)}
61
+ }`,await m(a,`${o}/contracts/${e}/sources/codegen/schemas/${r}_${l(s.name)}.move`,"formatAndWriteMove")}}}console.log(`\u2705 Schema Data Generation Complete
62
+ `)}function te(e,t,o){return o.data?o.data.map(r=>`use ${e}::${t}_${l(r.name)}::${r.name};`).join(`
63
+ `):""}async function O(e,t,o){console.log(`
64
+ \u{1F528} Starting Schema Structure Generation...`);for(let r in t){console.log(` \u251C\u2500 Generating schema: ${r}`),console.log(` \u251C\u2500 Output path: ${o}/contracts/${e}/sources/codegen/schemas/${r}.move`),console.log(` \u2514\u2500 Structure fields: ${Object.keys(t[r].structure).length}`);let n=t[r],s=`module ${e}::${r}_schema {
66
65
  use std::ascii::String;
67
66
  use std::ascii::string;
68
67
  use sui::package::UpgradeCap;
@@ -75,67 +74,72 @@ ${e.name} = "0x0"
75
74
  use dubhe::storage_double_map::{Self, StorageDoubleMap};
76
75
  use ${e}::dapp_key::DappKey;
77
76
  use sui::dynamic_field as df;
78
- ${re(e,s,n)}
77
+ ${te(e,r,n)}
79
78
 
80
- public struct ${u(s)} has key, store {
79
+ public struct ${u(r)} has key, store {
81
80
  id: UID
82
81
  }
83
82
 
84
- ${Object.entries(n.structure).map(([i,a])=>`public fun borrow_${i}(self: &${u(s)}) : &${a} {
85
- storage_migrate::borrow_field(&self.id, b"${i}")
83
+ ${Object.entries(n.structure).map(([a,c])=>`public fun borrow_${a}(self: &${u(r)}) : &${c} {
84
+ storage_migrate::borrow_field(&self.id, b"${a}")
86
85
  }
87
86
 
88
- public(package) fun borrow_mut_${i}(self: &mut ${u(s)}): &mut ${a} {
89
- storage_migrate::borrow_mut_field(&mut self.id, b"${i}")
87
+ public(package) fun borrow_mut_${a}(self: &mut ${u(r)}): &mut ${c} {
88
+ storage_migrate::borrow_mut_field(&mut self.id, b"${a}")
90
89
  }
91
90
  `).join("")}
92
91
 
93
92
 
94
- public(package) fun create(ctx: &mut TxContext): ${u(s)} {
93
+ public(package) fun create(ctx: &mut TxContext): ${u(r)} {
95
94
  let mut id = object::new(ctx);
96
- ${Object.entries(n.structure).map(([i,a])=>{let c="";return a.includes("StorageValue")?c="storage_value::new()":a.includes("StorageMap")?c="storage_map::new()":a.includes("StorageDoubleMap")&&(c="storage_double_map::new()"),`storage_migrate::add_field<${a}>(&mut id, b"${i}", ${c});`}).join("")}
95
+ ${Object.entries(n.structure).map(([a,c])=>{let i="";return c.includes("StorageValue")?i="storage_value::new()":c.includes("StorageMap")?i="storage_map::new()":c.includes("StorageDoubleMap")&&(i="storage_double_map::new()"),`storage_migrate::add_field<${c}>(&mut id, b"${a}", ${i});`}).join("")}
97
96
 
98
- ${u(s)} { id }
97
+ ${u(r)} { id }
99
98
  }
100
99
 
101
- ${o?`public fun migrate(_${s}: &mut ${u(s)}, _cap: &UpgradeCap) { }`:""}
100
+ public fun migrate(_${r}: &mut ${u(r)}, _cap: &UpgradeCap) { }
101
+
102
102
 
103
103
 
104
104
  // ======================================== View Functions ========================================
105
- ${Object.entries(n.structure).map(([i,a])=>{let c=a.match(/<(.+)>/)[1].split(",").map(Z=>Z.trim()),$=[],h="",b="",v="";return a.includes("StorageValue")?($=[],h=`${c[0]}`,b="try_get()"):a.includes("StorageMap")?($=[`key: ${c[0]}`],h=`${c[1]}`,b="try_get(key)",v=`public fun get_${i}_keys(self: &${u(s)}) : vector<${c[0]}> {
106
- self.borrow_${i}().keys()
105
+ ${Object.entries(n.structure).map(([a,c])=>{let i=c.match(/<(.+)>/)[1].split(",").map(Q=>Q.trim()),f=[],$="",h="",x="";return c.includes("StorageValue")?(f=[],$=`${i[0]}`,h="try_get()"):c.includes("StorageMap")?(f=[`key: ${i[0]}`],$=`${i[1]}`,h="try_get(key)",x=`public fun get_${a}_keys(self: &${u(r)}) : vector<${i[0]}> {
106
+ self.borrow_${a}().keys()
107
107
  }
108
108
 
109
- public fun get_${i}_values(self: &${u(s)}) : vector<${c[1]}> {
110
- self.borrow_${i}().values()
111
- }`):a.includes("StorageDoubleMap")&&($=[`key1: ${c[0]}`,`key2: ${c[1]}`],h=`${c[2]}`,b="try_get(key1, key2)",v=`public fun get_${i}_keys(self: &${u(s)}) : (vector<${c[0]}>, vector<${c[1]}>) {
112
- self.borrow_${i}().keys()
109
+ public fun get_${a}_values(self: &${u(r)}) : vector<${i[1]}> {
110
+ self.borrow_${a}().values()
111
+ }`):c.includes("StorageDoubleMap")&&(f=[`key1: ${i[0]}`,`key2: ${i[1]}`],$=`${i[2]}`,h="try_get(key1, key2)",x=`public fun get_${a}_keys(self: &${u(r)}) : (vector<${i[0]}>, vector<${i[1]}>) {
112
+ self.borrow_${a}().keys()
113
113
  }
114
114
 
115
- public fun get_${i}_values(self: &${u(s)}) : vector<${c[2]}> {
116
- self.borrow_${i}().values()
117
- }`),`public fun get_${i}(self: &${u(s)}, ${$}) : Option<${h}> {
118
- self.borrow_${i}().${b}
115
+ public fun get_${a}_values(self: &${u(r)}) : vector<${i[2]}> {
116
+ self.borrow_${a}().values()
117
+ }`),`public fun get_${a}(self: &${u(r)}, ${f}) : Option<${$}> {
118
+ self.borrow_${a}().${h}
119
119
  }
120
- `+v}).join("")}
120
+ `+x}).join("")}
121
121
  // =========================================================================================================
122
122
 
123
123
 
124
- }`;await m(p,`${r}/contracts/${e}/sources/codegen/schemas/${s}.move`,"formatAndWriteMove")}console.log(`\u2705 Schema Structure Generation Complete
125
- `)}import{existsSync as E}from"fs";async function U(e,t){if(console.log(`
126
- \u{1F4DD} Starting Deploy Hook Generation...`),console.log(` \u2514\u2500 Output path: ${t}/contracts/${e.name}/sources/script/deploy_hook.move`),!E(`${t}/contracts/${e.name}/sources/script/deploy_hook.move`)){let r=`module ${e.name}::deploy_hook {
124
+ }`;await m(s,`${o}/contracts/${e}/sources/codegen/schemas/${r}.move`,"formatAndWriteMove")}console.log(`\u2705 Schema Structure Generation Complete
125
+ `)}import{existsSync as U}from"fs";async function z(e,t){if(console.log(`
126
+ \u{1F4DD} Starting Deploy Hook Generation...`),console.log(` \u2514\u2500 Output path: ${t}/contracts/${e.name}/sources/scripts/deploy_hook.move`),!U(`${t}/contracts/${e.name}/sources/scripts/deploy_hook.move`)){let o=`module ${e.name}::deploy_hook {
127
127
  use dubhe::dapps_schema::Dapps;
128
128
  use dubhe::dapps_system;
129
129
  use ${e.name}::schema_hub::SchemaHub;
130
130
  use std::ascii::string;
131
131
  use sui::clock::Clock;
132
+ use sui::sui::SUI;
133
+ use sui::coin::Coin;
132
134
  use sui::package::UpgradeCap;
133
135
  use sui::transfer::public_share_object;
134
- ${Object.keys(e.schemas).map(o=>`use ${e.name}::${o}_schema::${u(o)};`).join(`
136
+ ${Object.keys(e.schemas).map(r=>`use ${e.name}::${r}_schema::${u(r)};`).join(`
135
137
  `)}
136
138
  #[test_only]
137
139
  use sui::clock;
138
140
  #[test_only]
141
+ use sui::coin;
142
+ #[test_only]
139
143
  use sui::test_scenario;
140
144
  #[test_only]
141
145
  use sui::package;
@@ -146,11 +150,11 @@ ${e.name} = "0x0"
146
150
  #[test_only]
147
151
  use sui::test_scenario::Scenario;
148
152
 
149
- public entry fun run(schema_hub: &mut SchemaHub, dapps: &mut Dapps, cap: &UpgradeCap, clock: &Clock, ctx: &mut TxContext) {
153
+ public entry fun run(schema_hub: &mut SchemaHub, dapps: &mut Dapps, cap: &UpgradeCap, clock: &Clock, coin: Coin<SUI>, ctx: &mut TxContext) {
150
154
  // Register the dapp to dubhe.
151
- dapps_system::register(dapps,cap,string(b"${e.name}"),string(b"${e.description}"),clock,ctx);
155
+ dapps_system::register(dapps,cap,string(b"${e.name}"),string(b"${e.description}"),clock,coin,ctx);
152
156
  // Create schemas
153
- ${Object.keys(e.schemas).map(o=>`let ${o} = ${e.name}::${o}_schema::create(ctx);`).join(`
157
+ ${Object.keys(e.schemas).map(r=>`let ${r} = ${e.name}::${r}_schema::create(ctx);`).join(`
154
158
  `)}
155
159
  // Logic that needs to be automated once the contract is deployed
156
160
 
@@ -159,9 +163,9 @@ ${e.name} = "0x0"
159
163
 
160
164
 
161
165
  // Authorize schemas and public share objects
162
- ${Object.keys(e.schemas).map(o=>`
163
- schema_hub.authorize_schema<${u(o)}>();
164
- public_share_object(${o});
166
+ ${Object.keys(e.schemas).map(r=>`
167
+ schema_hub.authorize_schema<${u(r)}>();
168
+ public_share_object(${r});
165
169
  `).join(`
166
170
  `)}
167
171
  }
@@ -180,7 +184,8 @@ ${e.name} = "0x0"
180
184
  let ctx = test_scenario::ctx(&mut scenario);
181
185
  let clock = clock::create_for_testing(ctx);
182
186
  let upgrade_cap = package::test_publish(@0x42.to_id(), ctx);
183
- run(&mut schema_hub, &mut dapps, &upgrade_cap, &clock, ctx);
187
+ let coin = coin::mint_for_testing<SUI>(1_000_000_000, ctx);
188
+ run(&mut schema_hub, &mut dapps, &upgrade_cap, &clock, coin, ctx);
184
189
 
185
190
  clock::destroy_for_testing(clock);
186
191
  upgrade_cap.make_immutable();
@@ -188,16 +193,16 @@ ${e.name} = "0x0"
188
193
  (scenario, schema_hub, dapps)
189
194
  }
190
195
  }
191
- `;await m(r,`${t}/contracts/${e.name}/sources/script/deploy_hook.move`,"formatAndWriteMove")}console.log(`\u2705 Deploy Hook Generation Complete
192
- `)}async function F(e,t){if(!E(`${t}/contracts/${e.name}/sources/script/migrate.move`)){let r=`module ${e.name}::migrate {
196
+ `;await m(o,`${t}/contracts/${e.name}/sources/scripts/deploy_hook.move`,"formatAndWriteMove")}console.log(`\u2705 Deploy Hook Generation Complete
197
+ `)}async function E(e,t){if(!U(`${t}/contracts/${e.name}/sources/scripts/migrate.move`)){let o=`module ${e.name}::migrate {
193
198
  const ON_CHAIN_VERSION: u32 = 0;
194
199
 
195
200
  public fun on_chain_version(): u32 {
196
201
  ON_CHAIN_VERSION
197
202
  }
198
203
  }
199
- `;await m(r,`${t}/contracts/${e.name}/sources/script/migrate.move`,"formatAndWriteMove")}}async function L(e,t){console.log(`
200
- \u{1F511} Starting DappKey Generation...`),console.log(` \u2514\u2500 Output path: ${t}/contracts/${e.name}/sources/codegen/dapp_key.move`);let r=`module ${e.name}::dapp_key {
204
+ `;await m(o,`${t}/contracts/${e.name}/sources/scripts/migrate.move`,"formatAndWriteMove")}}async function F(e,t){console.log(`
205
+ \u{1F511} Starting DappKey Generation...`),console.log(` \u2514\u2500 Output path: ${t}/contracts/${e.name}/sources/codegen/dapp_key.move`);let o=`module ${e.name}::dapp_key {
201
206
  /// Authorization token for the app.
202
207
  public struct DappKey has drop {}
203
208
 
@@ -205,30 +210,30 @@ ${e.name} = "0x0"
205
210
  DappKey { }
206
211
  }
207
212
  }
208
- `;await m(r,`${t}/contracts/${e.name}/sources/codegen/dapp_key.move`,"formatAndWriteMove"),console.log(`\u2705 DappKey Generation Complete
209
- `)}function I(e){return e.replace(/([A-Z])/g,"_$1").toLowerCase().replace(/^_/,"")}async function K(e,t,r){console.log(`
210
- \u{1F4E6} Starting Schema Event Generation...`);for(let o in t){let s=t[o];if(s.events){console.log(` \u251C\u2500 Processing schema: ${o}`);for(let n of s.events){console.log(` \u2514\u2500 Generating ${n.name} ${Array.isArray(n.fields)?"(enum)":"(struct)"}`);let p=`module ${e}::${o}_${I(n.name)}_event {
213
+ `;await m(o,`${t}/contracts/${e.name}/sources/codegen/dapp_key.move`,"formatAndWriteMove"),console.log(`\u2705 DappKey Generation Complete
214
+ `)}function I(e){return e.replace(/([A-Z])/g,"_$1").toLowerCase().replace(/^_/,"")}async function L(e,t,o){console.log(`
215
+ \u{1F4E6} Starting Schema Event Generation...`);for(let r in t){let n=t[r];if(n.events){console.log(` \u251C\u2500 Processing schema: ${r}`);for(let s of n.events){console.log(` \u2514\u2500 Generating ${s.name} ${Array.isArray(s.fields)?"(enum)":"(struct)"}`);let a=`module ${e}::${r}_${I(s.name)}_event {
211
216
  use sui::event;
212
217
  use std::ascii::String;
213
- public struct ${n.name}Event has copy, drop {
214
- ${l(n.fields)}
218
+ public struct ${s.name}Event has copy, drop {
219
+ ${p(s.fields)}
215
220
  }
216
221
 
217
- public fun new(${l(n.fields)}): ${n.name}Event {
218
- ${n.name}Event {
219
- ${f(n.fields)}
222
+ public fun new(${p(s.fields)}): ${s.name}Event {
223
+ ${s.name}Event {
224
+ ${g(s.fields)}
220
225
  }
221
226
  }
222
227
 
223
- public fun emit(${l(n.fields)}) {
224
- event::emit(${n.name}Event {
225
- ${f(n.fields)}
228
+ public fun emit(${p(s.fields)}) {
229
+ event::emit(${s.name}Event {
230
+ ${g(s.fields)}
226
231
  });
227
- }`;await m(p,`${r}/contracts/${e}/sources/codegen/events/${o}_${I(n.name)}_event.move`,"formatAndWriteMove")}}}console.log(`\u2705 Schema Event Generation Complete
228
- `)}import{existsSync as oe}from"fs";import se from"node:fs/promises";async function B(e,t){console.log(`
229
- \u2699\uFE0F Starting System Generation...`),console.log(" \u251C\u2500 Generating systems"),console.log(` \u2514\u2500 Output path: ${t}/contracts/${e.name}/sources/systems`),oe(`${t}/contracts/${e.name}/sources/systems`)||await se.mkdir(`${t}/contracts/${e.name}/sources/systems`,{recursive:!0}),console.log(`\u2705 System Generation Complete
230
- `)}async function V(e,t){console.log(`
231
- \u{1F511} Starting DappKey Generation...`),console.log(` \u2514\u2500 Output path: ${t}/contracts/${e.name}/sources/codegen/schema_hub.move`);let r=`module ${e.name}::schema_hub {
232
+ }`;await m(a,`${o}/contracts/${e}/sources/codegen/events/${r}_${I(s.name)}_event.move`,"formatAndWriteMove")}}}console.log(`\u2705 Schema Event Generation Complete
233
+ `)}import{existsSync as re}from"fs";import oe from"node:fs/promises";async function K(e,t){console.log(`
234
+ \u2699\uFE0F Starting System Generation...`),console.log(" \u251C\u2500 Generating systems"),console.log(` \u2514\u2500 Output path: ${t}/contracts/${e.name}/sources/systems`),re(`${t}/contracts/${e.name}/sources/systems`)||await oe.mkdir(`${t}/contracts/${e.name}/sources/systems`,{recursive:!0}),console.log(`\u2705 System Generation Complete
235
+ `)}async function B(e,t){console.log(`
236
+ \u{1F511} Starting DappKey Generation...`),console.log(` \u2514\u2500 Output path: ${t}/contracts/${e.name}/sources/codegen/schema_hub.move`);let o=`module ${e.name}::schema_hub {
232
237
  use sui::transfer::public_share_object;
233
238
  use sui::dynamic_field as df;
234
239
 
@@ -273,9 +278,9 @@ ${e.name} = "0x0"
273
278
  init(ctx);
274
279
  }
275
280
  }
276
- `;await m(r,`${t}/contracts/${e.name}/sources/codegen/schema_hub.move`,"formatAndWriteMove"),console.log(`\u2705 DappKey Generation Complete
277
- `)}function N(e){switch(e){case"testnet":return"0x417ad1864a56a29ad0b5aaddd2e11bac1eeab6a68883ef53184a4cc5c293fec6";case"localnet":return"0x417ad1864a56a29ad0b5aaddd2e11bac1eeab6a68883ef53184a4cc5c293fec6";default:return"0x417ad1864a56a29ad0b5aaddd2e11bac1eeab6a68883ef53184a4cc5c293fec6"}}async function at(e,t,r,o){console.log(`
278
- \u{1F680} Starting Schema Generation Process...`),console.log("\u{1F4CB} Project Configuration:"),console.log(` \u251C\u2500 Name: ${e.name}`),console.log(` \u251C\u2500 Description: ${e.description||"No description provided"}`),console.log(` \u251C\u2500 Network: ${r||"testnet"}`),console.log(` \u2514\u2500 Framework ID: ${o||N(r??"testnet")}
279
- `);let s=t??process.cwd();o=o||N(r??"testnet"),A(`${s}/contracts/${e.name}`)&&k(`${s}/contracts/${e.name}/sources/codegen`),A(`${s}/contracts/${e.name}/Move.toml`)||await H(e,s,o),A(`${s}/contracts/${e.name}/sources/script/deploy_hook.move`)||await U(e,s),await O(e.name,e.schemas,s),await z(e.name,e.schemas,s,e.migration_enabled),await K(e.name,e.schemas,s),await L(e,s),await V(e,s),await B(e,s),e.migration_enabled&&await F(e,s),console.log(`\u2705 Schema Generation Process Complete!
280
- `)}import{findUp as ne}from"find-up";import C from"path";import ae from"esbuild";var x=class extends Error{name="NotInsideProjectError";message="You are not inside a Dubhe project"};import{rmSync as ie}from"fs";import{pathToFileURL as ce}from"url";import me from"os";var ue=["dubhe.config.js","dubhe.config.mjs","dubhe.config.ts","dubhe.config.mts"],D="dubhe.config.example.mjs";async function $t(e){e=await Q(e);try{return await ae.build({entryPoints:[e],format:"esm",outfile:D,platform:"node",bundle:!0,packages:"external"}),e=await Q(D,!0),(await import(e+`?update=${Date.now()}`)).dubheConfig}finally{ie(D,{force:!0})}}async function Q(e,t){return e===void 0?e=await pe():C.isAbsolute(e)||(e=C.join(process.cwd(),e),e=C.normalize(e)),t&&me.platform()==="win32"?ce(e).href:e}async function pe(){let e=await ne(ue);if(e===void 0)throw new x;return e}export{m as formatAndWriteMove,ve as formatAndWriteTypescript,T as formatMove,M as formatTypescript,$t as loadConfig,ke as posixPath,Q as resolveConfigPath,at as schemaGen};
281
+ `;await m(o,`${t}/contracts/${e.name}/sources/codegen/schema_hub.move`,"formatAndWriteMove"),console.log(`\u2705 DappKey Generation Complete
282
+ `)}function V(e){switch(e){case"testnet":return"0x417ad1864a56a29ad0b5aaddd2e11bac1eeab6a68883ef53184a4cc5c293fec6";case"localnet":return"0x417ad1864a56a29ad0b5aaddd2e11bac1eeab6a68883ef53184a4cc5c293fec6";default:return"0x417ad1864a56a29ad0b5aaddd2e11bac1eeab6a68883ef53184a4cc5c293fec6"}}async function nt(e,t,o,r){console.log(`
283
+ \u{1F680} Starting Schema Generation Process...`),console.log("\u{1F4CB} Project Configuration:"),console.log(` \u251C\u2500 Name: ${e.name}`),console.log(` \u251C\u2500 Description: ${e.description||"No description provided"}`),console.log(` \u251C\u2500 Network: ${o||"testnet"}`),console.log(` \u2514\u2500 Framework ID: ${r||V(o??"testnet")}
284
+ `);let n=t??process.cwd();r=r||V(o??"testnet"),k(`${n}/contracts/${e.name}`)&&w(`${n}/contracts/${e.name}/sources/codegen`),k(`${n}/contracts/${e.name}/Move.toml`)||await R(e,n,r),k(`${n}/contracts/${e.name}/sources/script/deploy_hook.move`)||await z(e,n),await H(e.name,e.schemas,n),await O(e.name,e.schemas,n),await L(e.name,e.schemas,n),await F(e,n),await B(e,n),await K(e,n),await E(e,n),console.log(`\u2705 Schema Generation Process Complete!
285
+ `)}import{findUp as se}from"find-up";import A from"path";import ne from"esbuild";var S=class extends Error{name="NotInsideProjectError";message="You are not inside a Dubhe project"};import{rmSync as ae}from"fs";import{pathToFileURL as ie}from"url";import ce from"os";var me=["dubhe.config.js","dubhe.config.mjs","dubhe.config.ts","dubhe.config.mts"],C="dubhe.config.example.mjs";async function ft(e){e=await N(e);try{return await ne.build({entryPoints:[e],format:"esm",outfile:C,platform:"node",bundle:!0,packages:"external"}),e=await N(C,!0),(await import(e+`?update=${Date.now()}`)).dubheConfig}finally{ae(C,{force:!0})}}async function N(e,t){return e===void 0?e=await ue():A.isAbsolute(e)||(e=A.join(process.cwd(),e),e=A.normalize(e)),t&&ce.platform()==="win32"?ie(e).href:e}async function ue(){let e=await se(me);if(e===void 0)throw new S;return e}export{m as formatAndWriteMove,xe as formatAndWriteTypescript,D as formatMove,T as formatTypescript,ft as loadConfig,we as posixPath,N as resolveConfigPath,nt as schemaGen};
281
286
  //# sourceMappingURL=index.js.map