create-dubhe 1.2.0-pre.99 → 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/dist/cli.js +1 -1
- package/dist/cli.js.map +1 -1
- package/package.json +16 -16
- package/templates/101/sui-template/docker-compose.testnet.yml +73 -0
- package/templates/101/sui-template/packages/client/src/app/page.tsx +545 -41
- package/templates/101/sui-template/packages/client/src/app/providers.tsx +12 -4
- package/templates/101/sui-template/packages/contracts/Pub.localnet.toml +4 -4
- package/templates/101/sui-template/packages/contracts/counter.lock.json +20 -0
- package/templates/101/sui-template/packages/contracts/deployment.ts +8 -3
- package/templates/101/sui-template/packages/contracts/dubhe.config.json +59 -13
- package/templates/101/sui-template/packages/contracts/dubhe.config.ts +1 -4
- package/templates/101/sui-template/packages/contracts/metadata.json +1015 -68
- package/templates/101/sui-template/packages/contracts/package.json +7 -4
- package/templates/101/sui-template/packages/contracts/src/counter/sources/codegen/dapp_key.move +45 -31
- package/templates/101/sui-template/packages/contracts/src/counter/sources/codegen/error.move +8 -0
- package/templates/101/sui-template/packages/contracts/src/counter/sources/codegen/genesis.move +30 -13
- package/templates/101/sui-template/packages/contracts/src/counter/sources/codegen/init_test.move +19 -14
- package/templates/101/sui-template/packages/contracts/src/counter/sources/codegen/resources/counter2.move +198 -0
- package/templates/101/sui-template/packages/contracts/src/counter/sources/codegen/resources/counter2withkey.move +90 -0
- package/templates/101/sui-template/packages/contracts/src/counter/sources/codegen/resources/value.move +30 -20
- package/templates/101/sui-template/packages/contracts/src/counter/sources/codegen/user_storage_init.move +26 -0
- package/templates/101/sui-template/packages/contracts/src/counter/sources/scripts/deploy_hook.move +6 -11
- package/templates/101/sui-template/packages/contracts/src/counter/sources/systems/counter.move +23 -11
- package/templates/101/sui-template/packages/contracts/src/counter/sources/tests/counter.move +15 -14
- package/templates/101/sui-template/packages/contracts/src/dubhe/Move.lock +33 -30
- package/templates/101/sui-template/packages/contracts/src/dubhe/Move.toml +4 -3
- package/templates/101/sui-template/packages/contracts/src/dubhe/sources/codegen/dapp_key.move +45 -31
- package/templates/101/sui-template/packages/contracts/src/dubhe/sources/codegen/error.move +170 -0
- package/templates/101/sui-template/packages/contracts/src/dubhe/sources/codegen/genesis.move +16 -13
- package/templates/101/sui-template/packages/contracts/src/dubhe/sources/codegen/init_test.move +8 -14
- package/templates/101/sui-template/packages/contracts/src/dubhe/sources/core/account_key.move +1 -3
- package/templates/101/sui-template/packages/contracts/src/dubhe/sources/core/dapp_service.move +1776 -137
- package/templates/101/sui-template/packages/contracts/src/dubhe/sources/core/data_key.move +1 -20
- package/templates/101/sui-template/packages/contracts/src/dubhe/sources/core/events.move +864 -25
- package/templates/101/sui-template/packages/contracts/src/dubhe/sources/scripts/deploy_hook.move +15 -16
- package/templates/101/sui-template/packages/contracts/src/dubhe/sources/scripts/migrate.move +0 -3
- package/templates/101/sui-template/packages/contracts/src/dubhe/sources/systems/address_system.move +25 -17
- package/templates/101/sui-template/packages/contracts/src/dubhe/sources/systems/dapp_system.move +2802 -343
- package/templates/101/sui-template/packages/contracts/src/dubhe/sources/systems/utils.move +1 -1
- package/templates/101/sui-template/packages/contracts/src/dubhe/sources/tests/address.move +173 -55
- package/templates/101/sui-template/packages/contracts/src/dubhe/sources/tests/dapp_test.move +769 -0
- package/templates/101/sui-template/packages/contracts/src/dubhe/sources/tests/fee_test.move +2965 -0
- package/templates/101/sui-template/packages/contracts/src/dubhe/sources/tests/integration_test.move +303 -0
- package/templates/101/sui-template/packages/contracts/src/dubhe/sources/tests/listing_test.move +1422 -0
- package/templates/101/sui-template/packages/contracts/src/dubhe/sources/tests/scene_session_test.move +269 -0
- package/templates/101/sui-template/packages/contracts/src/dubhe/sources/tests/session_test.move +624 -0
- package/templates/101/sui-template/packages/contracts/src/dubhe/sources/tests/storage_test.move +700 -0
- package/templates/101/sui-template/packages/contracts/src/dubhe/sources/tests/typed_object_test.move +177 -0
- package/templates/101/sui-template/packages/contracts/src/dubhe/sources/tests/typed_scene_test.move +452 -0
- package/templates/101/sui-template/packages/contracts/src/dubhe/sources/tests/user_storage_test.move +160 -0
- package/templates/101/sui-template/packages/contracts/src/dubhe/sources/utils/math.move +4 -3
- package/templates/101/sui-template/packages/contracts/src/dubhe/sources/utils/type_info.move +2 -2
- package/templates/contract/sui-template/dubhe.config.ts +0 -1
- package/templates/contract/sui-template/package.json +3 -3
- package/templates/contract/sui-template/src/dubhe/Move.lock +33 -30
- package/templates/contract/sui-template/src/dubhe/Move.toml +4 -3
- package/templates/contract/sui-template/src/dubhe/sources/codegen/dapp_key.move +45 -31
- package/templates/contract/sui-template/src/dubhe/sources/codegen/error.move +170 -0
- package/templates/contract/sui-template/src/dubhe/sources/codegen/genesis.move +16 -13
- package/templates/contract/sui-template/src/dubhe/sources/codegen/init_test.move +8 -14
- package/templates/contract/sui-template/src/dubhe/sources/core/account_key.move +1 -3
- package/templates/contract/sui-template/src/dubhe/sources/core/dapp_service.move +1776 -137
- package/templates/contract/sui-template/src/dubhe/sources/core/data_key.move +1 -20
- package/templates/contract/sui-template/src/dubhe/sources/core/events.move +864 -25
- package/templates/contract/sui-template/src/dubhe/sources/scripts/deploy_hook.move +15 -16
- package/templates/contract/sui-template/src/dubhe/sources/scripts/migrate.move +0 -3
- package/templates/contract/sui-template/src/dubhe/sources/systems/address_system.move +25 -17
- package/templates/contract/sui-template/src/dubhe/sources/systems/dapp_system.move +2802 -343
- package/templates/contract/sui-template/src/dubhe/sources/systems/utils.move +1 -1
- package/templates/contract/sui-template/src/dubhe/sources/tests/address.move +173 -55
- package/templates/contract/sui-template/src/dubhe/sources/tests/dapp_test.move +769 -0
- package/templates/contract/sui-template/src/dubhe/sources/tests/fee_test.move +2965 -0
- package/templates/contract/sui-template/src/dubhe/sources/tests/integration_test.move +303 -0
- package/templates/contract/sui-template/src/dubhe/sources/tests/listing_test.move +1422 -0
- package/templates/contract/sui-template/src/dubhe/sources/tests/scene_session_test.move +269 -0
- package/templates/contract/sui-template/src/dubhe/sources/tests/session_test.move +624 -0
- package/templates/contract/sui-template/src/dubhe/sources/tests/storage_test.move +700 -0
- package/templates/contract/sui-template/src/dubhe/sources/tests/typed_object_test.move +177 -0
- package/templates/contract/sui-template/src/dubhe/sources/tests/typed_scene_test.move +452 -0
- package/templates/contract/sui-template/src/dubhe/sources/tests/user_storage_test.move +160 -0
- package/templates/contract/sui-template/src/dubhe/sources/utils/math.move +4 -3
- package/templates/contract/sui-template/src/dubhe/sources/utils/type_info.move +2 -2
- package/templates/contract/sui-template/src/template/Move.toml +12 -0
- package/templates/contract/sui-template/src/template/sources/codegen/dapp_key.move +47 -0
- package/templates/contract/sui-template/src/template/sources/codegen/genesis.move +34 -0
- package/templates/contract/sui-template/src/template/sources/codegen/init_test.move +23 -0
- package/templates/contract/sui-template/src/template/sources/codegen/user_storage_init.move +27 -0
- package/templates/contract/sui-template/src/template/sources/scripts/deploy_hook.move +13 -0
- package/templates/contract/sui-template/src/template/sources/scripts/migrate.move +7 -0
- package/templates/nextjs/sui-card-duel/.gitignore_ +51 -0
- package/templates/nextjs/sui-card-duel/README.md +213 -0
- package/templates/nextjs/sui-card-duel/docker-compose.yml +34 -0
- package/templates/nextjs/sui-card-duel/mprocs.yaml +17 -0
- package/templates/nextjs/sui-card-duel/package.json +43 -0
- package/templates/nextjs/sui-card-duel/packages/client/.gitignore_ +48 -0
- package/templates/nextjs/sui-card-duel/packages/client/.prettierignore +1 -0
- package/templates/nextjs/sui-card-duel/packages/client/.prettierrc.json +8 -0
- package/templates/nextjs/sui-card-duel/packages/client/eslint.config.mjs +22 -0
- package/templates/nextjs/sui-card-duel/packages/client/next.config.mjs +8 -0
- package/templates/nextjs/sui-card-duel/packages/client/package.json +47 -0
- package/templates/nextjs/sui-card-duel/packages/client/postcss.config.mjs +8 -0
- package/templates/nextjs/sui-card-duel/packages/client/src/app/admin/ArenaPanel.tsx +307 -0
- package/templates/nextjs/sui-card-duel/packages/client/src/app/admin/page.tsx +622 -0
- package/templates/nextjs/sui-card-duel/packages/client/src/app/brawl/[id]/page.tsx +559 -0
- package/templates/nextjs/sui-card-duel/packages/client/src/app/collection/page.tsx +202 -0
- package/templates/nextjs/sui-card-duel/packages/client/src/app/components/CardView.tsx +66 -0
- package/templates/nextjs/sui-card-duel/packages/client/src/app/components/GameShell.tsx +294 -0
- package/templates/nextjs/sui-card-duel/packages/client/src/app/components/icons.tsx +101 -0
- package/templates/nextjs/sui-card-duel/packages/client/src/app/duel/[id]/page.tsx +477 -0
- package/templates/nextjs/sui-card-duel/packages/client/src/app/favicon.ico +0 -0
- package/templates/nextjs/sui-card-duel/packages/client/src/app/globals.css +85 -0
- package/templates/nextjs/sui-card-duel/packages/client/src/app/hooks/useGame.ts +313 -0
- package/templates/nextjs/sui-card-duel/packages/client/src/app/layout.tsx +24 -0
- package/templates/nextjs/sui-card-duel/packages/client/src/app/leaderboard/page.tsx +123 -0
- package/templates/nextjs/sui-card-duel/packages/client/src/app/lib/game.ts +77 -0
- package/templates/nextjs/sui-card-duel/packages/client/src/app/lib/scenes.ts +226 -0
- package/templates/nextjs/sui-card-duel/packages/client/src/app/market/page.tsx +418 -0
- package/templates/nextjs/sui-card-duel/packages/client/src/app/page.tsx +427 -0
- package/templates/nextjs/sui-card-duel/packages/client/src/app/providers.tsx +69 -0
- package/templates/nextjs/sui-card-duel/packages/client/tailwind.config.ts +21 -0
- package/templates/nextjs/sui-card-duel/packages/client/tsconfig.json +30 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/.gitignore_ +51 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/.prettierignore +1 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/.prettierrc.json +8 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/Dockerfile +5 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/Pub.localnet.toml +13 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/card_duel.lock.json +66 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/docker-compose.yml +34 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/dubhe.config.ts +150 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/logs/combined.log +31383 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/package.json +49 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/scripts/config.ts +17 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/scripts/e2e-brawl.ts +270 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/scripts/e2e-duel.ts +272 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/scripts/e2e-lobby.ts +177 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/scripts/e2e-market.ts +219 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/scripts/e2e-session.ts +342 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/scripts/query-dapp-revenue.ts +95 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/scripts/seed.ts +92 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/scripts/withdraw-dapp-revenue.ts +56 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/Move.toml +15 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/codegen/dapp_key.move +46 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/codegen/enums/card_kind.move +47 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/codegen/enums/match_state.move +37 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/codegen/enums/rarity.move +37 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/codegen/error.move +126 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/codegen/genesis.move +33 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/codegen/init_test.move +23 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/codegen/objects/arena.move +137 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/codegen/permits/brawl_permit.move +125 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/codegen/permits/duel_permit.move +125 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/codegen/resources/battle_state.move +255 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/codegen/resources/card.move +282 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/codegen/resources/deck.move +64 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/codegen/resources/game_config.move +267 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/codegen/resources/gold.move +205 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/codegen/resources/profile.move +255 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/codegen/scenes/brawl.move +313 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/codegen/scenes/duel.move +313 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/codegen/user_storage_init.move +26 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/scripts/deploy_hook.move +32 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/scripts/migrate.move +7 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/systems/arena_system.move +57 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/systems/brawl_system.move +559 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/systems/card_system.move +146 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/systems/duel_system.move +515 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/systems/market_system.move +115 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/systems/player_system.move +37 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/tests/brawl_tests.move +385 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/tests/duel_tests.move +656 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/src/card_duel/sources/tests/test_helpers.move +31 -0
- package/templates/nextjs/sui-card-duel/packages/contracts/sui-indexer-schema.graphql +5973 -0
- package/templates/nextjs/sui-card-duel/pnpm-workspace.yaml +2 -0
- package/templates/nextjs/sui-farm/.gitignore_ +51 -0
- package/templates/nextjs/sui-farm/README.md +15 -0
- package/templates/nextjs/sui-farm/UPGRADE_NOTES.md +97 -0
- package/templates/nextjs/sui-farm/docker-compose.yml +34 -0
- package/templates/nextjs/sui-farm/mprocs.yaml +17 -0
- package/templates/nextjs/sui-farm/package.json +43 -0
- package/templates/nextjs/sui-farm/packages/client/.gitignore_ +48 -0
- package/templates/nextjs/sui-farm/packages/client/.prettierignore +1 -0
- package/templates/nextjs/sui-farm/packages/client/.prettierrc.json +8 -0
- package/templates/nextjs/sui-farm/packages/client/eslint.config.mjs +22 -0
- package/templates/nextjs/sui-farm/packages/client/next.config.mjs +8 -0
- package/templates/nextjs/sui-farm/packages/client/package.json +47 -0
- package/templates/nextjs/sui-farm/packages/client/postcss.config.mjs +8 -0
- package/templates/nextjs/sui-farm/packages/client/src/app/admin/page.tsx +618 -0
- package/templates/nextjs/sui-farm/packages/client/src/app/components/FarmLand.tsx +526 -0
- package/templates/nextjs/sui-farm/packages/client/src/app/components/FarmPlotCard.tsx +215 -0
- package/templates/nextjs/sui-farm/packages/client/src/app/components/PetAvatar.tsx +868 -0
- package/templates/nextjs/sui-farm/packages/client/src/app/components/PetPanel.tsx +1360 -0
- package/templates/nextjs/sui-farm/packages/client/src/app/components/PlantModal.tsx +147 -0
- package/templates/nextjs/sui-farm/packages/client/src/app/components/ProxyCard.tsx +684 -0
- package/templates/nextjs/sui-farm/packages/client/src/app/components/RanchLand.tsx +822 -0
- package/templates/nextjs/sui-farm/packages/client/src/app/components/ResourceHUD.tsx +125 -0
- package/templates/nextjs/sui-farm/packages/client/src/app/components/ShopPanel.tsx +232 -0
- package/templates/nextjs/sui-farm/packages/client/src/app/components/icons/GameIcons.tsx +574 -0
- package/templates/nextjs/sui-farm/packages/client/src/app/favicon.ico +0 -0
- package/templates/nextjs/sui-farm/packages/client/src/app/globals.css +423 -0
- package/templates/nextjs/sui-farm/packages/client/src/app/hooks/useWorldPermitId.ts +66 -0
- package/templates/nextjs/sui-farm/packages/client/src/app/layout.tsx +23 -0
- package/templates/nextjs/sui-farm/packages/client/src/app/leaderboard/page.tsx +185 -0
- package/templates/nextjs/sui-farm/packages/client/src/app/lib/crops.ts +97 -0
- package/templates/nextjs/sui-farm/packages/client/src/app/market/page.tsx +763 -0
- package/templates/nextjs/sui-farm/packages/client/src/app/page.tsx +1173 -0
- package/templates/nextjs/sui-farm/packages/client/src/app/providers.tsx +69 -0
- package/templates/nextjs/sui-farm/packages/client/src/app/state/index.tsx +5 -0
- package/templates/nextjs/sui-farm/packages/client/tailwind.config.ts +25 -0
- package/templates/nextjs/sui-farm/packages/client/tsconfig.json +30 -0
- package/templates/nextjs/sui-farm/packages/contracts/.gitignore_ +51 -0
- package/templates/nextjs/sui-farm/packages/contracts/.prettierignore +1 -0
- package/templates/nextjs/sui-farm/packages/contracts/.prettierrc.json +8 -0
- package/templates/nextjs/sui-farm/packages/contracts/Dockerfile +5 -0
- package/templates/nextjs/sui-farm/packages/contracts/Pub.localnet.toml +13 -0
- package/templates/nextjs/sui-farm/packages/contracts/counter.lock.json +14 -0
- package/templates/nextjs/sui-farm/packages/contracts/docker-compose.yml +34 -0
- package/templates/nextjs/sui-farm/packages/contracts/dubhe.config.ts +178 -0
- package/templates/nextjs/sui-farm/packages/contracts/harvest.lock.json +120 -0
- package/templates/nextjs/sui-farm/packages/contracts/package.json +48 -0
- package/templates/nextjs/sui-farm/packages/contracts/scripts/config.ts +17 -0
- package/templates/nextjs/sui-farm/packages/contracts/scripts/query-dapp-revenue.ts +95 -0
- package/templates/nextjs/sui-farm/packages/contracts/scripts/read-permit.ts +72 -0
- package/templates/nextjs/sui-farm/packages/contracts/scripts/seed.ts +85 -0
- package/templates/nextjs/sui-farm/packages/contracts/scripts/withdraw-dapp-revenue.ts +56 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/counter/Move.toml +14 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/counter/sources/codegen/dapp_key.move +31 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/counter/sources/codegen/error.move +10 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/counter/sources/codegen/genesis.move +33 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/counter/sources/codegen/init_test.move +23 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/counter/sources/codegen/resources/counter1.move +64 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/counter/sources/codegen/resources/counter2.move +70 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/counter/sources/codegen/user_storage_init.move +26 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/counter/sources/scripts/deploy_hook.move +8 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/counter/sources/scripts/migrate.move +8 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/counter/sources/systems/counter.move +13 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/counter/sources/tests/counter.move +28 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/harvest/Move.toml +14 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/dapp_key.move +46 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/enums/crop_type.move +47 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/enums/egg_type.move +42 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/enums/pet_rarity.move +37 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/enums/pet_species.move +52 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/error.move +110 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/genesis.move +33 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/init_test.move +23 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/permits/world.move +125 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/carrot.move +136 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/carrot_seed.move +80 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/common_egg.move +136 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/corn.move +136 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/corn_seed.move +80 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/crow_charges.move +162 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/crow_damage.move +207 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/farm_plot.move +261 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/gold.move +80 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/pet.move +467 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/pet_config.move +372 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/pet_hatch.move +162 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/pet_slot_index.move +83 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/pet_slots.move +64 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/profile.move +162 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/pumpkin.move +136 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/pumpkin_seed.move +80 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/rare_egg.move +136 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/scarecrow.move +64 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/season_config.move +197 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/season_stats.move +64 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/seasonal_egg.move +136 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/shop_config.move +267 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/trophy.move +245 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/wheat.move +136 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/wheat_seed.move +80 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/resources/world_permit_id.move +64 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/codegen/user_storage_init.move +26 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/scripts/deploy_hook.move +45 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/scripts/migrate.move +7 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/systems/crow_system.move +96 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/systems/farm_system.move +182 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/systems/market_system.move +172 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/systems/pet_system.move +495 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/systems/season_system.move +70 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/systems/shop_system.move +112 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/systems/world_system.move +34 -0
- package/templates/nextjs/sui-farm/packages/contracts/src/harvest/sources/tests/farm_tests.move +1192 -0
- package/templates/nextjs/sui-farm/pnpm-workspace.yaml +2 -0
- package/templates/nextjs/sui-template/packages/client/src/app/components/ProxyCard.tsx +683 -0
- package/templates/nextjs/sui-template/packages/client/src/app/page.tsx +510 -5
- package/templates/nextjs/sui-template/packages/client/src/app/providers.tsx +13 -5
- package/templates/nextjs/sui-template/packages/contracts/Pub.localnet.toml +4 -4
- package/templates/nextjs/sui-template/packages/contracts/counter.lock.json +14 -0
- package/templates/nextjs/sui-template/packages/contracts/deployment.ts +8 -3
- package/templates/nextjs/sui-template/packages/contracts/dubhe.config.json +9 -9
- package/templates/nextjs/sui-template/packages/contracts/dubhe.config.ts +0 -4
- package/templates/nextjs/sui-template/packages/contracts/metadata.json +180 -124
- package/templates/nextjs/sui-template/packages/contracts/package.json +8 -4
- package/templates/nextjs/sui-template/packages/contracts/src/counter/sources/codegen/dapp_key.move +45 -31
- package/templates/nextjs/sui-template/packages/contracts/src/counter/sources/codegen/error.move +10 -0
- package/templates/nextjs/sui-template/packages/contracts/src/counter/sources/codegen/genesis.move +30 -13
- package/templates/nextjs/sui-template/packages/contracts/src/counter/sources/codegen/init_test.move +19 -14
- package/templates/nextjs/sui-template/packages/contracts/src/counter/sources/codegen/resources/counter1.move +30 -20
- package/templates/nextjs/sui-template/packages/contracts/src/counter/sources/codegen/resources/counter2.move +35 -24
- package/templates/nextjs/sui-template/packages/contracts/src/counter/sources/codegen/user_storage_init.move +26 -0
- package/templates/nextjs/sui-template/packages/contracts/src/counter/sources/scripts/deploy_hook.move +6 -10
- package/templates/nextjs/sui-template/packages/contracts/src/counter/sources/systems/counter.move +7 -20
- package/templates/nextjs/sui-template/packages/contracts/src/counter/sources/tests/counter.move +14 -27
- package/templates/nextjs/sui-template/packages/contracts/src/dubhe/Move.lock +33 -30
- package/templates/nextjs/sui-template/packages/contracts/src/dubhe/Move.toml +4 -3
- package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/codegen/dapp_key.move +45 -31
- package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/codegen/error.move +170 -0
- package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/codegen/genesis.move +16 -13
- package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/codegen/init_test.move +8 -14
- package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/core/account_key.move +1 -3
- package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/core/dapp_service.move +1776 -137
- package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/core/data_key.move +1 -20
- package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/core/events.move +864 -25
- package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/scripts/deploy_hook.move +15 -16
- package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/scripts/migrate.move +0 -3
- package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/systems/address_system.move +25 -17
- package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/systems/dapp_system.move +2802 -343
- package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/systems/utils.move +1 -1
- package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/tests/address.move +173 -55
- package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/tests/dapp_test.move +769 -0
- package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/tests/fee_test.move +2965 -0
- package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/tests/integration_test.move +303 -0
- package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/tests/listing_test.move +1422 -0
- package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/tests/scene_session_test.move +269 -0
- package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/tests/session_test.move +624 -0
- package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/tests/storage_test.move +700 -0
- package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/tests/typed_object_test.move +177 -0
- package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/tests/typed_scene_test.move +452 -0
- package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/tests/user_storage_test.move +160 -0
- package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/utils/math.move +4 -3
- package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/utils/type_info.move +2 -2
- package/templates/101/sui-template/packages/contracts/src/counter/Move.lock +0 -41
- package/templates/101/sui-template/packages/contracts/src/counter/Published.toml +0 -9
- package/templates/101/sui-template/packages/contracts/src/counter/sources/codegen/errors.move +0 -12
- package/templates/101/sui-template/packages/contracts/src/dubhe/sources/codegen/errors.move +0 -140
- package/templates/101/sui-template/packages/contracts/src/dubhe/sources/codegen/resources/dapp_fee_config.move +0 -186
- package/templates/101/sui-template/packages/contracts/src/dubhe/sources/codegen/resources/dapp_fee_state.move +0 -306
- package/templates/101/sui-template/packages/contracts/src/dubhe/sources/codegen/resources/dapp_metadata.move +0 -396
- package/templates/101/sui-template/packages/contracts/src/dubhe/sources/codegen/resources/dubhe_config.move +0 -246
- package/templates/101/sui-template/packages/contracts/src/dubhe/sources/core/dapp_store.move +0 -29
- package/templates/101/sui-template/packages/contracts/src/dubhe/sources/systems/session_system.move +0 -44
- package/templates/contract/sui-template/src/dubhe/sources/codegen/errors.move +0 -140
- package/templates/contract/sui-template/src/dubhe/sources/codegen/resources/dapp_fee_config.move +0 -186
- package/templates/contract/sui-template/src/dubhe/sources/codegen/resources/dapp_fee_state.move +0 -306
- package/templates/contract/sui-template/src/dubhe/sources/codegen/resources/dapp_metadata.move +0 -396
- package/templates/contract/sui-template/src/dubhe/sources/codegen/resources/dubhe_config.move +0 -246
- package/templates/contract/sui-template/src/dubhe/sources/core/dapp_store.move +0 -29
- package/templates/contract/sui-template/src/dubhe/sources/systems/session_system.move +0 -44
- package/templates/nextjs/sui-template/packages/contracts/src/counter/Move.lock +0 -47
- package/templates/nextjs/sui-template/packages/contracts/src/counter/Published.toml +0 -9
- package/templates/nextjs/sui-template/packages/contracts/src/counter/sources/codegen/errors.move +0 -12
- package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/codegen/errors.move +0 -140
- package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/codegen/resources/dapp_fee_config.move +0 -186
- package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/codegen/resources/dapp_fee_state.move +0 -306
- package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/codegen/resources/dapp_metadata.move +0 -396
- package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/codegen/resources/dubhe_config.move +0 -246
- package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/core/dapp_store.move +0 -29
- package/templates/nextjs/sui-template/packages/contracts/src/dubhe/sources/systems/session_system.move +0 -44
package/templates/nextjs/sui-template/packages/contracts/src/counter/sources/codegen/dapp_key.move
CHANGED
|
@@ -1,32 +1,46 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
use
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
1
|
+
// Copyright (c) Obelisk Labs, Inc.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
/* Autogenerated file. Do not edit manually. */
|
|
5
|
+
|
|
6
|
+
module counter::dapp_key {
|
|
7
|
+
use std::type_name;
|
|
8
|
+
use sui::address;
|
|
9
|
+
use std::ascii::String;
|
|
10
|
+
|
|
11
|
+
/// DappKey — package-level authorization token for this DApp.
|
|
12
|
+
///
|
|
13
|
+
/// SECURITY: `new()` is intentionally `public(package)`.
|
|
14
|
+
/// Only code compiled into this package can construct a DappKey instance.
|
|
15
|
+
/// All framework write functions (`set_record`, `set_field`,
|
|
16
|
+
/// `take_record`, `create_user_storage`, …) require `_auth: DappKey`
|
|
17
|
+
/// as proof that the call originated from inside this package — an
|
|
18
|
+
/// external PTB cannot fabricate that proof.
|
|
19
|
+
///
|
|
20
|
+
/// NEVER change `new()` to `public`, and never accept a DappKey
|
|
21
|
+
/// value as a parameter from an external caller. Either mistake removes
|
|
22
|
+
/// every package-level access guard, allowing any PTB to write arbitrary
|
|
23
|
+
/// user data or register UserStorages without going through the DApp's
|
|
24
|
+
/// own entry functions.
|
|
25
|
+
|
|
26
|
+
public struct DappKey has copy, drop {}
|
|
27
|
+
|
|
28
|
+
/// Constructs an authorization token. Callable only from within this package.
|
|
29
|
+
/// Pass the result as `_auth` to any framework function that requires it.
|
|
30
|
+
public(package) fun new(): DappKey {
|
|
31
|
+
DappKey {}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
public fun to_string(): String {
|
|
35
|
+
type_name::with_defining_ids<DappKey>().into_string()
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
public fun package_id(): address {
|
|
39
|
+
let package_id_str = type_name::with_defining_ids<DappKey>().address_string();
|
|
40
|
+
address::from_ascii_bytes(package_id_str.as_bytes())
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
public fun eq<DappKey1: copy + drop, DappKey2: copy + drop>(_: &DappKey1, _: &DappKey2): bool {
|
|
44
|
+
type_name::with_defining_ids<DappKey1>() == type_name::with_defining_ids<DappKey2>()
|
|
45
|
+
}
|
|
32
46
|
}
|
package/templates/nextjs/sui-template/packages/contracts/src/counter/sources/codegen/error.move
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// Copyright (c) Obelisk Labs, Inc.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
/* Autogenerated file. Do not edit manually. */
|
|
5
|
+
|
|
6
|
+
module counter::error {
|
|
7
|
+
#[error]
|
|
8
|
+
const EInvalidIncrement: vector<u8> = b"Number can't be incremented, must be more than 0";
|
|
9
|
+
public fun invalid_increment(condition: bool) { assert!(condition, EInvalidIncrement) }
|
|
10
|
+
}
|
package/templates/nextjs/sui-template/packages/contracts/src/counter/sources/codegen/genesis.move
CHANGED
|
@@ -1,16 +1,33 @@
|
|
|
1
|
-
#[allow(lint(share_owned))]
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
#[allow(lint(share_owned))]
|
|
2
|
+
module counter::genesis {
|
|
3
|
+
use sui::clock::Clock;
|
|
4
|
+
use dubhe::dapp_service::{DappHub, DappStorage};
|
|
5
|
+
use counter::dapp_key;
|
|
6
|
+
use dubhe::dapp_system;
|
|
7
|
+
use std::ascii::string;
|
|
7
8
|
|
|
8
|
-
|
|
9
|
-
//
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
// The one-shot guard is enforced inside dapp_system::create_dapp, which
|
|
10
|
+
// records the DappKey type in DappHub before returning DappStorage.
|
|
11
|
+
// genesis.move does not need to carry its own guard.
|
|
12
|
+
public fun run(dapp_hub: &mut DappHub, clock: &Clock, ctx: &mut TxContext) {
|
|
13
|
+
// create_dapp aborts with dapp_already_initialized_error on repeated calls.
|
|
14
|
+
let dapp_key = dapp_key::new();
|
|
15
|
+
let mut ds = dapp_system::create_dapp(dapp_key, dapp_hub, string(b"counter"), string(b"counter contract"), 1, clock, ctx);
|
|
12
16
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
17
|
+
// Set up initial DApp state (e.g. default resource values).
|
|
18
|
+
counter::deploy_hook::run(&mut ds, ctx);
|
|
19
|
+
|
|
20
|
+
// Share DappStorage so every transaction can access it.
|
|
21
|
+
transfer::public_share_object(ds);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// Called during contract upgrades to register newly added resource tables
|
|
25
|
+
// and run any custom migration logic. `dubhe upgrade` rewrites the region
|
|
26
|
+
// between the separator comments; do not edit that block manually.
|
|
27
|
+
public(package) fun migrate(_dapp_hub: &mut DappHub, _dapp_storage: &mut DappStorage, _ctx: &mut TxContext) {
|
|
28
|
+
// ==========================================
|
|
29
|
+
// Add custom migration logic here (e.g. initialise new resource defaults).
|
|
30
|
+
// migrate_to_vN in migrate.move calls this function automatically.
|
|
31
|
+
// ==========================================
|
|
32
|
+
}
|
|
16
33
|
}
|
package/templates/nextjs/sui-template/packages/contracts/src/counter/sources/codegen/init_test.move
CHANGED
|
@@ -1,18 +1,23 @@
|
|
|
1
|
-
#[test_only]
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
use sui::test_scenario::Scenario;
|
|
5
|
-
use dubhe::dapp_service::DappHub;
|
|
1
|
+
#[test_only]
|
|
2
|
+
|
|
3
|
+
module counter::init_test {
|
|
6
4
|
use dubhe::dapp_system;
|
|
7
5
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
6
|
+
/// Create a DappHub for testing without sharing it.
|
|
7
|
+
/// Suitable for unit tests that need a DappHub context.
|
|
8
|
+
public fun create_dapp_hub_for_testing(ctx: &mut TxContext): dubhe::dapp_service::DappHub {
|
|
9
|
+
dapp_system::create_dapp_hub_for_testing(ctx)
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/// Create a DappStorage for this DApp without sharing it.
|
|
13
|
+
/// Suitable for unit tests that exercise global-resource functions.
|
|
14
|
+
public fun create_dapp_storage_for_testing(ctx: &mut TxContext): dubhe::dapp_service::DappStorage {
|
|
15
|
+
dubhe::dapp_system::create_dapp_storage_for_testing<counter::dapp_key::DappKey>(ctx)
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/// Create a UserStorage for `owner` without sharing it.
|
|
19
|
+
/// Suitable for unit tests that exercise user-level resource functions.
|
|
20
|
+
public fun create_user_storage_for_testing(owner: address, ctx: &mut TxContext): dubhe::dapp_service::UserStorage {
|
|
21
|
+
dubhe::dapp_system::create_user_storage_for_testing<counter::dapp_key::DappKey>(owner, ctx)
|
|
17
22
|
}
|
|
18
23
|
}
|
|
@@ -1,14 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
module counter::counter1 {
|
|
1
|
+
// Copyright (c) Obelisk Labs, Inc.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
/* Autogenerated file. Do not edit manually. */
|
|
5
|
+
|
|
6
|
+
module counter::counter1 {
|
|
8
7
|
use sui::bcs::{to_bytes};
|
|
9
|
-
use
|
|
10
|
-
use dubhe::table_id;
|
|
11
|
-
use dubhe::dapp_service::{Self, DappHub};
|
|
8
|
+
use dubhe::dapp_service::UserStorage;
|
|
12
9
|
use dubhe::dapp_system;
|
|
13
10
|
use counter::dapp_key;
|
|
14
11
|
use counter::dapp_key::DappKey;
|
|
@@ -18,32 +15,45 @@
|
|
|
18
15
|
const OFFCHAIN: bool = false;
|
|
19
16
|
|
|
20
17
|
|
|
21
|
-
public fun has(
|
|
18
|
+
public fun has(user_storage: &UserStorage): bool {
|
|
19
|
+
let mut key_tuple = vector::empty();
|
|
20
|
+
key_tuple.push_back(TABLE_NAME);
|
|
21
|
+
dapp_system::has_record<DappKey>(user_storage, key_tuple)
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
public fun ensure_has(user_storage: &UserStorage) {
|
|
25
|
+
let mut key_tuple = vector::empty();
|
|
26
|
+
key_tuple.push_back(TABLE_NAME);
|
|
27
|
+
dapp_system::ensure_has_record<DappKey>(user_storage, key_tuple)
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
public fun ensure_has_not(user_storage: &UserStorage) {
|
|
22
31
|
let mut key_tuple = vector::empty();
|
|
23
32
|
key_tuple.push_back(TABLE_NAME);
|
|
24
|
-
dapp_system::
|
|
33
|
+
dapp_system::ensure_has_not_record<DappKey>(user_storage, key_tuple)
|
|
25
34
|
}
|
|
26
35
|
|
|
27
|
-
public(package) fun delete(
|
|
36
|
+
public(package) fun delete(user_storage: &mut UserStorage, ctx: &TxContext) {
|
|
28
37
|
let mut key_tuple = vector::empty();
|
|
29
38
|
key_tuple.push_back(TABLE_NAME);
|
|
30
|
-
dapp_system::delete_record<DappKey>(
|
|
39
|
+
dapp_system::delete_record<DappKey>(dapp_key::new(), user_storage, key_tuple, vector[b"value"], ctx);
|
|
31
40
|
}
|
|
32
41
|
|
|
33
|
-
public fun get(
|
|
42
|
+
public fun get(user_storage: &UserStorage): (u32) {
|
|
34
43
|
let mut key_tuple = vector::empty();
|
|
35
44
|
key_tuple.push_back(TABLE_NAME);
|
|
36
|
-
let
|
|
37
|
-
let mut
|
|
38
|
-
let value = sui::bcs::peel_u32(&mut
|
|
45
|
+
let value_raw = dapp_system::get_field<DappKey>(user_storage, key_tuple, b"value");
|
|
46
|
+
let mut value_bcs = sui::bcs::new(value_raw);
|
|
47
|
+
let value = sui::bcs::peel_u32(&mut value_bcs);
|
|
39
48
|
(value)
|
|
40
49
|
}
|
|
41
50
|
|
|
42
|
-
public(package) fun set(
|
|
51
|
+
public(package) fun set(user_storage: &mut UserStorage, value: u32, ctx: &mut TxContext) {
|
|
43
52
|
let mut key_tuple = vector::empty();
|
|
44
53
|
key_tuple.push_back(TABLE_NAME);
|
|
54
|
+
let field_names = vector[b"value"];
|
|
45
55
|
let value_tuple = encode(value);
|
|
46
|
-
dapp_system::set_record(
|
|
56
|
+
dapp_system::set_record<DappKey>(dapp_key::new(), user_storage, key_tuple, field_names, value_tuple, OFFCHAIN, ctx);
|
|
47
57
|
}
|
|
48
58
|
|
|
49
59
|
public fun encode(value: u32): vector<vector<u8>> {
|
|
@@ -1,14 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
module counter::counter2 {
|
|
1
|
+
// Copyright (c) Obelisk Labs, Inc.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
/* Autogenerated file. Do not edit manually. */
|
|
5
|
+
|
|
6
|
+
module counter::counter2 {
|
|
8
7
|
use sui::bcs::{to_bytes};
|
|
9
|
-
use
|
|
10
|
-
use dubhe::table_id;
|
|
11
|
-
use dubhe::dapp_service::{Self, DappHub};
|
|
8
|
+
use dubhe::dapp_service::UserStorage;
|
|
12
9
|
use dubhe::dapp_system;
|
|
13
10
|
use counter::dapp_key;
|
|
14
11
|
use counter::dapp_key::DappKey;
|
|
@@ -17,51 +14,52 @@
|
|
|
17
14
|
const TABLE_NAME: vector<u8> = b"counter2";
|
|
18
15
|
const OFFCHAIN: bool = false;
|
|
19
16
|
|
|
20
|
-
public fun has(
|
|
17
|
+
public fun has(user_storage: &UserStorage, data: u64): bool {
|
|
21
18
|
let mut key_tuple = vector::empty();
|
|
22
19
|
key_tuple.push_back(TABLE_NAME);
|
|
23
20
|
key_tuple.push_back(to_bytes(&data));
|
|
24
|
-
dapp_system::has_record<DappKey>(
|
|
21
|
+
dapp_system::has_record<DappKey>(user_storage, key_tuple)
|
|
25
22
|
}
|
|
26
23
|
|
|
27
|
-
public fun ensure_has(
|
|
24
|
+
public fun ensure_has(user_storage: &UserStorage, data: u64) {
|
|
28
25
|
let mut key_tuple = vector::empty();
|
|
29
26
|
key_tuple.push_back(TABLE_NAME);
|
|
30
27
|
key_tuple.push_back(to_bytes(&data));
|
|
31
|
-
dapp_system::ensure_has_record<DappKey>(
|
|
28
|
+
dapp_system::ensure_has_record<DappKey>(user_storage, key_tuple)
|
|
32
29
|
}
|
|
33
30
|
|
|
34
|
-
public fun ensure_has_not(
|
|
31
|
+
public fun ensure_has_not(user_storage: &UserStorage, data: u64) {
|
|
35
32
|
let mut key_tuple = vector::empty();
|
|
36
33
|
key_tuple.push_back(TABLE_NAME);
|
|
37
34
|
key_tuple.push_back(to_bytes(&data));
|
|
38
|
-
dapp_system::ensure_has_not_record<DappKey>(
|
|
35
|
+
dapp_system::ensure_has_not_record<DappKey>(user_storage, key_tuple)
|
|
39
36
|
}
|
|
40
37
|
|
|
41
38
|
|
|
42
|
-
public(package) fun delete(
|
|
39
|
+
public(package) fun delete(user_storage: &mut UserStorage, data: u64, ctx: &TxContext) {
|
|
43
40
|
let mut key_tuple = vector::empty();
|
|
44
41
|
key_tuple.push_back(TABLE_NAME);
|
|
45
42
|
key_tuple.push_back(to_bytes(&data));
|
|
46
|
-
dapp_system::delete_record<DappKey>(
|
|
43
|
+
dapp_system::delete_record<DappKey>(dapp_key::new(), user_storage, key_tuple, vector[b"value"], ctx);
|
|
47
44
|
}
|
|
48
45
|
|
|
49
|
-
public fun get(
|
|
46
|
+
public fun get(user_storage: &UserStorage, data: u64): u32 {
|
|
50
47
|
let mut key_tuple = vector::empty();
|
|
51
48
|
key_tuple.push_back(TABLE_NAME);
|
|
52
49
|
key_tuple.push_back(to_bytes(&data));
|
|
53
|
-
let
|
|
54
|
-
let mut
|
|
55
|
-
let value = sui::bcs::peel_u32(&mut
|
|
50
|
+
let value_raw = dapp_system::get_field<DappKey>(user_storage, key_tuple, b"value");
|
|
51
|
+
let mut value_bcs = sui::bcs::new(value_raw);
|
|
52
|
+
let value = sui::bcs::peel_u32(&mut value_bcs);
|
|
56
53
|
value
|
|
57
54
|
}
|
|
58
55
|
|
|
59
|
-
public(package) fun set(
|
|
56
|
+
public(package) fun set(user_storage: &mut UserStorage, data: u64, value: u32, ctx: &mut TxContext) {
|
|
60
57
|
let mut key_tuple = vector::empty();
|
|
61
58
|
key_tuple.push_back(TABLE_NAME);
|
|
62
59
|
key_tuple.push_back(to_bytes(&data));
|
|
60
|
+
let field_names = vector[b"value"];
|
|
63
61
|
let value_tuple = encode(value);
|
|
64
|
-
dapp_system::set_record(
|
|
62
|
+
dapp_system::set_record<DappKey>(dapp_key::new(), user_storage, key_tuple, field_names, value_tuple, OFFCHAIN, ctx);
|
|
65
63
|
}
|
|
66
64
|
|
|
67
65
|
public fun encode(value: u32): vector<vector<u8>> {
|
|
@@ -69,4 +67,17 @@
|
|
|
69
67
|
value_tuple.push_back(to_bytes(&value));
|
|
70
68
|
value_tuple
|
|
71
69
|
}
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
// ─── keys: mint (developer provides keys; framework ensures no duplicate) ─
|
|
73
|
+
// Choosing the ID strategy (fresh address, counter, coordinate pack, etc.)
|
|
74
|
+
// is intentionally left to the caller.
|
|
75
|
+
public(package) fun mint(
|
|
76
|
+
user_storage: &mut UserStorage,
|
|
77
|
+
data: u64, value: u32,
|
|
78
|
+
ctx: &mut TxContext,
|
|
79
|
+
) {
|
|
80
|
+
ensure_has_not(user_storage, data);
|
|
81
|
+
set(user_storage, data, value, ctx);
|
|
82
|
+
}
|
|
72
83
|
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// Copyright (c) Obelisk Labs, Inc.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
/* Autogenerated file. Do not edit manually. */
|
|
5
|
+
|
|
6
|
+
module counter::user_storage_init {
|
|
7
|
+
use dubhe::dapp_service::{DappHub, DappStorage};
|
|
8
|
+
use dubhe::dapp_system;
|
|
9
|
+
use counter::dapp_key;
|
|
10
|
+
use counter::dapp_key::DappKey;
|
|
11
|
+
use counter::migrate;
|
|
12
|
+
|
|
13
|
+
/// Create a UserStorage for the transaction sender within this DApp.
|
|
14
|
+
/// Must be called once before the user can interact with any user-level resources.
|
|
15
|
+
/// Aborts if the DApp version does not match this package, the DApp is paused,
|
|
16
|
+
/// or the framework version has advanced.
|
|
17
|
+
#[allow(lint(public_entry))]
|
|
18
|
+
public entry fun init_user_storage(
|
|
19
|
+
dapp_hub: &DappHub,
|
|
20
|
+
dapp_storage: &mut DappStorage,
|
|
21
|
+
ctx: &mut TxContext,
|
|
22
|
+
) {
|
|
23
|
+
dapp_system::ensure_latest_version<DappKey>(dapp_storage, migrate::on_chain_version());
|
|
24
|
+
dapp_system::create_user_storage(dapp_key::new(), dapp_hub, dapp_storage, ctx);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
#[allow(unused_use)]
|
|
4
|
-
|
|
5
|
-
/* Autogenerated file. Do not edit manually. */
|
|
6
|
-
|
|
7
|
-
module counter::deploy_hook {
|
|
8
|
-
use dubhe::dapp_service::DappHub;
|
|
1
|
+
module counter::deploy_hook {
|
|
2
|
+
use dubhe::dapp_service::DappStorage;
|
|
9
3
|
|
|
10
|
-
|
|
11
|
-
|
|
4
|
+
public(package) fun run(_dapp_storage: &mut DappStorage, _ctx: &mut TxContext) {
|
|
5
|
+
// No global state to initialize for a UserStorage-based counter.
|
|
6
|
+
// Each user initializes their own storage via user_storage_init::init_user_storage.
|
|
7
|
+
}
|
|
12
8
|
}
|
package/templates/nextjs/sui-template/packages/contracts/src/counter/sources/systems/counter.move
CHANGED
|
@@ -1,26 +1,13 @@
|
|
|
1
1
|
module counter::counter_system {
|
|
2
|
-
use dubhe::dapp_service::
|
|
3
|
-
use dubhe::address_system;
|
|
4
|
-
// use counter::counter0;
|
|
2
|
+
use dubhe::dapp_service::UserStorage;
|
|
5
3
|
use counter::counter1;
|
|
6
|
-
use counter::counter2;
|
|
7
4
|
|
|
8
|
-
public entry fun inc(
|
|
9
|
-
let
|
|
10
|
-
|
|
11
|
-
if (counter1::has(dapp_hub, sender)) {
|
|
12
|
-
let new_number = counter1::get(dapp_hub, sender) + number;
|
|
13
|
-
counter1::set(dapp_hub, sender, new_number, ctx);
|
|
14
|
-
} else {
|
|
15
|
-
counter1::set(dapp_hub, sender, number, ctx);
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
let data_key = (number as u64);
|
|
19
|
-
if (counter2::has(dapp_hub, sender, data_key)) {
|
|
20
|
-
let new_number = counter2::get(dapp_hub, sender, data_key) + number;
|
|
21
|
-
counter2::set(dapp_hub, sender, data_key, new_number, ctx);
|
|
5
|
+
public entry fun inc(user_storage: &mut UserStorage, number: u32, ctx: &mut TxContext) {
|
|
6
|
+
let curr = if (counter1::has(user_storage)) {
|
|
7
|
+
counter1::get(user_storage)
|
|
22
8
|
} else {
|
|
23
|
-
|
|
9
|
+
0u32
|
|
24
10
|
};
|
|
11
|
+
counter1::set(user_storage, curr + number, ctx);
|
|
25
12
|
}
|
|
26
|
-
}
|
|
13
|
+
}
|
package/templates/nextjs/sui-template/packages/contracts/src/counter/sources/tests/counter.move
CHANGED
|
@@ -2,40 +2,27 @@
|
|
|
2
2
|
module counter::counter_test {
|
|
3
3
|
use sui::test_scenario;
|
|
4
4
|
use counter::counter_system;
|
|
5
|
-
use counter::init_test;
|
|
6
5
|
use counter::counter1;
|
|
7
|
-
use
|
|
8
|
-
use
|
|
6
|
+
use dubhe::dapp_system;
|
|
7
|
+
use counter::dapp_key::DappKey;
|
|
8
|
+
|
|
9
|
+
const DEPLOYER: address = @0xA;
|
|
9
10
|
|
|
10
11
|
#[test]
|
|
11
12
|
public fun inc() {
|
|
12
|
-
let
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
let ctx = test_scenario::ctx(&mut scenario);
|
|
17
|
-
|
|
18
|
-
// Resolve sender as String (hex-encoded address), matching ensure_origin behavior
|
|
19
|
-
let sender = address_system::ensure_origin(ctx);
|
|
20
|
-
|
|
21
|
-
// First increment: number=10, data_key=10u64
|
|
22
|
-
counter_system::inc(&mut dapp_hub, 10, ctx);
|
|
23
|
-
assert!(counter1::get(&dapp_hub, sender) == 10);
|
|
24
|
-
assert!(counter2::has(&dapp_hub, sender, 10u64));
|
|
25
|
-
assert!(counter2::get(&dapp_hub, sender, 10u64) == 10);
|
|
13
|
+
let mut scenario = test_scenario::begin(DEPLOYER);
|
|
14
|
+
{
|
|
15
|
+
let ctx = test_scenario::ctx(&mut scenario);
|
|
16
|
+
let mut us = dapp_system::create_user_storage_for_testing<DappKey>(DEPLOYER, ctx);
|
|
26
17
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
assert!(counter1::get(&dapp_hub, sender) == 30);
|
|
30
|
-
assert!(counter2::has(&dapp_hub, sender, 20u64));
|
|
31
|
-
assert!(counter2::get(&dapp_hub, sender, 20u64) == 20);
|
|
18
|
+
counter_system::inc(&mut us, 10, ctx);
|
|
19
|
+
assert!(counter1::get(&us) == 10);
|
|
32
20
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
assert!(counter1::get(&dapp_hub, sender) == 40);
|
|
36
|
-
assert!(counter2::get(&dapp_hub, sender, 10u64) == 20);
|
|
21
|
+
counter_system::inc(&mut us, 10, ctx);
|
|
22
|
+
assert!(counter1::get(&us) == 20);
|
|
37
23
|
|
|
38
|
-
|
|
24
|
+
dapp_system::destroy_user_storage(us);
|
|
25
|
+
};
|
|
39
26
|
scenario.end();
|
|
40
27
|
}
|
|
41
28
|
}
|
|
@@ -1,38 +1,41 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Generated by move; do not edit
|
|
2
|
+
# This file should be checked in.
|
|
2
3
|
|
|
3
4
|
[move]
|
|
4
|
-
version =
|
|
5
|
-
manifest_digest = "9E441545FB5525E6DED36D5515A5D25F03199A6CD5699C95CF663AFB76CAB789"
|
|
6
|
-
deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082"
|
|
7
|
-
dependencies = [
|
|
8
|
-
{ id = "Sui", name = "Sui" },
|
|
9
|
-
]
|
|
5
|
+
version = 4
|
|
10
6
|
|
|
11
|
-
[
|
|
12
|
-
|
|
13
|
-
|
|
7
|
+
[pinned.mainnet.Dubhe]
|
|
8
|
+
source = { root = true }
|
|
9
|
+
use_environment = "mainnet"
|
|
10
|
+
manifest_digest = "2AF62652675929717F20B988B31D3936712B319F150E7B7E069948FF27B34E0E"
|
|
11
|
+
deps = { Sui = "Sui" }
|
|
14
12
|
|
|
15
|
-
[
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
[pinned.mainnet.MoveStdlib]
|
|
14
|
+
source = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/move-stdlib", rev = "3c0f387ebb40b8be292d3b7bd3f5bee8ad226d33" }
|
|
15
|
+
use_environment = "mainnet"
|
|
16
|
+
manifest_digest = "C4FE4C91DE74CBF223B2E380AE40F592177D21870DC2D7EB6227D2D694E05363"
|
|
17
|
+
deps = {}
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
[pinned.mainnet.Sui]
|
|
20
|
+
source = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "3c0f387ebb40b8be292d3b7bd3f5bee8ad226d33" }
|
|
21
|
+
use_environment = "mainnet"
|
|
22
|
+
manifest_digest = "CD547CB1ACCE0880C835DAED2D8FFCB91D56C833AE5240D3AA5B918398263195"
|
|
23
|
+
deps = { MoveStdlib = "MoveStdlib" }
|
|
22
24
|
|
|
23
|
-
[
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
[pinned.testnet.Dubhe]
|
|
26
|
+
source = { root = true }
|
|
27
|
+
use_environment = "testnet"
|
|
28
|
+
manifest_digest = "B50A32218E466AACB70E7FB4A9B0991CFCF16B50B77AA0D5FBEC6A0730F28D67"
|
|
29
|
+
deps = { Sui = "Sui" }
|
|
27
30
|
|
|
28
|
-
[
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
[pinned.testnet.MoveStdlib]
|
|
32
|
+
source = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/move-stdlib", rev = "3c0f387ebb40b8be292d3b7bd3f5bee8ad226d33" }
|
|
33
|
+
use_environment = "testnet"
|
|
34
|
+
manifest_digest = "C4FE4C91DE74CBF223B2E380AE40F592177D21870DC2D7EB6227D2D694E05363"
|
|
35
|
+
deps = {}
|
|
33
36
|
|
|
34
|
-
[
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
[pinned.testnet.Sui]
|
|
38
|
+
source = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "3c0f387ebb40b8be292d3b7bd3f5bee8ad226d33" }
|
|
39
|
+
use_environment = "testnet"
|
|
40
|
+
manifest_digest = "7AFB66695545775FBFBB2D3078ADFD084244D5002392E837FDE21D9EA1C6D01C"
|
|
41
|
+
deps = { MoveStdlib = "MoveStdlib" }
|
|
@@ -4,15 +4,16 @@ edition = "2024"
|
|
|
4
4
|
version = "1.0.0"
|
|
5
5
|
license = "apache2.0"
|
|
6
6
|
authors = ["Obelisk Labs"]
|
|
7
|
-
published-at = "
|
|
7
|
+
published-at = "0x1a79c1611ab49723b388510813553ad912d96a4f1a9ed5fdbdb57e446c6fe946"
|
|
8
8
|
|
|
9
9
|
[dependencies]
|
|
10
|
-
Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "mainnet-v1.
|
|
10
|
+
Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "mainnet-v1.68.1", override = true }
|
|
11
11
|
|
|
12
12
|
[addresses]
|
|
13
|
-
dubhe = "
|
|
13
|
+
dubhe = "0x1a79c1611ab49723b388510813553ad912d96a4f1a9ed5fdbdb57e446c6fe946"
|
|
14
14
|
|
|
15
15
|
[environments]
|
|
16
16
|
testnet = "4c78adac"
|
|
17
17
|
mainnet = "35834a8a"
|
|
18
|
+
localnet = "d3e1a0e6"
|
|
18
19
|
|