@0xobelisk/sui-common 1.2.0-pre.1 ā 1.2.0-pre.10
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.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import v from"prettier";import
|
|
1
|
+
import v from"prettier";import q from"prettier-plugin-move-js";async function C(e,t){let r;t&&(r=await v.resolveConfig(t));try{return v.format(e,{plugins:[q],parser:"move-parse",printWidth:120,semi:!0,tabWidth:2,useTabs:!1,bracketSpacing:!0,...r})}catch(o){let a;return o instanceof Error?a=o.message:a=o,console.log(`Error during output formatting: ${a}`),e}}async function M(e){return v.format(e,{parser:"typescript"})}import y from"node:fs/promises";import R from"node:path";import E from"debug";var b=E("dubhe:common"),N=E("dubhe:common");b.log=console.debug.bind(console);N.log=console.error.bind(console);var f=b.extend("codegen"),ee=b.extend("codegen");f.log=console.debug.bind(console);ee.log=console.error.bind(console);async function c(e,t,r){let o=await C(e),a=` // 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
|
-
`,
|
|
7
|
+
`,n="#[test_only]",s=a+o,i="#[allow(lint(share_owned))]";t.includes(".toml")||t.includes("system")||t.includes("migrate")?s=o:t.includes("init")?s=n+o:t.includes("genesis")&&(s=i+o),await y.mkdir(R.dirname(t),{recursive:!0}),await y.writeFile(t,s),f(`${r}: ${t}`)}async function Te(e,t,r){let o=await M(e);await y.mkdir(R.dirname(t),{recursive:!0}),await y.writeFile(t,o),f(`${r}: ${t}`)}function Me(e){return e.replace(/\\/g,"/")}import{existsSync as D}from"fs";import g from"fs";function x(e){g.existsSync(e)&&(g.readdirSync(e).forEach(t=>{let r=`${e}/${t}`;g.lstatSync(r).isDirectory()?x(r):g.unlinkSync(r)}),g.rmdirSync(e))}function h(e){return Object.entries(e).map(([t,r])=>`${t}`).join(",")}function U(e){return`(${Object.entries(e).map(([t,r])=>`${r}`)})`}function m(e){return Object.entries(e).map(([t,r])=>`${t}: ${r}`)}function O(e){return Object.entries(e).map(([t,r])=>`self.${t}`)}function W(e,t){for(let r in e)if(e.hasOwnProperty(r)){let o=e[r];if(typeof o=="string"&&o===t||typeof o=="string"&&o.includes(t)&&o.includes(">"))return!0}return!1}var j={name:"@0xobelisk/sui-common",version:"1.2.0-pre.10",description:"Common low level logic shared between packages",keywords:["sui","obelisk labs","move","blockchain"],type:"module",author:"team@obelisk.build",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",publishConfig:{access:"public"},engines:{node:">=18"},exports:{".":{types:"./dist/index.d.ts",default:"./dist/index.js"}},typesVersions:{"*":{index:["./src/index.ts"]}},types:"./dist/index.d.ts",scripts:{build:"pnpm run build:js","build:js":"tsup && chmod +x ./dist/index.js",clean:"pnpm run clean:js","clean:js":"rimraf dist",dev:"tsup --watch",lint:"eslint . --ext .ts",test:"vitest",format:"prettier --write .","format:check":"prettier --check .","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:"^8.0.3",path:"^0.12.7",prettier:"^3.1.1","prettier-plugin-move-js":"^0.0.5","prettier-plugin-rust":"^0.1.9","prettier-plugin-solidity":"^1.1.2",typescript:"5.1.6",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":"^18.15.11","@types/yargs":"^17.0.10",tsup:"^6.7.0",tsx:"^3.12.6",vitest:"^2.1.3",eslint:"^8.56.0","eslint-config-prettier":"^9.1.0",prettier:"3.3.3"}};async function V(e,t){console.log(`
|
|
8
8
|
\u{1F4C4} Starting Move.toml Generation...`),console.log(` \u2514\u2500 Output path: ${t}/contracts/${e.name}/Move.toml`);let r=`[package]
|
|
9
9
|
name = "${e.name}"
|
|
10
10
|
version = "1.0.0"
|
|
@@ -12,25 +12,25 @@ 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-
|
|
15
|
+
Dubhe = { git = "https://github.com/0xobelisk/dubhe-wip.git", subdir = "packages/sui-framework/contracts/dubhe", rev = "${j.version}" }
|
|
16
16
|
|
|
17
17
|
[addresses]
|
|
18
18
|
sui = "0x2"
|
|
19
19
|
${e.name} = "0x0"
|
|
20
20
|
`;await c(r,`${t}/contracts/${e.name}/Move.toml`,"formatAndWriteMove"),console.log(`\u2705 Move.toml Generation Complete
|
|
21
|
-
`)}function
|
|
21
|
+
`)}function re(e){return e.sort((t,r)=>{let o=t.charAt(0).toLowerCase(),a=r.charAt(0).toLowerCase();return o<a?-1:o>a?1:0})}function oe(e,t){return Object.entries(t).map(([r,o])=>`public(package) fun set_${r}(self: &mut ${e}, ${r}: ${o}) {
|
|
22
22
|
self.${r} = ${r};
|
|
23
23
|
}`).join(`
|
|
24
|
-
`)}function
|
|
24
|
+
`)}function ne(e,t){return`public(package) fun set(self: &mut ${e}, ${m(t)}) {
|
|
25
25
|
${Object.entries(t).map(([r])=>`self.${r} = ${r};`).join(`
|
|
26
26
|
`)}
|
|
27
|
-
}`}function
|
|
27
|
+
}`}function se(e,t){return`public fun get(self: &${e}): ${U(t)} {
|
|
28
28
|
(${O(t)})
|
|
29
|
-
}`}function
|
|
29
|
+
}`}function ae(e,t){return Object.entries(t).map(([r,o])=>`public fun get_${r}(self: &${e}): ${o} {
|
|
30
30
|
self.${r}
|
|
31
31
|
}`).join(`
|
|
32
|
-
`)}function d(e){return e.replace(/([A-Z])/g,"_$1").toLowerCase().replace(/^_/,"")}async function
|
|
33
|
-
\u{1F4E6} Starting Schema Data Generation...`);for(let
|
|
32
|
+
`)}function d(e){return e.replace(/([A-Z])/g,"_$1").toLowerCase().replace(/^_/,"")}async function F(e,t,r){console.log(`
|
|
33
|
+
\u{1F4E6} Starting Schema Data Generation...`);for(let o of Object.keys(t)){let a=o,n=t[o];console.log(` \u2514\u2500 ${a} ${Array.isArray(n)?"(enum)":"(struct)"}: ${JSON.stringify(n)}`);let s="",i=Object.keys(t).filter(u=>Array.isArray(t[u])).map(u=>u);if(Array.isArray(n)){let u=re(n);s=`module ${e}::${e}_${d(a)} {
|
|
34
34
|
public enum ${a} has copy, drop , store {
|
|
35
35
|
${u}
|
|
36
36
|
}
|
|
@@ -40,26 +40,26 @@ ${e.name} = "0x0"
|
|
|
40
40
|
}`).join("")}`}else s=`module ${e}::${e}_${d(a)} {
|
|
41
41
|
use std::ascii::String;
|
|
42
42
|
|
|
43
|
-
${Object.keys(t).map(u=>{if(W(
|
|
43
|
+
${Object.keys(t).map(u=>{if(W(n,u))return`use ${e}::${e}_${d(u)}::${u};`}).filter(Boolean).join(`
|
|
44
44
|
`)}
|
|
45
45
|
|
|
46
46
|
public struct ${a} has copy, drop , store {
|
|
47
|
-
${m(
|
|
47
|
+
${m(n)}
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
public fun new(${m(
|
|
50
|
+
public fun new(${m(n)}): ${a} {
|
|
51
51
|
${a} {
|
|
52
|
-
${
|
|
52
|
+
${h(n)}
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
-
${
|
|
57
|
-
${
|
|
58
|
-
${
|
|
59
|
-
${
|
|
60
|
-
}`;await c(s,`${r}/contracts/${e}/sources/codegen/data/${d(a)}.move`,"formatAndWriteMove")}}function
|
|
61
|
-
`):""}async function w(e,t,r,
|
|
62
|
-
\u{1F4E6} Starting Schema Structure Generation...`),Object.entries(r).forEach(([
|
|
56
|
+
${se(a,n)}
|
|
57
|
+
${ae(a,n)}
|
|
58
|
+
${oe(a,n)}
|
|
59
|
+
${ne(a,n)}
|
|
60
|
+
}`;await c(s,`${r}/contracts/${e}/sources/codegen/data/${d(a)}.move`,"formatAndWriteMove")}}function ie(e,t){return t!=null?Object.keys(t).map(o=>`use ${e}::${e}_${d(o)}::${o};`).join(`
|
|
61
|
+
`):""}async function w(e,t,r,o){console.log(`
|
|
62
|
+
\u{1F4E6} Starting Schema Structure Generation...`),Object.entries(r).forEach(([n,s])=>{console.log(` \u2514\u2500 ${n}: ${s}`)});let a=`module ${e}::${e}_schema {
|
|
63
63
|
use std::ascii::String;
|
|
64
64
|
use std::ascii::string;
|
|
65
65
|
use sui::package::UpgradeCap;
|
|
@@ -70,23 +70,23 @@ ${e.name} = "0x0"
|
|
|
70
70
|
use dubhe::${e=="dubhe"?"storage_double_map_internal":"storage_double_map"}::{Self, StorageDoubleMap};
|
|
71
71
|
use sui::dynamic_field as df;
|
|
72
72
|
|
|
73
|
-
${
|
|
73
|
+
${ie(e,t)}
|
|
74
74
|
|
|
75
75
|
public struct Schema has key, store { id: UID }
|
|
76
76
|
|
|
77
|
-
${Object.entries(r).map(([
|
|
78
|
-
storage::borrow_field(&self.id, b"${
|
|
77
|
+
${Object.entries(r).map(([n,s])=>`public fun borrow_${n}(self: &Schema) : &${s} {
|
|
78
|
+
storage::borrow_field(&self.id, b"${n}")
|
|
79
79
|
}
|
|
80
80
|
|
|
81
|
-
public(package) fun ${
|
|
82
|
-
storage::borrow_mut_field(&mut self.id, b"${
|
|
81
|
+
public(package) fun ${n}(self: &mut Schema): &mut ${s} {
|
|
82
|
+
storage::borrow_mut_field(&mut self.id, b"${n}")
|
|
83
83
|
}
|
|
84
84
|
`).join("")}
|
|
85
85
|
|
|
86
86
|
|
|
87
87
|
public(package) fun create(ctx: &mut TxContext): Schema {
|
|
88
88
|
let mut id = object::new(ctx);
|
|
89
|
-
${Object.entries(r).map(([
|
|
89
|
+
${Object.entries(r).map(([n,s])=>{let i="";return s.includes("StorageValue")?i=`${e=="dubhe"?"storage_value_internal":"storage_value"}::new(b"${n}", ctx)`:s.includes("StorageMap")?i=`${e=="dubhe"?"storage_map_internal":"storage_map"}::new(b"${n}", ctx)`:s.includes("StorageDoubleMap")&&(i=`${e=="dubhe"?"storage_double_map_internal":"storage_double_map"}::new(b"${n}", ctx)`),`storage::add_field<${s}>(&mut id, b"${n}", ${i});`}).join(`
|
|
90
90
|
`)}
|
|
91
91
|
|
|
92
92
|
Schema { id }
|
|
@@ -103,26 +103,26 @@ ${e.name} = "0x0"
|
|
|
103
103
|
public fun migrate(_schema: &mut Schema, _ctx: &mut TxContext) { }
|
|
104
104
|
|
|
105
105
|
// ======================================== View Functions ========================================
|
|
106
|
-
${Object.entries(r).map(([
|
|
107
|
-
self.borrow_${
|
|
106
|
+
${Object.entries(r).map(([n,s])=>{let i=s.match(/<(.+)>/)[1].split(",").map(Y=>Y.trim()),u=[],p="",$="";return s.includes("StorageValue")?(u=[],p=`${i[0]}`,$="get()"):s.includes("StorageMap")?(u=[`key: ${i[0]}`],p=`${i[1]}`,$="get(key)"):s.includes("StorageDoubleMap")&&(u=[`key1: ${i[0]}`,`key2: ${i[1]}`],p=`${i[2]}`,$="get(key1, key2)"),`public fun get_${n}(self: &Schema, ${u}) : &${p} {
|
|
107
|
+
self.borrow_${n}().${$}
|
|
108
108
|
}`}).join(`
|
|
109
109
|
`)}
|
|
110
110
|
// =========================================================================================================
|
|
111
|
-
}`;await c(a,`${
|
|
111
|
+
}`;await c(a,`${o}/contracts/${e}/sources/codegen/core/schema.move`,"formatAndWriteMove")}import{existsSync as L}from"fs";async function B(e,t){let r=`${t}/contracts/${e.name}/sources/scripts/deploy_hook.move`;if(!L(r)){let o=`module ${e.name}::${e.name}_deploy_hook {
|
|
112
112
|
use ${e.name}::${e.name}_schema::Schema;
|
|
113
113
|
${e.name!=="dubhe"?"use dubhe::dubhe_schema::Schema as DubheSchema;":""}
|
|
114
114
|
|
|
115
115
|
public(package) fun run(${e.name!=="dubhe"?"_dubhe_schema: &mut DubheSchema,":""}_schema: &mut Schema, _ctx: &mut TxContext) {
|
|
116
116
|
|
|
117
117
|
}
|
|
118
|
-
}`;await c(
|
|
118
|
+
}`;await c(o,r,"formatAndWriteMove")}}async function I(e,t){if(!L(`${t}/contracts/${e.name}/sources/scripts/migrate.move`)){let r=`module ${e.name}::${e.name}_migrate {
|
|
119
119
|
const ON_CHAIN_VERSION: u32 = 1;
|
|
120
120
|
|
|
121
121
|
public fun on_chain_version(): u32 {
|
|
122
122
|
ON_CHAIN_VERSION
|
|
123
123
|
}
|
|
124
124
|
}
|
|
125
|
-
`;await c(r,`${t}/contracts/${e.name}/sources/scripts/migrate.move`,"formatAndWriteMove")}}async function
|
|
125
|
+
`;await c(r,`${t}/contracts/${e.name}/sources/scripts/migrate.move`,"formatAndWriteMove")}}async function G(e,t){let r=`module ${e.name}::${e.name}_dapp_key {
|
|
126
126
|
/// Authorization token for the app.
|
|
127
127
|
public struct DappKey has copy, drop {}
|
|
128
128
|
|
|
@@ -130,12 +130,12 @@ ${e.name} = "0x0"
|
|
|
130
130
|
DappKey { }
|
|
131
131
|
}
|
|
132
132
|
}
|
|
133
|
-
`;await c(r,`${t}/contracts/${e.name}/sources/codegen/core/dapp_key.move`,"formatAndWriteMove")}function l(e){return e.split("_").map(t=>t.charAt(0).toUpperCase()+t.slice(1).toLowerCase()).join("")}function
|
|
134
|
-
`):""}async function
|
|
135
|
-
\u{1F4E6} Starting Schema Event Generation...`);for(let
|
|
133
|
+
`;await c(r,`${t}/contracts/${e.name}/sources/codegen/core/dapp_key.move`,"formatAndWriteMove")}function l(e){return e.split("_").map(t=>t.charAt(0).toUpperCase()+t.slice(1).toLowerCase()).join("")}function ce(e){return e.replace(/([A-Z])/g,"_$1").toLowerCase().replace(/^_/,"")}function z(e,t){return t!=null?Object.keys(t).map(o=>`use ${e}::${e}_${ce(o)}::${o};`).join(`
|
|
134
|
+
`):""}async function k(e,t,r,o){console.log(`
|
|
135
|
+
\u{1F4E6} Starting Schema Event Generation...`);for(let n of Object.keys(r)){let s=n,i=r[n];console.log(` \u2514\u2500 ${s} event: ${JSON.stringify(i)}`);let u=`module ${e}::${e}_${s}_event {
|
|
136
136
|
use sui::event;
|
|
137
137
|
use std::ascii::String;
|
|
138
|
-
${
|
|
138
|
+
${z(e,t)}
|
|
139
139
|
|
|
140
140
|
public struct ${l(s)}Event has copy, drop {
|
|
141
141
|
${m(i)}
|
|
@@ -143,33 +143,33 @@ ${e.name} = "0x0"
|
|
|
143
143
|
|
|
144
144
|
public fun new(${m(i)}): ${l(s)}Event {
|
|
145
145
|
${l(s)}Event {
|
|
146
|
-
${
|
|
146
|
+
${h(i)}
|
|
147
147
|
}
|
|
148
148
|
}
|
|
149
|
-
}`;await c(u,`${
|
|
149
|
+
}`;await c(u,`${o}/contracts/${e}/sources/codegen/data/${s}_event.move`,"formatAndWriteMove")}let a=`module ${e}::${e}_events {
|
|
150
150
|
use std::ascii::{String, string};
|
|
151
|
-
${
|
|
152
|
-
${Object.entries(r).map(([
|
|
153
|
-
use ${e}::${e}_${
|
|
154
|
-
use ${e}::${e}_${
|
|
155
|
-
public fun ${
|
|
156
|
-
dubhe::storage_event::emit_set_record<${l(
|
|
157
|
-
string(b"${
|
|
151
|
+
${z(e,t)}
|
|
152
|
+
${Object.entries(r).map(([n,s])=>`
|
|
153
|
+
use ${e}::${e}_${n}_event::${l(n)}Event;
|
|
154
|
+
use ${e}::${e}_${n}_event;
|
|
155
|
+
public fun ${n}_event(${m(s)}) {
|
|
156
|
+
dubhe::storage_event::emit_set_record<${l(n)}Event, ${l(n)}Event, ${l(n)}Event>(
|
|
157
|
+
string(b"${n}_event"),
|
|
158
158
|
option::none(),
|
|
159
159
|
option::none(),
|
|
160
|
-
option::some(${e}_${
|
|
160
|
+
option::some(${e}_${n}_event::new(${h(s)}))
|
|
161
161
|
)
|
|
162
162
|
}
|
|
163
163
|
`).join(`
|
|
164
164
|
`)}
|
|
165
|
-
}`;await c(a,`${
|
|
166
|
-
\u{1F4E6} Starting Schema Error Generation...`);let
|
|
167
|
-
${Object.entries(t).map(([a,
|
|
168
|
-
const ${a.toUpperCase()}: vector<u8> = b"${
|
|
165
|
+
}`;await c(a,`${o}/contracts/${e}/sources/codegen/events.move`,"formatAndWriteMove")}import{existsSync as K}from"fs";import H from"node:fs/promises";async function Q(e,t){K(`${t}/contracts/${e.name}/sources/systems`)||await H.mkdir(`${t}/contracts/${e.name}/sources/systems`,{recursive:!0}),K(`${t}/contracts/${e.name}/sources/tests`)||await H.mkdir(`${t}/contracts/${e.name}/sources/tests`,{recursive:!0})}async function J(e,t,r){console.log(`
|
|
166
|
+
\u{1F4E6} Starting Schema Error Generation...`);let o=`module ${e}::${e}_errors {
|
|
167
|
+
${Object.entries(t).map(([a,n])=>(console.log(` \u2514\u2500 ${a}: ${n}`),`#[error]
|
|
168
|
+
const ${a.toUpperCase()}: vector<u8> = b"${n}";
|
|
169
169
|
public fun ${a}_error(condition: bool) { assert!(condition, ${a.toUpperCase()}) }
|
|
170
170
|
`)).join(`
|
|
171
171
|
`)}
|
|
172
|
-
}`;await c(
|
|
172
|
+
}`;await c(o,`${r}/contracts/${e}/sources/codegen/errors.move`,"formatAndWriteMove")}async function Z(e,t){let r=`module ${e.name}::${e.name}_init_test {
|
|
173
173
|
use sui::clock;
|
|
174
174
|
use sui::test_scenario;
|
|
175
175
|
use sui::test_scenario::Scenario;
|
|
@@ -200,7 +200,7 @@ use ${e}::${e}_${o}_event;
|
|
|
200
200
|
}
|
|
201
201
|
`:""}
|
|
202
202
|
}
|
|
203
|
-
`;await c(r,`${t}/contracts/${e.name}/sources/codegen/core/init_test.move`,"formatAndWriteMove");let
|
|
203
|
+
`;await c(r,`${t}/contracts/${e.name}/sources/codegen/core/init_test.move`,"formatAndWriteMove");let o=`module ${e.name}::${e.name}_genesis {
|
|
204
204
|
use std::ascii::string;
|
|
205
205
|
|
|
206
206
|
use sui::clock::Clock;
|
|
@@ -222,8 +222,8 @@ use ${e}::${e}_${o}_event;
|
|
|
222
222
|
sui::transfer::public_share_object(schema);
|
|
223
223
|
}
|
|
224
224
|
}
|
|
225
|
-
`;await c(
|
|
226
|
-
\u{1F680} Starting Schema Generation Process...`),console.log("\u{1F4CB} Project Configuration:"),console.log(` \u2514\u2500 Name: ${e.name}`),console.log(` \u2514\u2500 Description: ${e.description||"No description provided"}`),console.log(` \u2514\u2500 Network: ${r||"testnet"}`);let
|
|
225
|
+
`;await c(o,`${t}/contracts/${e.name}/sources/codegen/core/genesis.move`,"formatAndWriteMove")}async function ht(e,t,r){console.log(`
|
|
226
|
+
\u{1F680} Starting Schema Generation Process...`),console.log("\u{1F4CB} Project Configuration:"),console.log(` \u2514\u2500 Name: ${e.name}`),console.log(` \u2514\u2500 Description: ${e.description||"No description provided"}`),console.log(` \u2514\u2500 Network: ${r||"testnet"}`);let o=t??process.cwd();D(`${o}/contracts/${e.name}`)&&x(`${o}/contracts/${e.name}/sources/codegen`),D(`${o}/contracts/${e.name}/Move.toml`)||await V(e,o),D(`${o}/contracts/${e.name}/sources/script/deploy_hook.move`)||await B(e,o),e.events&&(e.data?await k(e.name,e.data,e.events,o):await k(e.name,null,e.events,o)),e.data?(await F(e.name,e.data,o),await w(e.name,e.data,e.schemas,o)):await w(e.name,null,e.schemas,o),e.errors&&await J(e.name,e.errors,o),await Z(e,o),await Q(e,o),await I(e,o),await G(e,o),console.log(`
|
|
227
227
|
\u2705 Schema Generation Process Complete!
|
|
228
|
-
`)}import{findUp as
|
|
228
|
+
`)}import{findUp as ue}from"find-up";import A from"path";import me from"esbuild";var _=class extends Error{name="NotInsideProjectError";message="You are not inside a Dubhe project"};import{rmSync as pe}from"fs";import{pathToFileURL as le}from"url";import de from"os";var ge=["dubhe.config.js","dubhe.config.mjs","dubhe.config.ts","dubhe.config.mts"],T="dubhe.config.example.mjs";async function kt(e){e=await P(e);try{return await me.build({entryPoints:[e],format:"esm",outfile:T,platform:"node",bundle:!0,packages:"external"}),e=await P(T,!0),(await import(e+`?update=${Date.now()}`)).dubheConfig}finally{pe(T,{force:!0})}}async function P(e,t){return e===void 0?e=await he():A.isAbsolute(e)||(e=A.join(process.cwd(),e),e=A.normalize(e)),t&&de.platform()==="win32"?le(e).href:e}async function he(){let e=await ue(ge);if(e===void 0)throw new _;return e}function Ut(...e){if(e.length===1)return`StorageValue<${e[0]}>`;if(e.length===2)return`StorageMap<${e[0]}, ${e[1]}>`;if(e.length===3)return`StorageDoubleMap<${e[0]}, ${e[1]}, ${e[2]}>`;throw new Error("Invalid number of arguments for storage()")}var S=e=>{if(typeof e!="object"||e===null)return e;let t={};for(let r in e)if(e.hasOwnProperty(r)){let o=e[r];typeof o=="object"&&o!==null?Array.isArray(o)?t[r]=X(o):o.hasOwnProperty("variant")?t[r]={[o.variant]:{}}:o.hasOwnProperty("fields")?t[r]=S(o.fields):t[r]=S(o):t[r]=o}return t},X=e=>{let t=[];return e.forEach(r=>{typeof r=="object"&&r!==null?Array.isArray(r)?t.push(X(r)):r.hasOwnProperty("variant")?t.push({[r.variant]:{}}):r.hasOwnProperty("fields")?t.push(S(r.fields)):t.push(S(r)):t.push(r)}),t};var $e=(r=>(r.Event="event",r.Schema="schema",r))($e||{});export{$e as SubscriptionKind,c as formatAndWriteMove,Te as formatAndWriteTypescript,C as formatMove,M as formatTypescript,kt as loadConfig,S as parseData,Me as posixPath,P as resolveConfigPath,ht as schemaGen,Ut as storage};
|
|
229
229
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/codegen/utils/format.ts","../src/codegen/utils/formatAndWrite.ts","../src/debug.ts","../src/codegen/debug.ts","../src/codegen/utils/posixPath.ts","../src/codegen/utils/renderMove/schemaGen.ts","../src/codegen/utils/renderMove/common.ts","../src/codegen/utils/renderMove/generateToml.ts","../src/codegen/utils/renderMove/generateSchema.ts","../src/codegen/utils/renderMove/generateScript.ts","../src/codegen/utils/renderMove/generateDappKey.ts","../src/codegen/utils/renderMove/generateEvent.ts","../src/codegen/utils/renderMove/generateSystem.ts","../src/codegen/utils/renderMove/generateError.ts","../src/codegen/utils/renderMove/generateInit.ts","../src/codegen/utils/config.ts","../src/codegen/utils/errors.ts","../src/codegen/types/index.ts","../src/parseData/parser/index.ts","../src/primitives/index.ts"],"sourcesContent":["import prettier from 'prettier';\nimport prettierPluginMove from 'prettier-plugin-move-js';\n\nexport async function formatMove(content: string, prettierConfigPath?: string): Promise<string> {\n let config;\n if (prettierConfigPath) {\n config = await prettier.resolveConfig(prettierConfigPath);\n }\n try {\n return prettier.format(content, {\n plugins: [prettierPluginMove],\n parser: 'move-parse',\n printWidth: 120,\n semi: true,\n tabWidth: 2,\n useTabs: false,\n bracketSpacing: true,\n ...config\n });\n } catch (error) {\n let message;\n if (error instanceof Error) {\n message = error.message;\n } else {\n message = error;\n }\n console.log(`Error during output formatting: ${message}`);\n return content;\n }\n}\n\nexport async function formatTypescript(content: string): Promise<string> {\n return prettier.format(content, {\n parser: 'typescript'\n });\n}\n","import fs from 'node:fs/promises';\nimport path from 'node:path';\nimport { formatMove, formatTypescript } from './format';\nimport { debug } from '../debug';\n\nexport async function formatAndWriteMove(\n output: string,\n fullOutputPath: string,\n logPrefix?: string\n): Promise<void> {\n const formattedOutput = await formatMove(output);\n let schemaPrefix = ` // Copyright (c) Obelisk Labs, Inc.\n // SPDX-License-Identifier: Apache-2.0\n #[allow(unused_use)]\n \n /* Autogenerated file. Do not edit manually. */\n \n `;\n\n let initPrefix = `#[test_only]`;\n\n let code = schemaPrefix + formattedOutput;\n\n let deployHookPrefix = `#[allow(lint(share_owned))]`;\n\n if (\n fullOutputPath.includes('.toml') ||\n fullOutputPath.includes('system') ||\n fullOutputPath.includes('migrate')\n ) {\n code = formattedOutput;\n } else if (fullOutputPath.includes('init')) {\n code = initPrefix + formattedOutput;\n } else if (fullOutputPath.includes('genesis')) {\n code = deployHookPrefix + formattedOutput;\n }\n\n await fs.mkdir(path.dirname(fullOutputPath), { recursive: true });\n await fs.writeFile(fullOutputPath, code);\n debug(`${logPrefix}: ${fullOutputPath}`);\n}\n\n/**\n * Formats typescript code using prettier and write it to a file\n * @param output typescript code\n * @param fullOutputPath full path to the output file\n * @param logPrefix prefix for debug logs\n */\nexport async function formatAndWriteTypescript(\n output: string,\n fullOutputPath: string,\n logPrefix: string\n): Promise<void> {\n const formattedOutput = await formatTypescript(output);\n\n await fs.mkdir(path.dirname(fullOutputPath), { recursive: true });\n\n await fs.writeFile(fullOutputPath, formattedOutput);\n debug(`${logPrefix}: ${fullOutputPath}`);\n}\n","import createDebug from 'debug';\n\nexport const debug = createDebug('dubhe:common');\nexport const error = createDebug('dubhe:common');\n\n// Pipe debug output to stdout instead of stderr\ndebug.log = console.debug.bind(console);\n\n// Pipe error output to stderr\nerror.log = console.error.bind(console);\n","import { debug as parentDebug } from '../debug';\n\nexport const debug = parentDebug.extend('codegen');\nexport const error = parentDebug.extend('codegen');\n\n// Pipe debug output to stdout instead of stderr\ndebug.log = console.debug.bind(console);\n\n// Pipe error output to stderr\nerror.log = console.error.bind(console);\n","/**\n * Explicitly normalize a given path to a posix path (using `/` as separator).\n * This should be used for generating Solidity files that will be consumed by solc,\n * because solc expects `/` as path separator, but path.join produces `\\` if the user is on windows.\n */\nexport function posixPath(path: string): string {\n return path.replace(/\\\\/g, '/');\n}\n","import { SchemaType, DubheConfig } from '../../types';\nimport { rmdirSync, existsSync } from 'fs';\nimport { deleteFolderRecursive } from './common';\nimport { generateToml } from './generateToml';\nimport { generateSchemaData, generateSchemaStructure } from './generateSchema';\nimport { generateDeployHook, generateMigrate } from './generateScript';\nimport { generateDappKey } from './generateDappKey';\nimport { generateSchemaEvent } from './generateEvent';\nimport { generateSystemsAndTests } from './generateSystem';\nimport { generateSchemaHub } from './generateSchemaHub';\nimport { generateSchemaError } from './generateError';\nimport { generateDefaultSchema } from './generateDefaultSchema';\nimport { generateInit } from './generateInit';\n\nexport async function schemaGen(\n config: DubheConfig,\n srcPrefix?: string,\n network?: 'mainnet' | 'testnet' | 'devnet' | 'localnet'\n) {\n console.log('\\nš Starting Schema Generation Process...');\n console.log('š Project Configuration:');\n console.log(` āā Name: ${config.name}`);\n console.log(` āā Description: ${config.description || 'No description provided'}`);\n console.log(` āā Network: ${network || 'testnet'}`);\n\n const path = srcPrefix ?? process.cwd();\n\n if (existsSync(`${path}/contracts/${config.name}`)) {\n deleteFolderRecursive(`${path}/contracts/${config.name}/sources/codegen`);\n }\n\n if (!existsSync(`${path}/contracts/${config.name}/Move.toml`)) {\n await generateToml(config, path);\n }\n\n if (!existsSync(`${path}/contracts/${config.name}/sources/script/deploy_hook.move`)) {\n await generateDeployHook(config, path);\n }\n\n if (config.events) {\n if (config.data) {\n await generateSchemaEvent(config.name, config.data, config.events, path);\n } else {\n await generateSchemaEvent(config.name, null, config.events, path);\n }\n }\n\n if (config.data) {\n await generateSchemaData(config.name, config.data, path);\n await generateSchemaStructure(config.name, config.data, config.schemas, path);\n } else {\n await generateSchemaStructure(config.name, null, config.schemas, path);\n }\n\n if (config.errors) {\n await generateSchemaError(config.name, config.errors, path);\n }\n\n // await generateDefaultSchema(config, path);\n await generateInit(config, path);\n await generateSystemsAndTests(config, path);\n await generateMigrate(config, path);\n await generateDappKey(config, path);\n console.log('\\nā
Schema Generation Process Complete!\\n');\n}\n","import { MoveType } from '../../types';\nimport fs from 'fs';\n\nexport function deleteFolderRecursive(path: string) {\n if (fs.existsSync(path)) {\n fs.readdirSync(path).forEach((file) => {\n const curPath = `${path}/${file}`;\n if (fs.lstatSync(curPath).isDirectory()) {\n deleteFolderRecursive(curPath);\n } else {\n fs.unlinkSync(curPath);\n }\n });\n fs.rmdirSync(path);\n }\n}\n\nexport function capitalizeFirstLetter(input: string): string {\n return input.charAt(0).toUpperCase() + input.slice(1);\n}\n\n/**\n *\n * @param values\n * @param prefixArgs\n * @return [ name, age, birth_time ]\n */\nexport function getStructAttrs(values: Record<string, string> | string): string {\n return Object.entries(values)\n .map(([key, _]) => `${key}`)\n .join(',');\n}\n\nfunction isAddress(str: string): boolean {\n const regex = /^0x[a-fA-F0-9]+$/;\n return regex.test(str);\n}\n\n/**\n *\n * @param values\n * @return ( bool , u64 , u64)\n */\n// export function getStructTypes(values: SchemaType): string {\nexport function getStructTypes(values: Record<string, string>): string {\n return `(${Object.entries(values).map(([_, type]) => `${type}`)})`;\n}\n\n/**\n *\n * @param values\n * @return Attributes and types of the struct. [ name: string, age: u64 ]\n */\nexport function getStructAttrsWithType(values: Record<string, string>): string[] {\n return Object.entries(values).map(([key, type]) => `${key}: ${type}`);\n}\n\n/**\n * @param values\n * @return [ data.name, data.age ]\n */\nexport function getStructAttrsQuery(values: Record<string, string>): string[] {\n return Object.entries(values).map(([key, _]) => `self.${key}`);\n}\n\nexport function containsString(obj: Record<string, any>, searchString: string): boolean {\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n const value = obj[key];\n if (\n (typeof value === 'string' && value === searchString) ||\n (typeof value === 'string' && value.includes(searchString) && value.includes('>'))\n ) {\n return true;\n }\n }\n }\n return false;\n}\n","import { DubheConfig } from '../../types';\nimport { formatAndWriteMove } from '../formatAndWrite';\n\nexport async function generateToml(config: DubheConfig, srcPrefix: string) {\n console.log('\\nš Starting Move.toml Generation...');\n console.log(` āā Output path: ${srcPrefix}/contracts/${config.name}/Move.toml`);\n\n let code = `[package]\nname = \"${config.name}\"\nversion = \"1.0.0\"\nedition = \"2024\"\n\n[dependencies]\nSui = { git = \"https://github.com/MystenLabs/sui.git\", subdir = \"crates/sui-framework/packages/sui-framework\", rev = \"mainnet-v1.46.3\" }\nDubhe = { git = \"https://github.com/0xobelisk/dubhe-framework.git\", subdir = \"contracts/dubhe\", rev = \"develop\" }\n\n[addresses]\nsui = \"0x2\"\n${config.name} = \"0x0\"\n`;\n await formatAndWriteMove(\n code,\n `${srcPrefix}/contracts/${config.name}/Move.toml`,\n 'formatAndWriteMove'\n );\n console.log('ā
Move.toml Generation Complete\\n');\n}\n","import { BaseType, SchemaData, SchemaType } from '../../types';\nimport { formatAndWriteMove } from '../formatAndWrite';\nimport {\n getStructAttrsWithType,\n getStructAttrs,\n getStructTypes,\n getStructAttrsQuery,\n containsString\n} from './common';\n\nfunction sortByFirstLetter(arr: string[]): string[] {\n return arr.sort((a, b) => {\n const firstLetterA = a.charAt(0).toLowerCase();\n const firstLetterB = b.charAt(0).toLowerCase();\n\n if (firstLetterA < firstLetterB) {\n return -1;\n }\n if (firstLetterA > firstLetterB) {\n return 1;\n }\n return 0;\n });\n}\n\nexport function capitalizeAndRemoveUnderscores(input: string): string {\n return input\n .split('_')\n .map((word, index) => {\n return index === 0\n ? word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()\n : word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();\n })\n .join('');\n}\n\nexport function renderSetAttrsFunc(\n schemaName: string,\n fields: BaseType | Record<string, BaseType>\n): string {\n return Object.entries(fields)\n .map(\n ([key, type]) =>\n `public(package) fun set_${key}(self: &mut ${schemaName}, ${key}: ${type}) {\n self.${key} = ${key};\n }`\n )\n .join('\\n');\n}\n\nexport function renderSetFunc(schemaName: string, fields: Record<string, string>): string {\n return `public(package) fun set(self: &mut ${schemaName}, ${getStructAttrsWithType(fields)}) {\n ${Object.entries(fields)\n .map(([fieldName]) => `self.${fieldName} = ${fieldName};`)\n .join('\\n')}\n }`;\n}\n\nexport function renderGetAllFunc(schemaName: string, fields: Record<string, string>): string {\n return `public fun get(self: &${schemaName}): ${getStructTypes(fields)} {\n (${getStructAttrsQuery(fields)})\n }`;\n}\n\nexport function renderGetAttrsFunc(\n schemaName: string,\n fields: BaseType | Record<string, BaseType>\n): string {\n return Object.entries(fields)\n .map(\n ([key, type]) => `public fun get_${key}(self: &${schemaName}): ${type} {\n self.${key}\n }`\n )\n .join('\\n');\n}\n\nfunction convertToSnakeCase(input: string): string {\n return input\n .replace(/([A-Z])/g, '_$1')\n .toLowerCase()\n .replace(/^_/, '');\n}\n\nexport async function generateSchemaData(\n projectName: string,\n data: Record<string, SchemaData>,\n path: string\n) {\n console.log('\\nš¦ Starting Schema Data Generation...');\n for (const key of Object.keys(data)) {\n const name = key;\n const fields = data[key];\n console.log(\n ` āā ${name} ${Array.isArray(fields) ? '(enum)' : '(struct)'}: ${JSON.stringify(fields)}`\n );\n let code = '';\n\n const enumNames = Object.keys(data)\n .filter((item) => Array.isArray(data[item]))\n .map((item) => item);\n\n if (Array.isArray(fields)) {\n const sortByFirstLetterFields = sortByFirstLetter(fields);\n code = `module ${projectName}::${projectName}_${convertToSnakeCase(name)} {\n public enum ${name} has copy, drop , store {\n ${sortByFirstLetterFields}\n }\n \n ${sortByFirstLetterFields\n .map((field: string) => {\n return `public fun new_${convertToSnakeCase(field)}(): ${name} {\n ${name}::${field}\n }`;\n })\n .join('')}`;\n } else {\n code = `module ${projectName}::${projectName}_${convertToSnakeCase(name)} {\n use std::ascii::String;\n \n\t\t\t\t\t\t${Object.keys(data)\n .map((name) => {\n if (containsString(fields, name)) {\n return `use ${projectName}::${projectName}_${convertToSnakeCase(name)}::${name};`;\n }\n return undefined;\n })\n .filter(Boolean)\n .join('\\n')}\n\n public struct ${name} has copy, drop , store {\n ${getStructAttrsWithType(fields)}\n }\n \n public fun new(${getStructAttrsWithType(fields)}): ${name} {\n ${name} {\n ${getStructAttrs(fields)}\n }\n }\n \n ${renderGetAllFunc(name, fields)}\n ${renderGetAttrsFunc(name, fields)}\n ${renderSetAttrsFunc(name, fields)}\n ${renderSetFunc(name, fields)}\n }`;\n }\n\n await formatAndWriteMove(\n code,\n `${path}/contracts/${projectName}/sources/codegen/data/${convertToSnakeCase(name)}.move`,\n 'formatAndWriteMove'\n );\n }\n}\n\nfunction generateImport(projectName: string, data: Record<string, SchemaData> | null) {\n if (data != null) {\n const names = Object.keys(data);\n return names\n .map((name) => {\n return `use ${projectName}::${projectName}_${convertToSnakeCase(name)}::${name};`;\n })\n .join('\\n');\n } else {\n return '';\n }\n}\n\nexport async function generateSchemaStructure(\n projectName: string,\n data: Record<string, SchemaData> | null,\n schemas: Record<string, SchemaType>,\n path: string\n) {\n console.log('\\nš¦ Starting Schema Structure Generation...');\n Object.entries(schemas).forEach(([key, value]) => {\n console.log(` āā ${key}: ${value}`);\n });\n const schemaMoudle = `module ${projectName}::${projectName}_schema {\n use std::ascii::String;\n use std::ascii::string;\n use sui::package::UpgradeCap;\n use std::type_name; \n use dubhe::storage;\n use dubhe::${projectName == 'dubhe' ? 'storage_value_internal' : 'storage_value'}::{Self, StorageValue};\n use dubhe::${projectName == 'dubhe' ? 'storage_map_internal' : 'storage_map'}::{Self, StorageMap};\n use dubhe::${projectName == 'dubhe' ? 'storage_double_map_internal' : 'storage_double_map'}::{Self, StorageDoubleMap};\n use sui::dynamic_field as df;\n \n ${generateImport(projectName, data)}\n\n public struct Schema has key, store { id: UID } \n \n ${Object.entries(schemas)\n .map(([key, value]) => {\n return `public fun borrow_${key}(self: &Schema) : &${value} {\n storage::borrow_field(&self.id, b\"${key}\")\n }\n \n public(package) fun ${key}(self: &mut Schema): &mut ${value} {\n storage::borrow_mut_field(&mut self.id, b\"${key}\")\n }\n `;\n })\n .join('')} \n \n \n public(package) fun create(ctx: &mut TxContext): Schema {\n let mut id = object::new(ctx);\n ${Object.entries(schemas)\n .map(([key, value]) => {\n let storage_type = '';\n if (value.includes('StorageValue')) {\n storage_type = `${projectName == 'dubhe' ? 'storage_value_internal' : 'storage_value'}::new(b\"${key}\", ctx)`;\n } else if (value.includes('StorageMap')) {\n storage_type = `${projectName == 'dubhe' ? 'storage_map_internal' : 'storage_map'}::new(b\"${key}\", ctx)`;\n } else if (value.includes('StorageDoubleMap')) {\n storage_type = `${projectName == 'dubhe' ? 'storage_double_map_internal' : 'storage_double_map'}::new(b\"${key}\", ctx)`;\n }\n return `storage::add_field<${value}>(&mut id, b\"${key}\", ${storage_type});`;\n })\n .join('\\n')}\n \n Schema { id }\n }\n \n public(package) fun id(self: &mut Schema): &mut UID {\n\t\t\t\t\t &mut self.id\n\t\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\tpublic(package) fun borrow_id(self: &Schema): &UID {\n\t\t\t\t\t &self.id\n\t\t\t\t\t}\n \n public fun migrate(_schema: &mut Schema, _ctx: &mut TxContext) { }\n \n // ======================================== View Functions ========================================\n ${Object.entries(schemas)\n .map(([key, value]) => {\n // @ts-ignore\n let all_types = value\n .match(/<(.+)>/)[1]\n .split(',')\n .map((type) => type.trim());\n let para_key: string[] = [];\n let para_value = '';\n let borrow_key = '';\n if (value.includes('StorageValue')) {\n para_key = [];\n para_value = `${all_types[0]}`;\n borrow_key = 'get()';\n } else if (value.includes('StorageMap')) {\n para_key = [`key: ${all_types[0]}`];\n para_value = `${all_types[1]}`;\n borrow_key = 'get(key)';\n } else if (value.includes('StorageDoubleMap')) {\n para_key = [`key1: ${all_types[0]}`, `key2: ${all_types[1]}`];\n para_value = `${all_types[2]}`;\n borrow_key = 'get(key1, key2)';\n }\n return `public fun get_${key}(self: &Schema, ${para_key}) : &${para_value} {\n\t\t\t\t\t\t\t\t\tself.borrow_${key}().${borrow_key}\n\t\t\t\t\t\t\t\t}`;\n })\n .join('\\n')}\n // =========================================================================================================\n\t\t\t}`;\n await formatAndWriteMove(\n schemaMoudle,\n\n `${path}/contracts/${projectName}/sources/codegen/core/schema.move`,\n 'formatAndWriteMove'\n );\n}\n","import { DubheConfig } from '../../types';\nimport { formatAndWriteMove } from '../formatAndWrite';\nimport { existsSync } from 'fs';\nimport { capitalizeAndRemoveUnderscores } from './generateSchema';\n\nimport { readFileSync } from 'fs';\n\nfunction capitalizeFirstLetter(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\nexport async function generateDeployHook(config: DubheConfig, srcPrefix: string) {\n const path = `${srcPrefix}/contracts/${config.name}/sources/scripts/deploy_hook.move`;\n if (!existsSync(path)) {\n const code = `module ${config.name}::${config.name}_deploy_hook {\n\t\t\t use ${config.name}::${config.name}_schema::Schema;\n ${config.name !== 'dubhe' ? `use dubhe::dubhe_schema::Schema as DubheSchema;` : '' }\n\n public(package) fun run(${config.name !== 'dubhe' ? `_dubhe_schema: &mut DubheSchema,` : ''}_schema: &mut Schema, _ctx: &mut TxContext) {\n\n }\n}`;\n await formatAndWriteMove(code, path, 'formatAndWriteMove');\n }\n}\n\nexport async function generateMigrate(config: DubheConfig, srcPrefix: string) {\n if (!existsSync(`${srcPrefix}/contracts/${config.name}/sources/scripts/migrate.move`)) {\n let code = `module ${config.name}::${config.name}_migrate {\n const ON_CHAIN_VERSION: u32 = 1;\n\n public fun on_chain_version(): u32 {\n ON_CHAIN_VERSION\n }\n}\n`;\n await formatAndWriteMove(\n code,\n `${srcPrefix}/contracts/${config.name}/sources/scripts/migrate.move`,\n 'formatAndWriteMove'\n );\n }\n}\n","import { DubheConfig } from '../../types';\nimport { formatAndWriteMove } from '../formatAndWrite';\n\nexport async function generateDappKey(config: DubheConfig, srcPrefix: string) {\n let code = `module ${config.name}::${config.name}_dapp_key {\n\\t/// Authorization token for the app.\n\\tpublic struct DappKey has copy, drop {}\n\n\\tpublic(package) fun new(): DappKey {\n\\t\\tDappKey { }\n\\t}\n}\n`;\n await formatAndWriteMove(\n code,\n `${srcPrefix}/contracts/${config.name}/sources/codegen/core/dapp_key.move`,\n 'formatAndWriteMove'\n );\n}\n","import { BaseType, EventData, SchemaData, SchemaType } from '../../types';\nimport { formatAndWriteMove } from '../formatAndWrite';\nimport {\n getStructAttrsWithType,\n getStructAttrs,\n getStructTypes,\n getStructAttrsQuery\n} from './common';\n\n// account_not_found => AccountNotFound,\nfunction toPascalCase(str: string): string {\n return str\n .split('_')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join('');\n}\n\nfunction convertToSnakeCase(input: string): string {\n return input\n .replace(/([A-Z])/g, '_$1')\n .toLowerCase()\n .replace(/^_/, '');\n}\n\nfunction generateImport(projectName: string, data: Record<string, SchemaData> | null) {\n if (data != null) {\n const names = Object.keys(data);\n return names\n .map((name) => {\n return `use ${projectName}::${projectName}_${convertToSnakeCase(name)}::${name};`;\n })\n .join('\\n');\n } else {\n return '';\n }\n}\n\nexport async function generateSchemaEvent(\n projectName: string,\n data: Record<string, SchemaData> | null,\n events: Record<string, EventData>,\n path: string\n) {\n console.log('\\nš¦ Starting Schema Event Generation...');\n for (const key of Object.keys(events)) {\n const name = key;\n const fields = events[key];\n console.log(` āā ${name} event: ${JSON.stringify(fields)}`);\n\n let code = `module ${projectName}::${projectName}_${name}_event {\n\t\t\t\t\t\tuse sui::event;\n\t\t\t\t\t\tuse std::ascii::String;\n\t\t\t\t\t\t${generateImport(projectName, data)}\n\n public struct ${toPascalCase(name)}Event has copy, drop {\n ${getStructAttrsWithType(fields as Record<string, string>)}\n }\n\n public fun new(${getStructAttrsWithType(fields as Record<string, string>)}): ${toPascalCase(name)}Event {\n ${toPascalCase(name)}Event {\n ${getStructAttrs(fields as Record<string, string>)}\n }\n }\n }`;\n await formatAndWriteMove(\n code,\n `${path}/contracts/${projectName}/sources/codegen/data/${name}_event.move`,\n 'formatAndWriteMove'\n );\n }\n\n let code = `module ${projectName}::${projectName}_events {\n\t \tuse std::ascii::{String, string};\n\t \t${generateImport(projectName, data)}\n\t\t${Object.entries(events)\n .map(([name, fields]) => {\n return `\nuse ${projectName}::${projectName}_${name}_event::${toPascalCase(name)}Event;\nuse ${projectName}::${projectName}_${name}_event;\n\t\t\tpublic fun ${name}_event(${getStructAttrsWithType(fields as Record<string, string>)}) {\n\t\t\t dubhe::storage_event::emit_set_record<${toPascalCase(name)}Event, ${toPascalCase(name)}Event, ${toPascalCase(name)}Event>(\n\t\t\t\tstring(b\"${name}_event\"),\n\t\t\t\toption::none(),\n\t\t\t \toption::none(),\n\t\t\t option::some(${projectName}_${name}_event::new(${getStructAttrs(fields as Record<string, string>)}))\n\t\t\t )\n\t\t\t}\n\t\t`;\n })\n .join('\\n')}\t\t\n }`;\n\n await formatAndWriteMove(\n code,\n `${path}/contracts/${projectName}/sources/codegen/events.move`,\n 'formatAndWriteMove'\n );\n}\n","import { DubheConfig } from '../../types';\nimport { formatAndWriteMove } from '../formatAndWrite';\nimport { existsSync } from 'fs';\nimport fs from 'node:fs/promises';\nimport path from 'node:path';\n\nexport async function generateSystemsAndTests(config: DubheConfig, srcPrefix: string) {\n if (!existsSync(`${srcPrefix}/contracts/${config.name}/sources/systems`)) {\n await fs.mkdir(`${srcPrefix}/contracts/${config.name}/sources/systems`, { recursive: true });\n }\n if (!existsSync(`${srcPrefix}/contracts/${config.name}/sources/tests`)) {\n await fs.mkdir(`${srcPrefix}/contracts/${config.name}/sources/tests`, { recursive: true });\n }\n}\n","import { BaseType, ErrorData, SchemaType } from '../../types';\nimport { formatAndWriteMove } from '../formatAndWrite';\nimport {\n getStructAttrsWithType,\n getStructAttrs,\n getStructTypes,\n getStructAttrsQuery\n} from './common';\n\nfunction convertToSnakeCase(input: string): string {\n return input\n .replace(/([A-Z])/g, '_$1')\n .toLowerCase()\n .replace(/^_/, '');\n}\n\nexport async function generateSchemaError(projectName: string, errors: ErrorData, path: string) {\n console.log('\\nš¦ Starting Schema Error Generation...');\n\n let code = `module ${projectName}::${projectName}_errors {\n\t\t${Object.entries(errors)\n .map(([name, message]) => {\n console.log(` āā ${name}: ${message}`);\n return `#[error]\n\t\t\t\tconst ${name.toUpperCase()}: vector<u8> = b\"${message}\";\n\t\t\t\tpublic fun ${name}_error(condition: bool) { assert!(condition, ${name.toUpperCase()}) }\n\t\t`;\n })\n .join('\\n')}\t\t\n }`;\n\n await formatAndWriteMove(\n code,\n `${path}/contracts/${projectName}/sources/codegen/errors.move`,\n 'formatAndWriteMove'\n );\n}\n","import { DubheConfig } from '../../types';\nimport { formatAndWriteMove } from '../formatAndWrite';\nimport { existsSync } from 'fs';\nimport { capitalizeAndRemoveUnderscores } from './generateSchema';\n\nfunction capitalizeFirstLetter(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\nexport async function generateInit(config: DubheConfig, srcPrefix: string) {\n let init_test_code = `module ${config.name}::${config.name}_init_test {\n use sui::clock;\n use sui::test_scenario;\n use sui::test_scenario::Scenario;\n use dubhe::dubhe_schema::Schema as DubheSchema;\n ${config.name !== 'dubhe' ? `use ${config.name}::${config.name}_schema::Schema;` : '' }\n \n public fun deploy_dapp_for_testing(scenario: &mut Scenario): ${config.name !== 'dubhe' ? `(DubheSchema, Schema)` : 'DubheSchema'} {\n ${config.name !== 'dubhe' ? `let mut dubhe_schema = dubhe::dubhe_init_test::create_dubhe_schema_for_other_contract(scenario);` : ''}\n let ctx = test_scenario::ctx(scenario);\n let clock = clock::create_for_testing(ctx);\n ${config.name}::${config.name}_genesis::run(${config.name !== 'dubhe' ? `&mut dubhe_schema,` : ''}&clock, ctx);\n clock::destroy_for_testing(clock);\n test_scenario::next_tx(scenario, ctx.sender());\n ${config.name !== 'dubhe' ? `\n let schema = test_scenario::take_shared<Schema>(scenario);\n (dubhe_schema, schema)\n ` : 'test_scenario::take_shared<DubheSchema>(scenario)'\n }\n }\n\n ${config.name == 'dubhe' ? `\n public fun create_dubhe_schema_for_other_contract(scenario: &mut Scenario): DubheSchema {\n let ctx = test_scenario::ctx(scenario);\n let mut schema = dubhe::dubhe_schema::create(ctx);\n dubhe::dubhe_deploy_hook::run(&mut schema, ctx);\n sui::transfer::public_share_object(schema);\n test_scenario::next_tx(scenario, ctx.sender());\n test_scenario::take_shared<DubheSchema>(scenario)\n }\n ` : ''}\n}\n`;\n await formatAndWriteMove(\n init_test_code,\n `${srcPrefix}/contracts/${config.name}/sources/codegen/core/init_test.move`,\n 'formatAndWriteMove'\n );\n\n let init_code = `module ${config.name}::${config.name}_genesis {\n use std::ascii::string;\n\n use sui::clock::Clock;\n\n ${config.name !== 'dubhe' ? `use dubhe::dubhe_schema::Schema as DubheSchema;` : '' }\n public entry fun run(${config.name !== 'dubhe' ? `_dubhe_schema: &mut DubheSchema,` : ''}clock: &Clock, ctx: &mut TxContext) {\n // Create schemas\n let mut schema = ${config.name}::${config.name}_schema::create(ctx);\n // Setup default storage\n dubhe::dubhe_dapp_system::create_dapp(\n ${config.name !== 'dubhe' ? `_dubhe_schema` : '&mut schema'}, \n ${config.name}::${config.name}_dapp_key::new(), \n dubhe::dubhe_dapp_metadata::new(string(b\"${config.name}\"), string(b\"${config.description}\"), vector[], string(b\"\"), clock.timestamp_ms(), vector[]), \n ctx\n );\n // Logic that needs to be automated once the contract is deployed\n ${config.name}::${config.name}_deploy_hook::run(${config.name !== 'dubhe' ? `_dubhe_schema,` : ''}&mut schema, ctx);\n // Authorize schemas and public share objects\n sui::transfer::public_share_object(schema);\n }\n}\n`;\n await formatAndWriteMove(\n init_code,\n\n `${srcPrefix}/contracts/${config.name}/sources/codegen/core/genesis.move`,\n 'formatAndWriteMove'\n );\n}\n","import { findUp } from 'find-up';\nimport path from 'path';\nimport esbuild from 'esbuild';\nimport { NotInsideProjectError } from './errors';\nimport { rmSync } from 'fs';\nimport { pathToFileURL } from 'url';\nimport os from 'os';\n\n// In order of preference files are checked\nconst configFiles = ['dubhe.config.js', 'dubhe.config.mjs', 'dubhe.config.ts', 'dubhe.config.mts'];\nconst TEMP_CONFIG = 'dubhe.config.example.mjs';\n\nexport async function loadConfig(configPath?: string): Promise<unknown> {\n configPath = await resolveConfigPath(configPath);\n try {\n await esbuild.build({\n entryPoints: [configPath],\n format: 'esm',\n outfile: TEMP_CONFIG,\n // https://esbuild.github.io/getting-started/#bundling-for-node\n platform: 'node',\n // bundle local imports (otherwise it may error, js can't import ts)\n bundle: true,\n // avoid bundling external imports (it's unnecessary and esbuild can't handle all node features)\n packages: 'external'\n });\n configPath = await resolveConfigPath(TEMP_CONFIG, true);\n // Node.js caches dynamic imports, so without appending a cache breaking\n // param like `?update={Date.now()}` this import always returns the same config\n // if called multiple times in a single process, like the `dev-contracts` cli\n return (await import(configPath + `?update=${Date.now()}`)).dubheConfig;\n } finally {\n rmSync(TEMP_CONFIG, { force: true });\n }\n}\n\nexport async function resolveConfigPath(configPath: string | undefined, toFileURL?: boolean) {\n if (configPath === undefined) {\n configPath = await getUserConfigPath();\n } else {\n if (!path.isAbsolute(configPath)) {\n configPath = path.join(process.cwd(), configPath);\n configPath = path.normalize(configPath);\n }\n }\n\n // Add `file:///` for Windows support\n // (see https://github.com/nodejs/node/issues/31710)\n return toFileURL && os.platform() === 'win32' ? pathToFileURL(configPath).href : configPath;\n}\n\nasync function getUserConfigPath() {\n const tsConfigPath = await findUp(configFiles);\n if (tsConfigPath === undefined) {\n throw new NotInsideProjectError();\n }\n return tsConfigPath;\n}\n","export class NotInsideProjectError extends Error {\n name = 'NotInsideProjectError';\n message = 'You are not inside a Dubhe project';\n}\n","export type BaseType =\n | 'String'\n | 'vector<String>'\n | 'address'\n | 'bool'\n | 'u8'\n | 'u32'\n | 'u64'\n | 'u128'\n | 'vector<address>'\n | 'vector<bool>'\n | 'vector<u8>'\n | 'vector<vector<u8>>'\n | 'vector<u32>'\n | 'vector<u64>'\n | 'vector<u128>'\n | string;\n\nexport type StorageDataType = 'Struct' | 'Enum';\n\nexport type StorageMapType = 'Map' | 'Bag' | 'Table';\n\ntype Address = string;\ntype Bool = boolean;\ntype U8 = number;\ntype U32 = number;\ntype U64 = number;\ntype U128 = number;\ntype Vector<T> = T[];\n\nexport type BaseValueType =\n | String\n | Address\n | Bool\n | U8\n | U32\n | U64\n | U128\n | Vector<Address>\n | Vector<Bool>\n | Vector<U8>\n | Vector<Vector<U8>>\n | Vector<U64>\n | Vector<U128>;\n\nexport type SchemaData = Record<string, string> | string[];\nexport type SchemaType = string;\nexport type EventData = Record<string, string>;\nexport type ErrorData = Record<string, string>;\n\ntype DataType = any;\n\nexport function storage<T extends DataType>(value: T): SchemaType;\nexport function storage<K extends DataType, V extends DataType>(key: K, value: V): SchemaType;\nexport function storage<K1 extends DataType, K2 extends DataType, V extends DataType>(\n key1: K1,\n key2: K2,\n value: V\n): SchemaType;\nexport function storage(...args: DataType[]): SchemaType {\n if (args.length === 1) {\n return `StorageValue<${args[0]}>`;\n } else if (args.length === 2) {\n return `StorageMap<${args[0]}, ${args[1]}>`;\n } else if (args.length === 3) {\n return `StorageDoubleMap<${args[0]}, ${args[1]}, ${args[2]}>`;\n }\n throw new Error('Invalid number of arguments for storage()');\n}\n\nexport type Plugin = 'merak';\n\nexport type DubheConfig = {\n name: string;\n description: string;\n data?: Record<string, SchemaData>;\n schemas: Record<string, SchemaType>;\n events?: Record<string, EventData>;\n errors?: ErrorData;\n plugins?: Plugin[];\n};\n\nexport type MoveType =\n | 'string'\n | 'vector<string>'\n | 'String'\n | 'vector<String>'\n | 'address'\n | 'bool'\n | 'u8'\n | 'u32'\n | 'u64'\n | 'u128'\n | 'vector<address>'\n | 'vector<bool>'\n | 'vector<u8>'\n | 'vector<vector<u8>>'\n | 'vector<u32>'\n | 'vector<u64>'\n | 'vector<u128>';\n","export const parseData = (data: any) => {\n if (typeof data !== 'object' || data === null) {\n return data;\n }\n const parsedData: any = {};\n for (const key in data) {\n if (data.hasOwnProperty(key)) {\n // @ts-ignore\n const value = data[key];\n // console.log(\"===========\", value)\n if (typeof value === 'object' && value !== null) {\n if (Array.isArray(value)) {\n parsedData[key] = handleArray(value);\n } else if (value.hasOwnProperty('variant')) {\n parsedData[key] = { [value.variant]: {} };\n } else if (value.hasOwnProperty('fields')) {\n parsedData[key] = parseData(value.fields);\n } else {\n parsedData[key] = parseData(value);\n }\n } else {\n parsedData[key] = value;\n }\n }\n }\n return parsedData;\n};\n\nconst handleArray = (data: any[]): any[] => {\n let returnData: any[] = [];\n data.forEach((item) => {\n if (typeof item === 'object' && item !== null) {\n if (Array.isArray(item)) {\n returnData.push(handleArray(item));\n } else if (item.hasOwnProperty('variant')) {\n returnData.push({ [item.variant]: {} });\n } else if (item.hasOwnProperty('fields')) {\n returnData.push(parseData(item.fields));\n } else {\n returnData.push(parseData(item));\n }\n } else {\n returnData.push(item);\n }\n });\n return returnData;\n};\n","export enum SubscriptionKind {\n Event = 'event',\n Schema = 'schema'\n}\n\nexport type SubscribableType =\n | { kind: SubscriptionKind.Event; name?: string; sender?: string }\n | { kind: SubscriptionKind.Schema; name?: string };\n"],"mappings":"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","names":["prettier","prettierPluginMove","formatMove","content","prettierConfigPath","config","error","message","formatTypescript","fs","path","createDebug","debug","error","debug","error","formatAndWriteMove","output","fullOutputPath","logPrefix","formattedOutput","formatMove","schemaPrefix","initPrefix","code","deployHookPrefix","fs","path","debug","formatAndWriteTypescript","formatTypescript","posixPath","path","existsSync","fs","deleteFolderRecursive","path","file","curPath","getStructAttrs","values","key","_","getStructTypes","values","_","type","getStructAttrsWithType","key","getStructAttrsQuery","containsString","obj","searchString","value","generateToml","config","srcPrefix","code","formatAndWriteMove","sortByFirstLetter","arr","a","b","firstLetterA","firstLetterB","renderSetAttrsFunc","schemaName","fields","key","type","renderSetFunc","getStructAttrsWithType","fieldName","renderGetAllFunc","getStructTypes","getStructAttrsQuery","renderGetAttrsFunc","convertToSnakeCase","input","generateSchemaData","projectName","data","path","name","code","enumNames","item","sortByFirstLetterFields","sortByFirstLetter","field","containsString","getStructAttrs","formatAndWriteMove","generateImport","generateSchemaStructure","schemas","value","schemaMoudle","storage_type","all_types","para_key","para_value","borrow_key","existsSync","generateDeployHook","config","srcPrefix","path","existsSync","code","formatAndWriteMove","generateMigrate","generateDappKey","config","srcPrefix","code","formatAndWriteMove","toPascalCase","str","word","convertToSnakeCase","input","generateImport","projectName","data","name","generateSchemaEvent","events","path","key","fields","code","getStructAttrsWithType","getStructAttrs","formatAndWriteMove","existsSync","fs","generateSystemsAndTests","config","srcPrefix","generateSchemaError","projectName","errors","path","code","name","message","formatAndWriteMove","generateInit","config","srcPrefix","init_test_code","formatAndWriteMove","init_code","schemaGen","config","srcPrefix","network","path","existsSync","deleteFolderRecursive","generateToml","generateDeployHook","generateSchemaEvent","generateSchemaData","generateSchemaStructure","generateSchemaError","generateInit","generateSystemsAndTests","generateMigrate","generateDappKey","findUp","path","esbuild","NotInsideProjectError","rmSync","pathToFileURL","os","configFiles","TEMP_CONFIG","loadConfig","configPath","resolveConfigPath","esbuild","toFileURL","getUserConfigPath","path","tsConfigPath","findUp","NotInsideProjectError","storage","args","parseData","data","parsedData","key","value","handleArray","returnData","item","SubscriptionKind"]}
|
|
1
|
+
{"version":3,"sources":["../src/codegen/utils/format.ts","../src/codegen/utils/formatAndWrite.ts","../src/debug.ts","../src/codegen/debug.ts","../src/codegen/utils/posixPath.ts","../src/codegen/utils/renderMove/schemaGen.ts","../src/codegen/utils/renderMove/common.ts","../package.json","../src/codegen/utils/renderMove/generateToml.ts","../src/codegen/utils/renderMove/generateSchema.ts","../src/codegen/utils/renderMove/generateScript.ts","../src/codegen/utils/renderMove/generateDappKey.ts","../src/codegen/utils/renderMove/generateEvent.ts","../src/codegen/utils/renderMove/generateSystem.ts","../src/codegen/utils/renderMove/generateError.ts","../src/codegen/utils/renderMove/generateInit.ts","../src/codegen/utils/config.ts","../src/codegen/utils/errors.ts","../src/codegen/types/index.ts","../src/parseData/parser/index.ts","../src/primitives/index.ts"],"sourcesContent":["import prettier from 'prettier';\nimport prettierPluginMove from 'prettier-plugin-move-js';\n\nexport async function formatMove(content: string, prettierConfigPath?: string): Promise<string> {\n let config;\n if (prettierConfigPath) {\n config = await prettier.resolveConfig(prettierConfigPath);\n }\n try {\n return prettier.format(content, {\n plugins: [prettierPluginMove],\n parser: 'move-parse',\n printWidth: 120,\n semi: true,\n tabWidth: 2,\n useTabs: false,\n bracketSpacing: true,\n ...config\n });\n } catch (error) {\n let message;\n if (error instanceof Error) {\n message = error.message;\n } else {\n message = error;\n }\n console.log(`Error during output formatting: ${message}`);\n return content;\n }\n}\n\nexport async function formatTypescript(content: string): Promise<string> {\n return prettier.format(content, {\n parser: 'typescript'\n });\n}\n","import fs from 'node:fs/promises';\nimport path from 'node:path';\nimport { formatMove, formatTypescript } from './format';\nimport { debug } from '../debug';\n\nexport async function formatAndWriteMove(\n output: string,\n fullOutputPath: string,\n logPrefix?: string\n): Promise<void> {\n const formattedOutput = await formatMove(output);\n let schemaPrefix = ` // Copyright (c) Obelisk Labs, Inc.\n // SPDX-License-Identifier: Apache-2.0\n #[allow(unused_use)]\n \n /* Autogenerated file. Do not edit manually. */\n \n `;\n\n let initPrefix = `#[test_only]`;\n\n let code = schemaPrefix + formattedOutput;\n\n let deployHookPrefix = `#[allow(lint(share_owned))]`;\n\n if (\n fullOutputPath.includes('.toml') ||\n fullOutputPath.includes('system') ||\n fullOutputPath.includes('migrate')\n ) {\n code = formattedOutput;\n } else if (fullOutputPath.includes('init')) {\n code = initPrefix + formattedOutput;\n } else if (fullOutputPath.includes('genesis')) {\n code = deployHookPrefix + formattedOutput;\n }\n\n await fs.mkdir(path.dirname(fullOutputPath), { recursive: true });\n await fs.writeFile(fullOutputPath, code);\n debug(`${logPrefix}: ${fullOutputPath}`);\n}\n\n/**\n * Formats typescript code using prettier and write it to a file\n * @param output typescript code\n * @param fullOutputPath full path to the output file\n * @param logPrefix prefix for debug logs\n */\nexport async function formatAndWriteTypescript(\n output: string,\n fullOutputPath: string,\n logPrefix: string\n): Promise<void> {\n const formattedOutput = await formatTypescript(output);\n\n await fs.mkdir(path.dirname(fullOutputPath), { recursive: true });\n\n await fs.writeFile(fullOutputPath, formattedOutput);\n debug(`${logPrefix}: ${fullOutputPath}`);\n}\n","import createDebug from 'debug';\n\nexport const debug = createDebug('dubhe:common');\nexport const error = createDebug('dubhe:common');\n\n// Pipe debug output to stdout instead of stderr\ndebug.log = console.debug.bind(console);\n\n// Pipe error output to stderr\nerror.log = console.error.bind(console);\n","import { debug as parentDebug } from '../debug';\n\nexport const debug = parentDebug.extend('codegen');\nexport const error = parentDebug.extend('codegen');\n\n// Pipe debug output to stdout instead of stderr\ndebug.log = console.debug.bind(console);\n\n// Pipe error output to stderr\nerror.log = console.error.bind(console);\n","/**\n * Explicitly normalize a given path to a posix path (using `/` as separator).\n * This should be used for generating Solidity files that will be consumed by solc,\n * because solc expects `/` as path separator, but path.join produces `\\` if the user is on windows.\n */\nexport function posixPath(path: string): string {\n return path.replace(/\\\\/g, '/');\n}\n","import { SchemaType, DubheConfig } from '../../types';\nimport { rmdirSync, existsSync } from 'fs';\nimport { deleteFolderRecursive } from './common';\nimport { generateToml } from './generateToml';\nimport { generateSchemaData, generateSchemaStructure } from './generateSchema';\nimport { generateDeployHook, generateMigrate } from './generateScript';\nimport { generateDappKey } from './generateDappKey';\nimport { generateSchemaEvent } from './generateEvent';\nimport { generateSystemsAndTests } from './generateSystem';\nimport { generateSchemaHub } from './generateSchemaHub';\nimport { generateSchemaError } from './generateError';\nimport { generateDefaultSchema } from './generateDefaultSchema';\nimport { generateInit } from './generateInit';\n\nexport async function schemaGen(\n config: DubheConfig,\n srcPrefix?: string,\n network?: 'mainnet' | 'testnet' | 'devnet' | 'localnet'\n) {\n console.log('\\nš Starting Schema Generation Process...');\n console.log('š Project Configuration:');\n console.log(` āā Name: ${config.name}`);\n console.log(` āā Description: ${config.description || 'No description provided'}`);\n console.log(` āā Network: ${network || 'testnet'}`);\n\n const path = srcPrefix ?? process.cwd();\n\n if (existsSync(`${path}/contracts/${config.name}`)) {\n deleteFolderRecursive(`${path}/contracts/${config.name}/sources/codegen`);\n }\n\n if (!existsSync(`${path}/contracts/${config.name}/Move.toml`)) {\n await generateToml(config, path);\n }\n\n if (!existsSync(`${path}/contracts/${config.name}/sources/script/deploy_hook.move`)) {\n await generateDeployHook(config, path);\n }\n\n if (config.events) {\n if (config.data) {\n await generateSchemaEvent(config.name, config.data, config.events, path);\n } else {\n await generateSchemaEvent(config.name, null, config.events, path);\n }\n }\n\n if (config.data) {\n await generateSchemaData(config.name, config.data, path);\n await generateSchemaStructure(config.name, config.data, config.schemas, path);\n } else {\n await generateSchemaStructure(config.name, null, config.schemas, path);\n }\n\n if (config.errors) {\n await generateSchemaError(config.name, config.errors, path);\n }\n\n // await generateDefaultSchema(config, path);\n await generateInit(config, path);\n await generateSystemsAndTests(config, path);\n await generateMigrate(config, path);\n await generateDappKey(config, path);\n console.log('\\nā
Schema Generation Process Complete!\\n');\n}\n","import { MoveType } from '../../types';\nimport fs from 'fs';\n\nexport function deleteFolderRecursive(path: string) {\n if (fs.existsSync(path)) {\n fs.readdirSync(path).forEach((file) => {\n const curPath = `${path}/${file}`;\n if (fs.lstatSync(curPath).isDirectory()) {\n deleteFolderRecursive(curPath);\n } else {\n fs.unlinkSync(curPath);\n }\n });\n fs.rmdirSync(path);\n }\n}\n\nexport function capitalizeFirstLetter(input: string): string {\n return input.charAt(0).toUpperCase() + input.slice(1);\n}\n\n/**\n *\n * @param values\n * @param prefixArgs\n * @return [ name, age, birth_time ]\n */\nexport function getStructAttrs(values: Record<string, string> | string): string {\n return Object.entries(values)\n .map(([key, _]) => `${key}`)\n .join(',');\n}\n\nfunction isAddress(str: string): boolean {\n const regex = /^0x[a-fA-F0-9]+$/;\n return regex.test(str);\n}\n\n/**\n *\n * @param values\n * @return ( bool , u64 , u64)\n */\n// export function getStructTypes(values: SchemaType): string {\nexport function getStructTypes(values: Record<string, string>): string {\n return `(${Object.entries(values).map(([_, type]) => `${type}`)})`;\n}\n\n/**\n *\n * @param values\n * @return Attributes and types of the struct. [ name: string, age: u64 ]\n */\nexport function getStructAttrsWithType(values: Record<string, string>): string[] {\n return Object.entries(values).map(([key, type]) => `${key}: ${type}`);\n}\n\n/**\n * @param values\n * @return [ data.name, data.age ]\n */\nexport function getStructAttrsQuery(values: Record<string, string>): string[] {\n return Object.entries(values).map(([key, _]) => `self.${key}`);\n}\n\nexport function containsString(obj: Record<string, any>, searchString: string): boolean {\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n const value = obj[key];\n if (\n (typeof value === 'string' && value === searchString) ||\n (typeof value === 'string' && value.includes(searchString) && value.includes('>'))\n ) {\n return true;\n }\n }\n }\n return false;\n}\n","{\n \"name\": \"@0xobelisk/sui-common\",\n \"version\": \"1.2.0-pre.10\",\n \"description\": \"Common low level logic shared between packages\",\n \"keywords\": [\n \"sui\",\n \"obelisk labs\",\n \"move\",\n \"blockchain\"\n ],\n \"type\": \"module\",\n \"author\": \"team@obelisk.build\",\n \"homepage\": \"https://github.com/0xobelisk/dubhe/tree/main/packages/sui-common#readme\",\n \"bugs\": \"https://github.com/0xobelisk/dubhe/issues\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/0xobelisk/dubhe.git\"\n },\n \"license\": \"Apache-2.0\",\n \"publishConfig\": {\n \"access\": \"public\"\n },\n \"engines\": {\n \"node\": \">=18\"\n },\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"default\": \"./dist/index.js\"\n }\n },\n \"typesVersions\": {\n \"*\": {\n \"index\": [\n \"./src/index.ts\"\n ]\n }\n },\n \"types\": \"./dist/index.d.ts\",\n \"scripts\": {\n \"build\": \"pnpm run build:js\",\n \"build:js\": \"tsup && chmod +x ./dist/index.js\",\n \"clean\": \"pnpm run clean:js\",\n \"clean:js\": \"rimraf dist\",\n \"dev\": \"tsup --watch\",\n \"lint\": \"eslint . --ext .ts\",\n \"test\": \"vitest\",\n \"format\": \"prettier --write .\",\n \"format:check\": \"prettier --check .\",\n \"type-check\": \"tsc --noEmit\",\n \"validate\": \"pnpm format:check && pnpm type-check\"\n },\n \"dependencies\": {\n \"chalk\": \"^5.0.1\",\n \"debug\": \"^4.3.4\",\n \"dotenv\": \"^16.0.3\",\n \"ejs\": \"^3.1.8\",\n \"esbuild\": \"^0.17.15\",\n \"execa\": \"^7.0.0\",\n \"find-up\": \"^6.3.0\",\n \"glob\": \"^8.0.3\",\n \"path\": \"^0.12.7\",\n \"prettier\": \"^3.1.1\",\n \"prettier-plugin-move-js\": \"^0.0.5\",\n \"prettier-plugin-rust\": \"^0.1.9\",\n \"prettier-plugin-solidity\": \"^1.1.2\",\n \"typescript\": \"5.1.6\",\n \"yargs\": \"^17.7.1\",\n \"zod\": \"^3.22.3\",\n \"zod-validation-error\": \"^1.3.0\"\n },\n \"devDependencies\": {\n \"@types/debug\": \"^4.1.12\",\n \"@types/ejs\": \"^3.1.1\",\n \"@types/glob\": \"^7.2.0\",\n \"@types/node\": \"^18.15.11\",\n \"@types/yargs\": \"^17.0.10\",\n \"tsup\": \"^6.7.0\",\n \"tsx\": \"^3.12.6\",\n \"vitest\": \"^2.1.3\",\n \"eslint\": \"^8.56.0\",\n \"eslint-config-prettier\": \"^9.1.0\",\n \"prettier\": \"3.3.3\"\n }\n}\n","import { DubheConfig } from '../../types';\nimport { formatAndWriteMove } from '../formatAndWrite';\nimport packageJson from '../../../../package.json';\n\nexport async function generateToml(config: DubheConfig, srcPrefix: string) {\n console.log('\\nš Starting Move.toml Generation...');\n console.log(` āā Output path: ${srcPrefix}/contracts/${config.name}/Move.toml`);\n\n let code = `[package]\nname = \"${config.name}\"\nversion = \"1.0.0\"\nedition = \"2024\"\n\n[dependencies]\nSui = { git = \"https://github.com/MystenLabs/sui.git\", subdir = \"crates/sui-framework/packages/sui-framework\", rev = \"mainnet-v1.46.3\" }\nDubhe = { git = \"https://github.com/0xobelisk/dubhe-wip.git\", subdir = \"packages/sui-framework/contracts/dubhe\", rev = \"${packageJson.version}\" }\n\n[addresses]\nsui = \"0x2\"\n${config.name} = \"0x0\"\n`;\n await formatAndWriteMove(\n code,\n `${srcPrefix}/contracts/${config.name}/Move.toml`,\n 'formatAndWriteMove'\n );\n console.log('ā
Move.toml Generation Complete\\n');\n}\n","import { BaseType, SchemaData, SchemaType } from '../../types';\nimport { formatAndWriteMove } from '../formatAndWrite';\nimport {\n getStructAttrsWithType,\n getStructAttrs,\n getStructTypes,\n getStructAttrsQuery,\n containsString\n} from './common';\n\nfunction sortByFirstLetter(arr: string[]): string[] {\n return arr.sort((a, b) => {\n const firstLetterA = a.charAt(0).toLowerCase();\n const firstLetterB = b.charAt(0).toLowerCase();\n\n if (firstLetterA < firstLetterB) {\n return -1;\n }\n if (firstLetterA > firstLetterB) {\n return 1;\n }\n return 0;\n });\n}\n\nexport function capitalizeAndRemoveUnderscores(input: string): string {\n return input\n .split('_')\n .map((word, index) => {\n return index === 0\n ? word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()\n : word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();\n })\n .join('');\n}\n\nexport function renderSetAttrsFunc(\n schemaName: string,\n fields: BaseType | Record<string, BaseType>\n): string {\n return Object.entries(fields)\n .map(\n ([key, type]) =>\n `public(package) fun set_${key}(self: &mut ${schemaName}, ${key}: ${type}) {\n self.${key} = ${key};\n }`\n )\n .join('\\n');\n}\n\nexport function renderSetFunc(schemaName: string, fields: Record<string, string>): string {\n return `public(package) fun set(self: &mut ${schemaName}, ${getStructAttrsWithType(fields)}) {\n ${Object.entries(fields)\n .map(([fieldName]) => `self.${fieldName} = ${fieldName};`)\n .join('\\n')}\n }`;\n}\n\nexport function renderGetAllFunc(schemaName: string, fields: Record<string, string>): string {\n return `public fun get(self: &${schemaName}): ${getStructTypes(fields)} {\n (${getStructAttrsQuery(fields)})\n }`;\n}\n\nexport function renderGetAttrsFunc(\n schemaName: string,\n fields: BaseType | Record<string, BaseType>\n): string {\n return Object.entries(fields)\n .map(\n ([key, type]) => `public fun get_${key}(self: &${schemaName}): ${type} {\n self.${key}\n }`\n )\n .join('\\n');\n}\n\nfunction convertToSnakeCase(input: string): string {\n return input\n .replace(/([A-Z])/g, '_$1')\n .toLowerCase()\n .replace(/^_/, '');\n}\n\nexport async function generateSchemaData(\n projectName: string,\n data: Record<string, SchemaData>,\n path: string\n) {\n console.log('\\nš¦ Starting Schema Data Generation...');\n for (const key of Object.keys(data)) {\n const name = key;\n const fields = data[key];\n console.log(\n ` āā ${name} ${Array.isArray(fields) ? '(enum)' : '(struct)'}: ${JSON.stringify(fields)}`\n );\n let code = '';\n\n const enumNames = Object.keys(data)\n .filter((item) => Array.isArray(data[item]))\n .map((item) => item);\n\n if (Array.isArray(fields)) {\n const sortByFirstLetterFields = sortByFirstLetter(fields);\n code = `module ${projectName}::${projectName}_${convertToSnakeCase(name)} {\n public enum ${name} has copy, drop , store {\n ${sortByFirstLetterFields}\n }\n \n ${sortByFirstLetterFields\n .map((field: string) => {\n return `public fun new_${convertToSnakeCase(field)}(): ${name} {\n ${name}::${field}\n }`;\n })\n .join('')}`;\n } else {\n code = `module ${projectName}::${projectName}_${convertToSnakeCase(name)} {\n use std::ascii::String;\n \n\t\t\t\t\t\t${Object.keys(data)\n .map((name) => {\n if (containsString(fields, name)) {\n return `use ${projectName}::${projectName}_${convertToSnakeCase(name)}::${name};`;\n }\n return undefined;\n })\n .filter(Boolean)\n .join('\\n')}\n\n public struct ${name} has copy, drop , store {\n ${getStructAttrsWithType(fields)}\n }\n \n public fun new(${getStructAttrsWithType(fields)}): ${name} {\n ${name} {\n ${getStructAttrs(fields)}\n }\n }\n \n ${renderGetAllFunc(name, fields)}\n ${renderGetAttrsFunc(name, fields)}\n ${renderSetAttrsFunc(name, fields)}\n ${renderSetFunc(name, fields)}\n }`;\n }\n\n await formatAndWriteMove(\n code,\n `${path}/contracts/${projectName}/sources/codegen/data/${convertToSnakeCase(name)}.move`,\n 'formatAndWriteMove'\n );\n }\n}\n\nfunction generateImport(projectName: string, data: Record<string, SchemaData> | null) {\n if (data != null) {\n const names = Object.keys(data);\n return names\n .map((name) => {\n return `use ${projectName}::${projectName}_${convertToSnakeCase(name)}::${name};`;\n })\n .join('\\n');\n } else {\n return '';\n }\n}\n\nexport async function generateSchemaStructure(\n projectName: string,\n data: Record<string, SchemaData> | null,\n schemas: Record<string, SchemaType>,\n path: string\n) {\n console.log('\\nš¦ Starting Schema Structure Generation...');\n Object.entries(schemas).forEach(([key, value]) => {\n console.log(` āā ${key}: ${value}`);\n });\n const schemaMoudle = `module ${projectName}::${projectName}_schema {\n use std::ascii::String;\n use std::ascii::string;\n use sui::package::UpgradeCap;\n use std::type_name; \n use dubhe::storage;\n use dubhe::${projectName == 'dubhe' ? 'storage_value_internal' : 'storage_value'}::{Self, StorageValue};\n use dubhe::${projectName == 'dubhe' ? 'storage_map_internal' : 'storage_map'}::{Self, StorageMap};\n use dubhe::${projectName == 'dubhe' ? 'storage_double_map_internal' : 'storage_double_map'}::{Self, StorageDoubleMap};\n use sui::dynamic_field as df;\n \n ${generateImport(projectName, data)}\n\n public struct Schema has key, store { id: UID } \n \n ${Object.entries(schemas)\n .map(([key, value]) => {\n return `public fun borrow_${key}(self: &Schema) : &${value} {\n storage::borrow_field(&self.id, b\"${key}\")\n }\n \n public(package) fun ${key}(self: &mut Schema): &mut ${value} {\n storage::borrow_mut_field(&mut self.id, b\"${key}\")\n }\n `;\n })\n .join('')} \n \n \n public(package) fun create(ctx: &mut TxContext): Schema {\n let mut id = object::new(ctx);\n ${Object.entries(schemas)\n .map(([key, value]) => {\n let storage_type = '';\n if (value.includes('StorageValue')) {\n storage_type = `${projectName == 'dubhe' ? 'storage_value_internal' : 'storage_value'}::new(b\"${key}\", ctx)`;\n } else if (value.includes('StorageMap')) {\n storage_type = `${projectName == 'dubhe' ? 'storage_map_internal' : 'storage_map'}::new(b\"${key}\", ctx)`;\n } else if (value.includes('StorageDoubleMap')) {\n storage_type = `${projectName == 'dubhe' ? 'storage_double_map_internal' : 'storage_double_map'}::new(b\"${key}\", ctx)`;\n }\n return `storage::add_field<${value}>(&mut id, b\"${key}\", ${storage_type});`;\n })\n .join('\\n')}\n \n Schema { id }\n }\n \n public(package) fun id(self: &mut Schema): &mut UID {\n\t\t\t\t\t &mut self.id\n\t\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\tpublic(package) fun borrow_id(self: &Schema): &UID {\n\t\t\t\t\t &self.id\n\t\t\t\t\t}\n \n public fun migrate(_schema: &mut Schema, _ctx: &mut TxContext) { }\n \n // ======================================== View Functions ========================================\n ${Object.entries(schemas)\n .map(([key, value]) => {\n // @ts-ignore\n let all_types = value\n .match(/<(.+)>/)[1]\n .split(',')\n .map((type) => type.trim());\n let para_key: string[] = [];\n let para_value = '';\n let borrow_key = '';\n if (value.includes('StorageValue')) {\n para_key = [];\n para_value = `${all_types[0]}`;\n borrow_key = 'get()';\n } else if (value.includes('StorageMap')) {\n para_key = [`key: ${all_types[0]}`];\n para_value = `${all_types[1]}`;\n borrow_key = 'get(key)';\n } else if (value.includes('StorageDoubleMap')) {\n para_key = [`key1: ${all_types[0]}`, `key2: ${all_types[1]}`];\n para_value = `${all_types[2]}`;\n borrow_key = 'get(key1, key2)';\n }\n return `public fun get_${key}(self: &Schema, ${para_key}) : &${para_value} {\n\t\t\t\t\t\t\t\t\tself.borrow_${key}().${borrow_key}\n\t\t\t\t\t\t\t\t}`;\n })\n .join('\\n')}\n // =========================================================================================================\n\t\t\t}`;\n await formatAndWriteMove(\n schemaMoudle,\n\n `${path}/contracts/${projectName}/sources/codegen/core/schema.move`,\n 'formatAndWriteMove'\n );\n}\n","import { DubheConfig } from '../../types';\nimport { formatAndWriteMove } from '../formatAndWrite';\nimport { existsSync } from 'fs';\nimport { capitalizeAndRemoveUnderscores } from './generateSchema';\n\nimport { readFileSync } from 'fs';\n\nfunction capitalizeFirstLetter(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\nexport async function generateDeployHook(config: DubheConfig, srcPrefix: string) {\n const path = `${srcPrefix}/contracts/${config.name}/sources/scripts/deploy_hook.move`;\n if (!existsSync(path)) {\n const code = `module ${config.name}::${config.name}_deploy_hook {\n\t\t\t use ${config.name}::${config.name}_schema::Schema;\n ${config.name !== 'dubhe' ? `use dubhe::dubhe_schema::Schema as DubheSchema;` : '' }\n\n public(package) fun run(${config.name !== 'dubhe' ? `_dubhe_schema: &mut DubheSchema,` : ''}_schema: &mut Schema, _ctx: &mut TxContext) {\n\n }\n}`;\n await formatAndWriteMove(code, path, 'formatAndWriteMove');\n }\n}\n\nexport async function generateMigrate(config: DubheConfig, srcPrefix: string) {\n if (!existsSync(`${srcPrefix}/contracts/${config.name}/sources/scripts/migrate.move`)) {\n let code = `module ${config.name}::${config.name}_migrate {\n const ON_CHAIN_VERSION: u32 = 1;\n\n public fun on_chain_version(): u32 {\n ON_CHAIN_VERSION\n }\n}\n`;\n await formatAndWriteMove(\n code,\n `${srcPrefix}/contracts/${config.name}/sources/scripts/migrate.move`,\n 'formatAndWriteMove'\n );\n }\n}\n","import { DubheConfig } from '../../types';\nimport { formatAndWriteMove } from '../formatAndWrite';\n\nexport async function generateDappKey(config: DubheConfig, srcPrefix: string) {\n let code = `module ${config.name}::${config.name}_dapp_key {\n\\t/// Authorization token for the app.\n\\tpublic struct DappKey has copy, drop {}\n\n\\tpublic(package) fun new(): DappKey {\n\\t\\tDappKey { }\n\\t}\n}\n`;\n await formatAndWriteMove(\n code,\n `${srcPrefix}/contracts/${config.name}/sources/codegen/core/dapp_key.move`,\n 'formatAndWriteMove'\n );\n}\n","import { BaseType, EventData, SchemaData, SchemaType } from '../../types';\nimport { formatAndWriteMove } from '../formatAndWrite';\nimport {\n getStructAttrsWithType,\n getStructAttrs,\n getStructTypes,\n getStructAttrsQuery\n} from './common';\n\n// account_not_found => AccountNotFound,\nfunction toPascalCase(str: string): string {\n return str\n .split('_')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join('');\n}\n\nfunction convertToSnakeCase(input: string): string {\n return input\n .replace(/([A-Z])/g, '_$1')\n .toLowerCase()\n .replace(/^_/, '');\n}\n\nfunction generateImport(projectName: string, data: Record<string, SchemaData> | null) {\n if (data != null) {\n const names = Object.keys(data);\n return names\n .map((name) => {\n return `use ${projectName}::${projectName}_${convertToSnakeCase(name)}::${name};`;\n })\n .join('\\n');\n } else {\n return '';\n }\n}\n\nexport async function generateSchemaEvent(\n projectName: string,\n data: Record<string, SchemaData> | null,\n events: Record<string, EventData>,\n path: string\n) {\n console.log('\\nš¦ Starting Schema Event Generation...');\n for (const key of Object.keys(events)) {\n const name = key;\n const fields = events[key];\n console.log(` āā ${name} event: ${JSON.stringify(fields)}`);\n\n let code = `module ${projectName}::${projectName}_${name}_event {\n\t\t\t\t\t\tuse sui::event;\n\t\t\t\t\t\tuse std::ascii::String;\n\t\t\t\t\t\t${generateImport(projectName, data)}\n\n public struct ${toPascalCase(name)}Event has copy, drop {\n ${getStructAttrsWithType(fields as Record<string, string>)}\n }\n\n public fun new(${getStructAttrsWithType(fields as Record<string, string>)}): ${toPascalCase(name)}Event {\n ${toPascalCase(name)}Event {\n ${getStructAttrs(fields as Record<string, string>)}\n }\n }\n }`;\n await formatAndWriteMove(\n code,\n `${path}/contracts/${projectName}/sources/codegen/data/${name}_event.move`,\n 'formatAndWriteMove'\n );\n }\n\n let code = `module ${projectName}::${projectName}_events {\n\t \tuse std::ascii::{String, string};\n\t \t${generateImport(projectName, data)}\n\t\t${Object.entries(events)\n .map(([name, fields]) => {\n return `\nuse ${projectName}::${projectName}_${name}_event::${toPascalCase(name)}Event;\nuse ${projectName}::${projectName}_${name}_event;\n\t\t\tpublic fun ${name}_event(${getStructAttrsWithType(fields as Record<string, string>)}) {\n\t\t\t dubhe::storage_event::emit_set_record<${toPascalCase(name)}Event, ${toPascalCase(name)}Event, ${toPascalCase(name)}Event>(\n\t\t\t\tstring(b\"${name}_event\"),\n\t\t\t\toption::none(),\n\t\t\t \toption::none(),\n\t\t\t option::some(${projectName}_${name}_event::new(${getStructAttrs(fields as Record<string, string>)}))\n\t\t\t )\n\t\t\t}\n\t\t`;\n })\n .join('\\n')}\t\t\n }`;\n\n await formatAndWriteMove(\n code,\n `${path}/contracts/${projectName}/sources/codegen/events.move`,\n 'formatAndWriteMove'\n );\n}\n","import { DubheConfig } from '../../types';\nimport { formatAndWriteMove } from '../formatAndWrite';\nimport { existsSync } from 'fs';\nimport fs from 'node:fs/promises';\nimport path from 'node:path';\n\nexport async function generateSystemsAndTests(config: DubheConfig, srcPrefix: string) {\n if (!existsSync(`${srcPrefix}/contracts/${config.name}/sources/systems`)) {\n await fs.mkdir(`${srcPrefix}/contracts/${config.name}/sources/systems`, { recursive: true });\n }\n if (!existsSync(`${srcPrefix}/contracts/${config.name}/sources/tests`)) {\n await fs.mkdir(`${srcPrefix}/contracts/${config.name}/sources/tests`, { recursive: true });\n }\n}\n","import { BaseType, ErrorData, SchemaType } from '../../types';\nimport { formatAndWriteMove } from '../formatAndWrite';\nimport {\n getStructAttrsWithType,\n getStructAttrs,\n getStructTypes,\n getStructAttrsQuery\n} from './common';\n\nfunction convertToSnakeCase(input: string): string {\n return input\n .replace(/([A-Z])/g, '_$1')\n .toLowerCase()\n .replace(/^_/, '');\n}\n\nexport async function generateSchemaError(projectName: string, errors: ErrorData, path: string) {\n console.log('\\nš¦ Starting Schema Error Generation...');\n\n let code = `module ${projectName}::${projectName}_errors {\n\t\t${Object.entries(errors)\n .map(([name, message]) => {\n console.log(` āā ${name}: ${message}`);\n return `#[error]\n\t\t\t\tconst ${name.toUpperCase()}: vector<u8> = b\"${message}\";\n\t\t\t\tpublic fun ${name}_error(condition: bool) { assert!(condition, ${name.toUpperCase()}) }\n\t\t`;\n })\n .join('\\n')}\t\t\n }`;\n\n await formatAndWriteMove(\n code,\n `${path}/contracts/${projectName}/sources/codegen/errors.move`,\n 'formatAndWriteMove'\n );\n}\n","import { DubheConfig } from '../../types';\nimport { formatAndWriteMove } from '../formatAndWrite';\nimport { existsSync } from 'fs';\nimport { capitalizeAndRemoveUnderscores } from './generateSchema';\n\nfunction capitalizeFirstLetter(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\nexport async function generateInit(config: DubheConfig, srcPrefix: string) {\n let init_test_code = `module ${config.name}::${config.name}_init_test {\n use sui::clock;\n use sui::test_scenario;\n use sui::test_scenario::Scenario;\n use dubhe::dubhe_schema::Schema as DubheSchema;\n ${config.name !== 'dubhe' ? `use ${config.name}::${config.name}_schema::Schema;` : '' }\n \n public fun deploy_dapp_for_testing(scenario: &mut Scenario): ${config.name !== 'dubhe' ? `(DubheSchema, Schema)` : 'DubheSchema'} {\n ${config.name !== 'dubhe' ? `let mut dubhe_schema = dubhe::dubhe_init_test::create_dubhe_schema_for_other_contract(scenario);` : ''}\n let ctx = test_scenario::ctx(scenario);\n let clock = clock::create_for_testing(ctx);\n ${config.name}::${config.name}_genesis::run(${config.name !== 'dubhe' ? `&mut dubhe_schema,` : ''}&clock, ctx);\n clock::destroy_for_testing(clock);\n test_scenario::next_tx(scenario, ctx.sender());\n ${config.name !== 'dubhe' ? `\n let schema = test_scenario::take_shared<Schema>(scenario);\n (dubhe_schema, schema)\n ` : 'test_scenario::take_shared<DubheSchema>(scenario)'\n }\n }\n\n ${config.name == 'dubhe' ? `\n public fun create_dubhe_schema_for_other_contract(scenario: &mut Scenario): DubheSchema {\n let ctx = test_scenario::ctx(scenario);\n let mut schema = dubhe::dubhe_schema::create(ctx);\n dubhe::dubhe_deploy_hook::run(&mut schema, ctx);\n sui::transfer::public_share_object(schema);\n test_scenario::next_tx(scenario, ctx.sender());\n test_scenario::take_shared<DubheSchema>(scenario)\n }\n ` : ''}\n}\n`;\n await formatAndWriteMove(\n init_test_code,\n `${srcPrefix}/contracts/${config.name}/sources/codegen/core/init_test.move`,\n 'formatAndWriteMove'\n );\n\n let init_code = `module ${config.name}::${config.name}_genesis {\n use std::ascii::string;\n\n use sui::clock::Clock;\n\n ${config.name !== 'dubhe' ? `use dubhe::dubhe_schema::Schema as DubheSchema;` : '' }\n public entry fun run(${config.name !== 'dubhe' ? `_dubhe_schema: &mut DubheSchema,` : ''}clock: &Clock, ctx: &mut TxContext) {\n // Create schemas\n let mut schema = ${config.name}::${config.name}_schema::create(ctx);\n // Setup default storage\n dubhe::dubhe_dapp_system::create_dapp(\n ${config.name !== 'dubhe' ? `_dubhe_schema` : '&mut schema'}, \n ${config.name}::${config.name}_dapp_key::new(), \n dubhe::dubhe_dapp_metadata::new(string(b\"${config.name}\"), string(b\"${config.description}\"), vector[], string(b\"\"), clock.timestamp_ms(), vector[]), \n ctx\n );\n // Logic that needs to be automated once the contract is deployed\n ${config.name}::${config.name}_deploy_hook::run(${config.name !== 'dubhe' ? `_dubhe_schema,` : ''}&mut schema, ctx);\n // Authorize schemas and public share objects\n sui::transfer::public_share_object(schema);\n }\n}\n`;\n await formatAndWriteMove(\n init_code,\n\n `${srcPrefix}/contracts/${config.name}/sources/codegen/core/genesis.move`,\n 'formatAndWriteMove'\n );\n}\n","import { findUp } from 'find-up';\nimport path from 'path';\nimport esbuild from 'esbuild';\nimport { NotInsideProjectError } from './errors';\nimport { rmSync } from 'fs';\nimport { pathToFileURL } from 'url';\nimport os from 'os';\n\n// In order of preference files are checked\nconst configFiles = ['dubhe.config.js', 'dubhe.config.mjs', 'dubhe.config.ts', 'dubhe.config.mts'];\nconst TEMP_CONFIG = 'dubhe.config.example.mjs';\n\nexport async function loadConfig(configPath?: string): Promise<unknown> {\n configPath = await resolveConfigPath(configPath);\n try {\n await esbuild.build({\n entryPoints: [configPath],\n format: 'esm',\n outfile: TEMP_CONFIG,\n // https://esbuild.github.io/getting-started/#bundling-for-node\n platform: 'node',\n // bundle local imports (otherwise it may error, js can't import ts)\n bundle: true,\n // avoid bundling external imports (it's unnecessary and esbuild can't handle all node features)\n packages: 'external'\n });\n configPath = await resolveConfigPath(TEMP_CONFIG, true);\n // Node.js caches dynamic imports, so without appending a cache breaking\n // param like `?update={Date.now()}` this import always returns the same config\n // if called multiple times in a single process, like the `dev-contracts` cli\n return (await import(configPath + `?update=${Date.now()}`)).dubheConfig;\n } finally {\n rmSync(TEMP_CONFIG, { force: true });\n }\n}\n\nexport async function resolveConfigPath(configPath: string | undefined, toFileURL?: boolean) {\n if (configPath === undefined) {\n configPath = await getUserConfigPath();\n } else {\n if (!path.isAbsolute(configPath)) {\n configPath = path.join(process.cwd(), configPath);\n configPath = path.normalize(configPath);\n }\n }\n\n // Add `file:///` for Windows support\n // (see https://github.com/nodejs/node/issues/31710)\n return toFileURL && os.platform() === 'win32' ? pathToFileURL(configPath).href : configPath;\n}\n\nasync function getUserConfigPath() {\n const tsConfigPath = await findUp(configFiles);\n if (tsConfigPath === undefined) {\n throw new NotInsideProjectError();\n }\n return tsConfigPath;\n}\n","export class NotInsideProjectError extends Error {\n name = 'NotInsideProjectError';\n message = 'You are not inside a Dubhe project';\n}\n","export type BaseType =\n | 'String'\n | 'vector<String>'\n | 'address'\n | 'bool'\n | 'u8'\n | 'u32'\n | 'u64'\n | 'u128'\n | 'vector<address>'\n | 'vector<bool>'\n | 'vector<u8>'\n | 'vector<vector<u8>>'\n | 'vector<u32>'\n | 'vector<u64>'\n | 'vector<u128>'\n | string;\n\nexport type StorageDataType = 'Struct' | 'Enum';\n\nexport type StorageMapType = 'Map' | 'Bag' | 'Table';\n\ntype Address = string;\ntype Bool = boolean;\ntype U8 = number;\ntype U32 = number;\ntype U64 = number;\ntype U128 = number;\ntype Vector<T> = T[];\n\nexport type BaseValueType =\n | String\n | Address\n | Bool\n | U8\n | U32\n | U64\n | U128\n | Vector<Address>\n | Vector<Bool>\n | Vector<U8>\n | Vector<Vector<U8>>\n | Vector<U64>\n | Vector<U128>;\n\nexport type SchemaData = Record<string, string> | string[];\nexport type SchemaType = string;\nexport type EventData = Record<string, string>;\nexport type ErrorData = Record<string, string>;\n\ntype DataType = any;\n\nexport function storage<T extends DataType>(value: T): SchemaType;\nexport function storage<K extends DataType, V extends DataType>(key: K, value: V): SchemaType;\nexport function storage<K1 extends DataType, K2 extends DataType, V extends DataType>(\n key1: K1,\n key2: K2,\n value: V\n): SchemaType;\nexport function storage(...args: DataType[]): SchemaType {\n if (args.length === 1) {\n return `StorageValue<${args[0]}>`;\n } else if (args.length === 2) {\n return `StorageMap<${args[0]}, ${args[1]}>`;\n } else if (args.length === 3) {\n return `StorageDoubleMap<${args[0]}, ${args[1]}, ${args[2]}>`;\n }\n throw new Error('Invalid number of arguments for storage()');\n}\n\nexport type Plugin = 'merak';\n\nexport type DubheConfig = {\n name: string;\n description: string;\n data?: Record<string, SchemaData>;\n schemas: Record<string, SchemaType>;\n events?: Record<string, EventData>;\n errors?: ErrorData;\n plugins?: Plugin[];\n};\n\nexport type MoveType =\n | 'string'\n | 'vector<string>'\n | 'String'\n | 'vector<String>'\n | 'address'\n | 'bool'\n | 'u8'\n | 'u32'\n | 'u64'\n | 'u128'\n | 'vector<address>'\n | 'vector<bool>'\n | 'vector<u8>'\n | 'vector<vector<u8>>'\n | 'vector<u32>'\n | 'vector<u64>'\n | 'vector<u128>';\n","export const parseData = (data: any) => {\n if (typeof data !== 'object' || data === null) {\n return data;\n }\n const parsedData: any = {};\n for (const key in data) {\n if (data.hasOwnProperty(key)) {\n // @ts-ignore\n const value = data[key];\n // console.log(\"===========\", value)\n if (typeof value === 'object' && value !== null) {\n if (Array.isArray(value)) {\n parsedData[key] = handleArray(value);\n } else if (value.hasOwnProperty('variant')) {\n parsedData[key] = { [value.variant]: {} };\n } else if (value.hasOwnProperty('fields')) {\n parsedData[key] = parseData(value.fields);\n } else {\n parsedData[key] = parseData(value);\n }\n } else {\n parsedData[key] = value;\n }\n }\n }\n return parsedData;\n};\n\nconst handleArray = (data: any[]): any[] => {\n let returnData: any[] = [];\n data.forEach((item) => {\n if (typeof item === 'object' && item !== null) {\n if (Array.isArray(item)) {\n returnData.push(handleArray(item));\n } else if (item.hasOwnProperty('variant')) {\n returnData.push({ [item.variant]: {} });\n } else if (item.hasOwnProperty('fields')) {\n returnData.push(parseData(item.fields));\n } else {\n returnData.push(parseData(item));\n }\n } else {\n returnData.push(item);\n }\n });\n return returnData;\n};\n","export enum SubscriptionKind {\n Event = 'event',\n Schema = 'schema'\n}\n\nexport type SubscribableType =\n | { kind: SubscriptionKind.Event; name?: string; sender?: string }\n | { kind: SubscriptionKind.Schema; name?: string };\n"],"mappings":"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","names":["prettier","prettierPluginMove","formatMove","content","prettierConfigPath","config","error","message","formatTypescript","fs","path","createDebug","debug","error","debug","error","formatAndWriteMove","output","fullOutputPath","logPrefix","formattedOutput","formatMove","schemaPrefix","initPrefix","code","deployHookPrefix","fs","path","debug","formatAndWriteTypescript","formatTypescript","posixPath","path","existsSync","fs","deleteFolderRecursive","path","file","curPath","getStructAttrs","values","key","_","getStructTypes","values","_","type","getStructAttrsWithType","key","getStructAttrsQuery","containsString","obj","searchString","value","package_default","generateToml","config","srcPrefix","code","package_default","formatAndWriteMove","sortByFirstLetter","arr","a","b","firstLetterA","firstLetterB","renderSetAttrsFunc","schemaName","fields","key","type","renderSetFunc","getStructAttrsWithType","fieldName","renderGetAllFunc","getStructTypes","getStructAttrsQuery","renderGetAttrsFunc","convertToSnakeCase","input","generateSchemaData","projectName","data","path","name","code","enumNames","item","sortByFirstLetterFields","sortByFirstLetter","field","containsString","getStructAttrs","formatAndWriteMove","generateImport","generateSchemaStructure","schemas","value","schemaMoudle","storage_type","all_types","para_key","para_value","borrow_key","existsSync","generateDeployHook","config","srcPrefix","path","existsSync","code","formatAndWriteMove","generateMigrate","generateDappKey","config","srcPrefix","code","formatAndWriteMove","toPascalCase","str","word","convertToSnakeCase","input","generateImport","projectName","data","name","generateSchemaEvent","events","path","key","fields","code","getStructAttrsWithType","getStructAttrs","formatAndWriteMove","existsSync","fs","generateSystemsAndTests","config","srcPrefix","generateSchemaError","projectName","errors","path","code","name","message","formatAndWriteMove","generateInit","config","srcPrefix","init_test_code","formatAndWriteMove","init_code","schemaGen","config","srcPrefix","network","path","existsSync","deleteFolderRecursive","generateToml","generateDeployHook","generateSchemaEvent","generateSchemaData","generateSchemaStructure","generateSchemaError","generateInit","generateSystemsAndTests","generateMigrate","generateDappKey","findUp","path","esbuild","NotInsideProjectError","rmSync","pathToFileURL","os","configFiles","TEMP_CONFIG","loadConfig","configPath","resolveConfigPath","esbuild","toFileURL","getUserConfigPath","path","tsConfigPath","findUp","NotInsideProjectError","storage","args","parseData","data","parsedData","key","value","handleArray","returnData","item","SubscriptionKind"]}
|
package/package.json
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { DubheConfig } from '../../types';
|
|
2
2
|
import { formatAndWriteMove } from '../formatAndWrite';
|
|
3
|
+
import packageJson from '../../../../package.json';
|
|
3
4
|
|
|
4
5
|
export async function generateToml(config: DubheConfig, srcPrefix: string) {
|
|
5
6
|
console.log('\nš Starting Move.toml Generation...');
|
|
@@ -12,7 +13,7 @@ edition = "2024"
|
|
|
12
13
|
|
|
13
14
|
[dependencies]
|
|
14
15
|
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-
|
|
16
|
+
Dubhe = { git = "https://github.com/0xobelisk/dubhe-wip.git", subdir = "packages/sui-framework/contracts/dubhe", rev = "${packageJson.version}" }
|
|
16
17
|
|
|
17
18
|
[addresses]
|
|
18
19
|
sui = "0x2"
|