Skip to content

Commit 755fa65

Browse files
authored
Added Lucid Evolution template (#38)
1 parent 3bcbdc7 commit 755fa65

14 files changed

+946
-21
lines changed

codegen/examples/README.md

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,38 @@
22

33
In this folder you can find off-chain boilerplate code generated with the Codegen library using the CLI
44

5-
## TxPipe - Asteria
5+
## TxPipe - Asteria (Blaze)
66

77
```sh
8-
telchar codegen txpipe/asteria blaze > types/txpipe_asteria.ts
8+
telchar codegen txpipe/asteria blaze > types/blaze_txpipe_asteria.ts
99
```
1010

11-
## jpg.store - Marketplace
11+
## TxPipe - Asteria (Lucid Evolution)
1212

1313
```sh
14-
telchar codegen jpg-store/marketplace blaze > types/jpg_store_marketplace.ts
14+
telchar codegen txpipe/asteria lucid-evolution > types/lucid-evolution_txpipe_asteria.ts
1515
```
1616

17-
## Githoney - Contract
17+
## jpg.store - Marketplace (Blaze)
1818

1919
```sh
20-
telchar codegen githoney/contract blaze > types/githoney_contract.ts
20+
telchar codegen jpg-store/marketplace blaze > types/blaze_jpg_store_marketplace.ts
21+
```
22+
23+
## jpg.store - Marketplace (Lucid Evolution)
24+
25+
```sh
26+
telchar codegen jpg-store/marketplace lucid-evolution > types/lucid-evolution_jpg_store_marketplace.ts
27+
```
28+
29+
## Githoney - Contract (Blaze)
30+
31+
```sh
32+
telchar codegen githoney/contract blaze > types/blaze_githoney_contract.ts
33+
```
34+
35+
## Githoney - Contract (Lucid Evolution)
36+
37+
```sh
38+
telchar codegen githoney/contract lucid-evolution > types/lucid-evolution_githoney_contract.ts
2139
```

codegen/examples/package-lock.json

Lines changed: 535 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

codegen/examples/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
"private": true,
44
"type": "module",
55
"dependencies": {
6-
"@blaze-cardano/sdk": "^0.2.22"
6+
"@blaze-cardano/sdk": "^0.2.22",
7+
"@lucid-evolution/lucid": "^0.4.23"
78
}
89
}

codegen/examples/types/githoney_contract.ts renamed to codegen/examples/types/blaze_githoney_contract.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ const Bool = Data.Enum([
1111

1212
const ByteArray = Data.Bytes();
1313

14+
const AnyData = Data.Any();
15+
1416
const Int = Data.Integer();
1517

1618
const TypesGithoneyContractRedeemersAddRewards = Data.Literal("AddRewards");
@@ -84,7 +86,7 @@ const AikenTransactionDatumDatumHash = Data.Tuple([
8486
]);
8587

8688
const AikenTransactionDatumInlineDatum = Data.Tuple([
87-
Data,
89+
AnyData,
8890
]);
8991

9092
const AikenTransactionDatum = Data.Enum([
File renamed without changes.
File renamed without changes.
Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
import { Data } from "@lucid-evolution/lucid";
2+
3+
const BoolFalse = Data.Literal("False");
4+
5+
const BoolTrue = Data.Literal("True");
6+
7+
const Bool = Data.Enum([
8+
BoolFalse,
9+
BoolTrue,
10+
]);
11+
12+
const ByteArray = Data.Bytes();
13+
14+
const AnyData = Data.Any();
15+
16+
const Int = Data.Integer();
17+
18+
const TypesGithoneyContractRedeemersAddRewards = Data.Literal("AddRewards");
19+
20+
const TypesGithoneyContractRedeemersAssign = Data.Literal("Assign");
21+
22+
const TypesGithoneyContractRedeemersMerge = Data.Literal("Merge");
23+
24+
const TypesGithoneyContractRedeemersClose = Data.Literal("Close");
25+
26+
const TypesGithoneyContractRedeemersClaim = Data.Literal("Claim");
27+
28+
const TypesGithoneyContractRedeemers = Data.Enum([
29+
TypesGithoneyContractRedeemersAddRewards,
30+
TypesGithoneyContractRedeemersAssign,
31+
TypesGithoneyContractRedeemersMerge,
32+
TypesGithoneyContractRedeemersClose,
33+
TypesGithoneyContractRedeemersClaim,
34+
]);
35+
36+
const OptionByteArraySome = Data.Tuple([
37+
ByteArray,
38+
]);
39+
40+
const OptionByteArray = Data.Nullable(OptionByteArraySome);
41+
42+
const TypesSettingsRedeemersUpdateSettings = Data.Literal("UpdateSettings");
43+
44+
const TypesSettingsRedeemersCloseSettings = Data.Literal("CloseSettings");
45+
46+
const AikenTransactionTransactionId = Data.Object({
47+
hash: ByteArray,
48+
});
49+
50+
const TypesAssetClass = Data.Object({
51+
policy_id: ByteArray,
52+
asset_name: ByteArray,
53+
});
54+
55+
const TypesSettingsRedeemers = Data.Enum([
56+
TypesSettingsRedeemersUpdateSettings,
57+
TypesSettingsRedeemersCloseSettings,
58+
]);
59+
60+
const TypesTokenInfo = Data.Object({
61+
asset: TypesAssetClass,
62+
amount: Int,
63+
});
64+
65+
const TypesWallet = Data.Object({
66+
payment_key: ByteArray,
67+
stake_key: OptionByteArray,
68+
});
69+
70+
const ListTypesTokenInfo = Data.Array(TypesTokenInfo);
71+
72+
const OptionTypesWalletSome = Data.Tuple([
73+
TypesWallet,
74+
]);
75+
76+
const OptionTypesWallet = Data.Nullable(OptionTypesWalletSome);
77+
78+
const RedeemerWrapperTypesGithoneyContractRedeemers = Data.Tuple([
79+
TypesGithoneyContractRedeemers,
80+
]);
81+
82+
const AikenTransactionDatumNoDatum = Data.Literal("NoDatum");
83+
84+
const AikenTransactionDatumDatumHash = Data.Tuple([
85+
ByteArray,
86+
]);
87+
88+
const AikenTransactionDatumInlineDatum = Data.Tuple([
89+
AnyData,
90+
]);
91+
92+
const AikenTransactionDatum = Data.Enum([
93+
AikenTransactionDatumNoDatum,
94+
AikenTransactionDatumDatumHash,
95+
AikenTransactionDatumInlineDatum,
96+
]);
97+
98+
const AikenTransactionOutputReference = Data.Object({
99+
transaction_id: AikenTransactionTransactionId,
100+
output_index: Int,
101+
});
102+
103+
const TypesGithoneyDatum = Data.Object({
104+
admin_wallet: TypesWallet,
105+
maintainer_wallet: TypesWallet,
106+
contributor_wallet: OptionTypesWallet,
107+
bounty_reward_fee: Int,
108+
deadline: Int,
109+
merged: Bool,
110+
initial_value: ListTypesTokenInfo,
111+
});
112+
113+
const TypesSettingsDatum = Data.Object({
114+
githoney_wallet: TypesWallet,
115+
bounty_creation_fee: Int,
116+
bounty_reward_fee: Int,
117+
});
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
import { Data } from "@lucid-evolution/lucid";
2+
3+
const ByteArray = Data.Bytes();
4+
5+
const Int = Data.Integer();
6+
7+
const AikenTransactionCredentialCredentialScriptCredential = Data.Tuple([
8+
ByteArray,
9+
]);
10+
11+
const AikenTransactionCredentialCredentialVerificationKeyCredential = Data.Tuple([
12+
ByteArray,
13+
]);
14+
15+
const AikenTransactionCredentialCredential = Data.Enum([
16+
AikenTransactionCredentialCredentialVerificationKeyCredential,
17+
AikenTransactionCredentialCredentialScriptCredential,
18+
]);
19+
20+
const AikenTransactionCredentialReferencedAikenTransactionCredentialCredentialInline = Data.Tuple([
21+
AikenTransactionCredentialCredential,
22+
]);
23+
24+
const AikenTransactionCredentialReferencedAikenTransactionCredentialCredentialPointer = Data.Object({
25+
slot_number: Int,
26+
transaction_index: Int,
27+
certificate_index: Int,
28+
});
29+
30+
const AikenTransactionCredentialReferencedAikenTransactionCredentialCredential = Data.Enum([
31+
AikenTransactionCredentialReferencedAikenTransactionCredentialCredentialInline,
32+
AikenTransactionCredentialReferencedAikenTransactionCredentialCredentialPointer,
33+
]);
34+
35+
const OptionAikenTransactionCredentialReferencedAikenTransactionCredentialCredentialSome = Data.Tuple([
36+
AikenTransactionCredentialReferencedAikenTransactionCredentialCredential,
37+
]);
38+
39+
const OptionAikenTransactionCredentialReferencedAikenTransactionCredentialCredential = Data.Nullable(OptionAikenTransactionCredentialReferencedAikenTransactionCredentialCredentialSome);
40+
41+
const AikenTransactionCredentialAddress = Data.Object({
42+
payment_credential: AikenTransactionCredentialCredential,
43+
stake_credential: OptionAikenTransactionCredentialReferencedAikenTransactionCredentialCredential,
44+
});
45+
46+
const JpgTypesPayout = Data.Object({
47+
address: AikenTransactionCredentialAddress,
48+
amount_lovelace: Int,
49+
});
50+
51+
const ListJpgTypesPayout = Data.Array(JpgTypesPayout);
52+
53+
const AskDatum = Data.Object({
54+
payouts: ListJpgTypesPayout,
55+
owner: ByteArray,
56+
});
57+
58+
const AskRedeemerBuy = Data.Object({
59+
payout_outputs_offset: Int,
60+
});
61+
62+
const AskRedeemer = Data.Nullable(AskRedeemerBuy);
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
import { Data } from "@lucid-evolution/lucid";
2+
3+
const AssetName = Data.Bytes();
4+
5+
const Int = Data.Integer();
6+
7+
const PolicyId = Data.Bytes();
8+
9+
const PosixTime = Data.Integer();
10+
11+
const ScriptAddress = Data.Bytes();
12+
13+
const AsteriaTypesAssetClass = Data.Object({
14+
policy: PolicyId,
15+
name: AssetName,
16+
});
17+
18+
const AsteriaTypesAsteriaDatum = Data.Object({
19+
ship_counter: Int,
20+
shipyard_policy: PolicyId,
21+
});
22+
23+
const AsteriaTypesAsteriaRedeemerAddNewShip = Data.Literal("AddNewShip");
24+
25+
const AsteriaTypesAsteriaRedeemerMine = Data.Literal("Mine");
26+
27+
const AsteriaTypesAsteriaRedeemerConsumeAsteria = Data.Literal("ConsumeAsteria");
28+
29+
const AsteriaTypesAsteriaRedeemer = Data.Enum([
30+
AsteriaTypesAsteriaRedeemerAddNewShip,
31+
AsteriaTypesAsteriaRedeemerMine,
32+
AsteriaTypesAsteriaRedeemerConsumeAsteria,
33+
]);
34+
35+
const AsteriaTypesFuelRedeemerMintFuel = Data.Literal("MintFuel");
36+
37+
const AsteriaTypesFuelRedeemerBurnFuel = Data.Literal("BurnFuel");
38+
39+
const AsteriaTypesFuelRedeemer = Data.Enum([
40+
AsteriaTypesFuelRedeemerMintFuel,
41+
AsteriaTypesFuelRedeemerBurnFuel,
42+
]);
43+
44+
const AsteriaTypesPelletDatum = Data.Object({
45+
pos_x: Int,
46+
pos_y: Int,
47+
shipyard_policy: PolicyId,
48+
});
49+
50+
const AsteriaTypesPelletRedeemerProvide = Data.Object({
51+
amount: Int,
52+
});
53+
54+
const AsteriaTypesPelletRedeemer = Data.Nullable(AsteriaTypesPelletRedeemerProvide);
55+
56+
const AsteriaTypesShipDatum = Data.Object({
57+
pos_x: Int,
58+
pos_y: Int,
59+
ship_token_name: AssetName,
60+
pilot_token_name: AssetName,
61+
last_move_latest_time: PosixTime,
62+
});
63+
64+
const AsteriaTypesShipRedeemerMoveShip = Data.Object({
65+
delta_x: Int,
66+
delta_y: Int,
67+
});
68+
69+
const AsteriaTypesShipRedeemerGatherFuel = Data.Object({
70+
amount: Int,
71+
});
72+
73+
const AsteriaTypesShipRedeemerMineAsteria = Data.Literal("MineAsteria");
74+
75+
const AsteriaTypesShipRedeemerQuit = Data.Literal("Quit");
76+
77+
const AsteriaTypesShipRedeemer = Data.Enum([
78+
AsteriaTypesShipRedeemerMoveShip,
79+
AsteriaTypesShipRedeemerGatherFuel,
80+
AsteriaTypesShipRedeemerMineAsteria,
81+
AsteriaTypesShipRedeemerQuit,
82+
]);
83+
84+
const AsteriaTypesShipyardRedeemerMintShip = Data.Literal("MintShip");
85+
86+
const AsteriaTypesShipyardRedeemerBurnShip = Data.Literal("BurnShip");
87+
88+
const AsteriaTypesShipyardRedeemer = Data.Enum([
89+
AsteriaTypesShipyardRedeemerMintShip,
90+
AsteriaTypesShipyardRedeemerBurnShip,
91+
]);
92+
93+
const AsteriaTypesSpeed = Data.Object({
94+
distance: Int,
95+
time: Int,
96+
});
97+
98+

codegen/src/lib.rs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,11 @@ impl Codegen<'_> {
116116
_ => {}
117117
}
118118
}
119+
if definition.1.title.is_some() {
120+
if definition.1.title.as_ref().unwrap() == "Data" && definition_name == "Data" {
121+
schemas.push(schema::Schema::new_anydata(definition_json.clone()));
122+
}
123+
}
119124
if definition.1.any_of.is_some() {
120125
let mut internal_schemas: Vec<schema::Schema> = vec![];
121126
for (index, parameter) in definition.1.any_of.as_ref().unwrap().iter().enumerate() {
@@ -124,9 +129,13 @@ impl Codegen<'_> {
124129
let schema_name = format!("{}{}", definition_name, parameter.title.clone().unwrap_or((index+1).to_string()));
125130
let mut properties: Vec<schema::Reference> = vec![];
126131
for property in &parameter.fields {
132+
let mut schema_name = self.get_schema_name(property.reference.clone());
133+
if schema_name == "Data" {
134+
schema_name = "AnyData".to_string();
135+
}
127136
properties.push(schema::Reference{
128137
name: property.title.clone(),
129-
schema_name: self.get_schema_name(property.reference.clone()),
138+
schema_name,
130139
});
131140
}
132141
let schema: schema::Schema;
@@ -238,7 +247,6 @@ impl Codegen<'_> {
238247
/// A string containing the boilerplate code.
239248
pub fn get_template_from_blueprint(&self, blueprint: blueprint::Blueprint, template: template::Template) -> String {
240249
let schemas = self.get_schemas_from_blueprint(blueprint);
241-
let template_name = template::get_template_name(template);
242-
self.handlebars.render(&template_name, &schemas).unwrap()
250+
self.handlebars.render(&template.to_string(), &schemas).unwrap()
243251
}
244252
}

0 commit comments

Comments
 (0)