@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.
Files changed (39) hide show
  1. package/LICENSE +92 -0
  2. package/README.md +670 -1
  3. package/dist/index.d.ts +61 -27
  4. package/dist/index.js +1078 -461
  5. package/dist/index.js.map +1 -1
  6. package/package.json +15 -17
  7. package/src/codegen/debug.ts +0 -4
  8. package/src/codegen/types/index.ts +46 -10
  9. package/src/codegen/utils/config.ts +1 -1
  10. package/src/codegen/utils/format.ts +0 -6
  11. package/src/codegen/utils/formatAndWrite.ts +10 -31
  12. package/src/codegen/utils/generateLock.ts +122 -0
  13. package/src/codegen/utils/index.ts +4 -2
  14. package/src/codegen/utils/renderMove/{schemaGen.ts → codegen.ts} +40 -28
  15. package/src/codegen/utils/renderMove/common.ts +0 -65
  16. package/src/codegen/utils/renderMove/dapp.ts +2 -14
  17. package/src/codegen/utils/renderMove/generateDappKey.ts +33 -18
  18. package/src/codegen/utils/renderMove/generateError.ts +32 -15
  19. package/src/codegen/utils/renderMove/generateGenesis.ts +55 -22
  20. package/src/codegen/utils/renderMove/generateInitTest.ts +26 -14
  21. package/src/codegen/utils/renderMove/generateObjects.ts +377 -0
  22. package/src/codegen/utils/renderMove/generatePermits.ts +151 -0
  23. package/src/codegen/utils/renderMove/generateResources.ts +894 -242
  24. package/src/codegen/utils/renderMove/generateScenes.ts +467 -0
  25. package/src/codegen/utils/renderMove/generateScript.ts +18 -13
  26. package/src/codegen/utils/renderMove/generateSystem.ts +0 -2
  27. package/src/codegen/utils/renderMove/generateUserStorageInit.ts +37 -0
  28. package/src/codegen/utils/validateConfig.ts +237 -0
  29. package/src/index.ts +0 -1
  30. package/src/modules.d.ts +0 -10
  31. package/src/codegen/modules.d.ts +0 -1
  32. package/src/codegen/utils/posixPath.ts +0 -8
  33. package/src/codegen/utils/renderMove/generateComponents.ts +0 -802
  34. package/src/codegen/utils/renderMove/generateDefaultSchema.ts +0 -216
  35. package/src/codegen/utils/renderMove/generateEvent.ts +0 -99
  36. package/src/codegen/utils/renderMove/generateSchema.ts +0 -287
  37. package/src/codegen/utils/renderMove/generateSchemaHub.ts +0 -60
  38. package/src/parseData/index.ts +0 -1
  39. 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
+ }