@latticexyz/world-modules 2.0.0-march-19-skystrife-playtest-f486281e → 2.0.0-next-17-awakening-9c07ab3a2

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 (379) hide show
  1. package/dist/mud.config.d.ts +256 -0
  2. package/out/AccessControl.sol/AccessControl.json +1 -1
  3. package/out/AccessControlLib.sol/AccessControlLib.json +1 -1
  4. package/out/AccessManagementSystem.sol/AccessManagementSystem.abi.json +55 -0
  5. package/out/AccessManagementSystem.sol/AccessManagementSystem.abi.json.d.ts +55 -0
  6. package/out/AccessManagementSystem.sol/AccessManagementSystem.json +1 -1
  7. package/out/AddressArray.sol/AddressArray.json +1 -1
  8. package/out/Allowances.sol/Allowances.json +1 -1
  9. package/out/ArrayLib.sol/ArrayLib.json +1 -1
  10. package/out/BalanceTransferSystem.sol/BalanceTransferSystem.abi.json +16 -0
  11. package/out/BalanceTransferSystem.sol/BalanceTransferSystem.abi.json.d.ts +16 -0
  12. package/out/BalanceTransferSystem.sol/BalanceTransferSystem.json +1 -1
  13. package/out/Balances.sol/Balances.json +1 -1
  14. package/out/Base.sol/CommonBase.json +1 -1
  15. package/out/Base.sol/ScriptBase.json +1 -1
  16. package/out/Base.sol/TestBase.json +1 -1
  17. package/out/BatchCallSystem.sol/BatchCallSystem.abi.json +5 -0
  18. package/out/BatchCallSystem.sol/BatchCallSystem.abi.json.d.ts +5 -0
  19. package/out/BatchCallSystem.sol/BatchCallSystem.json +1 -1
  20. package/out/Bool.sol/Bool.json +1 -1
  21. package/out/Bytes.sol/Bytes.json +1 -1
  22. package/out/CallboundDelegationControl.sol/CallboundDelegationControl.json +1 -1
  23. package/out/CallboundDelegations.sol/CallboundDelegations.json +1 -1
  24. package/out/DecodeSlice.sol/DecodeSlice.json +1 -1
  25. package/out/Delegation.sol/Delegation.json +1 -1
  26. package/out/DelegationControl.sol/DelegationControl.json +1 -1
  27. package/out/DelegationControlMock.sol/DelegationControlMock.json +1 -1
  28. package/out/ERC165Checker.sol/ERC165Checker.json +1 -0
  29. package/out/ERC20.t.sol/ERC20Test.json +1 -1
  30. package/out/ERC20Metadata.sol/ERC20Metadata.json +1 -1
  31. package/out/ERC20Module.sol/ERC20Module.abi.json +120 -20
  32. package/out/ERC20Module.sol/ERC20Module.abi.json.d.ts +120 -20
  33. package/out/ERC20Module.sol/ERC20Module.json +1 -1
  34. package/out/ERC20Module.sol/ERC20ModuleRegistrationLibrary.abi.json +117 -4
  35. package/out/ERC20Module.sol/ERC20ModuleRegistrationLibrary.abi.json.d.ts +117 -4
  36. package/out/ERC20Module.sol/ERC20ModuleRegistrationLibrary.json +1 -1
  37. package/out/ERC20Registry.sol/ERC20Registry.json +1 -1
  38. package/out/ERC20System.sol/ERC20System.json +1 -1
  39. package/out/ERC721.t.sol/ERC721Recipient.json +1 -1
  40. package/out/ERC721.t.sol/ERC721Test.abi.json +1 -1
  41. package/out/ERC721.t.sol/ERC721Test.abi.json.d.ts +1 -1
  42. package/out/ERC721.t.sol/ERC721Test.json +1 -1
  43. package/out/ERC721.t.sol/ERC721TokenReceiver.json +1 -1
  44. package/out/ERC721.t.sol/NonERC721Recipient.json +1 -1
  45. package/out/ERC721.t.sol/RevertingERC721Recipient.json +1 -1
  46. package/out/ERC721.t.sol/WrongReturnDataERC721Recipient.json +1 -1
  47. package/out/ERC721Metadata.sol/ERC721Metadata.json +1 -1
  48. package/out/ERC721Module.sol/ERC721Module.abi.json +120 -20
  49. package/out/ERC721Module.sol/ERC721Module.abi.json.d.ts +120 -20
  50. package/out/ERC721Module.sol/ERC721Module.json +1 -1
  51. package/out/ERC721Module.sol/ERC721ModuleRegistrationLibrary.abi.json +117 -4
  52. package/out/ERC721Module.sol/ERC721ModuleRegistrationLibrary.abi.json.d.ts +117 -4
  53. package/out/ERC721Module.sol/ERC721ModuleRegistrationLibrary.json +1 -1
  54. package/out/ERC721Registry.sol/ERC721Registry.json +1 -1
  55. package/out/ERC721System.sol/ERC721System.json +1 -1
  56. package/out/EchoSubscriber.sol/EchoSubscriber.json +1 -1
  57. package/out/EncodeArray.sol/EncodeArray.json +1 -1
  58. package/out/FieldLayout.sol/FieldLayoutInstance.json +1 -1
  59. package/out/FieldLayout.sol/FieldLayoutLib.abi.json +69 -4
  60. package/out/FieldLayout.sol/FieldLayoutLib.abi.json.d.ts +69 -4
  61. package/out/FieldLayout.sol/FieldLayoutLib.json +1 -1
  62. package/out/FieldLayoutEncodeHelper.sol/FieldLayoutEncodeHelper.json +1 -1
  63. package/out/FunctionSelectors.sol/FunctionSelectors.json +1 -1
  64. package/out/FunctionSignatures.sol/FunctionSignatures.json +1 -1
  65. package/out/GasReporter.sol/GasReporter.json +1 -1
  66. package/out/Hook.sol/HookInstance.json +1 -1
  67. package/out/Hook.sol/HookLib.json +1 -1
  68. package/out/Hooks.sol/Hooks.json +1 -1
  69. package/out/IAccessManagementSystem.sol/IAccessManagementSystem.abi.json +13 -0
  70. package/out/IAccessManagementSystem.sol/IAccessManagementSystem.abi.json.d.ts +13 -0
  71. package/out/IAccessManagementSystem.sol/IAccessManagementSystem.json +1 -1
  72. package/out/IBalanceTransferSystem.sol/IBalanceTransferSystem.json +1 -1
  73. package/out/IBaseWorld.sol/IBaseWorld.abi.json +64 -5
  74. package/out/IBaseWorld.sol/IBaseWorld.abi.json.d.ts +64 -5
  75. package/out/IBaseWorld.sol/IBaseWorld.json +1 -1
  76. package/out/IBatchCallSystem.sol/IBatchCallSystem.json +1 -1
  77. package/out/IDelegationControl.sol/IDelegationControl.json +1 -1
  78. package/out/IERC165.sol/IERC165.json +1 -0
  79. package/out/IERC20.sol/IERC20.json +1 -1
  80. package/out/IERC20Errors.sol/IERC20Errors.json +1 -1
  81. package/out/IERC20Events.sol/IERC20Events.json +1 -1
  82. package/out/IERC20Mintable.sol/IERC20Mintable.json +1 -1
  83. package/out/IERC20System.sol/IERC20System.json +1 -1
  84. package/out/IERC721.sol/IERC721.json +1 -1
  85. package/out/IERC721Errors.sol/IERC721Errors.json +1 -1
  86. package/out/IERC721Events.sol/IERC721Events.json +1 -1
  87. package/out/IERC721Metadata.sol/IERC721Metadata.json +1 -1
  88. package/out/IERC721Mintable.sol/IERC721Mintable.json +1 -1
  89. package/out/IERC721Receiver.sol/IERC721Receiver.json +1 -1
  90. package/out/IModule.sol/IModule.abi.json +4 -17
  91. package/out/IModule.sol/IModule.abi.json.d.ts +4 -17
  92. package/out/IModule.sol/IModule.json +1 -1
  93. package/out/IModuleInstallationSystem.sol/IModuleInstallationSystem.abi.json +1 -1
  94. package/out/IModuleInstallationSystem.sol/IModuleInstallationSystem.abi.json.d.ts +1 -1
  95. package/out/IModuleInstallationSystem.sol/IModuleInstallationSystem.json +1 -1
  96. package/out/IMulticall3.sol/IMulticall3.json +1 -1
  97. package/out/IPuppetFactorySystem.sol/IPuppetFactorySystem.json +1 -1
  98. package/out/IRegistrationSystem.sol/IRegistrationSystem.abi.json +1 -0
  99. package/out/IRegistrationSystem.sol/IRegistrationSystem.json +1 -0
  100. package/out/IStore.sol/IStore.abi.json +51 -3
  101. package/out/IStore.sol/IStore.abi.json.d.ts +51 -3
  102. package/out/IStore.sol/IStore.json +1 -1
  103. package/out/IStoreData.sol/IStoreData.json +1 -1
  104. package/out/IStoreErrors.sol/IStoreErrors.abi.json +51 -3
  105. package/out/IStoreErrors.sol/IStoreErrors.abi.json.d.ts +51 -3
  106. package/out/IStoreErrors.sol/IStoreErrors.json +1 -1
  107. package/out/IStoreEvents.sol/IStoreEvents.json +1 -1
  108. package/out/IStoreHook.sol/IStoreHook.json +1 -1
  109. package/out/IStoreRead.sol/IStoreRead.json +1 -1
  110. package/out/IStoreRegistration.sol/IStoreRegistration.json +1 -1
  111. package/out/IStoreWrite.sol/IStoreWrite.json +1 -1
  112. package/out/ISystemHook.sol/ISystemHook.json +1 -1
  113. package/out/IWorldContextConsumer.sol/IWorldContextConsumer.json +1 -1
  114. package/out/IWorldErrors.sol/IWorldErrors.abi.json +11 -0
  115. package/out/IWorldErrors.sol/IWorldErrors.abi.json.d.ts +11 -0
  116. package/out/IWorldErrors.sol/IWorldErrors.json +1 -1
  117. package/out/IWorldKernel.sol/IWorldCall.json +1 -1
  118. package/out/IWorldKernel.sol/IWorldKernel.abi.json +13 -2
  119. package/out/IWorldKernel.sol/IWorldKernel.abi.json.d.ts +13 -2
  120. package/out/IWorldKernel.sol/IWorldKernel.json +1 -1
  121. package/out/IWorldKernel.sol/IWorldModuleInstallation.abi.json +1 -1
  122. package/out/IWorldKernel.sol/IWorldModuleInstallation.abi.json.d.ts +1 -1
  123. package/out/IWorldKernel.sol/IWorldModuleInstallation.json +1 -1
  124. package/out/IWorldRegistrationSystem.sol/IWorldRegistrationSystem.abi.json +27 -1
  125. package/out/IWorldRegistrationSystem.sol/IWorldRegistrationSystem.abi.json.d.ts +27 -1
  126. package/out/IWorldRegistrationSystem.sol/IWorldRegistrationSystem.json +1 -1
  127. package/out/{CoreModule.sol/CoreModule.abi.json → InitModule.sol/InitModule.abi.json} +145 -19
  128. package/out/{CoreModule.sol/CoreModule.abi.json.d.ts → InitModule.sol/InitModule.abi.json.d.ts} +145 -19
  129. package/out/InitModule.sol/InitModule.json +1 -0
  130. package/out/InitModuleAddress.sol/InitModuleAddress.abi.json +1 -0
  131. package/out/InitModuleAddress.sol/InitModuleAddress.json +1 -0
  132. package/out/InstalledModules.sol/InstalledModules.json +1 -1
  133. package/out/KeysInTable.sol/KeysInTable.json +1 -1
  134. package/out/KeysInTableHook.sol/KeysInTableHook.abi.json +16 -0
  135. package/out/KeysInTableHook.sol/KeysInTableHook.abi.json.d.ts +16 -0
  136. package/out/KeysInTableHook.sol/KeysInTableHook.json +1 -1
  137. package/out/KeysInTableModule.sol/KeysInTableModule.abi.json +3 -16
  138. package/out/KeysInTableModule.sol/KeysInTableModule.abi.json.d.ts +3 -16
  139. package/out/KeysInTableModule.sol/KeysInTableModule.json +1 -1
  140. package/out/KeysInTableModule.t.sol/KeysInTableModuleTest.abi.json +39 -6
  141. package/out/KeysInTableModule.t.sol/KeysInTableModuleTest.abi.json.d.ts +39 -6
  142. package/out/KeysInTableModule.t.sol/KeysInTableModuleTest.json +1 -1
  143. package/out/KeysWithValue.sol/KeysWithValue.json +1 -1
  144. package/out/KeysWithValueHook.sol/KeysWithValueHook.json +1 -1
  145. package/out/KeysWithValueModule.sol/KeysWithValueModule.abi.json +3 -16
  146. package/out/KeysWithValueModule.sol/KeysWithValueModule.abi.json.d.ts +3 -16
  147. package/out/KeysWithValueModule.sol/KeysWithValueModule.json +1 -1
  148. package/out/KeysWithValueModule.t.sol/KeysWithValueModuleTest.abi.json +39 -6
  149. package/out/KeysWithValueModule.t.sol/KeysWithValueModuleTest.abi.json.d.ts +39 -6
  150. package/out/KeysWithValueModule.t.sol/KeysWithValueModuleTest.json +1 -1
  151. package/out/LimitedCallContext.sol/LimitedCallContext.abi.json +7 -0
  152. package/out/LimitedCallContext.sol/LimitedCallContext.abi.json.d.ts +7 -0
  153. package/out/LimitedCallContext.sol/LimitedCallContext.json +1 -0
  154. package/out/Memory.sol/Memory.json +1 -1
  155. package/out/Module.sol/Module.abi.json +4 -17
  156. package/out/Module.sol/Module.abi.json.d.ts +4 -17
  157. package/out/Module.sol/Module.json +1 -1
  158. package/out/ModuleInstallationSystem.sol/ModuleInstallationSystem.abi.json +6 -1
  159. package/out/ModuleInstallationSystem.sol/ModuleInstallationSystem.abi.json.d.ts +6 -1
  160. package/out/ModuleInstallationSystem.sol/ModuleInstallationSystem.json +1 -1
  161. package/out/NamespaceDelegationControl.sol/NamespaceDelegationControl.json +1 -1
  162. package/out/NamespaceOwner.sol/NamespaceOwner.json +1 -1
  163. package/out/OperatorApproval.sol/OperatorApproval.json +1 -1
  164. package/out/Owners.sol/Owners.json +1 -1
  165. package/out/PackedCounter.sol/PackedCounterInstance.json +1 -1
  166. package/out/PackedCounter.sol/PackedCounterLib.json +1 -1
  167. package/out/Puppet.sol/Puppet.json +1 -1
  168. package/out/PuppetDelegationControl.sol/PuppetDelegationControl.json +1 -1
  169. package/out/PuppetFactorySystem.sol/PuppetFactorySystem.json +1 -1
  170. package/out/PuppetMaster.sol/PuppetMaster.json +1 -1
  171. package/out/PuppetModule.sol/PuppetModule.abi.json +119 -19
  172. package/out/PuppetModule.sol/PuppetModule.abi.json.d.ts +119 -19
  173. package/out/PuppetModule.sol/PuppetModule.json +1 -1
  174. package/out/PuppetModule.t.sol/PuppetModuleTest.abi.json +14 -0
  175. package/out/PuppetModule.t.sol/PuppetModuleTest.abi.json.d.ts +14 -0
  176. package/out/PuppetModule.t.sol/PuppetModuleTest.json +1 -1
  177. package/out/PuppetModule.t.sol/PuppetTestSystem.json +1 -1
  178. package/out/PuppetRegistry.sol/PuppetRegistry.json +1 -1
  179. package/out/{CoreSystem.sol/CoreSystem.abi.json → RegistrationSystem.sol/RegistrationSystem.abi.json} +154 -150
  180. package/out/{CoreSystem.sol/CoreSystem.abi.json.d.ts → RegistrationSystem.sol/RegistrationSystem.abi.json.d.ts} +154 -150
  181. package/out/RegistrationSystem.sol/RegistrationSystem.json +1 -0
  182. package/out/ResourceAccess.sol/ResourceAccess.json +1 -1
  183. package/out/ResourceId.sol/ResourceIdInstance.json +1 -1
  184. package/out/ResourceId.sol/ResourceIdLib.json +1 -1
  185. package/out/ResourceIds.sol/ResourceIds.json +1 -1
  186. package/out/RevertSubscriber.sol/RevertSubscriber.json +1 -1
  187. package/out/Schema.sol/SchemaInstance.json +1 -1
  188. package/out/Schema.sol/SchemaLib.json +1 -1
  189. package/out/SchemaEncodeHelper.sol/SchemaEncodeHelper.json +1 -1
  190. package/out/Slice.sol/SliceInstance.json +1 -1
  191. package/out/Slice.sol/SliceLib.json +1 -1
  192. package/out/StandardDelegationsModule.sol/StandardDelegationsModule.abi.json +119 -19
  193. package/out/StandardDelegationsModule.sol/StandardDelegationsModule.abi.json.d.ts +119 -19
  194. package/out/StandardDelegationsModule.sol/StandardDelegationsModule.json +1 -1
  195. package/out/StandardDelegationsModule.t.sol/StandardDelegationsModuleTest.json +1 -1
  196. package/out/StdAssertions.sol/StdAssertions.json +1 -1
  197. package/out/StdChains.sol/StdChains.json +1 -1
  198. package/out/StdCheats.sol/StdCheats.json +1 -1
  199. package/out/StdCheats.sol/StdCheatsSafe.json +1 -1
  200. package/out/StdError.sol/stdError.json +1 -1
  201. package/out/StdInvariant.sol/StdInvariant.json +1 -1
  202. package/out/StdJson.sol/stdJson.json +1 -1
  203. package/out/StdMath.sol/stdMath.json +1 -1
  204. package/out/StdStorage.sol/stdStorage.json +1 -1
  205. package/out/StdStorage.sol/stdStorageSafe.json +1 -1
  206. package/out/StdStyle.sol/StdStyle.json +1 -1
  207. package/out/StdUtils.sol/StdUtils.json +1 -1
  208. package/out/Storage.sol/Storage.json +1 -1
  209. package/out/StoreCore.sol/StoreCore.json +1 -1
  210. package/out/StoreCore.sol/StoreCoreInternal.json +1 -1
  211. package/out/StoreData.sol/StoreData.abi.json +16 -0
  212. package/out/StoreData.sol/StoreData.abi.json.d.ts +16 -0
  213. package/out/StoreData.sol/StoreData.json +1 -1
  214. package/out/StoreHook.sol/StoreHook.json +1 -1
  215. package/out/StoreHooks.sol/StoreHooks.json +1 -1
  216. package/out/StoreRead.sol/StoreRead.abi.json +16 -0
  217. package/out/StoreRead.sol/StoreRead.abi.json.d.ts +16 -0
  218. package/out/StoreRead.sol/StoreRead.json +1 -1
  219. package/out/StoreRegistrationSystem.sol/StoreRegistrationSystem.abi.json +149 -4
  220. package/out/StoreRegistrationSystem.sol/StoreRegistrationSystem.abi.json.d.ts +149 -4
  221. package/out/StoreRegistrationSystem.sol/StoreRegistrationSystem.json +1 -1
  222. package/out/StoreSwitch.sol/StoreSwitch.json +1 -1
  223. package/out/System.sol/System.json +1 -1
  224. package/out/SystemCall.sol/SystemCall.json +1 -1
  225. package/out/SystemHook.sol/SystemHook.json +1 -1
  226. package/out/SystemHooks.sol/SystemHooks.json +1 -1
  227. package/out/SystemRegistry.sol/SystemRegistry.json +1 -1
  228. package/out/SystemSwitch.sol/SystemSwitch.json +1 -1
  229. package/out/SystemSwitch.t.sol/EchoSystem.abi.json +98 -1
  230. package/out/SystemSwitch.t.sol/EchoSystem.abi.json.d.ts +98 -1
  231. package/out/SystemSwitch.t.sol/EchoSystem.json +1 -1
  232. package/out/SystemSwitch.t.sol/SystemSwitchTest.abi.json +59 -15
  233. package/out/SystemSwitch.t.sol/SystemSwitchTest.abi.json.d.ts +59 -15
  234. package/out/SystemSwitch.t.sol/SystemSwitchTest.json +1 -1
  235. package/out/SystemboundDelegationControl.sol/SystemboundDelegationControl.json +1 -1
  236. package/out/SystemboundDelegations.sol/SystemboundDelegations.json +1 -1
  237. package/out/Systems.sol/Systems.json +1 -1
  238. package/out/Tables.sol/Tables.json +1 -1
  239. package/out/Test.sol/Test.json +1 -1
  240. package/out/TightCoder.sol/TightCoder.json +1 -1
  241. package/out/TimeboundDelegationControl.sol/TimeboundDelegationControl.json +1 -1
  242. package/out/TimeboundDelegations.sol/TimeboundDelegations.json +1 -1
  243. package/out/TokenApproval.sol/TokenApproval.json +1 -1
  244. package/out/TokenURI.sol/TokenURI.json +1 -1
  245. package/out/TotalSupply.sol/TotalSupply.json +1 -1
  246. package/out/TwoFields.sol/TwoFields.json +1 -1
  247. package/out/UniqueEntity.sol/UniqueEntity.json +1 -1
  248. package/out/UniqueEntityModule.sol/UniqueEntityModule.abi.json +121 -21
  249. package/out/UniqueEntityModule.sol/UniqueEntityModule.abi.json.d.ts +121 -21
  250. package/out/UniqueEntityModule.sol/UniqueEntityModule.json +1 -1
  251. package/out/UniqueEntityModule.t.sol/UniqueEntityModuleTest.json +1 -1
  252. package/out/UniqueEntityModule.t.sol/UniqueEntityTestSystem.abi.json +68 -0
  253. package/out/UniqueEntityModule.t.sol/UniqueEntityTestSystem.abi.json.d.ts +68 -0
  254. package/out/UniqueEntityModule.t.sol/UniqueEntityTestSystem.json +1 -1
  255. package/out/UniqueEntitySystem.sol/UniqueEntitySystem.json +1 -1
  256. package/out/UsedKeysIndex.sol/UsedKeysIndex.json +1 -1
  257. package/out/UserDelegationControl.sol/UserDelegationControl.json +1 -1
  258. package/out/Vm.sol/Vm.json +1 -1
  259. package/out/Vm.sol/VmSafe.json +1 -1
  260. package/out/World.sol/World.abi.json +29 -2
  261. package/out/World.sol/World.abi.json.d.ts +29 -2
  262. package/out/World.sol/World.json +1 -1
  263. package/out/World.t.sol/EchoSystemHook.json +1 -1
  264. package/out/World.t.sol/IWorldTestSystem.abi.json +1 -1
  265. package/out/World.t.sol/IWorldTestSystem.abi.json.d.ts +1 -1
  266. package/out/World.t.sol/IWorldTestSystem.json +1 -1
  267. package/out/World.t.sol/PayableFallbackSystem.json +1 -1
  268. package/out/World.t.sol/RevertSystemHook.json +1 -1
  269. package/out/World.t.sol/WorldTest.abi.json +74 -6
  270. package/out/World.t.sol/WorldTest.abi.json.d.ts +74 -6
  271. package/out/World.t.sol/WorldTest.json +1 -1
  272. package/out/World.t.sol/WorldTestSystem.json +1 -1
  273. package/out/WorldContext.sol/WorldContextConsumer.json +1 -1
  274. package/out/WorldContext.sol/WorldContextConsumerLib.json +1 -1
  275. package/out/WorldContext.sol/WorldContextProviderLib.json +1 -1
  276. package/out/WorldRegistrationSystem.sol/WorldRegistrationSystem.abi.json +43 -1
  277. package/out/WorldRegistrationSystem.sol/WorldRegistrationSystem.abi.json.d.ts +43 -1
  278. package/out/WorldRegistrationSystem.sol/WorldRegistrationSystem.json +1 -1
  279. package/out/WorldResourceId.sol/WorldResourceIdInstance.json +1 -1
  280. package/out/WorldResourceId.sol/WorldResourceIdLib.json +1 -1
  281. package/out/console.sol/console.json +1 -1
  282. package/out/console2.sol/console2.json +1 -1
  283. package/out/constants.sol/LayoutOffsets.json +1 -1
  284. package/out/interfaces/IBaseWorld.sol/IBaseWorld.abi.json +105 -7
  285. package/out/interfaces/IBaseWorld.sol/IBaseWorld.abi.json.d.ts +105 -7
  286. package/out/interfaces/IBaseWorld.sol/IBaseWorld.json +1 -1
  287. package/out/query.t.sol/QueryTest.abi.json +39 -6
  288. package/out/query.t.sol/QueryTest.abi.json.d.ts +39 -6
  289. package/out/query.t.sol/QueryTest.json +1 -1
  290. package/out/safeconsole.sol/safeconsole.json +1 -1
  291. package/out/src/IERC165.sol/IERC165.json +1 -1
  292. package/out/tables/Balances.sol/Balances.json +1 -1
  293. package/out/test.sol/DSTest.json +1 -1
  294. package/package.json +9 -9
  295. package/src/index.sol +1 -1
  296. package/src/interfaces/IBaseWorld.sol +1 -1
  297. package/src/interfaces/IERC20System.sol +1 -1
  298. package/src/interfaces/IPuppetFactorySystem.sol +1 -1
  299. package/src/modules/erc20-puppet/ERC20Module.sol +18 -25
  300. package/src/modules/erc20-puppet/ERC20System.sol +1 -1
  301. package/src/modules/erc20-puppet/IERC20.sol +1 -1
  302. package/src/modules/erc20-puppet/IERC20Errors.sol +1 -1
  303. package/src/modules/erc20-puppet/IERC20Events.sol +1 -1
  304. package/src/modules/erc20-puppet/IERC20Mintable.sol +1 -1
  305. package/src/modules/erc20-puppet/constants.sol +1 -2
  306. package/src/modules/erc20-puppet/registerERC20.sol +1 -1
  307. package/src/modules/erc20-puppet/tables/Allowances.sol +2 -3
  308. package/src/modules/erc20-puppet/tables/ERC20Metadata.sol +2 -3
  309. package/src/modules/erc20-puppet/tables/ERC20Registry.sol +2 -3
  310. package/src/modules/erc20-puppet/tables/TotalSupply.sol +2 -3
  311. package/src/modules/erc20-puppet/utils.sol +1 -1
  312. package/src/modules/erc721-puppet/ERC721Module.sol +18 -25
  313. package/src/modules/erc721-puppet/ERC721System.sol +1 -1
  314. package/src/modules/erc721-puppet/IERC721.sol +1 -1
  315. package/src/modules/erc721-puppet/IERC721Errors.sol +1 -1
  316. package/src/modules/erc721-puppet/IERC721Events.sol +1 -1
  317. package/src/modules/erc721-puppet/IERC721Metadata.sol +1 -1
  318. package/src/modules/erc721-puppet/IERC721Mintable.sol +1 -1
  319. package/src/modules/erc721-puppet/IERC721Receiver.sol +1 -1
  320. package/src/modules/erc721-puppet/constants.sol +1 -2
  321. package/src/modules/erc721-puppet/registerERC721.sol +1 -1
  322. package/src/modules/erc721-puppet/tables/ERC721Metadata.sol +2 -3
  323. package/src/modules/erc721-puppet/tables/ERC721Registry.sol +2 -3
  324. package/src/modules/erc721-puppet/tables/OperatorApproval.sol +2 -3
  325. package/src/modules/erc721-puppet/tables/Owners.sol +2 -3
  326. package/src/modules/erc721-puppet/tables/TokenApproval.sol +2 -3
  327. package/src/modules/erc721-puppet/tables/TokenURI.sol +2 -3
  328. package/src/modules/erc721-puppet/utils.sol +1 -1
  329. package/src/modules/keysintable/KeysInTableHook.sol +1 -1
  330. package/src/modules/keysintable/KeysInTableModule.sol +4 -10
  331. package/src/modules/keysintable/constants.sol +1 -1
  332. package/src/modules/keysintable/getKeysInTable.sol +1 -1
  333. package/src/modules/keysintable/hasKey.sol +1 -1
  334. package/src/modules/keysintable/query.sol +1 -1
  335. package/src/modules/keysintable/tables/KeysInTable.sol +4 -6
  336. package/src/modules/keysintable/tables/UsedKeysIndex.sol +4 -6
  337. package/src/modules/keyswithvalue/KeysWithValueHook.sol +1 -1
  338. package/src/modules/keyswithvalue/KeysWithValueModule.sol +19 -14
  339. package/src/modules/keyswithvalue/constants.sol +1 -1
  340. package/src/modules/keyswithvalue/getKeysWithValue.sol +1 -1
  341. package/src/modules/keyswithvalue/getTargetTableId.sol +1 -1
  342. package/src/modules/keyswithvalue/tables/KeysWithValue.sol +2 -3
  343. package/src/modules/puppet/Puppet.sol +1 -1
  344. package/src/modules/puppet/PuppetDelegationControl.sol +1 -1
  345. package/src/modules/puppet/PuppetFactorySystem.sol +1 -1
  346. package/src/modules/puppet/PuppetMaster.sol +1 -1
  347. package/src/modules/puppet/PuppetModule.sol +24 -9
  348. package/src/modules/puppet/constants.sol +4 -3
  349. package/src/modules/puppet/createPuppet.sol +1 -1
  350. package/src/modules/puppet/tables/PuppetRegistry.sol +2 -3
  351. package/src/modules/puppet/utils.sol +1 -1
  352. package/src/modules/std-delegations/CallboundDelegationControl.sol +1 -1
  353. package/src/modules/std-delegations/StandardDelegationsModule.sol +2 -6
  354. package/src/modules/std-delegations/SystemboundDelegationControl.sol +1 -1
  355. package/src/modules/std-delegations/TimeboundDelegationControl.sol +1 -1
  356. package/src/modules/std-delegations/constants.sol +1 -3
  357. package/src/modules/std-delegations/tables/CallboundDelegations.sol +4 -6
  358. package/src/modules/std-delegations/tables/SystemboundDelegations.sol +4 -6
  359. package/src/modules/std-delegations/tables/TimeboundDelegations.sol +4 -6
  360. package/src/modules/tokens/tables/Balances.sol +2 -3
  361. package/src/modules/uniqueentity/UniqueEntityModule.sol +16 -15
  362. package/src/modules/uniqueentity/UniqueEntitySystem.sol +1 -1
  363. package/src/modules/uniqueentity/constants.sol +3 -3
  364. package/src/modules/uniqueentity/getUniqueEntity.sol +2 -3
  365. package/src/modules/uniqueentity/tables/UniqueEntity.sol +2 -3
  366. package/src/modules/utils/ArrayLib.sol +2 -2
  367. package/src/utils/AccessControlLib.sol +1 -1
  368. package/src/utils/SystemSwitch.sol +7 -10
  369. package/out/CoreModule.sol/CoreModule.json +0 -1
  370. package/out/CoreSystem.sol/CoreSystem.json +0 -1
  371. package/out/ICoreSystem.sol/ICoreSystem.json +0 -1
  372. package/out/IUniqueEntitySystem.sol/IUniqueEntitySystem.abi.json +0 -15
  373. package/out/IUniqueEntitySystem.sol/IUniqueEntitySystem.abi.json.d.ts +0 -15
  374. package/out/IUniqueEntitySystem.sol/IUniqueEntitySystem.json +0 -1
  375. package/out/world/src/IERC165.sol/IERC165.json +0 -1
  376. package/src/interfaces/IUniqueEntitySystem.sol +0 -7
  377. /package/out/{ICoreSystem.sol/ICoreSystem.abi.json → ERC165Checker.sol/ERC165Checker.abi.json} +0 -0
  378. /package/out/{world/src/IERC165.sol → IERC165.sol}/IERC165.abi.json +0 -0
  379. /package/out/{world/src/IERC165.sol → IERC165.sol}/IERC165.abi.json.d.ts +0 -0
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- pragma solidity >=0.8.21;
2
+ pragma solidity >=0.8.24;
3
3
 
4
4
  /* Autogenerated file. Do not edit manually. */
5
5
 
@@ -18,7 +18,6 @@ import { FieldLayout, FieldLayoutLib } from "@latticexyz/store/src/FieldLayout.s
18
18
  import { Schema, SchemaLib } from "@latticexyz/store/src/Schema.sol";
19
19
  import { PackedCounter, PackedCounterLib } from "@latticexyz/store/src/PackedCounter.sol";
20
20
  import { ResourceId } from "@latticexyz/store/src/ResourceId.sol";
21
- import { RESOURCE_TABLE, RESOURCE_OFFCHAIN_TABLE } from "@latticexyz/store/src/storeResourceTypes.sol";
22
21
 
23
22
  // Import user types
24
23
  import { ResourceId } from "@latticexyz/store/src/ResourceId.sol";
@@ -206,7 +205,7 @@ library ERC20Registry {
206
205
  * @notice Encode all of a record's fields.
207
206
  * @return The static (fixed length) data, encoded into a sequence of bytes.
208
207
  * @return The lengths of the dynamic fields (packed into a single bytes32 value).
209
- * @return The dyanmic (variable length) data, encoded into a sequence of bytes.
208
+ * @return The dynamic (variable length) data, encoded into a sequence of bytes.
210
209
  */
211
210
  function encode(address tokenAddress) internal pure returns (bytes memory, PackedCounter, bytes memory) {
212
211
  bytes memory _staticData = encodeStatic(tokenAddress);
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- pragma solidity >=0.8.21;
2
+ pragma solidity >=0.8.24;
3
3
 
4
4
  /* Autogenerated file. Do not edit manually. */
5
5
 
@@ -18,7 +18,6 @@ import { FieldLayout, FieldLayoutLib } from "@latticexyz/store/src/FieldLayout.s
18
18
  import { Schema, SchemaLib } from "@latticexyz/store/src/Schema.sol";
19
19
  import { PackedCounter, PackedCounterLib } from "@latticexyz/store/src/PackedCounter.sol";
20
20
  import { ResourceId } from "@latticexyz/store/src/ResourceId.sol";
21
- import { RESOURCE_TABLE, RESOURCE_OFFCHAIN_TABLE } from "@latticexyz/store/src/storeResourceTypes.sol";
22
21
 
23
22
  FieldLayout constant _fieldLayout = FieldLayout.wrap(
24
23
  0x0020010020000000000000000000000000000000000000000000000000000000
@@ -191,7 +190,7 @@ library TotalSupply {
191
190
  * @notice Encode all of a record's fields.
192
191
  * @return The static (fixed length) data, encoded into a sequence of bytes.
193
192
  * @return The lengths of the dynamic fields (packed into a single bytes32 value).
194
- * @return The dyanmic (variable length) data, encoded into a sequence of bytes.
193
+ * @return The dynamic (variable length) data, encoded into a sequence of bytes.
195
194
  */
196
195
  function encode(uint256 totalSupply) internal pure returns (bytes memory, PackedCounter, bytes memory) {
197
196
  bytes memory _staticData = encodeStatic(totalSupply);
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- pragma solidity >=0.8.21;
2
+ pragma solidity >=0.8.24;
3
3
 
4
4
  import { ResourceId } from "@latticexyz/store/src/ResourceId.sol";
5
5
  import { RESOURCE_TABLE } from "@latticexyz/store/src/storeResourceTypes.sol";
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- pragma solidity >=0.8.21;
2
+ pragma solidity >=0.8.24;
3
3
 
4
4
  import { ResourceIds } from "@latticexyz/store/src/codegen/tables/ResourceIds.sol";
5
5
  import { ResourceId } from "@latticexyz/store/src/ResourceId.sol";
@@ -7,13 +7,13 @@ import { Module } from "@latticexyz/world/src/Module.sol";
7
7
  import { WorldResourceIdLib } from "@latticexyz/world/src/WorldResourceId.sol";
8
8
  import { IBaseWorld } from "@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol";
9
9
  import { InstalledModules } from "@latticexyz/world/src/codegen/tables/InstalledModules.sol";
10
+ import { revertWithBytes } from "@latticexyz/world/src/revertWithBytes.sol";
10
11
 
11
12
  import { Puppet } from "../puppet/Puppet.sol";
12
13
  import { createPuppet } from "../puppet/createPuppet.sol";
13
- import { MODULE_NAME as PUPPET_MODULE_NAME } from "../puppet/constants.sol";
14
14
  import { Balances } from "../tokens/tables/Balances.sol";
15
15
 
16
- import { MODULE_NAME, MODULE_NAMESPACE, MODULE_NAMESPACE_ID, ERC721_REGISTRY_TABLE_ID } from "./constants.sol";
16
+ import { MODULE_NAMESPACE, MODULE_NAMESPACE_ID, ERC721_REGISTRY_TABLE_ID } from "./constants.sol";
17
17
  import { _erc721SystemId, _balancesTableId, _metadataTableId, _tokenUriTableId, _operatorApprovalTableId, _ownersTableId, _tokenApprovalTableId } from "./utils.sol";
18
18
  import { ERC721System } from "./ERC721System.sol";
19
19
 
@@ -29,37 +29,24 @@ contract ERC721Module is Module {
29
29
 
30
30
  address immutable registrationLibrary = address(new ERC721ModuleRegistrationLibrary());
31
31
 
32
- function getName() public pure override returns (bytes16) {
33
- return MODULE_NAME;
34
- }
35
-
36
- function _requireDependencies() internal {
37
- // Require PuppetModule to be installed
38
- if (InstalledModules.get(PUPPET_MODULE_NAME, keccak256(new bytes(0))) == address(0)) {
39
- revert Module_MissingDependency(string(bytes.concat(PUPPET_MODULE_NAME)));
40
- }
41
- }
42
-
43
- function install(bytes memory args) public {
32
+ function install(bytes memory encodedArgs) public {
44
33
  // Require the module to not be installed with these args yet
45
- if (InstalledModules.get(MODULE_NAME, keccak256(args)) != address(0)) {
46
- revert Module_AlreadyInstalled();
47
- }
34
+ requireNotInstalled(__self, encodedArgs);
48
35
 
49
- // Extract args
50
- (bytes14 namespace, ERC721MetadataData memory metadata) = abi.decode(args, (bytes14, ERC721MetadataData));
36
+ // Decode args
37
+ (bytes14 namespace, ERC721MetadataData memory metadata) = abi.decode(encodedArgs, (bytes14, ERC721MetadataData));
51
38
 
52
39
  // Require the namespace to not be the module's namespace
53
40
  if (namespace == MODULE_NAMESPACE) {
54
41
  revert ERC721Module_InvalidNamespace(namespace);
55
42
  }
56
43
 
57
- // Require dependencies
58
- _requireDependencies();
59
-
60
44
  // Register the ERC721 tables and system
61
45
  IBaseWorld world = IBaseWorld(_world());
62
- registrationLibrary.delegatecall(abi.encodeCall(ERC721ModuleRegistrationLibrary.register, (world, namespace)));
46
+ (bool success, bytes memory returnData) = registrationLibrary.delegatecall(
47
+ abi.encodeCall(ERC721ModuleRegistrationLibrary.register, (world, namespace))
48
+ );
49
+ if (!success) revertWithBytes(returnData);
63
50
 
64
51
  // Initialize the Metadata
65
52
  ERC721Metadata.set(_metadataTableId(namespace), metadata);
@@ -74,6 +61,7 @@ contract ERC721Module is Module {
74
61
 
75
62
  // Register the ERC721 in the ERC20Registry
76
63
  if (!ResourceIds.getExists(ERC721_REGISTRY_TABLE_ID)) {
64
+ world.registerNamespace(MODULE_NAMESPACE_ID);
77
65
  ERC721Registry.register(ERC721_REGISTRY_TABLE_ID);
78
66
  }
79
67
  ERC721Registry.set(ERC721_REGISTRY_TABLE_ID, namespaceId, puppet);
@@ -89,8 +77,13 @@ contract ERC721ModuleRegistrationLibrary {
89
77
  * Register systems and tables for a new ERC721 token in a given namespace
90
78
  */
91
79
  function register(IBaseWorld world, bytes14 namespace) public {
92
- // Register the tables
80
+ // Register the namespace if it doesn't exist yet
81
+ ResourceId tokenNamespace = WorldResourceIdLib.encodeNamespace(namespace);
82
+ if (!ResourceIds.getExists(tokenNamespace)) {
83
+ world.registerNamespace(tokenNamespace);
84
+ }
93
85
 
86
+ // Register the tables
94
87
  OperatorApproval.register(_operatorApprovalTableId(namespace));
95
88
  Owners.register(_ownersTableId(namespace));
96
89
  TokenApproval.register(_tokenApprovalTableId(namespace));
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- pragma solidity >=0.8.21;
2
+ pragma solidity >=0.8.24;
3
3
 
4
4
  import { ResourceId } from "@latticexyz/store/src/ResourceId.sol";
5
5
  import { System } from "@latticexyz/world/src/System.sol";
@@ -1,6 +1,6 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/IERC721.sol)
3
- pragma solidity >=0.8.21;
3
+ pragma solidity >=0.8.24;
4
4
 
5
5
  import { IERC721Events } from "./IERC721Events.sol";
6
6
  import { IERC721Errors } from "./IERC721Errors.sol";
@@ -1,6 +1,6 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  // OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol)
3
- pragma solidity >=0.8.21;
3
+ pragma solidity >=0.8.24;
4
4
 
5
5
  /**
6
6
  * @dev Standard ERC721 Errors
@@ -1,6 +1,6 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/IERC721.sol)
3
- pragma solidity >=0.8.21;
3
+ pragma solidity >=0.8.24;
4
4
 
5
5
  /**
6
6
  * @dev Events emitted by an ERC721 compliant contract.
@@ -1,6 +1,6 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/extensions/IERC721Metadata.sol)
3
- pragma solidity >=0.8.21;
3
+ pragma solidity >=0.8.24;
4
4
 
5
5
  import { IERC721 } from "./IERC721.sol";
6
6
 
@@ -1,6 +1,6 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)
3
- pragma solidity >=0.8.21;
3
+ pragma solidity >=0.8.24;
4
4
 
5
5
  import { IERC721 } from "./IERC721.sol";
6
6
 
@@ -1,6 +1,6 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/IERC721Receiver.sol)
3
- pragma solidity >=0.8.21;
3
+ pragma solidity >=0.8.24;
4
4
 
5
5
  /**
6
6
  * @title ERC721 token receiver interface
@@ -1,10 +1,9 @@
1
1
  // SPDX-License-Identifier: MIT
2
- pragma solidity >=0.8.21;
2
+ pragma solidity >=0.8.24;
3
3
  import { ResourceId } from "@latticexyz/store/src/ResourceId.sol";
4
4
  import { RESOURCE_TABLE } from "@latticexyz/store/src/storeResourceTypes.sol";
5
5
  import { RESOURCE_SYSTEM, RESOURCE_NAMESPACE } from "@latticexyz/world/src/worldResourceTypes.sol";
6
6
 
7
- bytes16 constant MODULE_NAME = "erc721-puppet";
8
7
  bytes14 constant MODULE_NAMESPACE = "erc721-puppet";
9
8
  ResourceId constant MODULE_NAMESPACE_ID = ResourceId.wrap(
10
9
  bytes32(abi.encodePacked(RESOURCE_NAMESPACE, MODULE_NAMESPACE))
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- pragma solidity >=0.8.21;
2
+ pragma solidity >=0.8.24;
3
3
 
4
4
  import { IBaseWorld } from "@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol";
5
5
  import { NamespaceOwner } from "@latticexyz/world/src/codegen/tables/NamespaceOwner.sol";
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- pragma solidity >=0.8.21;
2
+ pragma solidity >=0.8.24;
3
3
 
4
4
  /* Autogenerated file. Do not edit manually. */
5
5
 
@@ -18,7 +18,6 @@ import { FieldLayout, FieldLayoutLib } from "@latticexyz/store/src/FieldLayout.s
18
18
  import { Schema, SchemaLib } from "@latticexyz/store/src/Schema.sol";
19
19
  import { PackedCounter, PackedCounterLib } from "@latticexyz/store/src/PackedCounter.sol";
20
20
  import { ResourceId } from "@latticexyz/store/src/ResourceId.sol";
21
- import { RESOURCE_TABLE, RESOURCE_OFFCHAIN_TABLE } from "@latticexyz/store/src/storeResourceTypes.sol";
22
21
 
23
22
  FieldLayout constant _fieldLayout = FieldLayout.wrap(
24
23
  0x0000000300000000000000000000000000000000000000000000000000000000
@@ -709,7 +708,7 @@ library ERC721Metadata {
709
708
  * @notice Encode all of a record's fields.
710
709
  * @return The static (fixed length) data, encoded into a sequence of bytes.
711
710
  * @return The lengths of the dynamic fields (packed into a single bytes32 value).
712
- * @return The dyanmic (variable length) data, encoded into a sequence of bytes.
711
+ * @return The dynamic (variable length) data, encoded into a sequence of bytes.
713
712
  */
714
713
  function encode(
715
714
  string memory name,
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- pragma solidity >=0.8.21;
2
+ pragma solidity >=0.8.24;
3
3
 
4
4
  /* Autogenerated file. Do not edit manually. */
5
5
 
@@ -18,7 +18,6 @@ import { FieldLayout, FieldLayoutLib } from "@latticexyz/store/src/FieldLayout.s
18
18
  import { Schema, SchemaLib } from "@latticexyz/store/src/Schema.sol";
19
19
  import { PackedCounter, PackedCounterLib } from "@latticexyz/store/src/PackedCounter.sol";
20
20
  import { ResourceId } from "@latticexyz/store/src/ResourceId.sol";
21
- import { RESOURCE_TABLE, RESOURCE_OFFCHAIN_TABLE } from "@latticexyz/store/src/storeResourceTypes.sol";
22
21
 
23
22
  // Import user types
24
23
  import { ResourceId } from "@latticexyz/store/src/ResourceId.sol";
@@ -206,7 +205,7 @@ library ERC721Registry {
206
205
  * @notice Encode all of a record's fields.
207
206
  * @return The static (fixed length) data, encoded into a sequence of bytes.
208
207
  * @return The lengths of the dynamic fields (packed into a single bytes32 value).
209
- * @return The dyanmic (variable length) data, encoded into a sequence of bytes.
208
+ * @return The dynamic (variable length) data, encoded into a sequence of bytes.
210
209
  */
211
210
  function encode(address tokenAddress) internal pure returns (bytes memory, PackedCounter, bytes memory) {
212
211
  bytes memory _staticData = encodeStatic(tokenAddress);
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- pragma solidity >=0.8.21;
2
+ pragma solidity >=0.8.24;
3
3
 
4
4
  /* Autogenerated file. Do not edit manually. */
5
5
 
@@ -18,7 +18,6 @@ import { FieldLayout, FieldLayoutLib } from "@latticexyz/store/src/FieldLayout.s
18
18
  import { Schema, SchemaLib } from "@latticexyz/store/src/Schema.sol";
19
19
  import { PackedCounter, PackedCounterLib } from "@latticexyz/store/src/PackedCounter.sol";
20
20
  import { ResourceId } from "@latticexyz/store/src/ResourceId.sol";
21
- import { RESOURCE_TABLE, RESOURCE_OFFCHAIN_TABLE } from "@latticexyz/store/src/storeResourceTypes.sol";
22
21
 
23
22
  FieldLayout constant _fieldLayout = FieldLayout.wrap(
24
23
  0x0001010001000000000000000000000000000000000000000000000000000000
@@ -215,7 +214,7 @@ library OperatorApproval {
215
214
  * @notice Encode all of a record's fields.
216
215
  * @return The static (fixed length) data, encoded into a sequence of bytes.
217
216
  * @return The lengths of the dynamic fields (packed into a single bytes32 value).
218
- * @return The dyanmic (variable length) data, encoded into a sequence of bytes.
217
+ * @return The dynamic (variable length) data, encoded into a sequence of bytes.
219
218
  */
220
219
  function encode(bool approved) internal pure returns (bytes memory, PackedCounter, bytes memory) {
221
220
  bytes memory _staticData = encodeStatic(approved);
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- pragma solidity >=0.8.21;
2
+ pragma solidity >=0.8.24;
3
3
 
4
4
  /* Autogenerated file. Do not edit manually. */
5
5
 
@@ -18,7 +18,6 @@ import { FieldLayout, FieldLayoutLib } from "@latticexyz/store/src/FieldLayout.s
18
18
  import { Schema, SchemaLib } from "@latticexyz/store/src/Schema.sol";
19
19
  import { PackedCounter, PackedCounterLib } from "@latticexyz/store/src/PackedCounter.sol";
20
20
  import { ResourceId } from "@latticexyz/store/src/ResourceId.sol";
21
- import { RESOURCE_TABLE, RESOURCE_OFFCHAIN_TABLE } from "@latticexyz/store/src/storeResourceTypes.sol";
22
21
 
23
22
  FieldLayout constant _fieldLayout = FieldLayout.wrap(
24
23
  0x0014010014000000000000000000000000000000000000000000000000000000
@@ -203,7 +202,7 @@ library Owners {
203
202
  * @notice Encode all of a record's fields.
204
203
  * @return The static (fixed length) data, encoded into a sequence of bytes.
205
204
  * @return The lengths of the dynamic fields (packed into a single bytes32 value).
206
- * @return The dyanmic (variable length) data, encoded into a sequence of bytes.
205
+ * @return The dynamic (variable length) data, encoded into a sequence of bytes.
207
206
  */
208
207
  function encode(address owner) internal pure returns (bytes memory, PackedCounter, bytes memory) {
209
208
  bytes memory _staticData = encodeStatic(owner);
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- pragma solidity >=0.8.21;
2
+ pragma solidity >=0.8.24;
3
3
 
4
4
  /* Autogenerated file. Do not edit manually. */
5
5
 
@@ -18,7 +18,6 @@ import { FieldLayout, FieldLayoutLib } from "@latticexyz/store/src/FieldLayout.s
18
18
  import { Schema, SchemaLib } from "@latticexyz/store/src/Schema.sol";
19
19
  import { PackedCounter, PackedCounterLib } from "@latticexyz/store/src/PackedCounter.sol";
20
20
  import { ResourceId } from "@latticexyz/store/src/ResourceId.sol";
21
- import { RESOURCE_TABLE, RESOURCE_OFFCHAIN_TABLE } from "@latticexyz/store/src/storeResourceTypes.sol";
22
21
 
23
22
  FieldLayout constant _fieldLayout = FieldLayout.wrap(
24
23
  0x0014010014000000000000000000000000000000000000000000000000000000
@@ -203,7 +202,7 @@ library TokenApproval {
203
202
  * @notice Encode all of a record's fields.
204
203
  * @return The static (fixed length) data, encoded into a sequence of bytes.
205
204
  * @return The lengths of the dynamic fields (packed into a single bytes32 value).
206
- * @return The dyanmic (variable length) data, encoded into a sequence of bytes.
205
+ * @return The dynamic (variable length) data, encoded into a sequence of bytes.
207
206
  */
208
207
  function encode(address account) internal pure returns (bytes memory, PackedCounter, bytes memory) {
209
208
  bytes memory _staticData = encodeStatic(account);
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- pragma solidity >=0.8.21;
2
+ pragma solidity >=0.8.24;
3
3
 
4
4
  /* Autogenerated file. Do not edit manually. */
5
5
 
@@ -18,7 +18,6 @@ import { FieldLayout, FieldLayoutLib } from "@latticexyz/store/src/FieldLayout.s
18
18
  import { Schema, SchemaLib } from "@latticexyz/store/src/Schema.sol";
19
19
  import { PackedCounter, PackedCounterLib } from "@latticexyz/store/src/PackedCounter.sol";
20
20
  import { ResourceId } from "@latticexyz/store/src/ResourceId.sol";
21
- import { RESOURCE_TABLE, RESOURCE_OFFCHAIN_TABLE } from "@latticexyz/store/src/storeResourceTypes.sol";
22
21
 
23
22
  FieldLayout constant _fieldLayout = FieldLayout.wrap(
24
23
  0x0000000100000000000000000000000000000000000000000000000000000000
@@ -458,7 +457,7 @@ library TokenURI {
458
457
  * @notice Encode all of a record's fields.
459
458
  * @return The static (fixed length) data, encoded into a sequence of bytes.
460
459
  * @return The lengths of the dynamic fields (packed into a single bytes32 value).
461
- * @return The dyanmic (variable length) data, encoded into a sequence of bytes.
460
+ * @return The dynamic (variable length) data, encoded into a sequence of bytes.
462
461
  */
463
462
  function encode(string memory tokenURI) internal pure returns (bytes memory, PackedCounter, bytes memory) {
464
463
  bytes memory _staticData;
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- pragma solidity >=0.8.21;
2
+ pragma solidity >=0.8.24;
3
3
 
4
4
  import { ResourceId } from "@latticexyz/store/src/ResourceId.sol";
5
5
  import { RESOURCE_TABLE } from "@latticexyz/store/src/storeResourceTypes.sol";
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- pragma solidity >=0.8.21;
2
+ pragma solidity >=0.8.24;
3
3
 
4
4
  import { PackedCounter } from "@latticexyz/store/src/PackedCounter.sol";
5
5
  import { FieldLayout } from "@latticexyz/store/src/FieldLayout.sol";
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- pragma solidity >=0.8.21;
2
+ pragma solidity >=0.8.24;
3
3
 
4
4
  import { BEFORE_SET_RECORD, AFTER_SPLICE_STATIC_DATA, AFTER_SPLICE_DYNAMIC_DATA, BEFORE_DELETE_RECORD } from "@latticexyz/store/src/storeHookTypes.sol";
5
5
  import { ResourceIds } from "@latticexyz/store/src/codegen/tables/ResourceIds.sol";
@@ -33,19 +33,13 @@ contract KeysInTableModule is Module {
33
33
  // from the source table id (passed as argument to the hook methods)
34
34
  KeysInTableHook private immutable hook = new KeysInTableHook();
35
35
 
36
- function getName() public pure returns (bytes16) {
37
- return bytes16("keysInTable");
38
- }
39
-
40
- function installRoot(bytes memory args) public override {
36
+ function installRoot(bytes memory encodedArgs) public override {
41
37
  // Naive check to ensure this is only installed once
42
38
  // TODO: only revert if there's nothing to do
43
- if (InstalledModules.getModuleAddress(getName(), keccak256(args)) != address(0)) {
44
- revert Module_AlreadyInstalled();
45
- }
39
+ requireNotInstalled(__self, encodedArgs);
46
40
 
47
41
  // Extract source table id from args
48
- ResourceId sourceTableId = ResourceId.wrap(abi.decode(args, (bytes32)));
42
+ ResourceId sourceTableId = ResourceId.wrap(abi.decode(encodedArgs, (bytes32)));
49
43
 
50
44
  IBaseWorld world = IBaseWorld(_world());
51
45
 
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- pragma solidity >=0.8.21;
2
+ pragma solidity >=0.8.24;
3
3
 
4
4
  // Limiting the module namespace to 8 bytes so the last 8 bytes
5
5
  // can be used for an identifier of the source table namespace to avoid
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- pragma solidity >=0.8.21;
2
+ pragma solidity >=0.8.24;
3
3
 
4
4
  import { IStore } from "@latticexyz/store/src/IStore.sol";
5
5
  import { Schema } from "@latticexyz/store/src/Schema.sol";
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- pragma solidity >=0.8.21;
2
+ pragma solidity >=0.8.24;
3
3
 
4
4
  import { IStore } from "@latticexyz/store/src/IStore.sol";
5
5
  import { ResourceId } from "@latticexyz/store/src/ResourceId.sol";
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- pragma solidity >=0.8.21;
2
+ pragma solidity >=0.8.24;
3
3
 
4
4
  import { IStore } from "@latticexyz/store/src/IStore.sol";
5
5
  import { PackedCounter } from "@latticexyz/store/src/PackedCounter.sol";
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- pragma solidity >=0.8.21;
2
+ pragma solidity >=0.8.24;
3
3
 
4
4
  /* Autogenerated file. Do not edit manually. */
5
5
 
@@ -18,14 +18,12 @@ import { FieldLayout, FieldLayoutLib } from "@latticexyz/store/src/FieldLayout.s
18
18
  import { Schema, SchemaLib } from "@latticexyz/store/src/Schema.sol";
19
19
  import { PackedCounter, PackedCounterLib } from "@latticexyz/store/src/PackedCounter.sol";
20
20
  import { ResourceId } from "@latticexyz/store/src/ResourceId.sol";
21
- import { RESOURCE_TABLE, RESOURCE_OFFCHAIN_TABLE } from "@latticexyz/store/src/storeResourceTypes.sol";
22
21
 
23
22
  // Import user types
24
23
  import { ResourceId } from "@latticexyz/store/src/ResourceId.sol";
25
24
 
26
- ResourceId constant _tableId = ResourceId.wrap(
27
- bytes32(abi.encodePacked(RESOURCE_TABLE, bytes14(""), bytes16("KeysInTable")))
28
- );
25
+ // Hex below is the result of `WorldResourceIdLib.encode({ namespace: "", name: "KeysInTable", typeId: RESOURCE_TABLE });`
26
+ ResourceId constant _tableId = ResourceId.wrap(0x746200000000000000000000000000004b657973496e5461626c650000000000);
29
27
  ResourceId constant KeysInTableTableId = _tableId;
30
28
 
31
29
  FieldLayout constant _fieldLayout = FieldLayout.wrap(
@@ -1628,7 +1626,7 @@ library KeysInTable {
1628
1626
  * @notice Encode all of a record's fields.
1629
1627
  * @return The static (fixed length) data, encoded into a sequence of bytes.
1630
1628
  * @return The lengths of the dynamic fields (packed into a single bytes32 value).
1631
- * @return The dyanmic (variable length) data, encoded into a sequence of bytes.
1629
+ * @return The dynamic (variable length) data, encoded into a sequence of bytes.
1632
1630
  */
1633
1631
  function encode(
1634
1632
  bytes32[] memory keys0,
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- pragma solidity >=0.8.21;
2
+ pragma solidity >=0.8.24;
3
3
 
4
4
  /* Autogenerated file. Do not edit manually. */
5
5
 
@@ -18,14 +18,12 @@ import { FieldLayout, FieldLayoutLib } from "@latticexyz/store/src/FieldLayout.s
18
18
  import { Schema, SchemaLib } from "@latticexyz/store/src/Schema.sol";
19
19
  import { PackedCounter, PackedCounterLib } from "@latticexyz/store/src/PackedCounter.sol";
20
20
  import { ResourceId } from "@latticexyz/store/src/ResourceId.sol";
21
- import { RESOURCE_TABLE, RESOURCE_OFFCHAIN_TABLE } from "@latticexyz/store/src/storeResourceTypes.sol";
22
21
 
23
22
  // Import user types
24
23
  import { ResourceId } from "@latticexyz/store/src/ResourceId.sol";
25
24
 
26
- ResourceId constant _tableId = ResourceId.wrap(
27
- bytes32(abi.encodePacked(RESOURCE_TABLE, bytes14(""), bytes16("UsedKeysIndex")))
28
- );
25
+ // Hex below is the result of `WorldResourceIdLib.encode({ namespace: "", name: "UsedKeysIndex", typeId: RESOURCE_TABLE });`
26
+ ResourceId constant _tableId = ResourceId.wrap(0x74620000000000000000000000000000557365644b657973496e646578000000);
29
27
  ResourceId constant UsedKeysIndexTableId = _tableId;
30
28
 
31
29
  FieldLayout constant _fieldLayout = FieldLayout.wrap(
@@ -412,7 +410,7 @@ library UsedKeysIndex {
412
410
  * @notice Encode all of a record's fields.
413
411
  * @return The static (fixed length) data, encoded into a sequence of bytes.
414
412
  * @return The lengths of the dynamic fields (packed into a single bytes32 value).
415
- * @return The dyanmic (variable length) data, encoded into a sequence of bytes.
413
+ * @return The dynamic (variable length) data, encoded into a sequence of bytes.
416
414
  */
417
415
  function encode(bool has, uint40 index) internal pure returns (bytes memory, PackedCounter, bytes memory) {
418
416
  bytes memory _staticData = encodeStatic(has, index);
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- pragma solidity >=0.8.21;
2
+ pragma solidity >=0.8.24;
3
3
 
4
4
  import { StoreHook } from "@latticexyz/store/src/StoreHook.sol";
5
5
  import { Bytes } from "@latticexyz/store/src/Bytes.sol";
@@ -1,9 +1,10 @@
1
1
  // SPDX-License-Identifier: MIT
2
- pragma solidity >=0.8.21;
2
+ pragma solidity >=0.8.24;
3
3
  import { StoreSwitch } from "@latticexyz/store/src/StoreSwitch.sol";
4
4
  import { BEFORE_SET_RECORD, BEFORE_SPLICE_STATIC_DATA, AFTER_SPLICE_STATIC_DATA, BEFORE_SPLICE_DYNAMIC_DATA, AFTER_SPLICE_DYNAMIC_DATA, BEFORE_DELETE_RECORD } from "@latticexyz/store/src/storeHookTypes.sol";
5
- import { Module } from "@latticexyz/world/src/Module.sol";
5
+ import { ResourceIds } from "@latticexyz/store/src/codegen/tables/ResourceIds.sol";
6
6
 
7
+ import { Module } from "@latticexyz/world/src/Module.sol";
7
8
  import { IBaseWorld } from "@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol";
8
9
  import { InstalledModules } from "@latticexyz/world/src/codegen/index.sol";
9
10
 
@@ -34,29 +35,31 @@ contract KeysWithValueModule is Module {
34
35
  // from the source table id (passed as argument to the hook methods)
35
36
  KeysWithValueHook private immutable hook = new KeysWithValueHook();
36
37
 
37
- function getName() public pure returns (bytes16) {
38
- return bytes16("index");
39
- }
40
-
41
- function installRoot(bytes memory args) public {
38
+ function installRoot(bytes memory encodedArgs) public {
42
39
  // Naive check to ensure this is only installed once
43
40
  // TODO: only revert if there's nothing to do
44
- if (InstalledModules.getModuleAddress(getName(), keccak256(args)) != address(0)) {
45
- revert Module_AlreadyInstalled();
46
- }
41
+ requireNotInstalled(__self, encodedArgs);
47
42
 
48
43
  // Extract source table id from args
49
- ResourceId sourceTableId = ResourceId.wrap(abi.decode(args, (bytes32)));
50
- ResourceId targetTableSelector = getTargetTableId(MODULE_NAMESPACE, sourceTableId);
44
+ ResourceId sourceTableId = ResourceId.wrap(abi.decode(encodedArgs, (bytes32)));
45
+ ResourceId targetTableId = getTargetTableId(MODULE_NAMESPACE, sourceTableId);
51
46
 
52
47
  IBaseWorld world = IBaseWorld(_world());
53
48
 
49
+ // Register the target namespace if it doesn't exist yet
50
+ if (!ResourceIds.getExists(targetTableId.getNamespaceId())) {
51
+ (bool registrationSuccess, bytes memory registrationReturnData) = address(world).delegatecall(
52
+ abi.encodeCall(world.registerNamespace, (targetTableId.getNamespaceId()))
53
+ );
54
+ if (!registrationSuccess) revertWithBytes(registrationReturnData);
55
+ }
56
+
54
57
  // Register the target table
55
58
  (bool success, bytes memory returnData) = address(world).delegatecall(
56
59
  abi.encodeCall(
57
60
  world.registerTable,
58
61
  (
59
- targetTableSelector,
62
+ targetTableId,
60
63
  KeysWithValue.getFieldLayout(),
61
64
  KeysWithValue.getKeySchema(),
62
65
  KeysWithValue.getValueSchema(),
@@ -66,9 +69,11 @@ contract KeysWithValueModule is Module {
66
69
  )
67
70
  );
68
71
 
72
+ if (!success) revertWithBytes(returnData);
73
+
69
74
  // Grant the hook access to the target table
70
75
  (success, returnData) = address(world).delegatecall(
71
- abi.encodeCall(world.grantAccess, (targetTableSelector, address(hook)))
76
+ abi.encodeCall(world.grantAccess, (targetTableId, address(hook)))
72
77
  );
73
78
 
74
79
  if (!success) revertWithBytes(returnData);
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- pragma solidity >=0.8.21;
2
+ pragma solidity >=0.8.24;
3
3
 
4
4
  // Limiting the module namespace to 7 bytes so the remaining 7 bytes
5
5
  // can be used for an identifier of the source table namespace to avoid
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- pragma solidity >=0.8.21;
2
+ pragma solidity >=0.8.24;
3
3
 
4
4
  import { IStore } from "@latticexyz/store/src/IStore.sol";
5
5
  import { PackedCounter } from "@latticexyz/store/src/PackedCounter.sol";
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- pragma solidity >=0.8.21;
2
+ pragma solidity >=0.8.24;
3
3
 
4
4
  import { TYPE_BITS } from "@latticexyz/store/src/ResourceId.sol";
5
5
  import { ResourceId, WorldResourceIdInstance, NAME_BITS } from "@latticexyz/world/src/WorldResourceId.sol";