@0xobelisk/sui-common 1.2.0-pre.98 ā 2.0.0
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/LICENSE +92 -0
- package/README.md +670 -1
- package/dist/index.d.ts +61 -27
- package/dist/index.js +1078 -461
- package/dist/index.js.map +1 -1
- package/package.json +15 -17
- package/src/codegen/debug.ts +0 -4
- package/src/codegen/types/index.ts +46 -10
- package/src/codegen/utils/config.ts +1 -1
- package/src/codegen/utils/format.ts +0 -6
- package/src/codegen/utils/formatAndWrite.ts +10 -31
- package/src/codegen/utils/generateLock.ts +122 -0
- package/src/codegen/utils/index.ts +4 -2
- package/src/codegen/utils/renderMove/{schemaGen.ts ā codegen.ts} +40 -28
- package/src/codegen/utils/renderMove/common.ts +0 -65
- package/src/codegen/utils/renderMove/dapp.ts +2 -14
- package/src/codegen/utils/renderMove/generateDappKey.ts +33 -18
- package/src/codegen/utils/renderMove/generateError.ts +32 -15
- package/src/codegen/utils/renderMove/generateGenesis.ts +55 -22
- package/src/codegen/utils/renderMove/generateInitTest.ts +26 -14
- package/src/codegen/utils/renderMove/generateObjects.ts +377 -0
- package/src/codegen/utils/renderMove/generatePermits.ts +151 -0
- package/src/codegen/utils/renderMove/generateResources.ts +894 -242
- package/src/codegen/utils/renderMove/generateScenes.ts +467 -0
- package/src/codegen/utils/renderMove/generateScript.ts +18 -13
- package/src/codegen/utils/renderMove/generateSystem.ts +0 -2
- package/src/codegen/utils/renderMove/generateUserStorageInit.ts +37 -0
- package/src/codegen/utils/validateConfig.ts +237 -0
- package/src/index.ts +0 -1
- package/src/modules.d.ts +0 -10
- package/src/codegen/modules.d.ts +0 -1
- package/src/codegen/utils/posixPath.ts +0 -8
- package/src/codegen/utils/renderMove/generateComponents.ts +0 -802
- package/src/codegen/utils/renderMove/generateDefaultSchema.ts +0 -216
- package/src/codegen/utils/renderMove/generateEvent.ts +0 -99
- package/src/codegen/utils/renderMove/generateSchema.ts +0 -287
- package/src/codegen/utils/renderMove/generateSchemaHub.ts +0 -60
- package/src/parseData/index.ts +0 -1
- package/src/parseData/parser/index.ts +0 -47
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { DubheConfig } from '../../types';
|
|
2
|
+
import { formatAndWriteMove } from '../formatAndWrite';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
|
|
5
|
+
function toPascalCase(str: string): string {
|
|
6
|
+
return str
|
|
7
|
+
.split('_')
|
|
8
|
+
.map((word) => {
|
|
9
|
+
if (/^\d+$/.test(word)) return word;
|
|
10
|
+
return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
|
|
11
|
+
})
|
|
12
|
+
.join('');
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export async function generatePermits(config: DubheConfig, outputDir: string) {
|
|
16
|
+
if (!config.permits || Object.keys(config.permits).length === 0) return;
|
|
17
|
+
console.log('\nš¦ Starting Scene Permit Generation...');
|
|
18
|
+
|
|
19
|
+
const projectName = config.name;
|
|
20
|
+
|
|
21
|
+
for (const permitKey of Object.keys(config.permits)) {
|
|
22
|
+
console.log(` āā ${permitKey}`);
|
|
23
|
+
const markerName = toPascalCase(permitKey);
|
|
24
|
+
const permitTypeTag = `b"${permitKey}"`;
|
|
25
|
+
const fullPermitType = `dubhe::dapp_service::ScenePermit<${markerName}>`;
|
|
26
|
+
|
|
27
|
+
const code = `module ${projectName}::${permitKey} {
|
|
28
|
+
use dubhe::dapp_service::{Self, DappStorage};
|
|
29
|
+
use ${projectName}::dapp_key;
|
|
30
|
+
use ${projectName}::dapp_key::DappKey;
|
|
31
|
+
|
|
32
|
+
const PERMIT_TYPE: vector<u8> = ${permitTypeTag};
|
|
33
|
+
|
|
34
|
+
#[error]
|
|
35
|
+
const EPermitNotExpiredYet: vector<u8> = b"Scene permit is still active";
|
|
36
|
+
|
|
37
|
+
/// Phantom type that distinguishes this permit from others at compile time.
|
|
38
|
+
public struct ${markerName} has copy, drop {}
|
|
39
|
+
|
|
40
|
+
public fun meta(permit: &${fullPermitType}): &dubhe::dapp_service::PermitMetadata {
|
|
41
|
+
dapp_service::scene_permit_meta(permit)
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
public fun is_active(permit: &${fullPermitType}, now_ms: u64): bool {
|
|
45
|
+
dapp_service::is_scene_active(dapp_service::scene_permit_meta(permit), now_ms)
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
public fun is_participant(permit: &${fullPermitType}, addr: address): bool {
|
|
49
|
+
dubhe::dapp_system::is_scene_permit_participant<${markerName}>(permit, addr)
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
public(package) fun new_${permitKey}(
|
|
53
|
+
dapp_storage: &DappStorage,
|
|
54
|
+
participants: vector<address>,
|
|
55
|
+
expires_at: std::option::Option<u64>,
|
|
56
|
+
max_participants: std::option::Option<u64>,
|
|
57
|
+
ctx: &mut TxContext,
|
|
58
|
+
): ${fullPermitType} {
|
|
59
|
+
dubhe::dapp_system::new_scene_permit<DappKey, ${markerName}>(
|
|
60
|
+
dapp_key::new(), dapp_storage, PERMIT_TYPE, participants, expires_at, max_participants, ctx
|
|
61
|
+
)
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
public(package) fun new_${permitKey}_with_invitations(
|
|
65
|
+
dapp_storage: &DappStorage,
|
|
66
|
+
invitees: vector<address>,
|
|
67
|
+
invites_expire_at: std::option::Option<u64>,
|
|
68
|
+
scene_expires_at: std::option::Option<u64>,
|
|
69
|
+
max_participants: std::option::Option<u64>,
|
|
70
|
+
ctx: &mut TxContext,
|
|
71
|
+
): ${fullPermitType} {
|
|
72
|
+
dubhe::dapp_system::new_scene_permit_with_invitations<DappKey, ${markerName}>(
|
|
73
|
+
dapp_key::new(), dapp_storage, PERMIT_TYPE, invitees, invites_expire_at, scene_expires_at, max_participants, ctx
|
|
74
|
+
)
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
public(package) fun share_${permitKey}(permit: ${fullPermitType}) {
|
|
78
|
+
dubhe::dapp_system::share_scene_permit<DappKey, ${markerName}>(
|
|
79
|
+
dapp_key::new(), permit
|
|
80
|
+
);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
public(package) fun create_${permitKey}(
|
|
84
|
+
dapp_storage: &DappStorage,
|
|
85
|
+
participants: vector<address>,
|
|
86
|
+
expires_at: std::option::Option<u64>,
|
|
87
|
+
max_participants: std::option::Option<u64>,
|
|
88
|
+
ctx: &mut TxContext,
|
|
89
|
+
) {
|
|
90
|
+
dubhe::dapp_system::create_and_share_scene_permit<DappKey, ${markerName}>(
|
|
91
|
+
dapp_key::new(), dapp_storage, PERMIT_TYPE, participants, expires_at, max_participants, ctx
|
|
92
|
+
);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
public(package) fun create_${permitKey}_with_invitations(
|
|
96
|
+
dapp_storage: &DappStorage,
|
|
97
|
+
invitees: vector<address>,
|
|
98
|
+
invites_expire_at: std::option::Option<u64>,
|
|
99
|
+
scene_expires_at: std::option::Option<u64>,
|
|
100
|
+
max_participants: std::option::Option<u64>,
|
|
101
|
+
ctx: &mut TxContext,
|
|
102
|
+
) {
|
|
103
|
+
dubhe::dapp_system::create_and_share_scene_permit_with_invitations<DappKey, ${markerName}>(
|
|
104
|
+
dapp_key::new(), dapp_storage, PERMIT_TYPE, invitees, invites_expire_at, scene_expires_at, max_participants, ctx
|
|
105
|
+
);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
public(package) fun accept_${permitKey}(
|
|
109
|
+
permit: &mut ${fullPermitType},
|
|
110
|
+
user_storage: &dubhe::dapp_service::UserStorage,
|
|
111
|
+
ctx: &TxContext,
|
|
112
|
+
) {
|
|
113
|
+
dubhe::dapp_system::accept_scene_permit_invitation<DappKey, ${markerName}>(
|
|
114
|
+
dapp_key::new(), permit, user_storage, ctx
|
|
115
|
+
);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
public(package) fun join_${permitKey}(
|
|
119
|
+
permit: &mut ${fullPermitType},
|
|
120
|
+
user_storage: &dubhe::dapp_service::UserStorage,
|
|
121
|
+
ctx: &TxContext,
|
|
122
|
+
) {
|
|
123
|
+
dubhe::dapp_system::join_scene_permit<DappKey, ${markerName}>(dapp_key::new(), permit, user_storage, ctx);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
public(package) fun leave_${permitKey}(
|
|
127
|
+
permit: &mut ${fullPermitType},
|
|
128
|
+
user_storage: &dubhe::dapp_service::UserStorage,
|
|
129
|
+
ctx: &TxContext,
|
|
130
|
+
) {
|
|
131
|
+
dubhe::dapp_system::leave_scene_permit<DappKey, ${markerName}>(dapp_key::new(), permit, user_storage, ctx);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
public(package) fun expire_${permitKey}(
|
|
135
|
+
permit: ${fullPermitType},
|
|
136
|
+
ctx: &TxContext,
|
|
137
|
+
) {
|
|
138
|
+
assert!(
|
|
139
|
+
!dapp_service::is_scene_active(dapp_service::scene_permit_meta(&permit), ctx.epoch_timestamp_ms()),
|
|
140
|
+
EPermitNotExpiredYet
|
|
141
|
+
);
|
|
142
|
+
dubhe::dapp_system::destroy_scene_permit<DappKey, ${markerName}>(
|
|
143
|
+
dapp_key::new(), permit
|
|
144
|
+
);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
`;
|
|
148
|
+
|
|
149
|
+
await formatAndWriteMove(code, path.join(outputDir, `${permitKey}.move`), 'formatAndWriteMove');
|
|
150
|
+
}
|
|
151
|
+
}
|