Skip to content

Commit 8c6ec48

Browse files
authored
chore(motoko): migrate send_http_get, send_http_post, nft-creator, superheroes to mo:core 2.4.0 (#1324)
* chore(motoko): migrate send_http_get, send_http_post, nft-creator to mo:core 2.4.0 Remove mo:base dependency and update all imports to mo:core equivalents. * chore: migrate nft-creator and superheroes to mo:core 2.4.0 - nft-creator: replace mo:core/Debug with mo:core/Runtime for trap() and remove unused Nat import - superheroes: migrate from mo:base to mo:core 2.4.0, replace OrderedMap+List with mutable Map, simplify superpowers type to [Text], update frontend to remove Motoko-list conversion helpers * fix: Map.delete returns Bool — use it directly in delete function * fix: update superheroes Makefile test to use vec text for superpowers
1 parent 0c4468f commit 8c6ec48

14 files changed

Lines changed: 23 additions & 85 deletions

File tree

motoko/nft-creator/backend/app.mo

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@
22
// NFT Canister implementing ICRC-7 standard with minting functionality
33

44
// --- Standard Library Imports ---
5-
import Principal "mo:base/Principal";
6-
import Nat "mo:base/Nat";
7-
import D "mo:base/Debug";
5+
import Principal "mo:core/Principal";
6+
import Runtime "mo:core/Runtime";
87

98
// --- Third-Party/External Imports ---
109
import Vec "mo:vector";
@@ -125,7 +124,7 @@ shared (init_msg) persistent actor class NftCanister() : async (ICRC7.Service.Se
125124
public query func icrc7_owner_of(token_ids : ICRC7.Service.OwnerOfRequest) : async ICRC7.Service.OwnerOfResponse {
126125
switch (icrc7().get_token_owners(token_ids)) {
127126
case (#ok(val)) val;
128-
case (#err(err)) D.trap(err);
127+
case (#err(err)) Runtime.trap(err);
129128
};
130129
};
131130

@@ -194,7 +193,7 @@ shared (init_msg) persistent actor class NftCanister() : async (ICRC7.Service.Se
194193
nextTokenId += 1;
195194
val;
196195
};
197-
case (#err(err)) D.trap(err);
196+
case (#err(err)) Runtime.trap(err);
198197
};
199198
};
200199

motoko/nft-creator/mops.toml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
[dependencies]
2-
base = "0.14.8"
3-
core = "1.0.0"
2+
core = "2.4.0"
43
icrc7-mo = "0.5.0"
54
class-plus = "0.0.1"
65
vector = "0.2.0"

motoko/send_http_get/mops.toml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
# Motoko dependencies (https://mops.one/)
22

33
[dependencies]
4-
base = "0.14.9"
5-
core = "1.0.0"
4+
core = "2.4.0"

motoko/send_http_get/src/send_http_get_backend/main.mo

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import Blob "mo:base/Blob";
2-
import Text "mo:base/Text";
1+
import Blob "mo:core/Blob";
2+
import Text "mo:core/Text";
33
import IC "ic:aaaaa-aa";
44

55
persistent actor {

motoko/send_http_post/mops.toml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
# Motoko dependencies (https://mops.one/)
22

33
[dependencies]
4-
base = "0.14.9"
5-
core = "1.0.0"
4+
core = "2.4.0"

motoko/send_http_post/src/send_http_post_backend/main.mo

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import Blob "mo:base/Blob";
2-
import Text "mo:base/Text";
1+
import Blob "mo:core/Blob";
2+
import Text "mo:core/Text";
33
import IC "ic:aaaaa-aa";
44

55
persistent actor {

motoko/superheroes/Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ deploy: node_modules
1414
.PHONY: test
1515
.SILENT: test
1616
test: deploy
17-
$(eval ID := $(shell dfx canister call superheroes create '(record {name = "Superman"; superpowers = opt record { 0 = "invulnerability"; 1 = opt record { 0 = "superhuman strength"; 1 = null; }; }; })' | tr -d '()'))
17+
$(eval ID := $(shell dfx canister call superheroes create '(record {name = "Superman"; superpowers = vec { "invulnerability"; "superhuman strength" }})' | tr -d '()'))
1818
dfx canister call superheroes read '($(ID))' \
1919
| grep 'Superman' && echo 'PASS'
20-
dfx canister call superheroes update '($(ID), record {name = "Superman"; superpowers = opt record { 0 = "invulnerability"; 1 = opt record { 0 = "superhuman strength"; 1 = opt record { 0 = "flight"; 1 = opt record { 0 = "x-ray vision"; 1 = null; }; }; }; }; })' \
20+
dfx canister call superheroes update '($(ID), record {name = "Superman"; superpowers = vec { "invulnerability"; "superhuman strength"; "flight"; "x-ray vision" }})' \
2121
| grep 'true' && echo 'PASS'
2222
dfx canister call superheroes read '($(ID))' \
2323
| grep 'x-ray vision' && echo 'PASS'

motoko/superheroes/mops.toml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
# Motoko dependencies (https://mops.one/)
22

33
[dependencies]
4-
base = "0.14.9"
5-
core = "1.0.0"
4+
core = "2.4.0"
Lines changed: 9 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,69 +1,39 @@
1-
import List "mo:base/List";
2-
import Option "mo:base/Option";
3-
import Map "mo:base/OrderedMap";
4-
import Nat32 "mo:base/Nat32";
1+
import Map "mo:core/Map";
2+
import Nat32 "mo:core/Nat32";
53

64
persistent actor Superheroes {
75

8-
/**
9-
* Types
10-
*/
11-
12-
// The type of a superhero identifier.
136
public type SuperheroId = Nat32;
147

15-
// The type of a superhero.
168
public type Superhero = {
179
name : Text;
18-
superpowers : List.List<Text>
10+
superpowers : [Text];
1911
};
2012

21-
/**
22-
* Application State
23-
*/
24-
25-
// The next available superhero identifier.
2613
var next : SuperheroId = 0;
2714

28-
// The superhero data store.
29-
transient let Ops = Map.Make<SuperheroId>(Nat32.compare);
30-
var map : Map.Map<SuperheroId, Superhero> = Ops.empty();
31-
32-
/**
33-
* High-Level API
34-
*/
15+
let map = Map.empty<SuperheroId, Superhero>();
3516

36-
// Create a superhero.
3717
public func create(superhero : Superhero) : async SuperheroId {
3818
let superheroId = next;
3919
next += 1;
40-
map := Ops.put(map, superheroId, superhero);
20+
Map.add(map, Nat32.compare, superheroId, superhero);
4121
return superheroId
4222
};
4323

44-
// Read a superhero.
4524
public query func read(superheroId : SuperheroId) : async ?Superhero {
46-
let result = Ops.get(map, superheroId);
47-
return result
25+
Map.get(map, Nat32.compare, superheroId)
4826
};
4927

50-
// Update a superhero.
5128
public func update(superheroId : SuperheroId, superhero : Superhero) : async Bool {
52-
let (result, old_value) = Ops.replace(map, superheroId, superhero);
53-
let exists = Option.isSome(old_value);
29+
let exists = Map.get(map, Nat32.compare, superheroId) != null;
5430
if (exists) {
55-
map := result
31+
Map.add(map, Nat32.compare, superheroId, superhero);
5632
};
5733
return exists
5834
};
5935

60-
// Delete a superhero.
6136
public func delete(superheroId : SuperheroId) : async Bool {
62-
let (result, old_value) = Ops.remove(map, superheroId);
63-
let exists = Option.isSome(old_value);
64-
if (exists) {
65-
map := result
66-
};
67-
return exists
37+
Map.delete(map, Nat32.compare, superheroId)
6838
}
6939
}

motoko/superheroes/src/www/components/create.jsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import React from 'react';
33
import { superheroes } from "../../declarations/superheroes";
44

55
const $ = document.getElementById.bind(document);
6-
const idl = require('../utilities/idl');
76

87
class Create extends React.Component {
98

@@ -22,7 +21,6 @@ class Create extends React.Component {
2221
superpowers.push(superpower);
2322
};
2423
const superhero = { name, superpowers };
25-
superhero.superpowers = idl.toList(superhero.superpowers);
2624
superheroes.create(superhero).then((superheroId) => {
2725
this.setState({ superheroId });
2826
});

0 commit comments

Comments
 (0)