@0xobelisk/sui-common 1.1.7 → 1.1.9
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 +249 -286
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/codegen/utils/renderMove/common.ts +4 -1
- package/src/codegen/utils/renderMove/generateDefaultSchema.ts +136 -224
- package/src/codegen/utils/renderMove/generateError.ts +1 -3
- package/src/codegen/utils/renderMove/generateEvent.ts +1 -2
- package/src/codegen/utils/renderMove/generateInit.ts +8 -15
- package/src/codegen/utils/renderMove/generateSchema.ts +62 -8
- package/src/codegen/utils/renderMove/generateScript.ts +0 -6
- package/src/codegen/utils/renderMove/generateSystem.ts +0 -5
- package/src/codegen/utils/renderMove/schemaGen.ts +4 -4
package/dist/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import v from"prettier";import
|
|
1
|
+
import v from"prettier";import X from"prettier-plugin-move-js";async function T(e,t){let r;t&&(r=await v.resolveConfig(t));try{return v.format(e,{plugins:[X],parser:"move-parse",printWidth:120,semi:!0,tabWidth:2,useTabs:!1,bracketSpacing:!0,...r})}catch(a){let n;return a instanceof Error?n=a.message:n=a,console.log(`Error during output formatting: ${n}`),e}}async function C(e){return v.format(e,{parser:"typescript"})}import $ from"node:fs/promises";import R from"node:path";import V from"debug";var b=V("dubhe:common"),Y=V("dubhe:common");b.log=console.debug.bind(console);Y.log=console.error.bind(console);var h=b.extend("codegen"),q=b.extend("codegen");h.log=console.debug.bind(console);q.log=console.error.bind(console);async function c(e,t,r){let a=await T(e),n=` // 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
|
+
`,s="#[test_only]",o=n+a,i="#[allow(lint(share_owned))]";t.includes(".toml")||t.includes("system")||t.includes("migrate")?o=a:t.includes("init")?o=s+a:t.includes("genesis")&&(o=i+a),await $.mkdir(R.dirname(t),{recursive:!0}),await $.writeFile(t,o),h(`${r}: ${t}`)}async function Te(e,t,r){let a=await C(e);await $.mkdir(R.dirname(t),{recursive:!0}),await $.writeFile(t,a),h(`${r}: ${t}`)}function Ve(e){return e.replace(/\\/g,"/")}import{existsSync as k}from"fs";import _ from"fs";function x(e){_.existsSync(e)&&(_.readdirSync(e).forEach(t=>{let r=`${e}/${t}`;_.lstatSync(r).isDirectory()?x(r):_.unlinkSync(r)}),_.rmdirSync(e))}function g(e){return Object.entries(e).map(([t,r])=>`${t}`).join(",")}function E(e){return`(${Object.entries(e).map(([t,r])=>`${r}`)})`}function u(e){return Object.entries(e).map(([t,r])=>`${t}: ${r}`)}function U(e){return Object.entries(e).map(([t,r])=>`self.${t}`)}function W(e,t){for(let r in e)if(e.hasOwnProperty(r)){let a=e[r];if(typeof a=="string"&&a===t||typeof a=="string"&&a.includes(t)&&a.includes(">"))return!0}return!1}async function O(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"
|
|
@@ -24,43 +24,42 @@ ${e.name} = "0x0"
|
|
|
24
24
|
`)}function te(e,t){return`public(package) fun set(self: &mut ${e}, ${u(t)}) {
|
|
25
25
|
${Object.entries(t).map(([r])=>`self.${r} = ${r};`).join(`
|
|
26
26
|
`)}
|
|
27
|
-
}`}function re(e,t){return`public fun get(self: &${e}): ${
|
|
28
|
-
(${
|
|
27
|
+
}`}function re(e,t){return`public fun get(self: &${e}): ${E(t)} {
|
|
28
|
+
(${U(t)})
|
|
29
29
|
}`}function ae(e,t){return Object.entries(t).map(([r,a])=>`public fun get_${r}(self: &${e}): ${a} {
|
|
30
30
|
self.${r}
|
|
31
31
|
}`).join(`
|
|
32
|
-
`)}function
|
|
33
|
-
\u{1F4E6} Starting Schema Data Generation...`);for(let a of Object.keys(t)){let n=a,
|
|
32
|
+
`)}function l(e){return e.replace(/([A-Z])/g,"_$1").toLowerCase().replace(/^_/,"")}async function j(e,t,r){console.log(`
|
|
33
|
+
\u{1F4E6} Starting Schema Data Generation...`);for(let a of Object.keys(t)){let n=a,s=t[a];console.log(` \u2514\u2500 ${n} ${Array.isArray(s)?"(enum)":"(struct)"}: ${JSON.stringify(s)}`);let o="",i=Object.keys(t).filter(p=>Array.isArray(t[p])).map(p=>p);if(Array.isArray(s)){let p=N(s);o=`module ${e}::${e}_${l(n)} {
|
|
34
34
|
public enum ${n} has copy, drop , store {
|
|
35
35
|
${p}
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
${p.map(m=>`public fun new_${
|
|
38
|
+
${p.map(m=>`public fun new_${l(m)}(): ${n} {
|
|
39
39
|
${n}::${m}
|
|
40
|
-
}`).join("")}`}else
|
|
40
|
+
}`).join("")}`}else o=`module ${e}::${e}_${l(n)} {
|
|
41
41
|
use std::ascii::String;
|
|
42
42
|
|
|
43
|
-
${Object.keys(t).map(p=>{if(W(
|
|
43
|
+
${Object.keys(t).map(p=>{if(W(s,p))return`use ${e}::${e}_${l(p)}::${p};`}).filter(Boolean).join(`
|
|
44
44
|
`)}
|
|
45
45
|
|
|
46
46
|
public struct ${n} has copy, drop , store {
|
|
47
|
-
${u(
|
|
47
|
+
${u(s)}
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
public fun new(${u(
|
|
50
|
+
public fun new(${u(s)}): ${n} {
|
|
51
51
|
${n} {
|
|
52
|
-
${
|
|
52
|
+
${g(s)}
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
-
${re(n,
|
|
57
|
-
${ae(n,
|
|
58
|
-
${ee(n,
|
|
59
|
-
${te(n,
|
|
60
|
-
}`;await c(
|
|
61
|
-
`)}function oe(e,t){return t!=null?Object.keys(t).map(a=>`use ${e}::${e}_${d(a)}::${a};`).join(`
|
|
56
|
+
${re(n,s)}
|
|
57
|
+
${ae(n,s)}
|
|
58
|
+
${ee(n,s)}
|
|
59
|
+
${te(n,s)}
|
|
60
|
+
}`;await c(o,`${r}/contracts/${e}/sources/codegen/data/${l(n)}.move`,"formatAndWriteMove")}}function se(e,t){return t!=null?Object.keys(t).map(a=>`use ${e}::${e}_${l(a)}::${a};`).join(`
|
|
62
61
|
`):""}async function w(e,t,r,a){console.log(`
|
|
63
|
-
\u{1F528} Starting Schema Structure Generation...`),
|
|
62
|
+
\u{1F528} Starting Schema Structure Generation...`),Object.entries(r).forEach(([s,o])=>{console.log(` \u2514\u2500 ${s}: ${o}`)});let n=`module ${e}::${e}_schema {
|
|
64
63
|
use std::ascii::String;
|
|
65
64
|
use std::ascii::string;
|
|
66
65
|
use sui::package::UpgradeCap;
|
|
@@ -70,24 +69,78 @@ ${e.name} = "0x0"
|
|
|
70
69
|
use dubhe::storage_map::{Self, StorageMap};
|
|
71
70
|
use dubhe::storage_double_map::{Self, StorageDoubleMap};
|
|
72
71
|
use sui::dynamic_field as df;
|
|
72
|
+
use ${e}::${e}_dapp_metadata::DappMetadata;
|
|
73
73
|
|
|
74
|
-
${
|
|
74
|
+
${se(e,t)}
|
|
75
75
|
|
|
76
76
|
public struct Schema has key, store { id: UID }
|
|
77
|
+
|
|
78
|
+
// Default storage
|
|
79
|
+
public fun borrow_dapp__admin(self: &Schema): &StorageValue<address> {
|
|
80
|
+
storage::borrow_field(&self.id, b"dapp__admin")
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
public fun borrow_dapp__package_id(self: &Schema): &StorageValue<address> {
|
|
84
|
+
storage::borrow_field(&self.id, b"dapp__package_id")
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
public fun borrow_dapp__version(self: &Schema): &StorageValue<u32> {
|
|
88
|
+
storage::borrow_field(&self.id, b"dapp__version")
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
public fun borrow_dapp__metadata(self: &Schema): &StorageValue<DappMetadata> {
|
|
92
|
+
storage::borrow_field(&self.id, b"dapp__metadata")
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
public fun borrow_dapp__safe_mode(self: &Schema): &StorageValue<bool> {
|
|
96
|
+
storage::borrow_field(&self.id, b"dapp__safe_mode")
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
public fun borrow_dapp__authorised_schemas(self: &Schema): &StorageValue<vector<address>> {
|
|
100
|
+
storage::borrow_field(&self.id, b"dapp__authorised_schemas")
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
public fun borrow_dapp__schemas(self: &Schema): &StorageValue<vector<address>> {
|
|
104
|
+
storage::borrow_field(&self.id, b"dapp__schemas")
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
public(package) fun dapp__admin(self: &mut Schema): &mut StorageValue<address> {
|
|
108
|
+
storage::borrow_mut_field(&mut self.id, b"dapp__admin")
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
public(package) fun dapp__package_id(self: &mut Schema): &mut StorageValue<address> {
|
|
112
|
+
storage::borrow_mut_field(&mut self.id, b"dapp__package_id")
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
public(package) fun dapp__version(self: &mut Schema): &mut StorageValue<u32> {
|
|
116
|
+
storage::borrow_mut_field(&mut self.id, b"dapp__version")
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
public(package) fun dapp__metadata(self: &mut Schema): &mut StorageValue<DappMetadata> {
|
|
120
|
+
storage::borrow_mut_field(&mut self.id, b"dapp__metadata")
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
public(package) fun dapp__safe_mode(self: &mut Schema): &mut StorageValue<bool> {
|
|
124
|
+
storage::borrow_mut_field(&mut self.id, b"dapp__safe_mode")
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
public(package) fun dapp__authorised_schemas(self: &mut Schema): &mut StorageValue<vector<address>> {
|
|
128
|
+
storage::borrow_mut_field(&mut self.id, b"dapp__authorised_schemas")
|
|
129
|
+
}
|
|
77
130
|
|
|
78
|
-
${Object.entries(r).map(([o
|
|
79
|
-
storage::borrow_field(&self.id, b"${
|
|
131
|
+
${Object.entries(r).map(([s,o])=>`public fun borrow_${s}(self: &Schema) : &${o} {
|
|
132
|
+
storage::borrow_field(&self.id, b"${s}")
|
|
80
133
|
}
|
|
81
134
|
|
|
82
|
-
public(package) fun ${
|
|
83
|
-
storage::borrow_mut_field(&mut self.id, b"${
|
|
135
|
+
public(package) fun ${s}(self: &mut Schema): &mut ${o} {
|
|
136
|
+
storage::borrow_mut_field(&mut self.id, b"${s}")
|
|
84
137
|
}
|
|
85
138
|
`).join("")}
|
|
86
139
|
|
|
87
140
|
|
|
88
141
|
public(package) fun create(ctx: &mut TxContext): Schema {
|
|
89
142
|
let mut id = object::new(ctx);
|
|
90
|
-
${Object.entries(r).map(([o
|
|
143
|
+
${Object.entries(r).map(([s,o])=>{let i="";return o.includes("StorageValue")?i=`storage_value::new(b"${s}", ctx)`:o.includes("StorageMap")?i=`storage_map::new(b"${s}", ctx)`:o.includes("StorageDoubleMap")&&(i=`storage_double_map::new(b"${s}", ctx)`),`storage::add_field<${o}>(&mut id, b"${s}", ${i});`}).join(`
|
|
91
144
|
`)}
|
|
92
145
|
|
|
93
146
|
Schema { id }
|
|
@@ -105,373 +158,284 @@ ${e.name} = "0x0"
|
|
|
105
158
|
|
|
106
159
|
|
|
107
160
|
// ======================================== View Functions ========================================
|
|
108
|
-
${Object.entries(r).map(([o
|
|
109
|
-
self.borrow_${
|
|
161
|
+
${Object.entries(r).map(([s,o])=>{let i=o.match(/<(.+)>/)[1].split(",").map(P=>P.trim()),p=[],m="",f="";return o.includes("StorageValue")?(p=[],m=`${i[0]}`,f="get()"):o.includes("StorageMap")?(p=[`key: ${i[0]}`],m=`${i[1]}`,f="get(key)"):o.includes("StorageDoubleMap")&&(p=[`key1: ${i[0]}`,`key2: ${i[1]}`],m=`${i[2]}`,f="get(key1, key2)"),`public fun get_${s}(self: &Schema, ${p}) : &${m} {
|
|
162
|
+
self.borrow_${s}().${f}
|
|
110
163
|
}`}).join(`
|
|
111
164
|
`)}
|
|
112
165
|
// =========================================================================================================
|
|
113
|
-
}`;await c(n,`${a}/contracts/${e}/sources/codegen/schema.move`,"formatAndWriteMove"),
|
|
114
|
-
`)}import{existsSync as I}from"fs";async function F(e,t){console.log(`
|
|
115
|
-
\u{1F4DD} Starting Deploy Hook Generation...`),console.log(` \u2514\u2500 Output path: ${t}/contracts/${e.name}/sources/scripts/deploy_hook.move`);let r=`${t}/contracts/${e.name}/sources/scripts/deploy_hook.move`;if(!I(r)){let a=`module ${e.name}::${e.name}_deploy_hook {
|
|
166
|
+
}`;await c(n,`${a}/contracts/${e}/sources/codegen/core/schema.move`,"formatAndWriteMove")}import{existsSync as F}from"fs";async function L(e,t){let r=`${t}/contracts/${e.name}/sources/scripts/deploy_hook.move`;if(!F(r)){let a=`module ${e.name}::${e.name}_deploy_hook {
|
|
116
167
|
use ${e.name}::${e.name}_schema::Schema;
|
|
117
168
|
|
|
118
169
|
public(package) fun run(_schema: &mut Schema, _ctx: &mut TxContext) {
|
|
119
170
|
|
|
120
171
|
}
|
|
121
|
-
}`;await c(a,r,"formatAndWriteMove")}
|
|
122
|
-
`)}async function L(e,t){if(!I(`${t}/contracts/${e.name}/sources/scripts/migrate.move`)){let r=`module ${e.name}::${e.name}_migrate {
|
|
172
|
+
}`;await c(a,r,"formatAndWriteMove")}}async function B(e,t){if(!F(`${t}/contracts/${e.name}/sources/scripts/migrate.move`)){let r=`module ${e.name}::${e.name}_migrate {
|
|
123
173
|
const ON_CHAIN_VERSION: u32 = 1;
|
|
124
174
|
|
|
125
175
|
public fun on_chain_version(): u32 {
|
|
126
176
|
ON_CHAIN_VERSION
|
|
127
177
|
}
|
|
128
178
|
}
|
|
129
|
-
`;await c(r,`${t}/contracts/${e.name}/sources/scripts/migrate.move`,"formatAndWriteMove")}}function
|
|
179
|
+
`;await c(r,`${t}/contracts/${e.name}/sources/scripts/migrate.move`,"formatAndWriteMove")}}function d(e){return e.split("_").map(t=>t.charAt(0).toUpperCase()+t.slice(1).toLowerCase()).join("")}function oe(e){return e.replace(/([A-Z])/g,"_$1").toLowerCase().replace(/^_/,"")}function I(e,t){return t!=null?Object.keys(t).map(a=>`use ${e}::${e}_${oe(a)}::${a};`).join(`
|
|
130
180
|
`):""}async function D(e,t,r,a){console.log(`
|
|
131
|
-
\u{1F4E6} Starting Schema Event Generation...`);for(let
|
|
181
|
+
\u{1F4E6} Starting Schema Event Generation...`);for(let s of Object.keys(r)){let o=s,i=r[s];console.log(` \u2514\u2500 ${o} event: ${JSON.stringify(i)}`);let p=`module ${e}::${e}_${o}_event {
|
|
132
182
|
use sui::event;
|
|
133
183
|
use std::ascii::String;
|
|
134
|
-
${
|
|
184
|
+
${I(e,t)}
|
|
135
185
|
|
|
136
|
-
public struct ${
|
|
186
|
+
public struct ${d(o)}Event has copy, drop {
|
|
137
187
|
${u(i)}
|
|
138
188
|
}
|
|
139
189
|
|
|
140
|
-
public fun new(${u(i)}): ${
|
|
141
|
-
${
|
|
142
|
-
${
|
|
190
|
+
public fun new(${u(i)}): ${d(o)}Event {
|
|
191
|
+
${d(o)}Event {
|
|
192
|
+
${g(i)}
|
|
143
193
|
}
|
|
144
194
|
}
|
|
145
|
-
}`;await c(p,`${a}/contracts/${e}/sources/codegen/data/${
|
|
195
|
+
}`;await c(p,`${a}/contracts/${e}/sources/codegen/data/${o}_event.move`,"formatAndWriteMove")}let n=`module ${e}::${e}_events {
|
|
146
196
|
use std::ascii::{String, string};
|
|
147
|
-
${
|
|
148
|
-
${Object.entries(r).map(([o
|
|
149
|
-
use ${e}::${e}_${
|
|
150
|
-
use ${e}::${e}_${
|
|
151
|
-
public fun ${
|
|
152
|
-
dubhe::storage_event::emit_set_record<${
|
|
153
|
-
string(b"${
|
|
197
|
+
${I(e,t)}
|
|
198
|
+
${Object.entries(r).map(([s,o])=>`
|
|
199
|
+
use ${e}::${e}_${s}_event::${d(s)}Event;
|
|
200
|
+
use ${e}::${e}_${s}_event;
|
|
201
|
+
public fun ${s}_event(${u(o)}) {
|
|
202
|
+
dubhe::storage_event::emit_set_record<${d(s)}Event, ${d(s)}Event, ${d(s)}Event>(
|
|
203
|
+
string(b"${s}_event"),
|
|
154
204
|
option::none(),
|
|
155
205
|
option::none(),
|
|
156
|
-
option::some(${e}_${
|
|
206
|
+
option::some(${e}_${s}_event::new(${g(o)}))
|
|
157
207
|
)
|
|
158
208
|
}
|
|
159
209
|
`).join(`
|
|
160
210
|
`)}
|
|
161
|
-
}`;await c(n,`${a}/contracts/${e}/sources/codegen/events.move`,"formatAndWriteMove"),console.log(
|
|
162
|
-
`)}import{existsSync as se}from"fs";import ie from"node:fs/promises";async function K(e,t){console.log(`
|
|
163
|
-
\u2699\uFE0F Starting System Generation...`),console.log(" \u251C\u2500 Generating systems"),console.log(` \u2514\u2500 Output path: ${t}/contracts/${e.name}/sources/systems`),se(`${t}/contracts/${e.name}/sources/systems`)||await ie.mkdir(`${t}/contracts/${e.name}/sources/systems`,{recursive:!0}),console.log(`\u2705 System Generation Complete
|
|
164
|
-
`)}async function H(e,t,r){console.log(`
|
|
211
|
+
}`;await c(n,`${a}/contracts/${e}/sources/codegen/events.move`,"formatAndWriteMove")}import{existsSync as ne}from"fs";import ie from"node:fs/promises";async function K(e,t){ne(`${t}/contracts/${e.name}/sources/systems`)||await ie.mkdir(`${t}/contracts/${e.name}/sources/systems`,{recursive:!0})}async function G(e,t,r){console.log(`
|
|
165
212
|
\u{1F4E6} Starting Schema Error Generation...`);let a=`module ${e}::${e}_errors {
|
|
166
|
-
${Object.entries(t).map(([n,
|
|
167
|
-
const ${n.toUpperCase()}: vector<u8> = b"${
|
|
213
|
+
${Object.entries(t).map(([n,s])=>(console.log(` \u2514\u2500 ${n}: ${s}`),`#[error]
|
|
214
|
+
const ${n.toUpperCase()}: vector<u8> = b"${s}";
|
|
168
215
|
public fun ${n}_error(condition: bool) { assert!(condition, ${n.toUpperCase()}) }
|
|
169
216
|
`)).join(`
|
|
170
217
|
`)}
|
|
171
|
-
}`;await c(a,`${r}/contracts/${e}/sources/codegen/errors.move`,"formatAndWriteMove"),
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
}
|
|
218
|
+
}`;await c(a,`${r}/contracts/${e}/sources/codegen/errors.move`,"formatAndWriteMove")}import{existsSync as z}from"fs";async function H(e,t){await ce(e,t),await pe(e,t)}async function ce(e,t){let r=`${t}/contracts/${e.name}/sources/codegen/core/metadata.move`;if(!z(r)){let a=`module ${e.name}::${e.name}_dapp_metadata {
|
|
219
|
+
use std::ascii::String;
|
|
220
|
+
|
|
221
|
+
public struct DappMetadata has drop, copy, store {
|
|
222
|
+
name: String,
|
|
223
|
+
description: String,
|
|
224
|
+
cover_url: vector<String>,
|
|
225
|
+
website_url: String,
|
|
226
|
+
created_at: u64,
|
|
227
|
+
partners: vector<String>,
|
|
228
|
+
}
|
|
183
229
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
230
|
+
public fun new(
|
|
231
|
+
name: String,
|
|
232
|
+
description: String,
|
|
233
|
+
cover_url: vector<String>,
|
|
234
|
+
website_url: String,
|
|
235
|
+
created_at: u64,
|
|
236
|
+
partners: vector<String>,
|
|
237
|
+
): DappMetadata {
|
|
238
|
+
DappMetadata {
|
|
193
239
|
name,
|
|
194
240
|
description,
|
|
195
|
-
|
|
241
|
+
cover_url,
|
|
196
242
|
website_url,
|
|
197
243
|
created_at,
|
|
198
244
|
partners,
|
|
199
245
|
}
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
public fun set(
|
|
203
|
-
self: &mut DappMetadata,
|
|
204
|
-
name: String,
|
|
205
|
-
description: String,
|
|
206
|
-
icon_url: String,
|
|
207
|
-
website_url: String,
|
|
208
|
-
created_at: u64,
|
|
209
|
-
partners: vector<String>,
|
|
210
|
-
) {
|
|
211
|
-
self.name = name;
|
|
212
|
-
self.description = description;
|
|
213
|
-
self.icon_url = icon_url;
|
|
214
|
-
self.website_url = website_url;
|
|
215
|
-
self.created_at = created_at;
|
|
216
|
-
self.partners = partners;
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
public fun set_name(self: &mut DappMetadata, name: String) {
|
|
220
|
-
self.name = name;
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
public fun set_description(self: &mut DappMetadata, description: String) {
|
|
224
|
-
self.description = description;
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
public fun set_icon_url(self: &mut DappMetadata, icon_url: String) {
|
|
228
|
-
self.icon_url = icon_url;
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
public fun set_website_url(self: &mut DappMetadata, website_url: String) {
|
|
232
|
-
self.website_url = website_url;
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
public fun set_created_at(self: &mut DappMetadata, created_at: u64) {
|
|
236
|
-
self.created_at = created_at;
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
public fun set_partners(self: &mut DappMetadata, partners: vector<String>) {
|
|
240
|
-
self.partners = partners;
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
public fun get_name(self: &DappMetadata): String {
|
|
244
|
-
self.name
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
public fun get_description(self: &DappMetadata): String {
|
|
248
|
-
self.description
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
public fun get_icon_url(self: &DappMetadata): String {
|
|
252
|
-
self.icon_url
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
public fun get_website_url(self: &DappMetadata): String {
|
|
256
|
-
self.website_url
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
public fun get_created_at(self: &DappMetadata): u64 {
|
|
260
|
-
self.created_at
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
public fun get_partners(self: &DappMetadata): vector<String> {
|
|
264
|
-
self.partners
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
}
|
|
268
|
-
`;await c(a,r,"formatAndWriteMove")}}async function pe(e,t){let r=`${t}/contracts/${e.name}/sources/codegen/dapp/schema.move`;if(!k(r)){let a=`module ${e.name}::${e.name}_dapp_schema {
|
|
269
|
-
use ${e.name}::${e.name}_dapp_metadata::DappMetadata;
|
|
270
|
-
use dubhe::storage_value;
|
|
271
|
-
use dubhe::storage_value::StorageValue;
|
|
272
|
-
use dubhe::storage;
|
|
273
|
-
use sui::transfer::public_share_object;
|
|
274
|
-
use dubhe::type_info;
|
|
275
|
-
|
|
276
|
-
public struct Dapp has key, store {
|
|
277
|
-
id: UID,
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
public fun borrow_admin(self: &Dapp): &StorageValue<address> {
|
|
281
|
-
storage::borrow_field(&self.id, b"admin")
|
|
282
|
-
}
|
|
283
|
-
|
|
284
|
-
public(package) fun admin(self: &mut Dapp): &mut StorageValue<address> {
|
|
285
|
-
storage::borrow_mut_field(&mut self.id, b"admin")
|
|
286
246
|
}
|
|
287
247
|
|
|
288
|
-
public fun
|
|
289
|
-
|
|
248
|
+
public fun set(
|
|
249
|
+
self: &mut DappMetadata,
|
|
250
|
+
name: String,
|
|
251
|
+
description: String,
|
|
252
|
+
cover_url: vector<String>,
|
|
253
|
+
website_url: String,
|
|
254
|
+
created_at: u64,
|
|
255
|
+
partners: vector<String>,
|
|
256
|
+
) {
|
|
257
|
+
self.name = name;
|
|
258
|
+
self.description = description;
|
|
259
|
+
self.cover_url = cover_url;
|
|
260
|
+
self.website_url = website_url;
|
|
261
|
+
self.created_at = created_at;
|
|
262
|
+
self.partners = partners;
|
|
290
263
|
}
|
|
291
264
|
|
|
292
|
-
public
|
|
293
|
-
|
|
265
|
+
public fun set_name(self: &mut DappMetadata, name: String) {
|
|
266
|
+
self.name = name;
|
|
294
267
|
}
|
|
295
268
|
|
|
296
|
-
public fun
|
|
297
|
-
|
|
269
|
+
public fun set_description(self: &mut DappMetadata, description: String) {
|
|
270
|
+
self.description = description;
|
|
298
271
|
}
|
|
299
272
|
|
|
300
|
-
public
|
|
301
|
-
|
|
273
|
+
public fun set_cover_url(self: &mut DappMetadata, cover_url: vector<String>) {
|
|
274
|
+
self.cover_url = cover_url;
|
|
302
275
|
}
|
|
303
276
|
|
|
304
|
-
public fun
|
|
305
|
-
|
|
277
|
+
public fun set_website_url(self: &mut DappMetadata, website_url: String) {
|
|
278
|
+
self.website_url = website_url;
|
|
306
279
|
}
|
|
307
280
|
|
|
308
|
-
public
|
|
309
|
-
|
|
281
|
+
public fun set_created_at(self: &mut DappMetadata, created_at: u64) {
|
|
282
|
+
self.created_at = created_at;
|
|
310
283
|
}
|
|
311
284
|
|
|
312
|
-
public fun
|
|
313
|
-
|
|
285
|
+
public fun set_partners(self: &mut DappMetadata, partners: vector<String>) {
|
|
286
|
+
self.partners = partners;
|
|
314
287
|
}
|
|
315
288
|
|
|
316
|
-
public
|
|
317
|
-
|
|
289
|
+
public fun get_name(self: &DappMetadata): String {
|
|
290
|
+
self.name
|
|
318
291
|
}
|
|
319
|
-
|
|
320
|
-
public(package) fun borrow_schemas(self: &Dapp): &StorageValue<vector<address>> {
|
|
321
|
-
storage::borrow_field(&self.id, b"schemas")
|
|
322
|
-
}
|
|
323
292
|
|
|
324
|
-
public
|
|
325
|
-
|
|
293
|
+
public fun get_description(self: &DappMetadata): String {
|
|
294
|
+
self.description
|
|
326
295
|
}
|
|
327
296
|
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
let mut id = object::new(ctx);
|
|
331
|
-
storage::add_field<StorageValue<address>>(&mut id, b"admin", storage_value::new(b"admin", ctx));
|
|
332
|
-
storage::add_field<StorageValue<address>>(&mut id, b"package_id", storage_value::new(b"package_id", ctx));
|
|
333
|
-
storage::add_field<StorageValue<u32>>(&mut id, b"version", storage_value::new(b"version", ctx));
|
|
334
|
-
storage::add_field<StorageValue<DappMetadata>>(&mut id, b"metadata", storage_value::new(b"metadata", ctx));
|
|
335
|
-
storage::add_field<StorageValue<bool>>(&mut id, b"safe_mode", storage_value::new(b"safe_mode", ctx));
|
|
336
|
-
storage::add_field<StorageValue<vector<address>>>(&mut id, b"schemas", storage_value::new(b"schemas", ctx));
|
|
337
|
-
Dapp { id }
|
|
297
|
+
public fun get_cover_url(self: &DappMetadata): vector<String> {
|
|
298
|
+
self.cover_url
|
|
338
299
|
}
|
|
339
300
|
|
|
340
|
-
public
|
|
341
|
-
|
|
342
|
-
assert!(dapp.borrow_admin().get() == ctx.sender(), 0);
|
|
343
|
-
let new_package_id = type_info::current_package_id<DappKey>();
|
|
344
|
-
dapp.package_id().set(new_package_id);
|
|
345
|
-
let current_version = dapp.version()[];
|
|
346
|
-
dapp.version().set(current_version + 1);
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
public(package) fun add_schema<Schema: key + store>(dapp: &mut Dapp, schema: Schema) {
|
|
350
|
-
let mut schemas = dapp.schemas()[];
|
|
351
|
-
schemas.push_back(object::id_address<Schema>(&schema));
|
|
352
|
-
dapp.schemas().set(schemas);
|
|
353
|
-
public_share_object(schema);
|
|
301
|
+
public fun get_website_url(self: &DappMetadata): String {
|
|
302
|
+
self.website_url
|
|
354
303
|
}
|
|
355
304
|
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
public fun create_dapp_for_testing(ctx: &mut TxContext): Dapp {
|
|
359
|
-
create(ctx)
|
|
305
|
+
public fun get_created_at(self: &DappMetadata): u64 {
|
|
306
|
+
self.created_at
|
|
360
307
|
}
|
|
361
308
|
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
public fun distroy_dapp_for_testing(dapp: Dapp) {
|
|
365
|
-
let Dapp { id } = dapp;
|
|
366
|
-
id.delete();
|
|
309
|
+
public fun get_partners(self: &DappMetadata): vector<String> {
|
|
310
|
+
self.partners
|
|
367
311
|
}
|
|
368
312
|
}
|
|
369
|
-
`;await c(a,r,"formatAndWriteMove")}}async function
|
|
313
|
+
`;await c(a,r,"formatAndWriteMove")}}async function pe(e,t){let r=`${t}/contracts/${e.name}/sources/codegen/core/system.move`;if(!z(r)){let a=`module ${e.name}::${e.name}_dapp_system {
|
|
370
314
|
use std::ascii::String;
|
|
371
315
|
use std::ascii;
|
|
372
316
|
use dubhe::type_info;
|
|
373
317
|
use sui::clock::Clock;
|
|
374
|
-
use
|
|
318
|
+
use sui::transfer::public_share_object;
|
|
319
|
+
use ${e.name}::${e.name}_schema::Schema;
|
|
375
320
|
use ${e.name}::${e.name}_dapp_metadata;
|
|
376
|
-
use ${e.name}::${e.name}
|
|
321
|
+
use ${e.name}::${e.name}_dapp_metadata::DappMetadata;
|
|
322
|
+
use dubhe::storage::add_field;
|
|
323
|
+
use dubhe::storage_value;
|
|
324
|
+
use dubhe::storage_value::StorageValue;
|
|
377
325
|
|
|
378
326
|
public struct DappKey has drop {}
|
|
379
327
|
public(package) fun new(): DappKey {
|
|
380
328
|
DappKey { }
|
|
381
329
|
}
|
|
382
330
|
|
|
383
|
-
public(package) fun create(name: String, description: String, clock: &Clock, ctx: &mut TxContext): Dapp {
|
|
384
|
-
let mut dapp = ${e.name}_dapp_schema::create(ctx);
|
|
385
|
-
assert!(!dapp.borrow_metadata().contains(), 0);
|
|
386
|
-
dapp.metadata().set(
|
|
387
|
-
${e.name}_dapp_metadata::new(
|
|
388
|
-
name,
|
|
389
|
-
description,
|
|
390
|
-
ascii::string(b""),
|
|
391
|
-
ascii::string(b""),
|
|
392
|
-
clock.timestamp_ms(),
|
|
393
|
-
vector[]
|
|
394
|
-
)
|
|
395
|
-
);
|
|
396
|
-
let package_id = type_info::current_package_id<DappKey>();
|
|
397
|
-
dapp.package_id().set(package_id);
|
|
398
|
-
dapp.admin().set(ctx.sender());
|
|
399
|
-
dapp.version().set(1);
|
|
400
|
-
dapp.safe_mode().set(false);
|
|
401
|
-
dapp.schemas().set(vector[]);
|
|
402
|
-
dapp
|
|
403
|
-
}
|
|
404
|
-
|
|
405
331
|
public entry fun set_metadata(
|
|
406
|
-
|
|
332
|
+
schema: &mut Schema,
|
|
407
333
|
name: String,
|
|
408
334
|
description: String,
|
|
409
|
-
|
|
335
|
+
cover_url: vector<String>,
|
|
410
336
|
website_url: String,
|
|
411
337
|
partners: vector<String>,
|
|
412
338
|
ctx: &TxContext,
|
|
413
339
|
) {
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
let created_at =
|
|
417
|
-
|
|
340
|
+
let admin = schema.dapp__admin().try_get();
|
|
341
|
+
assert!(admin == option::some(ctx.sender()), 0);
|
|
342
|
+
let created_at = schema.dapp__metadata().get().get_created_at();
|
|
343
|
+
schema.dapp__metadata().set(
|
|
418
344
|
${e.name}_dapp_metadata::new(
|
|
419
345
|
name,
|
|
420
346
|
description,
|
|
421
|
-
|
|
347
|
+
cover_url,
|
|
422
348
|
website_url,
|
|
423
349
|
created_at,
|
|
424
350
|
partners
|
|
425
351
|
)
|
|
426
352
|
);
|
|
427
|
-
|
|
353
|
+
}
|
|
428
354
|
|
|
429
|
-
public entry fun transfer_ownership(dapp: &mut Dapp, new_admin: address, ctx: &mut TxContext) {
|
|
430
|
-
let admin = dapp.admin().try_get();
|
|
431
|
-
assert!(admin == option::some(ctx.sender()), 0);
|
|
432
|
-
dapp.admin().set(new_admin);
|
|
433
|
-
}
|
|
434
355
|
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
356
|
+
public entry fun transfer_ownership(schema: &mut Schema, new_admin: address, ctx: &mut TxContext) {
|
|
357
|
+
let admin = schema.dapp__admin().try_get();
|
|
358
|
+
assert!(admin == option::some(ctx.sender()), 0);
|
|
359
|
+
schema.dapp__admin().set(new_admin);
|
|
360
|
+
}
|
|
440
361
|
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
362
|
+
public entry fun set_safe_mode(schema: &mut Schema, safe_mode: bool, ctx: &TxContext) {
|
|
363
|
+
let admin = schema.dapp__admin().try_get();
|
|
364
|
+
assert!(admin == option::some(ctx.sender()), 0);
|
|
365
|
+
schema.dapp__safe_mode().set(safe_mode);
|
|
366
|
+
}
|
|
444
367
|
|
|
445
|
-
|
|
446
|
-
assert!(
|
|
447
|
-
|
|
368
|
+
public fun ensure_no_safe_mode(schema: &mut Schema) {
|
|
369
|
+
assert!(!schema.dapp__safe_mode()[], 0);
|
|
370
|
+
}
|
|
448
371
|
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
372
|
+
public fun ensure_has_authority(schema: &mut Schema, ctx: &TxContext) {
|
|
373
|
+
assert!(schema.dapp__admin().get() == ctx.sender(), 0);
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
public fun ensure_has_schema<S: key + store>(schema: &mut Schema, new_schema: &S) {
|
|
377
|
+
let schema_id = object::id_address(new_schema);
|
|
378
|
+
assert!(schema.dapp__authorised_schemas().get().contains(&schema_id), 0);
|
|
379
|
+
}
|
|
454
380
|
|
|
381
|
+
public(package) fun create(schema: &mut Schema, name: String, description: String, clock: &Clock, ctx: &mut TxContext){
|
|
382
|
+
add_field<StorageValue<address>>(schema.id(), b"dapp__admin", storage_value::new(b"dapp__admin", ctx));
|
|
383
|
+
add_field<StorageValue<address>>(schema.id(), b"dapp__package_id", storage_value::new(b"dapp__package_id", ctx));
|
|
384
|
+
add_field<StorageValue<u32>>(schema.id(), b"dapp__version", storage_value::new(b"dapp__version", ctx));
|
|
385
|
+
add_field<StorageValue<DappMetadata>>(schema.id(), b"dapp__metadata", storage_value::new(b"dapp__metadata", ctx));
|
|
386
|
+
add_field<StorageValue<bool>>(schema.id(), b"dapp__safe_mode", storage_value::new(b"dapp__safe_mode", ctx));
|
|
387
|
+
add_field<StorageValue<vector<address>>>(schema.id(), b"dapp__authorised_schemas", storage_value::new(b"dapp__authorised_schemas", ctx));
|
|
388
|
+
schema.dapp__metadata().set(
|
|
389
|
+
${e.name}_dapp_metadata::new(
|
|
390
|
+
name,
|
|
391
|
+
description,
|
|
392
|
+
vector[],
|
|
393
|
+
ascii::string(b""),
|
|
394
|
+
clock.timestamp_ms(),
|
|
395
|
+
vector[]
|
|
396
|
+
)
|
|
397
|
+
);
|
|
398
|
+
let package_id = type_info::current_package_id<DappKey>();
|
|
399
|
+
schema.dapp__package_id().set(package_id);
|
|
400
|
+
schema.dapp__admin().set(ctx.sender());
|
|
401
|
+
schema.dapp__version().set(1);
|
|
402
|
+
schema.dapp__safe_mode().set(false);
|
|
403
|
+
schema.dapp__authorised_schemas().set(vector[]);
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
public(package) fun upgrade<DappKey: drop>(schema: &mut Schema, ctx: &TxContext) {
|
|
407
|
+
assert!(schema.dapp__metadata().contains(), 0);
|
|
408
|
+
assert!(schema.dapp__admin().get() == ctx.sender(), 0);
|
|
409
|
+
let new_package_id = type_info::current_package_id<DappKey>();
|
|
410
|
+
schema.dapp__package_id().set(new_package_id);
|
|
411
|
+
let current_version = schema.dapp__version()[];
|
|
412
|
+
schema.dapp__version().set(current_version + 1);
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
public(package) fun add_schema<S: key + store>(schema: &mut Schema, new_schema: S) {
|
|
416
|
+
let mut schemas = schema.dapp__authorised_schemas()[];
|
|
417
|
+
schemas.push_back(object::id_address<S>(&new_schema));
|
|
418
|
+
schema.dapp__authorised_schemas().set(schemas);
|
|
419
|
+
public_share_object(new_schema);
|
|
420
|
+
}
|
|
421
|
+
}
|
|
455
422
|
|
|
456
|
-
`;await c(a,r,"formatAndWriteMove")}}async function Q(e,t){
|
|
457
|
-
\u{1F4DD} Starting Init Generation...`),console.log(` \u2514\u2500 Output path: ${t}/contracts/${e.name}/sources/tests/init.move`);let r=`module ${e.name}::${e.name}_init_test {
|
|
458
|
-
use ${e.name}::${e.name}_dapp_schema::Dapp;
|
|
423
|
+
`;await c(a,r,"formatAndWriteMove")}}async function Q(e,t){let r=`module ${e.name}::${e.name}_init_test {
|
|
459
424
|
use sui::clock;
|
|
460
425
|
use sui::test_scenario;
|
|
461
426
|
use sui::test_scenario::Scenario;
|
|
462
427
|
|
|
463
|
-
public fun deploy_dapp_for_testing(sender: address):
|
|
428
|
+
public fun deploy_dapp_for_testing(sender: address): Scenario {
|
|
464
429
|
let mut scenario = test_scenario::begin(sender);
|
|
465
430
|
let ctx = test_scenario::ctx(&mut scenario);
|
|
466
431
|
let clock = clock::create_for_testing(ctx);
|
|
467
432
|
${e.name}::${e.name}_genesis::run(&clock, ctx);
|
|
468
433
|
clock::destroy_for_testing(clock);
|
|
469
434
|
test_scenario::next_tx(&mut scenario,sender);
|
|
470
|
-
|
|
471
|
-
(scenario, dapp)
|
|
435
|
+
scenario
|
|
472
436
|
}
|
|
473
437
|
}
|
|
474
|
-
`;await c(r,`${t}/contracts/${e.name}/sources/
|
|
438
|
+
`;await c(r,`${t}/contracts/${e.name}/sources/codegen/core/init_test.move`,"formatAndWriteMove");let a=`module ${e.name}::${e.name}_genesis {
|
|
475
439
|
use std::ascii::string;
|
|
476
440
|
|
|
477
441
|
use sui::clock::Clock;
|
|
@@ -479,19 +443,18 @@ use ${e}::${e}_${o}_event;
|
|
|
479
443
|
use ${e.name}::${e.name}_dapp_system;
|
|
480
444
|
|
|
481
445
|
public entry fun run(clock: &Clock, ctx: &mut TxContext) {
|
|
482
|
-
// Create a dapp.
|
|
483
|
-
let mut dapp = ${e.name}_dapp_system::create(string(b"${e.name}"),string(b"${e.description}"), clock , ctx);
|
|
484
446
|
// Create schemas
|
|
485
447
|
let mut schema = ${e.name}::${e.name}_schema::create(ctx);
|
|
448
|
+
// Setup default storage
|
|
449
|
+
${e.name}_dapp_system::create(&mut schema, string(b"${e.name}"),string(b"${e.description}"), clock , ctx);
|
|
486
450
|
// Logic that needs to be automated once the contract is deployed
|
|
487
451
|
${e.name}::${e.name}_deploy_hook::run(&mut schema, ctx);
|
|
488
452
|
// Authorize schemas and public share objects
|
|
489
|
-
|
|
490
|
-
sui::transfer::public_share_object(dapp);
|
|
453
|
+
sui::transfer::public_share_object(schema);
|
|
491
454
|
}
|
|
492
455
|
}
|
|
493
|
-
`;await c(a,`${t}/contracts/${e.name}/sources/codegen/genesis.move`,"formatAndWriteMove"),console.log(
|
|
494
|
-
|
|
495
|
-
\
|
|
496
|
-
`)}import{findUp as
|
|
456
|
+
`;await c(a,`${t}/contracts/${e.name}/sources/codegen/core/genesis.move`,"formatAndWriteMove")}async function gt(e,t,r){console.log(`
|
|
457
|
+
\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 a=t??process.cwd();k(`${a}/contracts/${e.name}`)&&x(`${a}/contracts/${e.name}/sources/codegen`),k(`${a}/contracts/${e.name}/Move.toml`)||await O(e,a),k(`${a}/contracts/${e.name}/sources/script/deploy_hook.move`)||await L(e,a),e.events&&(e.data?await D(e.name,e.data,e.events,a):await D(e.name,null,e.events,a)),e.data?(await j(e.name,e.data,a),await w(e.name,e.data,e.schemas,a)):await w(e.name,null,e.schemas,a),e.errors&&await G(e.name,e.errors,a),await H(e,a),await Q(e,a),await K(e,a),await B(e,a),console.log(`
|
|
458
|
+
\u2705 Schema Generation Process Complete!
|
|
459
|
+
`)}import{findUp as ue}from"find-up";import A from"path";import me from"esbuild";var S=class extends Error{name="NotInsideProjectError";message="You are not inside a Dubhe project"};import{rmSync as de}from"fs";import{pathToFileURL as le}from"url";import _e from"os";var ge=["dubhe.config.js","dubhe.config.mjs","dubhe.config.ts","dubhe.config.mts"],M="dubhe.config.example.mjs";async function Dt(e){e=await Z(e);try{return await me.build({entryPoints:[e],format:"esm",outfile:M,platform:"node",bundle:!0,packages:"external"}),e=await Z(M,!0),(await import(e+`?update=${Date.now()}`)).dubheConfig}finally{de(M,{force:!0})}}async function Z(e,t){return e===void 0?e=await fe():A.isAbsolute(e)||(e=A.join(process.cwd(),e),e=A.normalize(e)),t&&_e.platform()==="win32"?le(e).href:e}async function fe(){let e=await ue(ge);if(e===void 0)throw new S;return e}function Et(...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 y=e=>{if(typeof e!="object"||e===null)return e;let t={};for(let r in e)if(e.hasOwnProperty(r)){let a=e[r];typeof a=="object"&&a!==null?Array.isArray(a)?t[r]=J(a):a.hasOwnProperty("variant")?t[r]={[a.variant]:{}}:a.hasOwnProperty("fields")?t[r]=y(a.fields):t[r]=y(a):t[r]=a}return t},J=e=>{let t=[];return e.forEach(r=>{typeof r=="object"&&r!==null?Array.isArray(r)?t.push(J(r)):r.hasOwnProperty("variant")?t.push({[r.variant]:{}}):r.hasOwnProperty("fields")?t.push(y(r.fields)):t.push(y(r)):t.push(r)}),t};var be=(r=>(r.Event="event",r.Schema="schema",r))(be||{});export{be as SubscriptionKind,c as formatAndWriteMove,Te as formatAndWriteTypescript,T as formatMove,C as formatTypescript,Dt as loadConfig,y as parseData,Ve as posixPath,Z as resolveConfigPath,gt as schemaGen,Et as storage};
|
|
497
460
|
//# sourceMappingURL=index.js.map
|