@0xobelisk/sui-common 1.2.0-pre.112 → 1.2.0-pre.115

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
@@ -1,21 +1,6 @@
1
1
  declare function formatMove(content: string, prettierConfigPath?: string): Promise<string>;
2
- declare function formatTypescript(content: string): Promise<string>;
3
2
 
4
3
  declare function formatAndWriteMove(output: string, fullOutputPath: string, logPrefix?: string): Promise<void>;
5
- /**
6
- * Formats typescript code using prettier and write it to a file
7
- * @param output typescript code
8
- * @param fullOutputPath full path to the output file
9
- * @param logPrefix prefix for debug logs
10
- */
11
- declare function formatAndWriteTypescript(output: string, fullOutputPath: string, logPrefix: string): Promise<void>;
12
-
13
- /**
14
- * Explicitly normalize a given path to a posix path (using `/` as separator).
15
- * This should be used for generating Solidity files that will be consumed by solc,
16
- * because solc expects `/` as path separator, but path.join produces `\` if the user is on windows.
17
- */
18
- declare function posixPath(path: string): string;
19
4
 
20
5
  type ComponentType = 'Onchain' | 'Offchain';
21
6
  type MoveType = 'address' | 'bool' | 'u8' | 'u32' | 'u64' | 'u128' | 'u256' | 'String' | 'vector<address>' | 'vector<bool>' | 'vector<u8>' | 'vector<vector<u8>>' | 'vector<u32>' | 'vector<u64>' | 'vector<u128>' | 'vector<u256>' | string;
@@ -47,9 +32,6 @@ declare function schemaGen(rootDir: string, config: DubheConfig, network?: 'main
47
32
  declare const defineConfig: (config: DubheConfig) => DubheConfig;
48
33
 
49
34
  declare function loadConfig(configPath?: string): Promise<unknown>;
50
- declare function resolveConfigPath(configPath: string | undefined, toFileURL?: boolean): Promise<string>;
51
-
52
- declare const parseData: (data: any) => any;
53
35
 
54
36
  declare enum SubscriptionKind {
55
37
  Event = "event",
@@ -64,4 +46,4 @@ type SubscribableType = {
64
46
  name?: string;
65
47
  };
66
48
 
67
- export { BaseType, Component, ComponentType, DubheConfig, DubheMetadata, ErrorData, EventData, MoveType, SchemaData, SchemaType, SubscribableType, SubscriptionKind, defineConfig, formatAndWriteMove, formatAndWriteTypescript, formatMove, formatTypescript, loadConfig, parseData, posixPath, resolveConfigPath, schemaGen };
49
+ export { BaseType, Component, ComponentType, DubheConfig, DubheMetadata, ErrorData, EventData, MoveType, SchemaData, SchemaType, SubscribableType, SubscriptionKind, defineConfig, formatAndWriteMove, formatMove, loadConfig, schemaGen };
package/dist/index.js CHANGED
@@ -1,37 +1,37 @@
1
- import G from"prettier";import _e from"prettier-plugin-move-js";async function Fe(e,t){let r;t&&(r=await G.resolveConfig(t));try{return G.format(e,{plugins:[_e],parser:"move-parse",printWidth:120,semi:!0,tabWidth:2,useTabs:!1,bracketSpacing:!0,...r})}catch(n){let i;return n instanceof Error?i=n.message:i=n,console.log(`Error during output formatting: ${i}`),e}}async function q(e){return G.format(e,{parser:"typescript"})}import W from"node:fs/promises";import X from"node:path";import Q from"debug";var T=Q("dubhe:common"),$e=Q("dubhe:common");T.log=console.debug.bind(console);$e.log=console.error.bind(console);var K=T.extend("codegen"),me=T.extend("codegen");K.log=console.debug.bind(console);me.log=console.error.bind(console);async function y(e,t,r){let n=e,i=` // Copyright (c) Obelisk Labs, Inc.
1
+ import J from"prettier";import le from"prettier-plugin-move-js";async function Oe(e,t){let s;t&&(s=await J.resolveConfig(t));try{return J.format(e,{plugins:[le],parser:"move-parse",printWidth:120,semi:!0,tabWidth:2,useTabs:!1,bracketSpacing:!0,...s})}catch(n){let u;return n instanceof Error?u=n.message:u=n,console.log(`Error during output formatting: ${u}`),e}}import Z from"node:fs/promises";import be from"node:path";import P from"debug";var L=P("dubhe:common"),de=P("dubhe:common");L.log=console.debug.bind(console);de.log=console.error.bind(console);var B=L.extend("codegen");B.log=console.debug.bind(console);async function f(e,t,s){let n=e,u=` // Copyright (c) Obelisk Labs, Inc.
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
  #[allow(unused_use)]
4
4
 
5
5
  /* Autogenerated file. Do not edit manually. */
6
6
 
7
- `,l="#[test_only]",h=i+n,v="#[allow(lint(share_owned))]";t.includes(".toml")||t.includes("system")||t.includes("migrate")?h=n:t.includes("init")?h=l+n:t.includes("genesis")&&(h=v+n),await W.mkdir(X.dirname(t),{recursive:!0}),await W.writeFile(t,h),K(`${r}: ${t}`)}async function Ge(e,t,r){let n=await q(e);await W.mkdir(X.dirname(t),{recursive:!0}),await W.writeFile(t,n),K(`${r}: ${t}`)}function ze(e){return e.replace(/\\/g,"/")}import{existsSync as w}from"fs";import H from"fs";function P(e){H.existsSync(e)&&(H.readdirSync(e).forEach(t=>{let r=`${e}/${t}`;H.lstatSync(r).isDirectory()?P(r):H.unlinkSync(r)}),H.rmdirSync(e))}var Y={name:"@0xobelisk/sui-common",version:"1.2.0-pre.112",description:"Common low level logic shared between packages",keywords:["sui","obelisk labs","move","blockchain"],homepage:"https://github.com/0xobelisk/dubhe/tree/main/packages/sui-common#readme",bugs:"https://github.com/0xobelisk/dubhe/issues",repository:{type:"git",url:"https://github.com/0xobelisk/dubhe.git"},license:"Apache-2.0",author:"team@obelisk.build",type:"module",exports:{".":{types:"./dist/index.d.ts",default:"./dist/index.js"}},types:"./dist/index.d.ts",typesVersions:{"*":{index:["./src/index.ts"]}},scripts:{build:"pnpm run type-check && pnpm run build:js","build:js":"tsup && chmod +x ./dist/index.js",clean:"pnpm run clean:js","clean:js":"rimraf dist",dev:"tsup --watch",format:"prettier --write .","format:check":"prettier --check .",lint:"eslint . --ext .ts",test:"vitest","type-check":"tsc --noEmit",validate:"pnpm format:check && pnpm type-check"},dependencies:{chalk:"^5.0.1",debug:"^4.3.4",dotenv:"^16.0.3",ejs:"^3.1.8",esbuild:"^0.17.15",execa:"^7.0.0","find-up":"^6.3.0",glob:"^10.5.0",path:"^0.12.7",prettier:"^3.1.1","prettier-plugin-move-js":"^0.0.5",typescript:"^5.8.3",yargs:"^17.7.1",zod:"^3.22.3","zod-validation-error":"^1.3.0"},devDependencies:{"@types/debug":"^4.1.12","@types/ejs":"^3.1.1","@types/glob":"^7.2.0","@types/node":"^22.16.0","@types/yargs":"^17.0.10",eslint:"^9.0.0","eslint-config-prettier":"^9.1.0",prettier:"3.3.3",tsup:"^6.7.0",tsx:"^3.12.6",vitest:"^2.1.3"},engines:{node:">=22.0.0"},publishConfig:{access:"public"}};async function N(e,t){console.log(`
8
- \u{1F4C4} Starting Move.toml Generation...`),console.log(` \u2514\u2500 Output path: ${t}/src/${e.name}/Move.toml`);let r=`[package]
7
+ `,c="#[test_only]",h=u+n,v="#[allow(lint(share_owned))]";t.includes(".toml")||t.includes("system")||t.includes("migrate")?h=n:t.includes("init")?h=c+n:t.includes("genesis")&&(h=v+n),await Z.mkdir(be.dirname(t),{recursive:!0}),await Z.writeFile(t,h),B(`${s}: ${t}`)}import{existsSync as A}from"fs";import j from"fs";function G(e){j.existsSync(e)&&(j.readdirSync(e).forEach(t=>{let s=`${e}/${t}`;j.lstatSync(s).isDirectory()?G(s):j.unlinkSync(s)}),j.rmdirSync(e))}var q={name:"@0xobelisk/sui-common",version:"1.2.0-pre.115",description:"Common low level logic shared between packages",keywords:["sui","obelisk labs","move","blockchain"],homepage:"https://github.com/0xobelisk/dubhe/tree/main/packages/sui-common#readme",bugs:"https://github.com/0xobelisk/dubhe/issues",repository:{type:"git",url:"https://github.com/0xobelisk/dubhe.git"},license:"Apache-2.0",author:"team@obelisk.build",type:"module",exports:{".":{types:"./dist/index.d.ts",default:"./dist/index.js"}},types:"./dist/index.d.ts",typesVersions:{"*":{index:["./src/index.ts"]}},scripts:{build:"pnpm run type-check && pnpm run build:js","build:js":"tsup && chmod +x ./dist/index.js",clean:"pnpm run clean:js","clean:js":"rimraf dist",dev:"tsup --watch",format:"prettier --write .","format:check":"prettier --check .",lint:"eslint . --ext .ts",test:"vitest","type-check":"tsc --noEmit",validate:"pnpm format:check && pnpm type-check"},dependencies:{chalk:"^5.0.1",debug:"^4.3.4",dotenv:"^16.0.3",ejs:"^3.1.8",esbuild:"^0.17.15",execa:"^7.0.0","find-up":"^6.3.0",glob:"^10.5.0",path:"^0.12.7",prettier:"^3.1.1","prettier-plugin-move-js":"^0.0.5",typescript:"^5.8.3",yargs:"^17.7.1",zod:"^3.22.3","zod-validation-error":"^1.3.0"},devDependencies:{"@types/debug":"^4.1.12","@types/ejs":"^3.1.1","@types/glob":"^7.2.0","@types/node":"^22.16.0","@types/yargs":"^17.0.10",eslint:"^9.0.0","eslint-config-prettier":"^9.1.0",prettier:"3.3.3",tsup:"^6.7.0",tsx:"^3.12.6",vitest:"^2.1.3"},engines:{node:">=22.0.0"},publishConfig:{access:"public"}};async function X(e,t){console.log(`
8
+ \u{1F4C4} Starting Move.toml Generation...`),console.log(` \u2514\u2500 Output path: ${t}/src/${e.name}/Move.toml`);let s=`[package]
9
9
  name = "${e.name}"
10
10
  version = "1.0.0"
11
11
  edition = "2024"
12
12
 
13
13
  [dependencies]
14
14
  Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "mainnet-v1.46.3" }
15
- Dubhe = { git = "https://github.com/0xobelisk/dubhe.git", subdir = "framework/src/dubhe", rev = "v${Y.version}" }
15
+ Dubhe = { git = "https://github.com/0xobelisk/dubhe.git", subdir = "framework/src/dubhe", rev = "v${q.version}" }
16
16
 
17
17
  [addresses]
18
18
  sui = "0x2"
19
19
  ${e.name} = "0x0"
20
- `;await y(r,`${t}/src/${e.name}/Move.toml`,"formatAndWriteMove"),console.log(`\u2705 Move.toml Generation Complete
21
- `)}import{existsSync as ee}from"fs";async function te(e,t){if(!ee(t)){let r=`module ${e.name}::deploy_hook {
20
+ `;await f(s,`${t}/src/${e.name}/Move.toml`,"formatAndWriteMove"),console.log(`\u2705 Move.toml Generation Complete
21
+ `)}import{existsSync as Y}from"fs";async function Q(e,t){if(!Y(t)){let s=`module ${e.name}::deploy_hook {
22
22
  use dubhe::dapp_service::DappHub;
23
23
 
24
24
  public(package) fun run(_dapp_hub: &mut DappHub, _ctx: &mut TxContext) {
25
25
 
26
26
  }
27
- }`;await y(r,t,"formatAndWriteMove")}}async function re(e,t){if(!ee(`${t}/src/${e.name}/sources/scripts/migrate.move`)){let r=`module ${e.name}::migrate {
27
+ }`;await f(s,t,"formatAndWriteMove")}}async function N(e,t){if(!Y(`${t}/src/${e.name}/sources/scripts/migrate.move`)){let s=`module ${e.name}::migrate {
28
28
  const ON_CHAIN_VERSION: u32 = 1;
29
29
 
30
30
  public fun on_chain_version(): u32 {
31
31
  ON_CHAIN_VERSION
32
32
  }
33
33
  }
34
- `;await y(r,`${t}/src/${e.name}/sources/scripts/migrate.move`,"formatAndWriteMove")}}async function se(e,t){let r=`module ${e.name}::dapp_key {
34
+ `;await f(s,`${t}/src/${e.name}/sources/scripts/migrate.move`,"formatAndWriteMove")}}async function ee(e,t){let s=`module ${e.name}::dapp_key {
35
35
  use std::type_name;
36
36
  use sui::address;
37
37
  use std::ascii::String;
@@ -57,14 +57,14 @@ use std::type_name;
57
57
  type_name::get<DappKey1>() == type_name::get<DappKey2>()
58
58
  }
59
59
  }
60
- `;await y(r,t,"formatAndWriteMove")}import{existsSync as ne}from"fs";import oe from"node:fs/promises";async function ie(e,t){ne(`${t}/src/${e.name}/sources/systems`)||await oe.mkdir(`${t}/src/${e.name}/sources/systems`,{recursive:!0}),ne(`${t}/src/${e.name}/sources/tests`)||await oe.mkdir(`${t}/src/${e.name}/sources/tests`,{recursive:!0})}async function ue(e,t,r){console.log(`
61
- \u{1F4E6} Starting Schema Error Generation...`);let n=`module ${e}::errors {
62
- ${Object.entries(t).map(([i,l])=>(console.log(` \u2514\u2500 ${i}: ${l}`),`#[error]
63
- const ${i.toUpperCase()}: vector<u8> = b"${l}";
64
- public fun ${i}_error(condition: bool) { assert!(condition, ${i.toUpperCase()}) }
65
- `)).join(`
66
- `)}
67
- }`;await y(n,`${r}/src/${e}/sources/codegen/errors.move`,"formatAndWriteMove")}async function pe(e,t){let r=`module ${e.name}::init_test {
60
+ `;await f(s,t,"formatAndWriteMove")}import{existsSync as te}from"fs";import se from"node:fs/promises";async function re(e,t){te(`${t}/src/${e.name}/sources/systems`)||await se.mkdir(`${t}/src/${e.name}/sources/systems`,{recursive:!0}),te(`${t}/src/${e.name}/sources/tests`)||await se.mkdir(`${t}/src/${e.name}/sources/tests`,{recursive:!0})}async function ne(e,t,s){console.log(`
61
+ \u{1F4E6} Starting Schema Error Generation...`);let n=Object.entries(t).map(([c,h])=>(console.log(` \u2514\u2500 ${c}: ${h}`),[" #[error]",` const ${c.toUpperCase()}: vector<u8> = b"${h}";`,` public fun ${c}_error(condition: bool) { assert!(condition, ${c.toUpperCase()}) }`].join(`
62
+ `))).join(`
63
+
64
+ `),u=`module ${e}::errors {
65
+ ${n}
66
+ }
67
+ `;await f(u,`${s}/src/${e}/sources/codegen/errors.move`,"formatAndWriteMove")}async function oe(e,t){let s=`module ${e.name}::init_test {
68
68
  use sui::clock;
69
69
  use sui::test_scenario;
70
70
  use sui::test_scenario::Scenario;
@@ -82,7 +82,7 @@ use std::type_name;
82
82
  dapp_hub
83
83
  }
84
84
  }
85
- `;await y(r,t,"formatAndWriteMove")}async function ce(e,t){let r=`module ${e.name}::genesis {
85
+ `;await f(s,t,"formatAndWriteMove")}async function ue(e,t){let s=`module ${e.name}::genesis {
86
86
  use sui::clock::Clock;
87
87
  use dubhe::dapp_service::DappHub;
88
88
  use ${e.name}::dapp_key;
@@ -97,17 +97,25 @@ use std::type_name;
97
97
  // Logic that needs to be automated once the contract is deployed
98
98
  ${e.name}::deploy_hook::run(dapp_hub, ctx);
99
99
  }
100
+
101
+ // Called during contract upgrades to register newly added resource tables.
102
+ // The region between the separator comments is rewritten by \`dubhe upgrade\`
103
+ // when new resources are detected, so do not manually edit that block.
104
+ public(package) fun migrate(dapp_hub: &mut DappHub, ctx: &mut TxContext) {
105
+ // ==========================================
106
+ // ==========================================
107
+ }
100
108
  }
101
- `;await y(r,t,"formatAndWriteMove")}function ae(e){return e.replace(/[A-Z]/g,t=>`_${t.toLowerCase()}`).replace(/^_/,"")}async function le(e,t){if(console.log(`
102
- \u{1F4E6} Starting Enums Generation...`),!!e.enums)for(let[r,n]of Object.entries(e.enums)){console.log(` \u2514\u2500 ${r}: ${JSON.stringify(n)}`);let i=[...n].sort((h,v)=>h.localeCompare(v)),l=ye(e.name,r,i);await y(l,`${t}/${ae(r)}.move`,"formatAndWriteMove")}}function ye(e,t,r){let n=r.map(i=>i.charAt(0).toUpperCase()+i.slice(1)).join(",");return`module ${e}::${ae(t)} {
109
+ `;await f(s,t,"formatAndWriteMove")}function ie(e){return e.replace(/[A-Z]/g,t=>`_${t.toLowerCase()}`).replace(/^_/,"")}async function pe(e,t){if(console.log(`
110
+ \u{1F4E6} Starting Enums Generation...`),!!e.enums)for(let[s,n]of Object.entries(e.enums)){console.log(` \u2514\u2500 ${s}: ${JSON.stringify(n)}`);let u=[...n].sort((h,v)=>h.localeCompare(v)),c=ge(e.name,s,u);await f(c,`${t}/${ie(s)}.move`,"formatAndWriteMove")}}function ge(e,t,s){let n=s.map(u=>u.charAt(0).toUpperCase()+u.slice(1)).join(",");return`module ${e}::${ie(t)} {
103
111
  use sui::bcs::{BCS, to_bytes, peel_enum_tag};
104
112
 
105
113
  public enum ${t} has copy, drop, store {
106
114
  ${n}
107
115
  }
108
116
 
109
- ${r.map(i=>` public fun new_${i.toLowerCase()}(): ${t} {
110
- ${t}::${i.charAt(0).toUpperCase()+i.slice(1)}
117
+ ${s.map(u=>` public fun new_${u.toLowerCase()}(): ${t} {
118
+ ${t}::${u.charAt(0).toUpperCase()+u.slice(1)}
111
119
  }`).join(`
112
120
 
113
121
  `)}
@@ -118,43 +126,43 @@ ${r.map(i=>` public fun new_${i.toLowerCase()}(): ${t} {
118
126
 
119
127
  public fun decode(bytes: &mut BCS): ${t} {
120
128
  match(peel_enum_tag(bytes)) {
121
- ${r.map((i,l)=>` ${l} => ${t}::${i.charAt(0).toUpperCase()+i.slice(1)},`).join(`
129
+ ${s.map((u,c)=>` ${c} => ${t}::${u.charAt(0).toUpperCase()+u.slice(1)},`).join(`
122
130
  `)}
123
131
  _ => abort,
124
132
  }
125
133
  }
126
- }`}function b(e){return e==="dubhe"?"dapp_service":"dapp_system"}async function V(e,t){console.log(`
127
- \u{1F4E6} Starting Resources Generation...`);for(let[r,n]of Object.entries(e.resources)){if(console.log(` \u2514\u2500 ${r}: ${JSON.stringify(n)}`),typeof n=="string"){let l=he(e.name,r,n,"Onchain");await y(l,`${t}/${r}.move`,"formatAndWriteMove");continue}if(!n.fields||Object.keys(n.fields).length===0)throw new Error(`Resource '${r}' must have fields defined, but found empty object`);n.keys||(n.keys=[]);let i=ve(e.name,r,n);await y(i,`${t}/${r}.move`,"formatAndWriteMove")}}function he(e,t,r,n="Onchain"){let i=!A(r),l=i?`${z(r)}`:"",v=n==="Offchain"?"":`
134
+ }`}function _(e){return e==="dubhe"?"dapp_service":"dapp_system"}async function U(e,t){console.log(`
135
+ \u{1F4E6} Starting Resources Generation...`);for(let[s,n]of Object.entries(e.resources)){if(console.log(` \u2514\u2500 ${s}: ${JSON.stringify(n)}`),typeof n=="string"){let c=$e(e.name,s,n,"Onchain");await f(c,`${t}/${s}.move`,"formatAndWriteMove");continue}if(!n.fields||Object.keys(n.fields).length===0)throw new Error(`Resource '${s}' must have fields defined, but found empty object`);n.keys||(n.keys=[]);let u=me(e.name,s,n);await f(u,`${t}/${s}.move`,"formatAndWriteMove")}}function $e(e,t,s,n="Onchain"){let u=!w(s),c=u?`${R(s)}`:"",v=n==="Offchain"?"":`
128
136
  public fun has(dapp_hub: &DappHub, resource_account: String): bool {
129
137
  let mut key_tuple = vector::empty();
130
138
  key_tuple.push_back(TABLE_NAME);
131
- ${b(e)}::has_record<DappKey>(dapp_hub, resource_account, key_tuple)
139
+ ${_(e)}::has_record<DappKey>(dapp_hub, resource_account, key_tuple)
132
140
  }
133
141
 
134
142
  public fun ensure_has(dapp_hub: &DappHub, resource_account: String) {
135
143
  let mut key_tuple = vector::empty();
136
144
  key_tuple.push_back(TABLE_NAME);
137
- ${b(e)}::ensure_has_record<DappKey>(dapp_hub, resource_account, key_tuple)
145
+ ${_(e)}::ensure_has_record<DappKey>(dapp_hub, resource_account, key_tuple)
138
146
  }
139
147
 
140
148
  public fun ensure_has_not(dapp_hub: &DappHub, resource_account: String) {
141
149
  let mut key_tuple = vector::empty();
142
150
  key_tuple.push_back(TABLE_NAME);
143
- ${b(e)}::ensure_has_not_record<DappKey>(dapp_hub, resource_account, key_tuple)
151
+ ${_(e)}::ensure_has_not_record<DappKey>(dapp_hub, resource_account, key_tuple)
144
152
  }
145
153
 
146
154
  public(package) fun delete(dapp_hub: &mut DappHub, resource_account: String) {
147
155
  let mut key_tuple = vector::empty();
148
156
  key_tuple.push_back(TABLE_NAME);
149
- ${b(e)}::delete_record<DappKey>(dapp_hub, dapp_key::new(), key_tuple, resource_account);
157
+ ${_(e)}::delete_record<DappKey>(dapp_hub, dapp_key::new(), key_tuple, resource_account);
150
158
  }
151
159
 
152
- public fun get(dapp_hub: &DappHub, resource_account: String): (${r==="string"||r==="String"?"String":r}) {
160
+ public fun get(dapp_hub: &DappHub, resource_account: String): (${s==="string"||s==="String"?"String":s}) {
153
161
  let mut key_tuple = vector::empty();
154
162
  key_tuple.push_back(TABLE_NAME);
155
- let value_tuple = ${b(e)}::get_record<DappKey>(dapp_hub, resource_account, key_tuple);
163
+ let value_tuple = ${_(e)}::get_record<DappKey>(dapp_hub, resource_account, key_tuple);
156
164
  let mut bsc_type = sui::bcs::new(value_tuple);
157
- ${r==="string"||r==="String"?"let value = dubhe::bcs::peel_string(&mut bsc_type);":r==="vector<String>"?"let value = dubhe::bcs::peel_vec_string(&mut bsc_type);":i?`let value = ${e}::${l}::decode(&mut bsc_type);`:`let value = sui::bcs::peel_${E(r)}(&mut bsc_type);`}
165
+ ${s==="string"||s==="String"?"let value = dubhe::bcs::peel_string(&mut bsc_type);":s==="vector<String>"?"let value = dubhe::bcs::peel_vec_string(&mut bsc_type);":u?`let value = ${e}::${c}::decode(&mut bsc_type);`:`let value = sui::bcs::peel_${E(s)}(&mut bsc_type);`}
158
166
  (value)
159
167
  }
160
168
  `;return`module ${e}::${t} {
@@ -165,26 +173,26 @@ ${r.map((i,l)=>` ${l} => ${t}::${i.charAt(0).toUpperCase()+i.slice(1)
165
173
  use dubhe::dapp_system;
166
174
  use ${e}::dapp_key;
167
175
  use ${e}::dapp_key::DappKey;
168
- ${i&&r!=="string"&&r!=="String"?` use ${e}::${l};
169
- use ${e}::${l}::{${r}};`:""}
176
+ ${u&&s!=="string"&&s!=="String"?` use ${e}::${c};
177
+ use ${e}::${c}::{${s}};`:""}
170
178
 
171
179
  const TABLE_NAME: vector<u8> = b"${t}";
172
180
  const OFFCHAIN: bool = ${n==="Offchain"};
173
181
 
174
182
  ${v}
175
- public(package) fun set(dapp_hub: &mut DappHub, resource_account: String, value: ${r==="string"||r==="String"?"String":r}, ctx: &mut TxContext) {
183
+ public(package) fun set(dapp_hub: &mut DappHub, resource_account: String, value: ${s==="string"||s==="String"?"String":s}, ctx: &mut TxContext) {
176
184
  let mut key_tuple = vector::empty();
177
185
  key_tuple.push_back(TABLE_NAME);
178
186
  let value_tuple = encode(value);
179
- ${b(e)}::set_record(dapp_hub, dapp_key::new(), key_tuple, value_tuple, resource_account, OFFCHAIN, ctx);
187
+ ${_(e)}::set_record(dapp_hub, dapp_key::new(), key_tuple, value_tuple, resource_account, OFFCHAIN, ctx);
180
188
  }
181
189
 
182
- public fun encode(value: ${r==="string"||r==="String"?"String":r}): vector<vector<u8>> {
190
+ public fun encode(value: ${s==="string"||s==="String"?"String":s}): vector<vector<u8>> {
183
191
  let mut value_tuple = vector::empty();
184
- value_tuple.push_back(${r==="string"||r==="String"?"to_bytes(&into_bytes(value))":r==="vector<String>"?"to_bytes(&value)":i?`${e}::${l}::encode(value)`:"to_bytes(&value)"});
192
+ value_tuple.push_back(${s==="string"||s==="String"?"to_bytes(&into_bytes(value))":s==="vector<String>"?"to_bytes(&value)":u?`${e}::${c}::encode(value)`:"to_bytes(&value)"});
185
193
  value_tuple
186
194
  }
187
- }`}function z(e){return e.replace(/[A-Z]/g,t=>`_${t.toLowerCase()}`).replace(/^_/,"")}function ve(e,t,r){let n=r.fields,i=r.keys||[],l=r.offchain||!1,h=r.global||!1,v=l?"Offchain":"Onchain",c=h,g=Object.keys(n).every(o=>i.includes(o)),F=Object.entries(n).filter(([o])=>!i.includes(o)),x=F.map(([o])=>o),D=x.length===1,p=F.filter(([o,$])=>!A($)&&$!=="string"&&$!=="String").map(([o,$])=>({type:$,module:`${z($)}`})).filter((o,$,j)=>j.findIndex(M=>M.type===o.type)===$),_=Object.entries(n).filter(([o,$])=>!A($)&&$!=="string"&&$!=="String").map(([o,$])=>({type:$,module:`${z($)}`})).filter((o,$,j)=>j.findIndex(M=>M.type===o.type)===$),u=ke(e,t,n,i,!g&&!D,p,v,c);if(g||D)return`module ${e}::${t} {
195
+ }`}function R(e){return e.replace(/[A-Z]/g,t=>`_${t.toLowerCase()}`).replace(/^_/,"")}function me(e,t,s){let n=s.fields,u=s.keys||[],c=s.offchain||!1,h=s.global||!1,v=c?"Offchain":"Onchain",a=h,b=Object.keys(n).every(o=>u.includes(o)),M=Object.entries(n).filter(([o])=>!u.includes(o)),x=M.map(([o])=>o),D=x.length===1,p=M.filter(([o,$])=>!w($)&&$!=="string"&&$!=="String").map(([o,$])=>({type:$,module:`${R($)}`})).filter((o,$,H)=>H.findIndex(F=>F.type===o.type)===$),g=Object.entries(n).filter(([o,$])=>!w($)&&$!=="string"&&$!=="String").map(([o,$])=>({type:$,module:`${R($)}`})).filter((o,$,H)=>H.findIndex(F=>F.type===o.type)===$),i=ye(e,t,n,u,!b&&!D,p,v,a);if(b||D)return`module ${e}::${t} {
188
196
  use sui::bcs::{to_bytes};
189
197
  use std::ascii::{string, String, into_bytes};
190
198
  use dubhe::table_id;
@@ -192,21 +200,21 @@ ${v}
192
200
  use dubhe::dapp_system;
193
201
  use ${e}::dapp_key;
194
202
  use ${e}::dapp_key::DappKey;
195
- ${_.length>0?_.map(o=>` use ${e}::${o.module};
203
+ ${g.length>0?g.map(o=>` use ${e}::${o.module};
196
204
  use ${e}::${o.module}::{${o.type}};`).join(`
197
205
  `):""}
198
206
 
199
207
  const TABLE_NAME: vector<u8> = b"${t}";
200
- const OFFCHAIN: bool = ${l};
208
+ const OFFCHAIN: bool = ${c};
201
209
 
202
- ${u}
210
+ ${i}
203
211
  }`;let m=x.map(o=>` ${o}: ${n[o]==="string"||n[o]==="String"?"String":n[o]==="vector<String>"?"vector<String>":n[o]},`).join(`
204
- `),f=x.map(o=>`${o}: ${n[o]==="string"||n[o]==="String"?"String":n[o]==="vector<String>"?"vector<String>":n[o]}`).join(", "),B=x.map(o=>` ${o},`).join(`
205
- `),R=x.map(o=>` public fun ${o}(self: &${k(t)}): ${n[o]==="string"||n[o]==="String"?"String":n[o]==="vector<String>"?"vector<String>":n[o]} {
212
+ `),y=x.map(o=>`${o}: ${n[o]==="string"||n[o]==="String"?"String":n[o]==="vector<String>"?"vector<String>":n[o]}`).join(", "),T=x.map(o=>` ${o},`).join(`
213
+ `),I=x.map(o=>` public fun ${o}(self: &${k(t)}): ${n[o]==="string"||n[o]==="String"?"String":n[o]==="vector<String>"?"vector<String>":n[o]} {
206
214
  self.${o}
207
215
  }`).join(`
208
216
 
209
- `),U=x.map(o=>` public fun update_${o}(self: &mut ${k(t)}, ${o}: ${n[o]==="string"||n[o]==="String"?"String":n[o]==="vector<String>"?"vector<String>":n[o]}) {
217
+ `),W=x.map(o=>` public fun update_${o}(self: &mut ${k(t)}, ${o}: ${n[o]==="string"||n[o]==="String"?"String":n[o]==="vector<String>"?"vector<String>":n[o]}) {
210
218
  self.${o} = ${o}
211
219
  }`).join(`
212
220
 
@@ -218,150 +226,150 @@ ${u}
218
226
  use dubhe::dapp_system;
219
227
  use ${e}::dapp_key;
220
228
  use ${e}::dapp_key::DappKey;
221
- ${_.length>0?_.map(o=>` use ${e}::${o.module};
229
+ ${g.length>0?g.map(o=>` use ${e}::${o.module};
222
230
  use ${e}::${o.module}::{${o.type}};`).join(`
223
231
  `):""}
224
232
 
225
233
  const TABLE_NAME: vector<u8> = b"${t}";
226
- const OFFCHAIN: bool = ${l};
234
+ const OFFCHAIN: bool = ${c};
227
235
 
228
236
  public struct ${k(t)} has copy, drop, store {
229
237
  ${m}
230
238
  }
231
239
 
232
- public fun new(${f}): ${k(t)} {
240
+ public fun new(${y}): ${k(t)} {
233
241
  ${k(t)} {
234
- ${B}
242
+ ${T}
235
243
  }
236
244
  }
237
245
 
238
- ${R}
246
+ ${I}
239
247
 
240
- ${U}
248
+ ${W}
241
249
 
242
- ${u}
243
- }`}function A(e){return["address","bool","u8","u16","u32","u64","u128","u256","string","String","vector<address>","vector<bool>","vector<u8>","vector<u16>","vector<vector<u8>>","vector<u32>","vector<u64>","vector<u128>","vector<u256>","vector<String>"].includes(e)}function ke(e,t,r,n,i=!0,l=[],h="Onchain",v=!1){let c=Object.entries(r).filter(([s])=>!n.includes(s)).reduce((s,[d,a])=>({...s,[d]:a}),{}),g=Object.keys(c),F=Object.keys(r).every(s=>n.includes(s)),x=g.length===1,D=h==="Offchain",p=n.length>0?n.map(s=>`${s}: ${r[s]}`).join(", "):"",_=n.length>0?`let mut key_tuple = vector::empty();
250
+ ${i}
251
+ }`}function w(e){return["address","bool","u8","u16","u32","u64","u128","u256","string","String","vector<address>","vector<bool>","vector<u8>","vector<u16>","vector<vector<u8>>","vector<u32>","vector<u64>","vector<u128>","vector<u256>","vector<String>"].includes(e)}function ye(e,t,s,n,u=!0,c=[],h="Onchain",v=!1){let a=Object.entries(s).filter(([r])=>!n.includes(r)).reduce((r,[d,l])=>({...r,[d]:l}),{}),b=Object.keys(a),M=Object.keys(s).every(r=>n.includes(r)),x=b.length===1,D=h==="Offchain",p=n.length>0?n.map(r=>`${r}: ${s[r]}`).join(", "):"",g=n.length>0?`let mut key_tuple = vector::empty();
244
252
  key_tuple.push_back(TABLE_NAME);
245
- ${n.map(s=>`key_tuple.push_back(to_bytes(&${s}));`).join(`
253
+ ${n.map(r=>`key_tuple.push_back(to_bytes(&${r}));`).join(`
246
254
  `)}`:`let mut key_tuple = vector::empty();
247
- key_tuple.push_back(TABLE_NAME);`,u=v?"":"resource_account: String",m=v?"dapp_key::package_id().to_ascii_string()":"resource_account",f=u&&p?", ":"",B=D?"":` public fun has(dapp_hub: &DappHub${u||p?", ":""}${u}${f}${p}): bool {
248
- ${_}
249
- ${b(e)}::has_record<DappKey>(dapp_hub, ${m}, key_tuple)
255
+ key_tuple.push_back(TABLE_NAME);`,i=v?"":"resource_account: String",m=v?"dapp_key::package_id().to_ascii_string()":"resource_account",y=i&&p?", ":"",T=D?"":` public fun has(dapp_hub: &DappHub${i||p?", ":""}${i}${y}${p}): bool {
256
+ ${g}
257
+ ${_(e)}::has_record<DappKey>(dapp_hub, ${m}, key_tuple)
250
258
  }
251
259
 
252
- public fun ensure_has(dapp_hub: &DappHub${u||p?", ":""}${u}${f}${p}) {
253
- ${_}
254
- ${b(e)}::ensure_has_record<DappKey>(dapp_hub, ${m}, key_tuple)
260
+ public fun ensure_has(dapp_hub: &DappHub${i||p?", ":""}${i}${y}${p}) {
261
+ ${g}
262
+ ${_(e)}::ensure_has_record<DappKey>(dapp_hub, ${m}, key_tuple)
255
263
  }
256
264
 
257
- public fun ensure_has_not(dapp_hub: &DappHub${u||p?", ":""}${u}${f}${p}) {
258
- ${_}
259
- ${b(e)}::ensure_has_not_record<DappKey>(dapp_hub, ${m}, key_tuple)
265
+ public fun ensure_has_not(dapp_hub: &DappHub${i||p?", ":""}${i}${y}${p}) {
266
+ ${g}
267
+ ${_(e)}::ensure_has_not_record<DappKey>(dapp_hub, ${m}, key_tuple)
260
268
  }
261
- `,R=D?"":` public(package) fun delete(dapp_hub: &mut DappHub${u||p?", ":""}${u}${f}${p}) {
262
- ${_}
263
- ${b(e)}::delete_record<DappKey>(dapp_hub, dapp_key::new(), key_tuple, ${m});
264
- }`,U=!x&&!D?g.map(s=>{let d=g.indexOf(s),a=r[s],S=!A(a),C=S?l.find(be=>be.type===a):null;return` public fun get_${s}(dapp_hub: &DappHub${u||p?", ":""}${u}${f}${p}): ${a==="string"||a==="String"?"String":a==="vector<String>"?"vector<String>":a} {
265
- ${_}
266
- let value = ${b(e)}::get_field<DappKey>(dapp_hub, ${m}, key_tuple, ${d});
269
+ `,I=D?"":` public(package) fun delete(dapp_hub: &mut DappHub${i||p?", ":""}${i}${y}${p}) {
270
+ ${g}
271
+ ${_(e)}::delete_record<DappKey>(dapp_hub, dapp_key::new(), key_tuple, ${m});
272
+ }`,W=!x&&!D?b.map(r=>{let d=b.indexOf(r),l=s[r],S=!w(l),C=S?c.find(ae=>ae.type===l):null;return` public fun get_${r}(dapp_hub: &DappHub${i||p?", ":""}${i}${y}${p}): ${l==="string"||l==="String"?"String":l==="vector<String>"?"vector<String>":l} {
273
+ ${g}
274
+ let value = ${_(e)}::get_field<DappKey>(dapp_hub, ${m}, key_tuple, ${d});
267
275
  let mut bsc_type = sui::bcs::new(value);
268
- ${a==="string"||a==="String"?`let ${s} = dubhe::bcs::peel_string(&mut bsc_type);`:a==="vector<String>"?`let ${s} = dubhe::bcs::peel_vec_string(&mut bsc_type);`:S?`let ${s} = ${e}::${C?.module}::decode(&mut bsc_type);`:`let ${s} = sui::bcs::peel_${E(a)}(&mut bsc_type);`}
269
- ${s}
276
+ ${l==="string"||l==="String"?`let ${r} = dubhe::bcs::peel_string(&mut bsc_type);`:l==="vector<String>"?`let ${r} = dubhe::bcs::peel_vec_string(&mut bsc_type);`:S?`let ${r} = ${e}::${C?.module}::decode(&mut bsc_type);`:`let ${r} = sui::bcs::peel_${E(l)}(&mut bsc_type);`}
277
+ ${r}
270
278
  }
271
279
 
272
- public(package) fun set_${s}(dapp_hub: &mut DappHub${u||p?", ":""}${u}${f}${p}, ${s}: ${a==="string"||a==="String"?"String":a==="vector<String>"?"vector<String>":a}, ctx: &mut TxContext) {
273
- ${_}
274
- let value = ${a==="string"||a==="String"?`to_bytes(&into_bytes(${s}))`:a==="vector<String>"?`to_bytes(&${s})`:S?`${e}::${C?.module}::encode(${s})`:`to_bytes(&${s})`};
275
- ${b(e)}::set_field(dapp_hub, dapp_key::new(), ${m}, key_tuple, ${d}, value, ctx);
280
+ public(package) fun set_${r}(dapp_hub: &mut DappHub${i||p?", ":""}${i}${y}${p}, ${r}: ${l==="string"||l==="String"?"String":l==="vector<String>"?"vector<String>":l}, ctx: &mut TxContext) {
281
+ ${g}
282
+ let value = ${l==="string"||l==="String"?`to_bytes(&into_bytes(${r}))`:l==="vector<String>"?`to_bytes(&${r})`:S?`${e}::${C?.module}::encode(${r})`:`to_bytes(&${r})`};
283
+ ${_(e)}::set_field(dapp_hub, dapp_key::new(), ${m}, key_tuple, ${d}, value, ctx);
276
284
  }`}).join(`
277
285
 
278
- `):"",o=F?` public(package) fun set(dapp_hub: &mut DappHub${u||p?", ":""}${u}${f}${p}, ctx: &mut TxContext) {
279
- ${_}
286
+ `):"",o=M?` public(package) fun set(dapp_hub: &mut DappHub${i||p?", ":""}${i}${y}${p}, ctx: &mut TxContext) {
287
+ ${g}
280
288
  let value_tuple = vector::empty();
281
- ${b(e)}::set_record(dapp_hub, dapp_key::new(), key_tuple, value_tuple, ${m}, OFFCHAIN, ctx);
282
- }`:x?D?` public(package) fun set(dapp_hub: &mut DappHub${u||p?", ":""}${u}${f}${p}, value: ${Object.values(c)[0]==="string"||Object.values(c)[0]==="String"?"String":Object.values(c)[0]}, ctx: &mut TxContext) {
283
- ${_}
289
+ ${_(e)}::set_record(dapp_hub, dapp_key::new(), key_tuple, value_tuple, ${m}, OFFCHAIN, ctx);
290
+ }`:x?D?` public(package) fun set(dapp_hub: &mut DappHub${i||p?", ":""}${i}${y}${p}, value: ${Object.values(a)[0]==="string"||Object.values(a)[0]==="String"?"String":Object.values(a)[0]}, ctx: &mut TxContext) {
291
+ ${g}
284
292
  let value_tuple = encode(value);
285
- ${b(e)}::set_record(dapp_hub, dapp_key::new(), key_tuple, value_tuple, ${m}, OFFCHAIN, ctx);
286
- }`:` public fun get(dapp_hub: &DappHub${u||p?", ":""}${u}${f}${p}): ${Object.values(c)[0]==="string"||Object.values(c)[0]==="String"?"String":Object.values(c)[0]} {
287
- ${_}
288
- let value = ${b(e)}::get_field<DappKey>(dapp_hub, ${m}, key_tuple, 0);
293
+ ${_(e)}::set_record(dapp_hub, dapp_key::new(), key_tuple, value_tuple, ${m}, OFFCHAIN, ctx);
294
+ }`:` public fun get(dapp_hub: &DappHub${i||p?", ":""}${i}${y}${p}): ${Object.values(a)[0]==="string"||Object.values(a)[0]==="String"?"String":Object.values(a)[0]} {
295
+ ${g}
296
+ let value = ${_(e)}::get_field<DappKey>(dapp_hub, ${m}, key_tuple, 0);
289
297
  let mut bsc_type = sui::bcs::new(value);
290
- ${Object.values(c)[0]==="string"||Object.values(c)[0]==="String"?"let value = dubhe::bcs::peel_string(&mut bsc_type);":Object.values(c)[0]==="vector<String>"?"let value = dubhe::bcs::peel_vec_string(&mut bsc_type);":A(Object.values(c)[0])?`let value = sui::bcs::peel_${E(Object.values(c)[0])}(&mut bsc_type);`:`let value = ${e}::${l.find(s=>s.type===Object.values(c)[0])?.module}::decode(&mut bsc_type);`}
298
+ ${Object.values(a)[0]==="string"||Object.values(a)[0]==="String"?"let value = dubhe::bcs::peel_string(&mut bsc_type);":Object.values(a)[0]==="vector<String>"?"let value = dubhe::bcs::peel_vec_string(&mut bsc_type);":w(Object.values(a)[0])?`let value = sui::bcs::peel_${E(Object.values(a)[0])}(&mut bsc_type);`:`let value = ${e}::${c.find(r=>r.type===Object.values(a)[0])?.module}::decode(&mut bsc_type);`}
291
299
  value
292
300
  }
293
301
 
294
- public(package) fun set(dapp_hub: &mut DappHub${u||p?", ":""}${u}${f}${p}, value: ${Object.values(c)[0]==="string"||Object.values(c)[0]==="String"?"String":Object.values(c)[0]}, ctx: &mut TxContext) {
295
- ${_}
302
+ public(package) fun set(dapp_hub: &mut DappHub${i||p?", ":""}${i}${y}${p}, value: ${Object.values(a)[0]==="string"||Object.values(a)[0]==="String"?"String":Object.values(a)[0]}, ctx: &mut TxContext) {
303
+ ${g}
296
304
  let value_tuple = encode(value);
297
- ${b(e)}::set_record(dapp_hub, dapp_key::new(), key_tuple, value_tuple, ${m}, OFFCHAIN, ctx);
298
- }`:D?` public(package) fun set(dapp_hub: &mut DappHub${u||p?", ":""}${u}${f}${p}, ${g.map(s=>`${s}: ${r[s]==="string"||r[s]==="String"?"String":r[s]}`).join(", ")}, ctx: &mut TxContext) {
299
- ${_}
300
- let value_tuple = encode(${g.join(", ")});
301
- ${b(e)}::set_record(dapp_hub, dapp_key::new(), key_tuple, value_tuple, ${m}, OFFCHAIN, ctx);
302
- }`:` public fun get(dapp_hub: &DappHub${u||p?", ":""}${u}${f}${p}): (${Object.values(c).map(s=>s==="string"||s==="String"?"String":s).join(", ")}) {
303
- ${_}
304
- let value_tuple = ${b(e)}::get_record<DappKey>(dapp_hub, ${m}, key_tuple);
305
+ ${_(e)}::set_record(dapp_hub, dapp_key::new(), key_tuple, value_tuple, ${m}, OFFCHAIN, ctx);
306
+ }`:D?` public(package) fun set(dapp_hub: &mut DappHub${i||p?", ":""}${i}${y}${p}, ${b.map(r=>`${r}: ${s[r]==="string"||s[r]==="String"?"String":s[r]}`).join(", ")}, ctx: &mut TxContext) {
307
+ ${g}
308
+ let value_tuple = encode(${b.join(", ")});
309
+ ${_(e)}::set_record(dapp_hub, dapp_key::new(), key_tuple, value_tuple, ${m}, OFFCHAIN, ctx);
310
+ }`:` public fun get(dapp_hub: &DappHub${i||p?", ":""}${i}${y}${p}): (${Object.values(a).map(r=>r==="string"||r==="String"?"String":r).join(", ")}) {
311
+ ${g}
312
+ let value_tuple = ${_(e)}::get_record<DappKey>(dapp_hub, ${m}, key_tuple);
305
313
  let mut bsc_type = sui::bcs::new(value_tuple);
306
- ${g.map(s=>{let d=r[s],a=!A(d),S=a?l.find(C=>C.type===d):null;return`let ${s} = ${d==="string"||d==="String"?"dubhe::bcs::peel_string(&mut bsc_type)":d==="vector<String>"?"dubhe::bcs::peel_vec_string(&mut bsc_type)":a?`${e}::${S?.module}::decode(&mut bsc_type)`:`sui::bcs::peel_${E(d)}(&mut bsc_type)`};`}).join(`
314
+ ${b.map(r=>{let d=s[r],l=!w(d),S=l?c.find(C=>C.type===d):null;return`let ${r} = ${d==="string"||d==="String"?"dubhe::bcs::peel_string(&mut bsc_type)":d==="vector<String>"?"dubhe::bcs::peel_vec_string(&mut bsc_type)":l?`${e}::${S?.module}::decode(&mut bsc_type)`:`sui::bcs::peel_${E(d)}(&mut bsc_type)`};`}).join(`
307
315
  `)}
308
- (${g.join(", ")})
316
+ (${b.join(", ")})
309
317
  }
310
318
 
311
- public(package) fun set(dapp_hub: &mut DappHub${u||p?", ":""}${u}${f}${p}, ${g.map(s=>`${s}: ${r[s]==="string"||r[s]==="String"?"String":r[s]}`).join(", ")}, ctx: &mut TxContext) {
312
- ${_}
313
- let value_tuple = encode(${g.join(", ")});
314
- ${b(e)}::set_record(dapp_hub, dapp_key::new(), key_tuple, value_tuple, ${m}, OFFCHAIN, ctx);
315
- }`,$=i?D?` public(package) fun set_struct(dapp_hub: &mut DappHub${u||p?", ":""}${u}${f}${p}, ${t}: ${k(t)}, ctx: &mut TxContext) {
316
- ${_}
319
+ public(package) fun set(dapp_hub: &mut DappHub${i||p?", ":""}${i}${y}${p}, ${b.map(r=>`${r}: ${s[r]==="string"||s[r]==="String"?"String":s[r]}`).join(", ")}, ctx: &mut TxContext) {
320
+ ${g}
321
+ let value_tuple = encode(${b.join(", ")});
322
+ ${_(e)}::set_record(dapp_hub, dapp_key::new(), key_tuple, value_tuple, ${m}, OFFCHAIN, ctx);
323
+ }`,$=u?D?` public(package) fun set_struct(dapp_hub: &mut DappHub${i||p?", ":""}${i}${y}${p}, ${t}: ${k(t)}, ctx: &mut TxContext) {
324
+ ${g}
317
325
  let value_tuple = encode_struct(${t});
318
- ${b(e)}::set_record(dapp_hub, dapp_key::new(), key_tuple, value_tuple, ${m}, OFFCHAIN, ctx);
319
- }`:` public fun get_struct(dapp_hub: &DappHub${u||p?", ":""}${u}${f}${p}): ${k(t)} {
320
- ${_}
321
- let value_tuple = ${b(e)}::get_record<DappKey>(dapp_hub, ${m}, key_tuple);
326
+ ${_(e)}::set_record(dapp_hub, dapp_key::new(), key_tuple, value_tuple, ${m}, OFFCHAIN, ctx);
327
+ }`:` public fun get_struct(dapp_hub: &DappHub${i||p?", ":""}${i}${y}${p}): ${k(t)} {
328
+ ${g}
329
+ let value_tuple = ${_(e)}::get_record<DappKey>(dapp_hub, ${m}, key_tuple);
322
330
  decode(value_tuple)
323
331
  }
324
332
 
325
- public(package) fun set_struct(dapp_hub: &mut DappHub${u||p?", ":""}${u}${f}${p}, ${t}: ${k(t)}, ctx: &mut TxContext) {
326
- ${_}
333
+ public(package) fun set_struct(dapp_hub: &mut DappHub${i||p?", ":""}${i}${y}${p}, ${t}: ${k(t)}, ctx: &mut TxContext) {
334
+ ${g}
327
335
  let value_tuple = encode_struct(${t});
328
- ${b(e)}::set_record(dapp_hub, dapp_key::new(), key_tuple, value_tuple, ${m}, OFFCHAIN, ctx);
329
- }`:"",j=x?` public fun encode(value: ${Object.values(c)[0]==="string"||Object.values(c)[0]==="String"?"String":Object.values(c)[0]}): vector<vector<u8>> {
336
+ ${_(e)}::set_record(dapp_hub, dapp_key::new(), key_tuple, value_tuple, ${m}, OFFCHAIN, ctx);
337
+ }`:"",H=x?` public fun encode(value: ${Object.values(a)[0]==="string"||Object.values(a)[0]==="String"?"String":Object.values(a)[0]}): vector<vector<u8>> {
330
338
  let mut value_tuple = vector::empty();
331
- value_tuple.push_back(${Object.values(c)[0]==="string"||Object.values(c)[0]==="String"?"to_bytes(&into_bytes(value))":Object.values(c)[0]==="vector<String>"||A(Object.values(c)[0])?"to_bytes(&value)":`${e}::${l.find(s=>s.type===Object.values(c)[0])?.module}::encode(value)`});
339
+ value_tuple.push_back(${Object.values(a)[0]==="string"||Object.values(a)[0]==="String"?"to_bytes(&into_bytes(value))":Object.values(a)[0]==="vector<String>"||w(Object.values(a)[0])?"to_bytes(&value)":`${e}::${c.find(r=>r.type===Object.values(a)[0])?.module}::encode(value)`});
332
340
  value_tuple
333
- }`:i?D?` public fun encode(${g.map(s=>`${s}: ${r[s]==="string"||r[s]==="String"?"String":r[s]}`).join(", ")}): vector<vector<u8>> {
341
+ }`:u?D?` public fun encode(${b.map(r=>`${r}: ${s[r]==="string"||s[r]==="String"?"String":s[r]}`).join(", ")}): vector<vector<u8>> {
334
342
  let mut value_tuple = vector::empty();
335
- ${g.map(s=>{let d=r[s],a=!A(d),S=a?l.find(C=>C.type===d):null;return`value_tuple.push_back(${d==="string"||d==="String"?`to_bytes(&into_bytes(${s}))`:d==="vector<String>"?`to_bytes(&${s})`:a?`${e}::${S?.module}::encode(${s})`:`to_bytes(&${s})`});`}).join(`
343
+ ${b.map(r=>{let d=s[r],l=!w(d),S=l?c.find(C=>C.type===d):null;return`value_tuple.push_back(${d==="string"||d==="String"?`to_bytes(&into_bytes(${r}))`:d==="vector<String>"?`to_bytes(&${r})`:l?`${e}::${S?.module}::encode(${r})`:`to_bytes(&${r})`});`}).join(`
336
344
  `)}
337
345
  value_tuple
338
346
  }
339
347
 
340
348
  public fun encode_struct(${t}: ${k(t)}): vector<vector<u8>> {
341
- encode(${g.map(s=>`${t}.${s}`).join(", ")})
342
- }`:` public fun encode(${g.map(s=>`${s}: ${r[s]==="string"||r[s]==="String"?"String":r[s]}`).join(", ")}): vector<vector<u8>> {
349
+ encode(${b.map(r=>`${t}.${r}`).join(", ")})
350
+ }`:` public fun encode(${b.map(r=>`${r}: ${s[r]==="string"||s[r]==="String"?"String":s[r]}`).join(", ")}): vector<vector<u8>> {
343
351
  let mut value_tuple = vector::empty();
344
- ${g.map(s=>{let d=r[s],a=!A(d),S=a?l.find(C=>C.type===d):null;return`value_tuple.push_back(${d==="string"||d==="String"?`to_bytes(&into_bytes(${s}))`:d==="vector<String>"?`to_bytes(&${s})`:a?`${e}::${S?.module}::encode(${s})`:`to_bytes(&${s})`});`}).join(`
352
+ ${b.map(r=>{let d=s[r],l=!w(d),S=l?c.find(C=>C.type===d):null;return`value_tuple.push_back(${d==="string"||d==="String"?`to_bytes(&into_bytes(${r}))`:d==="vector<String>"?`to_bytes(&${r})`:l?`${e}::${S?.module}::encode(${r})`:`to_bytes(&${r})`});`}).join(`
345
353
  `)}
346
354
  value_tuple
347
355
  }
348
356
 
349
357
  public fun encode_struct(${t}: ${k(t)}): vector<vector<u8>> {
350
- encode(${g.map(s=>`${t}.${s}`).join(", ")})
358
+ encode(${b.map(r=>`${t}.${r}`).join(", ")})
351
359
  }
352
360
 
353
361
  public fun decode(data: vector<u8>): ${k(t)} {
354
362
  let mut bsc_type = sui::bcs::new(data);
355
- ${g.map(s=>{let d=r[s],a=!A(d),S=a?l.find(C=>C.type===d):null;return`let ${s} = ${d==="string"||d==="String"?"string(sui::bcs::peel_vec_u8(&mut bsc_type))":d==="vector<String>"?"dubhe::bcs::peel_vec_string(&mut bsc_type)":a?`${e}::${S?.module}::decode(&mut bsc_type)`:`sui::bcs::peel_${E(d)}(&mut bsc_type)`};`}).join(`
363
+ ${b.map(r=>{let d=s[r],l=!w(d),S=l?c.find(C=>C.type===d):null;return`let ${r} = ${d==="string"||d==="String"?"string(sui::bcs::peel_vec_u8(&mut bsc_type))":d==="vector<String>"?"dubhe::bcs::peel_vec_string(&mut bsc_type)":l?`${e}::${S?.module}::decode(&mut bsc_type)`:`sui::bcs::peel_${E(d)}(&mut bsc_type)`};`}).join(`
356
364
  `)}
357
365
  ${k(t)} {
358
- ${g.map(s=>`${s},`).join(`
366
+ ${b.map(r=>`${r},`).join(`
359
367
  `)}
360
368
  }
361
- }`:"";return[B,R,U,o,$,j].filter(s=>s.trim().length>0).join(`
369
+ }`:"";return[T,I,W,o,$,H].filter(r=>r.trim().length>0).join(`
362
370
 
363
- `)}function k(e){return e.split("_").map((t,r)=>/^\d+$/.test(t)?t:t.charAt(0).toUpperCase()+t.slice(1).toLowerCase()).join("")}function E(e){if(e.startsWith("vector<")){let t=e.slice(7,-1);return t==="vector<u8>"?"vec_vec_u8":t==="String"?"vec_string":`vec_${E(t)}`}switch(e){case"u8":return"u8";case"u16":return"u16";case"u32":return"u32";case"u64":return"u64";case"u128":return"u128";case"u256":return"u256";case"bool":return"bool";case"address":return"address";case"String":return"string";default:return e}}import O from"node:path";async function Ot(e,t,r){console.log(`
364
- \u{1F680} Starting Schema Generation Process...`),console.log("\u{1F4CB} Project Configuration:"),console.log(` \u2514\u2500 Name: ${t.name}`),console.log(` \u2514\u2500 Description: ${t.description||"No description provided"}`),console.log(` \u2514\u2500 Network: ${r||"testnet"}`),console.log(e);let n=O.join(e,"src",t.name);w(`${n}`)&&P(`${n}/sources/codegen`),w(`${n}/Move.toml`)||await N(t,e);let i=O.join(n,"sources","codegen","genesis.move");w(i)||await ce(t,i);let l=O.join(n,"sources","codegen","init_test.move");w(l)||await pe(t,l);let h=O.join(n,"sources","codegen","dapp_key.move");w(h)||await se(t,h);let v=O.join(n,"sources","scripts","deploy_hook.move");w(v)||await te(t,v);let c=O.join(n,"sources","codegen","resources");w(c)?await V(t,c):await V(t,c);let g=O.join(n,"sources","codegen","enums");w(g)||await le(t,g),t.errors&&await ue(t.name,t.errors,e),await ie(t,e),await re(t,e),console.log(`
371
+ `)}function k(e){return e.split("_").map((t,s)=>/^\d+$/.test(t)?t:t.charAt(0).toUpperCase()+t.slice(1).toLowerCase()).join("")}function E(e){if(e.startsWith("vector<")){let t=e.slice(7,-1);return t==="vector<u8>"?"vec_vec_u8":t==="String"?"vec_string":`vec_${E(t)}`}switch(e){case"u8":return"u8";case"u16":return"u16";case"u32":return"u32";case"u64":return"u64";case"u128":return"u128";case"u256":return"u256";case"bool":return"bool";case"address":return"address";case"String":return"string";default:return e}}import O from"node:path";async function vt(e,t,s){console.log(`
372
+ \u{1F680} Starting Schema Generation Process...`),console.log("\u{1F4CB} Project Configuration:"),console.log(` \u2514\u2500 Name: ${t.name}`),console.log(` \u2514\u2500 Description: ${t.description||"No description provided"}`),console.log(` \u2514\u2500 Network: ${s||"testnet"}`),console.log(e);let n=O.join(e,"src",t.name);A(`${n}`)&&G(`${n}/sources/codegen`),A(`${n}/Move.toml`)||await X(t,e);let u=O.join(n,"sources","codegen","genesis.move");A(u)||await ue(t,u);let c=O.join(n,"sources","codegen","init_test.move");A(c)||await oe(t,c);let h=O.join(n,"sources","codegen","dapp_key.move");A(h)||await ee(t,h);let v=O.join(n,"sources","scripts","deploy_hook.move");A(v)||await Q(t,v);let a=O.join(n,"sources","codegen","resources");A(a)?await U(t,a):await U(t,a);let b=O.join(n,"sources","codegen","enums");A(b)||await pe(t,b),t.errors&&await ne(t.name,t.errors,e),await re(t,e),await N(t,e),console.log(`
365
373
  \u2705 Schema Generation Process Complete!
366
- `)}var jt=e=>e;import{findUp as Se}from"find-up";import J from"path";import xe from"esbuild";var I=class extends Error{name="NotInsideProjectError";message="You are not inside a Dubhe project"};import{rmSync as De}from"fs";import{pathToFileURL as Ce}from"url";import Ae from"os";var we=["dubhe.config.js","dubhe.config.mjs","dubhe.config.ts","dubhe.config.mts"],Z="dubhe.config.example.mjs";async function Rt(e){e=await de(e);try{return await xe.build({entryPoints:[e],format:"esm",outfile:Z,platform:"node",bundle:!0,packages:"external"}),e=await de(Z,!0),(await import(e+`?update=${Date.now()}`)).dubheConfig}finally{De(Z,{force:!0})}}async function de(e,t){return e===void 0?e=await Oe():J.isAbsolute(e)||(e=J.join(process.cwd(),e),e=J.normalize(e)),t&&Ae.platform()==="win32"?Ce(e).href:e}async function Oe(){let e=await Se(we);if(e===void 0)throw new I;return e}var L=e=>{if(typeof e!="object"||e===null)return e;let t={};for(let r in e)if(e.hasOwnProperty(r)){let n=e[r];typeof n=="object"&&n!==null?Array.isArray(n)?t[r]=ge(n):n.hasOwnProperty("variant")?t[r]={[n.variant]:{}}:n.hasOwnProperty("fields")?t[r]=L(n.fields):t[r]=L(n):t[r]=n}return t},ge=e=>{let t=[];return e.forEach(r=>{typeof r=="object"&&r!==null?Array.isArray(r)?t.push(ge(r)):r.hasOwnProperty("variant")?t.push({[r.variant]:{}}):r.hasOwnProperty("fields")?t.push(L(r.fields)):t.push(L(r)):t.push(r)}),t};var Ee=(r=>(r.Event="event",r.Schema="schema",r))(Ee||{});export{Ee as SubscriptionKind,jt as defineConfig,y as formatAndWriteMove,Ge as formatAndWriteTypescript,Fe as formatMove,q as formatTypescript,Rt as loadConfig,L as parseData,ze as posixPath,de as resolveConfigPath,Ot as schemaGen};
374
+ `)}var St=e=>e;import{findUp as fe}from"find-up";import V from"path";import he from"esbuild";var K=class extends Error{name="NotInsideProjectError";message="You are not inside a Dubhe project"};import{rmSync as ve}from"fs";import{pathToFileURL as ke}from"url";import Se from"os";var xe=["dubhe.config.js","dubhe.config.mjs","dubhe.config.ts","dubhe.config.mts"],z="dubhe.config.example.mjs";async function Mt(e){e=await ce(e);try{return await he.build({entryPoints:[e],format:"esm",outfile:z,platform:"node",bundle:!0,packages:"external"}),e=await ce(z,!0),(await import(e+`?update=${Date.now()}`)).dubheConfig}finally{ve(z,{force:!0})}}async function ce(e,t){return e===void 0?e=await De():V.isAbsolute(e)||(e=V.join(process.cwd(),e),e=V.normalize(e)),t&&Se.platform()==="win32"?ke(e).href:e}async function De(){let e=await fe(xe);if(e===void 0)throw new K;return e}var Ce=(s=>(s.Event="event",s.Schema="schema",s))(Ce||{});export{Ce as SubscriptionKind,St as defineConfig,f as formatAndWriteMove,Oe as formatMove,Mt as loadConfig,vt as schemaGen};
367
375
  //# sourceMappingURL=index.js.map