@0xobelisk/sui-common 1.2.0-pre.112 → 1.2.0-pre.113

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/index.js CHANGED
@@ -4,7 +4,7 @@ import G from"prettier";import _e from"prettier-plugin-move-js";async function F
4
4
 
5
5
  /* Autogenerated file. Do not edit manually. */
6
6
 
7
- `,l="#[test_only]",h=i+n,v="#[allow(lint(share_owned))]";t.includes(".toml")||t.includes("system")||t.includes("migrate")?h=n:t.includes("init")?h=l+n:t.includes("genesis")&&(h=v+n),await W.mkdir(X.dirname(t),{recursive:!0}),await W.writeFile(t,h),K(`${r}: ${t}`)}async function Ge(e,t,r){let n=await q(e);await W.mkdir(X.dirname(t),{recursive:!0}),await W.writeFile(t,n),K(`${r}: ${t}`)}function ze(e){return e.replace(/\\/g,"/")}import{existsSync as w}from"fs";import H from"fs";function P(e){H.existsSync(e)&&(H.readdirSync(e).forEach(t=>{let r=`${e}/${t}`;H.lstatSync(r).isDirectory()?P(r):H.unlinkSync(r)}),H.rmdirSync(e))}var Y={name:"@0xobelisk/sui-common",version:"1.2.0-pre.112",description:"Common low level logic shared between packages",keywords:["sui","obelisk labs","move","blockchain"],homepage:"https://github.com/0xobelisk/dubhe/tree/main/packages/sui-common#readme",bugs:"https://github.com/0xobelisk/dubhe/issues",repository:{type:"git",url:"https://github.com/0xobelisk/dubhe.git"},license:"Apache-2.0",author:"team@obelisk.build",type:"module",exports:{".":{types:"./dist/index.d.ts",default:"./dist/index.js"}},types:"./dist/index.d.ts",typesVersions:{"*":{index:["./src/index.ts"]}},scripts:{build:"pnpm run type-check && pnpm run build:js","build:js":"tsup && chmod +x ./dist/index.js",clean:"pnpm run clean:js","clean:js":"rimraf dist",dev:"tsup --watch",format:"prettier --write .","format:check":"prettier --check .",lint:"eslint . --ext .ts",test:"vitest","type-check":"tsc --noEmit",validate:"pnpm format:check && pnpm type-check"},dependencies:{chalk:"^5.0.1",debug:"^4.3.4",dotenv:"^16.0.3",ejs:"^3.1.8",esbuild:"^0.17.15",execa:"^7.0.0","find-up":"^6.3.0",glob:"^10.5.0",path:"^0.12.7",prettier:"^3.1.1","prettier-plugin-move-js":"^0.0.5",typescript:"^5.8.3",yargs:"^17.7.1",zod:"^3.22.3","zod-validation-error":"^1.3.0"},devDependencies:{"@types/debug":"^4.1.12","@types/ejs":"^3.1.1","@types/glob":"^7.2.0","@types/node":"^22.16.0","@types/yargs":"^17.0.10",eslint:"^9.0.0","eslint-config-prettier":"^9.1.0",prettier:"3.3.3",tsup:"^6.7.0",tsx:"^3.12.6",vitest:"^2.1.3"},engines:{node:">=22.0.0"},publishConfig:{access:"public"}};async function N(e,t){console.log(`
7
+ `,l="#[test_only]",h=i+n,v="#[allow(lint(share_owned))]";t.includes(".toml")||t.includes("system")||t.includes("migrate")?h=n:t.includes("init")?h=l+n:t.includes("genesis")&&(h=v+n),await W.mkdir(X.dirname(t),{recursive:!0}),await W.writeFile(t,h),K(`${r}: ${t}`)}async function Ge(e,t,r){let n=await q(e);await W.mkdir(X.dirname(t),{recursive:!0}),await W.writeFile(t,n),K(`${r}: ${t}`)}function ze(e){return e.replace(/\\/g,"/")}import{existsSync as w}from"fs";import H from"fs";function P(e){H.existsSync(e)&&(H.readdirSync(e).forEach(t=>{let r=`${e}/${t}`;H.lstatSync(r).isDirectory()?P(r):H.unlinkSync(r)}),H.rmdirSync(e))}var Y={name:"@0xobelisk/sui-common",version:"1.2.0-pre.113",description:"Common low level logic shared between packages",keywords:["sui","obelisk labs","move","blockchain"],homepage:"https://github.com/0xobelisk/dubhe/tree/main/packages/sui-common#readme",bugs:"https://github.com/0xobelisk/dubhe/issues",repository:{type:"git",url:"https://github.com/0xobelisk/dubhe.git"},license:"Apache-2.0",author:"team@obelisk.build",type:"module",exports:{".":{types:"./dist/index.d.ts",default:"./dist/index.js"}},types:"./dist/index.d.ts",typesVersions:{"*":{index:["./src/index.ts"]}},scripts:{build:"pnpm run type-check && pnpm run build:js","build:js":"tsup && chmod +x ./dist/index.js",clean:"pnpm run clean:js","clean:js":"rimraf dist",dev:"tsup --watch",format:"prettier --write .","format:check":"prettier --check .",lint:"eslint . --ext .ts",test:"vitest","type-check":"tsc --noEmit",validate:"pnpm format:check && pnpm type-check"},dependencies:{chalk:"^5.0.1",debug:"^4.3.4",dotenv:"^16.0.3",ejs:"^3.1.8",esbuild:"^0.17.15",execa:"^7.0.0","find-up":"^6.3.0",glob:"^10.5.0",path:"^0.12.7",prettier:"^3.1.1","prettier-plugin-move-js":"^0.0.5",typescript:"^5.8.3",yargs:"^17.7.1",zod:"^3.22.3","zod-validation-error":"^1.3.0"},devDependencies:{"@types/debug":"^4.1.12","@types/ejs":"^3.1.1","@types/glob":"^7.2.0","@types/node":"^22.16.0","@types/yargs":"^17.0.10",eslint:"^9.0.0","eslint-config-prettier":"^9.1.0",prettier:"3.3.3",tsup:"^6.7.0",tsx:"^3.12.6",vitest:"^2.1.3"},engines:{node:">=22.0.0"},publishConfig:{access:"public"}};async function N(e,t){console.log(`
8
8
  \u{1F4C4} Starting Move.toml Generation...`),console.log(` \u2514\u2500 Output path: ${t}/src/${e.name}/Move.toml`);let r=`[package]
9
9
  name = "${e.name}"
10
10
  version = "1.0.0"
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/codegen/utils/format.ts","../src/codegen/utils/formatAndWrite.ts","../src/debug.ts","../src/codegen/debug.ts","../src/codegen/utils/posixPath.ts","../src/codegen/utils/renderMove/schemaGen.ts","../src/codegen/utils/renderMove/common.ts","../package.json","../src/codegen/utils/renderMove/generateToml.ts","../src/codegen/utils/renderMove/generateScript.ts","../src/codegen/utils/renderMove/generateDappKey.ts","../src/codegen/utils/renderMove/generateSystem.ts","../src/codegen/utils/renderMove/generateError.ts","../src/codegen/utils/renderMove/generateInitTest.ts","../src/codegen/utils/renderMove/generateGenesis.ts","../src/codegen/utils/renderMove/generateEnums.ts","../src/codegen/utils/renderMove/generateResources.ts","../src/codegen/utils/renderMove/dapp.ts","../src/codegen/utils/config.ts","../src/codegen/utils/errors.ts","../src/parseData/parser/index.ts","../src/primitives/index.ts"],"sourcesContent":["import prettier from 'prettier';\nimport prettierPluginMove from 'prettier-plugin-move-js';\n\nexport async function formatMove(content: string, prettierConfigPath?: string): Promise<string> {\n let config;\n if (prettierConfigPath) {\n config = await prettier.resolveConfig(prettierConfigPath);\n }\n try {\n return prettier.format(content, {\n plugins: [prettierPluginMove],\n parser: 'move-parse',\n printWidth: 120,\n semi: true,\n tabWidth: 2,\n useTabs: false,\n bracketSpacing: true,\n ...config\n });\n } catch (error) {\n let message;\n if (error instanceof Error) {\n message = error.message;\n } else {\n message = error;\n }\n console.log(`Error during output formatting: ${message}`);\n return content;\n }\n}\n\nexport async function formatTypescript(content: string): Promise<string> {\n return prettier.format(content, {\n parser: 'typescript'\n });\n}\n","import fs from 'node:fs/promises';\nimport path from 'node:path';\nimport { formatTypescript } from './format';\nimport { debug } from '../debug';\n\nexport async function formatAndWriteMove(\n output: string,\n fullOutputPath: string,\n logPrefix?: string\n): Promise<void> {\n const formattedOutput = output;\n let schemaPrefix = ` // Copyright (c) Obelisk Labs, Inc.\n // SPDX-License-Identifier: Apache-2.0\n #[allow(unused_use)]\n \n /* Autogenerated file. Do not edit manually. */\n \n `;\n\n let initPrefix = `#[test_only]`;\n\n let code = schemaPrefix + formattedOutput;\n\n let deployHookPrefix = `#[allow(lint(share_owned))]`;\n\n if (\n fullOutputPath.includes('.toml') ||\n fullOutputPath.includes('system') ||\n fullOutputPath.includes('migrate')\n ) {\n code = formattedOutput;\n } else if (fullOutputPath.includes('init')) {\n code = initPrefix + formattedOutput;\n } else if (fullOutputPath.includes('genesis')) {\n code = deployHookPrefix + formattedOutput;\n }\n\n await fs.mkdir(path.dirname(fullOutputPath), { recursive: true });\n await fs.writeFile(fullOutputPath, code);\n debug(`${logPrefix}: ${fullOutputPath}`);\n}\n\n/**\n * Formats typescript code using prettier and write it to a file\n * @param output typescript code\n * @param fullOutputPath full path to the output file\n * @param logPrefix prefix for debug logs\n */\nexport async function formatAndWriteTypescript(\n output: string,\n fullOutputPath: string,\n logPrefix: string\n): Promise<void> {\n const formattedOutput = await formatTypescript(output);\n\n await fs.mkdir(path.dirname(fullOutputPath), { recursive: true });\n\n await fs.writeFile(fullOutputPath, formattedOutput);\n debug(`${logPrefix}: ${fullOutputPath}`);\n}\n","import createDebug from 'debug';\n\nexport const debug = createDebug('dubhe:common');\nexport const error = createDebug('dubhe:common');\n\n// Pipe debug output to stdout instead of stderr\ndebug.log = console.debug.bind(console);\n\n// Pipe error output to stderr\nerror.log = console.error.bind(console);\n","import { debug as parentDebug } from '../debug';\n\nexport const debug = parentDebug.extend('codegen');\nexport const error = parentDebug.extend('codegen');\n\n// Pipe debug output to stdout instead of stderr\ndebug.log = console.debug.bind(console);\n\n// Pipe error output to stderr\nerror.log = console.error.bind(console);\n","/**\n * Explicitly normalize a given path to a posix path (using `/` as separator).\n * This should be used for generating Solidity files that will be consumed by solc,\n * because solc expects `/` as path separator, but path.join produces `\\` if the user is on windows.\n */\nexport function posixPath(path: string): string {\n return path.replace(/\\\\/g, '/');\n}\n","import { DubheConfig } from '../../types';\nimport { existsSync } from 'fs';\n// import { rmdirSync } from 'fs'; // Unused\nimport { deleteFolderRecursive } from './common';\nimport { generateToml } from './generateToml';\n// import { generateSchemaData, generateSchemaStructure } from './generateSchema';\nimport { generateDeployHook, generateMigrate } from './generateScript';\nimport { generateDappKey } from './generateDappKey';\n// import { generateSchemaEvent } from // Unused './generateEvent';\nimport { generateSystemsAndTests } from './generateSystem';\n// import { generateSchemaHub } from // Unused './generateSchemaHub';\nimport { generateSchemaError } from './generateError';\n// import { generateDefaultSchema } from // Unused './generateDefaultSchema';\nimport { generateInitTest } from './generateInitTest';\nimport { generateGenesis } from './generateGenesis';\nimport { generateEnums } from './generateEnums';\nimport { generateResources } from './generateResources';\nimport path from 'node:path';\n\nexport async function schemaGen(\n rootDir: string,\n config: DubheConfig,\n network?: 'mainnet' | 'testnet' | 'devnet' | 'localnet'\n) {\n console.log('\\nšŸš€ Starting Schema Generation Process...');\n console.log('šŸ“‹ Project Configuration:');\n console.log(` └─ Name: ${config.name}`);\n console.log(` └─ Description: ${config.description || 'No description provided'}`);\n console.log(` └─ Network: ${network || 'testnet'}`);\n\n console.log(rootDir);\n const projectDir = path.join(rootDir, 'src', config.name);\n\n if (existsSync(`${projectDir}`)) {\n deleteFolderRecursive(`${projectDir}/sources/codegen`);\n }\n\n if (!existsSync(`${projectDir}/Move.toml`)) {\n await generateToml(config, rootDir);\n }\n\n const genesisPath = path.join(projectDir, 'sources', 'codegen', 'genesis.move');\n if (!existsSync(genesisPath)) {\n await generateGenesis(config, genesisPath);\n }\n\n const initTestPath = path.join(projectDir, 'sources', 'codegen', 'init_test.move');\n if (!existsSync(initTestPath)) {\n await generateInitTest(config, initTestPath);\n }\n\n const dappKeyPath = path.join(projectDir, 'sources', 'codegen', 'dapp_key.move');\n if (!existsSync(dappKeyPath)) {\n await generateDappKey(config, dappKeyPath);\n }\n\n const deployHookPath = path.join(projectDir, 'sources', 'scripts', 'deploy_hook.move');\n if (!existsSync(deployHookPath)) {\n await generateDeployHook(config, deployHookPath);\n }\n\n const resourcesPath = path.join(projectDir, 'sources', 'codegen', 'resources');\n if (!existsSync(resourcesPath)) {\n await generateResources(config, resourcesPath);\n } else {\n await generateResources(config, resourcesPath);\n }\n\n const enumsPath = path.join(projectDir, 'sources', 'codegen', 'enums');\n if (!existsSync(enumsPath)) {\n await generateEnums(config, enumsPath);\n }\n\n if (config.errors) {\n await generateSchemaError(config.name, config.errors, rootDir);\n }\n\n // await generateDefaultSchema(config, rootDir);\n // await generateInit(config, rootDir);\n await generateSystemsAndTests(config, rootDir);\n await generateMigrate(config, rootDir);\n console.log('\\nāœ… Schema Generation Process Complete!\\n');\n}\n","// import { MoveType } from '../../types'; // Unused\nimport fs from 'fs';\n\nexport function deleteFolderRecursive(path: string) {\n if (fs.existsSync(path)) {\n fs.readdirSync(path).forEach((file) => {\n const curPath = `${path}/${file}`;\n if (fs.lstatSync(curPath).isDirectory()) {\n deleteFolderRecursive(curPath);\n } else {\n fs.unlinkSync(curPath);\n }\n });\n fs.rmdirSync(path);\n }\n}\n\nexport function capitalizeFirstLetter(input: string): string {\n return input.charAt(0).toUpperCase() + input.slice(1);\n}\n\n/**\n *\n * @param values\n * @param prefixArgs\n * @return [ name, age, birth_time ]\n */\nexport function getStructAttrs(values: Record<string, string> | string): string {\n return Object.entries(values)\n .map(([key, _]) => `${key}`)\n .join(',');\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction isAddress(str: string): boolean {\n const regex = /^0x[a-fA-F0-9]+$/;\n return regex.test(str);\n}\n\n/**\n *\n * @param values\n * @return ( bool , u64 , u64)\n */\n// export function getStructTypes(values: SchemaType): string {\nexport function getStructTypes(values: Record<string, string>): string {\n return `(${Object.entries(values).map(([_, type]) => `${type}`)})`;\n}\n\n/**\n *\n * @param values\n * @return Attributes and types of the struct. [ name: string, age: u64 ]\n */\nexport function getStructAttrsWithType(values: Record<string, string>): string[] {\n return Object.entries(values).map(([key, type]) => `${key}: ${type}`);\n}\n\n/**\n * @param values\n * @return [ data.name, data.age ]\n */\nexport function getStructAttrsQuery(values: Record<string, string>): string[] {\n return Object.entries(values).map(([key, _]) => `self.${key}`);\n}\n\nexport function containsString(obj: Record<string, any>, searchString: string): boolean {\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n const value = obj[key];\n if (\n (typeof value === 'string' && value === searchString) ||\n (typeof value === 'string' && value.includes(searchString) && value.includes('>'))\n ) {\n return true;\n }\n }\n }\n return false;\n}\n","{\n \"name\": \"@0xobelisk/sui-common\",\n \"version\": \"1.2.0-pre.112\",\n \"description\": \"Common low level logic shared between packages\",\n \"keywords\": [\n \"sui\",\n \"obelisk labs\",\n \"move\",\n \"blockchain\"\n ],\n \"homepage\": \"https://github.com/0xobelisk/dubhe/tree/main/packages/sui-common#readme\",\n \"bugs\": \"https://github.com/0xobelisk/dubhe/issues\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/0xobelisk/dubhe.git\"\n },\n \"license\": \"Apache-2.0\",\n \"author\": \"team@obelisk.build\",\n \"type\": \"module\",\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"default\": \"./dist/index.js\"\n }\n },\n \"types\": \"./dist/index.d.ts\",\n \"typesVersions\": {\n \"*\": {\n \"index\": [\n \"./src/index.ts\"\n ]\n }\n },\n \"scripts\": {\n \"build\": \"pnpm run type-check && pnpm run build:js\",\n \"build:js\": \"tsup && chmod +x ./dist/index.js\",\n \"clean\": \"pnpm run clean:js\",\n \"clean:js\": \"rimraf dist\",\n \"dev\": \"tsup --watch\",\n \"format\": \"prettier --write .\",\n \"format:check\": \"prettier --check .\",\n \"lint\": \"eslint . --ext .ts\",\n \"test\": \"vitest\",\n \"type-check\": \"tsc --noEmit\",\n \"validate\": \"pnpm format:check && pnpm type-check\"\n },\n \"dependencies\": {\n \"chalk\": \"^5.0.1\",\n \"debug\": \"^4.3.4\",\n \"dotenv\": \"^16.0.3\",\n \"ejs\": \"^3.1.8\",\n \"esbuild\": \"^0.17.15\",\n \"execa\": \"^7.0.0\",\n \"find-up\": \"^6.3.0\",\n \"glob\": \"^10.5.0\",\n \"path\": \"^0.12.7\",\n \"prettier\": \"^3.1.1\",\n \"prettier-plugin-move-js\": \"^0.0.5\",\n \"typescript\": \"^5.8.3\",\n \"yargs\": \"^17.7.1\",\n \"zod\": \"^3.22.3\",\n \"zod-validation-error\": \"^1.3.0\"\n },\n \"devDependencies\": {\n \"@types/debug\": \"^4.1.12\",\n \"@types/ejs\": \"^3.1.1\",\n \"@types/glob\": \"^7.2.0\",\n \"@types/node\": \"^22.16.0\",\n \"@types/yargs\": \"^17.0.10\",\n \"eslint\": \"^9.0.0\",\n \"eslint-config-prettier\": \"^9.1.0\",\n \"prettier\": \"3.3.3\",\n \"tsup\": \"^6.7.0\",\n \"tsx\": \"^3.12.6\",\n \"vitest\": \"^2.1.3\"\n },\n \"engines\": {\n \"node\": \">=22.0.0\"\n },\n \"publishConfig\": {\n \"access\": \"public\"\n }\n}\n","import { DubheConfig } from '../../types';\nimport { formatAndWriteMove } from '../formatAndWrite';\nimport packageJson from '../../../../package.json';\n\nexport async function generateToml(config: DubheConfig, srcPrefix: string) {\n console.log('\\nšŸ“„ Starting Move.toml Generation...');\n console.log(` └─ Output path: ${srcPrefix}/src/${config.name}/Move.toml`);\n\n let code = `[package]\nname = \"${config.name}\"\nversion = \"1.0.0\"\nedition = \"2024\"\n\n[dependencies]\nSui = { git = \"https://github.com/MystenLabs/sui.git\", subdir = \"crates/sui-framework/packages/sui-framework\", rev = \"mainnet-v1.46.3\" }\nDubhe = { git = \"https://github.com/0xobelisk/dubhe.git\", subdir = \"framework/src/dubhe\", rev = \"v${packageJson.version}\" }\n\n[addresses]\nsui = \"0x2\"\n${config.name} = \"0x0\"\n`;\n await formatAndWriteMove(code, `${srcPrefix}/src/${config.name}/Move.toml`, 'formatAndWriteMove');\n console.log('āœ… Move.toml Generation Complete\\n');\n}\n","import { DubheConfig } from '../../types';\nimport { formatAndWriteMove } from '../formatAndWrite';\nimport { existsSync } from 'fs';\n// import { capitalizeAndRemoveUnderscores } from // Unused './generateSchema';\n\n// import { readFileSync } from 'fs'; // Unused\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction capitalizeFirstLetter(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\nexport async function generateDeployHook(config: DubheConfig, path: string) {\n if (!existsSync(path)) {\n const code = `module ${config.name}::deploy_hook {\n\t\t\t use dubhe::dapp_service::DappHub;\n\n public(package) fun run(_dapp_hub: &mut DappHub, _ctx: &mut TxContext) {\n\n }\n}`;\n await formatAndWriteMove(code, path, 'formatAndWriteMove');\n }\n}\n\nexport async function generateMigrate(config: DubheConfig, srcPrefix: string) {\n if (!existsSync(`${srcPrefix}/src/${config.name}/sources/scripts/migrate.move`)) {\n let code = `module ${config.name}::migrate {\n const ON_CHAIN_VERSION: u32 = 1;\n\n public fun on_chain_version(): u32 {\n ON_CHAIN_VERSION\n }\n}\n`;\n await formatAndWriteMove(\n code,\n `${srcPrefix}/src/${config.name}/sources/scripts/migrate.move`,\n 'formatAndWriteMove'\n );\n }\n}\n","import { DubheConfig } from '../../types';\nimport { formatAndWriteMove } from '../formatAndWrite';\n\nexport async function generateDappKey(config: DubheConfig, path: string) {\n let code = `module ${config.name}::dapp_key {\nuse std::type_name;\n use sui::address;\n use std::ascii::String;\n\n /// Authorization token for the app.\n\n public struct DappKey has copy, drop {}\n\n public(package) fun new(): DappKey {\n DappKey { }\n }\n\n public fun to_string(): String {\n type_name::get<DappKey>().into_string()\n }\n\n public fun package_id(): address {\n let package_id_str = type_name::get<DappKey>().get_address();\n address::from_ascii_bytes(package_id_str.as_bytes())\n }\n\n public fun eq<DappKey1: copy + drop, DappKey2: copy + drop>(_: &DappKey1, _: &DappKey2): bool {\n type_name::get<DappKey1>() == type_name::get<DappKey2>()\n }\n}\n`;\n await formatAndWriteMove(code, path, 'formatAndWriteMove');\n}\n","import { DubheConfig } from '../../types';\n// import { formatAndWriteMove } from // Unused '../formatAndWrite';\nimport { existsSync } from 'fs';\nimport fs from 'node:fs/promises';\n// import path from // Unused 'node:path';\n\nexport async function generateSystemsAndTests(config: DubheConfig, srcPrefix: string) {\n if (!existsSync(`${srcPrefix}/src/${config.name}/sources/systems`)) {\n await fs.mkdir(`${srcPrefix}/src/${config.name}/sources/systems`, { recursive: true });\n }\n if (!existsSync(`${srcPrefix}/src/${config.name}/sources/tests`)) {\n await fs.mkdir(`${srcPrefix}/src/${config.name}/sources/tests`, { recursive: true });\n }\n}\n","import { ErrorData } from '../../types';\nimport { formatAndWriteMove } from '../formatAndWrite';\n\nexport async function generateSchemaError(projectName: string, errors: ErrorData, path: string) {\n console.log('\\nšŸ“¦ Starting Schema Error Generation...');\n\n let code = `module ${projectName}::errors {\n\t\t${Object.entries(errors)\n .map(([name, message]) => {\n console.log(` └─ ${name}: ${message}`);\n return `#[error]\n\t\t\t\tconst ${name.toUpperCase()}: vector<u8> = b\"${message}\";\n\t\t\t\tpublic fun ${name}_error(condition: bool) { assert!(condition, ${name.toUpperCase()}) }\n\t\t`;\n })\n .join('\\n')}\n }`;\n\n await formatAndWriteMove(\n code,\n `${path}/src/${projectName}/sources/codegen/errors.move`,\n 'formatAndWriteMove'\n );\n}\n","import { DubheConfig } from '../../types';\nimport { formatAndWriteMove } from '../formatAndWrite';\n\nexport async function generateInitTest(config: DubheConfig, path: string) {\n let init_test_code = `module ${config.name}::init_test {\n use sui::clock;\n use sui::test_scenario;\n use sui::test_scenario::Scenario;\n use dubhe::dapp_service::DappHub;\n use dubhe::dapp_system;\n\n public fun deploy_dapp_for_testing(scenario: &mut Scenario): DappHub {\n let ctx = test_scenario::ctx(scenario);\n let clock = clock::create_for_testing(ctx);\n let mut dapp_hub = dapp_system::create_dapp_hub_for_testing(ctx);\n ${config.name != 'dubhe' ? `dubhe::genesis::run(&mut dapp_hub, &clock, ctx);` : ''}\n ${config.name}::genesis::run(&mut dapp_hub, &clock, ctx);\n clock::destroy_for_testing(clock);\n test_scenario::next_tx(scenario, ctx.sender());\n dapp_hub\n }\n}\n`;\n await formatAndWriteMove(init_test_code, path, 'formatAndWriteMove');\n}\n","import { DubheConfig } from '../../types';\nimport { formatAndWriteMove } from '../formatAndWrite';\n// import { existsSync } from 'fs'; // Unused\n// import { capitalizeAndRemoveUnderscores } from './generateSchema'; // Unused\n// import path from 'node:path'; // Unused\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction capitalizeFirstLetter(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\nexport async function generateGenesis(config: DubheConfig, path: string) {\n let genesis_code = `module ${config.name}::genesis {\n use sui::clock::Clock;\n use dubhe::dapp_service::DappHub;\n use ${config.name}::dapp_key;\n use dubhe::dapp_system;\n use std::ascii::string;\n\n public entry fun run(dapp_hub: &mut DappHub, clock: &Clock, ctx: &mut TxContext) {\n // Create Dapp\n let dapp_key = dapp_key::new();\n dapp_system::create_dapp(dapp_hub, dapp_key, string(b\"${config.name}\"), string(b\"${config.description}\"), clock, ctx);\n\n // Logic that needs to be automated once the contract is deployed\n ${config.name}::deploy_hook::run(dapp_hub, ctx);\n }\n}\n`;\n await formatAndWriteMove(genesis_code, path, 'formatAndWriteMove');\n}\n","import { DubheConfig } from '../../types';\nimport { formatAndWriteMove } from '../formatAndWrite';\n\nfunction toSnakeCase(str: string): string {\n return str.replace(/[A-Z]/g, (letter) => `_${letter.toLowerCase()}`).replace(/^_/, '');\n}\n\nexport async function generateEnums(config: DubheConfig, path: string) {\n console.log('\\nšŸ“¦ Starting Enums Generation...');\n\n if (!config.enums) {\n return;\n }\n\n for (const [enumName, values] of Object.entries(config.enums)) {\n console.log(` └─ ${enumName}: ${JSON.stringify(values)}`);\n\n // Sort enum values by first letter\n const sortedValues = [...values].sort((a, b) => a.localeCompare(b));\n\n const code = generateEnumCode(config.name, enumName, sortedValues);\n await formatAndWriteMove(code, `${path}/${toSnakeCase(enumName)}.move`, 'formatAndWriteMove');\n }\n}\n\nfunction generateEnumCode(projectName: string, enumName: string, values: string[]): string {\n const enumValues = values.map((v) => v.charAt(0).toUpperCase() + v.slice(1)).join(',');\n\n return `module ${projectName}::${toSnakeCase(enumName)} {\n use sui::bcs::{BCS, to_bytes, peel_enum_tag};\n\n public enum ${enumName} has copy, drop, store {\n ${enumValues}\n }\n\n${values\n .map(\n (v) => ` public fun new_${v.toLowerCase()}(): ${enumName} {\n ${enumName}::${v.charAt(0).toUpperCase() + v.slice(1)}\n }`\n )\n .join('\\n\\n')}\n\n public fun encode(self: ${enumName}): vector<u8> {\n to_bytes(&self)\n }\n\n public fun decode(bytes: &mut BCS): ${enumName} {\n match(peel_enum_tag(bytes)) {\n${values\n .map((v, i) => ` ${i} => ${enumName}::${v.charAt(0).toUpperCase() + v.slice(1)},`)\n .join('\\n')}\n _ => abort,\n }\n }\n}`;\n}\n","import { DubheConfig } from '../../types';\nimport { ComponentType } from '../../types';\nimport { formatAndWriteMove } from '../formatAndWrite';\n\nfunction getDappModuleName(projectName: string): string {\n return projectName === 'dubhe' ? 'dapp_service' : `dapp_system`;\n}\n\nexport async function generateResources(config: DubheConfig, path: string) {\n console.log('\\nšŸ“¦ Starting Resources Generation...');\n\n for (const [componentName, resource] of Object.entries(config.resources)) {\n console.log(` └─ ${componentName}: ${JSON.stringify(resource)}`);\n\n // Handle simple type cases\n if (typeof resource === 'string') {\n const code = generateSimpleComponentCode(config.name, componentName, resource, 'Onchain');\n await formatAndWriteMove(code, `${path}/${componentName}.move`, 'formatAndWriteMove');\n continue;\n }\n\n // Validate that resource has fields defined\n if (!resource.fields || Object.keys(resource.fields).length === 0) {\n throw new Error(\n `Resource '${componentName}' must have fields defined, but found empty object`\n );\n }\n\n // For resources, don't default to any keys - use what's defined or empty array\n if (!resource.keys) {\n resource.keys = [];\n }\n\n const code = generateComponentCode(config.name, componentName, resource);\n await formatAndWriteMove(code, `${path}/${componentName}.move`, 'formatAndWriteMove');\n }\n}\n\nfunction generateSimpleComponentCode(\n projectName: string,\n componentName: string,\n valueType: string,\n type: ComponentType = 'Onchain'\n): string {\n // Check if it's an enum type\n const isEnum = !isBasicType(valueType);\n const enumModule = isEnum ? `${toSnakeCase(valueType)}` : '';\n const isOffchain = type === 'Offchain';\n\n // For offchain resources, only generate set and encode functions\n const readFunctions = !isOffchain\n ? `\n public fun has(dapp_hub: &DappHub, resource_account: String): bool {\n let mut key_tuple = vector::empty();\n key_tuple.push_back(TABLE_NAME);\n ${getDappModuleName(\n projectName\n )}::has_record<DappKey>(dapp_hub, resource_account, key_tuple)\n }\n\n public fun ensure_has(dapp_hub: &DappHub, resource_account: String) {\n let mut key_tuple = vector::empty();\n key_tuple.push_back(TABLE_NAME);\n ${getDappModuleName(\n projectName\n )}::ensure_has_record<DappKey>(dapp_hub, resource_account, key_tuple)\n }\n\n public fun ensure_has_not(dapp_hub: &DappHub, resource_account: String) {\n let mut key_tuple = vector::empty();\n key_tuple.push_back(TABLE_NAME);\n ${getDappModuleName(\n projectName\n )}::ensure_has_not_record<DappKey>(dapp_hub, resource_account, key_tuple)\n }\n\n public(package) fun delete(dapp_hub: &mut DappHub, resource_account: String) {\n let mut key_tuple = vector::empty();\n key_tuple.push_back(TABLE_NAME);\n ${getDappModuleName(\n projectName\n )}::delete_record<DappKey>(dapp_hub, dapp_key::new(), key_tuple, resource_account);\n }\n\n public fun get(dapp_hub: &DappHub, resource_account: String): (${\n valueType === 'string' || valueType === 'String' ? 'String' : valueType\n }) {\n let mut key_tuple = vector::empty();\n key_tuple.push_back(TABLE_NAME);\n let value_tuple = ${getDappModuleName(\n projectName\n )}::get_record<DappKey>(dapp_hub, resource_account, key_tuple);\n let mut bsc_type = sui::bcs::new(value_tuple);\n ${\n valueType === 'string' || valueType === 'String'\n ? `let value = dubhe::bcs::peel_string(&mut bsc_type);`\n : valueType === 'vector<String>'\n ? `let value = dubhe::bcs::peel_vec_string(&mut bsc_type);`\n : isEnum\n ? `let value = ${projectName}::${enumModule}::decode(&mut bsc_type);`\n : `let value = sui::bcs::peel_${getBcsType(valueType)}(&mut bsc_type);`\n }\n (value)\n }\n`\n : '';\n\n return `module ${projectName}::${componentName} { \n use sui::bcs::{to_bytes};\n use std::ascii::{string, String, into_bytes};\n use dubhe::table_id;\n use dubhe::dapp_service::{Self, DappHub};\n use dubhe::dapp_system;\n use ${projectName}::dapp_key;\n use ${projectName}::dapp_key::DappKey;\n${\n isEnum && valueType !== 'string' && valueType !== 'String'\n ? ` use ${projectName}::${enumModule};\n use ${projectName}::${enumModule}::{${valueType}};`\n : ''\n}\n\n const TABLE_NAME: vector<u8> = b\"${componentName}\";\n const OFFCHAIN: bool = ${type === 'Offchain'};\n\n${readFunctions}\n public(package) fun set(dapp_hub: &mut DappHub, resource_account: String, value: ${\n valueType === 'string' || valueType === 'String' ? 'String' : valueType\n }, ctx: &mut TxContext) {\n let mut key_tuple = vector::empty();\n key_tuple.push_back(TABLE_NAME);\n let value_tuple = encode(value);\n ${getDappModuleName(\n projectName\n )}::set_record(dapp_hub, dapp_key::new(), key_tuple, value_tuple, resource_account, OFFCHAIN, ctx);\n }\n\n public fun encode(value: ${\n valueType === 'string' || valueType === 'String' ? 'String' : valueType\n }): vector<vector<u8>> {\n let mut value_tuple = vector::empty();\n value_tuple.push_back(${\n valueType === 'string' || valueType === 'String'\n ? `to_bytes(&into_bytes(value))`\n : valueType === 'vector<String>'\n ? `to_bytes(&value)`\n : isEnum\n ? `${projectName}::${enumModule}::encode(value)`\n : `to_bytes(&value)`\n });\n value_tuple\n }\n}`;\n}\n\nfunction toSnakeCase(str: string): string {\n return str.replace(/[A-Z]/g, (letter) => `_${letter.toLowerCase()}`).replace(/^_/, '');\n}\n\nfunction generateComponentCode(projectName: string, componentName: string, resource: any): string {\n const fields = resource.fields;\n const keys = resource.keys || [];\n const offchain = resource.offchain || false;\n const global = resource.global || false;\n const type: ComponentType = offchain ? 'Offchain' : 'Onchain';\n\n // global controls whether resource_account is hardcoded to package_id()\n // offchain controls whether read functions are suppressed — independent flags\n const isGlobal = global;\n\n // Check if all fields are keys\n const isAllKeys = Object.keys(fields).every((name) => keys.includes(name));\n\n // Generate field type and name lists, excluding fields in keys\n const valueFields = Object.entries(fields).filter(([name]) => !keys.includes(name));\n const valueFieldNames = valueFields.map(([name]) => name);\n\n // If there is only one value field, do not generate struct\n const isSingleValue = valueFieldNames.length === 1;\n\n // Enum types from value fields only (used for encode/decode logic)\n const enumTypes = valueFields\n .filter(([_, type]) => !isBasicType(type as string) && type !== 'string' && type !== 'String')\n .map(([_, type]) => ({\n type: type as string,\n module: `${toSnakeCase(type as string)}`\n }))\n .filter((item, index, self) => self.findIndex((t) => t.type === item.type) === index);\n\n // All enum types (key + value) for import statement generation\n const allEnumTypes = Object.entries(fields)\n .filter(([_, type]) => !isBasicType(type as string) && type !== 'string' && type !== 'String')\n .map(([_, type]) => ({\n type: type as string,\n module: `${toSnakeCase(type as string)}`\n }))\n .filter((item, index, self) => self.findIndex((t) => t.type === item.type) === index);\n\n // Generate table related functions\n const tableFunctions = generateTableFunctions(\n projectName,\n componentName,\n fields,\n keys,\n !isAllKeys && !isSingleValue,\n enumTypes,\n type,\n isGlobal\n );\n\n // If all fields are keys or there is only one value field, do not generate struct related code\n if (isAllKeys || isSingleValue) {\n return `module ${projectName}::${componentName} { \n use sui::bcs::{to_bytes};\n use std::ascii::{string, String, into_bytes};\n use dubhe::table_id;\n use dubhe::dapp_service::{Self, DappHub};\n use dubhe::dapp_system;\n use ${projectName}::dapp_key;\n use ${projectName}::dapp_key::DappKey;\n${\n allEnumTypes.length > 0\n ? allEnumTypes\n .map(\n (e) => ` use ${projectName}::${e.module};\n use ${projectName}::${e.module}::{${e.type}};`\n )\n .join('\\n')\n : ''\n}\n\n const TABLE_NAME: vector<u8> = b\"${componentName}\";\n const OFFCHAIN: bool = ${offchain};\n\n${tableFunctions}\n}`;\n }\n\n // Generate struct fields, excluding fields in keys\n const structFields = valueFieldNames\n .map(\n (name) =>\n ` ${name}: ${\n fields[name] === 'string' || fields[name] === 'String'\n ? 'String'\n : fields[name] === 'vector<String>'\n ? 'vector<String>'\n : fields[name]\n },`\n )\n .join('\\n');\n\n // Generate constructor parameters, only containing non-key fields\n const constructorParams = valueFieldNames\n .map(\n (name) =>\n `${name}: ${\n fields[name] === 'string' || fields[name] === 'String'\n ? 'String'\n : fields[name] === 'vector<String>'\n ? 'vector<String>'\n : fields[name]\n }`\n )\n .join(', ');\n\n // Generate constructor field assignments, only containing non-key fields\n const constructorAssignments = valueFieldNames.map((name) => ` ${name},`).join('\\n');\n\n // Generate getter functions, excluding fields in keys\n const getters = valueFieldNames\n .map(\n (name) => ` public fun ${name}(self: &${toPascalCase(componentName)}): ${\n fields[name] === 'string' || fields[name] === 'String'\n ? 'String'\n : fields[name] === 'vector<String>'\n ? 'vector<String>'\n : fields[name]\n } {\n self.${name}\n }`\n )\n .join('\\n\\n');\n\n // Generate setter functions, excluding fields in keys\n const setters = valueFieldNames\n .map(\n (name) => ` public fun update_${name}(self: &mut ${toPascalCase(\n componentName\n )}, ${name}: ${\n fields[name] === 'string' || fields[name] === 'String'\n ? 'String'\n : fields[name] === 'vector<String>'\n ? 'vector<String>'\n : fields[name]\n }) {\n self.${name} = ${name}\n }`\n )\n .join('\\n\\n');\n\n return `module ${projectName}::${componentName} { \n use sui::bcs::{to_bytes};\n use std::ascii::{string, String, into_bytes};\n use dubhe::table_id;\n use dubhe::dapp_service::{Self, DappHub};\n use dubhe::dapp_system;\n use ${projectName}::dapp_key;\n use ${projectName}::dapp_key::DappKey;\n${\n allEnumTypes.length > 0\n ? allEnumTypes\n .map(\n (e) => ` use ${projectName}::${e.module};\n use ${projectName}::${e.module}::{${e.type}};`\n )\n .join('\\n')\n : ''\n}\n\n const TABLE_NAME: vector<u8> = b\"${componentName}\";\n const OFFCHAIN: bool = ${offchain};\n\n public struct ${toPascalCase(componentName)} has copy, drop, store {\n${structFields}\n }\n\n public fun new(${constructorParams}): ${toPascalCase(componentName)} {\n ${toPascalCase(componentName)} {\n${constructorAssignments}\n }\n }\n\n${getters}\n\n${setters}\n\n${tableFunctions}\n}`;\n}\n\n// Check if it is a basic type\nfunction isBasicType(type: string): boolean {\n return [\n 'address',\n 'bool',\n 'u8',\n 'u16',\n 'u32',\n 'u64',\n 'u128',\n 'u256',\n 'string',\n 'String',\n 'vector<address>',\n 'vector<bool>',\n 'vector<u8>',\n 'vector<u16>',\n 'vector<vector<u8>>',\n 'vector<u32>',\n 'vector<u64>',\n 'vector<u128>',\n 'vector<u256>',\n 'vector<String>'\n ].includes(type);\n}\n\nfunction generateTableFunctions(\n projectName: string,\n componentName: string,\n fields: Record<string, string>,\n keys: string[],\n includeStruct: boolean = true,\n enumTypes: Array<{ type: string; module: string }> = [],\n type: ComponentType = 'Onchain',\n isGlobal: boolean = false\n): string {\n // Separate key fields and non-key fields\n const valueFields = Object.entries(fields)\n .filter(([name]) => !keys.includes(name))\n .reduce((acc, [name, type]) => ({ ...acc, [name]: type }), {});\n\n const valueNames = Object.keys(valueFields);\n\n // Check if all fields are keys\n const isAllKeys = Object.keys(fields).every((name) => keys.includes(name));\n // Check if there is only one value field\n const isSingleValue = valueNames.length === 1;\n // Check if it's offchain\n const isOffchain = type === 'Offchain';\n\n // Generate key parameter list\n const keyParams = keys.length > 0 ? keys.map((k) => `${k}: ${fields[k]}`).join(', ') : '';\n\n // Generate key tuple related code\n const keyTupleCode =\n keys.length > 0\n ? `let mut key_tuple = vector::empty();\n key_tuple.push_back(TABLE_NAME);\n ${keys.map((k) => `key_tuple.push_back(to_bytes(&${k}));`).join('\\n ')}`\n : `let mut key_tuple = vector::empty();\n key_tuple.push_back(TABLE_NAME);`;\n\n // For global resources, use package_id() as resource_account\n const resourceAccountParam = isGlobal ? '' : 'resource_account: String';\n const resourceAccountArg = isGlobal\n ? 'dapp_key::package_id().to_ascii_string()'\n : 'resource_account';\n\n // Add comma after resourceAccountParam only if both exist\n const paramSeparator = resourceAccountParam && keyParams ? ', ' : '';\n\n // Generate has series functions - skip for offchain\n const hasFunctions = !isOffchain\n ? ` public fun has(dapp_hub: &DappHub${\n resourceAccountParam || keyParams ? ', ' : ''\n }${resourceAccountParam}${paramSeparator}${keyParams}): bool {\n ${keyTupleCode}\n ${getDappModuleName(\n projectName\n )}::has_record<DappKey>(dapp_hub, ${resourceAccountArg}, key_tuple)\n }\n\n public fun ensure_has(dapp_hub: &DappHub${\n resourceAccountParam || keyParams ? ', ' : ''\n }${resourceAccountParam}${paramSeparator}${keyParams}) {\n ${keyTupleCode}\n ${getDappModuleName(\n projectName\n )}::ensure_has_record<DappKey>(dapp_hub, ${resourceAccountArg}, key_tuple)\n }\n\n public fun ensure_has_not(dapp_hub: &DappHub${\n resourceAccountParam || keyParams ? ', ' : ''\n }${resourceAccountParam}${paramSeparator}${keyParams}) {\n ${keyTupleCode}\n ${getDappModuleName(\n projectName\n )}::ensure_has_not_record<DappKey>(dapp_hub, ${resourceAccountArg}, key_tuple)\n }\n `\n : '';\n\n // Generate delete function - skip for offchain\n const deleteFunction = !isOffchain\n ? ` public(package) fun delete(dapp_hub: &mut DappHub${\n resourceAccountParam || keyParams ? ', ' : ''\n }${resourceAccountParam}${paramSeparator}${keyParams}) {\n ${keyTupleCode}\n ${getDappModuleName(\n projectName\n )}::delete_record<DappKey>(dapp_hub, dapp_key::new(), key_tuple, ${resourceAccountArg});\n }`\n : '';\n\n // Generate getter and setter functions, only generated when there are multiple value fields\n // For offchain, skip all getter and setter functions\n const getterSetters =\n !isSingleValue && !isOffchain\n ? valueNames\n .map((name) => {\n const index = valueNames.indexOf(name);\n const fieldType = fields[name];\n const isEnum = !isBasicType(fieldType as string);\n const enumType = isEnum ? enumTypes.find((e) => e.type === fieldType) : null;\n\n return ` public fun get_${name}(dapp_hub: &DappHub${\n resourceAccountParam || keyParams ? ', ' : ''\n }${resourceAccountParam}${paramSeparator}${keyParams}): ${\n fieldType === 'string' || fieldType === 'String'\n ? 'String'\n : fieldType === 'vector<String>'\n ? 'vector<String>'\n : fieldType\n } {\n ${keyTupleCode}\n let value = ${getDappModuleName(\n projectName\n )}::get_field<DappKey>(dapp_hub, ${resourceAccountArg}, key_tuple, ${index});\n let mut bsc_type = sui::bcs::new(value);\n ${\n fieldType === 'string' || fieldType === 'String'\n ? `let ${name} = dubhe::bcs::peel_string(&mut bsc_type);`\n : fieldType === 'vector<String>'\n ? `let ${name} = dubhe::bcs::peel_vec_string(&mut bsc_type);`\n : isEnum\n ? `let ${name} = ${projectName}::${enumType?.module}::decode(&mut bsc_type);`\n : `let ${name} = sui::bcs::peel_${getBcsType(fieldType)}(&mut bsc_type);`\n }\n ${name}\n }\n\n public(package) fun set_${name}(dapp_hub: &mut DappHub${\n resourceAccountParam || keyParams ? ', ' : ''\n }${resourceAccountParam}${paramSeparator}${keyParams}, ${name}: ${\n fieldType === 'string' || fieldType === 'String'\n ? 'String'\n : fieldType === 'vector<String>'\n ? 'vector<String>'\n : fieldType\n }, ctx: &mut TxContext) {\n ${keyTupleCode}\n let value = ${\n fieldType === 'string' || fieldType === 'String'\n ? `to_bytes(&into_bytes(${name}))`\n : fieldType === 'vector<String>'\n ? `to_bytes(&${name})`\n : isEnum\n ? `${projectName}::${enumType?.module}::encode(${name})`\n : `to_bytes(&${name})`\n };\n ${getDappModuleName(\n projectName\n )}::set_field(dapp_hub, dapp_key::new(), ${resourceAccountArg}, key_tuple, ${index}, value, ctx);\n }`;\n })\n .join('\\n\\n')\n : '';\n\n // Generate get and set functions\n const getSetFunctions = isAllKeys\n ? ` public(package) fun set(dapp_hub: &mut DappHub${\n resourceAccountParam || keyParams ? ', ' : ''\n }${resourceAccountParam}${paramSeparator}${keyParams}, ctx: &mut TxContext) {\n ${keyTupleCode}\n let value_tuple = vector::empty();\n ${getDappModuleName(\n projectName\n )}::set_record(dapp_hub, dapp_key::new(), key_tuple, value_tuple, ${resourceAccountArg}, OFFCHAIN, ctx);\n }`\n : isSingleValue\n ? !isOffchain\n ? ` public fun get(dapp_hub: &DappHub${\n resourceAccountParam || keyParams ? ', ' : ''\n }${resourceAccountParam}${paramSeparator}${keyParams}): ${\n Object.values(valueFields)[0] === 'string' || Object.values(valueFields)[0] === 'String'\n ? 'String'\n : Object.values(valueFields)[0]\n } {\n ${keyTupleCode}\n let value = ${getDappModuleName(\n projectName\n )}::get_field<DappKey>(dapp_hub, ${resourceAccountArg}, key_tuple, 0);\n let mut bsc_type = sui::bcs::new(value);\n ${\n Object.values(valueFields)[0] === 'string' || Object.values(valueFields)[0] === 'String'\n ? `let value = dubhe::bcs::peel_string(&mut bsc_type);`\n : Object.values(valueFields)[0] === 'vector<String>'\n ? `let value = dubhe::bcs::peel_vec_string(&mut bsc_type);`\n : !isBasicType(Object.values(valueFields)[0] as string)\n ? `let value = ${projectName}::${\n enumTypes.find((e) => e.type === Object.values(valueFields)[0])?.module\n }::decode(&mut bsc_type);`\n : `let value = sui::bcs::peel_${getBcsType(\n Object.values(valueFields)[0] as string\n )}(&mut bsc_type);`\n }\n value\n }\n\n public(package) fun set(dapp_hub: &mut DappHub${\n resourceAccountParam || keyParams ? ', ' : ''\n }${resourceAccountParam}${paramSeparator}${keyParams}, value: ${\n Object.values(valueFields)[0] === 'string' || Object.values(valueFields)[0] === 'String'\n ? 'String'\n : Object.values(valueFields)[0]\n }, ctx: &mut TxContext) {\n ${keyTupleCode}\n let value_tuple = encode(value);\n ${getDappModuleName(\n projectName\n )}::set_record(dapp_hub, dapp_key::new(), key_tuple, value_tuple, ${resourceAccountArg}, OFFCHAIN, ctx);\n }`\n : ` public(package) fun set(dapp_hub: &mut DappHub${\n resourceAccountParam || keyParams ? ', ' : ''\n }${resourceAccountParam}${paramSeparator}${keyParams}, value: ${\n Object.values(valueFields)[0] === 'string' || Object.values(valueFields)[0] === 'String'\n ? 'String'\n : Object.values(valueFields)[0]\n }, ctx: &mut TxContext) {\n ${keyTupleCode}\n let value_tuple = encode(value);\n ${getDappModuleName(\n projectName\n )}::set_record(dapp_hub, dapp_key::new(), key_tuple, value_tuple, ${resourceAccountArg}, OFFCHAIN, ctx);\n }`\n : !isOffchain\n ? ` public fun get(dapp_hub: &DappHub${\n resourceAccountParam || keyParams ? ', ' : ''\n }${resourceAccountParam}${paramSeparator}${keyParams}): (${Object.values(valueFields)\n .map((t) => (t === 'string' || t === 'String' ? 'String' : t))\n .join(', ')}) {\n ${keyTupleCode}\n let value_tuple = ${getDappModuleName(\n projectName\n )}::get_record<DappKey>(dapp_hub, ${resourceAccountArg}, key_tuple);\n let mut bsc_type = sui::bcs::new(value_tuple);\n ${valueNames\n .map((name) => {\n const fieldType = fields[name];\n const isEnum = !isBasicType(fieldType as string);\n const enumType = isEnum ? enumTypes.find((e) => e.type === fieldType) : null;\n return `let ${name} = ${\n fieldType === 'string' || fieldType === 'String'\n ? `dubhe::bcs::peel_string(&mut bsc_type)`\n : fieldType === 'vector<String>'\n ? `dubhe::bcs::peel_vec_string(&mut bsc_type)`\n : isEnum\n ? `${projectName}::${enumType?.module}::decode(&mut bsc_type)`\n : `sui::bcs::peel_${getBcsType(fieldType)}(&mut bsc_type)`\n };`;\n })\n .join('\\n ')}\n (${valueNames.join(', ')})\n }\n\n public(package) fun set(dapp_hub: &mut DappHub${\n resourceAccountParam || keyParams ? ', ' : ''\n }${resourceAccountParam}${paramSeparator}${keyParams}, ${valueNames\n .map(\n (n) => `${n}: ${fields[n] === 'string' || fields[n] === 'String' ? 'String' : fields[n]}`\n )\n .join(', ')}, ctx: &mut TxContext) {\n ${keyTupleCode}\n let value_tuple = encode(${valueNames.join(', ')});\n ${getDappModuleName(\n projectName\n )}::set_record(dapp_hub, dapp_key::new(), key_tuple, value_tuple, ${resourceAccountArg}, OFFCHAIN, ctx);\n }`\n : ` public(package) fun set(dapp_hub: &mut DappHub${\n resourceAccountParam || keyParams ? ', ' : ''\n }${resourceAccountParam}${paramSeparator}${keyParams}, ${valueNames\n .map(\n (n) => `${n}: ${fields[n] === 'string' || fields[n] === 'String' ? 'String' : fields[n]}`\n )\n .join(', ')}, ctx: &mut TxContext) {\n ${keyTupleCode}\n let value_tuple = encode(${valueNames.join(', ')});\n ${getDappModuleName(\n projectName\n )}::set_record(dapp_hub, dapp_key::new(), key_tuple, value_tuple, ${resourceAccountArg}, OFFCHAIN, ctx);\n }`;\n\n // Generate struct related functions\n const structFunctions = includeStruct\n ? !isOffchain\n ? ` public fun get_struct(dapp_hub: &DappHub${\n resourceAccountParam || keyParams ? ', ' : ''\n }${resourceAccountParam}${paramSeparator}${keyParams}): ${toPascalCase(componentName)} {\n ${keyTupleCode}\n let value_tuple = ${getDappModuleName(\n projectName\n )}::get_record<DappKey>(dapp_hub, ${resourceAccountArg}, key_tuple);\n decode(value_tuple)\n }\n\n public(package) fun set_struct(dapp_hub: &mut DappHub${\n resourceAccountParam || keyParams ? ', ' : ''\n }${resourceAccountParam}${paramSeparator}${keyParams}, ${componentName}: ${toPascalCase(\n componentName\n )}, ctx: &mut TxContext) {\n ${keyTupleCode}\n let value_tuple = encode_struct(${componentName});\n ${getDappModuleName(\n projectName\n )}::set_record(dapp_hub, dapp_key::new(), key_tuple, value_tuple, ${resourceAccountArg}, OFFCHAIN, ctx);\n }`\n : ` public(package) fun set_struct(dapp_hub: &mut DappHub${\n resourceAccountParam || keyParams ? ', ' : ''\n }${resourceAccountParam}${paramSeparator}${keyParams}, ${componentName}: ${toPascalCase(\n componentName\n )}, ctx: &mut TxContext) {\n ${keyTupleCode}\n let value_tuple = encode_struct(${componentName});\n ${getDappModuleName(\n projectName\n )}::set_record(dapp_hub, dapp_key::new(), key_tuple, value_tuple, ${resourceAccountArg}, OFFCHAIN, ctx);\n }`\n : '';\n\n // Generate encode and decode functions\n const encodeDecodeFunctions = isSingleValue\n ? ` public fun encode(value: ${\n Object.values(valueFields)[0] === 'string' || Object.values(valueFields)[0] === 'String'\n ? 'String'\n : Object.values(valueFields)[0]\n }): vector<vector<u8>> {\n let mut value_tuple = vector::empty();\n value_tuple.push_back(${\n Object.values(valueFields)[0] === 'string' || Object.values(valueFields)[0] === 'String'\n ? `to_bytes(&into_bytes(value))`\n : Object.values(valueFields)[0] === 'vector<String>'\n ? `to_bytes(&value)`\n : !isBasicType(Object.values(valueFields)[0] as string)\n ? `${projectName}::${\n enumTypes.find((e) => e.type === Object.values(valueFields)[0])?.module\n }::encode(value)`\n : `to_bytes(&value)`\n });\n value_tuple\n }`\n : includeStruct\n ? !isOffchain\n ? ` public fun encode(${valueNames\n .map(\n (n) =>\n `${n}: ${fields[n] === 'string' || fields[n] === 'String' ? 'String' : fields[n]}`\n )\n .join(', ')}): vector<vector<u8>> {\n let mut value_tuple = vector::empty();\n ${valueNames\n .map((n) => {\n const fieldType = fields[n];\n const isEnum = !isBasicType(fieldType as string);\n const enumType = isEnum ? enumTypes.find((e) => e.type === fieldType) : null;\n return `value_tuple.push_back(${\n fieldType === 'string' || fieldType === 'String'\n ? `to_bytes(&into_bytes(${n}))`\n : fieldType === 'vector<String>'\n ? `to_bytes(&${n})`\n : isEnum\n ? `${projectName}::${enumType?.module}::encode(${n})`\n : `to_bytes(&${n})`\n });`;\n })\n .join('\\n ')}\n value_tuple\n }\n\n public fun encode_struct(${componentName}: ${toPascalCase(componentName)}): vector<vector<u8>> {\n encode(${valueNames.map((n) => `${componentName}.${n}`).join(', ')})\n }\n\n public fun decode(data: vector<u8>): ${toPascalCase(componentName)} {\n let mut bsc_type = sui::bcs::new(data);\n ${valueNames\n .map((n) => {\n const fieldType = fields[n];\n const isEnum = !isBasicType(fieldType as string);\n const enumType = isEnum ? enumTypes.find((e) => e.type === fieldType) : null;\n return `let ${n} = ${\n fieldType === 'string' || fieldType === 'String'\n ? `string(sui::bcs::peel_vec_u8(&mut bsc_type))`\n : fieldType === 'vector<String>'\n ? `dubhe::bcs::peel_vec_string(&mut bsc_type)`\n : isEnum\n ? `${projectName}::${enumType?.module}::decode(&mut bsc_type)`\n : `sui::bcs::peel_${getBcsType(fieldType)}(&mut bsc_type)`\n };`;\n })\n .join('\\n ')}\n ${toPascalCase(componentName)} {\n ${valueNames.map((n) => `${n},`).join('\\n ')}\n }\n }`\n : ` public fun encode(${valueNames\n .map(\n (n) =>\n `${n}: ${fields[n] === 'string' || fields[n] === 'String' ? 'String' : fields[n]}`\n )\n .join(', ')}): vector<vector<u8>> {\n let mut value_tuple = vector::empty();\n ${valueNames\n .map((n) => {\n const fieldType = fields[n];\n const isEnum = !isBasicType(fieldType as string);\n const enumType = isEnum ? enumTypes.find((e) => e.type === fieldType) : null;\n return `value_tuple.push_back(${\n fieldType === 'string' || fieldType === 'String'\n ? `to_bytes(&into_bytes(${n}))`\n : fieldType === 'vector<String>'\n ? `to_bytes(&${n})`\n : isEnum\n ? `${projectName}::${enumType?.module}::encode(${n})`\n : `to_bytes(&${n})`\n });`;\n })\n .join('\\n ')}\n value_tuple\n }\n\n public fun encode_struct(${componentName}: ${toPascalCase(componentName)}): vector<vector<u8>> {\n encode(${valueNames.map((n) => `${componentName}.${n}`).join(', ')})\n }`\n : '';\n\n // Filter out empty sections and join with proper spacing\n const sections = [\n hasFunctions,\n deleteFunction,\n getterSetters,\n getSetFunctions,\n structFunctions,\n encodeDecodeFunctions\n ].filter((section) => section.trim().length > 0);\n\n return sections.join('\\n\\n');\n}\n\nfunction toPascalCase(str: string): string {\n // Split the underscore-separated string into words\n return str\n .split('_')\n .map((word, _index) => {\n // If the word is a pure number, return it as is\n if (/^\\d+$/.test(word)) {\n return word;\n }\n // Otherwise, capitalize the first letter and lowercase the rest\n return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();\n })\n .join('');\n}\n\nfunction getBcsType(type: string): string {\n if (type.startsWith('vector<')) {\n const innerType = type.slice(7, -1);\n if (innerType === 'vector<u8>') {\n return 'vec_vec_u8';\n }\n if (innerType === 'String') {\n return 'vec_string';\n }\n return `vec_${getBcsType(innerType)}`;\n }\n\n switch (type) {\n case 'u8':\n return 'u8';\n case 'u16':\n return 'u16';\n case 'u32':\n return 'u32';\n case 'u64':\n return 'u64';\n case 'u128':\n return 'u128';\n case 'u256':\n return 'u256';\n case 'bool':\n return 'bool';\n case 'address':\n return 'address';\n case 'String':\n return 'string';\n default:\n return type;\n }\n}\n","import { DubheConfig } from '../../types';\n\nexport const defineConfig = (config: DubheConfig): DubheConfig => {\n return config;\n};\n","import { findUp } from 'find-up';\nimport path from 'path';\nimport esbuild from 'esbuild';\nimport { NotInsideProjectError } from './errors';\nimport { rmSync } from 'fs';\nimport { pathToFileURL } from 'url';\nimport os from 'os';\n\n// In order of preference files are checked\nconst configFiles = ['dubhe.config.js', 'dubhe.config.mjs', 'dubhe.config.ts', 'dubhe.config.mts'];\nconst TEMP_CONFIG = 'dubhe.config.example.mjs';\n\nexport async function loadConfig(configPath?: string): Promise<unknown> {\n configPath = await resolveConfigPath(configPath);\n try {\n await esbuild.build({\n entryPoints: [configPath],\n format: 'esm',\n outfile: TEMP_CONFIG,\n // https://esbuild.github.io/getting-started/#bundling-for-node\n platform: 'node',\n // bundle local imports (otherwise it may error, js can't import ts)\n bundle: true,\n // avoid bundling external imports (it's unnecessary and esbuild can't handle all node features)\n packages: 'external'\n });\n configPath = await resolveConfigPath(TEMP_CONFIG, true);\n // Node.js caches dynamic imports, so without appending a cache breaking\n // param like `?update={Date.now()}` this import always returns the same config\n // if called multiple times in a single process, like the `dev-contracts` cli\n return (await import(configPath + `?update=${Date.now()}`)).dubheConfig;\n } finally {\n rmSync(TEMP_CONFIG, { force: true });\n }\n}\n\nexport async function resolveConfigPath(configPath: string | undefined, toFileURL?: boolean) {\n if (configPath === undefined) {\n configPath = await getUserConfigPath();\n } else {\n if (!path.isAbsolute(configPath)) {\n configPath = path.join(process.cwd(), configPath);\n configPath = path.normalize(configPath);\n }\n }\n\n // Add `file:///` for Windows support\n // (see https://github.com/nodejs/node/issues/31710)\n return toFileURL && os.platform() === 'win32' ? pathToFileURL(configPath).href : configPath;\n}\n\nasync function getUserConfigPath() {\n const tsConfigPath = await findUp(configFiles);\n if (tsConfigPath === undefined) {\n throw new NotInsideProjectError();\n }\n return tsConfigPath;\n}\n","export class NotInsideProjectError extends Error {\n name = 'NotInsideProjectError';\n message = 'You are not inside a Dubhe project';\n}\n","export const parseData = (data: any) => {\n if (typeof data !== 'object' || data === null) {\n return data;\n }\n const parsedData: any = {};\n for (const key in data) {\n if (data.hasOwnProperty(key)) {\n // @ts-ignore\n const value = data[key];\n // console.log(\"===========\", value)\n if (typeof value === 'object' && value !== null) {\n if (Array.isArray(value)) {\n parsedData[key] = handleArray(value);\n } else if (value.hasOwnProperty('variant')) {\n parsedData[key] = { [value.variant]: {} };\n } else if (value.hasOwnProperty('fields')) {\n parsedData[key] = parseData(value.fields);\n } else {\n parsedData[key] = parseData(value);\n }\n } else {\n parsedData[key] = value;\n }\n }\n }\n return parsedData;\n};\n\nconst handleArray = (data: any[]): any[] => {\n let returnData: any[] = [];\n data.forEach((item) => {\n if (typeof item === 'object' && item !== null) {\n if (Array.isArray(item)) {\n returnData.push(handleArray(item));\n } else if (item.hasOwnProperty('variant')) {\n returnData.push({ [item.variant]: {} });\n } else if (item.hasOwnProperty('fields')) {\n returnData.push(parseData(item.fields));\n } else {\n returnData.push(parseData(item));\n }\n } else {\n returnData.push(item);\n }\n });\n return returnData;\n};\n","export enum SubscriptionKind {\n Event = 'event',\n Schema = 'schema'\n}\n\nexport type SubscribableType =\n | { kind: SubscriptionKind.Event; name?: string; sender?: string }\n | { kind: SubscriptionKind.Schema; name?: string };\n"],"mappings":"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","names":["prettier","prettierPluginMove","formatMove","content","prettierConfigPath","config","error","message","formatTypescript","fs","path","createDebug","debug","error","debug","error","formatAndWriteMove","output","fullOutputPath","logPrefix","formattedOutput","schemaPrefix","initPrefix","code","deployHookPrefix","fs","path","debug","formatAndWriteTypescript","formatTypescript","posixPath","path","existsSync","fs","deleteFolderRecursive","path","file","curPath","package_default","generateToml","config","srcPrefix","code","package_default","formatAndWriteMove","existsSync","generateDeployHook","config","path","existsSync","code","formatAndWriteMove","generateMigrate","srcPrefix","generateDappKey","config","path","code","formatAndWriteMove","existsSync","fs","generateSystemsAndTests","config","srcPrefix","generateSchemaError","projectName","errors","path","code","name","message","formatAndWriteMove","generateInitTest","config","path","init_test_code","formatAndWriteMove","generateGenesis","config","path","genesis_code","formatAndWriteMove","toSnakeCase","str","letter","generateEnums","config","path","enumName","values","sortedValues","a","b","code","generateEnumCode","formatAndWriteMove","projectName","enumValues","v","i","getDappModuleName","projectName","generateResources","config","path","componentName","resource","code","generateSimpleComponentCode","formatAndWriteMove","generateComponentCode","valueType","type","isEnum","isBasicType","enumModule","toSnakeCase","readFunctions","getBcsType","str","letter","fields","keys","offchain","global","isGlobal","isAllKeys","name","valueFields","valueFieldNames","isSingleValue","enumTypes","_","item","index","self","t","allEnumTypes","tableFunctions","generateTableFunctions","e","structFields","constructorParams","constructorAssignments","getters","toPascalCase","setters","includeStruct","acc","valueNames","isOffchain","keyParams","k","keyTupleCode","resourceAccountParam","resourceAccountArg","paramSeparator","hasFunctions","deleteFunction","getterSetters","fieldType","enumType","getSetFunctions","n","structFunctions","encodeDecodeFunctions","section","word","_index","innerType","path","schemaGen","rootDir","config","network","projectDir","existsSync","deleteFolderRecursive","generateToml","genesisPath","generateGenesis","initTestPath","generateInitTest","dappKeyPath","generateDappKey","deployHookPath","generateDeployHook","resourcesPath","generateResources","enumsPath","generateEnums","generateSchemaError","generateSystemsAndTests","generateMigrate","defineConfig","config","findUp","path","esbuild","NotInsideProjectError","rmSync","pathToFileURL","os","configFiles","TEMP_CONFIG","loadConfig","configPath","resolveConfigPath","esbuild","toFileURL","getUserConfigPath","path","tsConfigPath","findUp","NotInsideProjectError","parseData","data","parsedData","key","value","handleArray","returnData","item","SubscriptionKind"]}
1
+ {"version":3,"sources":["../src/codegen/utils/format.ts","../src/codegen/utils/formatAndWrite.ts","../src/debug.ts","../src/codegen/debug.ts","../src/codegen/utils/posixPath.ts","../src/codegen/utils/renderMove/schemaGen.ts","../src/codegen/utils/renderMove/common.ts","../package.json","../src/codegen/utils/renderMove/generateToml.ts","../src/codegen/utils/renderMove/generateScript.ts","../src/codegen/utils/renderMove/generateDappKey.ts","../src/codegen/utils/renderMove/generateSystem.ts","../src/codegen/utils/renderMove/generateError.ts","../src/codegen/utils/renderMove/generateInitTest.ts","../src/codegen/utils/renderMove/generateGenesis.ts","../src/codegen/utils/renderMove/generateEnums.ts","../src/codegen/utils/renderMove/generateResources.ts","../src/codegen/utils/renderMove/dapp.ts","../src/codegen/utils/config.ts","../src/codegen/utils/errors.ts","../src/parseData/parser/index.ts","../src/primitives/index.ts"],"sourcesContent":["import prettier from 'prettier';\nimport prettierPluginMove from 'prettier-plugin-move-js';\n\nexport async function formatMove(content: string, prettierConfigPath?: string): Promise<string> {\n let config;\n if (prettierConfigPath) {\n config = await prettier.resolveConfig(prettierConfigPath);\n }\n try {\n return prettier.format(content, {\n plugins: [prettierPluginMove],\n parser: 'move-parse',\n printWidth: 120,\n semi: true,\n tabWidth: 2,\n useTabs: false,\n bracketSpacing: true,\n ...config\n });\n } catch (error) {\n let message;\n if (error instanceof Error) {\n message = error.message;\n } else {\n message = error;\n }\n console.log(`Error during output formatting: ${message}`);\n return content;\n }\n}\n\nexport async function formatTypescript(content: string): Promise<string> {\n return prettier.format(content, {\n parser: 'typescript'\n });\n}\n","import fs from 'node:fs/promises';\nimport path from 'node:path';\nimport { formatTypescript } from './format';\nimport { debug } from '../debug';\n\nexport async function formatAndWriteMove(\n output: string,\n fullOutputPath: string,\n logPrefix?: string\n): Promise<void> {\n const formattedOutput = output;\n let schemaPrefix = ` // Copyright (c) Obelisk Labs, Inc.\n // SPDX-License-Identifier: Apache-2.0\n #[allow(unused_use)]\n \n /* Autogenerated file. Do not edit manually. */\n \n `;\n\n let initPrefix = `#[test_only]`;\n\n let code = schemaPrefix + formattedOutput;\n\n let deployHookPrefix = `#[allow(lint(share_owned))]`;\n\n if (\n fullOutputPath.includes('.toml') ||\n fullOutputPath.includes('system') ||\n fullOutputPath.includes('migrate')\n ) {\n code = formattedOutput;\n } else if (fullOutputPath.includes('init')) {\n code = initPrefix + formattedOutput;\n } else if (fullOutputPath.includes('genesis')) {\n code = deployHookPrefix + formattedOutput;\n }\n\n await fs.mkdir(path.dirname(fullOutputPath), { recursive: true });\n await fs.writeFile(fullOutputPath, code);\n debug(`${logPrefix}: ${fullOutputPath}`);\n}\n\n/**\n * Formats typescript code using prettier and write it to a file\n * @param output typescript code\n * @param fullOutputPath full path to the output file\n * @param logPrefix prefix for debug logs\n */\nexport async function formatAndWriteTypescript(\n output: string,\n fullOutputPath: string,\n logPrefix: string\n): Promise<void> {\n const formattedOutput = await formatTypescript(output);\n\n await fs.mkdir(path.dirname(fullOutputPath), { recursive: true });\n\n await fs.writeFile(fullOutputPath, formattedOutput);\n debug(`${logPrefix}: ${fullOutputPath}`);\n}\n","import createDebug from 'debug';\n\nexport const debug = createDebug('dubhe:common');\nexport const error = createDebug('dubhe:common');\n\n// Pipe debug output to stdout instead of stderr\ndebug.log = console.debug.bind(console);\n\n// Pipe error output to stderr\nerror.log = console.error.bind(console);\n","import { debug as parentDebug } from '../debug';\n\nexport const debug = parentDebug.extend('codegen');\nexport const error = parentDebug.extend('codegen');\n\n// Pipe debug output to stdout instead of stderr\ndebug.log = console.debug.bind(console);\n\n// Pipe error output to stderr\nerror.log = console.error.bind(console);\n","/**\n * Explicitly normalize a given path to a posix path (using `/` as separator).\n * This should be used for generating Solidity files that will be consumed by solc,\n * because solc expects `/` as path separator, but path.join produces `\\` if the user is on windows.\n */\nexport function posixPath(path: string): string {\n return path.replace(/\\\\/g, '/');\n}\n","import { DubheConfig } from '../../types';\nimport { existsSync } from 'fs';\n// import { rmdirSync } from 'fs'; // Unused\nimport { deleteFolderRecursive } from './common';\nimport { generateToml } from './generateToml';\n// import { generateSchemaData, generateSchemaStructure } from './generateSchema';\nimport { generateDeployHook, generateMigrate } from './generateScript';\nimport { generateDappKey } from './generateDappKey';\n// import { generateSchemaEvent } from // Unused './generateEvent';\nimport { generateSystemsAndTests } from './generateSystem';\n// import { generateSchemaHub } from // Unused './generateSchemaHub';\nimport { generateSchemaError } from './generateError';\n// import { generateDefaultSchema } from // Unused './generateDefaultSchema';\nimport { generateInitTest } from './generateInitTest';\nimport { generateGenesis } from './generateGenesis';\nimport { generateEnums } from './generateEnums';\nimport { generateResources } from './generateResources';\nimport path from 'node:path';\n\nexport async function schemaGen(\n rootDir: string,\n config: DubheConfig,\n network?: 'mainnet' | 'testnet' | 'devnet' | 'localnet'\n) {\n console.log('\\nšŸš€ Starting Schema Generation Process...');\n console.log('šŸ“‹ Project Configuration:');\n console.log(` └─ Name: ${config.name}`);\n console.log(` └─ Description: ${config.description || 'No description provided'}`);\n console.log(` └─ Network: ${network || 'testnet'}`);\n\n console.log(rootDir);\n const projectDir = path.join(rootDir, 'src', config.name);\n\n if (existsSync(`${projectDir}`)) {\n deleteFolderRecursive(`${projectDir}/sources/codegen`);\n }\n\n if (!existsSync(`${projectDir}/Move.toml`)) {\n await generateToml(config, rootDir);\n }\n\n const genesisPath = path.join(projectDir, 'sources', 'codegen', 'genesis.move');\n if (!existsSync(genesisPath)) {\n await generateGenesis(config, genesisPath);\n }\n\n const initTestPath = path.join(projectDir, 'sources', 'codegen', 'init_test.move');\n if (!existsSync(initTestPath)) {\n await generateInitTest(config, initTestPath);\n }\n\n const dappKeyPath = path.join(projectDir, 'sources', 'codegen', 'dapp_key.move');\n if (!existsSync(dappKeyPath)) {\n await generateDappKey(config, dappKeyPath);\n }\n\n const deployHookPath = path.join(projectDir, 'sources', 'scripts', 'deploy_hook.move');\n if (!existsSync(deployHookPath)) {\n await generateDeployHook(config, deployHookPath);\n }\n\n const resourcesPath = path.join(projectDir, 'sources', 'codegen', 'resources');\n if (!existsSync(resourcesPath)) {\n await generateResources(config, resourcesPath);\n } else {\n await generateResources(config, resourcesPath);\n }\n\n const enumsPath = path.join(projectDir, 'sources', 'codegen', 'enums');\n if (!existsSync(enumsPath)) {\n await generateEnums(config, enumsPath);\n }\n\n if (config.errors) {\n await generateSchemaError(config.name, config.errors, rootDir);\n }\n\n // await generateDefaultSchema(config, rootDir);\n // await generateInit(config, rootDir);\n await generateSystemsAndTests(config, rootDir);\n await generateMigrate(config, rootDir);\n console.log('\\nāœ… Schema Generation Process Complete!\\n');\n}\n","// import { MoveType } from '../../types'; // Unused\nimport fs from 'fs';\n\nexport function deleteFolderRecursive(path: string) {\n if (fs.existsSync(path)) {\n fs.readdirSync(path).forEach((file) => {\n const curPath = `${path}/${file}`;\n if (fs.lstatSync(curPath).isDirectory()) {\n deleteFolderRecursive(curPath);\n } else {\n fs.unlinkSync(curPath);\n }\n });\n fs.rmdirSync(path);\n }\n}\n\nexport function capitalizeFirstLetter(input: string): string {\n return input.charAt(0).toUpperCase() + input.slice(1);\n}\n\n/**\n *\n * @param values\n * @param prefixArgs\n * @return [ name, age, birth_time ]\n */\nexport function getStructAttrs(values: Record<string, string> | string): string {\n return Object.entries(values)\n .map(([key, _]) => `${key}`)\n .join(',');\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction isAddress(str: string): boolean {\n const regex = /^0x[a-fA-F0-9]+$/;\n return regex.test(str);\n}\n\n/**\n *\n * @param values\n * @return ( bool , u64 , u64)\n */\n// export function getStructTypes(values: SchemaType): string {\nexport function getStructTypes(values: Record<string, string>): string {\n return `(${Object.entries(values).map(([_, type]) => `${type}`)})`;\n}\n\n/**\n *\n * @param values\n * @return Attributes and types of the struct. [ name: string, age: u64 ]\n */\nexport function getStructAttrsWithType(values: Record<string, string>): string[] {\n return Object.entries(values).map(([key, type]) => `${key}: ${type}`);\n}\n\n/**\n * @param values\n * @return [ data.name, data.age ]\n */\nexport function getStructAttrsQuery(values: Record<string, string>): string[] {\n return Object.entries(values).map(([key, _]) => `self.${key}`);\n}\n\nexport function containsString(obj: Record<string, any>, searchString: string): boolean {\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n const value = obj[key];\n if (\n (typeof value === 'string' && value === searchString) ||\n (typeof value === 'string' && value.includes(searchString) && value.includes('>'))\n ) {\n return true;\n }\n }\n }\n return false;\n}\n","{\n \"name\": \"@0xobelisk/sui-common\",\n \"version\": \"1.2.0-pre.113\",\n \"description\": \"Common low level logic shared between packages\",\n \"keywords\": [\n \"sui\",\n \"obelisk labs\",\n \"move\",\n \"blockchain\"\n ],\n \"homepage\": \"https://github.com/0xobelisk/dubhe/tree/main/packages/sui-common#readme\",\n \"bugs\": \"https://github.com/0xobelisk/dubhe/issues\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/0xobelisk/dubhe.git\"\n },\n \"license\": \"Apache-2.0\",\n \"author\": \"team@obelisk.build\",\n \"type\": \"module\",\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"default\": \"./dist/index.js\"\n }\n },\n \"types\": \"./dist/index.d.ts\",\n \"typesVersions\": {\n \"*\": {\n \"index\": [\n \"./src/index.ts\"\n ]\n }\n },\n \"scripts\": {\n \"build\": \"pnpm run type-check && pnpm run build:js\",\n \"build:js\": \"tsup && chmod +x ./dist/index.js\",\n \"clean\": \"pnpm run clean:js\",\n \"clean:js\": \"rimraf dist\",\n \"dev\": \"tsup --watch\",\n \"format\": \"prettier --write .\",\n \"format:check\": \"prettier --check .\",\n \"lint\": \"eslint . --ext .ts\",\n \"test\": \"vitest\",\n \"type-check\": \"tsc --noEmit\",\n \"validate\": \"pnpm format:check && pnpm type-check\"\n },\n \"dependencies\": {\n \"chalk\": \"^5.0.1\",\n \"debug\": \"^4.3.4\",\n \"dotenv\": \"^16.0.3\",\n \"ejs\": \"^3.1.8\",\n \"esbuild\": \"^0.17.15\",\n \"execa\": \"^7.0.0\",\n \"find-up\": \"^6.3.0\",\n \"glob\": \"^10.5.0\",\n \"path\": \"^0.12.7\",\n \"prettier\": \"^3.1.1\",\n \"prettier-plugin-move-js\": \"^0.0.5\",\n \"typescript\": \"^5.8.3\",\n \"yargs\": \"^17.7.1\",\n \"zod\": \"^3.22.3\",\n \"zod-validation-error\": \"^1.3.0\"\n },\n \"devDependencies\": {\n \"@types/debug\": \"^4.1.12\",\n \"@types/ejs\": \"^3.1.1\",\n \"@types/glob\": \"^7.2.0\",\n \"@types/node\": \"^22.16.0\",\n \"@types/yargs\": \"^17.0.10\",\n \"eslint\": \"^9.0.0\",\n \"eslint-config-prettier\": \"^9.1.0\",\n \"prettier\": \"3.3.3\",\n \"tsup\": \"^6.7.0\",\n \"tsx\": \"^3.12.6\",\n \"vitest\": \"^2.1.3\"\n },\n \"engines\": {\n \"node\": \">=22.0.0\"\n },\n \"publishConfig\": {\n \"access\": \"public\"\n }\n}\n","import { DubheConfig } from '../../types';\nimport { formatAndWriteMove } from '../formatAndWrite';\nimport packageJson from '../../../../package.json';\n\nexport async function generateToml(config: DubheConfig, srcPrefix: string) {\n console.log('\\nšŸ“„ Starting Move.toml Generation...');\n console.log(` └─ Output path: ${srcPrefix}/src/${config.name}/Move.toml`);\n\n let code = `[package]\nname = \"${config.name}\"\nversion = \"1.0.0\"\nedition = \"2024\"\n\n[dependencies]\nSui = { git = \"https://github.com/MystenLabs/sui.git\", subdir = \"crates/sui-framework/packages/sui-framework\", rev = \"mainnet-v1.46.3\" }\nDubhe = { git = \"https://github.com/0xobelisk/dubhe.git\", subdir = \"framework/src/dubhe\", rev = \"v${packageJson.version}\" }\n\n[addresses]\nsui = \"0x2\"\n${config.name} = \"0x0\"\n`;\n await formatAndWriteMove(code, `${srcPrefix}/src/${config.name}/Move.toml`, 'formatAndWriteMove');\n console.log('āœ… Move.toml Generation Complete\\n');\n}\n","import { DubheConfig } from '../../types';\nimport { formatAndWriteMove } from '../formatAndWrite';\nimport { existsSync } from 'fs';\n// import { capitalizeAndRemoveUnderscores } from // Unused './generateSchema';\n\n// import { readFileSync } from 'fs'; // Unused\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction capitalizeFirstLetter(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\nexport async function generateDeployHook(config: DubheConfig, path: string) {\n if (!existsSync(path)) {\n const code = `module ${config.name}::deploy_hook {\n\t\t\t use dubhe::dapp_service::DappHub;\n\n public(package) fun run(_dapp_hub: &mut DappHub, _ctx: &mut TxContext) {\n\n }\n}`;\n await formatAndWriteMove(code, path, 'formatAndWriteMove');\n }\n}\n\nexport async function generateMigrate(config: DubheConfig, srcPrefix: string) {\n if (!existsSync(`${srcPrefix}/src/${config.name}/sources/scripts/migrate.move`)) {\n let code = `module ${config.name}::migrate {\n const ON_CHAIN_VERSION: u32 = 1;\n\n public fun on_chain_version(): u32 {\n ON_CHAIN_VERSION\n }\n}\n`;\n await formatAndWriteMove(\n code,\n `${srcPrefix}/src/${config.name}/sources/scripts/migrate.move`,\n 'formatAndWriteMove'\n );\n }\n}\n","import { DubheConfig } from '../../types';\nimport { formatAndWriteMove } from '../formatAndWrite';\n\nexport async function generateDappKey(config: DubheConfig, path: string) {\n let code = `module ${config.name}::dapp_key {\nuse std::type_name;\n use sui::address;\n use std::ascii::String;\n\n /// Authorization token for the app.\n\n public struct DappKey has copy, drop {}\n\n public(package) fun new(): DappKey {\n DappKey { }\n }\n\n public fun to_string(): String {\n type_name::get<DappKey>().into_string()\n }\n\n public fun package_id(): address {\n let package_id_str = type_name::get<DappKey>().get_address();\n address::from_ascii_bytes(package_id_str.as_bytes())\n }\n\n public fun eq<DappKey1: copy + drop, DappKey2: copy + drop>(_: &DappKey1, _: &DappKey2): bool {\n type_name::get<DappKey1>() == type_name::get<DappKey2>()\n }\n}\n`;\n await formatAndWriteMove(code, path, 'formatAndWriteMove');\n}\n","import { DubheConfig } from '../../types';\n// import { formatAndWriteMove } from // Unused '../formatAndWrite';\nimport { existsSync } from 'fs';\nimport fs from 'node:fs/promises';\n// import path from // Unused 'node:path';\n\nexport async function generateSystemsAndTests(config: DubheConfig, srcPrefix: string) {\n if (!existsSync(`${srcPrefix}/src/${config.name}/sources/systems`)) {\n await fs.mkdir(`${srcPrefix}/src/${config.name}/sources/systems`, { recursive: true });\n }\n if (!existsSync(`${srcPrefix}/src/${config.name}/sources/tests`)) {\n await fs.mkdir(`${srcPrefix}/src/${config.name}/sources/tests`, { recursive: true });\n }\n}\n","import { ErrorData } from '../../types';\nimport { formatAndWriteMove } from '../formatAndWrite';\n\nexport async function generateSchemaError(projectName: string, errors: ErrorData, path: string) {\n console.log('\\nšŸ“¦ Starting Schema Error Generation...');\n\n let code = `module ${projectName}::errors {\n\t\t${Object.entries(errors)\n .map(([name, message]) => {\n console.log(` └─ ${name}: ${message}`);\n return `#[error]\n\t\t\t\tconst ${name.toUpperCase()}: vector<u8> = b\"${message}\";\n\t\t\t\tpublic fun ${name}_error(condition: bool) { assert!(condition, ${name.toUpperCase()}) }\n\t\t`;\n })\n .join('\\n')}\n }`;\n\n await formatAndWriteMove(\n code,\n `${path}/src/${projectName}/sources/codegen/errors.move`,\n 'formatAndWriteMove'\n );\n}\n","import { DubheConfig } from '../../types';\nimport { formatAndWriteMove } from '../formatAndWrite';\n\nexport async function generateInitTest(config: DubheConfig, path: string) {\n let init_test_code = `module ${config.name}::init_test {\n use sui::clock;\n use sui::test_scenario;\n use sui::test_scenario::Scenario;\n use dubhe::dapp_service::DappHub;\n use dubhe::dapp_system;\n\n public fun deploy_dapp_for_testing(scenario: &mut Scenario): DappHub {\n let ctx = test_scenario::ctx(scenario);\n let clock = clock::create_for_testing(ctx);\n let mut dapp_hub = dapp_system::create_dapp_hub_for_testing(ctx);\n ${config.name != 'dubhe' ? `dubhe::genesis::run(&mut dapp_hub, &clock, ctx);` : ''}\n ${config.name}::genesis::run(&mut dapp_hub, &clock, ctx);\n clock::destroy_for_testing(clock);\n test_scenario::next_tx(scenario, ctx.sender());\n dapp_hub\n }\n}\n`;\n await formatAndWriteMove(init_test_code, path, 'formatAndWriteMove');\n}\n","import { DubheConfig } from '../../types';\nimport { formatAndWriteMove } from '../formatAndWrite';\n// import { existsSync } from 'fs'; // Unused\n// import { capitalizeAndRemoveUnderscores } from './generateSchema'; // Unused\n// import path from 'node:path'; // Unused\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction capitalizeFirstLetter(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\nexport async function generateGenesis(config: DubheConfig, path: string) {\n let genesis_code = `module ${config.name}::genesis {\n use sui::clock::Clock;\n use dubhe::dapp_service::DappHub;\n use ${config.name}::dapp_key;\n use dubhe::dapp_system;\n use std::ascii::string;\n\n public entry fun run(dapp_hub: &mut DappHub, clock: &Clock, ctx: &mut TxContext) {\n // Create Dapp\n let dapp_key = dapp_key::new();\n dapp_system::create_dapp(dapp_hub, dapp_key, string(b\"${config.name}\"), string(b\"${config.description}\"), clock, ctx);\n\n // Logic that needs to be automated once the contract is deployed\n ${config.name}::deploy_hook::run(dapp_hub, ctx);\n }\n}\n`;\n await formatAndWriteMove(genesis_code, path, 'formatAndWriteMove');\n}\n","import { DubheConfig } from '../../types';\nimport { formatAndWriteMove } from '../formatAndWrite';\n\nfunction toSnakeCase(str: string): string {\n return str.replace(/[A-Z]/g, (letter) => `_${letter.toLowerCase()}`).replace(/^_/, '');\n}\n\nexport async function generateEnums(config: DubheConfig, path: string) {\n console.log('\\nšŸ“¦ Starting Enums Generation...');\n\n if (!config.enums) {\n return;\n }\n\n for (const [enumName, values] of Object.entries(config.enums)) {\n console.log(` └─ ${enumName}: ${JSON.stringify(values)}`);\n\n // Sort enum values by first letter\n const sortedValues = [...values].sort((a, b) => a.localeCompare(b));\n\n const code = generateEnumCode(config.name, enumName, sortedValues);\n await formatAndWriteMove(code, `${path}/${toSnakeCase(enumName)}.move`, 'formatAndWriteMove');\n }\n}\n\nfunction generateEnumCode(projectName: string, enumName: string, values: string[]): string {\n const enumValues = values.map((v) => v.charAt(0).toUpperCase() + v.slice(1)).join(',');\n\n return `module ${projectName}::${toSnakeCase(enumName)} {\n use sui::bcs::{BCS, to_bytes, peel_enum_tag};\n\n public enum ${enumName} has copy, drop, store {\n ${enumValues}\n }\n\n${values\n .map(\n (v) => ` public fun new_${v.toLowerCase()}(): ${enumName} {\n ${enumName}::${v.charAt(0).toUpperCase() + v.slice(1)}\n }`\n )\n .join('\\n\\n')}\n\n public fun encode(self: ${enumName}): vector<u8> {\n to_bytes(&self)\n }\n\n public fun decode(bytes: &mut BCS): ${enumName} {\n match(peel_enum_tag(bytes)) {\n${values\n .map((v, i) => ` ${i} => ${enumName}::${v.charAt(0).toUpperCase() + v.slice(1)},`)\n .join('\\n')}\n _ => abort,\n }\n }\n}`;\n}\n","import { DubheConfig } from '../../types';\nimport { ComponentType } from '../../types';\nimport { formatAndWriteMove } from '../formatAndWrite';\n\nfunction getDappModuleName(projectName: string): string {\n return projectName === 'dubhe' ? 'dapp_service' : `dapp_system`;\n}\n\nexport async function generateResources(config: DubheConfig, path: string) {\n console.log('\\nšŸ“¦ Starting Resources Generation...');\n\n for (const [componentName, resource] of Object.entries(config.resources)) {\n console.log(` └─ ${componentName}: ${JSON.stringify(resource)}`);\n\n // Handle simple type cases\n if (typeof resource === 'string') {\n const code = generateSimpleComponentCode(config.name, componentName, resource, 'Onchain');\n await formatAndWriteMove(code, `${path}/${componentName}.move`, 'formatAndWriteMove');\n continue;\n }\n\n // Validate that resource has fields defined\n if (!resource.fields || Object.keys(resource.fields).length === 0) {\n throw new Error(\n `Resource '${componentName}' must have fields defined, but found empty object`\n );\n }\n\n // For resources, don't default to any keys - use what's defined or empty array\n if (!resource.keys) {\n resource.keys = [];\n }\n\n const code = generateComponentCode(config.name, componentName, resource);\n await formatAndWriteMove(code, `${path}/${componentName}.move`, 'formatAndWriteMove');\n }\n}\n\nfunction generateSimpleComponentCode(\n projectName: string,\n componentName: string,\n valueType: string,\n type: ComponentType = 'Onchain'\n): string {\n // Check if it's an enum type\n const isEnum = !isBasicType(valueType);\n const enumModule = isEnum ? `${toSnakeCase(valueType)}` : '';\n const isOffchain = type === 'Offchain';\n\n // For offchain resources, only generate set and encode functions\n const readFunctions = !isOffchain\n ? `\n public fun has(dapp_hub: &DappHub, resource_account: String): bool {\n let mut key_tuple = vector::empty();\n key_tuple.push_back(TABLE_NAME);\n ${getDappModuleName(\n projectName\n )}::has_record<DappKey>(dapp_hub, resource_account, key_tuple)\n }\n\n public fun ensure_has(dapp_hub: &DappHub, resource_account: String) {\n let mut key_tuple = vector::empty();\n key_tuple.push_back(TABLE_NAME);\n ${getDappModuleName(\n projectName\n )}::ensure_has_record<DappKey>(dapp_hub, resource_account, key_tuple)\n }\n\n public fun ensure_has_not(dapp_hub: &DappHub, resource_account: String) {\n let mut key_tuple = vector::empty();\n key_tuple.push_back(TABLE_NAME);\n ${getDappModuleName(\n projectName\n )}::ensure_has_not_record<DappKey>(dapp_hub, resource_account, key_tuple)\n }\n\n public(package) fun delete(dapp_hub: &mut DappHub, resource_account: String) {\n let mut key_tuple = vector::empty();\n key_tuple.push_back(TABLE_NAME);\n ${getDappModuleName(\n projectName\n )}::delete_record<DappKey>(dapp_hub, dapp_key::new(), key_tuple, resource_account);\n }\n\n public fun get(dapp_hub: &DappHub, resource_account: String): (${\n valueType === 'string' || valueType === 'String' ? 'String' : valueType\n }) {\n let mut key_tuple = vector::empty();\n key_tuple.push_back(TABLE_NAME);\n let value_tuple = ${getDappModuleName(\n projectName\n )}::get_record<DappKey>(dapp_hub, resource_account, key_tuple);\n let mut bsc_type = sui::bcs::new(value_tuple);\n ${\n valueType === 'string' || valueType === 'String'\n ? `let value = dubhe::bcs::peel_string(&mut bsc_type);`\n : valueType === 'vector<String>'\n ? `let value = dubhe::bcs::peel_vec_string(&mut bsc_type);`\n : isEnum\n ? `let value = ${projectName}::${enumModule}::decode(&mut bsc_type);`\n : `let value = sui::bcs::peel_${getBcsType(valueType)}(&mut bsc_type);`\n }\n (value)\n }\n`\n : '';\n\n return `module ${projectName}::${componentName} { \n use sui::bcs::{to_bytes};\n use std::ascii::{string, String, into_bytes};\n use dubhe::table_id;\n use dubhe::dapp_service::{Self, DappHub};\n use dubhe::dapp_system;\n use ${projectName}::dapp_key;\n use ${projectName}::dapp_key::DappKey;\n${\n isEnum && valueType !== 'string' && valueType !== 'String'\n ? ` use ${projectName}::${enumModule};\n use ${projectName}::${enumModule}::{${valueType}};`\n : ''\n}\n\n const TABLE_NAME: vector<u8> = b\"${componentName}\";\n const OFFCHAIN: bool = ${type === 'Offchain'};\n\n${readFunctions}\n public(package) fun set(dapp_hub: &mut DappHub, resource_account: String, value: ${\n valueType === 'string' || valueType === 'String' ? 'String' : valueType\n }, ctx: &mut TxContext) {\n let mut key_tuple = vector::empty();\n key_tuple.push_back(TABLE_NAME);\n let value_tuple = encode(value);\n ${getDappModuleName(\n projectName\n )}::set_record(dapp_hub, dapp_key::new(), key_tuple, value_tuple, resource_account, OFFCHAIN, ctx);\n }\n\n public fun encode(value: ${\n valueType === 'string' || valueType === 'String' ? 'String' : valueType\n }): vector<vector<u8>> {\n let mut value_tuple = vector::empty();\n value_tuple.push_back(${\n valueType === 'string' || valueType === 'String'\n ? `to_bytes(&into_bytes(value))`\n : valueType === 'vector<String>'\n ? `to_bytes(&value)`\n : isEnum\n ? `${projectName}::${enumModule}::encode(value)`\n : `to_bytes(&value)`\n });\n value_tuple\n }\n}`;\n}\n\nfunction toSnakeCase(str: string): string {\n return str.replace(/[A-Z]/g, (letter) => `_${letter.toLowerCase()}`).replace(/^_/, '');\n}\n\nfunction generateComponentCode(projectName: string, componentName: string, resource: any): string {\n const fields = resource.fields;\n const keys = resource.keys || [];\n const offchain = resource.offchain || false;\n const global = resource.global || false;\n const type: ComponentType = offchain ? 'Offchain' : 'Onchain';\n\n // global controls whether resource_account is hardcoded to package_id()\n // offchain controls whether read functions are suppressed — independent flags\n const isGlobal = global;\n\n // Check if all fields are keys\n const isAllKeys = Object.keys(fields).every((name) => keys.includes(name));\n\n // Generate field type and name lists, excluding fields in keys\n const valueFields = Object.entries(fields).filter(([name]) => !keys.includes(name));\n const valueFieldNames = valueFields.map(([name]) => name);\n\n // If there is only one value field, do not generate struct\n const isSingleValue = valueFieldNames.length === 1;\n\n // Enum types from value fields only (used for encode/decode logic)\n const enumTypes = valueFields\n .filter(([_, type]) => !isBasicType(type as string) && type !== 'string' && type !== 'String')\n .map(([_, type]) => ({\n type: type as string,\n module: `${toSnakeCase(type as string)}`\n }))\n .filter((item, index, self) => self.findIndex((t) => t.type === item.type) === index);\n\n // All enum types (key + value) for import statement generation\n const allEnumTypes = Object.entries(fields)\n .filter(([_, type]) => !isBasicType(type as string) && type !== 'string' && type !== 'String')\n .map(([_, type]) => ({\n type: type as string,\n module: `${toSnakeCase(type as string)}`\n }))\n .filter((item, index, self) => self.findIndex((t) => t.type === item.type) === index);\n\n // Generate table related functions\n const tableFunctions = generateTableFunctions(\n projectName,\n componentName,\n fields,\n keys,\n !isAllKeys && !isSingleValue,\n enumTypes,\n type,\n isGlobal\n );\n\n // If all fields are keys or there is only one value field, do not generate struct related code\n if (isAllKeys || isSingleValue) {\n return `module ${projectName}::${componentName} { \n use sui::bcs::{to_bytes};\n use std::ascii::{string, String, into_bytes};\n use dubhe::table_id;\n use dubhe::dapp_service::{Self, DappHub};\n use dubhe::dapp_system;\n use ${projectName}::dapp_key;\n use ${projectName}::dapp_key::DappKey;\n${\n allEnumTypes.length > 0\n ? allEnumTypes\n .map(\n (e) => ` use ${projectName}::${e.module};\n use ${projectName}::${e.module}::{${e.type}};`\n )\n .join('\\n')\n : ''\n}\n\n const TABLE_NAME: vector<u8> = b\"${componentName}\";\n const OFFCHAIN: bool = ${offchain};\n\n${tableFunctions}\n}`;\n }\n\n // Generate struct fields, excluding fields in keys\n const structFields = valueFieldNames\n .map(\n (name) =>\n ` ${name}: ${\n fields[name] === 'string' || fields[name] === 'String'\n ? 'String'\n : fields[name] === 'vector<String>'\n ? 'vector<String>'\n : fields[name]\n },`\n )\n .join('\\n');\n\n // Generate constructor parameters, only containing non-key fields\n const constructorParams = valueFieldNames\n .map(\n (name) =>\n `${name}: ${\n fields[name] === 'string' || fields[name] === 'String'\n ? 'String'\n : fields[name] === 'vector<String>'\n ? 'vector<String>'\n : fields[name]\n }`\n )\n .join(', ');\n\n // Generate constructor field assignments, only containing non-key fields\n const constructorAssignments = valueFieldNames.map((name) => ` ${name},`).join('\\n');\n\n // Generate getter functions, excluding fields in keys\n const getters = valueFieldNames\n .map(\n (name) => ` public fun ${name}(self: &${toPascalCase(componentName)}): ${\n fields[name] === 'string' || fields[name] === 'String'\n ? 'String'\n : fields[name] === 'vector<String>'\n ? 'vector<String>'\n : fields[name]\n } {\n self.${name}\n }`\n )\n .join('\\n\\n');\n\n // Generate setter functions, excluding fields in keys\n const setters = valueFieldNames\n .map(\n (name) => ` public fun update_${name}(self: &mut ${toPascalCase(\n componentName\n )}, ${name}: ${\n fields[name] === 'string' || fields[name] === 'String'\n ? 'String'\n : fields[name] === 'vector<String>'\n ? 'vector<String>'\n : fields[name]\n }) {\n self.${name} = ${name}\n }`\n )\n .join('\\n\\n');\n\n return `module ${projectName}::${componentName} { \n use sui::bcs::{to_bytes};\n use std::ascii::{string, String, into_bytes};\n use dubhe::table_id;\n use dubhe::dapp_service::{Self, DappHub};\n use dubhe::dapp_system;\n use ${projectName}::dapp_key;\n use ${projectName}::dapp_key::DappKey;\n${\n allEnumTypes.length > 0\n ? allEnumTypes\n .map(\n (e) => ` use ${projectName}::${e.module};\n use ${projectName}::${e.module}::{${e.type}};`\n )\n .join('\\n')\n : ''\n}\n\n const TABLE_NAME: vector<u8> = b\"${componentName}\";\n const OFFCHAIN: bool = ${offchain};\n\n public struct ${toPascalCase(componentName)} has copy, drop, store {\n${structFields}\n }\n\n public fun new(${constructorParams}): ${toPascalCase(componentName)} {\n ${toPascalCase(componentName)} {\n${constructorAssignments}\n }\n }\n\n${getters}\n\n${setters}\n\n${tableFunctions}\n}`;\n}\n\n// Check if it is a basic type\nfunction isBasicType(type: string): boolean {\n return [\n 'address',\n 'bool',\n 'u8',\n 'u16',\n 'u32',\n 'u64',\n 'u128',\n 'u256',\n 'string',\n 'String',\n 'vector<address>',\n 'vector<bool>',\n 'vector<u8>',\n 'vector<u16>',\n 'vector<vector<u8>>',\n 'vector<u32>',\n 'vector<u64>',\n 'vector<u128>',\n 'vector<u256>',\n 'vector<String>'\n ].includes(type);\n}\n\nfunction generateTableFunctions(\n projectName: string,\n componentName: string,\n fields: Record<string, string>,\n keys: string[],\n includeStruct: boolean = true,\n enumTypes: Array<{ type: string; module: string }> = [],\n type: ComponentType = 'Onchain',\n isGlobal: boolean = false\n): string {\n // Separate key fields and non-key fields\n const valueFields = Object.entries(fields)\n .filter(([name]) => !keys.includes(name))\n .reduce((acc, [name, type]) => ({ ...acc, [name]: type }), {});\n\n const valueNames = Object.keys(valueFields);\n\n // Check if all fields are keys\n const isAllKeys = Object.keys(fields).every((name) => keys.includes(name));\n // Check if there is only one value field\n const isSingleValue = valueNames.length === 1;\n // Check if it's offchain\n const isOffchain = type === 'Offchain';\n\n // Generate key parameter list\n const keyParams = keys.length > 0 ? keys.map((k) => `${k}: ${fields[k]}`).join(', ') : '';\n\n // Generate key tuple related code\n const keyTupleCode =\n keys.length > 0\n ? `let mut key_tuple = vector::empty();\n key_tuple.push_back(TABLE_NAME);\n ${keys.map((k) => `key_tuple.push_back(to_bytes(&${k}));`).join('\\n ')}`\n : `let mut key_tuple = vector::empty();\n key_tuple.push_back(TABLE_NAME);`;\n\n // For global resources, use package_id() as resource_account\n const resourceAccountParam = isGlobal ? '' : 'resource_account: String';\n const resourceAccountArg = isGlobal\n ? 'dapp_key::package_id().to_ascii_string()'\n : 'resource_account';\n\n // Add comma after resourceAccountParam only if both exist\n const paramSeparator = resourceAccountParam && keyParams ? ', ' : '';\n\n // Generate has series functions - skip for offchain\n const hasFunctions = !isOffchain\n ? ` public fun has(dapp_hub: &DappHub${\n resourceAccountParam || keyParams ? ', ' : ''\n }${resourceAccountParam}${paramSeparator}${keyParams}): bool {\n ${keyTupleCode}\n ${getDappModuleName(\n projectName\n )}::has_record<DappKey>(dapp_hub, ${resourceAccountArg}, key_tuple)\n }\n\n public fun ensure_has(dapp_hub: &DappHub${\n resourceAccountParam || keyParams ? ', ' : ''\n }${resourceAccountParam}${paramSeparator}${keyParams}) {\n ${keyTupleCode}\n ${getDappModuleName(\n projectName\n )}::ensure_has_record<DappKey>(dapp_hub, ${resourceAccountArg}, key_tuple)\n }\n\n public fun ensure_has_not(dapp_hub: &DappHub${\n resourceAccountParam || keyParams ? ', ' : ''\n }${resourceAccountParam}${paramSeparator}${keyParams}) {\n ${keyTupleCode}\n ${getDappModuleName(\n projectName\n )}::ensure_has_not_record<DappKey>(dapp_hub, ${resourceAccountArg}, key_tuple)\n }\n `\n : '';\n\n // Generate delete function - skip for offchain\n const deleteFunction = !isOffchain\n ? ` public(package) fun delete(dapp_hub: &mut DappHub${\n resourceAccountParam || keyParams ? ', ' : ''\n }${resourceAccountParam}${paramSeparator}${keyParams}) {\n ${keyTupleCode}\n ${getDappModuleName(\n projectName\n )}::delete_record<DappKey>(dapp_hub, dapp_key::new(), key_tuple, ${resourceAccountArg});\n }`\n : '';\n\n // Generate getter and setter functions, only generated when there are multiple value fields\n // For offchain, skip all getter and setter functions\n const getterSetters =\n !isSingleValue && !isOffchain\n ? valueNames\n .map((name) => {\n const index = valueNames.indexOf(name);\n const fieldType = fields[name];\n const isEnum = !isBasicType(fieldType as string);\n const enumType = isEnum ? enumTypes.find((e) => e.type === fieldType) : null;\n\n return ` public fun get_${name}(dapp_hub: &DappHub${\n resourceAccountParam || keyParams ? ', ' : ''\n }${resourceAccountParam}${paramSeparator}${keyParams}): ${\n fieldType === 'string' || fieldType === 'String'\n ? 'String'\n : fieldType === 'vector<String>'\n ? 'vector<String>'\n : fieldType\n } {\n ${keyTupleCode}\n let value = ${getDappModuleName(\n projectName\n )}::get_field<DappKey>(dapp_hub, ${resourceAccountArg}, key_tuple, ${index});\n let mut bsc_type = sui::bcs::new(value);\n ${\n fieldType === 'string' || fieldType === 'String'\n ? `let ${name} = dubhe::bcs::peel_string(&mut bsc_type);`\n : fieldType === 'vector<String>'\n ? `let ${name} = dubhe::bcs::peel_vec_string(&mut bsc_type);`\n : isEnum\n ? `let ${name} = ${projectName}::${enumType?.module}::decode(&mut bsc_type);`\n : `let ${name} = sui::bcs::peel_${getBcsType(fieldType)}(&mut bsc_type);`\n }\n ${name}\n }\n\n public(package) fun set_${name}(dapp_hub: &mut DappHub${\n resourceAccountParam || keyParams ? ', ' : ''\n }${resourceAccountParam}${paramSeparator}${keyParams}, ${name}: ${\n fieldType === 'string' || fieldType === 'String'\n ? 'String'\n : fieldType === 'vector<String>'\n ? 'vector<String>'\n : fieldType\n }, ctx: &mut TxContext) {\n ${keyTupleCode}\n let value = ${\n fieldType === 'string' || fieldType === 'String'\n ? `to_bytes(&into_bytes(${name}))`\n : fieldType === 'vector<String>'\n ? `to_bytes(&${name})`\n : isEnum\n ? `${projectName}::${enumType?.module}::encode(${name})`\n : `to_bytes(&${name})`\n };\n ${getDappModuleName(\n projectName\n )}::set_field(dapp_hub, dapp_key::new(), ${resourceAccountArg}, key_tuple, ${index}, value, ctx);\n }`;\n })\n .join('\\n\\n')\n : '';\n\n // Generate get and set functions\n const getSetFunctions = isAllKeys\n ? ` public(package) fun set(dapp_hub: &mut DappHub${\n resourceAccountParam || keyParams ? ', ' : ''\n }${resourceAccountParam}${paramSeparator}${keyParams}, ctx: &mut TxContext) {\n ${keyTupleCode}\n let value_tuple = vector::empty();\n ${getDappModuleName(\n projectName\n )}::set_record(dapp_hub, dapp_key::new(), key_tuple, value_tuple, ${resourceAccountArg}, OFFCHAIN, ctx);\n }`\n : isSingleValue\n ? !isOffchain\n ? ` public fun get(dapp_hub: &DappHub${\n resourceAccountParam || keyParams ? ', ' : ''\n }${resourceAccountParam}${paramSeparator}${keyParams}): ${\n Object.values(valueFields)[0] === 'string' || Object.values(valueFields)[0] === 'String'\n ? 'String'\n : Object.values(valueFields)[0]\n } {\n ${keyTupleCode}\n let value = ${getDappModuleName(\n projectName\n )}::get_field<DappKey>(dapp_hub, ${resourceAccountArg}, key_tuple, 0);\n let mut bsc_type = sui::bcs::new(value);\n ${\n Object.values(valueFields)[0] === 'string' || Object.values(valueFields)[0] === 'String'\n ? `let value = dubhe::bcs::peel_string(&mut bsc_type);`\n : Object.values(valueFields)[0] === 'vector<String>'\n ? `let value = dubhe::bcs::peel_vec_string(&mut bsc_type);`\n : !isBasicType(Object.values(valueFields)[0] as string)\n ? `let value = ${projectName}::${\n enumTypes.find((e) => e.type === Object.values(valueFields)[0])?.module\n }::decode(&mut bsc_type);`\n : `let value = sui::bcs::peel_${getBcsType(\n Object.values(valueFields)[0] as string\n )}(&mut bsc_type);`\n }\n value\n }\n\n public(package) fun set(dapp_hub: &mut DappHub${\n resourceAccountParam || keyParams ? ', ' : ''\n }${resourceAccountParam}${paramSeparator}${keyParams}, value: ${\n Object.values(valueFields)[0] === 'string' || Object.values(valueFields)[0] === 'String'\n ? 'String'\n : Object.values(valueFields)[0]\n }, ctx: &mut TxContext) {\n ${keyTupleCode}\n let value_tuple = encode(value);\n ${getDappModuleName(\n projectName\n )}::set_record(dapp_hub, dapp_key::new(), key_tuple, value_tuple, ${resourceAccountArg}, OFFCHAIN, ctx);\n }`\n : ` public(package) fun set(dapp_hub: &mut DappHub${\n resourceAccountParam || keyParams ? ', ' : ''\n }${resourceAccountParam}${paramSeparator}${keyParams}, value: ${\n Object.values(valueFields)[0] === 'string' || Object.values(valueFields)[0] === 'String'\n ? 'String'\n : Object.values(valueFields)[0]\n }, ctx: &mut TxContext) {\n ${keyTupleCode}\n let value_tuple = encode(value);\n ${getDappModuleName(\n projectName\n )}::set_record(dapp_hub, dapp_key::new(), key_tuple, value_tuple, ${resourceAccountArg}, OFFCHAIN, ctx);\n }`\n : !isOffchain\n ? ` public fun get(dapp_hub: &DappHub${\n resourceAccountParam || keyParams ? ', ' : ''\n }${resourceAccountParam}${paramSeparator}${keyParams}): (${Object.values(valueFields)\n .map((t) => (t === 'string' || t === 'String' ? 'String' : t))\n .join(', ')}) {\n ${keyTupleCode}\n let value_tuple = ${getDappModuleName(\n projectName\n )}::get_record<DappKey>(dapp_hub, ${resourceAccountArg}, key_tuple);\n let mut bsc_type = sui::bcs::new(value_tuple);\n ${valueNames\n .map((name) => {\n const fieldType = fields[name];\n const isEnum = !isBasicType(fieldType as string);\n const enumType = isEnum ? enumTypes.find((e) => e.type === fieldType) : null;\n return `let ${name} = ${\n fieldType === 'string' || fieldType === 'String'\n ? `dubhe::bcs::peel_string(&mut bsc_type)`\n : fieldType === 'vector<String>'\n ? `dubhe::bcs::peel_vec_string(&mut bsc_type)`\n : isEnum\n ? `${projectName}::${enumType?.module}::decode(&mut bsc_type)`\n : `sui::bcs::peel_${getBcsType(fieldType)}(&mut bsc_type)`\n };`;\n })\n .join('\\n ')}\n (${valueNames.join(', ')})\n }\n\n public(package) fun set(dapp_hub: &mut DappHub${\n resourceAccountParam || keyParams ? ', ' : ''\n }${resourceAccountParam}${paramSeparator}${keyParams}, ${valueNames\n .map(\n (n) => `${n}: ${fields[n] === 'string' || fields[n] === 'String' ? 'String' : fields[n]}`\n )\n .join(', ')}, ctx: &mut TxContext) {\n ${keyTupleCode}\n let value_tuple = encode(${valueNames.join(', ')});\n ${getDappModuleName(\n projectName\n )}::set_record(dapp_hub, dapp_key::new(), key_tuple, value_tuple, ${resourceAccountArg}, OFFCHAIN, ctx);\n }`\n : ` public(package) fun set(dapp_hub: &mut DappHub${\n resourceAccountParam || keyParams ? ', ' : ''\n }${resourceAccountParam}${paramSeparator}${keyParams}, ${valueNames\n .map(\n (n) => `${n}: ${fields[n] === 'string' || fields[n] === 'String' ? 'String' : fields[n]}`\n )\n .join(', ')}, ctx: &mut TxContext) {\n ${keyTupleCode}\n let value_tuple = encode(${valueNames.join(', ')});\n ${getDappModuleName(\n projectName\n )}::set_record(dapp_hub, dapp_key::new(), key_tuple, value_tuple, ${resourceAccountArg}, OFFCHAIN, ctx);\n }`;\n\n // Generate struct related functions\n const structFunctions = includeStruct\n ? !isOffchain\n ? ` public fun get_struct(dapp_hub: &DappHub${\n resourceAccountParam || keyParams ? ', ' : ''\n }${resourceAccountParam}${paramSeparator}${keyParams}): ${toPascalCase(componentName)} {\n ${keyTupleCode}\n let value_tuple = ${getDappModuleName(\n projectName\n )}::get_record<DappKey>(dapp_hub, ${resourceAccountArg}, key_tuple);\n decode(value_tuple)\n }\n\n public(package) fun set_struct(dapp_hub: &mut DappHub${\n resourceAccountParam || keyParams ? ', ' : ''\n }${resourceAccountParam}${paramSeparator}${keyParams}, ${componentName}: ${toPascalCase(\n componentName\n )}, ctx: &mut TxContext) {\n ${keyTupleCode}\n let value_tuple = encode_struct(${componentName});\n ${getDappModuleName(\n projectName\n )}::set_record(dapp_hub, dapp_key::new(), key_tuple, value_tuple, ${resourceAccountArg}, OFFCHAIN, ctx);\n }`\n : ` public(package) fun set_struct(dapp_hub: &mut DappHub${\n resourceAccountParam || keyParams ? ', ' : ''\n }${resourceAccountParam}${paramSeparator}${keyParams}, ${componentName}: ${toPascalCase(\n componentName\n )}, ctx: &mut TxContext) {\n ${keyTupleCode}\n let value_tuple = encode_struct(${componentName});\n ${getDappModuleName(\n projectName\n )}::set_record(dapp_hub, dapp_key::new(), key_tuple, value_tuple, ${resourceAccountArg}, OFFCHAIN, ctx);\n }`\n : '';\n\n // Generate encode and decode functions\n const encodeDecodeFunctions = isSingleValue\n ? ` public fun encode(value: ${\n Object.values(valueFields)[0] === 'string' || Object.values(valueFields)[0] === 'String'\n ? 'String'\n : Object.values(valueFields)[0]\n }): vector<vector<u8>> {\n let mut value_tuple = vector::empty();\n value_tuple.push_back(${\n Object.values(valueFields)[0] === 'string' || Object.values(valueFields)[0] === 'String'\n ? `to_bytes(&into_bytes(value))`\n : Object.values(valueFields)[0] === 'vector<String>'\n ? `to_bytes(&value)`\n : !isBasicType(Object.values(valueFields)[0] as string)\n ? `${projectName}::${\n enumTypes.find((e) => e.type === Object.values(valueFields)[0])?.module\n }::encode(value)`\n : `to_bytes(&value)`\n });\n value_tuple\n }`\n : includeStruct\n ? !isOffchain\n ? ` public fun encode(${valueNames\n .map(\n (n) =>\n `${n}: ${fields[n] === 'string' || fields[n] === 'String' ? 'String' : fields[n]}`\n )\n .join(', ')}): vector<vector<u8>> {\n let mut value_tuple = vector::empty();\n ${valueNames\n .map((n) => {\n const fieldType = fields[n];\n const isEnum = !isBasicType(fieldType as string);\n const enumType = isEnum ? enumTypes.find((e) => e.type === fieldType) : null;\n return `value_tuple.push_back(${\n fieldType === 'string' || fieldType === 'String'\n ? `to_bytes(&into_bytes(${n}))`\n : fieldType === 'vector<String>'\n ? `to_bytes(&${n})`\n : isEnum\n ? `${projectName}::${enumType?.module}::encode(${n})`\n : `to_bytes(&${n})`\n });`;\n })\n .join('\\n ')}\n value_tuple\n }\n\n public fun encode_struct(${componentName}: ${toPascalCase(componentName)}): vector<vector<u8>> {\n encode(${valueNames.map((n) => `${componentName}.${n}`).join(', ')})\n }\n\n public fun decode(data: vector<u8>): ${toPascalCase(componentName)} {\n let mut bsc_type = sui::bcs::new(data);\n ${valueNames\n .map((n) => {\n const fieldType = fields[n];\n const isEnum = !isBasicType(fieldType as string);\n const enumType = isEnum ? enumTypes.find((e) => e.type === fieldType) : null;\n return `let ${n} = ${\n fieldType === 'string' || fieldType === 'String'\n ? `string(sui::bcs::peel_vec_u8(&mut bsc_type))`\n : fieldType === 'vector<String>'\n ? `dubhe::bcs::peel_vec_string(&mut bsc_type)`\n : isEnum\n ? `${projectName}::${enumType?.module}::decode(&mut bsc_type)`\n : `sui::bcs::peel_${getBcsType(fieldType)}(&mut bsc_type)`\n };`;\n })\n .join('\\n ')}\n ${toPascalCase(componentName)} {\n ${valueNames.map((n) => `${n},`).join('\\n ')}\n }\n }`\n : ` public fun encode(${valueNames\n .map(\n (n) =>\n `${n}: ${fields[n] === 'string' || fields[n] === 'String' ? 'String' : fields[n]}`\n )\n .join(', ')}): vector<vector<u8>> {\n let mut value_tuple = vector::empty();\n ${valueNames\n .map((n) => {\n const fieldType = fields[n];\n const isEnum = !isBasicType(fieldType as string);\n const enumType = isEnum ? enumTypes.find((e) => e.type === fieldType) : null;\n return `value_tuple.push_back(${\n fieldType === 'string' || fieldType === 'String'\n ? `to_bytes(&into_bytes(${n}))`\n : fieldType === 'vector<String>'\n ? `to_bytes(&${n})`\n : isEnum\n ? `${projectName}::${enumType?.module}::encode(${n})`\n : `to_bytes(&${n})`\n });`;\n })\n .join('\\n ')}\n value_tuple\n }\n\n public fun encode_struct(${componentName}: ${toPascalCase(componentName)}): vector<vector<u8>> {\n encode(${valueNames.map((n) => `${componentName}.${n}`).join(', ')})\n }`\n : '';\n\n // Filter out empty sections and join with proper spacing\n const sections = [\n hasFunctions,\n deleteFunction,\n getterSetters,\n getSetFunctions,\n structFunctions,\n encodeDecodeFunctions\n ].filter((section) => section.trim().length > 0);\n\n return sections.join('\\n\\n');\n}\n\nfunction toPascalCase(str: string): string {\n // Split the underscore-separated string into words\n return str\n .split('_')\n .map((word, _index) => {\n // If the word is a pure number, return it as is\n if (/^\\d+$/.test(word)) {\n return word;\n }\n // Otherwise, capitalize the first letter and lowercase the rest\n return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();\n })\n .join('');\n}\n\nfunction getBcsType(type: string): string {\n if (type.startsWith('vector<')) {\n const innerType = type.slice(7, -1);\n if (innerType === 'vector<u8>') {\n return 'vec_vec_u8';\n }\n if (innerType === 'String') {\n return 'vec_string';\n }\n return `vec_${getBcsType(innerType)}`;\n }\n\n switch (type) {\n case 'u8':\n return 'u8';\n case 'u16':\n return 'u16';\n case 'u32':\n return 'u32';\n case 'u64':\n return 'u64';\n case 'u128':\n return 'u128';\n case 'u256':\n return 'u256';\n case 'bool':\n return 'bool';\n case 'address':\n return 'address';\n case 'String':\n return 'string';\n default:\n return type;\n }\n}\n","import { DubheConfig } from '../../types';\n\nexport const defineConfig = (config: DubheConfig): DubheConfig => {\n return config;\n};\n","import { findUp } from 'find-up';\nimport path from 'path';\nimport esbuild from 'esbuild';\nimport { NotInsideProjectError } from './errors';\nimport { rmSync } from 'fs';\nimport { pathToFileURL } from 'url';\nimport os from 'os';\n\n// In order of preference files are checked\nconst configFiles = ['dubhe.config.js', 'dubhe.config.mjs', 'dubhe.config.ts', 'dubhe.config.mts'];\nconst TEMP_CONFIG = 'dubhe.config.example.mjs';\n\nexport async function loadConfig(configPath?: string): Promise<unknown> {\n configPath = await resolveConfigPath(configPath);\n try {\n await esbuild.build({\n entryPoints: [configPath],\n format: 'esm',\n outfile: TEMP_CONFIG,\n // https://esbuild.github.io/getting-started/#bundling-for-node\n platform: 'node',\n // bundle local imports (otherwise it may error, js can't import ts)\n bundle: true,\n // avoid bundling external imports (it's unnecessary and esbuild can't handle all node features)\n packages: 'external'\n });\n configPath = await resolveConfigPath(TEMP_CONFIG, true);\n // Node.js caches dynamic imports, so without appending a cache breaking\n // param like `?update={Date.now()}` this import always returns the same config\n // if called multiple times in a single process, like the `dev-contracts` cli\n return (await import(configPath + `?update=${Date.now()}`)).dubheConfig;\n } finally {\n rmSync(TEMP_CONFIG, { force: true });\n }\n}\n\nexport async function resolveConfigPath(configPath: string | undefined, toFileURL?: boolean) {\n if (configPath === undefined) {\n configPath = await getUserConfigPath();\n } else {\n if (!path.isAbsolute(configPath)) {\n configPath = path.join(process.cwd(), configPath);\n configPath = path.normalize(configPath);\n }\n }\n\n // Add `file:///` for Windows support\n // (see https://github.com/nodejs/node/issues/31710)\n return toFileURL && os.platform() === 'win32' ? pathToFileURL(configPath).href : configPath;\n}\n\nasync function getUserConfigPath() {\n const tsConfigPath = await findUp(configFiles);\n if (tsConfigPath === undefined) {\n throw new NotInsideProjectError();\n }\n return tsConfigPath;\n}\n","export class NotInsideProjectError extends Error {\n name = 'NotInsideProjectError';\n message = 'You are not inside a Dubhe project';\n}\n","export const parseData = (data: any) => {\n if (typeof data !== 'object' || data === null) {\n return data;\n }\n const parsedData: any = {};\n for (const key in data) {\n if (data.hasOwnProperty(key)) {\n // @ts-ignore\n const value = data[key];\n // console.log(\"===========\", value)\n if (typeof value === 'object' && value !== null) {\n if (Array.isArray(value)) {\n parsedData[key] = handleArray(value);\n } else if (value.hasOwnProperty('variant')) {\n parsedData[key] = { [value.variant]: {} };\n } else if (value.hasOwnProperty('fields')) {\n parsedData[key] = parseData(value.fields);\n } else {\n parsedData[key] = parseData(value);\n }\n } else {\n parsedData[key] = value;\n }\n }\n }\n return parsedData;\n};\n\nconst handleArray = (data: any[]): any[] => {\n let returnData: any[] = [];\n data.forEach((item) => {\n if (typeof item === 'object' && item !== null) {\n if (Array.isArray(item)) {\n returnData.push(handleArray(item));\n } else if (item.hasOwnProperty('variant')) {\n returnData.push({ [item.variant]: {} });\n } else if (item.hasOwnProperty('fields')) {\n returnData.push(parseData(item.fields));\n } else {\n returnData.push(parseData(item));\n }\n } else {\n returnData.push(item);\n }\n });\n return returnData;\n};\n","export enum SubscriptionKind {\n Event = 'event',\n Schema = 'schema'\n}\n\nexport type SubscribableType =\n | { kind: SubscriptionKind.Event; name?: string; sender?: string }\n | { kind: SubscriptionKind.Schema; name?: string };\n"],"mappings":"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","names":["prettier","prettierPluginMove","formatMove","content","prettierConfigPath","config","error","message","formatTypescript","fs","path","createDebug","debug","error","debug","error","formatAndWriteMove","output","fullOutputPath","logPrefix","formattedOutput","schemaPrefix","initPrefix","code","deployHookPrefix","fs","path","debug","formatAndWriteTypescript","formatTypescript","posixPath","path","existsSync","fs","deleteFolderRecursive","path","file","curPath","package_default","generateToml","config","srcPrefix","code","package_default","formatAndWriteMove","existsSync","generateDeployHook","config","path","existsSync","code","formatAndWriteMove","generateMigrate","srcPrefix","generateDappKey","config","path","code","formatAndWriteMove","existsSync","fs","generateSystemsAndTests","config","srcPrefix","generateSchemaError","projectName","errors","path","code","name","message","formatAndWriteMove","generateInitTest","config","path","init_test_code","formatAndWriteMove","generateGenesis","config","path","genesis_code","formatAndWriteMove","toSnakeCase","str","letter","generateEnums","config","path","enumName","values","sortedValues","a","b","code","generateEnumCode","formatAndWriteMove","projectName","enumValues","v","i","getDappModuleName","projectName","generateResources","config","path","componentName","resource","code","generateSimpleComponentCode","formatAndWriteMove","generateComponentCode","valueType","type","isEnum","isBasicType","enumModule","toSnakeCase","readFunctions","getBcsType","str","letter","fields","keys","offchain","global","isGlobal","isAllKeys","name","valueFields","valueFieldNames","isSingleValue","enumTypes","_","item","index","self","t","allEnumTypes","tableFunctions","generateTableFunctions","e","structFields","constructorParams","constructorAssignments","getters","toPascalCase","setters","includeStruct","acc","valueNames","isOffchain","keyParams","k","keyTupleCode","resourceAccountParam","resourceAccountArg","paramSeparator","hasFunctions","deleteFunction","getterSetters","fieldType","enumType","getSetFunctions","n","structFunctions","encodeDecodeFunctions","section","word","_index","innerType","path","schemaGen","rootDir","config","network","projectDir","existsSync","deleteFolderRecursive","generateToml","genesisPath","generateGenesis","initTestPath","generateInitTest","dappKeyPath","generateDappKey","deployHookPath","generateDeployHook","resourcesPath","generateResources","enumsPath","generateEnums","generateSchemaError","generateSystemsAndTests","generateMigrate","defineConfig","config","findUp","path","esbuild","NotInsideProjectError","rmSync","pathToFileURL","os","configFiles","TEMP_CONFIG","loadConfig","configPath","resolveConfigPath","esbuild","toFileURL","getUserConfigPath","path","tsConfigPath","findUp","NotInsideProjectError","parseData","data","parsedData","key","value","handleArray","returnData","item","SubscriptionKind"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@0xobelisk/sui-common",
3
- "version": "1.2.0-pre.112",
3
+ "version": "1.2.0-pre.113",
4
4
  "description": "Common low level logic shared between packages",
5
5
  "keywords": [
6
6
  "sui",