@latticexyz/world 2.2.18-9fa07c8489f1fbf167d0db01cd9aaa645a29c8e2 → 2.2.18-c44207f620a38653497b78db0b71f5de7bc1a940

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/IBaseWorld.abi-SGUPOG6A.js +2 -0
  2. package/dist/{IBaseWorld.abi-S745M2QE.js.map → IBaseWorld.abi-SGUPOG6A.js.map} +1 -1
  3. package/dist/System.abi-D2D3OAI5.js +2 -0
  4. package/dist/{System.abi-UHI2DJK6.js.map → System.abi-D2D3OAI5.js.map} +1 -1
  5. package/dist/chunk-AJUHOWGE.js +2 -0
  6. package/dist/{chunk-S5LARYWY.js.map → chunk-AJUHOWGE.js.map} +1 -1
  7. package/dist/chunk-CGF3NYHC.js +2 -0
  8. package/dist/chunk-CGF3NYHC.js.map +1 -0
  9. package/dist/chunk-DIHBEOC2.js +2 -0
  10. package/dist/{chunk-TL2M3LZH.js.map → chunk-DIHBEOC2.js.map} +1 -1
  11. package/dist/chunk-FW4363Y4.js +2 -0
  12. package/dist/index.js +1 -20
  13. package/dist/index.js.map +1 -1
  14. package/dist/internal.js +3 -318
  15. package/dist/internal.js.map +1 -1
  16. package/dist/mud.config.js +1 -11
  17. package/dist/node.js +102 -7328
  18. package/dist/node.js.map +1 -1
  19. package/package.json +14 -49
  20. package/dist/IBaseWorld.abi-S745M2QE.js +0 -2015
  21. package/dist/System.abi-UHI2DJK6.js +0 -67
  22. package/dist/chunk-AAKXFFCU.js +0 -158
  23. package/dist/chunk-AAKXFFCU.js.map +0 -1
  24. package/dist/chunk-AAWFTQHP.js +0 -35
  25. package/dist/chunk-S5LARYWY.js +0 -136
  26. package/dist/chunk-TL2M3LZH.js +0 -119
  27. package/dist/dynamicResolution-AmVd5Qtd.d.cts +0 -161
  28. package/dist/index.cjs +0 -241
  29. package/dist/index.cjs.map +0 -1
  30. package/dist/index.d.cts +0 -11
  31. package/dist/internal.cjs +0 -656
  32. package/dist/internal.cjs.map +0 -1
  33. package/dist/internal.d.cts +0 -169
  34. package/dist/mud.config.cjs +0 -357
  35. package/dist/mud.config.cjs.map +0 -1
  36. package/dist/mud.config.d.cts +0 -869
  37. package/dist/node.cjs +0 -9599
  38. package/dist/node.cjs.map +0 -1
  39. package/dist/node.d.cts +0 -131
  40. package/dist/world-DUniZQxy.d.cts +0 -266
  41. /package/dist/{chunk-AAWFTQHP.js.map → chunk-FW4363Y4.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../mud.config.ts","../ts/config/v2/world.ts","../ts/config/v2/defaults.ts","../ts/config/v2/systems.ts","../ts/config/v2/system.ts","../ts/config/v2/namespaces.ts","../ts/config/v2/namespace.ts","../ts/config/v2/codegen.ts","../ts/config/v2/deploy.ts"],"sourcesContent":["import { defineWorld } from \"./ts/config/v2/world\";\n\n/**\n * @internal\n */\nexport const configInput = {\n namespace: \"world\", // NOTE: this namespace is only used for tables, the core system is deployed in the root namespace.\n codegen: {\n worldImportPath: \"./src\",\n worldgenDirectory: \"interfaces\",\n worldInterfaceName: \"IBaseWorld\",\n },\n userTypes: {\n ResourceId: { filePath: \"@latticexyz/store/src/ResourceId.sol\", type: \"bytes32\" },\n },\n tables: {\n NamespaceOwner: {\n schema: {\n namespaceId: \"ResourceId\",\n owner: \"address\",\n },\n key: [\"namespaceId\"],\n },\n ResourceAccess: {\n schema: {\n resourceId: \"ResourceId\",\n caller: \"address\",\n access: \"bool\",\n },\n key: [\"resourceId\", \"caller\"],\n },\n InstalledModules: {\n schema: {\n moduleAddress: \"address\",\n argumentsHash: \"bytes32\", // Hash of the params passed to the `install` function\n isInstalled: \"bool\",\n },\n key: [\"moduleAddress\", \"argumentsHash\"],\n },\n UserDelegationControl: {\n schema: {\n delegator: \"address\",\n delegatee: \"address\",\n delegationControlId: \"ResourceId\",\n },\n key: [\"delegator\", \"delegatee\"],\n },\n NamespaceDelegationControl: {\n schema: {\n namespaceId: \"ResourceId\",\n delegationControlId: \"ResourceId\",\n },\n key: [\"namespaceId\"],\n },\n Balances: {\n schema: {\n namespaceId: \"ResourceId\",\n balance: \"uint256\",\n },\n key: [\"namespaceId\"],\n },\n Systems: {\n schema: {\n systemId: \"ResourceId\",\n system: \"address\",\n publicAccess: \"bool\",\n },\n key: [\"systemId\"],\n codegen: {\n dataStruct: false,\n },\n },\n SystemRegistry: {\n schema: {\n system: \"address\",\n systemId: \"ResourceId\",\n },\n key: [\"system\"],\n },\n SystemHooks: {\n schema: {\n systemId: \"ResourceId\",\n value: \"bytes21[]\",\n },\n key: [\"systemId\"],\n },\n FunctionSelectors: {\n schema: {\n worldFunctionSelector: \"bytes4\",\n systemId: \"ResourceId\",\n systemFunctionSelector: \"bytes4\",\n },\n key: [\"worldFunctionSelector\"],\n codegen: {\n dataStruct: false,\n },\n },\n FunctionSignatures: {\n type: \"offchainTable\",\n schema: {\n functionSelector: \"bytes4\",\n functionSignature: \"string\",\n },\n key: [\"functionSelector\"],\n },\n InitModuleAddress: {\n schema: {\n value: \"address\",\n },\n key: [],\n },\n },\n excludeSystems: [\n // Worldgen currently does not support systems inheriting logic\n // from other contracts, so all parts of RegistrationSystem are named\n // System too to be included in the IBaseWorld interface.\n // However, IStoreRegistrationSystem overlaps with IStore if\n // included in IBaseWorld, so it needs to be excluded from worldgen.\n // TODO: add support for inheritance to worldgen\n // (see: https://github.com/latticexyz/mud/issues/631)\n \"StoreRegistrationSystem\",\n ],\n} as const;\n\nexport default defineWorld(configInput);\n","import { ErrorMessage, conform, show, type withJsDoc } from \"@ark/util\";\nimport {\n extendedScope,\n get,\n mergeIfUndefined,\n resolveStore,\n hasOwnKey,\n validateStore,\n flattenNamespacedTables,\n CONFIG_DEFAULTS as STORE_CONFIG_DEFAULTS,\n} from \"@latticexyz/store/internal\";\nimport { SystemsInput, WorldInput } from \"./input\";\nimport { CONFIG_DEFAULTS, MODULE_DEFAULTS } from \"./defaults\";\nimport { resolveSystems, validateSystems } from \"./systems\";\nimport { resolveNamespaces, validateNamespaces } from \"./namespaces\";\nimport { resolveCodegen } from \"./codegen\";\nimport { resolveDeploy } from \"./deploy\";\nimport type { World } from \"./output.js\";\nimport { StoreInput } from \"@latticexyz/store\";\n\nexport type validateWorld<input> = {\n readonly [key in keyof input]: key extends \"namespaces\"\n ? input extends { namespace?: unknown; tables?: unknown; systems?: unknown }\n ? ErrorMessage<\"Cannot use `namespaces` with `namespace`, `tables`, or `systems` keys.\">\n : validateNamespaces<input[key], extendedScope<input>>\n : key extends \"systems\"\n ? validateSystems<input[key]>\n : key extends \"codegen\"\n ? conform<input[key], WorldInput[key] & StoreInput[key]>\n : key extends keyof StoreInput\n ? validateStore<input>[key]\n : key extends keyof WorldInput\n ? conform<input[key], WorldInput[key]>\n : ErrorMessage<`\\`${key & string}\\` is not a valid World config option.`>;\n};\n\nexport function validateWorld(input: unknown): asserts input is WorldInput {\n const scope = extendedScope(input);\n\n if (hasOwnKey(input, \"namespaces\")) {\n if (hasOwnKey(input, \"namespace\") || hasOwnKey(input, \"tables\") || hasOwnKey(input, \"systems\")) {\n throw new Error(\"Cannot use `namespaces` with `namespace`, `tables`, or `systems` keys.\");\n }\n validateNamespaces(input.namespaces, scope);\n }\n if (hasOwnKey(input, \"systems\")) {\n validateSystems(input.systems);\n }\n\n validateStore(input);\n}\n\nexport type resolveNamespaceMode<input> = \"namespaces\" extends keyof input\n ? {\n readonly multipleNamespaces: true;\n readonly namespace: null;\n readonly namespaces: show<resolveNamespaces<input[\"namespaces\"], extendedScope<input>>>;\n }\n : {\n readonly multipleNamespaces: false;\n readonly namespace: string;\n readonly namespaces: show<\n resolveNamespaces<\n {\n // TODO: improve this so we don't have to duplicate store behavior\n readonly [label in \"namespace\" extends keyof input\n ? input[\"namespace\"] extends string\n ? input[\"namespace\"]\n : STORE_CONFIG_DEFAULTS[\"namespace\"]\n : STORE_CONFIG_DEFAULTS[\"namespace\"]]: input;\n },\n extendedScope<input>\n >\n >;\n };\n\ntype resolveModules<input> = { [key in keyof input]: mergeIfUndefined<input[key], MODULE_DEFAULTS> };\n\nexport type resolveWorld<input> = resolveNamespaceMode<input> &\n Omit<resolveStore<input>, \"multipleNamespaces\" | \"namespace\" | \"namespaces\" | \"tables\"> & {\n readonly tables: flattenNamespacedTables<resolveNamespaceMode<input>>;\n // TODO: flatten systems from namespaces\n readonly systems: \"systems\" extends keyof input\n ? input[\"systems\"] extends SystemsInput\n ? resolveNamespaceMode<input>[\"namespace\"] extends string\n ? show<resolveSystems<input[\"systems\"], resolveNamespaceMode<input>[\"namespace\"]>>\n : {}\n : {}\n : {};\n readonly excludeSystems: \"excludeSystems\" extends keyof input\n ? input[\"excludeSystems\"]\n : CONFIG_DEFAULTS[\"excludeSystems\"];\n readonly modules: \"modules\" extends keyof input ? resolveModules<input[\"modules\"]> : CONFIG_DEFAULTS[\"modules\"];\n readonly codegen: show<resolveCodegen<\"codegen\" extends keyof input ? input[\"codegen\"] : {}>>;\n readonly deploy: show<resolveDeploy<\"deploy\" extends keyof input ? input[\"deploy\"] : {}>>;\n };\n\nexport function resolveWorld<const input extends WorldInput>(input: input): resolveWorld<input> {\n const scope = extendedScope(input);\n const store = resolveStore(input);\n\n const namespaces = input.namespaces\n ? resolveNamespaces(input.namespaces, scope)\n : resolveNamespaces({ [store.namespace!]: input }, scope);\n\n const tables = flattenNamespacedTables({ namespaces });\n const modules = (input.modules ?? CONFIG_DEFAULTS.modules).map((mod) => mergeIfUndefined(mod, MODULE_DEFAULTS));\n\n return mergeIfUndefined(\n {\n ...store,\n namespaces,\n tables,\n // TODO: flatten systems from namespaces\n systems:\n !store.multipleNamespaces && input.systems\n ? resolveSystems(input.systems, store.namespace, store.namespace)\n : CONFIG_DEFAULTS.systems,\n excludeSystems: get(input, \"excludeSystems\"),\n codegen: mergeIfUndefined(store.codegen, resolveCodegen(input.codegen)),\n deploy: resolveDeploy(input.deploy),\n modules,\n },\n CONFIG_DEFAULTS,\n ) as never;\n}\n\nexport function defineWorld<const input>(input: validateWorld<input>): withJsDoc<resolveWorld<input>, World> {\n validateWorld(input);\n return resolveWorld(input) as never;\n}\n","import { CodegenInput, DeployInput, ModuleInput, SystemDeployInput, SystemInput, WorldInput } from \"./input\";\n\nexport const SYSTEM_DEPLOY_DEFAULTS = {\n disabled: false,\n registerWorldFunctions: true,\n} as const satisfies Required<SystemDeployInput>;\n\nexport type SYSTEM_DEPLOY_DEFAULTS = typeof SYSTEM_DEPLOY_DEFAULTS;\n\nexport const SYSTEM_DEFAULTS = {\n namespaceLabel: \"\",\n openAccess: true,\n accessList: [],\n} as const satisfies Omit<Required<SystemInput>, \"label\" | \"namespace\" | \"name\" | \"deploy\">;\n\nexport type SYSTEM_DEFAULTS = typeof SYSTEM_DEFAULTS;\n\nexport const MODULE_DEFAULTS = {\n root: false,\n args: [],\n artifactPath: undefined,\n} as const satisfies Pick<ModuleInput, \"root\" | \"args\" | \"artifactPath\">;\n\nexport type MODULE_DEFAULTS = typeof MODULE_DEFAULTS;\n\nexport const CODEGEN_DEFAULTS = {\n worldInterfaceName: \"IWorld\",\n worldgenDirectory: \"world\",\n systemLibrariesDirectory: \"systems\",\n generateSystemLibraries: false,\n worldImportPath: \"@latticexyz/world/src\",\n} as const satisfies CodegenInput;\n\nexport type CODEGEN_DEFAULTS = typeof CODEGEN_DEFAULTS;\n\nexport const DEPLOY_DEFAULTS = {\n postDeployScript: \"PostDeploy\",\n deploysDirectory: \"./deploys\",\n worldsFile: \"./worlds.json\",\n upgradeableWorldImplementation: false,\n} as const satisfies DeployInput;\n\nexport type DEPLOY_DEFAULTS = typeof DEPLOY_DEFAULTS;\n\nexport const CONFIG_DEFAULTS = {\n systems: {},\n tables: {},\n excludeSystems: [],\n modules: [],\n codegen: CODEGEN_DEFAULTS,\n deploy: DEPLOY_DEFAULTS,\n} as const satisfies WorldInput;\n\nexport type CONFIG_DEFAULTS = typeof CONFIG_DEFAULTS;\n","import { ErrorMessage } from \"@ark/util\";\nimport { isObject } from \"@latticexyz/store/internal\";\nimport { SystemsInput } from \"./input\";\nimport { resolveSystem, validateSystem } from \"./system\";\n\n// TODO: add nuance between \"in namespace\" (namespace provided in context) and \"in systems\" (label provided in context)\n\nexport type validateSystems<input> = {\n [label in keyof input]: input[label] extends object\n ? validateSystem<input[label], { inNamespace: true }>\n : ErrorMessage<`Expected a system config for ${label & string}.`>;\n};\n\nexport function validateSystems(input: unknown): asserts input is SystemsInput {\n if (isObject(input)) {\n for (const system of Object.values(input)) {\n validateSystem(system, { inNamespace: true });\n }\n return;\n }\n throw new Error(`Expected system config, received ${JSON.stringify(input)}`);\n}\n\nexport type resolveSystems<systems extends SystemsInput, namespaceLabel extends string> = {\n [label in keyof systems]: resolveSystem<\n systems[label] & { label: label; namespaceLabel: namespaceLabel; namespace: string }\n >;\n};\n\nexport function resolveSystems<systems extends SystemsInput, namespaceLabel extends string>(\n systems: systems,\n namespaceLabel: namespaceLabel,\n namespace: string,\n): resolveSystems<systems, namespaceLabel> {\n return Object.fromEntries(\n Object.entries(systems).map(([label, system]) => {\n return [label, resolveSystem({ ...system, label, namespaceLabel, namespace })];\n }),\n ) as never;\n}\n","import { SYSTEM_DEFAULTS, SYSTEM_DEPLOY_DEFAULTS } from \"./defaults\";\nimport { SystemInput } from \"./input\";\nimport { hasOwnKey, mergeIfUndefined } from \"@latticexyz/store/internal\";\nimport { ErrorMessage, narrow, requiredKeyOf, show } from \"@ark/util\";\nimport { Hex } from \"viem\";\nimport { resourceToHex } from \"@latticexyz/common\";\n\nexport type ValidateSystemOptions = { readonly inNamespace?: true };\n\nexport type requiredSystemKey<inNamespace extends true | undefined> = Exclude<\n requiredKeyOf<SystemInput>,\n inNamespace extends true ? \"label\" | \"namespaceLabel\" | \"namespace\" : never\n>;\n\nexport type validateSystem<input, options extends ValidateSystemOptions = {}> = {\n [key in keyof input | requiredSystemKey<options[\"inNamespace\"]>]: key extends keyof SystemInput\n ? key extends \"label\" | \"namespaceLabel\" | \"namespace\"\n ? options[\"inNamespace\"] extends true\n ? ErrorMessage<\"Overrides of `label`, `namespaceLabel`, and `namespace` are not allowed for systems in this context.\">\n : key extends keyof input\n ? narrow<input[key]>\n : never\n : SystemInput[key]\n : ErrorMessage<`Key \\`${key & string}\\` does not exist in SystemInput`>;\n};\n\nexport function validateSystem<input>(\n input: input,\n options: ValidateSystemOptions = {},\n): asserts input is SystemInput & input {\n if (typeof input !== \"object\" || input == null) {\n throw new Error(`Expected full system config, got \\`${JSON.stringify(input)}\\``);\n }\n\n if (\n options.inNamespace &&\n (hasOwnKey(input, \"label\") || hasOwnKey(input, \"namespaceLabel\") || hasOwnKey(input, \"namespace\"))\n ) {\n throw new Error(\n \"Overrides of `label`, `namespaceLabel`, and `namespace` are not allowed for systems in this context.\",\n );\n }\n\n if (\n hasOwnKey(input, \"namespaceLabel\") &&\n typeof input.namespaceLabel === \"string\" &&\n (!hasOwnKey(input, \"namespace\") || typeof input.namespace !== \"string\") &&\n input.namespaceLabel.length > 14\n ) {\n throw new Error(\n `System \\`namespace\\` defaults to \\`namespaceLabel\\`, but must fit into a \\`bytes14\\` and \"${input.namespaceLabel}\" is too long. Provide explicit \\`namespace\\` override.`,\n );\n }\n\n if (hasOwnKey(input, \"namespace\") && typeof input.namespace === \"string\" && input.namespace.length > 14) {\n throw new Error(`System \\`namespace\\` must fit into a \\`bytes14\\`, but \"${input.namespace}\" is too long.`);\n }\n if (hasOwnKey(input, \"name\") && typeof input.name === \"string\" && input.name.length > 16) {\n throw new Error(`System \\`name\\` must fit into a \\`bytes16\\`, but \"${input.name}\" is too long.`);\n }\n}\n\nexport type resolveSystem<input> = input extends SystemInput\n ? {\n readonly label: input[\"label\"];\n readonly namespaceLabel: undefined extends input[\"namespaceLabel\"]\n ? typeof SYSTEM_DEFAULTS.namespaceLabel\n : input[\"namespaceLabel\"];\n readonly namespace: string;\n readonly name: string;\n readonly systemId: Hex;\n readonly openAccess: undefined extends input[\"openAccess\"] ? SYSTEM_DEFAULTS[\"openAccess\"] : input[\"openAccess\"];\n readonly accessList: undefined extends input[\"accessList\"] ? SYSTEM_DEFAULTS[\"accessList\"] : input[\"accessList\"];\n readonly deploy: show<\n mergeIfUndefined<undefined extends input[\"deploy\"] ? {} : input[\"deploy\"], SYSTEM_DEPLOY_DEFAULTS>\n >;\n }\n : never;\n\nexport function resolveSystem<input extends SystemInput>(input: input): resolveSystem<input> {\n const namespaceLabel = input.namespaceLabel ?? SYSTEM_DEFAULTS.namespaceLabel;\n // validate ensures this is length constrained\n const namespace = input.namespace ?? namespaceLabel;\n\n const label = input.label;\n const name = input.name ?? label.slice(0, 16);\n const systemId = resourceToHex({ type: \"system\", namespace, name });\n\n return mergeIfUndefined(\n {\n ...input,\n label,\n namespaceLabel,\n namespace,\n name,\n systemId,\n deploy: mergeIfUndefined(input.deploy ?? {}, SYSTEM_DEPLOY_DEFAULTS),\n },\n SYSTEM_DEFAULTS,\n ) as never;\n}\n\nexport function defineSystem<input>(input: validateSystem<input>): resolveSystem<input> {\n validateSystem(input);\n return resolveSystem(input) as never;\n}\n","import { show, flatMorph } from \"@ark/util\";\nimport { NamespacesInput } from \"./input\";\nimport { validateNamespace, resolveNamespace } from \"./namespace\";\nimport { groupBy } from \"@latticexyz/common/utils\";\nimport { AbiTypeScope, Scope, isObject, mergeIfUndefined } from \"@latticexyz/store/internal\";\n\n// Copied from store/ts/config/v2/namespaces.ts but using world namespace validate/resolve methods\n// TODO: figure out how to dedupe these?\n\nexport type validateNamespaces<namespaces, scope extends Scope = AbiTypeScope> = {\n [label in keyof namespaces]: validateNamespace<namespaces[label], scope>;\n};\n\nexport function validateNamespaces<scope extends Scope = AbiTypeScope>(\n namespaces: unknown,\n scope: scope,\n): asserts namespaces is NamespacesInput {\n if (!isObject(namespaces)) {\n throw new Error(`Expected namespaces, received ${JSON.stringify(namespaces)}`);\n }\n for (const namespace of Object.values(namespaces)) {\n validateNamespace(namespace, scope);\n }\n}\n\nexport type resolveNamespaces<namespaces, scope extends Scope = AbiTypeScope> = {\n readonly [label in keyof namespaces]: resolveNamespace<mergeIfUndefined<namespaces[label], { label: label }>, scope>;\n};\n\nexport function resolveNamespaces<input extends NamespacesInput, scope extends Scope = AbiTypeScope>(\n input: input,\n scope: scope,\n): resolveNamespaces<input, scope> {\n if (!isObject(input)) {\n throw new Error(`Expected namespaces config, received ${JSON.stringify(input)}`);\n }\n\n const namespaces = flatMorph(input as NamespacesInput, (label, namespace) => [\n label,\n resolveNamespace(mergeIfUndefined(namespace, { label }), scope),\n ]);\n\n // This should probably be in `validate`, but `namespace` gets set during the resolve step above, so it's easier to validate here.\n const duplicates = Array.from(groupBy(Object.values(namespaces), (namespace) => namespace.namespace).entries())\n .filter(([, entries]) => entries.length > 1)\n .map(([namespace]) => namespace);\n if (duplicates.length > 0) {\n throw new Error(`Found namespaces defined more than once in config: ${duplicates.join(\", \")}`);\n }\n\n return namespaces as never;\n}\n\nexport function defineNamespaces<input, scope extends Scope = AbiTypeScope>(\n input: validateNamespaces<input, scope>,\n scope: scope = AbiTypeScope as never,\n): show<resolveNamespaces<input, scope>> {\n validateNamespaces(input, scope);\n return resolveNamespaces(input, scope) as never;\n}\n","import { NamespaceInput, SystemsInput } from \"./input\";\nimport {\n hasOwnKey,\n validateNamespace as validateStoreNamespace,\n resolveNamespace as resolveStoreNamespace,\n Scope,\n AbiTypeScope,\n} from \"@latticexyz/store/internal\";\nimport { resolveSystems, validateSystems } from \"./systems\";\nimport { show } from \"@ark/util\";\n\nexport type validateNamespace<input, scope extends Scope = AbiTypeScope> = {\n [key in keyof input]: key extends \"systems\" ? validateSystems<input[key]> : validateStoreNamespace<input, scope>[key];\n};\n\nexport function validateNamespace<scope extends Scope = AbiTypeScope>(\n input: unknown,\n scope: scope,\n): asserts input is NamespaceInput {\n if (hasOwnKey(input, \"systems\")) {\n validateSystems(input.systems);\n }\n validateStoreNamespace(input, scope);\n}\n\nexport type resolveNamespace<input, scope extends Scope = AbiTypeScope> = input extends NamespaceInput\n ? show<\n resolveStoreNamespace<input, scope> & {\n readonly systems: input[\"systems\"] extends SystemsInput\n ? show<resolveSystems<input[\"systems\"], resolveStoreNamespace<input, scope>[\"label\"]>>\n : {};\n }\n >\n : never;\n\nexport function resolveNamespace<const input extends NamespaceInput, scope extends Scope = AbiTypeScope>(\n input: input,\n scope: scope = AbiTypeScope as never,\n): resolveNamespace<input, scope> {\n const namespace = resolveStoreNamespace(input, scope);\n const systems = resolveSystems(input.systems ?? {}, namespace.label, namespace.namespace);\n return {\n ...namespace,\n systems,\n } as never;\n}\n","import { isObject, mergeIfUndefined } from \"@latticexyz/store/internal\";\nimport { CODEGEN_DEFAULTS } from \"./defaults\";\n\nexport type resolveCodegen<codegen> = codegen extends {}\n ? mergeIfUndefined<codegen, CODEGEN_DEFAULTS>\n : CODEGEN_DEFAULTS;\n\nexport function resolveCodegen<codegen>(codegen: codegen): resolveCodegen<codegen> {\n return (isObject(codegen) ? mergeIfUndefined(codegen, CODEGEN_DEFAULTS) : CODEGEN_DEFAULTS) as never;\n}\n","import { mergeIfUndefined, isObject } from \"@latticexyz/store/internal\";\nimport { DEPLOY_DEFAULTS } from \"./defaults\";\n\nexport type resolveDeploy<deploy> = deploy extends {} ? mergeIfUndefined<deploy, DEPLOY_DEFAULTS> : DEPLOY_DEFAULTS;\n\nexport function resolveDeploy<deploy>(deploy: deploy): resolveDeploy<deploy> {\n return (isObject(deploy) ? mergeIfUndefined(deploy, DEPLOY_DEFAULTS) : DEPLOY_DEFAULTS) as never;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACCA,IAAAA,mBASO;;;ACRA,IAAM,yBAAyB;AAAA,EACpC,UAAU;AAAA,EACV,wBAAwB;AAC1B;AAIO,IAAM,kBAAkB;AAAA,EAC7B,gBAAgB;AAAA,EAChB,YAAY;AAAA,EACZ,YAAY,CAAC;AACf;AAIO,IAAM,kBAAkB;AAAA,EAC7B,MAAM;AAAA,EACN,MAAM,CAAC;AAAA,EACP,cAAc;AAChB;AAIO,IAAM,mBAAmB;AAAA,EAC9B,oBAAoB;AAAA,EACpB,mBAAmB;AAAA,EACnB,0BAA0B;AAAA,EAC1B,yBAAyB;AAAA,EACzB,iBAAiB;AACnB;AAIO,IAAM,kBAAkB;AAAA,EAC7B,kBAAkB;AAAA,EAClB,kBAAkB;AAAA,EAClB,YAAY;AAAA,EACZ,gCAAgC;AAClC;AAIO,IAAM,kBAAkB;AAAA,EAC7B,SAAS,CAAC;AAAA,EACV,QAAQ,CAAC;AAAA,EACT,gBAAgB,CAAC;AAAA,EACjB,SAAS,CAAC;AAAA,EACV,SAAS;AAAA,EACT,QAAQ;AACV;;;AClDA,IAAAC,mBAAyB;;;ACCzB,sBAA4C;AAG5C,oBAA8B;AAqBvB,SAAS,eACd,OACA,UAAiC,CAAC,GACI;AACtC,MAAI,OAAO,UAAU,YAAY,SAAS,MAAM;AAC9C,UAAM,IAAI,MAAM,sCAAsC,KAAK,UAAU,KAAK,CAAC,IAAI;AAAA,EACjF;AAEA,MACE,QAAQ,oBACP,2BAAU,OAAO,OAAO,SAAK,2BAAU,OAAO,gBAAgB,SAAK,2BAAU,OAAO,WAAW,IAChG;AACA,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,UACE,2BAAU,OAAO,gBAAgB,KACjC,OAAO,MAAM,mBAAmB,aAC/B,KAAC,2BAAU,OAAO,WAAW,KAAK,OAAO,MAAM,cAAc,aAC9D,MAAM,eAAe,SAAS,IAC9B;AACA,UAAM,IAAI;AAAA,MACR,6FAA6F,MAAM,cAAc;AAAA,IACnH;AAAA,EACF;AAEA,UAAI,2BAAU,OAAO,WAAW,KAAK,OAAO,MAAM,cAAc,YAAY,MAAM,UAAU,SAAS,IAAI;AACvG,UAAM,IAAI,MAAM,0DAA0D,MAAM,SAAS,gBAAgB;AAAA,EAC3G;AACA,UAAI,2BAAU,OAAO,MAAM,KAAK,OAAO,MAAM,SAAS,YAAY,MAAM,KAAK,SAAS,IAAI;AACxF,UAAM,IAAI,MAAM,qDAAqD,MAAM,IAAI,gBAAgB;AAAA,EACjG;AACF;AAmBO,SAAS,cAAyC,OAAoC;AAC3F,QAAM,iBAAiB,MAAM,kBAAkB,gBAAgB;AAE/D,QAAM,YAAY,MAAM,aAAa;AAErC,QAAM,QAAQ,MAAM;AACpB,QAAM,OAAO,MAAM,QAAQ,MAAM,MAAM,GAAG,EAAE;AAC5C,QAAM,eAAW,6BAAc,EAAE,MAAM,UAAU,WAAW,KAAK,CAAC;AAElE,aAAO;AAAA,IACL;AAAA,MACE,GAAG;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,YAAQ,kCAAiB,MAAM,UAAU,CAAC,GAAG,sBAAsB;AAAA,IACrE;AAAA,IACA;AAAA,EACF;AACF;;;ADvFO,SAAS,gBAAgB,OAA+C;AAC7E,UAAI,2BAAS,KAAK,GAAG;AACnB,eAAW,UAAU,OAAO,OAAO,KAAK,GAAG;AACzC,qBAAe,QAAQ,EAAE,aAAa,KAAK,CAAC;AAAA,IAC9C;AACA;AAAA,EACF;AACA,QAAM,IAAI,MAAM,oCAAoC,KAAK,UAAU,KAAK,CAAC,EAAE;AAC7E;AAQO,SAAS,eACd,SACA,gBACA,WACyC;AACzC,SAAO,OAAO;AAAA,IACZ,OAAO,QAAQ,OAAO,EAAE,IAAI,CAAC,CAAC,OAAO,MAAM,MAAM;AAC/C,aAAO,CAAC,OAAO,cAAc,EAAE,GAAG,QAAQ,OAAO,gBAAgB,UAAU,CAAC,CAAC;AAAA,IAC/E,CAAC;AAAA,EACH;AACF;;;AEvCA,kBAAgC;;;ACChC,IAAAC,mBAMO;AAQA,SAAS,kBACd,OACA,OACiC;AACjC,UAAI,4BAAU,OAAO,SAAS,GAAG;AAC/B,oBAAgB,MAAM,OAAO;AAAA,EAC/B;AACA,uBAAAC,mBAAuB,OAAO,KAAK;AACrC;AAYO,SAAS,iBACd,OACA,QAAe,+BACiB;AAChC,QAAM,gBAAY,iBAAAC,kBAAsB,OAAO,KAAK;AACpD,QAAM,UAAU,eAAe,MAAM,WAAW,CAAC,GAAG,UAAU,OAAO,UAAU,SAAS;AACxF,SAAO;AAAA,IACL,GAAG;AAAA,IACH;AAAA,EACF;AACF;;;AD1CA,mBAAwB;AACxB,IAAAC,mBAAgE;AASzD,SAAS,mBACd,YACA,OACuC;AACvC,MAAI,KAAC,2BAAS,UAAU,GAAG;AACzB,UAAM,IAAI,MAAM,iCAAiC,KAAK,UAAU,UAAU,CAAC,EAAE;AAAA,EAC/E;AACA,aAAW,aAAa,OAAO,OAAO,UAAU,GAAG;AACjD,sBAAkB,WAAW,KAAK;AAAA,EACpC;AACF;AAMO,SAAS,kBACd,OACA,OACiC;AACjC,MAAI,KAAC,2BAAS,KAAK,GAAG;AACpB,UAAM,IAAI,MAAM,wCAAwC,KAAK,UAAU,KAAK,CAAC,EAAE;AAAA,EACjF;AAEA,QAAM,iBAAa,uBAAU,OAA0B,CAAC,OAAO,cAAc;AAAA,IAC3E;AAAA,IACA,qBAAiB,mCAAiB,WAAW,EAAE,MAAM,CAAC,GAAG,KAAK;AAAA,EAChE,CAAC;AAGD,QAAM,aAAa,MAAM,SAAK,sBAAQ,OAAO,OAAO,UAAU,GAAG,CAAC,cAAc,UAAU,SAAS,EAAE,QAAQ,CAAC,EAC3G,OAAO,CAAC,CAAC,EAAE,OAAO,MAAM,QAAQ,SAAS,CAAC,EAC1C,IAAI,CAAC,CAAC,SAAS,MAAM,SAAS;AACjC,MAAI,WAAW,SAAS,GAAG;AACzB,UAAM,IAAI,MAAM,sDAAsD,WAAW,KAAK,IAAI,CAAC,EAAE;AAAA,EAC/F;AAEA,SAAO;AACT;;;AEnDA,IAAAC,mBAA2C;AAOpC,SAAS,eAAwB,SAA2C;AACjF,aAAQ,2BAAS,OAAO,QAAI,mCAAiB,SAAS,gBAAgB,IAAI;AAC5E;;;ACTA,IAAAC,mBAA2C;AAKpC,SAAS,cAAsB,QAAuC;AAC3E,aAAQ,2BAAS,MAAM,QAAI,mCAAiB,QAAQ,eAAe,IAAI;AACzE;;;AP6BO,SAAS,cAAc,OAA6C;AACzE,QAAM,YAAQ,gCAAc,KAAK;AAEjC,UAAI,4BAAU,OAAO,YAAY,GAAG;AAClC,YAAI,4BAAU,OAAO,WAAW,SAAK,4BAAU,OAAO,QAAQ,SAAK,4BAAU,OAAO,SAAS,GAAG;AAC9F,YAAM,IAAI,MAAM,wEAAwE;AAAA,IAC1F;AACA,uBAAmB,MAAM,YAAY,KAAK;AAAA,EAC5C;AACA,UAAI,4BAAU,OAAO,SAAS,GAAG;AAC/B,oBAAgB,MAAM,OAAO;AAAA,EAC/B;AAEA,sCAAc,KAAK;AACrB;AA+CO,SAAS,aAA6C,OAAmC;AAC9F,QAAM,YAAQ,gCAAc,KAAK;AACjC,QAAM,YAAQ,+BAAa,KAAK;AAEhC,QAAM,aAAa,MAAM,aACrB,kBAAkB,MAAM,YAAY,KAAK,IACzC,kBAAkB,EAAE,CAAC,MAAM,SAAU,GAAG,MAAM,GAAG,KAAK;AAE1D,QAAM,aAAS,0CAAwB,EAAE,WAAW,CAAC;AACrD,QAAM,WAAW,MAAM,WAAW,gBAAgB,SAAS,IAAI,CAAC,YAAQ,mCAAiB,KAAK,eAAe,CAAC;AAE9G,aAAO;AAAA,IACL;AAAA,MACE,GAAG;AAAA,MACH;AAAA,MACA;AAAA;AAAA,MAEA,SACE,CAAC,MAAM,sBAAsB,MAAM,UAC/B,eAAe,MAAM,SAAS,MAAM,WAAW,MAAM,SAAS,IAC9D,gBAAgB;AAAA,MACtB,oBAAgB,sBAAI,OAAO,gBAAgB;AAAA,MAC3C,aAAS,mCAAiB,MAAM,SAAS,eAAe,MAAM,OAAO,CAAC;AAAA,MACtE,QAAQ,cAAc,MAAM,MAAM;AAAA,MAClC;AAAA,IACF;AAAA,IACA;AAAA,EACF;AACF;AAEO,SAAS,YAAyB,OAAoE;AAC3G,gBAAc,KAAK;AACnB,SAAO,aAAa,KAAK;AAC3B;;;AD7HO,IAAM,cAAc;AAAA,EACzB,WAAW;AAAA;AAAA,EACX,SAAS;AAAA,IACP,iBAAiB;AAAA,IACjB,mBAAmB;AAAA,IACnB,oBAAoB;AAAA,EACtB;AAAA,EACA,WAAW;AAAA,IACT,YAAY,EAAE,UAAU,wCAAwC,MAAM,UAAU;AAAA,EAClF;AAAA,EACA,QAAQ;AAAA,IACN,gBAAgB;AAAA,MACd,QAAQ;AAAA,QACN,aAAa;AAAA,QACb,OAAO;AAAA,MACT;AAAA,MACA,KAAK,CAAC,aAAa;AAAA,IACrB;AAAA,IACA,gBAAgB;AAAA,MACd,QAAQ;AAAA,QACN,YAAY;AAAA,QACZ,QAAQ;AAAA,QACR,QAAQ;AAAA,MACV;AAAA,MACA,KAAK,CAAC,cAAc,QAAQ;AAAA,IAC9B;AAAA,IACA,kBAAkB;AAAA,MAChB,QAAQ;AAAA,QACN,eAAe;AAAA,QACf,eAAe;AAAA;AAAA,QACf,aAAa;AAAA,MACf;AAAA,MACA,KAAK,CAAC,iBAAiB,eAAe;AAAA,IACxC;AAAA,IACA,uBAAuB;AAAA,MACrB,QAAQ;AAAA,QACN,WAAW;AAAA,QACX,WAAW;AAAA,QACX,qBAAqB;AAAA,MACvB;AAAA,MACA,KAAK,CAAC,aAAa,WAAW;AAAA,IAChC;AAAA,IACA,4BAA4B;AAAA,MAC1B,QAAQ;AAAA,QACN,aAAa;AAAA,QACb,qBAAqB;AAAA,MACvB;AAAA,MACA,KAAK,CAAC,aAAa;AAAA,IACrB;AAAA,IACA,UAAU;AAAA,MACR,QAAQ;AAAA,QACN,aAAa;AAAA,QACb,SAAS;AAAA,MACX;AAAA,MACA,KAAK,CAAC,aAAa;AAAA,IACrB;AAAA,IACA,SAAS;AAAA,MACP,QAAQ;AAAA,QACN,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,cAAc;AAAA,MAChB;AAAA,MACA,KAAK,CAAC,UAAU;AAAA,MAChB,SAAS;AAAA,QACP,YAAY;AAAA,MACd;AAAA,IACF;AAAA,IACA,gBAAgB;AAAA,MACd,QAAQ;AAAA,QACN,QAAQ;AAAA,QACR,UAAU;AAAA,MACZ;AAAA,MACA,KAAK,CAAC,QAAQ;AAAA,IAChB;AAAA,IACA,aAAa;AAAA,MACX,QAAQ;AAAA,QACN,UAAU;AAAA,QACV,OAAO;AAAA,MACT;AAAA,MACA,KAAK,CAAC,UAAU;AAAA,IAClB;AAAA,IACA,mBAAmB;AAAA,MACjB,QAAQ;AAAA,QACN,uBAAuB;AAAA,QACvB,UAAU;AAAA,QACV,wBAAwB;AAAA,MAC1B;AAAA,MACA,KAAK,CAAC,uBAAuB;AAAA,MAC7B,SAAS;AAAA,QACP,YAAY;AAAA,MACd;AAAA,IACF;AAAA,IACA,oBAAoB;AAAA,MAClB,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,kBAAkB;AAAA,QAClB,mBAAmB;AAAA,MACrB;AAAA,MACA,KAAK,CAAC,kBAAkB;AAAA,IAC1B;AAAA,IACA,mBAAmB;AAAA,MACjB,QAAQ;AAAA,QACN,OAAO;AAAA,MACT;AAAA,MACA,KAAK,CAAC;AAAA,IACR;AAAA,EACF;AAAA,EACA,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQd;AAAA,EACF;AACF;AAEA,IAAO,qBAAQ,YAAY,WAAW;","names":["import_internal","import_internal","import_internal","validateStoreNamespace","resolveStoreNamespace","import_internal","import_internal","import_internal"]}