@seedprotocol/sdk 0.3.0 → 0.3.1

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 (200) hide show
  1. package/dist/{ArweaveClient-CmJYeuq1.js → ArweaveClient-C0g0es2v.js} +2 -2
  2. package/dist/{ArweaveClient-EXXrXUzz.js.map → ArweaveClient-C0g0es2v.js.map} +1 -1
  3. package/dist/{ArweaveClient-EXXrXUzz.js → ArweaveClient-CzkBgiZY.js} +2 -2
  4. package/dist/{ArweaveClient-CmJYeuq1.js.map → ArweaveClient-CzkBgiZY.js.map} +1 -1
  5. package/dist/{Db-CESKJH-G.js → Db-C4oog-0n.js} +3 -3
  6. package/dist/{Db-CESKJH-G.js.map → Db-C4oog-0n.js.map} +1 -1
  7. package/dist/{Db-DiTPSbQ8.js → Db-VPouegkr.js} +3 -3
  8. package/dist/{Db-DiTPSbQ8.js.map → Db-VPouegkr.js.map} +1 -1
  9. package/dist/{EasClient-BesHK2bO.js → EasClient-B9a3NsTi.js} +2 -2
  10. package/dist/{EasClient-BesHK2bO.js.map → EasClient-B9a3NsTi.js.map} +1 -1
  11. package/dist/{EasClient-Cop6WtWl.js → EasClient-DQ93i2ci.js} +2 -2
  12. package/dist/{EasClient-Cop6WtWl.js.map → EasClient-DQ93i2ci.js.map} +1 -1
  13. package/dist/{FileManager-DTzkncLh.js → FileManager-_ErxVuwb.js} +8 -5
  14. package/dist/FileManager-_ErxVuwb.js.map +1 -0
  15. package/dist/{Item-B5Tz-Y7t.js → Item-D9HFPxsK.js} +3 -3
  16. package/dist/{Item-B5Tz-Y7t.js.map → Item-D9HFPxsK.js.map} +1 -1
  17. package/dist/{ItemProperty-DBV0Iib_.js → ItemProperty-BdtvKrEy.js} +3 -3
  18. package/dist/{ItemProperty-DBV0Iib_.js.map → ItemProperty-BdtvKrEy.js.map} +1 -1
  19. package/dist/{QueryClient-C7a0NHCt.js → QueryClient-Bmnv_moN.js} +2 -2
  20. package/dist/{QueryClient-C7a0NHCt.js.map → QueryClient-Bmnv_moN.js.map} +1 -1
  21. package/dist/{QueryClient-BnwbHtqe.js → QueryClient-hzOtFe99.js} +2 -2
  22. package/dist/{QueryClient-BnwbHtqe.js.map → QueryClient-hzOtFe99.js.map} +1 -1
  23. package/dist/bin.js +5 -5
  24. package/dist/bin.js.map +1 -1
  25. package/dist/{constants-CWg2B3Au.js → constants-Bhl5dZpN.js} +4 -1
  26. package/dist/constants-Bhl5dZpN.js.map +1 -0
  27. package/dist/{index-CQ9FS10O.js → index-BAtjd9W-.js} +3 -3
  28. package/dist/index-BAtjd9W-.js.map +1 -0
  29. package/dist/{index-BHGJ-Es9.js → index-BSR5hv7Q.js} +59 -27
  30. package/dist/index-BSR5hv7Q.js.map +1 -0
  31. package/dist/main.js +2 -2
  32. package/dist/{seed.schema.config-DDzfQguf.js → seed.schema.config-BxJYabim.js} +3 -3
  33. package/dist/{seed.schema.config-DDzfQguf.js.map → seed.schema.config-BxJYabim.js.map} +1 -1
  34. package/dist/src/AppStateSchema.ts +10 -0
  35. package/dist/src/ArweaveClient.ts +13 -0
  36. package/dist/src/Attestation.ts +21 -0
  37. package/dist/src/BaseArweaveClient.ts +13 -0
  38. package/dist/src/BaseClientManager.ts +35 -0
  39. package/dist/src/BaseDb.ts +35 -0
  40. package/dist/src/BaseEasClient.ts +14 -0
  41. package/dist/src/BaseFileManager.ts +60 -0
  42. package/dist/src/BaseItem.ts +413 -0
  43. package/dist/src/BaseItemProperty.ts +416 -0
  44. package/dist/src/BaseQueryClient.ts +13 -0
  45. package/dist/src/ClientManager.ts +63 -0
  46. package/dist/src/ConfigSchema.ts +15 -0
  47. package/dist/src/Db.ts +82 -0
  48. package/dist/src/EasClient.ts +13 -0
  49. package/dist/src/FileDownloader.ts +63 -0
  50. package/dist/src/FileManager.ts +59 -0
  51. package/dist/src/IDb.ts +7 -0
  52. package/dist/src/IEasClient.ts +2 -0
  53. package/dist/src/IItem.ts +26 -0
  54. package/dist/src/IItemProperty.ts +28 -0
  55. package/dist/src/IQueryClient.ts +11 -0
  56. package/dist/src/ImageResizer.ts +81 -0
  57. package/dist/src/Item.ts +12 -0
  58. package/dist/src/ItemProperty.ts +9 -0
  59. package/dist/src/MetadataSchema.ts +28 -0
  60. package/dist/src/ModelSchema.ts +46 -0
  61. package/dist/src/ModelUidSchema.ts +16 -0
  62. package/dist/src/PropertyUidSchema.ts +16 -0
  63. package/dist/src/QueryClient.ts +26 -0
  64. package/dist/src/Schema.ts +17 -0
  65. package/dist/src/SeedProtocolSdk.d.ts +19 -0
  66. package/dist/src/SeedSchema.ts +29 -0
  67. package/dist/src/VersionSchema.ts +16 -0
  68. package/dist/src/actors.ts +295 -0
  69. package/dist/src/addModelsToDb.ts +152 -0
  70. package/dist/src/allItems.ts +31 -0
  71. package/dist/src/analyzeInput.ts +144 -0
  72. package/dist/src/browser.app.db.config.ts +27 -0
  73. package/dist/src/browser.ts +30 -0
  74. package/dist/src/checkStatus.ts +57 -0
  75. package/dist/src/clientManagerMachine.ts +59 -0
  76. package/dist/src/configureFs.ts +98 -0
  77. package/dist/src/connectToDb.ts +41 -0
  78. package/dist/src/connectionManager.ts +67 -0
  79. package/dist/src/constants.ts +125 -0
  80. package/dist/src/content-hash.ts +30 -0
  81. package/dist/src/create.ts +39 -0
  82. package/dist/src/createMetadata.ts +77 -0
  83. package/dist/src/createNewItem.ts +61 -0
  84. package/dist/src/createPublishAttempt.ts +16 -0
  85. package/dist/src/createSeed.ts +31 -0
  86. package/dist/src/createSeeds.ts +24 -0
  87. package/dist/src/createVersion.ts +33 -0
  88. package/dist/src/dbMachine.ts +182 -0
  89. package/dist/src/deleteItem.ts +19 -0
  90. package/dist/src/download.ts +208 -0
  91. package/dist/src/drizzle.ts +78 -0
  92. package/dist/src/eas.ts +40 -0
  93. package/dist/src/environment.ts +35 -0
  94. package/dist/src/eventBus.ts +5 -0
  95. package/dist/src/events.ts +14 -0
  96. package/dist/src/fetchDataFromEas.ts +94 -0
  97. package/dist/src/fetchDbData.ts +19 -0
  98. package/dist/src/fetchRelatedItems.ts +184 -0
  99. package/dist/src/fetchSeeds.ts +45 -0
  100. package/dist/src/fetchVersions.ts +49 -0
  101. package/dist/src/files.ts +81 -0
  102. package/dist/src/filesDownload.ts +326 -0
  103. package/dist/src/fragment-masking.ts +87 -0
  104. package/dist/src/getExistingItem.ts +60 -0
  105. package/dist/src/getItem.ts +32 -0
  106. package/dist/src/getItemData.ts +99 -0
  107. package/dist/src/getItemProperties.ts +56 -0
  108. package/dist/src/getItemProperty.ts +34 -0
  109. package/dist/src/getItems.ts +70 -0
  110. package/dist/src/getMetadata.ts +40 -0
  111. package/dist/src/getModelSchemas.ts +89 -0
  112. package/dist/src/getPropertyData.ts +50 -0
  113. package/dist/src/getPublishPayload.ts +355 -0
  114. package/dist/src/getPublishUploads.ts +207 -0
  115. package/dist/src/getRelationValueData.ts +27 -0
  116. package/dist/src/getSchemaForItemProperty.ts +68 -0
  117. package/dist/src/getSchemaForModel.ts +42 -0
  118. package/dist/src/getSchemaUidForModel.ts +32 -0
  119. package/dist/src/getSeedData.ts +34 -0
  120. package/dist/src/getSegmentedItemProperties.ts +65 -0
  121. package/dist/src/getStorageTransactionIdForSeedUid.ts +38 -0
  122. package/dist/src/getVersionData.ts +46 -0
  123. package/dist/src/getVersionsForVersionUids.ts +39 -0
  124. package/dist/src/globalMachine.ts +280 -0
  125. package/dist/src/gql.ts +118 -0
  126. package/dist/src/graphql.ts +3209 -0
  127. package/dist/src/helpers.ts +273 -0
  128. package/dist/src/hydrateExistingItem.ts +137 -0
  129. package/dist/src/hydrateFromDb.ts +270 -0
  130. package/dist/src/hydrateNewItem.ts +34 -0
  131. package/dist/src/imageResize.ts +507 -0
  132. package/dist/src/index.d.ts +5 -0
  133. package/dist/src/index.ts +4 -0
  134. package/dist/src/initialize.ts +124 -0
  135. package/dist/src/internalMachine.ts +241 -0
  136. package/dist/src/itemMachineAll.ts +157 -0
  137. package/dist/src/itemMachineSingle.ts +158 -0
  138. package/dist/src/loadAppDb.ts +44 -0
  139. package/dist/src/machines.ts +66 -0
  140. package/dist/src/metadataLatest.ts +34 -0
  141. package/dist/src/migrate.ts +57 -0
  142. package/dist/src/model.ts +72 -0
  143. package/dist/src/modelClass.ts +19 -0
  144. package/dist/src/node.app.db.config.ts +41 -0
  145. package/dist/src/prepareDb.ts +29 -0
  146. package/dist/src/preparePublishRequestData.ts +81 -0
  147. package/dist/src/processItems.ts +74 -0
  148. package/dist/src/property.ts +156 -0
  149. package/dist/src/propertyMachine.ts +202 -0
  150. package/dist/src/publish.ts +28 -0
  151. package/dist/src/publishMachine.ts +77 -0
  152. package/dist/src/queries.ts +13 -0
  153. package/dist/src/recoverDeletedItem.ts +14 -0
  154. package/dist/src/reload.ts +33 -0
  155. package/dist/src/request.ts +45 -0
  156. package/dist/src/requestAll.ts +157 -0
  157. package/dist/src/resolveRelatedValue.ts +367 -0
  158. package/dist/src/resolveRemoteStorage.ts +88 -0
  159. package/dist/src/saveAppState.ts +50 -0
  160. package/dist/src/saveConfig.ts +106 -0
  161. package/dist/src/saveDataToDb.ts +145 -0
  162. package/dist/src/saveImageSrc.ts +242 -0
  163. package/dist/src/saveItemStorage.ts +156 -0
  164. package/dist/src/saveMetadata.ts +18 -0
  165. package/dist/src/savePublishService.ts +30 -0
  166. package/dist/src/saveRelation.ts +112 -0
  167. package/dist/src/seed.schema.config.ts +25 -0
  168. package/dist/src/seed.ts +10 -0
  169. package/dist/src/seedProtocol.ts +17 -0
  170. package/dist/src/services.ts +365 -0
  171. package/dist/src/setAddresses.ts +16 -0
  172. package/dist/src/sqlWasmClient.ts +88 -0
  173. package/dist/src/syncDbWithEas.ts +628 -0
  174. package/dist/src/trash.ts +29 -0
  175. package/dist/src/ts-to-proto.ts +101 -0
  176. package/dist/src/types.ts +12 -0
  177. package/dist/src/updateItemPropertyValue.ts +243 -0
  178. package/dist/src/updateMachineContext.ts +21 -0
  179. package/dist/src/updateMetadata.ts +59 -0
  180. package/dist/src/upload.ts +86 -0
  181. package/dist/src/validate.ts +45 -0
  182. package/dist/src/validateInput.ts +43 -0
  183. package/dist/src/validateItemData.ts +20 -0
  184. package/dist/src/versionData.ts +24 -0
  185. package/dist/src/waitForDb.ts +25 -0
  186. package/dist/src/waitForFiles.ts +41 -0
  187. package/dist/src/wasm.d.ts +8300 -0
  188. package/dist/types/scripts/bin.d.ts.map +1 -1
  189. package/dist/types/src/browser/helpers/FileManager.d.ts +2 -1
  190. package/dist/types/src/browser/helpers/FileManager.d.ts.map +1 -1
  191. package/dist/types/src/helpers/FileManager/BaseFileManager.d.ts +1 -0
  192. package/dist/types/src/helpers/FileManager/BaseFileManager.d.ts.map +1 -1
  193. package/dist/types/src/node/helpers/FileManager.d.ts +2 -1
  194. package/dist/types/src/node/helpers/FileManager.d.ts.map +1 -1
  195. package/package.json +3 -3
  196. package/dist/FileManager-DTzkncLh.js.map +0 -1
  197. package/dist/constants-CWg2B3Au.js.map +0 -1
  198. package/dist/index-BHGJ-Es9.js.map +0 -1
  199. package/dist/index-CQ9FS10O.js.map +0 -1
  200. package/dist/package.json +0 -189
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-BHGJ-Es9.js","sources":["../../src/schema/property/index.ts","../../src/db/Db/BaseDb.ts","../../src/Item/service/actors/waitForDb.ts","../../src/seedSchema/SeedSchema.ts","../../src/seedSchema/VersionSchema.ts","../../src/seedSchema/MetadataSchema.ts","../../src/seedSchema/AppStateSchema.ts","../../src/seedSchema/ModelSchema.ts","../../src/seedSchema/ModelUidSchema.ts","../../src/db/read/getExistingItem.ts","../../src/Item/service/actors/initialize.ts","../../src/eventBus.ts","../../src/helpers/index.ts","../../src/graphql/gql/graphql.ts","../../src/graphql/gql/gql.ts","../../src/Item/queries.ts","../../src/helpers/db.ts","../../src/stores/modelClass.ts","../../src/db/read/getModelSchemas.ts","../../src/db/write/createSeeds.ts","../../src/helpers/getSchemaForItemProperty.ts","../../src/stores/eas.ts","../../src/events/item/syncDbWithEas.ts","../../src/helpers/environment.ts","../../src/services/global/actors/initialize.ts","../../src/services/global/actors/getSchemaForModel.ts","../../src/services/global/actors/addModelsToDb.ts","../../src/services/db/actors/checkStatus.ts","../../src/services/db/actors/connectToDb.ts","../../src/services/db/actors/validate.ts","../../src/db/write/saveAppState.ts","../../src/browser/workers/filesDownload.ts","../../src/browser/workers/FileDownloader.ts","../../src/browser/workers/imageResize.ts","../../src/browser/workers/ImageResizer.ts","../../src/browser/helpers/FileManager.ts","../../src/services/db/actors/migrate.ts","../../src/services/db/actors/waitForFiles.ts","../../src/services/db/dbMachine.ts","../../src/services/internal/actors/validateInput.ts","../../src/services/internal/actors/prepareDb.ts","../../src/services/internal/helpers.ts","../../src/schema/file/queries.ts","../../src/db/read/getMetadata.ts","../../src/db/write/saveMetadata.ts","../../src/helpers/ArweaveClient/queries.ts","../../src/helpers/ArweaveClient/index.ts","../../src/events/files/download.ts","../../src/events/files/index.ts","../../src/services/internal/actors/configureFs.ts","../../src/services/internal/actors/saveConfig.ts","../../src/services/internal/actors/loadAppDb.ts","../../src/services/internal/actors/waitForFiles.ts","../../src/services/internal/internalMachine.ts","../../src/services/allItems/actors/initialize.ts","../../src/services/allItems/actors/fetchDbData.ts","../../src/services/allItems/actors/fetchSeeds.ts","../../src/services/allItems/actors/fetchVersions.ts","../../src/services/allItems/actors/fetchRelatedItems.ts","../../src/services/allItems/actors/processItems.ts","../../src/services/allItems/itemMachineAll.ts","../../src/services/publish/actors/validateItemData.ts","../../src/services/publish/actors/createPublishAttempt.ts","../../src/helpers/updateMachineContext.ts","../../src/services/publish/actors/preparePublishRequestData.ts","../../src/services/publish/actors/upload.ts","../../src/services/publish/publishMachine.ts","../../src/services/global/actors/savePublishService.ts","../../src/services/global/globalMachine.ts","../../src/events/item/publish.ts","../../src/events/item/index.ts","../../src/events/index.ts","../../src/Item/service/actors/hydrateExistingItem.ts","../../src/db/read/getSchemaUidForModel.ts","../../src/db/write/createSeed.ts","../../src/db/write/createVersion.ts","../../src/Item/service/actors/hydrateNewItem.ts","../../src/Item/service/actors/fetchDataFromEas.ts","../../src/Item/service/actors/reload.ts","../../src/Item/service/itemMachineSingle.ts","../../src/db/read/subqueries/metadataLatest.ts","../../src/db/read/getItemProperties.ts","../../src/db/read/subqueries/versionData.ts","../../src/db/read/getSeedData.ts","../../src/db/read/getItemData.ts","../../src/db/read/getItems.ts","../../src/ItemProperty/service/actors/resolveRemoteStorage.ts","../../src/ItemProperty/service/actors/waitForDb.ts","../../src/ItemProperty/service/actors/initialize.ts","../../src/db/read/getStorageTransactionIdForSeedUid.ts","../../src/db/read/getRelationValueData.ts","../../src/ItemProperty/service/actors/resolveRelatedValue.ts","../../src/db/write/updateMetadata.ts","../../src/ItemProperty/service/actors/hydrateFromDb.ts","../../src/db/read/getVersionData.ts","../../src/db/write/updateItemPropertyValue.ts","../../src/ItemProperty/service/actors/saveValueToDb/analyzeInput.ts","../../src/db/write/createMetadata.ts","../../src/ItemProperty/service/actors/saveValueToDb/saveImageSrc.ts","../../src/ItemProperty/service/actors/saveValueToDb/saveRelation.ts","../../src/db/read/getItemProperty.ts","../../src/ItemProperty/service/actors/saveValueToDb/saveItemStorage.ts","../../src/ItemProperty/service/propertyMachine.ts","../../src/db/read/getPropertyData.ts","../../src/ItemProperty/BaseItemProperty.ts","../../src/helpers/getSegmentedItemProperties.ts","../../src/db/read/getPublishUploads.ts","../../src/db/read/getItem.ts","../../src/db/read/getPublishPayload.ts","../../src/db/write/createNewItem.ts","../../src/Item/BaseItem.ts","../../src/schema/model/index.ts","../../src/Item/index.ts","../../src/ItemProperty/index.ts","../../src/db/Db/index.ts","../../src/browser/Item/Item.ts","../../src/browser/react/services.ts","../../src/browser/react/item.ts","../../src/browser/ItemProperty/ItemProperty.ts","../../src/browser/react/property.ts","../../src/browser/react/db.ts","../../src/db/write/deleteItem.ts","../../src/browser/react/trash.ts","../../src/browser/index.ts","../../src/node/webpack/index.ts","../../src/helpers/EasClient/index.ts","../../src/helpers/FileManager/index.ts","../../src/helpers/QueryClient/index.ts","../../src/services/events.ts","../../src/events/services/allItems.ts","../../src/events/services/index.ts","../../src/client/actors/initialize.ts","../../src/client/actors/saveAppState.ts","../../src/client/actions/setAddresses.ts","../../src/client/clientManagerMachine.ts","../../src/client/ClientManager.ts","../../src/index.ts"],"sourcesContent":["import { Static, Type } from '@sinclair/typebox'\nimport { PropertyDataType, PropertyDefs, StorageType } from '@/types'\n\nexport const TPropertyDataType = Type.Union([\n Type.Literal('Text'),\n Type.Literal('Number'),\n Type.Literal('List'),\n Type.Literal('Relation'),\n Type.Literal('ImageSrc'),\n Type.Literal('FileSrc'),\n Type.Literal('Json'),\n Type.Literal('Blob'),\n])\n\nexport const TStorageType = Type.Union([\n Type.Literal('ItemStorage'), // Looks for a storageTransactionId property on the item\n Type.Literal('PropertyStorage'), // Looks for a storageTransactionId value on the property\n])\n\nexport const TProperty = Type.Object({\n id: Type.Optional(Type.Number()),\n name: Type.Optional(Type.String()),\n dataType: TPropertyDataType,\n ref: Type.Optional(Type.String()),\n modelId: Type.Optional(Type.Number()),\n refModelId: Type.Optional(Type.Number()),\n refValueType: Type.Optional(TPropertyDataType),\n storageType: Type.Optional(TStorageType),\n localStorageDir: Type.Optional(Type.String()),\n filenameSuffix: Type.Optional(Type.String()),\n})\n\nexport const TPropertyConstructor = Type.Function(\n [\n Type.Optional(Type.Union([Type.String(), TStorageType, Type.Undefined()])),\n Type.Optional(Type.Union([Type.String(), TPropertyDataType])),\n Type.Optional(Type.String()),\n ],\n TProperty,\n)\n\nexport const TPropertyDefs = Type.Record(\n TPropertyDataType,\n TPropertyConstructor,\n)\n\nexport const Property: PropertyDefs = {\n Text: (\n storageType?: StorageType,\n localStorageDir?: string,\n filenameSuffix?: string,\n ) => ({\n dataType: 'Text',\n storageType,\n localStorageDir,\n filenameSuffix,\n TObject: Type.String(),\n }),\n Json: () => ({ dataType: 'Json' }),\n Blob: () => ({ dataType: 'Blob' }),\n Number: () => ({ dataType: 'Number' }),\n List: (ref: string, refValueType?: PropertyDataType) => ({\n dataType: 'List',\n ref,\n refValueType,\n }),\n Relation: (ref, refValueType?: PropertyDataType) => ({\n dataType: 'Relation',\n ref,\n refValueType,\n }),\n ImageSrc: () => ({ dataType: 'ImageSrc' }),\n}\n\nexport const PropertyMetadataKey = Symbol('property')\n\nexport const PropertyConstructor = (propertyType: Static<typeof TProperty>) => {\n return function (parentClassPrototype: any, propertyKey: string) {\n const existingProperties =\n Reflect.getMetadata(PropertyMetadataKey, parentClassPrototype) || []\n\n existingProperties.push({ propertyKey, propertyType })\n // console.log('existingProperties', existingProperties)\n // console.log('propertyKey', propertyKey)\n // console.log('propertyType', propertyType)\n // console.log('PropertyMetadataKey', PropertyMetadataKey)\n // console.log('typeof target', typeof target)\n Reflect.defineMetadata(\n PropertyMetadataKey,\n existingProperties,\n parentClassPrototype,\n )\n // console.log(\n // `After adding ${propertyKey}:`,\n // Reflect.getMetadata(PropertyMetadataKey, parentClassPrototype),\n // )\n }\n}\n\nexport const Text = (\n storageType?: StorageType,\n srcDir?: string,\n filenameSuffix?: string,\n) => PropertyConstructor(Property.Text(storageType, srcDir, filenameSuffix))\nexport const Number = () => PropertyConstructor(Property.Number())\nexport const Json = () => PropertyConstructor(Property.Json())\nexport const Blob = () => PropertyConstructor(Property.Blob())\nexport const ImageSrc = () => PropertyConstructor(Property.ImageSrc())\nexport const Relation = (ref: string, refValueType?: PropertyDataType) =>\n PropertyConstructor(Property.Relation(ref, refValueType)) // Adjust for actual relation type\nexport const List = (ref: string, reValueType?: PropertyDataType) =>\n PropertyConstructor(Property.List(ref, reValueType)) // Adjust for actual list type","import { IDb } from '@/interfaces/IDb'\nimport { BaseSQLiteDatabase } from 'drizzle-orm/sqlite-core'\n\nexport abstract class BaseDb implements IDb {\n\n constructor() {\n }\n\n static PlatformClass: typeof BaseDb\n\n static setPlatformClass(platformClass: typeof BaseDb) {\n this.PlatformClass = platformClass\n }\n\n static getAppDb(): BaseSQLiteDatabase {\n return this.PlatformClass.getAppDb()\n }\n\n static isAppDbReady(): boolean {\n return this.PlatformClass.isAppDbReady()\n }\n\n static prepareDb(filesDir: string): Promise<BaseSQLiteDatabase> {\n return this.PlatformClass.prepareDb(filesDir)\n }\n\n static connectToDb(pathToDir: string, dbName: string): Promise<unknown> {\n return this.PlatformClass.connectToDb(pathToDir, dbName)\n }\n\n static async migrate(pathToDbDir: string, dbName: string, dbId: string): Promise<void> {\n return this.PlatformClass.migrate(pathToDbDir, dbName, dbId)\n }\n\n}","import { EventObject, fromCallback } from 'xstate'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { FromCallbackInput, ItemMachineContext } from '@/types'\nimport debug from 'debug'\n\nconst logger = debug('app:item:service:actors:waitForDb')\n\nexport const waitForDb = fromCallback<\n EventObject,\n FromCallbackInput<ItemMachineContext<any>>\n>(({ sendBack }) => {\n const _waitForDb = new Promise<void>((resolve) => {\n const interval = setInterval(() => {\n const appDb = BaseDb.getAppDb()\n if (appDb) {\n clearInterval(interval)\n resolve()\n }\n }, 100)\n })\n\n _waitForDb.then(() => {\n sendBack({ type: 'waitForDbSuccess' })\n })\n },\n)\n","import { int, sqliteTable, text } from 'drizzle-orm/sqlite-core'\n\nexport const seeds = sqliteTable(\n 'seeds',\n {\n localId: text('local_id').unique(),\n uid: text('uid'),\n schemaUid: text('schema_uid'),\n type: text('type'),\n attestationRaw: text('attestation_raw'),\n attestationCreatedAt: int('attestation_created_at'),\n createdAt: int('created_at'),\n updatedAt: int('updated_at'),\n _markedForDeletion: int('_marked_for_deletion'),\n },\n // {\n // triggers: [\n // sql<string>`CREATE TRIGGER IF NOT EXISTS seeds_created_at_trigger\n // BEFORE INSERT\n // ON seeds\n // FOR EACH ROW\n // BEGIN\n // SELECT strftime('%s', 'now') * 1000 INTO NEW.created_at;\n // END;`,\n // ],\n // },\n)\n\nexport type SeedType = seeds.$inferSelect\n","import { int, sqliteTable, text } from 'drizzle-orm/sqlite-core'\n\nexport const versions = sqliteTable('versions', {\n localId: text('local_id').unique(),\n uid: text('uid'),\n seedLocalId: text('seed_local_id'),\n seedUid: text('seed_uid'),\n seedType: text('seed_type'),\n note: text('note'),\n createdAt: int('created_at'),\n updatedAt: int('updated_at'),\n attestationCreatedAt: int('attestation_created_at'),\n attestationRaw: text('attestation_raw'),\n})\n\nexport type VersionsType = versions.$inferSelect\n","import { int, sqliteTable, text } from 'drizzle-orm/sqlite-core'\n\nexport const metadata = sqliteTable('metadata', {\n localId: text('local_id').unique(),\n uid: text('uid'),\n propertyName: text('property_name'),\n propertyValue: text('property_value'),\n schemaUid: text('schema_uid'),\n modelType: text('model_type'),\n seedLocalId: text('seed_local_id'),\n seedUid: text('seed_uid'),\n versionLocalId: text('version_local_id'),\n versionUid: text('version_uid'),\n easDataType: text('eas_data_type'),\n refValueType: text('ref_value_type'),\n refModelUid: text('ref_schema_uid'),\n refSeedType: text('ref_seed_type'),\n refResolvedValue: text('ref_resolved_value'),\n refResolvedDisplayValue: text('ref_resolved_display_value'),\n localStorageDir: text('local_storage_dir'),\n attestationRaw: text('attestation_raw'),\n attestationCreatedAt: int('attestation_created_at'),\n contentHash: text('content_hash'),\n createdAt: int('created_at'),\n updatedAt: int('updated_at'),\n})\n\nexport type MetadataType = metadata.$inferSelect\n","import { int, sqliteTable, text } from 'drizzle-orm/sqlite-core'\n\nexport const appState = sqliteTable('appState', {\n key: text('key').unique(),\n value: text('value'),\n createdAt: int('created_at'),\n updatedAt: int('updated_at'),\n})\n\nexport type appStateType = appState.$inferSelect\n","import { int, sqliteTable, text, unique } from 'drizzle-orm/sqlite-core'\nimport { relations } from 'drizzle-orm'\n\nexport const models = sqliteTable('models', {\n id: int('id').primaryKey({ autoIncrement: true }),\n name: text('name').notNull(),\n})\n\nexport const modelsRelations = relations(models, ({ many }) => ({\n properties: many(properties),\n}))\n\nexport type NewModelRecord = typeof models.$inferInsert\nexport type ModelRecordType = typeof models.$inferSelect\n\nexport const properties = sqliteTable(\n 'properties',\n {\n id: int('id').primaryKey({ autoIncrement: true }),\n name: text('name').notNull(),\n dataType: text('data_type').notNull(),\n readEndpoint: text('read_endpoint'),\n updateEndpoint: text('update_endpoint'),\n modelId: int('model_id')\n .notNull()\n .references(() => models.id),\n refModelId: int('ref_model_id').references(() => models.id),\n refValueType: text('ref_value_type'),\n },\n (table) => {\n return {\n uniqueNameModelId: unique('unique_name_model_id').on(\n table.name,\n table.modelId,\n ),\n }\n },\n)\n\nexport const propertiesRelations = relations(properties, ({ one }) => ({\n model: one(models),\n refModel: one(models),\n}))\n\nexport type NewPropertyRecord = typeof properties.$inferInsert\nexport type PropertyType = typeof properties.$inferSelect\n","import { int, sqliteTable, text } from 'drizzle-orm/sqlite-core'\nimport { relations } from 'drizzle-orm'\nimport { models } from './ModelSchema'\n\nexport const modelUids = sqliteTable('model_uids', {\n id: int('id').primaryKey({ autoIncrement: true }),\n uid: text('uid').notNull(),\n modelId: int('model_id')\n .notNull()\n .unique()\n .references(() => models.id),\n})\n\nexport const modelRelations = relations(modelUids, ({ many, one }) => ({\n model: one(models),\n}))\n","import { BaseDb } from '@/db/Db/BaseDb'\nimport { seeds } from '@/seedSchema'\nimport { and, eq, isNotNull, not, or } from 'drizzle-orm'\n\ntype GetExistingItemProps = {\n seedLocalId: string\n seedUid: string\n}\n\ntype GetExistingItemReturn = {\n seedLocalId: string\n seedUid: string\n createdAt: string\n}\n\nexport const getExistingItem = async ({\n seedLocalId,\n seedUid,\n}: GetExistingItemProps): Promise<GetExistingItemReturn | undefined> => {\n const appDb = BaseDb.getAppDb()\n\n const rows = await appDb\n .select({\n seedLocalId: seeds.localId,\n seedUid: seeds.uid,\n createdAt: seeds.createdAt,\n })\n .from(seeds)\n .where(\n or(\n and(\n isNotNull(seeds.uid),\n not(eq(seeds.uid, '')),\n not(eq(seeds.uid, 'undefined')),\n not(eq(seeds.uid, 'null')),\n not(eq(seeds.uid, 'false')),\n not(eq(seeds.uid, '0')),\n eq(seeds.uid, seedUid)\n ),\n and(\n isNotNull(seeds.localId),\n not(eq(seeds.localId, '')),\n not(eq(seeds.localId, 'undefined')),\n not(eq(seeds.localId, 'null')),\n not(eq(seeds.localId, 'false')),\n not(eq(seeds.localId, '0')),\n eq(seeds.localId, seedLocalId)\n )\n )\n )\n\n if (!rows || rows.length === 0) {\n return undefined\n }\n\n const matchingRow = rows.find(row => row.seedUid === seedUid) ||\n rows.find(row => row.seedLocalId === seedLocalId)\n\n return matchingRow\n} ","import { EventObject, fromCallback } from 'xstate'\nimport pluralize from 'pluralize'\nimport { getExistingItem } from '@/db/read/getExistingItem'\nimport { FromCallbackInput, ItemMachineContext } from '@/types'\n\nexport const initialize = fromCallback<\n EventObject,\n FromCallbackInput<ItemMachineContext<any>>\n>(\n ({ sendBack, input: { context } }) => {\n const { seedLocalId, seedUid, ModelClass } = context\n\n if (!ModelClass) {\n throw new Error('ModelClass is required')\n }\n\n const modelName = ModelClass.originalConstructor.name\n const modelNamePlural = pluralize(modelName)\n const modelTableName = modelNamePlural.toLowerCase()\n\n const _intialize = async (): Promise<void> => {\n const existingItem = await getExistingItem({ seedUid, seedLocalId })\n\n if (existingItem) {\n sendBack({\n type: 'hasExistingItem',\n modelName,\n modelTableName,\n modelNamePlural,\n existingItem,\n })\n return\n }\n\n sendBack({\n type: 'isNewItem',\n modelName,\n modelTableName,\n modelNamePlural,\n })\n }\n\n _intialize().then(() => {\n sendBack({ type: 'initializeSuccess' })\n return\n })\n },\n)\n","import EventEmitter from 'eventemitter3'\n\nconst eventEmitter = new EventEmitter()\n\nexport { eventEmitter }\n","import { customAlphabet } from 'nanoid'\nimport * as nanoIdDictionary from 'nanoid-dictionary'\nimport fs from '@zenfs/core'\nimport debug from 'debug'\nimport { GetCorrectId } from '@/types/helpers'\nimport { GetCorrectIdReturn } from '@/types/helpers'\n\nexport * from './ArweaveClient/BaseArweaveClient'\nexport * from './EasClient/BaseEasClient'\nexport * from './QueryClient/BaseQueryClient'\nexport * from './FileManager/BaseFileManager'\nconst logger = debug('app:shared:helpers')\n\n\nconst { alphanumeric } = nanoIdDictionary\n\nexport const generateId = (): string => {\n return customAlphabet(alphanumeric, 10)()\n}\n\nexport const toSnakeCase = (str: string) => {\n return str.replace(/([a-z])([A-Z])/g, '$1_$2').toLowerCase()\n}\n\nexport const identifyString = (str: string) => {\n try {\n JSON.parse(str)\n return 'json'\n } catch (e) {\n // Not JSON\n }\n\n if (!str) {\n return\n }\n\n if (str.trim().startsWith('<') && str.trim().endsWith('>')) {\n return 'html'\n }\n\n // Simple markdown checks (very naive)\n if (/^#{1,6}\\s|^-{3,}|\\*{3,}|^-{1,2}\\s|\\*\\s/.test(str)) {\n return 'markdown'\n }\n\n if (/^data:image\\/[a-zA-Z]+;base64,[A-Za-z0-9+/]+={0,2}$/.test(str)) {\n return 'base64'\n }\n\n // Default to plain text if unsure\n return 'text'\n}\n\nexport const getMimeType = (base64: string) => {\n if (!base64) {\n return null\n }\n const result = base64.match(/^data:([a-zA-Z0-9]+\\/[a-zA-Z0-9-.+]+).*,/)\n\n if (result && result.length > 1) {\n return result[1]\n } else {\n return null // MIME type could not be determined\n }\n}\n\nexport const getCorrectId: GetCorrectId = (localIdOrUid: string) => {\n const id: GetCorrectIdReturn = {\n localId: undefined,\n uid: undefined,\n }\n if (!localIdOrUid) {\n return id\n }\n if (localIdOrUid.length === 10) {\n id.localId = localIdOrUid\n }\n if (localIdOrUid.startsWith('0x') && localIdOrUid.length === 66) {\n id.uid = localIdOrUid\n }\n return id\n}\n\nexport const getDataTypeFromString = (\n data: string,\n): 'imageBase64' | 'base64' | 'url' | null => {\n const nonImageBase64Regex =\n /^(?!data:image\\/(?:jpeg|png|gif|bmp|webp);base64,)[A-Za-z0-9+/=]+$/\n\n if (nonImageBase64Regex.test(data)) {\n return 'base64'\n }\n\n // Regular expression for base64 (simple version, checking for base64 format)\n const imageBase64Regex = /^data:image\\/[a-zA-Z]+;base64,[A-Za-z0-9+/]+={0,2}$/\n\n if (imageBase64Regex.test(data)) {\n return 'imageBase64'\n }\n\n // Regular expression for URL (simple version, checking for common URL format)\n const urlRegex =\n /^(http:\\/\\/www\\.|https:\\/\\/www\\.|http:\\/\\/|https:\\/\\/)?[a-z0-9]+([\\-\\.]{1}[a-z0-9]+)*\\.[a-z]{2,5}(:[0-9]{1,5})?(\\/.*)?$/\n\n if (urlRegex.test(data)) {\n return 'url'\n }\n\n return null\n}\n\nexport const convertTxIdToImageSrc = async (\n txId: string,\n): Promise<string | undefined> => {\n const imageFilePath = `/files/images/${txId}`\n const fileExists = await fs.promises.exists(imageFilePath)\n if (!fileExists) {\n logger(`[ItemView] [updateImageSrc] ${imageFilePath} does not exist`)\n return\n }\n const uint = await fs.promises.readFile(imageFilePath)\n\n const imageBlob = new Blob([uint])\n\n return URL.createObjectURL(imageBlob)\n}\n\nexport const getExecutionTime = async (task, args) => {\n const start = Date.now()\n await task(...args)\n return Date.now() - start\n}\n\nexport const capitalizeFirstLetter = (string: string) =>\n string.charAt(0).toUpperCase() + string.slice(1)\n\nexport const parseEasRelationPropertyName = (easPropertyName: string) => {\n // Split the input string on the first underscore\n const [singularProperty, modelName, idSegment] = easPropertyName.split('_')\n\n // If there are any other parts, assume it is a list (e.g., has 'ids' or other suffix)\n const isList = idSegment === 'ids'\n\n // Create the final property name by pluralizing the singular part\n const propertyName = singularProperty.endsWith('s')\n ? singularProperty\n : singularProperty + 's'\n\n return {\n propertyName, // Plural form of the property name\n modelName, // Model name extracted from the second part\n isList, // True if the property is a list (e.g., 'ids' is present)\n }\n}\n\nexport const getContentHash = async (\n base64: string | null | undefined,\n uint: Uint8Array | undefined,\n): Promise<string> => {\n let data\n\n if (base64 && !uint) {\n const encoder = new TextEncoder()\n data = encoder.encode(base64)\n }\n\n if (uint) {\n data = uint\n }\n\n // Hash the data with SHA-256\n const hashBuffer = await crypto.subtle.digest('SHA-256', data as Uint8Array)\n\n // Convert the ArrayBuffer to a hex string\n const hashArray = Array.from(new Uint8Array(hashBuffer))\n return hashArray.map((b) => b.toString(16).padStart(2, '0')).join('')\n}\n\nexport const isBinary = (arrayBuffer: ArrayBuffer): boolean => {\n const view = new Uint8Array(arrayBuffer);\n\n let nonTextCount = 0;\n const threshold = 0.2; // Adjust as needed (e.g., 20% non-text implies binary)\n\n for (let i = 0; i < view.length; i++) {\n const byte = view[i];\n\n // ASCII printable characters (32-126) and common whitespace (9, 10, 13)\n if (\n (byte >= 32 && byte <= 126) || // Printable ASCII\n byte === 9 || byte === 10 || byte === 13 // Tab, LF, CR\n ) {\n continue;\n }\n\n nonTextCount++;\n if (nonTextCount / view.length > threshold) {\n return true; // More than threshold are non-text bytes\n }\n }\n\n return false; // Fewer than threshold are non-text bytes\n}\n","/* eslint-disable */\nimport { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core';\nexport type Maybe<T> = T | null;\nexport type InputMaybe<T> = Maybe<T>;\nexport type Exact<T extends { [key: string]: unknown }> = { [K in keyof T]: T[K] };\nexport type MakeOptional<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]?: Maybe<T[SubKey]> };\nexport type MakeMaybe<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]: Maybe<T[SubKey]> };\nexport type MakeEmpty<T extends { [key: string]: unknown }, K extends keyof T> = { [_ in K]?: never };\nexport type Incremental<T> = T | { [P in keyof T]?: P extends ' $fragmentName' | '__typename' ? T[P] : never };\n/** All built-in and custom scalars, mapped to their actual values */\nexport type Scalars = {\n ID: { input: string; output: string; }\n String: { input: string; output: string; }\n Boolean: { input: boolean; output: boolean; }\n Int: { input: number; output: number; }\n Float: { input: number; output: number; }\n};\n\nexport type AffectedRowsOutput = {\n __typename?: 'AffectedRowsOutput';\n count: Scalars['Int']['output'];\n};\n\nexport type AggregateAttestation = {\n __typename?: 'AggregateAttestation';\n _avg?: Maybe<AttestationAvgAggregate>;\n _count?: Maybe<AttestationCountAggregate>;\n _max?: Maybe<AttestationMaxAggregate>;\n _min?: Maybe<AttestationMinAggregate>;\n _sum?: Maybe<AttestationSumAggregate>;\n};\n\nexport type AggregateEnsName = {\n __typename?: 'AggregateEnsName';\n _avg?: Maybe<EnsNameAvgAggregate>;\n _count?: Maybe<EnsNameCountAggregate>;\n _max?: Maybe<EnsNameMaxAggregate>;\n _min?: Maybe<EnsNameMinAggregate>;\n _sum?: Maybe<EnsNameSumAggregate>;\n};\n\nexport type AggregateOffchainRevocation = {\n __typename?: 'AggregateOffchainRevocation';\n _avg?: Maybe<OffchainRevocationAvgAggregate>;\n _count?: Maybe<OffchainRevocationCountAggregate>;\n _max?: Maybe<OffchainRevocationMaxAggregate>;\n _min?: Maybe<OffchainRevocationMinAggregate>;\n _sum?: Maybe<OffchainRevocationSumAggregate>;\n};\n\nexport type AggregateSchema = {\n __typename?: 'AggregateSchema';\n _avg?: Maybe<SchemaAvgAggregate>;\n _count?: Maybe<SchemaCountAggregate>;\n _max?: Maybe<SchemaMaxAggregate>;\n _min?: Maybe<SchemaMinAggregate>;\n _sum?: Maybe<SchemaSumAggregate>;\n};\n\nexport type AggregateSchemaName = {\n __typename?: 'AggregateSchemaName';\n _avg?: Maybe<SchemaNameAvgAggregate>;\n _count?: Maybe<SchemaNameCountAggregate>;\n _max?: Maybe<SchemaNameMaxAggregate>;\n _min?: Maybe<SchemaNameMinAggregate>;\n _sum?: Maybe<SchemaNameSumAggregate>;\n};\n\nexport type AggregateServiceStat = {\n __typename?: 'AggregateServiceStat';\n _count?: Maybe<ServiceStatCountAggregate>;\n _max?: Maybe<ServiceStatMaxAggregate>;\n _min?: Maybe<ServiceStatMinAggregate>;\n};\n\nexport type AggregateTimestamp = {\n __typename?: 'AggregateTimestamp';\n _avg?: Maybe<TimestampAvgAggregate>;\n _count?: Maybe<TimestampCountAggregate>;\n _max?: Maybe<TimestampMaxAggregate>;\n _min?: Maybe<TimestampMinAggregate>;\n _sum?: Maybe<TimestampSumAggregate>;\n};\n\n/** Representation of a value transfer between wallets, in both winson and ar. */\nexport type Amount = {\n __typename?: 'Amount';\n /** Amount as an AR string e.g. \\`\"0.000000000001\"\\`. */\n ar: Scalars['String']['output'];\n /** Amount as a winston string e.g. \\`\"1000000000000\"\\`. */\n winston: Scalars['String']['output'];\n};\n\nexport type Attestation = {\n __typename?: 'Attestation';\n attester: Scalars['String']['output'];\n data: Scalars['String']['output'];\n decodedDataJson: Scalars['String']['output'];\n expirationTime: Scalars['Int']['output'];\n id: Scalars['String']['output'];\n ipfsHash: Scalars['String']['output'];\n isOffchain: Scalars['Boolean']['output'];\n recipient: Scalars['String']['output'];\n refUID: Scalars['String']['output'];\n revocable: Scalars['Boolean']['output'];\n revocationTime: Scalars['Int']['output'];\n revoked: Scalars['Boolean']['output'];\n schema: Schema;\n schemaId: Scalars['String']['output'];\n time: Scalars['Int']['output'];\n timeCreated: Scalars['Int']['output'];\n txid: Scalars['String']['output'];\n};\n\nexport type AttestationAvgAggregate = {\n __typename?: 'AttestationAvgAggregate';\n expirationTime?: Maybe<Scalars['Float']['output']>;\n revocationTime?: Maybe<Scalars['Float']['output']>;\n time?: Maybe<Scalars['Float']['output']>;\n timeCreated?: Maybe<Scalars['Float']['output']>;\n};\n\nexport type AttestationAvgOrderByAggregateInput = {\n expirationTime?: InputMaybe<SortOrder>;\n revocationTime?: InputMaybe<SortOrder>;\n time?: InputMaybe<SortOrder>;\n timeCreated?: InputMaybe<SortOrder>;\n};\n\nexport type AttestationCountAggregate = {\n __typename?: 'AttestationCountAggregate';\n _all: Scalars['Int']['output'];\n attester: Scalars['Int']['output'];\n data: Scalars['Int']['output'];\n decodedDataJson: Scalars['Int']['output'];\n expirationTime: Scalars['Int']['output'];\n id: Scalars['Int']['output'];\n ipfsHash: Scalars['Int']['output'];\n isOffchain: Scalars['Int']['output'];\n recipient: Scalars['Int']['output'];\n refUID: Scalars['Int']['output'];\n revocable: Scalars['Int']['output'];\n revocationTime: Scalars['Int']['output'];\n revoked: Scalars['Int']['output'];\n schemaId: Scalars['Int']['output'];\n time: Scalars['Int']['output'];\n timeCreated: Scalars['Int']['output'];\n txid: Scalars['Int']['output'];\n};\n\nexport type AttestationCountOrderByAggregateInput = {\n attester?: InputMaybe<SortOrder>;\n data?: InputMaybe<SortOrder>;\n decodedDataJson?: InputMaybe<SortOrder>;\n expirationTime?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n ipfsHash?: InputMaybe<SortOrder>;\n isOffchain?: InputMaybe<SortOrder>;\n recipient?: InputMaybe<SortOrder>;\n refUID?: InputMaybe<SortOrder>;\n revocable?: InputMaybe<SortOrder>;\n revocationTime?: InputMaybe<SortOrder>;\n revoked?: InputMaybe<SortOrder>;\n schemaId?: InputMaybe<SortOrder>;\n time?: InputMaybe<SortOrder>;\n timeCreated?: InputMaybe<SortOrder>;\n txid?: InputMaybe<SortOrder>;\n};\n\nexport type AttestationCreateInput = {\n attester: Scalars['String']['input'];\n data: Scalars['String']['input'];\n decodedDataJson?: InputMaybe<Scalars['String']['input']>;\n expirationTime: Scalars['Int']['input'];\n id: Scalars['String']['input'];\n ipfsHash: Scalars['String']['input'];\n isOffchain: Scalars['Boolean']['input'];\n recipient: Scalars['String']['input'];\n refUID: Scalars['String']['input'];\n revocable: Scalars['Boolean']['input'];\n revocationTime: Scalars['Int']['input'];\n revoked: Scalars['Boolean']['input'];\n schema: SchemaCreateNestedOneWithoutAttestationsInput;\n time: Scalars['Int']['input'];\n timeCreated: Scalars['Int']['input'];\n txid: Scalars['String']['input'];\n};\n\nexport type AttestationCreateManyInput = {\n attester: Scalars['String']['input'];\n data: Scalars['String']['input'];\n decodedDataJson?: InputMaybe<Scalars['String']['input']>;\n expirationTime: Scalars['Int']['input'];\n id: Scalars['String']['input'];\n ipfsHash: Scalars['String']['input'];\n isOffchain: Scalars['Boolean']['input'];\n recipient: Scalars['String']['input'];\n refUID: Scalars['String']['input'];\n revocable: Scalars['Boolean']['input'];\n revocationTime: Scalars['Int']['input'];\n revoked: Scalars['Boolean']['input'];\n schemaId: Scalars['String']['input'];\n time: Scalars['Int']['input'];\n timeCreated: Scalars['Int']['input'];\n txid: Scalars['String']['input'];\n};\n\nexport type AttestationCreateManySchemaInput = {\n attester: Scalars['String']['input'];\n data: Scalars['String']['input'];\n decodedDataJson?: InputMaybe<Scalars['String']['input']>;\n expirationTime: Scalars['Int']['input'];\n id: Scalars['String']['input'];\n ipfsHash: Scalars['String']['input'];\n isOffchain: Scalars['Boolean']['input'];\n recipient: Scalars['String']['input'];\n refUID: Scalars['String']['input'];\n revocable: Scalars['Boolean']['input'];\n revocationTime: Scalars['Int']['input'];\n revoked: Scalars['Boolean']['input'];\n time: Scalars['Int']['input'];\n timeCreated: Scalars['Int']['input'];\n txid: Scalars['String']['input'];\n};\n\nexport type AttestationCreateManySchemaInputEnvelope = {\n data: Array<AttestationCreateManySchemaInput>;\n skipDuplicates?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\nexport type AttestationCreateNestedManyWithoutSchemaInput = {\n connect?: InputMaybe<Array<AttestationWhereUniqueInput>>;\n connectOrCreate?: InputMaybe<Array<AttestationCreateOrConnectWithoutSchemaInput>>;\n create?: InputMaybe<Array<AttestationCreateWithoutSchemaInput>>;\n createMany?: InputMaybe<AttestationCreateManySchemaInputEnvelope>;\n};\n\nexport type AttestationCreateOrConnectWithoutSchemaInput = {\n create: AttestationCreateWithoutSchemaInput;\n where: AttestationWhereUniqueInput;\n};\n\nexport type AttestationCreateWithoutSchemaInput = {\n attester: Scalars['String']['input'];\n data: Scalars['String']['input'];\n decodedDataJson?: InputMaybe<Scalars['String']['input']>;\n expirationTime: Scalars['Int']['input'];\n id: Scalars['String']['input'];\n ipfsHash: Scalars['String']['input'];\n isOffchain: Scalars['Boolean']['input'];\n recipient: Scalars['String']['input'];\n refUID: Scalars['String']['input'];\n revocable: Scalars['Boolean']['input'];\n revocationTime: Scalars['Int']['input'];\n revoked: Scalars['Boolean']['input'];\n time: Scalars['Int']['input'];\n timeCreated: Scalars['Int']['input'];\n txid: Scalars['String']['input'];\n};\n\nexport type AttestationGroupBy = {\n __typename?: 'AttestationGroupBy';\n _avg?: Maybe<AttestationAvgAggregate>;\n _count?: Maybe<AttestationCountAggregate>;\n _max?: Maybe<AttestationMaxAggregate>;\n _min?: Maybe<AttestationMinAggregate>;\n _sum?: Maybe<AttestationSumAggregate>;\n attester: Scalars['String']['output'];\n data: Scalars['String']['output'];\n decodedDataJson: Scalars['String']['output'];\n expirationTime: Scalars['Int']['output'];\n id: Scalars['String']['output'];\n ipfsHash: Scalars['String']['output'];\n isOffchain: Scalars['Boolean']['output'];\n recipient: Scalars['String']['output'];\n refUID: Scalars['String']['output'];\n revocable: Scalars['Boolean']['output'];\n revocationTime: Scalars['Int']['output'];\n revoked: Scalars['Boolean']['output'];\n schemaId: Scalars['String']['output'];\n time: Scalars['Int']['output'];\n timeCreated: Scalars['Int']['output'];\n txid: Scalars['String']['output'];\n};\n\nexport type AttestationListRelationFilter = {\n every?: InputMaybe<AttestationWhereInput>;\n none?: InputMaybe<AttestationWhereInput>;\n some?: InputMaybe<AttestationWhereInput>;\n};\n\nexport type AttestationMaxAggregate = {\n __typename?: 'AttestationMaxAggregate';\n attester?: Maybe<Scalars['String']['output']>;\n data?: Maybe<Scalars['String']['output']>;\n decodedDataJson?: Maybe<Scalars['String']['output']>;\n expirationTime?: Maybe<Scalars['Int']['output']>;\n id?: Maybe<Scalars['String']['output']>;\n ipfsHash?: Maybe<Scalars['String']['output']>;\n isOffchain?: Maybe<Scalars['Boolean']['output']>;\n recipient?: Maybe<Scalars['String']['output']>;\n refUID?: Maybe<Scalars['String']['output']>;\n revocable?: Maybe<Scalars['Boolean']['output']>;\n revocationTime?: Maybe<Scalars['Int']['output']>;\n revoked?: Maybe<Scalars['Boolean']['output']>;\n schemaId?: Maybe<Scalars['String']['output']>;\n time?: Maybe<Scalars['Int']['output']>;\n timeCreated?: Maybe<Scalars['Int']['output']>;\n txid?: Maybe<Scalars['String']['output']>;\n};\n\nexport type AttestationMaxOrderByAggregateInput = {\n attester?: InputMaybe<SortOrder>;\n data?: InputMaybe<SortOrder>;\n decodedDataJson?: InputMaybe<SortOrder>;\n expirationTime?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n ipfsHash?: InputMaybe<SortOrder>;\n isOffchain?: InputMaybe<SortOrder>;\n recipient?: InputMaybe<SortOrder>;\n refUID?: InputMaybe<SortOrder>;\n revocable?: InputMaybe<SortOrder>;\n revocationTime?: InputMaybe<SortOrder>;\n revoked?: InputMaybe<SortOrder>;\n schemaId?: InputMaybe<SortOrder>;\n time?: InputMaybe<SortOrder>;\n timeCreated?: InputMaybe<SortOrder>;\n txid?: InputMaybe<SortOrder>;\n};\n\nexport type AttestationMinAggregate = {\n __typename?: 'AttestationMinAggregate';\n attester?: Maybe<Scalars['String']['output']>;\n data?: Maybe<Scalars['String']['output']>;\n decodedDataJson?: Maybe<Scalars['String']['output']>;\n expirationTime?: Maybe<Scalars['Int']['output']>;\n id?: Maybe<Scalars['String']['output']>;\n ipfsHash?: Maybe<Scalars['String']['output']>;\n isOffchain?: Maybe<Scalars['Boolean']['output']>;\n recipient?: Maybe<Scalars['String']['output']>;\n refUID?: Maybe<Scalars['String']['output']>;\n revocable?: Maybe<Scalars['Boolean']['output']>;\n revocationTime?: Maybe<Scalars['Int']['output']>;\n revoked?: Maybe<Scalars['Boolean']['output']>;\n schemaId?: Maybe<Scalars['String']['output']>;\n time?: Maybe<Scalars['Int']['output']>;\n timeCreated?: Maybe<Scalars['Int']['output']>;\n txid?: Maybe<Scalars['String']['output']>;\n};\n\nexport type AttestationMinOrderByAggregateInput = {\n attester?: InputMaybe<SortOrder>;\n data?: InputMaybe<SortOrder>;\n decodedDataJson?: InputMaybe<SortOrder>;\n expirationTime?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n ipfsHash?: InputMaybe<SortOrder>;\n isOffchain?: InputMaybe<SortOrder>;\n recipient?: InputMaybe<SortOrder>;\n refUID?: InputMaybe<SortOrder>;\n revocable?: InputMaybe<SortOrder>;\n revocationTime?: InputMaybe<SortOrder>;\n revoked?: InputMaybe<SortOrder>;\n schemaId?: InputMaybe<SortOrder>;\n time?: InputMaybe<SortOrder>;\n timeCreated?: InputMaybe<SortOrder>;\n txid?: InputMaybe<SortOrder>;\n};\n\nexport type AttestationOrderByRelationAggregateInput = {\n _count?: InputMaybe<SortOrder>;\n};\n\nexport type AttestationOrderByWithAggregationInput = {\n _avg?: InputMaybe<AttestationAvgOrderByAggregateInput>;\n _count?: InputMaybe<AttestationCountOrderByAggregateInput>;\n _max?: InputMaybe<AttestationMaxOrderByAggregateInput>;\n _min?: InputMaybe<AttestationMinOrderByAggregateInput>;\n _sum?: InputMaybe<AttestationSumOrderByAggregateInput>;\n attester?: InputMaybe<SortOrder>;\n data?: InputMaybe<SortOrder>;\n decodedDataJson?: InputMaybe<SortOrder>;\n expirationTime?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n ipfsHash?: InputMaybe<SortOrder>;\n isOffchain?: InputMaybe<SortOrder>;\n recipient?: InputMaybe<SortOrder>;\n refUID?: InputMaybe<SortOrder>;\n revocable?: InputMaybe<SortOrder>;\n revocationTime?: InputMaybe<SortOrder>;\n revoked?: InputMaybe<SortOrder>;\n schemaId?: InputMaybe<SortOrder>;\n time?: InputMaybe<SortOrder>;\n timeCreated?: InputMaybe<SortOrder>;\n txid?: InputMaybe<SortOrder>;\n};\n\nexport type AttestationOrderByWithRelationInput = {\n attester?: InputMaybe<SortOrder>;\n data?: InputMaybe<SortOrder>;\n decodedDataJson?: InputMaybe<SortOrder>;\n expirationTime?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n ipfsHash?: InputMaybe<SortOrder>;\n isOffchain?: InputMaybe<SortOrder>;\n recipient?: InputMaybe<SortOrder>;\n refUID?: InputMaybe<SortOrder>;\n revocable?: InputMaybe<SortOrder>;\n revocationTime?: InputMaybe<SortOrder>;\n revoked?: InputMaybe<SortOrder>;\n schema?: InputMaybe<SchemaOrderByWithRelationInput>;\n schemaId?: InputMaybe<SortOrder>;\n time?: InputMaybe<SortOrder>;\n timeCreated?: InputMaybe<SortOrder>;\n txid?: InputMaybe<SortOrder>;\n};\n\nexport enum AttestationScalarFieldEnum {\n Attester = 'attester',\n Data = 'data',\n DecodedDataJson = 'decodedDataJson',\n ExpirationTime = 'expirationTime',\n Id = 'id',\n IpfsHash = 'ipfsHash',\n IsOffchain = 'isOffchain',\n Recipient = 'recipient',\n RefUid = 'refUID',\n Revocable = 'revocable',\n RevocationTime = 'revocationTime',\n Revoked = 'revoked',\n SchemaId = 'schemaId',\n Time = 'time',\n TimeCreated = 'timeCreated',\n Txid = 'txid'\n}\n\nexport type AttestationScalarWhereInput = {\n AND?: InputMaybe<Array<AttestationScalarWhereInput>>;\n NOT?: InputMaybe<Array<AttestationScalarWhereInput>>;\n OR?: InputMaybe<Array<AttestationScalarWhereInput>>;\n attester?: InputMaybe<StringFilter>;\n data?: InputMaybe<StringFilter>;\n decodedDataJson?: InputMaybe<StringFilter>;\n expirationTime?: InputMaybe<IntFilter>;\n id?: InputMaybe<StringFilter>;\n ipfsHash?: InputMaybe<StringFilter>;\n isOffchain?: InputMaybe<BoolFilter>;\n recipient?: InputMaybe<StringFilter>;\n refUID?: InputMaybe<StringFilter>;\n revocable?: InputMaybe<BoolFilter>;\n revocationTime?: InputMaybe<IntFilter>;\n revoked?: InputMaybe<BoolFilter>;\n schemaId?: InputMaybe<StringFilter>;\n time?: InputMaybe<IntFilter>;\n timeCreated?: InputMaybe<IntFilter>;\n txid?: InputMaybe<StringFilter>;\n};\n\nexport type AttestationScalarWhereWithAggregatesInput = {\n AND?: InputMaybe<Array<AttestationScalarWhereWithAggregatesInput>>;\n NOT?: InputMaybe<Array<AttestationScalarWhereWithAggregatesInput>>;\n OR?: InputMaybe<Array<AttestationScalarWhereWithAggregatesInput>>;\n attester?: InputMaybe<StringWithAggregatesFilter>;\n data?: InputMaybe<StringWithAggregatesFilter>;\n decodedDataJson?: InputMaybe<StringWithAggregatesFilter>;\n expirationTime?: InputMaybe<IntWithAggregatesFilter>;\n id?: InputMaybe<StringWithAggregatesFilter>;\n ipfsHash?: InputMaybe<StringWithAggregatesFilter>;\n isOffchain?: InputMaybe<BoolWithAggregatesFilter>;\n recipient?: InputMaybe<StringWithAggregatesFilter>;\n refUID?: InputMaybe<StringWithAggregatesFilter>;\n revocable?: InputMaybe<BoolWithAggregatesFilter>;\n revocationTime?: InputMaybe<IntWithAggregatesFilter>;\n revoked?: InputMaybe<BoolWithAggregatesFilter>;\n schemaId?: InputMaybe<StringWithAggregatesFilter>;\n time?: InputMaybe<IntWithAggregatesFilter>;\n timeCreated?: InputMaybe<IntWithAggregatesFilter>;\n txid?: InputMaybe<StringWithAggregatesFilter>;\n};\n\nexport type AttestationSumAggregate = {\n __typename?: 'AttestationSumAggregate';\n expirationTime?: Maybe<Scalars['Int']['output']>;\n revocationTime?: Maybe<Scalars['Int']['output']>;\n time?: Maybe<Scalars['Int']['output']>;\n timeCreated?: Maybe<Scalars['Int']['output']>;\n};\n\nexport type AttestationSumOrderByAggregateInput = {\n expirationTime?: InputMaybe<SortOrder>;\n revocationTime?: InputMaybe<SortOrder>;\n time?: InputMaybe<SortOrder>;\n timeCreated?: InputMaybe<SortOrder>;\n};\n\nexport type AttestationUpdateInput = {\n attester?: InputMaybe<StringFieldUpdateOperationsInput>;\n data?: InputMaybe<StringFieldUpdateOperationsInput>;\n decodedDataJson?: InputMaybe<StringFieldUpdateOperationsInput>;\n expirationTime?: InputMaybe<IntFieldUpdateOperationsInput>;\n id?: InputMaybe<StringFieldUpdateOperationsInput>;\n ipfsHash?: InputMaybe<StringFieldUpdateOperationsInput>;\n isOffchain?: InputMaybe<BoolFieldUpdateOperationsInput>;\n recipient?: InputMaybe<StringFieldUpdateOperationsInput>;\n refUID?: InputMaybe<StringFieldUpdateOperationsInput>;\n revocable?: InputMaybe<BoolFieldUpdateOperationsInput>;\n revocationTime?: InputMaybe<IntFieldUpdateOperationsInput>;\n revoked?: InputMaybe<BoolFieldUpdateOperationsInput>;\n schema?: InputMaybe<SchemaUpdateOneRequiredWithoutAttestationsNestedInput>;\n time?: InputMaybe<IntFieldUpdateOperationsInput>;\n timeCreated?: InputMaybe<IntFieldUpdateOperationsInput>;\n txid?: InputMaybe<StringFieldUpdateOperationsInput>;\n};\n\nexport type AttestationUpdateManyMutationInput = {\n attester?: InputMaybe<StringFieldUpdateOperationsInput>;\n data?: InputMaybe<StringFieldUpdateOperationsInput>;\n decodedDataJson?: InputMaybe<StringFieldUpdateOperationsInput>;\n expirationTime?: InputMaybe<IntFieldUpdateOperationsInput>;\n id?: InputMaybe<StringFieldUpdateOperationsInput>;\n ipfsHash?: InputMaybe<StringFieldUpdateOperationsInput>;\n isOffchain?: InputMaybe<BoolFieldUpdateOperationsInput>;\n recipient?: InputMaybe<StringFieldUpdateOperationsInput>;\n refUID?: InputMaybe<StringFieldUpdateOperationsInput>;\n revocable?: InputMaybe<BoolFieldUpdateOperationsInput>;\n revocationTime?: InputMaybe<IntFieldUpdateOperationsInput>;\n revoked?: InputMaybe<BoolFieldUpdateOperationsInput>;\n time?: InputMaybe<IntFieldUpdateOperationsInput>;\n timeCreated?: InputMaybe<IntFieldUpdateOperationsInput>;\n txid?: InputMaybe<StringFieldUpdateOperationsInput>;\n};\n\nexport type AttestationUpdateManyWithWhereWithoutSchemaInput = {\n data: AttestationUpdateManyMutationInput;\n where: AttestationScalarWhereInput;\n};\n\nexport type AttestationUpdateManyWithoutSchemaNestedInput = {\n connect?: InputMaybe<Array<AttestationWhereUniqueInput>>;\n connectOrCreate?: InputMaybe<Array<AttestationCreateOrConnectWithoutSchemaInput>>;\n create?: InputMaybe<Array<AttestationCreateWithoutSchemaInput>>;\n createMany?: InputMaybe<AttestationCreateManySchemaInputEnvelope>;\n delete?: InputMaybe<Array<AttestationWhereUniqueInput>>;\n deleteMany?: InputMaybe<Array<AttestationScalarWhereInput>>;\n disconnect?: InputMaybe<Array<AttestationWhereUniqueInput>>;\n set?: InputMaybe<Array<AttestationWhereUniqueInput>>;\n update?: InputMaybe<Array<AttestationUpdateWithWhereUniqueWithoutSchemaInput>>;\n updateMany?: InputMaybe<Array<AttestationUpdateManyWithWhereWithoutSchemaInput>>;\n upsert?: InputMaybe<Array<AttestationUpsertWithWhereUniqueWithoutSchemaInput>>;\n};\n\nexport type AttestationUpdateWithWhereUniqueWithoutSchemaInput = {\n data: AttestationUpdateWithoutSchemaInput;\n where: AttestationWhereUniqueInput;\n};\n\nexport type AttestationUpdateWithoutSchemaInput = {\n attester?: InputMaybe<StringFieldUpdateOperationsInput>;\n data?: InputMaybe<StringFieldUpdateOperationsInput>;\n decodedDataJson?: InputMaybe<StringFieldUpdateOperationsInput>;\n expirationTime?: InputMaybe<IntFieldUpdateOperationsInput>;\n id?: InputMaybe<StringFieldUpdateOperationsInput>;\n ipfsHash?: InputMaybe<StringFieldUpdateOperationsInput>;\n isOffchain?: InputMaybe<BoolFieldUpdateOperationsInput>;\n recipient?: InputMaybe<StringFieldUpdateOperationsInput>;\n refUID?: InputMaybe<StringFieldUpdateOperationsInput>;\n revocable?: InputMaybe<BoolFieldUpdateOperationsInput>;\n revocationTime?: InputMaybe<IntFieldUpdateOperationsInput>;\n revoked?: InputMaybe<BoolFieldUpdateOperationsInput>;\n time?: InputMaybe<IntFieldUpdateOperationsInput>;\n timeCreated?: InputMaybe<IntFieldUpdateOperationsInput>;\n txid?: InputMaybe<StringFieldUpdateOperationsInput>;\n};\n\nexport type AttestationUpsertWithWhereUniqueWithoutSchemaInput = {\n create: AttestationCreateWithoutSchemaInput;\n update: AttestationUpdateWithoutSchemaInput;\n where: AttestationWhereUniqueInput;\n};\n\nexport type AttestationWhereInput = {\n AND?: InputMaybe<Array<AttestationWhereInput>>;\n NOT?: InputMaybe<Array<AttestationWhereInput>>;\n OR?: InputMaybe<Array<AttestationWhereInput>>;\n attester?: InputMaybe<StringFilter>;\n data?: InputMaybe<StringFilter>;\n decodedDataJson?: InputMaybe<StringFilter>;\n expirationTime?: InputMaybe<IntFilter>;\n id?: InputMaybe<StringFilter>;\n ipfsHash?: InputMaybe<StringFilter>;\n isOffchain?: InputMaybe<BoolFilter>;\n recipient?: InputMaybe<StringFilter>;\n refUID?: InputMaybe<StringFilter>;\n revocable?: InputMaybe<BoolFilter>;\n revocationTime?: InputMaybe<IntFilter>;\n revoked?: InputMaybe<BoolFilter>;\n schema?: InputMaybe<SchemaRelationFilter>;\n schemaId?: InputMaybe<StringFilter>;\n time?: InputMaybe<IntFilter>;\n timeCreated?: InputMaybe<IntFilter>;\n txid?: InputMaybe<StringFilter>;\n};\n\nexport type AttestationWhereUniqueInput = {\n id?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type Block = {\n __typename?: 'Block';\n /** The block height. */\n height: Scalars['Int']['output'];\n /** The block ID. */\n id: Scalars['ID']['output'];\n /** The previous block ID. */\n previous: Scalars['ID']['output'];\n /** The block timestamp (UTC). */\n timestamp: Scalars['Int']['output'];\n};\n\n/**\n * Paginated result set using the GraphQL cursor spec,\n * see: https://relay.dev/graphql/connections.htm.\n */\nexport type BlockConnection = {\n __typename?: 'BlockConnection';\n edges: Array<BlockEdge>;\n pageInfo: PageInfo;\n};\n\n/** Paginated result set using the GraphQL cursor spec. */\nexport type BlockEdge = {\n __typename?: 'BlockEdge';\n /**\n * The cursor value for fetching the next page.\n *\n * Pass this to the \\`after\\` parameter in \\`blocks(after: $cursor)\\`, the next page will start from the next item after this.\n */\n cursor: Scalars['String']['output'];\n /** A block object. */\n node: Block;\n};\n\n/** Find blocks within a given range */\nexport type BlockFilter = {\n /** Maximum block height to filter to */\n max?: InputMaybe<Scalars['Int']['input']>;\n /** Minimum block height to filter from */\n min?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type BoolFieldUpdateOperationsInput = {\n set?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\nexport type BoolFilter = {\n equals?: InputMaybe<Scalars['Boolean']['input']>;\n not?: InputMaybe<NestedBoolFilter>;\n};\n\nexport type BoolWithAggregatesFilter = {\n _count?: InputMaybe<NestedIntFilter>;\n _max?: InputMaybe<NestedBoolFilter>;\n _min?: InputMaybe<NestedBoolFilter>;\n equals?: InputMaybe<Scalars['Boolean']['input']>;\n not?: InputMaybe<NestedBoolWithAggregatesFilter>;\n};\n\n/**\n * The data bundle containing the current data item.\n * See: https://github.com/ArweaveTeam/arweave-standards/blob/master/ans/ANS-104.md.\n */\nexport type Bundle = {\n __typename?: 'Bundle';\n /** ID of the containing data bundle. */\n id: Scalars['ID']['output'];\n};\n\nexport type EnsName = {\n __typename?: 'EnsName';\n id: Scalars['String']['output'];\n name: Scalars['String']['output'];\n timestamp: Scalars['Int']['output'];\n};\n\nexport type EnsNameAvgAggregate = {\n __typename?: 'EnsNameAvgAggregate';\n timestamp?: Maybe<Scalars['Float']['output']>;\n};\n\nexport type EnsNameAvgOrderByAggregateInput = {\n timestamp?: InputMaybe<SortOrder>;\n};\n\nexport type EnsNameCountAggregate = {\n __typename?: 'EnsNameCountAggregate';\n _all: Scalars['Int']['output'];\n id: Scalars['Int']['output'];\n name: Scalars['Int']['output'];\n timestamp: Scalars['Int']['output'];\n};\n\nexport type EnsNameCountOrderByAggregateInput = {\n id?: InputMaybe<SortOrder>;\n name?: InputMaybe<SortOrder>;\n timestamp?: InputMaybe<SortOrder>;\n};\n\nexport type EnsNameCreateInput = {\n id: Scalars['String']['input'];\n name: Scalars['String']['input'];\n timestamp: Scalars['Int']['input'];\n};\n\nexport type EnsNameCreateManyInput = {\n id: Scalars['String']['input'];\n name: Scalars['String']['input'];\n timestamp: Scalars['Int']['input'];\n};\n\nexport type EnsNameGroupBy = {\n __typename?: 'EnsNameGroupBy';\n _avg?: Maybe<EnsNameAvgAggregate>;\n _count?: Maybe<EnsNameCountAggregate>;\n _max?: Maybe<EnsNameMaxAggregate>;\n _min?: Maybe<EnsNameMinAggregate>;\n _sum?: Maybe<EnsNameSumAggregate>;\n id: Scalars['String']['output'];\n name: Scalars['String']['output'];\n timestamp: Scalars['Int']['output'];\n};\n\nexport type EnsNameMaxAggregate = {\n __typename?: 'EnsNameMaxAggregate';\n id?: Maybe<Scalars['String']['output']>;\n name?: Maybe<Scalars['String']['output']>;\n timestamp?: Maybe<Scalars['Int']['output']>;\n};\n\nexport type EnsNameMaxOrderByAggregateInput = {\n id?: InputMaybe<SortOrder>;\n name?: InputMaybe<SortOrder>;\n timestamp?: InputMaybe<SortOrder>;\n};\n\nexport type EnsNameMinAggregate = {\n __typename?: 'EnsNameMinAggregate';\n id?: Maybe<Scalars['String']['output']>;\n name?: Maybe<Scalars['String']['output']>;\n timestamp?: Maybe<Scalars['Int']['output']>;\n};\n\nexport type EnsNameMinOrderByAggregateInput = {\n id?: InputMaybe<SortOrder>;\n name?: InputMaybe<SortOrder>;\n timestamp?: InputMaybe<SortOrder>;\n};\n\nexport type EnsNameOrderByWithAggregationInput = {\n _avg?: InputMaybe<EnsNameAvgOrderByAggregateInput>;\n _count?: InputMaybe<EnsNameCountOrderByAggregateInput>;\n _max?: InputMaybe<EnsNameMaxOrderByAggregateInput>;\n _min?: InputMaybe<EnsNameMinOrderByAggregateInput>;\n _sum?: InputMaybe<EnsNameSumOrderByAggregateInput>;\n id?: InputMaybe<SortOrder>;\n name?: InputMaybe<SortOrder>;\n timestamp?: InputMaybe<SortOrder>;\n};\n\nexport type EnsNameOrderByWithRelationInput = {\n id?: InputMaybe<SortOrder>;\n name?: InputMaybe<SortOrder>;\n timestamp?: InputMaybe<SortOrder>;\n};\n\nexport enum EnsNameScalarFieldEnum {\n Id = 'id',\n Name = 'name',\n Timestamp = 'timestamp'\n}\n\nexport type EnsNameScalarWhereWithAggregatesInput = {\n AND?: InputMaybe<Array<EnsNameScalarWhereWithAggregatesInput>>;\n NOT?: InputMaybe<Array<EnsNameScalarWhereWithAggregatesInput>>;\n OR?: InputMaybe<Array<EnsNameScalarWhereWithAggregatesInput>>;\n id?: InputMaybe<StringWithAggregatesFilter>;\n name?: InputMaybe<StringWithAggregatesFilter>;\n timestamp?: InputMaybe<IntWithAggregatesFilter>;\n};\n\nexport type EnsNameSumAggregate = {\n __typename?: 'EnsNameSumAggregate';\n timestamp?: Maybe<Scalars['Int']['output']>;\n};\n\nexport type EnsNameSumOrderByAggregateInput = {\n timestamp?: InputMaybe<SortOrder>;\n};\n\nexport type EnsNameUpdateInput = {\n id?: InputMaybe<StringFieldUpdateOperationsInput>;\n name?: InputMaybe<StringFieldUpdateOperationsInput>;\n timestamp?: InputMaybe<IntFieldUpdateOperationsInput>;\n};\n\nexport type EnsNameUpdateManyMutationInput = {\n id?: InputMaybe<StringFieldUpdateOperationsInput>;\n name?: InputMaybe<StringFieldUpdateOperationsInput>;\n timestamp?: InputMaybe<IntFieldUpdateOperationsInput>;\n};\n\nexport type EnsNameWhereInput = {\n AND?: InputMaybe<Array<EnsNameWhereInput>>;\n NOT?: InputMaybe<Array<EnsNameWhereInput>>;\n OR?: InputMaybe<Array<EnsNameWhereInput>>;\n id?: InputMaybe<StringFilter>;\n name?: InputMaybe<StringFilter>;\n timestamp?: InputMaybe<IntFilter>;\n};\n\nexport type EnsNameWhereUniqueInput = {\n id?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type IntFieldUpdateOperationsInput = {\n decrement?: InputMaybe<Scalars['Int']['input']>;\n divide?: InputMaybe<Scalars['Int']['input']>;\n increment?: InputMaybe<Scalars['Int']['input']>;\n multiply?: InputMaybe<Scalars['Int']['input']>;\n set?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type IntFilter = {\n equals?: InputMaybe<Scalars['Int']['input']>;\n gt?: InputMaybe<Scalars['Int']['input']>;\n gte?: InputMaybe<Scalars['Int']['input']>;\n in?: InputMaybe<Array<Scalars['Int']['input']>>;\n lt?: InputMaybe<Scalars['Int']['input']>;\n lte?: InputMaybe<Scalars['Int']['input']>;\n not?: InputMaybe<NestedIntFilter>;\n notIn?: InputMaybe<Array<Scalars['Int']['input']>>;\n};\n\nexport type IntWithAggregatesFilter = {\n _avg?: InputMaybe<NestedFloatFilter>;\n _count?: InputMaybe<NestedIntFilter>;\n _max?: InputMaybe<NestedIntFilter>;\n _min?: InputMaybe<NestedIntFilter>;\n _sum?: InputMaybe<NestedIntFilter>;\n equals?: InputMaybe<Scalars['Int']['input']>;\n gt?: InputMaybe<Scalars['Int']['input']>;\n gte?: InputMaybe<Scalars['Int']['input']>;\n in?: InputMaybe<Array<Scalars['Int']['input']>>;\n lt?: InputMaybe<Scalars['Int']['input']>;\n lte?: InputMaybe<Scalars['Int']['input']>;\n not?: InputMaybe<NestedIntWithAggregatesFilter>;\n notIn?: InputMaybe<Array<Scalars['Int']['input']>>;\n};\n\n/** Basic metadata about the transaction data payload. */\nexport type MetaData = {\n __typename?: 'MetaData';\n /** Size of the associated data in bytes. */\n size: Scalars['String']['output'];\n /** Type is derrived from the \\`content-type\\` tag on a transaction. */\n type?: Maybe<Scalars['String']['output']>;\n};\n\nexport type Mutation = {\n __typename?: 'Mutation';\n createManyAttestation: AffectedRowsOutput;\n createManyEnsName: AffectedRowsOutput;\n createManyOffchainRevocation: AffectedRowsOutput;\n createManySchema: AffectedRowsOutput;\n createManySchemaName: AffectedRowsOutput;\n createManyServiceStat: AffectedRowsOutput;\n createManyTimestamp: AffectedRowsOutput;\n createOneAttestation: Attestation;\n createOneEnsName: EnsName;\n createOneOffchainRevocation: OffchainRevocation;\n createOneSchema: Schema;\n createOneSchemaName: SchemaName;\n createOneServiceStat: ServiceStat;\n createOneTimestamp: Timestamp;\n deleteManyAttestation: AffectedRowsOutput;\n deleteManyEnsName: AffectedRowsOutput;\n deleteManyOffchainRevocation: AffectedRowsOutput;\n deleteManySchema: AffectedRowsOutput;\n deleteManySchemaName: AffectedRowsOutput;\n deleteManyServiceStat: AffectedRowsOutput;\n deleteManyTimestamp: AffectedRowsOutput;\n deleteOneAttestation?: Maybe<Attestation>;\n deleteOneEnsName?: Maybe<EnsName>;\n deleteOneOffchainRevocation?: Maybe<OffchainRevocation>;\n deleteOneSchema?: Maybe<Schema>;\n deleteOneSchemaName?: Maybe<SchemaName>;\n deleteOneServiceStat?: Maybe<ServiceStat>;\n deleteOneTimestamp?: Maybe<Timestamp>;\n updateManyAttestation: AffectedRowsOutput;\n updateManyEnsName: AffectedRowsOutput;\n updateManyOffchainRevocation: AffectedRowsOutput;\n updateManySchema: AffectedRowsOutput;\n updateManySchemaName: AffectedRowsOutput;\n updateManyServiceStat: AffectedRowsOutput;\n updateManyTimestamp: AffectedRowsOutput;\n updateOneAttestation?: Maybe<Attestation>;\n updateOneEnsName?: Maybe<EnsName>;\n updateOneOffchainRevocation?: Maybe<OffchainRevocation>;\n updateOneSchema?: Maybe<Schema>;\n updateOneSchemaName?: Maybe<SchemaName>;\n updateOneServiceStat?: Maybe<ServiceStat>;\n updateOneTimestamp?: Maybe<Timestamp>;\n upsertOneAttestation: Attestation;\n upsertOneEnsName: EnsName;\n upsertOneOffchainRevocation: OffchainRevocation;\n upsertOneSchema: Schema;\n upsertOneSchemaName: SchemaName;\n upsertOneServiceStat: ServiceStat;\n upsertOneTimestamp: Timestamp;\n};\n\n\nexport type MutationCreateManyAttestationArgs = {\n data: Array<AttestationCreateManyInput>;\n skipDuplicates?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\n\nexport type MutationCreateManyEnsNameArgs = {\n data: Array<EnsNameCreateManyInput>;\n skipDuplicates?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\n\nexport type MutationCreateManyOffchainRevocationArgs = {\n data: Array<OffchainRevocationCreateManyInput>;\n skipDuplicates?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\n\nexport type MutationCreateManySchemaArgs = {\n data: Array<SchemaCreateManyInput>;\n skipDuplicates?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\n\nexport type MutationCreateManySchemaNameArgs = {\n data: Array<SchemaNameCreateManyInput>;\n skipDuplicates?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\n\nexport type MutationCreateManyServiceStatArgs = {\n data: Array<ServiceStatCreateManyInput>;\n skipDuplicates?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\n\nexport type MutationCreateManyTimestampArgs = {\n data: Array<TimestampCreateManyInput>;\n skipDuplicates?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\n\nexport type MutationCreateOneAttestationArgs = {\n data: AttestationCreateInput;\n};\n\n\nexport type MutationCreateOneEnsNameArgs = {\n data: EnsNameCreateInput;\n};\n\n\nexport type MutationCreateOneOffchainRevocationArgs = {\n data: OffchainRevocationCreateInput;\n};\n\n\nexport type MutationCreateOneSchemaArgs = {\n data: SchemaCreateInput;\n};\n\n\nexport type MutationCreateOneSchemaNameArgs = {\n data: SchemaNameCreateInput;\n};\n\n\nexport type MutationCreateOneServiceStatArgs = {\n data: ServiceStatCreateInput;\n};\n\n\nexport type MutationCreateOneTimestampArgs = {\n data: TimestampCreateInput;\n};\n\n\nexport type MutationDeleteManyAttestationArgs = {\n where?: InputMaybe<AttestationWhereInput>;\n};\n\n\nexport type MutationDeleteManyEnsNameArgs = {\n where?: InputMaybe<EnsNameWhereInput>;\n};\n\n\nexport type MutationDeleteManyOffchainRevocationArgs = {\n where?: InputMaybe<OffchainRevocationWhereInput>;\n};\n\n\nexport type MutationDeleteManySchemaArgs = {\n where?: InputMaybe<SchemaWhereInput>;\n};\n\n\nexport type MutationDeleteManySchemaNameArgs = {\n where?: InputMaybe<SchemaNameWhereInput>;\n};\n\n\nexport type MutationDeleteManyServiceStatArgs = {\n where?: InputMaybe<ServiceStatWhereInput>;\n};\n\n\nexport type MutationDeleteManyTimestampArgs = {\n where?: InputMaybe<TimestampWhereInput>;\n};\n\n\nexport type MutationDeleteOneAttestationArgs = {\n where: AttestationWhereUniqueInput;\n};\n\n\nexport type MutationDeleteOneEnsNameArgs = {\n where: EnsNameWhereUniqueInput;\n};\n\n\nexport type MutationDeleteOneOffchainRevocationArgs = {\n where: OffchainRevocationWhereUniqueInput;\n};\n\n\nexport type MutationDeleteOneSchemaArgs = {\n where: SchemaWhereUniqueInput;\n};\n\n\nexport type MutationDeleteOneSchemaNameArgs = {\n where: SchemaNameWhereUniqueInput;\n};\n\n\nexport type MutationDeleteOneServiceStatArgs = {\n where: ServiceStatWhereUniqueInput;\n};\n\n\nexport type MutationDeleteOneTimestampArgs = {\n where: TimestampWhereUniqueInput;\n};\n\n\nexport type MutationUpdateManyAttestationArgs = {\n data: AttestationUpdateManyMutationInput;\n where?: InputMaybe<AttestationWhereInput>;\n};\n\n\nexport type MutationUpdateManyEnsNameArgs = {\n data: EnsNameUpdateManyMutationInput;\n where?: InputMaybe<EnsNameWhereInput>;\n};\n\n\nexport type MutationUpdateManyOffchainRevocationArgs = {\n data: OffchainRevocationUpdateManyMutationInput;\n where?: InputMaybe<OffchainRevocationWhereInput>;\n};\n\n\nexport type MutationUpdateManySchemaArgs = {\n data: SchemaUpdateManyMutationInput;\n where?: InputMaybe<SchemaWhereInput>;\n};\n\n\nexport type MutationUpdateManySchemaNameArgs = {\n data: SchemaNameUpdateManyMutationInput;\n where?: InputMaybe<SchemaNameWhereInput>;\n};\n\n\nexport type MutationUpdateManyServiceStatArgs = {\n data: ServiceStatUpdateManyMutationInput;\n where?: InputMaybe<ServiceStatWhereInput>;\n};\n\n\nexport type MutationUpdateManyTimestampArgs = {\n data: TimestampUpdateManyMutationInput;\n where?: InputMaybe<TimestampWhereInput>;\n};\n\n\nexport type MutationUpdateOneAttestationArgs = {\n data: AttestationUpdateInput;\n where: AttestationWhereUniqueInput;\n};\n\n\nexport type MutationUpdateOneEnsNameArgs = {\n data: EnsNameUpdateInput;\n where: EnsNameWhereUniqueInput;\n};\n\n\nexport type MutationUpdateOneOffchainRevocationArgs = {\n data: OffchainRevocationUpdateInput;\n where: OffchainRevocationWhereUniqueInput;\n};\n\n\nexport type MutationUpdateOneSchemaArgs = {\n data: SchemaUpdateInput;\n where: SchemaWhereUniqueInput;\n};\n\n\nexport type MutationUpdateOneSchemaNameArgs = {\n data: SchemaNameUpdateInput;\n where: SchemaNameWhereUniqueInput;\n};\n\n\nexport type MutationUpdateOneServiceStatArgs = {\n data: ServiceStatUpdateInput;\n where: ServiceStatWhereUniqueInput;\n};\n\n\nexport type MutationUpdateOneTimestampArgs = {\n data: TimestampUpdateInput;\n where: TimestampWhereUniqueInput;\n};\n\n\nexport type MutationUpsertOneAttestationArgs = {\n create: AttestationCreateInput;\n update: AttestationUpdateInput;\n where: AttestationWhereUniqueInput;\n};\n\n\nexport type MutationUpsertOneEnsNameArgs = {\n create: EnsNameCreateInput;\n update: EnsNameUpdateInput;\n where: EnsNameWhereUniqueInput;\n};\n\n\nexport type MutationUpsertOneOffchainRevocationArgs = {\n create: OffchainRevocationCreateInput;\n update: OffchainRevocationUpdateInput;\n where: OffchainRevocationWhereUniqueInput;\n};\n\n\nexport type MutationUpsertOneSchemaArgs = {\n create: SchemaCreateInput;\n update: SchemaUpdateInput;\n where: SchemaWhereUniqueInput;\n};\n\n\nexport type MutationUpsertOneSchemaNameArgs = {\n create: SchemaNameCreateInput;\n update: SchemaNameUpdateInput;\n where: SchemaNameWhereUniqueInput;\n};\n\n\nexport type MutationUpsertOneServiceStatArgs = {\n create: ServiceStatCreateInput;\n update: ServiceStatUpdateInput;\n where: ServiceStatWhereUniqueInput;\n};\n\n\nexport type MutationUpsertOneTimestampArgs = {\n create: TimestampCreateInput;\n update: TimestampUpdateInput;\n where: TimestampWhereUniqueInput;\n};\n\nexport type NestedBoolFilter = {\n equals?: InputMaybe<Scalars['Boolean']['input']>;\n not?: InputMaybe<NestedBoolFilter>;\n};\n\nexport type NestedBoolWithAggregatesFilter = {\n _count?: InputMaybe<NestedIntFilter>;\n _max?: InputMaybe<NestedBoolFilter>;\n _min?: InputMaybe<NestedBoolFilter>;\n equals?: InputMaybe<Scalars['Boolean']['input']>;\n not?: InputMaybe<NestedBoolWithAggregatesFilter>;\n};\n\nexport type NestedFloatFilter = {\n equals?: InputMaybe<Scalars['Float']['input']>;\n gt?: InputMaybe<Scalars['Float']['input']>;\n gte?: InputMaybe<Scalars['Float']['input']>;\n in?: InputMaybe<Array<Scalars['Float']['input']>>;\n lt?: InputMaybe<Scalars['Float']['input']>;\n lte?: InputMaybe<Scalars['Float']['input']>;\n not?: InputMaybe<NestedFloatFilter>;\n notIn?: InputMaybe<Array<Scalars['Float']['input']>>;\n};\n\nexport type NestedIntFilter = {\n equals?: InputMaybe<Scalars['Int']['input']>;\n gt?: InputMaybe<Scalars['Int']['input']>;\n gte?: InputMaybe<Scalars['Int']['input']>;\n in?: InputMaybe<Array<Scalars['Int']['input']>>;\n lt?: InputMaybe<Scalars['Int']['input']>;\n lte?: InputMaybe<Scalars['Int']['input']>;\n not?: InputMaybe<NestedIntFilter>;\n notIn?: InputMaybe<Array<Scalars['Int']['input']>>;\n};\n\nexport type NestedIntWithAggregatesFilter = {\n _avg?: InputMaybe<NestedFloatFilter>;\n _count?: InputMaybe<NestedIntFilter>;\n _max?: InputMaybe<NestedIntFilter>;\n _min?: InputMaybe<NestedIntFilter>;\n _sum?: InputMaybe<NestedIntFilter>;\n equals?: InputMaybe<Scalars['Int']['input']>;\n gt?: InputMaybe<Scalars['Int']['input']>;\n gte?: InputMaybe<Scalars['Int']['input']>;\n in?: InputMaybe<Array<Scalars['Int']['input']>>;\n lt?: InputMaybe<Scalars['Int']['input']>;\n lte?: InputMaybe<Scalars['Int']['input']>;\n not?: InputMaybe<NestedIntWithAggregatesFilter>;\n notIn?: InputMaybe<Array<Scalars['Int']['input']>>;\n};\n\nexport type NestedStringFilter = {\n contains?: InputMaybe<Scalars['String']['input']>;\n endsWith?: InputMaybe<Scalars['String']['input']>;\n equals?: InputMaybe<Scalars['String']['input']>;\n gt?: InputMaybe<Scalars['String']['input']>;\n gte?: InputMaybe<Scalars['String']['input']>;\n in?: InputMaybe<Array<Scalars['String']['input']>>;\n lt?: InputMaybe<Scalars['String']['input']>;\n lte?: InputMaybe<Scalars['String']['input']>;\n not?: InputMaybe<NestedStringFilter>;\n notIn?: InputMaybe<Array<Scalars['String']['input']>>;\n startsWith?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type NestedStringWithAggregatesFilter = {\n _count?: InputMaybe<NestedIntFilter>;\n _max?: InputMaybe<NestedStringFilter>;\n _min?: InputMaybe<NestedStringFilter>;\n contains?: InputMaybe<Scalars['String']['input']>;\n endsWith?: InputMaybe<Scalars['String']['input']>;\n equals?: InputMaybe<Scalars['String']['input']>;\n gt?: InputMaybe<Scalars['String']['input']>;\n gte?: InputMaybe<Scalars['String']['input']>;\n in?: InputMaybe<Array<Scalars['String']['input']>>;\n lt?: InputMaybe<Scalars['String']['input']>;\n lte?: InputMaybe<Scalars['String']['input']>;\n not?: InputMaybe<NestedStringWithAggregatesFilter>;\n notIn?: InputMaybe<Array<Scalars['String']['input']>>;\n startsWith?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type OffchainRevocation = {\n __typename?: 'OffchainRevocation';\n from: Scalars['String']['output'];\n id: Scalars['String']['output'];\n timestamp: Scalars['Int']['output'];\n txid: Scalars['String']['output'];\n uid: Scalars['String']['output'];\n};\n\nexport type OffchainRevocationAvgAggregate = {\n __typename?: 'OffchainRevocationAvgAggregate';\n timestamp?: Maybe<Scalars['Float']['output']>;\n};\n\nexport type OffchainRevocationAvgOrderByAggregateInput = {\n timestamp?: InputMaybe<SortOrder>;\n};\n\nexport type OffchainRevocationCountAggregate = {\n __typename?: 'OffchainRevocationCountAggregate';\n _all: Scalars['Int']['output'];\n from: Scalars['Int']['output'];\n id: Scalars['Int']['output'];\n timestamp: Scalars['Int']['output'];\n txid: Scalars['Int']['output'];\n uid: Scalars['Int']['output'];\n};\n\nexport type OffchainRevocationCountOrderByAggregateInput = {\n from?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n timestamp?: InputMaybe<SortOrder>;\n txid?: InputMaybe<SortOrder>;\n uid?: InputMaybe<SortOrder>;\n};\n\nexport type OffchainRevocationCreateInput = {\n from: Scalars['String']['input'];\n id?: InputMaybe<Scalars['String']['input']>;\n timestamp: Scalars['Int']['input'];\n txid: Scalars['String']['input'];\n uid: Scalars['String']['input'];\n};\n\nexport type OffchainRevocationCreateManyInput = {\n from: Scalars['String']['input'];\n id?: InputMaybe<Scalars['String']['input']>;\n timestamp: Scalars['Int']['input'];\n txid: Scalars['String']['input'];\n uid: Scalars['String']['input'];\n};\n\nexport type OffchainRevocationGroupBy = {\n __typename?: 'OffchainRevocationGroupBy';\n _avg?: Maybe<OffchainRevocationAvgAggregate>;\n _count?: Maybe<OffchainRevocationCountAggregate>;\n _max?: Maybe<OffchainRevocationMaxAggregate>;\n _min?: Maybe<OffchainRevocationMinAggregate>;\n _sum?: Maybe<OffchainRevocationSumAggregate>;\n from: Scalars['String']['output'];\n id: Scalars['String']['output'];\n timestamp: Scalars['Int']['output'];\n txid: Scalars['String']['output'];\n uid: Scalars['String']['output'];\n};\n\nexport type OffchainRevocationMaxAggregate = {\n __typename?: 'OffchainRevocationMaxAggregate';\n from?: Maybe<Scalars['String']['output']>;\n id?: Maybe<Scalars['String']['output']>;\n timestamp?: Maybe<Scalars['Int']['output']>;\n txid?: Maybe<Scalars['String']['output']>;\n uid?: Maybe<Scalars['String']['output']>;\n};\n\nexport type OffchainRevocationMaxOrderByAggregateInput = {\n from?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n timestamp?: InputMaybe<SortOrder>;\n txid?: InputMaybe<SortOrder>;\n uid?: InputMaybe<SortOrder>;\n};\n\nexport type OffchainRevocationMinAggregate = {\n __typename?: 'OffchainRevocationMinAggregate';\n from?: Maybe<Scalars['String']['output']>;\n id?: Maybe<Scalars['String']['output']>;\n timestamp?: Maybe<Scalars['Int']['output']>;\n txid?: Maybe<Scalars['String']['output']>;\n uid?: Maybe<Scalars['String']['output']>;\n};\n\nexport type OffchainRevocationMinOrderByAggregateInput = {\n from?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n timestamp?: InputMaybe<SortOrder>;\n txid?: InputMaybe<SortOrder>;\n uid?: InputMaybe<SortOrder>;\n};\n\nexport type OffchainRevocationOrderByWithAggregationInput = {\n _avg?: InputMaybe<OffchainRevocationAvgOrderByAggregateInput>;\n _count?: InputMaybe<OffchainRevocationCountOrderByAggregateInput>;\n _max?: InputMaybe<OffchainRevocationMaxOrderByAggregateInput>;\n _min?: InputMaybe<OffchainRevocationMinOrderByAggregateInput>;\n _sum?: InputMaybe<OffchainRevocationSumOrderByAggregateInput>;\n from?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n timestamp?: InputMaybe<SortOrder>;\n txid?: InputMaybe<SortOrder>;\n uid?: InputMaybe<SortOrder>;\n};\n\nexport type OffchainRevocationOrderByWithRelationInput = {\n from?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n timestamp?: InputMaybe<SortOrder>;\n txid?: InputMaybe<SortOrder>;\n uid?: InputMaybe<SortOrder>;\n};\n\nexport enum OffchainRevocationScalarFieldEnum {\n From = 'from',\n Id = 'id',\n Timestamp = 'timestamp',\n Txid = 'txid',\n Uid = 'uid'\n}\n\nexport type OffchainRevocationScalarWhereWithAggregatesInput = {\n AND?: InputMaybe<Array<OffchainRevocationScalarWhereWithAggregatesInput>>;\n NOT?: InputMaybe<Array<OffchainRevocationScalarWhereWithAggregatesInput>>;\n OR?: InputMaybe<Array<OffchainRevocationScalarWhereWithAggregatesInput>>;\n from?: InputMaybe<StringWithAggregatesFilter>;\n id?: InputMaybe<StringWithAggregatesFilter>;\n timestamp?: InputMaybe<IntWithAggregatesFilter>;\n txid?: InputMaybe<StringWithAggregatesFilter>;\n uid?: InputMaybe<StringWithAggregatesFilter>;\n};\n\nexport type OffchainRevocationSumAggregate = {\n __typename?: 'OffchainRevocationSumAggregate';\n timestamp?: Maybe<Scalars['Int']['output']>;\n};\n\nexport type OffchainRevocationSumOrderByAggregateInput = {\n timestamp?: InputMaybe<SortOrder>;\n};\n\nexport type OffchainRevocationUpdateInput = {\n from?: InputMaybe<StringFieldUpdateOperationsInput>;\n id?: InputMaybe<StringFieldUpdateOperationsInput>;\n timestamp?: InputMaybe<IntFieldUpdateOperationsInput>;\n txid?: InputMaybe<StringFieldUpdateOperationsInput>;\n uid?: InputMaybe<StringFieldUpdateOperationsInput>;\n};\n\nexport type OffchainRevocationUpdateManyMutationInput = {\n from?: InputMaybe<StringFieldUpdateOperationsInput>;\n id?: InputMaybe<StringFieldUpdateOperationsInput>;\n timestamp?: InputMaybe<IntFieldUpdateOperationsInput>;\n txid?: InputMaybe<StringFieldUpdateOperationsInput>;\n uid?: InputMaybe<StringFieldUpdateOperationsInput>;\n};\n\nexport type OffchainRevocationWhereInput = {\n AND?: InputMaybe<Array<OffchainRevocationWhereInput>>;\n NOT?: InputMaybe<Array<OffchainRevocationWhereInput>>;\n OR?: InputMaybe<Array<OffchainRevocationWhereInput>>;\n from?: InputMaybe<StringFilter>;\n id?: InputMaybe<StringFilter>;\n timestamp?: InputMaybe<IntFilter>;\n txid?: InputMaybe<StringFilter>;\n uid?: InputMaybe<StringFilter>;\n};\n\nexport type OffchainRevocationWhereUniqueInput = {\n id?: InputMaybe<Scalars['String']['input']>;\n};\n\n/** Representation of a transaction owner. */\nexport type Owner = {\n __typename?: 'Owner';\n /** The owner's wallet address. */\n address: Scalars['String']['output'];\n /** The owner's public key as a base64url encoded string. */\n key: Scalars['String']['output'];\n};\n\n/** Paginated page info using the GraphQL cursor spec. */\nexport type PageInfo = {\n __typename?: 'PageInfo';\n hasNextPage: Scalars['Boolean']['output'];\n};\n\n/**\n * The parent transaction for bundled transactions,\n * see: https://github.com/ArweaveTeam/arweave-standards/blob/master/ans/ANS-102.md.\n */\nexport type Parent = {\n __typename?: 'Parent';\n id: Scalars['ID']['output'];\n};\n\nexport type Query = {\n __typename?: 'Query';\n aggregateAttestation: AggregateAttestation;\n aggregateEnsName: AggregateEnsName;\n aggregateOffchainRevocation: AggregateOffchainRevocation;\n aggregateSchema: AggregateSchema;\n aggregateSchemaName: AggregateSchemaName;\n aggregateServiceStat: AggregateServiceStat;\n aggregateTimestamp: AggregateTimestamp;\n attestation?: Maybe<Attestation>;\n attestations: Array<Attestation>;\n block?: Maybe<Block>;\n blocks: BlockConnection;\n ensName?: Maybe<EnsName>;\n ensNames: Array<EnsName>;\n findFirstAttestation?: Maybe<Attestation>;\n findFirstAttestationOrThrow?: Maybe<Attestation>;\n findFirstEnsName?: Maybe<EnsName>;\n findFirstEnsNameOrThrow?: Maybe<EnsName>;\n findFirstOffchainRevocation?: Maybe<OffchainRevocation>;\n findFirstOffchainRevocationOrThrow?: Maybe<OffchainRevocation>;\n findFirstSchema?: Maybe<Schema>;\n findFirstSchemaName?: Maybe<SchemaName>;\n findFirstSchemaNameOrThrow?: Maybe<SchemaName>;\n findFirstSchemaOrThrow?: Maybe<Schema>;\n findFirstServiceStat?: Maybe<ServiceStat>;\n findFirstServiceStatOrThrow?: Maybe<ServiceStat>;\n findFirstTimestamp?: Maybe<Timestamp>;\n findFirstTimestampOrThrow?: Maybe<Timestamp>;\n getAttestation?: Maybe<Attestation>;\n getEnsName?: Maybe<EnsName>;\n getOffchainRevocation?: Maybe<OffchainRevocation>;\n getSchema?: Maybe<Schema>;\n getSchemaName?: Maybe<SchemaName>;\n getServiceStat?: Maybe<ServiceStat>;\n getTimestamp?: Maybe<Timestamp>;\n groupByAttestation: Array<AttestationGroupBy>;\n groupByEnsName: Array<EnsNameGroupBy>;\n groupByOffchainRevocation: Array<OffchainRevocationGroupBy>;\n groupBySchema: Array<SchemaGroupBy>;\n groupBySchemaName: Array<SchemaNameGroupBy>;\n groupByServiceStat: Array<ServiceStatGroupBy>;\n groupByTimestamp: Array<TimestampGroupBy>;\n offchainRevocation?: Maybe<OffchainRevocation>;\n offchainRevocations: Array<OffchainRevocation>;\n schema?: Maybe<Schema>;\n schemaName?: Maybe<SchemaName>;\n schemaNames: Array<SchemaName>;\n schemata: Array<Schema>;\n serviceStat?: Maybe<ServiceStat>;\n serviceStats: Array<ServiceStat>;\n timestamp?: Maybe<Timestamp>;\n timestamps: Array<Timestamp>;\n /** Get a transaction by its id */\n transaction?: Maybe<Transaction>;\n /** Get a paginated set of matching transactions using filters. */\n transactions: TransactionConnection;\n};\n\n\nexport type QueryAggregateAttestationArgs = {\n cursor?: InputMaybe<AttestationWhereUniqueInput>;\n orderBy?: InputMaybe<Array<AttestationOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<AttestationWhereInput>;\n};\n\n\nexport type QueryAggregateEnsNameArgs = {\n cursor?: InputMaybe<EnsNameWhereUniqueInput>;\n orderBy?: InputMaybe<Array<EnsNameOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<EnsNameWhereInput>;\n};\n\n\nexport type QueryAggregateOffchainRevocationArgs = {\n cursor?: InputMaybe<OffchainRevocationWhereUniqueInput>;\n orderBy?: InputMaybe<Array<OffchainRevocationOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<OffchainRevocationWhereInput>;\n};\n\n\nexport type QueryAggregateSchemaArgs = {\n cursor?: InputMaybe<SchemaWhereUniqueInput>;\n orderBy?: InputMaybe<Array<SchemaOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<SchemaWhereInput>;\n};\n\n\nexport type QueryAggregateSchemaNameArgs = {\n cursor?: InputMaybe<SchemaNameWhereUniqueInput>;\n orderBy?: InputMaybe<Array<SchemaNameOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<SchemaNameWhereInput>;\n};\n\n\nexport type QueryAggregateServiceStatArgs = {\n cursor?: InputMaybe<ServiceStatWhereUniqueInput>;\n orderBy?: InputMaybe<Array<ServiceStatOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<ServiceStatWhereInput>;\n};\n\n\nexport type QueryAggregateTimestampArgs = {\n cursor?: InputMaybe<TimestampWhereUniqueInput>;\n orderBy?: InputMaybe<Array<TimestampOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<TimestampWhereInput>;\n};\n\n\nexport type QueryAttestationArgs = {\n where: AttestationWhereUniqueInput;\n};\n\n\nexport type QueryAttestationsArgs = {\n cursor?: InputMaybe<AttestationWhereUniqueInput>;\n distinct?: InputMaybe<Array<AttestationScalarFieldEnum>>;\n orderBy?: InputMaybe<Array<AttestationOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<AttestationWhereInput>;\n};\n\n\nexport type QueryBlockArgs = {\n id: Scalars['String']['input'];\n};\n\n\nexport type QueryBlocksArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n height?: InputMaybe<BlockFilter>;\n ids?: InputMaybe<Array<Scalars['ID']['input']>>;\n sort?: InputMaybe<SortOrder>;\n};\n\n\nexport type QueryEnsNameArgs = {\n where: EnsNameWhereUniqueInput;\n};\n\n\nexport type QueryEnsNamesArgs = {\n cursor?: InputMaybe<EnsNameWhereUniqueInput>;\n distinct?: InputMaybe<Array<EnsNameScalarFieldEnum>>;\n orderBy?: InputMaybe<Array<EnsNameOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<EnsNameWhereInput>;\n};\n\n\nexport type QueryFindFirstAttestationArgs = {\n cursor?: InputMaybe<AttestationWhereUniqueInput>;\n distinct?: InputMaybe<Array<AttestationScalarFieldEnum>>;\n orderBy?: InputMaybe<Array<AttestationOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<AttestationWhereInput>;\n};\n\n\nexport type QueryFindFirstAttestationOrThrowArgs = {\n cursor?: InputMaybe<AttestationWhereUniqueInput>;\n distinct?: InputMaybe<Array<AttestationScalarFieldEnum>>;\n orderBy?: InputMaybe<Array<AttestationOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<AttestationWhereInput>;\n};\n\n\nexport type QueryFindFirstEnsNameArgs = {\n cursor?: InputMaybe<EnsNameWhereUniqueInput>;\n distinct?: InputMaybe<Array<EnsNameScalarFieldEnum>>;\n orderBy?: InputMaybe<Array<EnsNameOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<EnsNameWhereInput>;\n};\n\n\nexport type QueryFindFirstEnsNameOrThrowArgs = {\n cursor?: InputMaybe<EnsNameWhereUniqueInput>;\n distinct?: InputMaybe<Array<EnsNameScalarFieldEnum>>;\n orderBy?: InputMaybe<Array<EnsNameOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<EnsNameWhereInput>;\n};\n\n\nexport type QueryFindFirstOffchainRevocationArgs = {\n cursor?: InputMaybe<OffchainRevocationWhereUniqueInput>;\n distinct?: InputMaybe<Array<OffchainRevocationScalarFieldEnum>>;\n orderBy?: InputMaybe<Array<OffchainRevocationOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<OffchainRevocationWhereInput>;\n};\n\n\nexport type QueryFindFirstOffchainRevocationOrThrowArgs = {\n cursor?: InputMaybe<OffchainRevocationWhereUniqueInput>;\n distinct?: InputMaybe<Array<OffchainRevocationScalarFieldEnum>>;\n orderBy?: InputMaybe<Array<OffchainRevocationOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<OffchainRevocationWhereInput>;\n};\n\n\nexport type QueryFindFirstSchemaArgs = {\n cursor?: InputMaybe<SchemaWhereUniqueInput>;\n distinct?: InputMaybe<Array<SchemaScalarFieldEnum>>;\n orderBy?: InputMaybe<Array<SchemaOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<SchemaWhereInput>;\n};\n\n\nexport type QueryFindFirstSchemaNameArgs = {\n cursor?: InputMaybe<SchemaNameWhereUniqueInput>;\n distinct?: InputMaybe<Array<SchemaNameScalarFieldEnum>>;\n orderBy?: InputMaybe<Array<SchemaNameOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<SchemaNameWhereInput>;\n};\n\n\nexport type QueryFindFirstSchemaNameOrThrowArgs = {\n cursor?: InputMaybe<SchemaNameWhereUniqueInput>;\n distinct?: InputMaybe<Array<SchemaNameScalarFieldEnum>>;\n orderBy?: InputMaybe<Array<SchemaNameOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<SchemaNameWhereInput>;\n};\n\n\nexport type QueryFindFirstSchemaOrThrowArgs = {\n cursor?: InputMaybe<SchemaWhereUniqueInput>;\n distinct?: InputMaybe<Array<SchemaScalarFieldEnum>>;\n orderBy?: InputMaybe<Array<SchemaOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<SchemaWhereInput>;\n};\n\n\nexport type QueryFindFirstServiceStatArgs = {\n cursor?: InputMaybe<ServiceStatWhereUniqueInput>;\n distinct?: InputMaybe<Array<ServiceStatScalarFieldEnum>>;\n orderBy?: InputMaybe<Array<ServiceStatOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<ServiceStatWhereInput>;\n};\n\n\nexport type QueryFindFirstServiceStatOrThrowArgs = {\n cursor?: InputMaybe<ServiceStatWhereUniqueInput>;\n distinct?: InputMaybe<Array<ServiceStatScalarFieldEnum>>;\n orderBy?: InputMaybe<Array<ServiceStatOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<ServiceStatWhereInput>;\n};\n\n\nexport type QueryFindFirstTimestampArgs = {\n cursor?: InputMaybe<TimestampWhereUniqueInput>;\n distinct?: InputMaybe<Array<TimestampScalarFieldEnum>>;\n orderBy?: InputMaybe<Array<TimestampOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<TimestampWhereInput>;\n};\n\n\nexport type QueryFindFirstTimestampOrThrowArgs = {\n cursor?: InputMaybe<TimestampWhereUniqueInput>;\n distinct?: InputMaybe<Array<TimestampScalarFieldEnum>>;\n orderBy?: InputMaybe<Array<TimestampOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<TimestampWhereInput>;\n};\n\n\nexport type QueryGetAttestationArgs = {\n where: AttestationWhereUniqueInput;\n};\n\n\nexport type QueryGetEnsNameArgs = {\n where: EnsNameWhereUniqueInput;\n};\n\n\nexport type QueryGetOffchainRevocationArgs = {\n where: OffchainRevocationWhereUniqueInput;\n};\n\n\nexport type QueryGetSchemaArgs = {\n where: SchemaWhereUniqueInput;\n};\n\n\nexport type QueryGetSchemaNameArgs = {\n where: SchemaNameWhereUniqueInput;\n};\n\n\nexport type QueryGetServiceStatArgs = {\n where: ServiceStatWhereUniqueInput;\n};\n\n\nexport type QueryGetTimestampArgs = {\n where: TimestampWhereUniqueInput;\n};\n\n\nexport type QueryGroupByAttestationArgs = {\n by: Array<AttestationScalarFieldEnum>;\n having?: InputMaybe<AttestationScalarWhereWithAggregatesInput>;\n orderBy?: InputMaybe<Array<AttestationOrderByWithAggregationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<AttestationWhereInput>;\n};\n\n\nexport type QueryGroupByEnsNameArgs = {\n by: Array<EnsNameScalarFieldEnum>;\n having?: InputMaybe<EnsNameScalarWhereWithAggregatesInput>;\n orderBy?: InputMaybe<Array<EnsNameOrderByWithAggregationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<EnsNameWhereInput>;\n};\n\n\nexport type QueryGroupByOffchainRevocationArgs = {\n by: Array<OffchainRevocationScalarFieldEnum>;\n having?: InputMaybe<OffchainRevocationScalarWhereWithAggregatesInput>;\n orderBy?: InputMaybe<Array<OffchainRevocationOrderByWithAggregationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<OffchainRevocationWhereInput>;\n};\n\n\nexport type QueryGroupBySchemaArgs = {\n by: Array<SchemaScalarFieldEnum>;\n having?: InputMaybe<SchemaScalarWhereWithAggregatesInput>;\n orderBy?: InputMaybe<Array<SchemaOrderByWithAggregationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<SchemaWhereInput>;\n};\n\n\nexport type QueryGroupBySchemaNameArgs = {\n by: Array<SchemaNameScalarFieldEnum>;\n having?: InputMaybe<SchemaNameScalarWhereWithAggregatesInput>;\n orderBy?: InputMaybe<Array<SchemaNameOrderByWithAggregationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<SchemaNameWhereInput>;\n};\n\n\nexport type QueryGroupByServiceStatArgs = {\n by: Array<ServiceStatScalarFieldEnum>;\n having?: InputMaybe<ServiceStatScalarWhereWithAggregatesInput>;\n orderBy?: InputMaybe<Array<ServiceStatOrderByWithAggregationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<ServiceStatWhereInput>;\n};\n\n\nexport type QueryGroupByTimestampArgs = {\n by: Array<TimestampScalarFieldEnum>;\n having?: InputMaybe<TimestampScalarWhereWithAggregatesInput>;\n orderBy?: InputMaybe<Array<TimestampOrderByWithAggregationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<TimestampWhereInput>;\n};\n\n\nexport type QueryOffchainRevocationArgs = {\n where: OffchainRevocationWhereUniqueInput;\n};\n\n\nexport type QueryOffchainRevocationsArgs = {\n cursor?: InputMaybe<OffchainRevocationWhereUniqueInput>;\n distinct?: InputMaybe<Array<OffchainRevocationScalarFieldEnum>>;\n orderBy?: InputMaybe<Array<OffchainRevocationOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<OffchainRevocationWhereInput>;\n};\n\n\nexport type QuerySchemaArgs = {\n where: SchemaWhereUniqueInput;\n};\n\n\nexport type QuerySchemaNameArgs = {\n where: SchemaNameWhereUniqueInput;\n};\n\n\nexport type QuerySchemaNamesArgs = {\n cursor?: InputMaybe<SchemaNameWhereUniqueInput>;\n distinct?: InputMaybe<Array<SchemaNameScalarFieldEnum>>;\n orderBy?: InputMaybe<Array<SchemaNameOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<SchemaNameWhereInput>;\n};\n\n\nexport type QuerySchemataArgs = {\n cursor?: InputMaybe<SchemaWhereUniqueInput>;\n distinct?: InputMaybe<Array<SchemaScalarFieldEnum>>;\n orderBy?: InputMaybe<Array<SchemaOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<SchemaWhereInput>;\n};\n\n\nexport type QueryServiceStatArgs = {\n where: ServiceStatWhereUniqueInput;\n};\n\n\nexport type QueryServiceStatsArgs = {\n cursor?: InputMaybe<ServiceStatWhereUniqueInput>;\n distinct?: InputMaybe<Array<ServiceStatScalarFieldEnum>>;\n orderBy?: InputMaybe<Array<ServiceStatOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<ServiceStatWhereInput>;\n};\n\n\nexport type QueryTimestampArgs = {\n where: TimestampWhereUniqueInput;\n};\n\n\nexport type QueryTimestampsArgs = {\n cursor?: InputMaybe<TimestampWhereUniqueInput>;\n distinct?: InputMaybe<Array<TimestampScalarFieldEnum>>;\n orderBy?: InputMaybe<Array<TimestampOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<TimestampWhereInput>;\n};\n\n\nexport type QueryTransactionArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type QueryTransactionsArgs = {\n after?: InputMaybe<Scalars['String']['input']>;\n block?: InputMaybe<BlockFilter>;\n bundledIn?: InputMaybe<Array<Scalars['ID']['input']>>;\n first?: InputMaybe<Scalars['Int']['input']>;\n ids?: InputMaybe<Array<Scalars['ID']['input']>>;\n owners?: InputMaybe<Array<Scalars['String']['input']>>;\n recipients?: InputMaybe<Array<Scalars['String']['input']>>;\n sort?: InputMaybe<SortOrder>;\n tags?: InputMaybe<Array<TagFilter>>;\n};\n\nexport enum QueryMode {\n Default = 'default',\n Insensitive = 'insensitive'\n}\n\nexport type Schema = {\n __typename?: 'Schema';\n _count?: Maybe<SchemaCount>;\n attestations: Array<Attestation>;\n creator: Scalars['String']['output'];\n id: Scalars['String']['output'];\n index: Scalars['String']['output'];\n resolver: Scalars['String']['output'];\n revocable: Scalars['Boolean']['output'];\n schema: Scalars['String']['output'];\n schemaNames: Array<SchemaName>;\n time: Scalars['Int']['output'];\n txid: Scalars['String']['output'];\n};\n\n\nexport type SchemaAttestationsArgs = {\n cursor?: InputMaybe<AttestationWhereUniqueInput>;\n distinct?: InputMaybe<Array<AttestationScalarFieldEnum>>;\n orderBy?: InputMaybe<Array<AttestationOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<AttestationWhereInput>;\n};\n\n\nexport type SchemaSchemaNamesArgs = {\n cursor?: InputMaybe<SchemaNameWhereUniqueInput>;\n distinct?: InputMaybe<Array<SchemaNameScalarFieldEnum>>;\n orderBy?: InputMaybe<Array<SchemaNameOrderByWithRelationInput>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n where?: InputMaybe<SchemaNameWhereInput>;\n};\n\nexport type SchemaAvgAggregate = {\n __typename?: 'SchemaAvgAggregate';\n time?: Maybe<Scalars['Float']['output']>;\n};\n\nexport type SchemaAvgOrderByAggregateInput = {\n time?: InputMaybe<SortOrder>;\n};\n\nexport type SchemaCount = {\n __typename?: 'SchemaCount';\n attestations: Scalars['Int']['output'];\n schemaNames: Scalars['Int']['output'];\n};\n\nexport type SchemaCountAggregate = {\n __typename?: 'SchemaCountAggregate';\n _all: Scalars['Int']['output'];\n creator: Scalars['Int']['output'];\n id: Scalars['Int']['output'];\n index: Scalars['Int']['output'];\n resolver: Scalars['Int']['output'];\n revocable: Scalars['Int']['output'];\n schema: Scalars['Int']['output'];\n time: Scalars['Int']['output'];\n txid: Scalars['Int']['output'];\n};\n\nexport type SchemaCountOrderByAggregateInput = {\n creator?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n index?: InputMaybe<SortOrder>;\n resolver?: InputMaybe<SortOrder>;\n revocable?: InputMaybe<SortOrder>;\n schema?: InputMaybe<SortOrder>;\n time?: InputMaybe<SortOrder>;\n txid?: InputMaybe<SortOrder>;\n};\n\nexport type SchemaCreateInput = {\n attestations?: InputMaybe<AttestationCreateNestedManyWithoutSchemaInput>;\n creator: Scalars['String']['input'];\n id: Scalars['String']['input'];\n index: Scalars['String']['input'];\n resolver: Scalars['String']['input'];\n revocable: Scalars['Boolean']['input'];\n schema: Scalars['String']['input'];\n schemaNames?: InputMaybe<SchemaNameCreateNestedManyWithoutSchemaInput>;\n time: Scalars['Int']['input'];\n txid: Scalars['String']['input'];\n};\n\nexport type SchemaCreateManyInput = {\n creator: Scalars['String']['input'];\n id: Scalars['String']['input'];\n index: Scalars['String']['input'];\n resolver: Scalars['String']['input'];\n revocable: Scalars['Boolean']['input'];\n schema: Scalars['String']['input'];\n time: Scalars['Int']['input'];\n txid: Scalars['String']['input'];\n};\n\nexport type SchemaCreateNestedOneWithoutAttestationsInput = {\n connect?: InputMaybe<SchemaWhereUniqueInput>;\n connectOrCreate?: InputMaybe<SchemaCreateOrConnectWithoutAttestationsInput>;\n create?: InputMaybe<SchemaCreateWithoutAttestationsInput>;\n};\n\nexport type SchemaCreateNestedOneWithoutSchemaNamesInput = {\n connect?: InputMaybe<SchemaWhereUniqueInput>;\n connectOrCreate?: InputMaybe<SchemaCreateOrConnectWithoutSchemaNamesInput>;\n create?: InputMaybe<SchemaCreateWithoutSchemaNamesInput>;\n};\n\nexport type SchemaCreateOrConnectWithoutAttestationsInput = {\n create: SchemaCreateWithoutAttestationsInput;\n where: SchemaWhereUniqueInput;\n};\n\nexport type SchemaCreateOrConnectWithoutSchemaNamesInput = {\n create: SchemaCreateWithoutSchemaNamesInput;\n where: SchemaWhereUniqueInput;\n};\n\nexport type SchemaCreateWithoutAttestationsInput = {\n creator: Scalars['String']['input'];\n id: Scalars['String']['input'];\n index: Scalars['String']['input'];\n resolver: Scalars['String']['input'];\n revocable: Scalars['Boolean']['input'];\n schema: Scalars['String']['input'];\n schemaNames?: InputMaybe<SchemaNameCreateNestedManyWithoutSchemaInput>;\n time: Scalars['Int']['input'];\n txid: Scalars['String']['input'];\n};\n\nexport type SchemaCreateWithoutSchemaNamesInput = {\n attestations?: InputMaybe<AttestationCreateNestedManyWithoutSchemaInput>;\n creator: Scalars['String']['input'];\n id: Scalars['String']['input'];\n index: Scalars['String']['input'];\n resolver: Scalars['String']['input'];\n revocable: Scalars['Boolean']['input'];\n schema: Scalars['String']['input'];\n time: Scalars['Int']['input'];\n txid: Scalars['String']['input'];\n};\n\nexport type SchemaGroupBy = {\n __typename?: 'SchemaGroupBy';\n _avg?: Maybe<SchemaAvgAggregate>;\n _count?: Maybe<SchemaCountAggregate>;\n _max?: Maybe<SchemaMaxAggregate>;\n _min?: Maybe<SchemaMinAggregate>;\n _sum?: Maybe<SchemaSumAggregate>;\n creator: Scalars['String']['output'];\n id: Scalars['String']['output'];\n index: Scalars['String']['output'];\n resolver: Scalars['String']['output'];\n revocable: Scalars['Boolean']['output'];\n schema: Scalars['String']['output'];\n time: Scalars['Int']['output'];\n txid: Scalars['String']['output'];\n};\n\nexport type SchemaMaxAggregate = {\n __typename?: 'SchemaMaxAggregate';\n creator?: Maybe<Scalars['String']['output']>;\n id?: Maybe<Scalars['String']['output']>;\n index?: Maybe<Scalars['String']['output']>;\n resolver?: Maybe<Scalars['String']['output']>;\n revocable?: Maybe<Scalars['Boolean']['output']>;\n schema?: Maybe<Scalars['String']['output']>;\n time?: Maybe<Scalars['Int']['output']>;\n txid?: Maybe<Scalars['String']['output']>;\n};\n\nexport type SchemaMaxOrderByAggregateInput = {\n creator?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n index?: InputMaybe<SortOrder>;\n resolver?: InputMaybe<SortOrder>;\n revocable?: InputMaybe<SortOrder>;\n schema?: InputMaybe<SortOrder>;\n time?: InputMaybe<SortOrder>;\n txid?: InputMaybe<SortOrder>;\n};\n\nexport type SchemaMinAggregate = {\n __typename?: 'SchemaMinAggregate';\n creator?: Maybe<Scalars['String']['output']>;\n id?: Maybe<Scalars['String']['output']>;\n index?: Maybe<Scalars['String']['output']>;\n resolver?: Maybe<Scalars['String']['output']>;\n revocable?: Maybe<Scalars['Boolean']['output']>;\n schema?: Maybe<Scalars['String']['output']>;\n time?: Maybe<Scalars['Int']['output']>;\n txid?: Maybe<Scalars['String']['output']>;\n};\n\nexport type SchemaMinOrderByAggregateInput = {\n creator?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n index?: InputMaybe<SortOrder>;\n resolver?: InputMaybe<SortOrder>;\n revocable?: InputMaybe<SortOrder>;\n schema?: InputMaybe<SortOrder>;\n time?: InputMaybe<SortOrder>;\n txid?: InputMaybe<SortOrder>;\n};\n\nexport type SchemaName = {\n __typename?: 'SchemaName';\n attesterAddress: Scalars['String']['output'];\n id: Scalars['String']['output'];\n isCreator: Scalars['Boolean']['output'];\n name: Scalars['String']['output'];\n schema: Schema;\n schemaId: Scalars['String']['output'];\n time: Scalars['Int']['output'];\n};\n\nexport type SchemaNameAvgAggregate = {\n __typename?: 'SchemaNameAvgAggregate';\n time?: Maybe<Scalars['Float']['output']>;\n};\n\nexport type SchemaNameAvgOrderByAggregateInput = {\n time?: InputMaybe<SortOrder>;\n};\n\nexport type SchemaNameCountAggregate = {\n __typename?: 'SchemaNameCountAggregate';\n _all: Scalars['Int']['output'];\n attesterAddress: Scalars['Int']['output'];\n id: Scalars['Int']['output'];\n isCreator: Scalars['Int']['output'];\n name: Scalars['Int']['output'];\n schemaId: Scalars['Int']['output'];\n time: Scalars['Int']['output'];\n};\n\nexport type SchemaNameCountOrderByAggregateInput = {\n attesterAddress?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n isCreator?: InputMaybe<SortOrder>;\n name?: InputMaybe<SortOrder>;\n schemaId?: InputMaybe<SortOrder>;\n time?: InputMaybe<SortOrder>;\n};\n\nexport type SchemaNameCreateInput = {\n attesterAddress: Scalars['String']['input'];\n id?: InputMaybe<Scalars['String']['input']>;\n isCreator: Scalars['Boolean']['input'];\n name: Scalars['String']['input'];\n schema: SchemaCreateNestedOneWithoutSchemaNamesInput;\n time: Scalars['Int']['input'];\n};\n\nexport type SchemaNameCreateManyInput = {\n attesterAddress: Scalars['String']['input'];\n id?: InputMaybe<Scalars['String']['input']>;\n isCreator: Scalars['Boolean']['input'];\n name: Scalars['String']['input'];\n schemaId: Scalars['String']['input'];\n time: Scalars['Int']['input'];\n};\n\nexport type SchemaNameCreateManySchemaInput = {\n attesterAddress: Scalars['String']['input'];\n id?: InputMaybe<Scalars['String']['input']>;\n isCreator: Scalars['Boolean']['input'];\n name: Scalars['String']['input'];\n time: Scalars['Int']['input'];\n};\n\nexport type SchemaNameCreateManySchemaInputEnvelope = {\n data: Array<SchemaNameCreateManySchemaInput>;\n skipDuplicates?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\nexport type SchemaNameCreateNestedManyWithoutSchemaInput = {\n connect?: InputMaybe<Array<SchemaNameWhereUniqueInput>>;\n connectOrCreate?: InputMaybe<Array<SchemaNameCreateOrConnectWithoutSchemaInput>>;\n create?: InputMaybe<Array<SchemaNameCreateWithoutSchemaInput>>;\n createMany?: InputMaybe<SchemaNameCreateManySchemaInputEnvelope>;\n};\n\nexport type SchemaNameCreateOrConnectWithoutSchemaInput = {\n create: SchemaNameCreateWithoutSchemaInput;\n where: SchemaNameWhereUniqueInput;\n};\n\nexport type SchemaNameCreateWithoutSchemaInput = {\n attesterAddress: Scalars['String']['input'];\n id?: InputMaybe<Scalars['String']['input']>;\n isCreator: Scalars['Boolean']['input'];\n name: Scalars['String']['input'];\n time: Scalars['Int']['input'];\n};\n\nexport type SchemaNameGroupBy = {\n __typename?: 'SchemaNameGroupBy';\n _avg?: Maybe<SchemaNameAvgAggregate>;\n _count?: Maybe<SchemaNameCountAggregate>;\n _max?: Maybe<SchemaNameMaxAggregate>;\n _min?: Maybe<SchemaNameMinAggregate>;\n _sum?: Maybe<SchemaNameSumAggregate>;\n attesterAddress: Scalars['String']['output'];\n id: Scalars['String']['output'];\n isCreator: Scalars['Boolean']['output'];\n name: Scalars['String']['output'];\n schemaId: Scalars['String']['output'];\n time: Scalars['Int']['output'];\n};\n\nexport type SchemaNameListRelationFilter = {\n every?: InputMaybe<SchemaNameWhereInput>;\n none?: InputMaybe<SchemaNameWhereInput>;\n some?: InputMaybe<SchemaNameWhereInput>;\n};\n\nexport type SchemaNameMaxAggregate = {\n __typename?: 'SchemaNameMaxAggregate';\n attesterAddress?: Maybe<Scalars['String']['output']>;\n id?: Maybe<Scalars['String']['output']>;\n isCreator?: Maybe<Scalars['Boolean']['output']>;\n name?: Maybe<Scalars['String']['output']>;\n schemaId?: Maybe<Scalars['String']['output']>;\n time?: Maybe<Scalars['Int']['output']>;\n};\n\nexport type SchemaNameMaxOrderByAggregateInput = {\n attesterAddress?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n isCreator?: InputMaybe<SortOrder>;\n name?: InputMaybe<SortOrder>;\n schemaId?: InputMaybe<SortOrder>;\n time?: InputMaybe<SortOrder>;\n};\n\nexport type SchemaNameMinAggregate = {\n __typename?: 'SchemaNameMinAggregate';\n attesterAddress?: Maybe<Scalars['String']['output']>;\n id?: Maybe<Scalars['String']['output']>;\n isCreator?: Maybe<Scalars['Boolean']['output']>;\n name?: Maybe<Scalars['String']['output']>;\n schemaId?: Maybe<Scalars['String']['output']>;\n time?: Maybe<Scalars['Int']['output']>;\n};\n\nexport type SchemaNameMinOrderByAggregateInput = {\n attesterAddress?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n isCreator?: InputMaybe<SortOrder>;\n name?: InputMaybe<SortOrder>;\n schemaId?: InputMaybe<SortOrder>;\n time?: InputMaybe<SortOrder>;\n};\n\nexport type SchemaNameOrderByRelationAggregateInput = {\n _count?: InputMaybe<SortOrder>;\n};\n\nexport type SchemaNameOrderByWithAggregationInput = {\n _avg?: InputMaybe<SchemaNameAvgOrderByAggregateInput>;\n _count?: InputMaybe<SchemaNameCountOrderByAggregateInput>;\n _max?: InputMaybe<SchemaNameMaxOrderByAggregateInput>;\n _min?: InputMaybe<SchemaNameMinOrderByAggregateInput>;\n _sum?: InputMaybe<SchemaNameSumOrderByAggregateInput>;\n attesterAddress?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n isCreator?: InputMaybe<SortOrder>;\n name?: InputMaybe<SortOrder>;\n schemaId?: InputMaybe<SortOrder>;\n time?: InputMaybe<SortOrder>;\n};\n\nexport type SchemaNameOrderByWithRelationInput = {\n attesterAddress?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n isCreator?: InputMaybe<SortOrder>;\n name?: InputMaybe<SortOrder>;\n schema?: InputMaybe<SchemaOrderByWithRelationInput>;\n schemaId?: InputMaybe<SortOrder>;\n time?: InputMaybe<SortOrder>;\n};\n\nexport enum SchemaNameScalarFieldEnum {\n AttesterAddress = 'attesterAddress',\n Id = 'id',\n IsCreator = 'isCreator',\n Name = 'name',\n SchemaId = 'schemaId',\n Time = 'time'\n}\n\nexport type SchemaNameScalarWhereInput = {\n AND?: InputMaybe<Array<SchemaNameScalarWhereInput>>;\n NOT?: InputMaybe<Array<SchemaNameScalarWhereInput>>;\n OR?: InputMaybe<Array<SchemaNameScalarWhereInput>>;\n attesterAddress?: InputMaybe<StringFilter>;\n id?: InputMaybe<StringFilter>;\n isCreator?: InputMaybe<BoolFilter>;\n name?: InputMaybe<StringFilter>;\n schemaId?: InputMaybe<StringFilter>;\n time?: InputMaybe<IntFilter>;\n};\n\nexport type SchemaNameScalarWhereWithAggregatesInput = {\n AND?: InputMaybe<Array<SchemaNameScalarWhereWithAggregatesInput>>;\n NOT?: InputMaybe<Array<SchemaNameScalarWhereWithAggregatesInput>>;\n OR?: InputMaybe<Array<SchemaNameScalarWhereWithAggregatesInput>>;\n attesterAddress?: InputMaybe<StringWithAggregatesFilter>;\n id?: InputMaybe<StringWithAggregatesFilter>;\n isCreator?: InputMaybe<BoolWithAggregatesFilter>;\n name?: InputMaybe<StringWithAggregatesFilter>;\n schemaId?: InputMaybe<StringWithAggregatesFilter>;\n time?: InputMaybe<IntWithAggregatesFilter>;\n};\n\nexport type SchemaNameSumAggregate = {\n __typename?: 'SchemaNameSumAggregate';\n time?: Maybe<Scalars['Int']['output']>;\n};\n\nexport type SchemaNameSumOrderByAggregateInput = {\n time?: InputMaybe<SortOrder>;\n};\n\nexport type SchemaNameUpdateInput = {\n attesterAddress?: InputMaybe<StringFieldUpdateOperationsInput>;\n id?: InputMaybe<StringFieldUpdateOperationsInput>;\n isCreator?: InputMaybe<BoolFieldUpdateOperationsInput>;\n name?: InputMaybe<StringFieldUpdateOperationsInput>;\n schema?: InputMaybe<SchemaUpdateOneRequiredWithoutSchemaNamesNestedInput>;\n time?: InputMaybe<IntFieldUpdateOperationsInput>;\n};\n\nexport type SchemaNameUpdateManyMutationInput = {\n attesterAddress?: InputMaybe<StringFieldUpdateOperationsInput>;\n id?: InputMaybe<StringFieldUpdateOperationsInput>;\n isCreator?: InputMaybe<BoolFieldUpdateOperationsInput>;\n name?: InputMaybe<StringFieldUpdateOperationsInput>;\n time?: InputMaybe<IntFieldUpdateOperationsInput>;\n};\n\nexport type SchemaNameUpdateManyWithWhereWithoutSchemaInput = {\n data: SchemaNameUpdateManyMutationInput;\n where: SchemaNameScalarWhereInput;\n};\n\nexport type SchemaNameUpdateManyWithoutSchemaNestedInput = {\n connect?: InputMaybe<Array<SchemaNameWhereUniqueInput>>;\n connectOrCreate?: InputMaybe<Array<SchemaNameCreateOrConnectWithoutSchemaInput>>;\n create?: InputMaybe<Array<SchemaNameCreateWithoutSchemaInput>>;\n createMany?: InputMaybe<SchemaNameCreateManySchemaInputEnvelope>;\n delete?: InputMaybe<Array<SchemaNameWhereUniqueInput>>;\n deleteMany?: InputMaybe<Array<SchemaNameScalarWhereInput>>;\n disconnect?: InputMaybe<Array<SchemaNameWhereUniqueInput>>;\n set?: InputMaybe<Array<SchemaNameWhereUniqueInput>>;\n update?: InputMaybe<Array<SchemaNameUpdateWithWhereUniqueWithoutSchemaInput>>;\n updateMany?: InputMaybe<Array<SchemaNameUpdateManyWithWhereWithoutSchemaInput>>;\n upsert?: InputMaybe<Array<SchemaNameUpsertWithWhereUniqueWithoutSchemaInput>>;\n};\n\nexport type SchemaNameUpdateWithWhereUniqueWithoutSchemaInput = {\n data: SchemaNameUpdateWithoutSchemaInput;\n where: SchemaNameWhereUniqueInput;\n};\n\nexport type SchemaNameUpdateWithoutSchemaInput = {\n attesterAddress?: InputMaybe<StringFieldUpdateOperationsInput>;\n id?: InputMaybe<StringFieldUpdateOperationsInput>;\n isCreator?: InputMaybe<BoolFieldUpdateOperationsInput>;\n name?: InputMaybe<StringFieldUpdateOperationsInput>;\n time?: InputMaybe<IntFieldUpdateOperationsInput>;\n};\n\nexport type SchemaNameUpsertWithWhereUniqueWithoutSchemaInput = {\n create: SchemaNameCreateWithoutSchemaInput;\n update: SchemaNameUpdateWithoutSchemaInput;\n where: SchemaNameWhereUniqueInput;\n};\n\nexport type SchemaNameWhereInput = {\n AND?: InputMaybe<Array<SchemaNameWhereInput>>;\n NOT?: InputMaybe<Array<SchemaNameWhereInput>>;\n OR?: InputMaybe<Array<SchemaNameWhereInput>>;\n attesterAddress?: InputMaybe<StringFilter>;\n id?: InputMaybe<StringFilter>;\n isCreator?: InputMaybe<BoolFilter>;\n name?: InputMaybe<StringFilter>;\n schema?: InputMaybe<SchemaRelationFilter>;\n schemaId?: InputMaybe<StringFilter>;\n time?: InputMaybe<IntFilter>;\n};\n\nexport type SchemaNameWhereUniqueInput = {\n id?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type SchemaOrderByWithAggregationInput = {\n _avg?: InputMaybe<SchemaAvgOrderByAggregateInput>;\n _count?: InputMaybe<SchemaCountOrderByAggregateInput>;\n _max?: InputMaybe<SchemaMaxOrderByAggregateInput>;\n _min?: InputMaybe<SchemaMinOrderByAggregateInput>;\n _sum?: InputMaybe<SchemaSumOrderByAggregateInput>;\n creator?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n index?: InputMaybe<SortOrder>;\n resolver?: InputMaybe<SortOrder>;\n revocable?: InputMaybe<SortOrder>;\n schema?: InputMaybe<SortOrder>;\n time?: InputMaybe<SortOrder>;\n txid?: InputMaybe<SortOrder>;\n};\n\nexport type SchemaOrderByWithRelationInput = {\n attestations?: InputMaybe<AttestationOrderByRelationAggregateInput>;\n creator?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n index?: InputMaybe<SortOrder>;\n resolver?: InputMaybe<SortOrder>;\n revocable?: InputMaybe<SortOrder>;\n schema?: InputMaybe<SortOrder>;\n schemaNames?: InputMaybe<SchemaNameOrderByRelationAggregateInput>;\n time?: InputMaybe<SortOrder>;\n txid?: InputMaybe<SortOrder>;\n};\n\nexport type SchemaRelationFilter = {\n is?: InputMaybe<SchemaWhereInput>;\n isNot?: InputMaybe<SchemaWhereInput>;\n};\n\nexport enum SchemaScalarFieldEnum {\n Creator = 'creator',\n Id = 'id',\n Index = 'index',\n Resolver = 'resolver',\n Revocable = 'revocable',\n Schema = 'schema',\n Time = 'time',\n Txid = 'txid'\n}\n\nexport type SchemaScalarWhereWithAggregatesInput = {\n AND?: InputMaybe<Array<SchemaScalarWhereWithAggregatesInput>>;\n NOT?: InputMaybe<Array<SchemaScalarWhereWithAggregatesInput>>;\n OR?: InputMaybe<Array<SchemaScalarWhereWithAggregatesInput>>;\n creator?: InputMaybe<StringWithAggregatesFilter>;\n id?: InputMaybe<StringWithAggregatesFilter>;\n index?: InputMaybe<StringWithAggregatesFilter>;\n resolver?: InputMaybe<StringWithAggregatesFilter>;\n revocable?: InputMaybe<BoolWithAggregatesFilter>;\n schema?: InputMaybe<StringWithAggregatesFilter>;\n time?: InputMaybe<IntWithAggregatesFilter>;\n txid?: InputMaybe<StringWithAggregatesFilter>;\n};\n\nexport type SchemaSumAggregate = {\n __typename?: 'SchemaSumAggregate';\n time?: Maybe<Scalars['Int']['output']>;\n};\n\nexport type SchemaSumOrderByAggregateInput = {\n time?: InputMaybe<SortOrder>;\n};\n\nexport type SchemaUpdateInput = {\n attestations?: InputMaybe<AttestationUpdateManyWithoutSchemaNestedInput>;\n creator?: InputMaybe<StringFieldUpdateOperationsInput>;\n id?: InputMaybe<StringFieldUpdateOperationsInput>;\n index?: InputMaybe<StringFieldUpdateOperationsInput>;\n resolver?: InputMaybe<StringFieldUpdateOperationsInput>;\n revocable?: InputMaybe<BoolFieldUpdateOperationsInput>;\n schema?: InputMaybe<StringFieldUpdateOperationsInput>;\n schemaNames?: InputMaybe<SchemaNameUpdateManyWithoutSchemaNestedInput>;\n time?: InputMaybe<IntFieldUpdateOperationsInput>;\n txid?: InputMaybe<StringFieldUpdateOperationsInput>;\n};\n\nexport type SchemaUpdateManyMutationInput = {\n creator?: InputMaybe<StringFieldUpdateOperationsInput>;\n id?: InputMaybe<StringFieldUpdateOperationsInput>;\n index?: InputMaybe<StringFieldUpdateOperationsInput>;\n resolver?: InputMaybe<StringFieldUpdateOperationsInput>;\n revocable?: InputMaybe<BoolFieldUpdateOperationsInput>;\n schema?: InputMaybe<StringFieldUpdateOperationsInput>;\n time?: InputMaybe<IntFieldUpdateOperationsInput>;\n txid?: InputMaybe<StringFieldUpdateOperationsInput>;\n};\n\nexport type SchemaUpdateOneRequiredWithoutAttestationsNestedInput = {\n connect?: InputMaybe<SchemaWhereUniqueInput>;\n connectOrCreate?: InputMaybe<SchemaCreateOrConnectWithoutAttestationsInput>;\n create?: InputMaybe<SchemaCreateWithoutAttestationsInput>;\n update?: InputMaybe<SchemaUpdateWithoutAttestationsInput>;\n upsert?: InputMaybe<SchemaUpsertWithoutAttestationsInput>;\n};\n\nexport type SchemaUpdateOneRequiredWithoutSchemaNamesNestedInput = {\n connect?: InputMaybe<SchemaWhereUniqueInput>;\n connectOrCreate?: InputMaybe<SchemaCreateOrConnectWithoutSchemaNamesInput>;\n create?: InputMaybe<SchemaCreateWithoutSchemaNamesInput>;\n update?: InputMaybe<SchemaUpdateWithoutSchemaNamesInput>;\n upsert?: InputMaybe<SchemaUpsertWithoutSchemaNamesInput>;\n};\n\nexport type SchemaUpdateWithoutAttestationsInput = {\n creator?: InputMaybe<StringFieldUpdateOperationsInput>;\n id?: InputMaybe<StringFieldUpdateOperationsInput>;\n index?: InputMaybe<StringFieldUpdateOperationsInput>;\n resolver?: InputMaybe<StringFieldUpdateOperationsInput>;\n revocable?: InputMaybe<BoolFieldUpdateOperationsInput>;\n schema?: InputMaybe<StringFieldUpdateOperationsInput>;\n schemaNames?: InputMaybe<SchemaNameUpdateManyWithoutSchemaNestedInput>;\n time?: InputMaybe<IntFieldUpdateOperationsInput>;\n txid?: InputMaybe<StringFieldUpdateOperationsInput>;\n};\n\nexport type SchemaUpdateWithoutSchemaNamesInput = {\n attestations?: InputMaybe<AttestationUpdateManyWithoutSchemaNestedInput>;\n creator?: InputMaybe<StringFieldUpdateOperationsInput>;\n id?: InputMaybe<StringFieldUpdateOperationsInput>;\n index?: InputMaybe<StringFieldUpdateOperationsInput>;\n resolver?: InputMaybe<StringFieldUpdateOperationsInput>;\n revocable?: InputMaybe<BoolFieldUpdateOperationsInput>;\n schema?: InputMaybe<StringFieldUpdateOperationsInput>;\n time?: InputMaybe<IntFieldUpdateOperationsInput>;\n txid?: InputMaybe<StringFieldUpdateOperationsInput>;\n};\n\nexport type SchemaUpsertWithoutAttestationsInput = {\n create: SchemaCreateWithoutAttestationsInput;\n update: SchemaUpdateWithoutAttestationsInput;\n};\n\nexport type SchemaUpsertWithoutSchemaNamesInput = {\n create: SchemaCreateWithoutSchemaNamesInput;\n update: SchemaUpdateWithoutSchemaNamesInput;\n};\n\nexport type SchemaWhereInput = {\n AND?: InputMaybe<Array<SchemaWhereInput>>;\n NOT?: InputMaybe<Array<SchemaWhereInput>>;\n OR?: InputMaybe<Array<SchemaWhereInput>>;\n attestations?: InputMaybe<AttestationListRelationFilter>;\n creator?: InputMaybe<StringFilter>;\n id?: InputMaybe<StringFilter>;\n index?: InputMaybe<StringFilter>;\n resolver?: InputMaybe<StringFilter>;\n revocable?: InputMaybe<BoolFilter>;\n schema?: InputMaybe<StringFilter>;\n schemaNames?: InputMaybe<SchemaNameListRelationFilter>;\n time?: InputMaybe<IntFilter>;\n txid?: InputMaybe<StringFilter>;\n};\n\nexport type SchemaWhereUniqueInput = {\n id?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type ServiceStat = {\n __typename?: 'ServiceStat';\n name: Scalars['String']['output'];\n value: Scalars['String']['output'];\n};\n\nexport type ServiceStatCountAggregate = {\n __typename?: 'ServiceStatCountAggregate';\n _all: Scalars['Int']['output'];\n name: Scalars['Int']['output'];\n value: Scalars['Int']['output'];\n};\n\nexport type ServiceStatCountOrderByAggregateInput = {\n name?: InputMaybe<SortOrder>;\n value?: InputMaybe<SortOrder>;\n};\n\nexport type ServiceStatCreateInput = {\n name: Scalars['String']['input'];\n value: Scalars['String']['input'];\n};\n\nexport type ServiceStatCreateManyInput = {\n name: Scalars['String']['input'];\n value: Scalars['String']['input'];\n};\n\nexport type ServiceStatGroupBy = {\n __typename?: 'ServiceStatGroupBy';\n _count?: Maybe<ServiceStatCountAggregate>;\n _max?: Maybe<ServiceStatMaxAggregate>;\n _min?: Maybe<ServiceStatMinAggregate>;\n name: Scalars['String']['output'];\n value: Scalars['String']['output'];\n};\n\nexport type ServiceStatMaxAggregate = {\n __typename?: 'ServiceStatMaxAggregate';\n name?: Maybe<Scalars['String']['output']>;\n value?: Maybe<Scalars['String']['output']>;\n};\n\nexport type ServiceStatMaxOrderByAggregateInput = {\n name?: InputMaybe<SortOrder>;\n value?: InputMaybe<SortOrder>;\n};\n\nexport type ServiceStatMinAggregate = {\n __typename?: 'ServiceStatMinAggregate';\n name?: Maybe<Scalars['String']['output']>;\n value?: Maybe<Scalars['String']['output']>;\n};\n\nexport type ServiceStatMinOrderByAggregateInput = {\n name?: InputMaybe<SortOrder>;\n value?: InputMaybe<SortOrder>;\n};\n\nexport type ServiceStatOrderByWithAggregationInput = {\n _count?: InputMaybe<ServiceStatCountOrderByAggregateInput>;\n _max?: InputMaybe<ServiceStatMaxOrderByAggregateInput>;\n _min?: InputMaybe<ServiceStatMinOrderByAggregateInput>;\n name?: InputMaybe<SortOrder>;\n value?: InputMaybe<SortOrder>;\n};\n\nexport type ServiceStatOrderByWithRelationInput = {\n name?: InputMaybe<SortOrder>;\n value?: InputMaybe<SortOrder>;\n};\n\nexport enum ServiceStatScalarFieldEnum {\n Name = 'name',\n Value = 'value'\n}\n\nexport type ServiceStatScalarWhereWithAggregatesInput = {\n AND?: InputMaybe<Array<ServiceStatScalarWhereWithAggregatesInput>>;\n NOT?: InputMaybe<Array<ServiceStatScalarWhereWithAggregatesInput>>;\n OR?: InputMaybe<Array<ServiceStatScalarWhereWithAggregatesInput>>;\n name?: InputMaybe<StringWithAggregatesFilter>;\n value?: InputMaybe<StringWithAggregatesFilter>;\n};\n\nexport type ServiceStatUpdateInput = {\n name?: InputMaybe<StringFieldUpdateOperationsInput>;\n value?: InputMaybe<StringFieldUpdateOperationsInput>;\n};\n\nexport type ServiceStatUpdateManyMutationInput = {\n name?: InputMaybe<StringFieldUpdateOperationsInput>;\n value?: InputMaybe<StringFieldUpdateOperationsInput>;\n};\n\nexport type ServiceStatWhereInput = {\n AND?: InputMaybe<Array<ServiceStatWhereInput>>;\n NOT?: InputMaybe<Array<ServiceStatWhereInput>>;\n OR?: InputMaybe<Array<ServiceStatWhereInput>>;\n name?: InputMaybe<StringFilter>;\n value?: InputMaybe<StringFilter>;\n};\n\nexport type ServiceStatWhereUniqueInput = {\n name?: InputMaybe<Scalars['String']['input']>;\n};\n\n/** Optionally reverse the result sort order from `HEIGHT_DESC` (default) to `HEIGHT_ASC`. */\nexport enum SortOrder {\n /** Results are sorted by the transaction block height in ascending order, with the oldest transactions appearing first, and the most recent and pending/unconfirmed appearing last. */\n HeightAsc = 'HEIGHT_ASC',\n /** Results are sorted by the transaction block height in descending order, with the most recent and unconfirmed/pending transactions appearing first. */\n HeightDesc = 'HEIGHT_DESC',\n Asc = 'asc',\n Desc = 'desc'\n}\n\nexport type StringFieldUpdateOperationsInput = {\n set?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type StringFilter = {\n contains?: InputMaybe<Scalars['String']['input']>;\n endsWith?: InputMaybe<Scalars['String']['input']>;\n equals?: InputMaybe<Scalars['String']['input']>;\n gt?: InputMaybe<Scalars['String']['input']>;\n gte?: InputMaybe<Scalars['String']['input']>;\n in?: InputMaybe<Array<Scalars['String']['input']>>;\n lt?: InputMaybe<Scalars['String']['input']>;\n lte?: InputMaybe<Scalars['String']['input']>;\n mode?: InputMaybe<QueryMode>;\n not?: InputMaybe<NestedStringFilter>;\n notIn?: InputMaybe<Array<Scalars['String']['input']>>;\n startsWith?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type StringWithAggregatesFilter = {\n _count?: InputMaybe<NestedIntFilter>;\n _max?: InputMaybe<NestedStringFilter>;\n _min?: InputMaybe<NestedStringFilter>;\n contains?: InputMaybe<Scalars['String']['input']>;\n endsWith?: InputMaybe<Scalars['String']['input']>;\n equals?: InputMaybe<Scalars['String']['input']>;\n gt?: InputMaybe<Scalars['String']['input']>;\n gte?: InputMaybe<Scalars['String']['input']>;\n in?: InputMaybe<Array<Scalars['String']['input']>>;\n lt?: InputMaybe<Scalars['String']['input']>;\n lte?: InputMaybe<Scalars['String']['input']>;\n mode?: InputMaybe<QueryMode>;\n not?: InputMaybe<NestedStringWithAggregatesFilter>;\n notIn?: InputMaybe<Array<Scalars['String']['input']>>;\n startsWith?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type Tag = {\n __typename?: 'Tag';\n /** UTF-8 tag name */\n name: Scalars['String']['output'];\n /** UTF-8 tag value */\n value: Scalars['String']['output'];\n};\n\n/** Find transactions with the folowing tag name and value */\nexport type TagFilter = {\n /** The tag name */\n name: Scalars['String']['input'];\n /** The operator to apply to to the tag filter. Defaults to EQ (equal). */\n op?: InputMaybe<TagOperator>;\n /**\n * An array of values to match against. If multiple values are passed then transactions with _any_ matching tag value from the set will be returned.\n *\n * e.g.\n *\n * \\`{name: \"app-name\", values: [\"app-1\"]}\\`\n *\n * Returns all transactions where the \\`app-name\\` tag has a value of \\`app-1\\`.\n *\n * \\`{name: \"app-name\", values: [\"app-1\", \"app-2\", \"app-3\"]}\\`\n *\n * Returns all transactions where the \\`app-name\\` tag has a value of either \\`app-1\\` _or_ \\`app-2\\` _or_ \\`app-3\\`.\n */\n values: Array<Scalars['String']['input']>;\n};\n\n/** The operator to apply to a tag value. */\nexport enum TagOperator {\n /** Equal */\n Eq = 'EQ'\n}\n\nexport type Timestamp = {\n __typename?: 'Timestamp';\n from: Scalars['String']['output'];\n id: Scalars['String']['output'];\n timestamp: Scalars['Int']['output'];\n tree: Scalars['String']['output'];\n txid: Scalars['String']['output'];\n};\n\nexport type TimestampAvgAggregate = {\n __typename?: 'TimestampAvgAggregate';\n timestamp?: Maybe<Scalars['Float']['output']>;\n};\n\nexport type TimestampAvgOrderByAggregateInput = {\n timestamp?: InputMaybe<SortOrder>;\n};\n\nexport type TimestampCountAggregate = {\n __typename?: 'TimestampCountAggregate';\n _all: Scalars['Int']['output'];\n from: Scalars['Int']['output'];\n id: Scalars['Int']['output'];\n timestamp: Scalars['Int']['output'];\n tree: Scalars['Int']['output'];\n txid: Scalars['Int']['output'];\n};\n\nexport type TimestampCountOrderByAggregateInput = {\n from?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n timestamp?: InputMaybe<SortOrder>;\n tree?: InputMaybe<SortOrder>;\n txid?: InputMaybe<SortOrder>;\n};\n\nexport type TimestampCreateInput = {\n from: Scalars['String']['input'];\n id: Scalars['String']['input'];\n timestamp: Scalars['Int']['input'];\n tree?: InputMaybe<Scalars['String']['input']>;\n txid: Scalars['String']['input'];\n};\n\nexport type TimestampCreateManyInput = {\n from: Scalars['String']['input'];\n id: Scalars['String']['input'];\n timestamp: Scalars['Int']['input'];\n tree?: InputMaybe<Scalars['String']['input']>;\n txid: Scalars['String']['input'];\n};\n\nexport type TimestampGroupBy = {\n __typename?: 'TimestampGroupBy';\n _avg?: Maybe<TimestampAvgAggregate>;\n _count?: Maybe<TimestampCountAggregate>;\n _max?: Maybe<TimestampMaxAggregate>;\n _min?: Maybe<TimestampMinAggregate>;\n _sum?: Maybe<TimestampSumAggregate>;\n from: Scalars['String']['output'];\n id: Scalars['String']['output'];\n timestamp: Scalars['Int']['output'];\n tree: Scalars['String']['output'];\n txid: Scalars['String']['output'];\n};\n\nexport type TimestampMaxAggregate = {\n __typename?: 'TimestampMaxAggregate';\n from?: Maybe<Scalars['String']['output']>;\n id?: Maybe<Scalars['String']['output']>;\n timestamp?: Maybe<Scalars['Int']['output']>;\n tree?: Maybe<Scalars['String']['output']>;\n txid?: Maybe<Scalars['String']['output']>;\n};\n\nexport type TimestampMaxOrderByAggregateInput = {\n from?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n timestamp?: InputMaybe<SortOrder>;\n tree?: InputMaybe<SortOrder>;\n txid?: InputMaybe<SortOrder>;\n};\n\nexport type TimestampMinAggregate = {\n __typename?: 'TimestampMinAggregate';\n from?: Maybe<Scalars['String']['output']>;\n id?: Maybe<Scalars['String']['output']>;\n timestamp?: Maybe<Scalars['Int']['output']>;\n tree?: Maybe<Scalars['String']['output']>;\n txid?: Maybe<Scalars['String']['output']>;\n};\n\nexport type TimestampMinOrderByAggregateInput = {\n from?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n timestamp?: InputMaybe<SortOrder>;\n tree?: InputMaybe<SortOrder>;\n txid?: InputMaybe<SortOrder>;\n};\n\nexport type TimestampOrderByWithAggregationInput = {\n _avg?: InputMaybe<TimestampAvgOrderByAggregateInput>;\n _count?: InputMaybe<TimestampCountOrderByAggregateInput>;\n _max?: InputMaybe<TimestampMaxOrderByAggregateInput>;\n _min?: InputMaybe<TimestampMinOrderByAggregateInput>;\n _sum?: InputMaybe<TimestampSumOrderByAggregateInput>;\n from?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n timestamp?: InputMaybe<SortOrder>;\n tree?: InputMaybe<SortOrder>;\n txid?: InputMaybe<SortOrder>;\n};\n\nexport type TimestampOrderByWithRelationInput = {\n from?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n timestamp?: InputMaybe<SortOrder>;\n tree?: InputMaybe<SortOrder>;\n txid?: InputMaybe<SortOrder>;\n};\n\nexport enum TimestampScalarFieldEnum {\n From = 'from',\n Id = 'id',\n Timestamp = 'timestamp',\n Tree = 'tree',\n Txid = 'txid'\n}\n\nexport type TimestampScalarWhereWithAggregatesInput = {\n AND?: InputMaybe<Array<TimestampScalarWhereWithAggregatesInput>>;\n NOT?: InputMaybe<Array<TimestampScalarWhereWithAggregatesInput>>;\n OR?: InputMaybe<Array<TimestampScalarWhereWithAggregatesInput>>;\n from?: InputMaybe<StringWithAggregatesFilter>;\n id?: InputMaybe<StringWithAggregatesFilter>;\n timestamp?: InputMaybe<IntWithAggregatesFilter>;\n tree?: InputMaybe<StringWithAggregatesFilter>;\n txid?: InputMaybe<StringWithAggregatesFilter>;\n};\n\nexport type TimestampSumAggregate = {\n __typename?: 'TimestampSumAggregate';\n timestamp?: Maybe<Scalars['Int']['output']>;\n};\n\nexport type TimestampSumOrderByAggregateInput = {\n timestamp?: InputMaybe<SortOrder>;\n};\n\nexport type TimestampUpdateInput = {\n from?: InputMaybe<StringFieldUpdateOperationsInput>;\n id?: InputMaybe<StringFieldUpdateOperationsInput>;\n timestamp?: InputMaybe<IntFieldUpdateOperationsInput>;\n tree?: InputMaybe<StringFieldUpdateOperationsInput>;\n txid?: InputMaybe<StringFieldUpdateOperationsInput>;\n};\n\nexport type TimestampUpdateManyMutationInput = {\n from?: InputMaybe<StringFieldUpdateOperationsInput>;\n id?: InputMaybe<StringFieldUpdateOperationsInput>;\n timestamp?: InputMaybe<IntFieldUpdateOperationsInput>;\n tree?: InputMaybe<StringFieldUpdateOperationsInput>;\n txid?: InputMaybe<StringFieldUpdateOperationsInput>;\n};\n\nexport type TimestampWhereInput = {\n AND?: InputMaybe<Array<TimestampWhereInput>>;\n NOT?: InputMaybe<Array<TimestampWhereInput>>;\n OR?: InputMaybe<Array<TimestampWhereInput>>;\n from?: InputMaybe<StringFilter>;\n id?: InputMaybe<StringFilter>;\n timestamp?: InputMaybe<IntFilter>;\n tree?: InputMaybe<StringFilter>;\n txid?: InputMaybe<StringFilter>;\n};\n\nexport type TimestampWhereUniqueInput = {\n id?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type Transaction = {\n __typename?: 'Transaction';\n anchor: Scalars['String']['output'];\n /** Transactions with a null block are recent and unconfirmed, if they aren't mined into a block within 60 minutes they will be removed from results. */\n block?: Maybe<Block>;\n /**\n * For bundled data items this references the containing bundle ID.\n * See: https://github.com/ArweaveTeam/arweave-standards/blob/master/ans/ANS-104.md\n */\n bundledIn?: Maybe<Bundle>;\n data: MetaData;\n fee: Amount;\n id: Scalars['ID']['output'];\n owner: Owner;\n /**\n * @deprecated Don't use, kept for backwards compatability only!\n * @deprecated Use `bundledIn`\n */\n parent?: Maybe<Parent>;\n quantity: Amount;\n recipient: Scalars['String']['output'];\n signature: Scalars['String']['output'];\n tags: Array<Tag>;\n};\n\n/**\n * Paginated result set using the GraphQL cursor spec,\n * see: https://relay.dev/graphql/connections.htm.\n */\nexport type TransactionConnection = {\n __typename?: 'TransactionConnection';\n edges: Array<TransactionEdge>;\n pageInfo: PageInfo;\n};\n\n/** Paginated result set using the GraphQL cursor spec. */\nexport type TransactionEdge = {\n __typename?: 'TransactionEdge';\n /**\n * The cursor value for fetching the next page.\n *\n * Pass this to the \\`after\\` parameter in \\`transactions(after: $cursor)\\`, the next page will start from the next item after this.\n */\n cursor: Scalars['String']['output'];\n /** A transaction object. */\n node: Transaction;\n};\n\nexport type AttestationFieldsFragment = { __typename?: 'Attestation', id: string, decodedDataJson: string, attester: string, refUID: string, revoked: boolean, schemaId: string, txid: string, timeCreated: number, time: number, isOffchain: boolean, schema: { __typename?: 'Schema', schemaNames: Array<{ __typename?: 'SchemaName', name: string }> } } & { ' $fragmentName'?: 'AttestationFieldsFragment' };\n\nexport type SchemaFieldsFragment = { __typename?: 'Schema', id: string, resolver: string, revocable: boolean, schema: string, index: string, time: number, txid: string, creator: string, schemaNames: Array<{ __typename?: 'SchemaName', name: string }> } & { ' $fragmentName'?: 'SchemaFieldsFragment' };\n\nexport type GetTransactionTagsQueryVariables = Exact<{\n transactionId: Scalars['ID']['input'];\n}>;\n\n\nexport type GetTransactionTagsQuery = { __typename?: 'Query', tags?: { __typename?: 'Transaction', id: string, tags: Array<{ __typename?: 'Tag', name: string, value: string }> } | null };\n\nexport type GetSchemasQueryVariables = Exact<{\n where: SchemaWhereInput;\n}>;\n\n\nexport type GetSchemasQuery = { __typename?: 'Query', schemas: Array<{ __typename?: 'Schema', id: string, schema: string, schemaNames: Array<{ __typename?: 'SchemaName', name: string }> }> };\n\nexport type GetSchemaByNameQueryVariables = Exact<{\n where: SchemaWhereInput;\n}>;\n\n\nexport type GetSchemaByNameQuery = { __typename?: 'Query', schemas: Array<{ __typename?: 'Schema', id: string, schema: string, schemaNames: Array<{ __typename?: 'SchemaName', name: string }> }> };\n\nexport type GetSeedsQueryVariables = Exact<{\n where: AttestationWhereInput;\n}>;\n\n\nexport type GetSeedsQuery = { __typename?: 'Query', itemSeeds: Array<{ __typename?: 'Attestation', id: string, decodedDataJson: string, attester: string, refUID: string, revoked: boolean, schemaId: string, timeCreated: number, isOffchain: boolean, schema: { __typename?: 'Schema', schemaNames: Array<{ __typename?: 'SchemaName', name: string }> } }> };\n\nexport type GetSeedIdsQueryVariables = Exact<{\n where: AttestationWhereInput;\n}>;\n\n\nexport type GetSeedIdsQuery = { __typename?: 'Query', itemSeedIds: Array<{ __typename?: 'Attestation', id: string }> };\n\nexport type GetStorageTransactionIdQueryVariables = Exact<{\n where: AttestationWhereInput;\n}>;\n\n\nexport type GetStorageTransactionIdQuery = { __typename?: 'Query', storageTransactionId: Array<{ __typename?: 'Attestation', id: string, decodedDataJson: string }> };\n\nexport type GetVersionsQueryVariables = Exact<{\n where: AttestationWhereInput;\n}>;\n\n\nexport type GetVersionsQuery = { __typename?: 'Query', itemVersions: Array<(\n { __typename?: 'Attestation' }\n & { ' $fragmentRefs'?: { 'AttestationFieldsFragment': AttestationFieldsFragment } }\n )> };\n\nexport type GetPropertiesQueryVariables = Exact<{\n where: AttestationWhereInput;\n}>;\n\n\nexport type GetPropertiesQuery = { __typename?: 'Query', itemProperties: Array<(\n { __typename?: 'Attestation' }\n & { ' $fragmentRefs'?: { 'AttestationFieldsFragment': AttestationFieldsFragment } }\n )> };\n\nexport type GetAllPropertiesForAllVersionsQueryVariables = Exact<{\n where: AttestationWhereInput;\n}>;\n\n\nexport type GetAllPropertiesForAllVersionsQuery = { __typename?: 'Query', allProperties: Array<(\n { __typename?: 'Attestation' }\n & { ' $fragmentRefs'?: { 'AttestationFieldsFragment': AttestationFieldsFragment } }\n )> };\n\nexport type GetFilesMetadataQueryVariables = Exact<{\n where: AttestationWhereInput;\n}>;\n\n\nexport type GetFilesMetadataQuery = { __typename?: 'Query', filesMetadata: Array<(\n { __typename?: 'Attestation' }\n & { ' $fragmentRefs'?: { 'AttestationFieldsFragment': AttestationFieldsFragment } }\n )> };\n\nexport type GetArweaveTransactionsQueryVariables = Exact<{\n owners?: InputMaybe<Array<Scalars['String']['input']> | Scalars['String']['input']>;\n first?: InputMaybe<Scalars['Int']['input']>;\n after?: InputMaybe<Scalars['String']['input']>;\n}>;\n\n\nexport type GetArweaveTransactionsQuery = { __typename?: 'Query', transactions: { __typename?: 'TransactionConnection', edges: Array<{ __typename?: 'TransactionEdge', cursor: string, node: { __typename?: 'Transaction', id: string, anchor: string, signature: string, block?: { __typename?: 'Block', id: string, height: number } | null, data: { __typename?: 'MetaData', size: string, type?: string | null }, tags: Array<{ __typename?: 'Tag', name: string, value: string }> } }>, pageInfo: { __typename?: 'PageInfo', hasNextPage: boolean } } };\n\nexport type GetImageSeedsQueryVariables = Exact<{\n where: AttestationWhereInput;\n}>;\n\n\nexport type GetImageSeedsQuery = { __typename?: 'Query', imageSeeds: Array<{ __typename?: 'Attestation', id: string, decodedDataJson: string, attester: string, refUID: string, revoked: boolean, schemaId: string, txid: string, timeCreated: number, time: number, isOffchain: boolean, schema: { __typename?: 'Schema', schemaNames: Array<{ __typename?: 'SchemaName', name: string }> } }> };\n\nexport type GetImageVersionsQueryVariables = Exact<{\n where: AttestationWhereInput;\n}>;\n\n\nexport type GetImageVersionsQuery = { __typename?: 'Query', imageVersions: Array<(\n { __typename?: 'Attestation' }\n & { ' $fragmentRefs'?: { 'AttestationFieldsFragment': AttestationFieldsFragment } }\n )> };\n\nexport type GetSchemaUidsQueryVariables = Exact<{\n where: SchemaWhereInput;\n}>;\n\n\nexport type GetSchemaUidsQuery = { __typename?: 'Query', schemaUids: Array<{ __typename?: 'Schema', id: string, schema: string, schemaNames: Array<{ __typename?: 'SchemaName', name: string }> }> };\n\nexport const AttestationFieldsFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"attestationFields\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Attestation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"decodedDataJson\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"attester\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schema\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schemaNames\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"refUID\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"revoked\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schemaId\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"txid\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"timeCreated\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"time\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOffchain\"}}]}}]} as unknown as DocumentNode<AttestationFieldsFragment, unknown>;\nexport const SchemaFieldsFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"schemaFields\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Schema\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"resolver\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"revocable\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schema\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"index\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schemaNames\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"time\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"txid\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"creator\"}}]}}]} as unknown as DocumentNode<SchemaFieldsFragment, unknown>;\nexport const GetTransactionTagsDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"GetTransactionTags\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"transactionId\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"tags\"},\"name\":{\"kind\":\"Name\",\"value\":\"transaction\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"transactionId\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tags\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"}}]}}]}}]}}]} as unknown as DocumentNode<GetTransactionTagsQuery, GetTransactionTagsQueryVariables>;\nexport const GetSchemasDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"GetSchemas\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"SchemaWhereInput\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"schemas\"},\"name\":{\"kind\":\"Name\",\"value\":\"schemata\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schema\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schemaNames\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}}]}}]}}]}}]} as unknown as DocumentNode<GetSchemasQuery, GetSchemasQueryVariables>;\nexport const GetSchemaByNameDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"GetSchemaByName\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"SchemaWhereInput\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"schemas\"},\"name\":{\"kind\":\"Name\",\"value\":\"schemata\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schema\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schemaNames\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}}]}}]}}]}}]} as unknown as DocumentNode<GetSchemaByNameQuery, GetSchemaByNameQueryVariables>;\nexport const GetSeedsDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"GetSeeds\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AttestationWhereInput\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"itemSeeds\"},\"name\":{\"kind\":\"Name\",\"value\":\"attestations\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"ListValue\",\"values\":[{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"timeCreated\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"desc\"}}]}]}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"decodedDataJson\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"attester\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schema\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schemaNames\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"refUID\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"revoked\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schemaId\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"timeCreated\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOffchain\"}}]}}]}}]} as unknown as DocumentNode<GetSeedsQuery, GetSeedsQueryVariables>;\nexport const GetSeedIdsDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"GetSeedIds\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AttestationWhereInput\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"itemSeedIds\"},\"name\":{\"kind\":\"Name\",\"value\":\"attestations\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"ListValue\",\"values\":[{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"timeCreated\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"desc\"}}]}]}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}]}}]}}]} as unknown as DocumentNode<GetSeedIdsQuery, GetSeedIdsQueryVariables>;\nexport const GetStorageTransactionIdDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"GetStorageTransactionId\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AttestationWhereInput\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"storageTransactionId\"},\"name\":{\"kind\":\"Name\",\"value\":\"attestations\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"ListValue\",\"values\":[{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"timeCreated\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"desc\"}}]}]}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"decodedDataJson\"}}]}}]}}]} as unknown as DocumentNode<GetStorageTransactionIdQuery, GetStorageTransactionIdQueryVariables>;\nexport const GetVersionsDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"GetVersions\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AttestationWhereInput\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"itemVersions\"},\"name\":{\"kind\":\"Name\",\"value\":\"attestations\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"ListValue\",\"values\":[{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"timeCreated\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"desc\"}}]}]}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"attestationFields\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"attestationFields\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Attestation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"decodedDataJson\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"attester\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schema\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schemaNames\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"refUID\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"revoked\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schemaId\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"txid\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"timeCreated\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"time\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOffchain\"}}]}}]} as unknown as DocumentNode<GetVersionsQuery, GetVersionsQueryVariables>;\nexport const GetPropertiesDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"GetProperties\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AttestationWhereInput\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"itemProperties\"},\"name\":{\"kind\":\"Name\",\"value\":\"attestations\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"ListValue\",\"values\":[{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"timeCreated\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"desc\"}}]}]}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"attestationFields\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"attestationFields\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Attestation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"decodedDataJson\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"attester\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schema\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schemaNames\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"refUID\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"revoked\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schemaId\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"txid\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"timeCreated\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"time\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOffchain\"}}]}}]} as unknown as DocumentNode<GetPropertiesQuery, GetPropertiesQueryVariables>;\nexport const GetAllPropertiesForAllVersionsDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"GetAllPropertiesForAllVersions\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AttestationWhereInput\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"allProperties\"},\"name\":{\"kind\":\"Name\",\"value\":\"attestations\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"ListValue\",\"values\":[{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"timeCreated\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"desc\"}}]}]}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"attestationFields\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"attestationFields\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Attestation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"decodedDataJson\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"attester\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schema\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schemaNames\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"refUID\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"revoked\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schemaId\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"txid\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"timeCreated\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"time\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOffchain\"}}]}}]} as unknown as DocumentNode<GetAllPropertiesForAllVersionsQuery, GetAllPropertiesForAllVersionsQueryVariables>;\nexport const GetFilesMetadataDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"GetFilesMetadata\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AttestationWhereInput\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"filesMetadata\"},\"name\":{\"kind\":\"Name\",\"value\":\"attestations\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"ListValue\",\"values\":[{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"timeCreated\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"desc\"}}]}]}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"attestationFields\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"attestationFields\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Attestation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"decodedDataJson\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"attester\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schema\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schemaNames\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"refUID\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"revoked\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schemaId\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"txid\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"timeCreated\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"time\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOffchain\"}}]}}]} as unknown as DocumentNode<GetFilesMetadataQuery, GetFilesMetadataQueryVariables>;\nexport const GetArweaveTransactionsDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"GetArweaveTransactions\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"owners\"}},\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"transactions\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"owners\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"owners\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"edges\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cursor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"node\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"anchor\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"signature\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"block\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"height\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"data\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"type\"}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tags\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"}}]}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}}]}}]}}]}}]} as unknown as DocumentNode<GetArweaveTransactionsQuery, GetArweaveTransactionsQueryVariables>;\nexport const GetImageSeedsDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"GetImageSeeds\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AttestationWhereInput\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"imageSeeds\"},\"name\":{\"kind\":\"Name\",\"value\":\"attestations\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"ListValue\",\"values\":[{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"timeCreated\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"desc\"}}]}]}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"decodedDataJson\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"attester\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schema\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schemaNames\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"refUID\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"revoked\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schemaId\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"txid\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"timeCreated\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"time\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOffchain\"}}]}}]}}]} as unknown as DocumentNode<GetImageSeedsQuery, GetImageSeedsQueryVariables>;\nexport const GetImageVersionsDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"GetImageVersions\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AttestationWhereInput\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"imageVersions\"},\"name\":{\"kind\":\"Name\",\"value\":\"attestations\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"ListValue\",\"values\":[{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"timeCreated\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"desc\"}}]}]}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"attestationFields\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"attestationFields\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Attestation\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"decodedDataJson\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"attester\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schema\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schemaNames\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"refUID\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"revoked\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schemaId\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"txid\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"timeCreated\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"time\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isOffchain\"}}]}}]} as unknown as DocumentNode<GetImageVersionsQuery, GetImageVersionsQueryVariables>;\nexport const GetSchemaUidsDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"GetSchemaUids\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"SchemaWhereInput\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"schemaUids\"},\"name\":{\"kind\":\"Name\",\"value\":\"schemata\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"where\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schema\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"schemaNames\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}}]}}]}}]}}]} as unknown as DocumentNode<GetSchemaUidsQuery, GetSchemaUidsQueryVariables>;","/* eslint-disable */\nimport * as types from './graphql';\nimport { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core';\n\n/**\n * Map of all GraphQL operations in the project.\n *\n * This map has several performance disadvantages:\n * 1. It is not tree-shakeable, so it will include all operations in the project.\n * 2. It is not minifiable, so the string of a GraphQL query will be multiple times inside the bundle.\n * 3. It does not support dead code elimination, so it will add unused operations.\n *\n * Therefore it is highly recommended to use the babel or swc plugin for production.\n * Learn more about it here: https://the-guild.dev/graphql/codegen/plugins/presets/preset-client#reducing-bundle-size\n */\nconst documents = {\n \"\\n fragment attestationFields on Attestation {\\n id\\n decodedDataJson\\n attester\\n schema {\\n schemaNames {\\n name\\n }\\n }\\n refUID\\n revoked\\n schemaId\\n txid\\n timeCreated\\n time\\n isOffchain\\n }\\n\": types.AttestationFieldsFragmentDoc,\n \"\\n fragment schemaFields on Schema {\\n id\\n resolver\\n revocable\\n schema\\n index\\n schemaNames {\\n name\\n }\\n time\\n txid\\n creator\\n }\\n\": types.SchemaFieldsFragmentDoc,\n \"\\n query GetTransactionTags($transactionId: ID!) {\\n tags: transaction(id: $transactionId) {\\n id\\n tags {\\n name\\n value\\n }\\n }\\n }\\n\": types.GetTransactionTagsDocument,\n \"\\n query GetSchemas($where: SchemaWhereInput!) {\\n schemas: schemata(where: $where) {\\n id\\n schema\\n schemaNames {\\n name\\n }\\n }\\n }\\n\": types.GetSchemasDocument,\n \"\\n query GetSchemaByName($where: SchemaWhereInput!) {\\n schemas: schemata(where: $where) {\\n id\\n schema\\n schemaNames {\\n name\\n }\\n }\\n }\\n\": types.GetSchemaByNameDocument,\n \"\\n query GetSeeds($where: AttestationWhereInput!) {\\n itemSeeds: attestations(where: $where, orderBy: [{ timeCreated: desc }]) {\\n id\\n decodedDataJson\\n attester\\n schema {\\n schemaNames {\\n name\\n }\\n }\\n refUID\\n revoked\\n schemaId\\n timeCreated\\n isOffchain\\n }\\n }\\n\": types.GetSeedsDocument,\n \"\\n query GetSeedIds($where: AttestationWhereInput!) {\\n itemSeedIds: attestations(where: $where, orderBy: [{ timeCreated: desc }]) {\\n id\\n }\\n }\\n\": types.GetSeedIdsDocument,\n \"\\n query GetStorageTransactionId($where: AttestationWhereInput!) {\\n storageTransactionId: attestations(\\n where: $where\\n orderBy: [{ timeCreated: desc }]\\n ) {\\n id\\n decodedDataJson\\n }\\n }\\n\": types.GetStorageTransactionIdDocument,\n \"\\n query GetVersions($where: AttestationWhereInput!) {\\n itemVersions: attestations(\\n where: $where\\n orderBy: [{ timeCreated: desc }]\\n ) {\\n ...attestationFields\\n }\\n }\\n\": types.GetVersionsDocument,\n \"\\n query GetProperties($where: AttestationWhereInput!) {\\n itemProperties: attestations(\\n where: $where\\n orderBy: [{ timeCreated: desc }]\\n ) {\\n ...attestationFields\\n }\\n }\\n\": types.GetPropertiesDocument,\n \"\\n query GetAllPropertiesForAllVersions($where: AttestationWhereInput!) {\\n allProperties: attestations(\\n where: $where\\n orderBy: [{ timeCreated: desc }]\\n ) {\\n ...attestationFields\\n }\\n }\\n\": types.GetAllPropertiesForAllVersionsDocument,\n \"\\n query GetFilesMetadata($where: AttestationWhereInput!) {\\n filesMetadata: attestations(\\n where: $where\\n orderBy: [{ timeCreated: desc }]\\n ) {\\n ...attestationFields\\n }\\n }\\n\": types.GetFilesMetadataDocument,\n \"\\n query GetArweaveTransactions(\\n $owners: [String!]\\n $first: Int\\n $after: String\\n ) {\\n transactions(owners: $owners, first: $first, after: $after) {\\n edges {\\n cursor\\n node {\\n id\\n anchor\\n signature\\n block {\\n id\\n height\\n }\\n data {\\n size\\n type\\n }\\n tags {\\n name\\n value\\n }\\n }\\n }\\n pageInfo {\\n hasNextPage\\n }\\n }\\n }\\n\": types.GetArweaveTransactionsDocument,\n \"\\n query GetImageSeeds($where: AttestationWhereInput!) {\\n imageSeeds: attestations(where: $where, orderBy: [{ timeCreated: desc }]) {\\n id\\n decodedDataJson\\n attester\\n schema {\\n schemaNames {\\n name\\n }\\n }\\n refUID\\n revoked\\n schemaId\\n txid\\n timeCreated\\n time\\n isOffchain\\n }\\n }\\n\": types.GetImageSeedsDocument,\n \"\\n query GetImageVersions($where: AttestationWhereInput!) {\\n imageVersions: attestations(\\n where: $where\\n orderBy: [{ timeCreated: desc }]\\n ) {\\n ...attestationFields\\n }\\n }\\n\": types.GetImageVersionsDocument,\n \"\\n query GetSchemaUids($where: SchemaWhereInput!) {\\n schemaUids: schemata(where: $where) {\\n id\\n schema\\n schemaNames {\\n name\\n }\\n }\\n }\\n\": types.GetSchemaUidsDocument,\n};\n\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n *\n *\n * @example\n * ```ts\n * const query = graphql(`query GetUser($id: ID!) { user(id: $id) { name } }`);\n * ```\n *\n * The query argument is unknown!\n * Please regenerate the types.\n */\nexport function graphql(source: string): unknown;\n\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n fragment attestationFields on Attestation {\\n id\\n decodedDataJson\\n attester\\n schema {\\n schemaNames {\\n name\\n }\\n }\\n refUID\\n revoked\\n schemaId\\n txid\\n timeCreated\\n time\\n isOffchain\\n }\\n\"): (typeof documents)[\"\\n fragment attestationFields on Attestation {\\n id\\n decodedDataJson\\n attester\\n schema {\\n schemaNames {\\n name\\n }\\n }\\n refUID\\n revoked\\n schemaId\\n txid\\n timeCreated\\n time\\n isOffchain\\n }\\n\"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n fragment schemaFields on Schema {\\n id\\n resolver\\n revocable\\n schema\\n index\\n schemaNames {\\n name\\n }\\n time\\n txid\\n creator\\n }\\n\"): (typeof documents)[\"\\n fragment schemaFields on Schema {\\n id\\n resolver\\n revocable\\n schema\\n index\\n schemaNames {\\n name\\n }\\n time\\n txid\\n creator\\n }\\n\"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n query GetTransactionTags($transactionId: ID!) {\\n tags: transaction(id: $transactionId) {\\n id\\n tags {\\n name\\n value\\n }\\n }\\n }\\n\"): (typeof documents)[\"\\n query GetTransactionTags($transactionId: ID!) {\\n tags: transaction(id: $transactionId) {\\n id\\n tags {\\n name\\n value\\n }\\n }\\n }\\n\"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n query GetSchemas($where: SchemaWhereInput!) {\\n schemas: schemata(where: $where) {\\n id\\n schema\\n schemaNames {\\n name\\n }\\n }\\n }\\n\"): (typeof documents)[\"\\n query GetSchemas($where: SchemaWhereInput!) {\\n schemas: schemata(where: $where) {\\n id\\n schema\\n schemaNames {\\n name\\n }\\n }\\n }\\n\"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n query GetSchemaByName($where: SchemaWhereInput!) {\\n schemas: schemata(where: $where) {\\n id\\n schema\\n schemaNames {\\n name\\n }\\n }\\n }\\n\"): (typeof documents)[\"\\n query GetSchemaByName($where: SchemaWhereInput!) {\\n schemas: schemata(where: $where) {\\n id\\n schema\\n schemaNames {\\n name\\n }\\n }\\n }\\n\"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n query GetSeeds($where: AttestationWhereInput!) {\\n itemSeeds: attestations(where: $where, orderBy: [{ timeCreated: desc }]) {\\n id\\n decodedDataJson\\n attester\\n schema {\\n schemaNames {\\n name\\n }\\n }\\n refUID\\n revoked\\n schemaId\\n timeCreated\\n isOffchain\\n }\\n }\\n\"): (typeof documents)[\"\\n query GetSeeds($where: AttestationWhereInput!) {\\n itemSeeds: attestations(where: $where, orderBy: [{ timeCreated: desc }]) {\\n id\\n decodedDataJson\\n attester\\n schema {\\n schemaNames {\\n name\\n }\\n }\\n refUID\\n revoked\\n schemaId\\n timeCreated\\n isOffchain\\n }\\n }\\n\"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n query GetSeedIds($where: AttestationWhereInput!) {\\n itemSeedIds: attestations(where: $where, orderBy: [{ timeCreated: desc }]) {\\n id\\n }\\n }\\n\"): (typeof documents)[\"\\n query GetSeedIds($where: AttestationWhereInput!) {\\n itemSeedIds: attestations(where: $where, orderBy: [{ timeCreated: desc }]) {\\n id\\n }\\n }\\n\"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n query GetStorageTransactionId($where: AttestationWhereInput!) {\\n storageTransactionId: attestations(\\n where: $where\\n orderBy: [{ timeCreated: desc }]\\n ) {\\n id\\n decodedDataJson\\n }\\n }\\n\"): (typeof documents)[\"\\n query GetStorageTransactionId($where: AttestationWhereInput!) {\\n storageTransactionId: attestations(\\n where: $where\\n orderBy: [{ timeCreated: desc }]\\n ) {\\n id\\n decodedDataJson\\n }\\n }\\n\"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n query GetVersions($where: AttestationWhereInput!) {\\n itemVersions: attestations(\\n where: $where\\n orderBy: [{ timeCreated: desc }]\\n ) {\\n ...attestationFields\\n }\\n }\\n\"): (typeof documents)[\"\\n query GetVersions($where: AttestationWhereInput!) {\\n itemVersions: attestations(\\n where: $where\\n orderBy: [{ timeCreated: desc }]\\n ) {\\n ...attestationFields\\n }\\n }\\n\"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n query GetProperties($where: AttestationWhereInput!) {\\n itemProperties: attestations(\\n where: $where\\n orderBy: [{ timeCreated: desc }]\\n ) {\\n ...attestationFields\\n }\\n }\\n\"): (typeof documents)[\"\\n query GetProperties($where: AttestationWhereInput!) {\\n itemProperties: attestations(\\n where: $where\\n orderBy: [{ timeCreated: desc }]\\n ) {\\n ...attestationFields\\n }\\n }\\n\"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n query GetAllPropertiesForAllVersions($where: AttestationWhereInput!) {\\n allProperties: attestations(\\n where: $where\\n orderBy: [{ timeCreated: desc }]\\n ) {\\n ...attestationFields\\n }\\n }\\n\"): (typeof documents)[\"\\n query GetAllPropertiesForAllVersions($where: AttestationWhereInput!) {\\n allProperties: attestations(\\n where: $where\\n orderBy: [{ timeCreated: desc }]\\n ) {\\n ...attestationFields\\n }\\n }\\n\"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n query GetFilesMetadata($where: AttestationWhereInput!) {\\n filesMetadata: attestations(\\n where: $where\\n orderBy: [{ timeCreated: desc }]\\n ) {\\n ...attestationFields\\n }\\n }\\n\"): (typeof documents)[\"\\n query GetFilesMetadata($where: AttestationWhereInput!) {\\n filesMetadata: attestations(\\n where: $where\\n orderBy: [{ timeCreated: desc }]\\n ) {\\n ...attestationFields\\n }\\n }\\n\"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n query GetArweaveTransactions(\\n $owners: [String!]\\n $first: Int\\n $after: String\\n ) {\\n transactions(owners: $owners, first: $first, after: $after) {\\n edges {\\n cursor\\n node {\\n id\\n anchor\\n signature\\n block {\\n id\\n height\\n }\\n data {\\n size\\n type\\n }\\n tags {\\n name\\n value\\n }\\n }\\n }\\n pageInfo {\\n hasNextPage\\n }\\n }\\n }\\n\"): (typeof documents)[\"\\n query GetArweaveTransactions(\\n $owners: [String!]\\n $first: Int\\n $after: String\\n ) {\\n transactions(owners: $owners, first: $first, after: $after) {\\n edges {\\n cursor\\n node {\\n id\\n anchor\\n signature\\n block {\\n id\\n height\\n }\\n data {\\n size\\n type\\n }\\n tags {\\n name\\n value\\n }\\n }\\n }\\n pageInfo {\\n hasNextPage\\n }\\n }\\n }\\n\"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n query GetImageSeeds($where: AttestationWhereInput!) {\\n imageSeeds: attestations(where: $where, orderBy: [{ timeCreated: desc }]) {\\n id\\n decodedDataJson\\n attester\\n schema {\\n schemaNames {\\n name\\n }\\n }\\n refUID\\n revoked\\n schemaId\\n txid\\n timeCreated\\n time\\n isOffchain\\n }\\n }\\n\"): (typeof documents)[\"\\n query GetImageSeeds($where: AttestationWhereInput!) {\\n imageSeeds: attestations(where: $where, orderBy: [{ timeCreated: desc }]) {\\n id\\n decodedDataJson\\n attester\\n schema {\\n schemaNames {\\n name\\n }\\n }\\n refUID\\n revoked\\n schemaId\\n txid\\n timeCreated\\n time\\n isOffchain\\n }\\n }\\n\"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n query GetImageVersions($where: AttestationWhereInput!) {\\n imageVersions: attestations(\\n where: $where\\n orderBy: [{ timeCreated: desc }]\\n ) {\\n ...attestationFields\\n }\\n }\\n\"): (typeof documents)[\"\\n query GetImageVersions($where: AttestationWhereInput!) {\\n imageVersions: attestations(\\n where: $where\\n orderBy: [{ timeCreated: desc }]\\n ) {\\n ...attestationFields\\n }\\n }\\n\"];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(source: \"\\n query GetSchemaUids($where: SchemaWhereInput!) {\\n schemaUids: schemata(where: $where) {\\n id\\n schema\\n schemaNames {\\n name\\n }\\n }\\n }\\n\"): (typeof documents)[\"\\n query GetSchemaUids($where: SchemaWhereInput!) {\\n schemaUids: schemata(where: $where) {\\n id\\n schema\\n schemaNames {\\n name\\n }\\n }\\n }\\n\"];\n\nexport function graphql(source: string) {\n return (documents as any)[source] ?? {};\n}\n\nexport type DocumentType<TDocumentNode extends DocumentNode<any, any>> = TDocumentNode extends DocumentNode< infer TType, any> ? TType : never;","import { graphql } from '@/graphql/gql'\nimport { TypedDocumentNode } from '@graphql-typed-document-node/core'\nimport { Attestation, Schema } from '@/graphql/gql/graphql'\n\nexport const GET_SCHEMAS = graphql(/* GraphQL */ `\n query GetSchemas($where: SchemaWhereInput!) {\n schemas: schemata(where: $where) {\n id\n schema\n schemaNames {\n name\n }\n }\n }\n`)\n\nexport const GET_SCHEMA_BY_NAME = graphql(/* GraphQL */ `\n query GetSchemaByName($where: SchemaWhereInput!) {\n schemas: schemata(where: $where) {\n id\n schema\n schemaNames {\n name\n }\n }\n }\n`) as TypedDocumentNode<{ schemas: Schema[] }>\n\nexport const GET_SEEDS = graphql(/* GraphQL */ `\n query GetSeeds($where: AttestationWhereInput!) {\n itemSeeds: attestations(where: $where, orderBy: [{ timeCreated: desc }]) {\n id\n decodedDataJson\n attester\n schema {\n schemaNames {\n name\n }\n }\n refUID\n revoked\n schemaId\n timeCreated\n isOffchain\n }\n }\n`) as TypedDocumentNode<{ itemSeeds: Attestation[] }>\n\nexport const GET_SEED_IDS = graphql(/* GraphQL */ `\n query GetSeedIds($where: AttestationWhereInput!) {\n itemSeedIds: attestations(where: $where, orderBy: [{ timeCreated: desc }]) {\n id\n }\n }\n`) as TypedDocumentNode<{ itemSeedIds: Attestation[] }>\n\nexport const GET_STORAGE_TRANSACTION_ID = graphql(/* GraphQL */ `\n query GetStorageTransactionId($where: AttestationWhereInput!) {\n storageTransactionId: attestations(\n where: $where\n orderBy: [{ timeCreated: desc }]\n ) {\n id\n decodedDataJson\n }\n }\n`) as TypedDocumentNode<{ storageTransactionId: Attestation[] }>\n\nexport const GET_VERSIONS = graphql(/* GraphQL */ `\n query GetVersions($where: AttestationWhereInput!) {\n itemVersions: attestations(\n where: $where\n orderBy: [{ timeCreated: desc }]\n ) {\n ...attestationFields\n }\n }\n`) as TypedDocumentNode<{ itemVersions: Attestation[] }>\n\nexport const GET_PROPERTIES = graphql(/* GraphQL */ `\n query GetProperties($where: AttestationWhereInput!) {\n itemProperties: attestations(\n where: $where\n orderBy: [{ timeCreated: desc }]\n ) {\n ...attestationFields\n }\n }\n`) as TypedDocumentNode<{ itemProperties: Attestation[] }>\n\nexport const GET_ALL_PROPERTIES_FOR_ALL_VERSIONS = graphql(/* GraphQL */ `\n query GetAllPropertiesForAllVersions($where: AttestationWhereInput!) {\n allProperties: attestations(\n where: $where\n orderBy: [{ timeCreated: desc }]\n ) {\n ...attestationFields\n }\n }\n`) as TypedDocumentNode<{ allProperties: Attestation[] }>\n","import {\n appState,\n models as modelsTable,\n NewModelRecord,\n NewPropertyRecord,\n properties,\n} from '@/seedSchema'\nimport { SqliteRemoteDatabase } from 'drizzle-orm/sqlite-proxy'\nimport { DbQueryResult, ModelDefinitions, ResultObject } from '@/types'\nimport type { BetterSQLite3Database } from 'drizzle-orm/better-sqlite3'\nimport { SQLiteTableWithColumns } from 'drizzle-orm/sqlite-core'\nimport { and, eq, isNull, SQL } from 'drizzle-orm'\nimport { BaseDb } from '@/db/Db/BaseDb'\n\nexport const escapeSqliteString = (value: string): string => {\n if (typeof value !== 'string') {\n throw new Error(\n `Value must be a string, instead got: ${JSON.stringify(value)}`,\n )\n }\n return value.replace(/'/g, \"''\")\n}\nexport const getObjectForRow = (row: any): ResultObject => {\n const obj: ResultObject = {}\n\n row.columnNames.forEach((colName, index) => {\n const value = row.row[index]\n if (typeof value !== 'string') {\n obj[colName] = row.row[index]\n return\n }\n\n // Try to parse the value as JSON\n try {\n obj[colName] = JSON.parse(value)\n } catch (e) {\n // If it fails, just set the value as a string\n obj[colName] = value\n }\n })\n\n return obj\n}\nexport const getSqlResultObject = (\n queryResult: DbQueryResult,\n): ResultObject | ResultObject[] | undefined => {\n if (!queryResult || !queryResult.rows || queryResult.rows.length === 0) {\n return\n }\n\n let obj: ResultObject | ResultObject[] | undefined\n\n if (queryResult.rows.length === 1) {\n obj = getObjectForRow(queryResult.rows[0])\n }\n\n if (queryResult.rows.length > 1) {\n obj = queryResult.rows.reduce((acc, row) => {\n const rowObj = getObjectForRow(row)\n\n acc.push(rowObj)\n return acc\n }, [] as ResultObject[])\n }\n\n return obj\n}\nexport const createOrUpdate = async <T>(\n db: BetterSQLite3Database | SqliteRemoteDatabase,\n table: SQLiteTableWithColumns<any>,\n values: Partial<Record<keyof T, T[keyof T]>>,\n) => {\n const startTime = Date.now()\n\n const valueFilters: SQL[] = []\n\n const propertiesToExcludeFromDb = ['ref']\n\n const safeValues = Object.keys(values).reduce(\n (acc, key) => {\n if (!propertiesToExcludeFromDb.includes(key)) {\n acc[key] = values[key as string & keyof T]\n }\n return acc\n },\n {} as Record<string, unknown>,\n )\n\n for (const [key, value] of Object.entries(safeValues)) {\n let finalValue = value\n if (key === 'TObject') {\n continue\n }\n if (typeof value === 'object') {\n finalValue = JSON.stringify(value)\n }\n const column = table[key]\n if (!column) {\n throw new Error(`Column not found for ${key}`)\n }\n if (typeof finalValue === 'undefined') {\n finalValue = null\n }\n if (finalValue === null) {\n valueFilters.push(isNull(table[key]))\n continue\n }\n valueFilters.push(eq(table[key], finalValue))\n }\n\n const doneWithFilters = Date.now()\n\n // console.log('valueFilters:', valueFilters)\n\n // for ( const filter of valueFilters ) {\n // console.log('filter:', Object.keys(filter))\n // }\n\n // Build a query to find the record based on properties\n const existingRecords = await db\n .select()\n .from(table)\n .where(and(...valueFilters))\n\n const doneWithExistingRecords = Date.now()\n\n if (existingRecords.length > 1) {\n throw new Error('Multiple records found')\n }\n\n if (existingRecords.length > 0) {\n // If record exists, update it\n await db\n .update(table)\n .set(safeValues)\n .where(and(...valueFilters))\n\n const doneWithUpdate = Date.now()\n\n return existingRecords[0] as T\n } else {\n // If no record exists, create a new one\n const newRecord = await db.insert(table).values(safeValues).returning()\n return newRecord[0] as T\n }\n}\nexport const addModelsToInternalDb = async (\n db: BetterSQLite3Database<any> | SqliteRemoteDatabase<any>,\n models: ModelDefinitions,\n) => {\n for (const [modelName, modelClass] of Object.entries(models)) {\n const modelRecord = await createOrUpdate<NewModelRecord>(db, modelsTable, {\n name: modelName,\n })\n\n for (let [propertyName, propertyValues] of Object.entries(\n modelClass.schema,\n )) {\n if (!propertyValues) {\n throw new Error(`Property values not found for ${propertyName}`)\n }\n propertyValues.name = propertyName\n propertyValues.modelId = modelRecord.id!\n for (let [key, value] of Object.entries(propertyValues)) {\n if (key === 'ref') {\n const refModel = await createOrUpdate<NewModelRecord>(\n db,\n modelsTable,\n {\n name: value,\n },\n )\n // delete propertyValues.ref\n propertyValues.refModelId = refModel.id\n }\n }\n\n const propertyRecord = await createOrUpdate<NewPropertyRecord>(\n db,\n properties,\n propertyValues,\n )\n }\n }\n}\nexport const getAddressesFromDb = async (): Promise<string[]> => {\n const appDb = BaseDb.getAppDb()\n\n if (!appDb) {\n return new Promise((resolve) => {\n setTimeout(async () => {\n const addresses = await getAddressesFromDb()\n resolve(addresses)\n }, 500)\n })\n }\n\n const appStatesRecords = await appDb\n .select()\n .from(appState)\n .where(eq(appState.key, 'addresses'))\n .limit(1)\n\n if (!appStatesRecords || appStatesRecords.length === 0) {\n throw new Error('No appStatesRecords for addresses found')\n }\n\n const addressRecord = appStatesRecords[0]\n\n const addressArrayString = addressRecord.value\n\n if (!addressArrayString) {\n throw new Error('No addresses found')\n }\n\n return JSON.parse(addressArrayString)\n}\n","import { ModelClassType } from '@/types'\n\nconst modelStore = new Map<string, ModelClassType>()\n\nexport const getModels = (): Record<string, ModelClassType> => {\n return Object.fromEntries(modelStore)\n}\n\nexport const getModel = (modelName: string): ModelClassType | undefined => {\n return modelStore.get(modelName)\n}\n\nexport const getModelNames = (): string[] => {\n return Array.from(modelStore.keys())\n}\n\nexport const setModel = (modelName: string, model: ModelClassType) => {\n modelStore.set(modelName, model)\n}\n","import { getModels } from '@/stores/modelClass'\nimport { GetSchemasQuery, Schema } from '@/graphql/gql/graphql'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { models as modelsTable, modelUids } from '@/seedSchema'\nimport { eq } from 'drizzle-orm'\nimport pluralize from 'pluralize'\nimport { toSnakeCase } from '@/helpers'\nimport { GET_SCHEMAS } from '@/Item/queries'\nimport { BaseEasClient } from '@/helpers/EasClient/BaseEasClient'\nimport { BaseQueryClient } from '@/helpers/QueryClient/BaseQueryClient'\n\n\ntype GetModelSchemasReturn = {\n modelSchemas: GetSchemasQuery\n schemaStringToModelRecord: Map<string, Schema>\n modelRecords: Record<string, unknown>\n}\n\ntype GetModelSchemas = () => Promise<GetModelSchemasReturn>\n\nexport const getModelSchemas: GetModelSchemas = async () => {\n const models = getModels()\n const modelRecords = [] as Record<string, unknown>[]\n\n const schemaStringToModelRecord = new Map<string, Schema>()\n\n const appDb = BaseDb.getAppDb()\n\n const OR: Record<string, unknown>[] = []\n\n for (const [modelName, _] of Object.entries(models)) {\n const foundModelQuery = await appDb\n .select({\n id: modelsTable.id,\n name: modelsTable.name,\n uid: modelUids.uid,\n })\n .from(modelsTable)\n .leftJoin(modelUids, eq(modelsTable.id, modelUids.modelId))\n .where(eq(modelsTable.name, modelName))\n .limit(1)\n\n const foundModel: Schema = { ...foundModelQuery[0] }\n\n if (!foundModel) {\n console.error(\n `[item/events] [syncDbWithEas] model ${modelName} not found in SDK DB`,\n )\n return\n }\n\n foundModel.tableName = pluralize(foundModel.name).toLowerCase()\n\n modelRecords!.push(foundModel)\n\n if (modelName === 'Seed' || modelName === 'Version') {\n continue\n }\n\n const schemaString = `bytes32 ${toSnakeCase(modelName)}`\n\n OR.push({\n schema: {\n equals: `bytes32 ${toSnakeCase(modelName)}`,\n },\n })\n\n schemaStringToModelRecord.set(schemaString, foundModel)\n }\n\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n const modelSchemas = await queryClient.fetchQuery({\n queryKey: [`getSchemasAllModels`],\n queryFn: async () =>\n easClient.request(GET_SCHEMAS, {\n where: {\n OR,\n },\n }),\n })\n\n return {\n modelSchemas,\n schemaStringToModelRecord,\n modelRecords,\n }\n}\n","import { seeds, SeedType } from '@/seedSchema'\nimport { BaseDb } from '@/db/Db/BaseDb'\n\ntype CreateSeeds = (newSeeds: Partial<SeedType>[]) => Promise<string[]>\n\nexport const createSeeds: CreateSeeds = async (\n newSeeds: Partial<SeedType>[],\n) => {\n const appDb = BaseDb.getAppDb()\n\n const results = await appDb\n .insert(seeds)\n .values(newSeeds)\n .returning({ uid: seeds.uid })\n\n const newUids = results.reduce((acc, result) => {\n if (result.uid) {\n acc.push(result.uid)\n }\n return acc\n }, [] as string[])\n\n return newUids\n}\n","import { Schema, SchemaWhereInput } from '@/graphql/gql/graphql'\nimport { toSnakeCase, BaseEasClient, BaseQueryClient } from '@/helpers'\nimport { GET_SCHEMAS } from '@/Item/queries'\nimport { TypedData } from '@ethereum-attestation-service/eas-sdk/dist/offchain/typed-data-handler'\n\n\ntype GetSchemaForPropertyProps = {\n schemaUid?: string\n propertyName: string\n easDataType?: TypedData['type']\n}\ntype GetSchemaForProperty = (\n props: GetSchemaForPropertyProps,\n) => Promise<Schema | void>\nexport const getSchemaForItemProperty: GetSchemaForProperty = async ({\n schemaUid,\n propertyName,\n easDataType,\n}): Promise<Schema | void> => {\n const propertyNameSnakeCase = toSnakeCase(propertyName)\n const isMissingSchemaUid =\n !schemaUid || schemaUid === 'null' || schemaUid === 'undefined'\n\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n let queryParams: { where: SchemaWhereInput } = {\n where: {\n id: {\n equals: schemaUid,\n },\n },\n }\n\n if (easDataType) {\n queryParams = {\n where: {\n schema: {\n equals: `${easDataType} ${propertyNameSnakeCase}`,\n },\n },\n }\n }\n\n if (!easDataType && isMissingSchemaUid) {\n queryParams = {\n where: {\n schemaNames: {\n some: {\n name: {\n equals: propertyNameSnakeCase,\n },\n },\n },\n },\n }\n }\n\n const foundPropertySchema = await queryClient.fetchQuery({\n queryKey: [`getPropertySchema${propertyName}`],\n queryFn: async () => easClient.request(GET_SCHEMAS, queryParams),\n networkMode: 'offlineFirst',\n })\n\n if (foundPropertySchema && foundPropertySchema.schemas.length > 0) {\n return foundPropertySchema.schemas[0] as Schema\n }\n}\n","import { toSnakeCase } from '@/helpers'\nimport { getSchemaForItemProperty } from '@/helpers/getSchemaForItemProperty'\n\nconst schemaUidForSchemaDefinition = new Map<string, string>()\n\nexport const setSchemaUidForSchemaDefinition = ({ text, schemaUid }) => {\n const propertySnakeCase = toSnakeCase(text)\n schemaUidForSchemaDefinition.set(propertySnakeCase, schemaUid)\n}\n\nexport const getSchemaUidForSchemaDefinition = (schemaText: string) => {\n const textSnakeCase = toSnakeCase(schemaText)\n if (!schemaUidForSchemaDefinition.has(textSnakeCase)) {\n return\n }\n return schemaUidForSchemaDefinition.get(textSnakeCase)\n}\n\nexport const fetchSchemaUids = async () => {\n const versionSchemaUid = await getSchemaForItemProperty({\n propertyName: 'version',\n easDataType: 'bytes32',\n })\n if (versionSchemaUid) {\n setSchemaUidForSchemaDefinition({\n text: 'version',\n schemaUid: versionSchemaUid,\n })\n }\n const imageSchemaUid = await getSchemaForItemProperty({\n propertyName: 'image',\n easDataType: 'bytes32',\n })\n if (imageSchemaUid) {\n setSchemaUidForSchemaDefinition({\n text: 'image',\n schemaUid: imageSchemaUid,\n })\n }\n}\n","import { camelCase, DebouncedFunc, startCase, throttle } from 'lodash-es'\nimport { Attestation, SchemaWhereInput } from '@/graphql/gql/graphql'\nimport {\n metadata,\n MetadataType,\n modelUids,\n properties,\n seeds,\n SeedType,\n versions,\n} from '@/seedSchema'\nimport { and, eq, inArray, sql } from 'drizzle-orm'\nimport {\n generateId,\n parseEasRelationPropertyName,\n toSnakeCase,\n} from '@/helpers'\nimport {\n GET_PROPERTIES,\n GET_SCHEMAS,\n GET_SEEDS,\n GET_VERSIONS,\n} from '@/Item/queries'\nimport { INTERNAL_DATA_TYPES } from '@/helpers/constants'\nimport { escapeSqliteString, getAddressesFromDb } from '@/helpers/db'\nimport { eventEmitter } from '@/eventBus'\nimport { getModelNames, getModels } from '@/stores/modelClass'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { getModelSchemas } from '@/db/read/getModelSchemas'\nimport { ModelSchema, PropertyType } from '@/types'\nimport { createSeeds } from '@/db/write/createSeeds'\nimport { setSchemaUidForSchemaDefinition } from '@/stores/eas'\nimport { BaseEasClient } from '@/helpers/EasClient/BaseEasClient'\nimport { BaseQueryClient } from '@/helpers/QueryClient/BaseQueryClient'\n\n\n\n\nconst relationValuesToExclude = [\n '0x0000000000000000000000000000000000000000000000000000000000000020',\n]\n\n\nconst getSeedsFromSchemaUids = async ({ schemaUids, addresses }) => {\n const AND = [\n {\n OR: [] as Record<string, unknown>[],\n },\n ]\n\n for (const schemaUid of schemaUids) {\n AND[0].OR.push({\n decodedDataJson: {\n contains: schemaUid,\n },\n })\n }\n\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n const { itemSeeds } = await queryClient.fetchQuery({\n queryKey: [`getSeedsForAllModels`],\n queryFn: async () =>\n easClient.request(GET_SEEDS, {\n where: {\n attester: {\n in: addresses,\n },\n schemaId: {\n in: schemaUids,\n },\n AND,\n },\n }),\n })\n\n return itemSeeds\n}\n\nconst seedUidToLocalId = new Map<string, string>()\nconst seedUidToModelType = new Map<string, string>()\nconst relatedSeedUids = new Set<string>()\n\nconst versionUidToLocalId = new Map<string, string>()\nconst versionUidToSeedUid = new Map<string, string>()\n\nconst propertyUidToLocalId = new Map<string, string>()\n\ntype SaveEasSeedsToDbProps = {\n itemSeeds: Attestation[]\n}\n\ntype SaveEasSeedsToDbReturn = {\n seedUids: string[]\n}\n\ntype SaveEasSeedsToDb = (\n props: SaveEasSeedsToDbProps,\n) => Promise<SaveEasSeedsToDbReturn>\n\nconst saveEasSeedsToDb: SaveEasSeedsToDb = async ({ itemSeeds }) => {\n const appDb = BaseDb.getAppDb()\n\n const seedUids = itemSeeds.map((seed) => seed.id)\n\n const existingSeedRecordsRows: SeedType[] = await appDb\n .select()\n .from(seeds)\n .where(inArray(seeds.uid, seedUids))\n\n const existingSeedUids = new Set<string>()\n\n if (existingSeedRecordsRows && existingSeedRecordsRows.length > 0) {\n for (const row of existingSeedRecordsRows) {\n existingSeedUids.add(row.uid)\n seedUidToLocalId.set(row.uid, row.localId)\n seedUidToModelType.set(row.uid, row.type)\n }\n }\n\n const newSeeds = itemSeeds.filter((seed) => !existingSeedUids.has(seed.id))\n\n if (newSeeds.length === 0) {\n return { seedUidToLocalId, seedUids }\n }\n\n const newSeedsData: Partial<SeedType>[] = []\n\n for (let i = 0; i < newSeeds.length; i++) {\n const seed = newSeeds[i]\n seedUidToModelType.set(seed.id, seed.schema.schemaNames[0].name)\n const seedLocalId = generateId()\n seedUidToLocalId.set(seed.id, seedLocalId)\n\n const attestationRaw = escapeSqliteString(JSON.stringify(seed))\n\n newSeedsData.push({\n localId: seedLocalId,\n uid: seed.id,\n schemaUid: seed.schemaId,\n type: seed.schema.schemaNames[0].name,\n createdAt: Date.now(),\n attestationCreatedAt: seed.timeCreated * 1000,\n attestationRaw,\n })\n\n seedUidToLocalId.set(seed.id, seedLocalId)\n }\n\n const newSeedUids = await createSeeds(newSeedsData)\n\n return { seedUids: newSeedUids }\n}\n\ntype SaveEasVersionsToDbParams = {\n itemVersions: Attestation[]\n}\n\ntype SaveEasVersionsToDb = (\n props: SaveEasVersionsToDbParams,\n) => Promise<Record<string, unknown>>\n\nconst saveEasVersionsToDb: SaveEasVersionsToDb = async ({ itemVersions }) => {\n const versionUids = itemVersions.map((version) => version.id)\n\n const appDb = BaseDb.getAppDb()\n\n const existingVersionRecordsRows: MetadataType[] = await appDb\n .select()\n .from(versions)\n .where(inArray(versions.uid, versionUids))\n\n const existingVersionUids = new Set<string>()\n\n if (existingVersionRecordsRows && existingVersionRecordsRows.length > 0) {\n for (const row of existingVersionRecordsRows) {\n existingVersionUids.add(row.uid)\n versionUidToLocalId.set(row.uid, row.localId)\n versionUidToSeedUid.set(row.uid, row.seedUid)\n }\n }\n\n const newVersions = itemVersions.filter(\n (version) => !existingVersionUids.has(version.id),\n )\n\n if (newVersions.length === 0) {\n return { versionUidToLocalId, versionUids }\n }\n\n let insertVersionsQuery = `INSERT INTO versions (local_id, uid, seed_uid, seed_local_id, seed_type, created_at,\n attestation_created_at,\n attestation_raw)\n VALUES `\n\n for (let i = 0; i < newVersions.length; i++) {\n const version = newVersions[i]\n versionUidToSeedUid.set(version.id, version.refUID)\n const versionLocalId = generateId()\n versionUidToLocalId.set(version.id, versionLocalId)\n\n const seedUid = versionUidToSeedUid.get(version.id)\n const seedLocalId = seedUidToLocalId.get(seedUid!)\n const seedType = seedUidToModelType.get(seedUid!)\n const attestationRaw = escapeSqliteString(JSON.stringify(version))\n\n const valuesString = `('${versionLocalId}', '${version.id}', '${seedUid}', '${seedLocalId}', '${seedType}', ${Date.now()}, ${version.timeCreated * 1000}, '${attestationRaw}')`\n\n if (i < newVersions.length - 1) {\n insertVersionsQuery += valuesString + ', '\n }\n\n if (i === newVersions.length - 1) {\n insertVersionsQuery += valuesString + ';'\n }\n\n versionUidToLocalId.set(version.id, versionLocalId)\n }\n\n await appDb.run(sql.raw(insertVersionsQuery))\n\n return { versionUids }\n}\n\nconst createMetadataRecordsForStorageTransactionId = async (\n storageTransactionIdProperty: Attestation,\n modelSchema: ModelSchema,\n) => {\n const attestationData = JSON.parse(\n storageTransactionIdProperty.decodedDataJson,\n )[0].value\n const propertyName = camelCase(attestationData.name)\n const propertyValue = attestationData.value\n\n const itemStorageProperties = new Map<string, PropertyType>()\n\n for (const [_propertyName, propertyDef] of Object.entries(modelSchema)) {\n if (propertyDef?.storageType && propertyDef.storageType === 'ItemStorage') {\n itemStorageProperties.set(_propertyName, propertyDef)\n }\n }\n\n if (itemStorageProperties.size === 0) {\n return\n }\n\n const appDb = BaseDb.getAppDb()\n\n for (const [_propertyName, propertyDef] of itemStorageProperties.entries()) {\n const existingMetadataRecordRows = await appDb\n .select()\n .from(metadata)\n .where(\n and(\n eq(metadata.propertyName, _propertyName),\n eq(metadata.propertyValue, propertyValue),\n eq(metadata.versionUid, storageTransactionIdProperty.refUID),\n ),\n )\n\n if (existingMetadataRecordRows && existingMetadataRecordRows.length > 0) {\n continue\n }\n\n const seedUid = versionUidToSeedUid.get(\n storageTransactionIdProperty.refUID,\n ) as string\n const seedLocalId = seedUidToLocalId.get(seedUid)\n const versionUid = storageTransactionIdProperty.refUID\n const versionLocalId = versionUidToLocalId.get(versionUid)\n\n const propertyLocalId = generateId()\n await appDb.insert(metadata).values({\n localId: propertyLocalId,\n propertyName: _propertyName,\n propertyValue,\n localStorageDir: propertyDef.localStorageDir,\n seedLocalId,\n seedUid,\n versionLocalId,\n versionUid,\n refValueType: 'file',\n refResolvedValue: `${propertyValue}${propertyDef.filenameSuffix}`,\n modelType: seedUidToModelType.get(seedUid),\n createdAt: Date.now(),\n updatedAt: Date.now(),\n })\n }\n}\n\ntype SaveEasPropertiesToDbParams = {\n itemProperties: Attestation[]\n itemSeeds: Attestation[]\n}\n\ntype SaveEasPropertiesToDb = (\n props: SaveEasPropertiesToDbParams,\n) => Promise<Record<string, unknown>>\n\nlet isSavingToDb = false\n\nconst saveEasPropertiesToDb: SaveEasPropertiesToDb = async ({\n itemProperties,\n itemSeeds,\n}) => {\n if (isSavingToDb) {\n return\n }\n isSavingToDb = true\n\n const propertyUids = itemProperties.map((property) => property.id)\n\n const models = getModels()\n\n const appDb = BaseDb.getAppDb()\n\n const existingMetadataRecordsRows: MetadataType[] = await appDb\n .select()\n .from(metadata)\n .where(inArray(metadata.uid, propertyUids))\n\n const existingPropertyRecordsUids = new Set<string>()\n\n if (existingMetadataRecordsRows && existingMetadataRecordsRows.length > 0) {\n for (const row of existingMetadataRecordsRows) {\n existingPropertyRecordsUids.add(row.uid)\n propertyUidToLocalId.set(row.uid, row.localId)\n }\n }\n\n const newProperties = itemProperties.filter(\n (property) => !existingPropertyRecordsUids.has(property.id),\n )\n\n if (newProperties.length === 0) {\n return { propertyUidToLocalId, propertyUids }\n }\n\n let insertPropertiesQuery = `INSERT INTO metadata (local_id, uid, schema_uid, property_name, property_value,\n eas_data_type, version_uid, version_local_id, seed_uid,\n seed_local_id, model_type, ref_value_type, ref_seed_type,\n ref_schema_uid,\n created_at, attestation_created_at, attestation_raw,\n local_storage_dir, ref_resolved_value)\n VALUES `\n\n for (let i = 0; i < newProperties.length; i++) {\n const property = newProperties[i]\n const propertyLocalId = generateId()\n const metadata = JSON.parse(property.decodedDataJson)[0].value\n\n let propertyNameSnake = metadata.name\n\n if (!propertyNameSnake) {\n console.warn(\n '[item/events] [syncDbWithEas] no propertyName found for property: ',\n property,\n )\n continue\n }\n\n let isRelation = false\n let refValueType\n let refSeedType\n let refSchemaUid\n let refResolvedValue\n let isList = false\n const schemaUid = property.schemaId\n\n setSchemaUidForSchemaDefinition({\n text: propertyNameSnake,\n schemaUid,\n })\n\n if (\n (propertyNameSnake.endsWith('_id') ||\n propertyNameSnake.endsWith('_ids')) &&\n propertyNameSnake !== 'storage_transaction_id' &&\n propertyNameSnake !== 'storage_provider_transaction_id'\n ) {\n isRelation = true\n\n if (Array.isArray(metadata.value)) {\n isList = true\n refValueType = 'list'\n\n const result = parseEasRelationPropertyName(propertyNameSnake)\n\n if (result) {\n propertyNameSnake = result.propertyName\n refSeedType = result.modelName\n }\n\n metadata.value.forEach((value) => {\n relatedSeedUids.add(value)\n })\n }\n\n if (!isList) {\n if (relationValuesToExclude.includes(metadata.value)) {\n continue\n }\n relatedSeedUids.add(metadata.value)\n }\n }\n\n let propertyValue = metadata.value\n\n if (typeof propertyValue !== 'string') {\n propertyValue = JSON.stringify(propertyValue)\n }\n\n if (isRelation && !isList) {\n const relatedSeed = itemSeeds.find(\n (seed: Attestation) => seed.id === metadata.value,\n )\n if (relatedSeed && relatedSeed.schema && relatedSeed.schema.schemaNames) {\n refSeedType = relatedSeed.schema.schemaNames[0].name\n refSchemaUid = relatedSeed.schemaId\n }\n }\n\n if (isRelation && isList) {\n const relatedSeeds = itemSeeds.filter((seed: Attestation) =>\n metadata.value.includes(seed.id),\n )\n if (relatedSeeds && relatedSeeds.length > 0) {\n refSeedType = relatedSeeds[0].schema.schemaNames[0].name\n refSchemaUid = relatedSeeds[0].schemaId\n }\n }\n\n const propertyName = camelCase(propertyNameSnake)\n propertyValue = escapeSqliteString(propertyValue)\n const easDataType = metadata.type\n const versionUid = property.refUID\n const versionLocalId = versionUidToLocalId.get(versionUid)\n const attestationCreatedAt = property.timeCreated * 1000\n const attestationRaw = escapeSqliteString(JSON.stringify(property))\n const seedUid = versionUidToSeedUid.get(versionUid)\n const seedLocalId = seedUidToLocalId.get(seedUid!)\n const modelType = seedUidToModelType.get(seedUid!)\n\n let localStorageDir\n const modelName = startCase(modelType)\n const ModelClass = models[modelName]\n const modelSchema = ModelClass.schema\n\n if (propertyNameSnake === 'storage_transaction_id') {\n await createMetadataRecordsForStorageTransactionId(property, modelSchema)\n }\n\n const valuesString = `('${propertyLocalId}', '${property.id}', \n '${property.schemaId}', '${propertyName}', \n '${propertyValue}', '${easDataType}', '${versionUid}', \n '${versionLocalId}', '${seedUid}', '${seedLocalId}', \n '${modelType}', ${refValueType ? `'${refValueType}'` : 'NULL'}, \n ${refSeedType ? `'${refSeedType}'` : 'NULL'},\n ${refSchemaUid ? `'${refSchemaUid}'` : 'NULL'},\n ${Date.now()}, ${attestationCreatedAt}, '${attestationRaw}',\n ${localStorageDir ? `'${localStorageDir}'` : 'NULL'},\n ${refResolvedValue ? `'${refResolvedValue}'` : 'NULL'})`\n\n if (i < newProperties.length - 1) {\n insertPropertiesQuery += valuesString + ', '\n }\n\n if (i === newProperties.length - 1) {\n insertPropertiesQuery += valuesString + ';'\n }\n\n propertyUidToLocalId.set(property.id, propertyLocalId)\n }\n\n if (insertPropertiesQuery.endsWith('VALUES ')) {\n return { propertyUids }\n }\n\n if (insertPropertiesQuery.endsWith(', ')) {\n insertPropertiesQuery = insertPropertiesQuery.slice(0, -2) + ';'\n }\n\n await appDb.run(sql.raw(insertPropertiesQuery))\n\n isSavingToDb = false\n\n return { propertyUids }\n}\n\nconst getRelatedSeedsAndVersions = async () => {\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n const { itemSeeds } = await easClient.request(GET_SEEDS, {\n where: {\n id: {\n in: Array.from(relatedSeedUids),\n },\n },\n })\n\n await saveEasSeedsToDb({ itemSeeds })\n\n const { itemVersions } = await easClient.request(GET_VERSIONS, {\n where: {\n refUID: {\n in: Array.from(relatedSeedUids),\n },\n },\n })\n\n await saveEasVersionsToDb({ itemVersions })\n\n const relatedVersionUids = itemVersions.map((v) => v.id)\n\n const { itemProperties } = await easClient.request(GET_PROPERTIES, {\n where: {\n refUID: {\n in: relatedVersionUids,\n },\n },\n })\n\n await saveEasPropertiesToDb({\n itemProperties,\n itemSeeds,\n })\n}\n\nconst syncDbWithEasHandler: DebouncedFunc<any> = throttle(\n async (_) => {\n const appDb = BaseDb.getAppDb()\n\n const { modelSchemas, schemaStringToModelRecord } = await getModelSchemas()\n\n if (\n !modelSchemas ||\n !modelSchemas.schemas ||\n modelSchemas.schemas.length === 0\n ) {\n throw new Error(`No schemas found for models`)\n }\n\n const schemaUids: string[] = []\n\n for (const modelSchema of modelSchemas.schemas) {\n const foundModel = schemaStringToModelRecord.get(modelSchema.schema)\n\n if (!foundModel) {\n throw new Error(`Model not found for schema ${modelSchema.schema}`)\n }\n\n schemaUids.push(modelSchema.id)\n\n await appDb\n .insert(modelUids)\n .values({\n modelId: foundModel.id,\n uid: modelSchema.id,\n })\n .onConflictDoNothing()\n\n }\n\n const addresses = await getAddressesFromDb()\n\n const itemSeeds = await getSeedsFromSchemaUids({\n schemaUids: schemaUids,\n addresses,\n })\n\n // const seedDbRecords = new Map<string, Record<string, unknown>>()\n\n const { seedUids } = await saveEasSeedsToDb({\n itemSeeds,\n })\n\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n const { itemVersions } = await queryClient.fetchQuery({\n queryKey: [`getVersionsForAllModels`],\n queryFn: async () =>\n easClient.request(GET_VERSIONS, {\n where: {\n refUID: {\n in: seedUids,\n },\n },\n }),\n })\n\n const { versionUids } = await saveEasVersionsToDb({\n itemVersions,\n })\n\n const { itemProperties } = await queryClient.fetchQuery({\n queryKey: [`getPropertiesForAllModels`],\n queryFn: async () =>\n easClient.request(GET_PROPERTIES, {\n where: {\n refUID: {\n in: versionUids,\n },\n },\n }),\n })\n\n const { propertyUids } = saveEasPropertiesToDb({\n itemProperties,\n itemSeeds,\n })\n\n await getRelatedSeedsAndVersions()\n\n for (const modelName of getModelNames()) {\n eventEmitter.emit('item.requestAll', { modelName })\n }\n },\n 30000,\n {\n leading: true,\n trailing: false,\n },\n)\n\nexport { syncDbWithEasHandler }\n","export const isNode = (): boolean => {\n return (\n typeof process !== 'undefined' &&\n process.versions != null &&\n process.versions.node != null\n )\n}\n\nexport const isBrowser = (): boolean => {\n return !isElectron() && typeof window !== 'undefined' && typeof window.document !== 'undefined'\n}\n\nexport const isReactNative = (): boolean => {\n return typeof navigator !== 'undefined' && navigator.product === 'ReactNative'\n}\n\nexport const isElectron = (): boolean => {\n return typeof process !== 'undefined' && process.versions != null && process.versions.electron != null;\n}\n\nexport const getEnvironment = (): string => {\n if (isBrowser()) {\n return 'browser'\n }\n\n if (isElectron()) {\n return 'electron'\n }\n\n if (isReactNative()) {\n return 'react-native'\n }\n\n return 'node'\n}\n","import { EventObject, fromCallback, Subscription } from 'xstate'\nimport { getEnvironment } from '@/helpers/environment'\nimport {\n GLOBAL_INITIALIZING_CREATE_ALL_ITEMS_SERVICES,\n GLOBAL_INITIALIZING_INTERNAL_SERVICE_READY,\n GLOBAL_INITIALIZING_SEND_CONFIG,\n} from '@/services/internal/constants'\nimport debug from 'debug'\nimport { FromCallbackInput, GlobalMachineContext } from '@/types'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { appState } from '@/seedSchema'\nimport { like } from 'drizzle-orm'\nimport { fetchSchemaUids } from '@/stores/eas'\n\nconst logger = debug('app:services:global:actors:initialize')\n\nexport const initialize = fromCallback<\n EventObject,\n FromCallbackInput<GlobalMachineContext, EventObject>\n>(({ sendBack, input: { event, context } }) => {\n const { internalService, models, endpoints, arweaveDomain, addresses, } = context\n\n if (!internalService) {\n throw new Error('internalService is required')\n }\n\n if (!models) {\n throw new Error('models is required')\n }\n\n let environment = getEnvironment()\n\n let internalSubscription: Subscription | undefined\n let easSubscription: Subscription | undefined\n\n const _initFileSystem = async (): Promise<void> => {\n return\n // return new Promise((resolve) => {\n // })\n }\n\n const _initInternal = async (): Promise<void> => {\n return new Promise((resolve) => {\n internalSubscription = internalService.subscribe((snapshot) => {\n logger('[sdk] [internal] snapshot.value', snapshot.value)\n if (snapshot.value === 'ready') {\n resolve()\n }\n })\n logger('[sdk] [internal] sending init')\n internalService.send({\n type: 'init',\n endpoints,\n addresses,\n arweaveDomain,\n })\n })\n }\n\n const _initAllItemsServices = async (): Promise<void> => {\n const appDb = BaseDb.getAppDb()\n\n const rows = await appDb\n .select()\n .from(appState)\n .where(like(appState.key, 'snapshot__%'))\n\n const payloadObj = {\n create: {},\n restore: {},\n }\n\n const modelNamesRestored: string[] = []\n\n if (rows && rows.length > 0) {\n for (const row of rows) {\n const modelName = row.key.replace('snapshot__', '')\n payloadObj.restore[modelName] = JSON.parse(row.value)\n modelNamesRestored.push(modelName)\n }\n }\n for (const [modelName, ModelClass] of Object.entries(models)) {\n if (!modelNamesRestored.includes(modelName)) {\n payloadObj.create[modelName] = ModelClass\n }\n }\n sendBack({\n type: GLOBAL_INITIALIZING_CREATE_ALL_ITEMS_SERVICES,\n ...payloadObj,\n })\n }\n\n const _initEas = async (): Promise<void> => {\n await fetchSchemaUids()\n }\n\n _initFileSystem().then(() => {\n logger('[global/actors] File system initialized')\n })\n\n _initInternal()\n .then(() => {\n return _initAllItemsServices()\n })\n .then(() => {\n return _initEas()\n })\n .then(() => {\n logger('[global/actors] Internal initialized')\n sendBack({ type: GLOBAL_INITIALIZING_INTERNAL_SERVICE_READY })\n internalSubscription?.unsubscribe()\n })\n\n // _initEas().then(() => {\n // logger('EAS initialized')\n // })\n\n sendBack({ type: GLOBAL_INITIALIZING_SEND_CONFIG, environment })\n\n return () => {\n internalSubscription?.unsubscribe()\n easSubscription?.unsubscribe()\n }\n})\n","import { EventObject, fromCallback } from 'xstate'\nimport {\n FromCallbackInput,\n GetSchemaForModelEvent,\n GlobalMachineContext,\n} from '@/types'\nimport debug from 'debug'\n\nconst logger = debug('app:services:global:actors:getSchemaForModel')\n\nexport const getSchemaForModel = fromCallback<\n EventObject,\n FromCallbackInput<GlobalMachineContext, GetSchemaForModelEvent>\n>(({ sendBack, input: { context, event } }) => {\n const { modelName } = event\n\n if (!modelName) {\n console.warn('No modelName found')\n return\n }\n\n const { models } = context\n\n if (!models) {\n console.warn('No models found')\n return\n }\n\n const model = Object.entries(models).find(\n ([modelNameFromConfig]) => modelNameFromConfig === modelName,\n )\n\n if (!model) {\n throw new Error(`Model ${modelName} not found`)\n }\n\n logger('[service/actor] [getSchemaForModel] model:', model)\n\n sendBack({ type: 'schemaForModel', schema: model.schema })\n\n return () => {}\n})\n","import { EventObject, fromCallback } from 'xstate'\nimport { models as modelsTable, modelUids } from '@/seedSchema'\nimport { eq } from 'drizzle-orm'\nimport { toSnakeCase, BaseEasClient, BaseQueryClient } from '@/helpers'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { GLOBAL_ADDING_MODELS_TO_DB_SUCCESS } from '@/services/internal/constants'\nimport { eventEmitter } from '@/eventBus'\nimport { FromCallbackInput, GlobalMachineContext } from '@/types'\nimport debug from 'debug'\nimport { GET_SCHEMAS } from '@/Item/queries'\n\nconst logger = debug('app:services:global:actors:addModelsToDb')\n\nexport const addModelsToDb = fromCallback<\n EventObject,\n FromCallbackInput<GlobalMachineContext>\n>(({ sendBack, input: { context } }) => {\n const { models } = context\n\n const _addModelsToDb = async () => {\n const appDb = BaseDb.getAppDb()\n\n if (!models) {\n return\n }\n\n const { models: SeedModels } = await import(\n '@/db/configs/seed.schema.config'\n )\n\n const allModels = {\n ...SeedModels,\n ...models,\n }\n\n let hasModelsInDb = false\n const schemaDefsByModelName = new Map<\n string,\n {\n dbId: number\n schemaDef: string\n }\n >()\n\n for (const [modelName, _] of Object.entries(allModels)) {\n logger(\n '[helpers/db] [addModelsToInternalDb] starting modelName:',\n modelName,\n )\n\n let foundModel\n\n const foundModelsQuery = await appDb\n .select()\n .from(modelsTable)\n .where(eq(modelsTable.name, modelName))\n\n if (!foundModelsQuery || foundModelsQuery.length === 0) {\n await appDb.insert(modelsTable).values({\n name: modelName,\n })\n\n logger('[global/actors] [addModelsToDb] inserted model:', modelName)\n const foundModels = await appDb\n .select({\n id: modelsTable.id,\n name: modelsTable.name,\n uid: modelUids.uid,\n })\n .from(modelsTable)\n .leftJoin(modelUids, eq(modelsTable.id, modelUids.modelId))\n .where(eq(modelsTable.name, modelName))\n .limit(1)\n\n foundModel = foundModels[0]\n }\n\n if (foundModelsQuery && foundModelsQuery.length > 0) {\n foundModel = foundModelsQuery[0]\n }\n\n if (!foundModel) {\n hasModelsInDb = false\n break\n }\n\n schemaDefsByModelName.set(modelName, {\n dbId: foundModel.id,\n schemaDef: `bytes32 ${toSnakeCase(modelName)}`,\n })\n }\n\n if (!hasModelsInDb) {\n return false\n }\n\n const schemaDefs = Array.from(schemaDefsByModelName.values()).map(\n ({ schemaDef }) => schemaDef,\n )\n\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n const { schemas } = await queryClient.fetchQuery({\n queryKey: [`getSchemasVersion`],\n queryFn: async () =>\n easClient.request(GET_SCHEMAS, {\n where: {\n schema: {\n in: schemaDefs,\n },\n },\n }),\n })\n\n if (!schemas || schemas.length === 0) {\n throw new Error(`No schemas found`)\n }\n\n for (const schema of schemas) {\n const modelId = Array.from(schemaDefsByModelName.values()).find(\n ({ schemaDef }) => schemaDef === schema.schema,\n )?.dbId\n\n if (!modelId) {\n throw new Error(`No modelId found for schema ${schema.schema}`)\n }\n\n await appDb\n .insert(modelUids)\n .values({\n modelId,\n uid: schema.id,\n })\n .onConflictDoNothing()\n }\n }\n\n _addModelsToDb().then((hasModelsInDb) => {\n sendBack({ type: GLOBAL_ADDING_MODELS_TO_DB_SUCCESS })\n if (hasModelsInDb) {\n }\n for (const [modelName, model] of Object.entries(models)) {\n const service = context[`${modelName}Service`]\n service.send({ type: 'modelsFound' })\n }\n eventEmitter.emit('syncDbWithEas')\n return\n })\n\n return () => { }\n})\n","import { EventObject, fromCallback } from 'xstate'\nimport { DbServiceContext, FromCallbackInput } from '@/types'\nimport {\n BROWSER_FS_TOP_DIR,\n DB_CHECK_STATUS_EXISTS,\n DB_CHECK_STATUS_UPDATE_PATHS,\n} from '@/services/internal/constants'\nimport debug from 'debug'\nimport { isBrowser } from '@/helpers/environment'\n\nconst logger = debug('app:services:db:actors:checkStatus')\n\nexport const checkStatus = fromCallback<\n EventObject,\n FromCallbackInput<DbServiceContext>\n>(({ sendBack, input: { context, event, } }) => {\n const { dbName, } = context\n let { pathToDir, } = context\n\n\n logger('[db/actors] checkStatus context', context)\n console.log('[db/actors] checkStatus context', context)\n console.log('[db/actors] checkStatus event', event)\n if (isBrowser()) {\n pathToDir = BROWSER_FS_TOP_DIR\n }\n const pathToDbDir = `${pathToDir}/db`\n const pathToDb = `${pathToDbDir}/${dbName}.sqlite3`\n\n sendBack({\n type: DB_CHECK_STATUS_UPDATE_PATHS,\n pathToDb,\n pathToDir,\n pathToDbDir,\n })\n\n const _checkStatus = async (): Promise<void> => {\n // logger('[db/actors] _checkStatus pathToDb', pathToDb)\n // const exists = await fs.promises.exists(pathToJournal)\n // if (exists) {\n // sendBack({\n // type: DB_CHECK_STATUS_EXISTS,\n // })\n // return\n // }\n //\n // return new Promise((resolve) => {\n // sendBack({ type: DB_CHECK_STATUS_DOES_NOT_EXIST })\n //\n // })\n }\n\n _checkStatus().then(() => {\n sendBack({ type: DB_CHECK_STATUS_EXISTS })\n return\n })\n})\n","import { EventObject, fromCallback } from 'xstate'\nimport { DbServiceContext, FromCallbackInput } from '@/types'\nimport { getSqliteWasmClient } from '@/db/sqlWasmClient'\nimport { DB_CREATING_SUCCESS } from '@/services/internal/constants'\nimport debug from 'debug'\nimport { BaseDb } from '@/db/Db/BaseDb'\n\nconst logger = debug('app:services:db:actors:connectToDb')\n\nexport const connectToDb = fromCallback<\n EventObject,\n FromCallbackInput<DbServiceContext>\n>(({ sendBack, input: { context } }) => {\n logger('[db/actors] connectToDb context', context)\n\n const { dbName, pathToDir } = context\n\n if (!pathToDir || !dbName) {\n throw new Error('pathToDir and dbName are required')\n }\n\n let isConnecting = false\n let dbId: string | undefined\n\n const _connectToDb = async (): Promise<void> => {\n if (isConnecting) {\n return\n }\n isConnecting = true\n const dbId = await BaseDb.connectToDb(pathToDir, dbName)\n if (dbId) {\n sendBack({ type: DB_CREATING_SUCCESS, dbId, })\n }\n isConnecting = false\n }\n\n _connectToDb().then(() => {\n return\n })\n\n})\n","import { EventObject, fromCallback } from 'xstate'\nimport { DbServiceContext, FromCallbackInput } from '@/types/machines'\nimport fs from '@zenfs/core'\nimport {\n DB_VALIDATING_SUCCESS,\n DB_VALIDATING_WAIT,\n} from '@/services/internal/constants'\n\nexport const validate = fromCallback<\n EventObject,\n FromCallbackInput<DbServiceContext>\n>(({ sendBack, input: { context } }) => {\n const { pathToDir, pathToDb } = context\n\n const pathsToCheck = [\n pathToDir,\n `${pathToDir}/db`,\n `${pathToDir}/db/meta`,\n `${pathToDir}/db/meta/_journal.json`,\n ]\n\n const _validate = async (): Promise<boolean> => {\n // If any of the necessary files don't exist, we wipe them all and recreate\n let exists = false\n\n for (const path of pathsToCheck) {\n exists = await fs.promises.exists(path)\n if (!exists) {\n sendBack({\n type: DB_VALIDATING_WAIT,\n })\n return false\n }\n }\n return exists\n }\n\n _validate().then((allFilesExist) => {\n if (allFilesExist) {\n sendBack({ type: DB_VALIDATING_SUCCESS, pathToDb, pathToDir })\n return\n }\n sendBack({ type: DB_VALIDATING_WAIT })\n })\n})\n","import { BaseDb } from '@/db/Db/BaseDb'\nimport { appState } from '@/seedSchema'\n\nexport const saveAppState = async (key: string, value: string) => {\n const appDb = BaseDb.getAppDb()\n\n await appDb\n .insert(appState)\n .values({\n key,\n value,\n })\n .onConflictDoUpdate({\n target: appState.key,\n set: {\n value,\n },\n })\n}\n","\nexport default `(\n ${\n function () {\n\nconst identifyString = (str: string) => {\n try {\n JSON.parse(str)\n return 'json'\n } catch (e) {\n // Not JSON\n }\n\n if (!str) {\n return\n }\n\n if (str.trim().startsWith('<') && str.trim().endsWith('>')) {\n return 'html'\n }\n\n // Simple markdown checks (very naive)\n if (/^#{1,6}\\s|^-{3,}|\\*{3,}|^-{1,2}\\s|\\*\\s/.test(str)) {\n return 'markdown'\n }\n\n if (/^data:image\\/[a-zA-Z]+;base64,[A-Za-z0-9+/]+={0,2}$/.test(str)) {\n return 'base64'\n }\n\n // Default to plain text if unsure\n return 'text'\n}\n\nconst getMimeType = (base64: string) => {\n if (!base64) {\n return null\n }\n const result = base64.match(/^data:([a-zA-Z0-9]+\\/[a-zA-Z0-9-.+]+).*,/)\n\n if (result && result.length > 1) {\n return result[1]\n } else {\n return null // MIME type could not be determined\n }\n}\n\nconst getDataTypeFromString = (\n data: string,\n): 'imageBase64' | 'base64' | 'url' | null => {\n const nonImageBase64Regex =\n /^(?!data:image\\/(?:jpeg|png|gif|bmp|webp);base64,)[A-Za-z0-9+/=]+$/\n\n if (nonImageBase64Regex.test(data)) {\n return 'base64'\n }\n\n // Regular expression for base64 (simple version, checking for base64 format)\n const imageBase64Regex = /^data:image\\/[a-zA-Z]+;base64,[A-Za-z0-9+/]+={0,2}$/\n\n if (imageBase64Regex.test(data)) {\n return 'imageBase64'\n }\n\n // Regular expression for URL (simple version, checking for common URL format)\n const urlRegex =\n /^(http:\\/\\/www\\.|https:\\/\\/www\\.|http:\\/\\/|https:\\/\\/)?[a-z0-9]+([\\-\\.]{1}[a-z0-9]+)*\\.[a-z]{2,5}(:[0-9]{1,5})?(\\/.*)?$/\n\n if (urlRegex.test(data)) {\n return 'url'\n }\n\n return null\n}\n\nconst isBinary = (arrayBuffer: ArrayBuffer): boolean => {\n const view = new Uint8Array(arrayBuffer);\n\n let nonTextCount = 0;\n const threshold = 0.2; // Adjust as needed (e.g., 20% non-text implies binary)\n\n for (let i = 0; i < view.length; i++) {\n const byte = view[i];\n\n // ASCII printable characters (32-126) and common whitespace (9, 10, 13)\n if (\n (byte >= 32 && byte <= 126) || // Printable ASCII\n byte === 9 || byte === 10 || byte === 13 // Tab, LF, CR\n ) {\n continue;\n }\n\n nonTextCount++;\n if (nonTextCount / view.length > threshold) {\n return true; // More than threshold are non-text bytes\n }\n }\n\n return false; // Fewer than threshold are non-text bytes\n}\n\nconst saveBufferToOPFS = async (filePath: string, buffer: Uint8Array): Promise<void> => {\n // Access the OPFS root directory\n const rootHandle = await navigator.storage.getDirectory();\n\n // Split the filePath into directory segments and file name\n const segments = filePath.split('/').filter(Boolean);\n const fileName = segments.pop(); // Extract the file name\n if (!fileName) {\n throw new Error('Invalid file path: No file name provided.');\n }\n\n // Traverse or create directories as needed\n let currentDirHandle = rootHandle;\n for (const segment of segments) {\n currentDirHandle = await currentDirHandle.getDirectoryHandle(segment, { create: true });\n }\n\n // Create or open the file in OPFS\n const fileHandleAsync = await currentDirHandle.getFileHandle(fileName, { create: true });\n const fileHandle = await fileHandleAsync.createSyncAccessHandle();\n // Write the buffer to the file\n fileHandle.write(buffer);\n fileHandle.flush();\n fileHandle.close();\n}\n\nconst downloadFiles = async ({\n transactionIds,\n arweaveHost,\n}: {\n transactionIds: string[],\n arweaveHost: string,\n}) => {\n\n let arrayBuffer: ArrayBuffer | undefined\n\n for (const transactionId of transactionIds) {\n try {\n const response = await fetch(`https://${arweaveHost}/raw/${transactionId}`);\n\n arrayBuffer = await response.arrayBuffer();\n } catch(error) {\n console.log(`[filesDownload] transaction ${transactionId} data not found`, error)\n globalThis.postMessage({\n message: 'excludeTransaction',\n transactionId,\n })\n continue\n }\n\n let dataString\n const isBinaryData = isBinary(arrayBuffer)\n\n if (!isBinaryData) {\n const decoder = new TextDecoder('utf-8')\n const text = decoder.decode(arrayBuffer)\n dataString = text\n }\n\n if (!dataString && !arrayBuffer) {\n console.log(\n `[filesDownload] transaction ${transactionId} data not found`,\n )\n }\n\n if (dataString && dataString.startsWith('===FILE_SEPARATOR===')) {\n const dataStringParts = dataString\n .split('===FILE_SEPARATOR===')\n .slice(1)\n\n if (dataStringParts.length % 2 !== 0) {\n throw new Error('Input array must have an even number of elements.')\n }\n\n for (let i = 0; i < dataStringParts.length; i += 2) {\n const contentType = dataStringParts[i]\n const content = dataStringParts[i + 1]\n const encoder = new TextEncoder()\n if (contentType === 'html') {\n const fileName = `${transactionId}.html`\n const buffer = encoder.encode(content)\n saveBufferToOPFS(`/files/html/${fileName}`, buffer)\n }\n if (contentType === 'json') {\n const fileName = `${transactionId}.json`\n const buffer = encoder.encode(content)\n saveBufferToOPFS(`/files/json/${fileName}`, buffer)\n }\n }\n\n continue\n }\n\n if (!dataString && arrayBuffer) {\n saveBufferToOPFS(\n `/files/images/${transactionId}`,\n new Uint8Array(arrayBuffer),\n )\n continue\n }\n\n if (!dataString) {\n continue\n }\n\n let contentType = identifyString(dataString)\n\n if (\n contentType !== 'json' &&\n contentType !== 'base64' &&\n contentType !== 'html'\n ) {\n const possibleImageType = getDataTypeFromString(dataString)\n if (!possibleImageType) {\n console.log(\n `[filesDownload] transaction ${transactionId} data not in expected format: ${possibleImageType}`,\n )\n continue\n }\n\n contentType = possibleImageType\n }\n\n if (contentType === 'url') {\n const url = dataString as string\n\n let buffer: ArrayBuffer | undefined\n\n try {\n const response = await fetch(url)\n \n buffer = await response.arrayBuffer()\n\n } catch(error) {\n console.log(`[filesDownload] transaction ${transactionId} value was url: ${dataString} but failed to fetch`, error)\n globalThis.postMessage({\n message: 'excludeTransaction',\n transactionId,\n })\n continue\n }\n\n const bufferUint8Array = new Uint8Array(buffer)\n\n // Extract the file extension from the URL\n const extensionMatch = url.match(/\\.(jpg|jpeg|png|gif|bmp|webp|svg)$/i)\n if (!extensionMatch) {\n throw new Error(\n 'Unable to determine the file extension from the URL.',\n )\n }\n const fileExtension = extensionMatch[0] // e.g., \".jpg\"\n\n // Set the file name (you can customize this)\n // const fileNameFromUrl = `${transactionId}${fileExtension}`\n\n await saveBufferToOPFS(\n `/files/images/${transactionId}`,\n bufferUint8Array,\n )\n\n continue\n }\n\n const mimeType = getMimeType(dataString as string)\n let fileExtension = mimeType\n\n if (fileExtension && fileExtension?.startsWith('image')) {\n fileExtension = fileExtension.replace('image/', '')\n }\n\n let fileName = transactionId\n\n if (contentType === 'base64') {\n if (fileExtension) {\n fileName += `.${fileExtension}`\n }\n\n // Remove the Base64 header if it exists (e.g., \"data:image/png;base64,\")\n const base64Data = dataString.split(',').pop() || ''\n\n // Decode the Base64 string to binary\n const binaryString = atob(base64Data)\n const length = binaryString.length\n const binaryData = new Uint8Array(length)\n\n for (let i = 0; i < length; i++) {\n binaryData[i] = binaryString.charCodeAt(i)\n }\n\n await saveBufferToOPFS(`/files/images/${fileName}`, binaryData)\n\n }\n\n if (contentType === 'html') {\n fileName += '.html'\n const encoder = new TextEncoder()\n const buffer = encoder.encode(dataString)\n await saveBufferToOPFS(`/files/html/${fileName}`, buffer)\n }\n\n if (contentType === 'json') {\n fileName += '.json'\n const encoder = new TextEncoder()\n const buffer = encoder.encode(dataString)\n await saveBufferToOPFS(`/files/json/${fileName}`, buffer)\n }\n }\n}\n\nonmessage = async (e) => {\n console.log({\n message: 'filesDownload onmessage',\n data: e.data,\n })\n await downloadFiles(e.data);\n globalThis.postMessage({\n message: 'filesDownload onmessage done',\n done: true,\n })\n \n}\n}.toString()\n}\n)()`","import { saveAppState } from '@/db/write/saveAppState.js';\nimport filesDownload from './filesDownload.js'\n\n\n\nexport class FileDownloader {\n private cores: number\n private workersArchive: Worker[] = []\n private workerBlobUrl: string\n\n constructor() {\n this.cores = Math.min(navigator.hardwareConcurrency || 4, 4);\n\n this.workerBlobUrl = globalThis.URL.createObjectURL(\n new Blob([filesDownload], { type: 'application/javascript' })\n )\n }\n\n public downloadAll = async ({transactionIds, arweaveHost, excludedTransactions}: DownloadAllFilesParams): Promise<void> => {\n\n if (this.workersArchive.length > 0) {\n for (let i = 0; i < this.workersArchive.length; i++) {\n this.workersArchive[i].terminate()\n delete this.workersArchive[i]\n }\n this.workersArchive = []\n }\n\n const worker = new Worker(this.workerBlobUrl);\n\n this.workersArchive.push(worker)\n\n const localExcludedTransactions = new Set(excludedTransactions)\n\n return new Promise((resolve, reject) => {\n worker.onmessage = (e) => {\n console.log('filesDownload main thread onmessage', e.data);\n\n if (e.data.message === 'excludeTransaction') {\n localExcludedTransactions.add(e.data.transactionId)\n }\n\n if (e.data.done) {\n saveAppState('excludedTransactions', JSON.stringify(Array.from(localExcludedTransactions)))\n .then(() => {\n resolve(e.data)\n })\n .catch((error) => {\n reject(error)\n })\n }\n if (e.data.error) {\n reject(e.data.error)\n }\n }\n \n worker.postMessage({\n transactionIds,\n arweaveHost,\n });\n })\n }\n}\n","import path from \"path\";\n\ntype BrowserImageResizerConfigBase = {\n\t/**\n\t * Algorithm used for downscaling\n\t * \n\t * * `null`: Just resize with `drawImage()`. The best quality and fastest.\n\t * * `bilinear`: Better quality, slower. Comes from upstream (ericnogralesbrowser-image-resizer).\n\t * * `hermite`: Worse quality, faster. Comes from [viliusle/Hermite-resize](https://github.com/viliusle/Hermite-resize). Will dispatch workers for better performance.\n\t * * `hermite_single`: Worse quality, faster. Single-threaded.\n\t * \n\t * default: null\n\t */\n\talgorithm: 'bilinear' | 'hermite' | 'hermite_single' | 'null' | null;\n\n\t/**\n\t * Whether to process downscaling by `drawImage(source, 0, 0, source.width / 2, source.height / 2)`\n\t * until the size is smaller than twice the target size.\n\t *\n\t * There seems to be no situation where it is necessary to change to false.\n\t * \n\t * default: true\n\t */\n\tprocessByHalf: boolean;\n\n\tmaxWidth: number;\n\tmaxHeight: number;\n\tmaxSize?: number; // ???\n\n\t/**\n\t * Scale ratio. Strictly limited to maxWidth.\n\t */\n\tscaleRatio?: number;\n\n\t/**\n\t * Output logs to console\n\t */\n\tdebug: boolean;\n}\n\n\ntype BrowserImageResizerConfigWithConvertedOutput = BrowserImageResizerConfigBase & {\n\tquality: number;\n\tmimeType: string;\n};\n\ntype BrowserImageResizerConfigWithOffscreenCanvasOutput = BrowserImageResizerConfigBase & {\n\tmimeType: null;\n}\n\ntype BrowserImageResizerConfig = BrowserImageResizerConfigWithConvertedOutput | BrowserImageResizerConfigWithOffscreenCanvasOutput;\n\ntype WorkerSouceData = {\n source: ImageData;\n startY: number;\n height: number;\n}\n\nexport default `(\n ${\n function () {\n\nasync function listFilesInDirectory(directoryHandle: FileSystemDirectoryHandle) {\n const entries: { name: string; kind: FileSystemHandleKind }[] = [];\n\n for await (const [name, handle] of directoryHandle.entries()) {\n entries.push({\n name,\n kind: handle.kind,\n })\n }\n\n return entries;\n}\n\nconst getFileHandle = async (path: string, rootHandle: FileSystemDirectoryHandle | null = null): Promise<FileSystemFileHandle> => {\n // Split the path into segments\n const segments = path.split('/').filter(Boolean);\n\n // Start from the root directory if not provided\n if (!rootHandle) {\n rootHandle = await navigator.storage.getDirectory();\n }\n\n let currentHandle = rootHandle;\n\n // Traverse the path segments\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const isLastSegment = i === segments.length - 1;\n\n try {\n\n for await (const [name, handle] of currentHandle.entries()) {\n if (name !== segment) {\n continue\n }\n\n if (isLastSegment) {\n if (handle.kind === 'file') {\n return handle as FileSystemFileHandle; // Return the file handle if found\n } else {\n throw new Error(`Path '${path}' refers to a directory, not a file.`);\n }\n } else if (handle.kind === 'directory') {\n currentHandle = handle as FileSystemDirectoryHandle; // Traverse into the directory\n } else {\n throw new Error(`Invalid path segment '${segment}'`);\n }\n }\n } catch (err) {\n if (err instanceof Error && err.name === 'NotFoundError') {\n throw new Error(`Path '${path}' does not exist.`);\n } else {\n throw err;\n }\n }\n }\n\n throw new Error(`Path '${path}' could not be resolved.`);\n}\n\nasync function getFileFromOPFS(path: string): Promise<File> {\n\n const fileHandleAsync = await getFileHandle(path);\n const file = await fileHandleAsync.getFile();\n return file;\n\n}\n\nconst DEFAULT_CONFIG = {\n\targorithm: 'null',\n\tprocessByHalf: true,\n\tquality: 0.5,\n\tmaxWidth: 800,\n\tmaxHeight: 600,\n\tdebug: false,\n\tmimeType: 'image/jpeg',\n} as const;\n\nfunction isIos() {\n\tif (typeof navigator === 'undefined') return false;\n\tif (!navigator.userAgent) return false;\n\treturn /iPad|iPhone|iPod/.test(navigator.userAgent);\n}\n\nconst getTargetHeight = (srcHeight: number, scale: number, config: BrowserImageResizerConfig) => {\n\treturn Math.min(Math.floor(srcHeight * scale), config.maxHeight);\n}\n\nconst findMaxWidth = (config: BrowserImageResizerConfig, canvas: { width: number; height: number }) => {\n\t//Let's find the max available width for scaled image\n\tconst ratio = canvas.width / canvas.height;\n\tlet mWidth = Math.min(\n\t\tcanvas.width,\n\t\tconfig.maxWidth,\n\t\tratio * config.maxHeight\n\t);\n\tif (\n\t\tconfig.maxSize &&\n\t\tconfig.maxSize > 0 &&\n\t\tconfig.maxSize < (canvas.width * canvas.height) / 1000\n\t)\n\t\tmWidth = Math.min(\n\t\t\tmWidth,\n\t\t\tMath.floor((config.maxSize * 1000) / canvas.height)\n\t\t);\n\tif (!!config.scaleRatio)\n\t\tmWidth = Math.min(mWidth, Math.floor(config.scaleRatio * canvas.width));\n\n\tconst rHeight = getTargetHeight(canvas.height, mWidth / canvas.width, config);\n\n // console.log(\n // 'browser-image-resizer: original image size = ' +\n // canvas.width +\n // ' px (width) X ' +\n // canvas.height +\n // ' px (height)'\n // );\n // console.log(\n // 'browser-image-resizer: scaled image size = ' +\n // mWidth +\n // ' px (width) X ' +\n // rHeight +\n // ' px (height)'\n // );\n\tif (mWidth <= 0) {\n\t\tmWidth = 1;\n\t\tconsole.warn(\"browser-image-resizer: image size is too small\");\n\t}\n\n\tif (isIos() && mWidth * rHeight > 167777216) {\n\t\tconsole.error(\"browser-image-resizer: image size is too large for iOS WebKit.\", mWidth, rHeight);\n\t\tthrow new Error(\"browser-image-resizer: image size is too large for iOS WebKit.\");\n\t}\n\n\treturn mWidth;\n}\n\n /**\n * Hermite resize, multicore version - fast image resize/resample using Hermite filter.\n */\n const resample = (srcCanvas: OffscreenCanvas, destCanvas: OffscreenCanvas, config: { debug?: boolean }) => {\n return new Promise<void>((resolve, reject) => {\n\n const ratio_h = srcCanvas.height / destCanvas.height;\n const cores = Math.min(navigator.hardwareConcurrency || 4, 4)\n\n //prepare source and target data for workers\n const ctx = srcCanvas.getContext('2d');\n if (!ctx) return reject('Canvas is empty (resample)');\n\n const data_part: WorkerSouceData[] = [];\n const block_height = Math.ceil(srcCanvas.height / cores / 2) * 2;\n let end_y = -1;\n for (let c = 0; c < cores; c++) {\n //source\n const offset_y = end_y + 1;\n if (offset_y >= srcCanvas.height) {\n //size too small, nothing left for this core\n continue;\n }\n\n end_y = Math.min(offset_y + block_height - 1, srcCanvas.height - 1);\n\n const current_block_height = Math.min(block_height, srcCanvas.height - offset_y);\n\n console.log('browser-image-resizer: source split: ', '#' + c, offset_y, end_y, 'height: ' + current_block_height);\n\n data_part.push({\n source: ctx.getImageData(0, offset_y, srcCanvas.width, block_height),\n startY: Math.ceil(offset_y / ratio_h),\n height: current_block_height\n });\n }\n\n //start\n const destCtx = destCanvas.getContext('2d');\n if (!destCtx) return reject('Canvas is empty (resample dest)');\n let workers_in_use = data_part.length;\n for (let c = 0; c < data_part.length; c++) {\n\n //draw\n const height_part = Math.ceil(data_part[c].height / ratio_h);\n const target = destCtx.createImageData(destCanvas.width, height_part);\n // target.data.set(event.data.target);\n destCtx.putImageData(target, 0, data_part[c].startY);\n\n }\n });\n};\n\n /**\n * Hermite resize - fast image resize/resample using Hermite filter. 1 cpu version!\n */\n const resampleSingle = (srcCanvasData: ImageData, destCanvasData: ImageData,) => {\n const ratio_w = srcCanvasData.width / destCanvasData.width;\n const ratio_h = srcCanvasData.height / destCanvasData.height;\n const ratio_w_half = Math.ceil(ratio_w / 2);\n const ratio_h_half = Math.ceil(ratio_h / 2);\n\n const data = srcCanvasData.data;\n const data2 = destCanvasData.data;\n\n for (let j = 0; j < destCanvasData.height; j++) {\n for (let i = 0; i < destCanvasData.width; i++) {\n const x2 = (i + j * destCanvasData.width) * 4;\n let weight = 0;\n let weights = 0;\n let weights_alpha = 0;\n let gx_r = 0;\n let gx_g = 0;\n let gx_b = 0;\n let gx_a = 0;\n const center_y = j * ratio_h;\n\n const xx_start = Math.floor(i * ratio_w);\n const xx_stop = Math.min(Math.ceil((i + 1) * ratio_w), srcCanvasData.width);\n const yy_start = Math.floor(j * ratio_h);\n const yy_stop = Math.min(Math.ceil((j + 1) * ratio_h), srcCanvasData.height);\n\n for (let yy = yy_start; yy < yy_stop; yy++) {\n let dy = Math.abs(center_y - yy) / ratio_h_half;\n let center_x = i * ratio_w;\n let w0 = dy * dy; //pre-calc part of w\n for (let xx = xx_start; xx < xx_stop; xx++) {\n let dx = Math.abs(center_x - xx) / ratio_w_half;\n let w = Math.sqrt(w0 + dx * dx);\n if (w >= 1) {\n //pixel too far\n continue;\n }\n //hermite filter\n weight = 2 * w * w * w - 3 * w * w + 1;\n let pos_x = 4 * (xx + yy * srcCanvasData.width);\n //alpha\n gx_a += weight * data[pos_x + 3];\n weights_alpha += weight;\n //colors\n if (data[pos_x + 3] < 255)\n weight = weight * data[pos_x + 3] / 250;\n gx_r += weight * data[pos_x];\n gx_g += weight * data[pos_x + 1];\n gx_b += weight * data[pos_x + 2];\n weights += weight;\n }\n }\n data2[x2] = gx_r / weights;\n data2[x2 + 1] = gx_g / weights;\n data2[x2 + 2] = gx_b / weights;\n data2[x2 + 3] = gx_a / weights_alpha;\n }\n }\n};\n\n /**\n * Hermite resize. Detect cpu count and use best option for user.\n */\n const resampleAuto = (srcCanvas: OffscreenCanvas, destCanvas: OffscreenCanvas, config: { debug?: boolean, argorithm?: string }) => {\n if (!!globalThis.Worker && navigator.hardwareConcurrency > 1 && config?.argorithm !== 'hermite_single') {\n //workers supported and we have at least 2 cpu cores - using multithreading\n return resample(srcCanvas, destCanvas, config);\n } else {\n //1 cpu version\n const { srcImgData, destImgData } = getImageData(srcCanvas, destCanvas);\n resampleSingle(srcImgData, destImgData, config);\n destCanvas.getContext('2d')!.putImageData(destImgData, 0, 0);\n return;\n }\n};\n\n\nasync function scaleCanvasWithAlgorithm(canvas: OffscreenCanvas, config: BrowserImageResizerConfig & { outputWidth: number }) {\n\tconst scale = config.outputWidth / canvas.width;\n\n\tconst scaled = new OffscreenCanvas(Math.floor(config.outputWidth), getTargetHeight(canvas.height, scale, config));\n\n\tswitch (config.algorithm) {\n\t\tcase 'hermite': {\n\t\t\tawait resampleAuto(canvas, scaled, config as BrowserImageResizerConfig & { algorithm: 'hermite' | 'hermite_single' });\n\t\t\tbreak;\n\t\t} case 'hermite_single': {\n\t\t\tconst { srcImgData, destImgData } = getImageData(canvas, scaled);\n\t\t\tresampleSingle(srcImgData, destImgData,);\n\t\t\tscaled?.getContext('2d')?.putImageData(destImgData, 0, 0);\n\t\t\tbreak;\n\t\t} case 'bilinear': {\n\t\t\t// const { srcImgData, destImgData } = getImageData(canvas, scaled);\n\t\t\t// bilinear(srcImgData, destImgData, scale);\n\t\t\t// scaled?.getContext('2d')?.putImageData(destImgData, 0, 0);\n\t\t\tbreak;\n\t\t} default: {\n\t\t\tscaled.getContext('2d')?.drawImage(canvas, 0, 0, scaled.width, scaled.height);\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn scaled;\n}\n\nconst getHalfScaleCanvas = (src: OffscreenCanvas | HTMLCanvasElement) => {\n\tconst half = new OffscreenCanvas(src.width / 2, src.height / 2);\n\n\thalf\n\t\t?.getContext('2d')\n\t\t?.drawImage(src, 0, 0, half.width, half.height);\n\n\treturn half;\n}\n\nconst getImageData = (canvas: OffscreenCanvas, scaled: OffscreenCanvas) => {\n\tconst srcImgData = canvas\n\t\t?.getContext('2d')\n\t\t?.getImageData(0, 0, canvas.width, canvas.height);\n\tconst destImgData = scaled\n\t\t?.getContext('2d')\n\t\t?.createImageData(scaled.width, scaled.height);\n\n\tif (!srcImgData || !destImgData) throw Error('Canvas is empty (scaleCanvasWithAlgorithm). You should run this script after the document is ready.');\n\n\treturn { srcImgData, destImgData };\n}\n\nasync function saveBlobToOPFS(filePath: string, blob: Blob): Promise<void> {\n // Access the OPFS root directory\n const rootHandle = await navigator.storage.getDirectory();\n\n // Split the filePath into directory segments and file name\n const segments = filePath.split('/').filter(Boolean);\n const fileName = segments.pop(); // Extract the file name\n if (!fileName) {\n throw new Error('Invalid file path: No file name provided.');\n }\n\n // Traverse or create directories as needed\n let currentDirHandle = rootHandle;\n for (const segment of segments) {\n currentDirHandle = await currentDirHandle.getDirectoryHandle(segment, { create: true });\n }\n\n // Create or open the file in OPFS\n const fileHandle = await currentDirHandle.getFileHandle(fileName, { create: true });\n\n // Write the Blob to the file\n const writableStream = await fileHandle.createWritable();\n await writableStream.write(blob);\n await writableStream.close();\n}\n\n\nconst imageResize = async (filePath: string, width: number, height: number) => {\n\n console.log({filePath, width, height})\n\n const config = {\n ...DEFAULT_CONFIG,\n algorithm: 'hermite_single',\n mimeType: 'image/webp',\n maxWidth: width,\n maxHeight: height,\n }\n\n const rootHandle = await navigator.storage.getDirectory();\n\n // List files in the root directory\n const files = await listFilesInDirectory(rootHandle);\n console.log({\n message: 'listFilesInDirectory',\n files\n });\n\n const file = await getFileFromOPFS(filePath);\n\n const imageBitmap = await createImageBitmap(file);\n\n let converting: OffscreenCanvas\n\n if (isIos() && imageBitmap.width * imageBitmap.height > 16777216) {\n const scale = Math.sqrt(16777216 / (imageBitmap.width * imageBitmap.height));\n console.log(`browser-image-resizer: scale: Image is too large in iOS WebKit`);\n converting = new OffscreenCanvas(Math.floor(imageBitmap.width * scale), Math.floor(imageBitmap.height * scale));\n converting.getContext('2d')?.drawImage(imageBitmap, 0, 0, converting.width, converting.height);\n } else {\n converting = new OffscreenCanvas(imageBitmap.width, imageBitmap.height);\n converting.getContext('2d')?.drawImage(imageBitmap, 0, 0);\n }\n\n if (!converting?.getContext('2d')) {\n console.log('browser-image-resizer: Canvas Context is empty.')\n }\n\n const maxWidth = findMaxWidth(config, converting);\n\n\tif (!maxWidth){ \n throw Error(`browser-image-resizer: maxWidth is ${maxWidth}!!`)\n };\n\n\twhile (config.processByHalf && converting.width >= 2 * maxWidth) {\n\t\tif (config.debug) console.log(`browser-image-resizer: scale: Scaling canvas by half from ${converting.width}`);\n\t\tconverting = getHalfScaleCanvas(converting);\n\t}\n\n\tif (converting.width > maxWidth) {\n\t\tif (config.debug) console.log(`browser-image-resizer: scale: Scaling canvas by ${config.argorithm} from ${converting.width} to ${maxWidth}`);\n\t\tconverting = await scaleCanvasWithAlgorithm(\n\t\t\tconverting,\n\t\t\tObject.assign(config, { outputWidth: maxWidth }),\n\t\t);\n\t}\n\n\tif (config.mimeType === null) {\n\t\treturn converting;\n\t}\n\tconst resizedBlob = await converting.convertToBlob({ type: config.mimeType, quality: config.quality });\n\n const pathSegments = filePath.split('/');\n const fileName = pathSegments.pop();\n if (!fileName) {\n throw Error('Invalid file path: No file name provided.');\n }\n const newSegments = [\n ...pathSegments,\n width,\n ]\n const fileNameParts = fileName.split('.')\n const newFileName = `${fileNameParts[0]}.webp`\n const newDirPath = newSegments.join('/');\n const newFilePath = `${newDirPath}/${newFileName}`;\n\n // Save resized image to OPFS with new name\n await saveBlobToOPFS(newFilePath, resizedBlob)\n globalThis.postMessage({\n done: true,\n filePath: newFilePath,\n })\n\n}\n\nonmessage = async (e) => {\n console.log('[imageResize] onmessage', e.data)\n const { filePath, width, height } = e.data\n await imageResize(filePath, width, height)\n console.log(`[imageResize] Done`, filePath)\n}\n}.toString()\n}\n)()`\n","import fs from '@zenfs/core';\nimport imageResize from './imageResize'\nimport { FileManager } from '@/browser/helpers/FileManager';\n\n\n\nexport class ImageResizer {\n private cores: number\n private workersArchive: Map<string, Worker> = new Map()\n private workerBlobUrl: string\n\n constructor() {\n this.cores = Math.min(navigator.hardwareConcurrency || 4, 4);\n\n this.workerBlobUrl = globalThis.URL.createObjectURL(\n new Blob([imageResize], { type: 'application/javascript' })\n )\n }\n\n public async resize({filePath, width, height}: ResizeImageParams) {\n \n if (this.workersArchive.has(filePath)) {\n const savedWorker = this.workersArchive.get(filePath)\n savedWorker?.terminate()\n console.log('[ImageResizer.resize] Terminated worker for filePath due to incoming request', filePath)\n this.workersArchive.delete(filePath)\n }\n\n const worker = new Worker(this.workerBlobUrl);\n\n this.workersArchive.set(filePath, worker)\n\n return new Promise((resolve, reject) => {\n worker.onmessage = (e) => {\n console.log('[ImageResizer.resize] main thread onmessage', e.data);\n if (e.data.done) {\n const savedWorker = this.workersArchive.get(filePath)\n savedWorker?.terminate()\n console.log('[ImageResizer.resize] Terminated worker for filePath due to done', filePath)\n this.workersArchive.delete(filePath)\n resolve(e.data)\n }\n\n if (e.data.error) {\n reject(e.data.error)\n }\n }\n \n worker.postMessage({\n filePath,\n width,\n height,\n });\n })\n }\n\n public async resizeAll({width, height}: ResizeAllImagesParams) {\n\n const imageDir = '/files/images'\n let imageFilesStats = await fs.promises.readdir(imageDir, {\n withFileTypes: true\n })\n\n imageFilesStats = imageFilesStats.filter(file => file.isFile())\n\n const imageFiles = imageFilesStats.map(file => file.path)\n\n const widthDir = `${imageDir}/${width}`\n\n await FileManager.createDirIfNotExists(widthDir)\n\n for (const imageFile of imageFiles) {\n const resizedImageExists = await fs.promises.exists(`${widthDir}/${imageFile}`)\n if (!resizedImageExists) {\n await this.resize({filePath: `${imageDir}/${imageFile}`, width, height})\n }\n }\n\n \n }\n}\n","import { BaseFileManager } from '@/helpers/FileManager/BaseFileManager'\nimport { FileDownloader } from '../workers/FileDownloader'\nimport { ImageResizer } from '../workers/ImageResizer'\nimport debug from 'debug'\n\nconst logger = debug('app:browser:helpers:FileManager')\n\nclass FileManager extends BaseFileManager {\n static async readFileAsBuffer( filePath: string ): Promise<Buffer> {\n return new Promise(( resolve, reject ) => {\n reject(new Error('Not implemented'))\n })\n }\n\n static async getContentUrlFromPath( path: string ): Promise<string | undefined> {\n\n const fs = await import('@zenfs/core')\n\n const fileExists = await fs.promises.exists(\n path,\n )\n if ( fileExists ) {\n const fileContents = await fs.promises.readFile(\n path,\n )\n const fileHandler = new File([ fileContents ], path)\n return URL.createObjectURL(fileHandler)\n }\n }\n\n static async initializeFileSystem(): Promise<void> {\n\n const {WebAccess} = await import('@zenfs/dom')\n const {configureSingle} = await import('@zenfs/core')\n\n const handle = await navigator.storage.getDirectory()\n // await configure({\n // mounts: {\n // '/': {\n // backend: WebAccess,\n // handle,\n // },\n // },\n // disableUpdateOnRead: true,\n // onlySyncOnClose: true,\n // })\n await configureSingle({\n backend: WebAccess,\n handle,\n })\n }\n\n static async downloadAllFiles( {\n transactionIds,\n arweaveHost,\n excludedTransactions,\n }: DownloadAllFilesParams ): Promise<void> {\n const fileDownloader = new FileDownloader()\n await fileDownloader.downloadAll({ transactionIds, arweaveHost, excludedTransactions })\n }\n\n static async resizeImage( { filePath, width, height }: ResizeImageParams ): Promise<void> {\n const imageResizer = new ImageResizer()\n await imageResizer.resize({ filePath, width, height })\n }\n\n static async resizeAllImages( { width, height }: ResizeAllImagesParams ): Promise<void> {\n const imageResizer = new ImageResizer()\n await imageResizer.resizeAll({ width, height })\n }\n\n static async pathExists(filePath: string): Promise<boolean> {\n try {\n // Access the root directory of OPFS\n const root = await navigator.storage.getDirectory();\n \n // Split the path into segments\n const parts = filePath.split('/').filter(Boolean);\n let currentDir = root;\n\n // Traverse each part of the path\n for (let i = 0; i < parts.length; i++) {\n const part = parts[i];\n try {\n const handle = await currentDir.getDirectoryHandle(part, { create: false });\n currentDir = handle; // Move into the directory\n } catch (error) {\n try {\n // If it's not a directory, check if it's a file\n await currentDir.getFileHandle(part, { create: false });\n // If we successfully got a file handle and it's the last part, return true\n return i === parts.length - 1;\n } catch {\n // Neither a directory nor a file exists\n return false;\n }\n }\n }\n\n return true; // Directory exists\n } catch (error) {\n return false; // Any error means the path does not exist\n }\n }\n\n static async createDirIfNotExists(filePath: string): Promise<void> {\n if (!(await FileManager.pathExists(filePath))) {\n try {\n const fs = await import('@zenfs/core')\n await fs.promises.mkdir(filePath)\n } catch (error) {\n // This is a no-op. We tried to create a directory that already exists.\n console.log('Attempted to create a directory that already exists')\n }\n }\n }\n\n /**\n * Waits for a file to exist at the specified path.\n * @param {string} filePath - The path of the file to check.\n * @param {number} interval - The interval in milliseconds between checks (default: 500ms).\n * @param {number} timeout - The timeout in milliseconds to wait for the file to exist (default: 10s).\n * @returns {Promise<boolean>} - Resolves to true if the file exists within the timeout period, otherwise false.\n */\n static async waitForFile(filePath: string, interval: number = 1000, timeout: number = 60000): Promise<boolean> {\n\n const fs = await import('@zenfs/core')\n const fsNode = await import('node:fs')\n\n return new Promise((resolve, reject) => {\n const startTime = Date.now()\n \n let isBusy = false\n\n const cancelableInterval = new CancelableInterval(async (stop) => {\n logger('waitForFile', filePath)\n if (isBusy) {\n return\n }\n isBusy = true\n // TODO: Needs to read from OPFS\n if (fs.existsSync(filePath) && fsNode.existsSync(filePath)) {\n stop()\n resolve(true)\n }\n\n const pathExists = await this.pathExists(filePath)\n if (pathExists) {\n stop()\n resolve(true)\n }\n\n if (Date.now() - startTime >= timeout) {\n stop()\n reject(new Error('Timeout exceeded while waiting for file'))\n }\n isBusy = false\n }, interval)\n\n cancelableInterval.start()\n \n // const _interval = setInterval(async () => {\n // logger('waitForFile', filePath)\n // if (isBusy) {\n // return\n // }\n // isBusy = true\n // // TODO: Needs to read from OPFS\n // if (fs.existsSync(filePath) && fsNode.existsSync(filePath)) {\n // clearInterval(_interval)\n // resolve(true)\n // }\n\n // const pathExists = await this.pathExists(filePath)\n // if (pathExists) {\n // clearInterval(_interval)\n // resolve(true)\n // }\n\n // if (Date.now() - startTime >= timeout) {\n // clearInterval(_interval)\n // reject(new Error('Timeout exceeded while waiting for file'))\n // }\n // isBusy = false\n // }, interval)\n \n // retry(\n // {\n // times: Math.ceil(timeout / interval),\n // interval: interval,\n // },\n // (callback: Function) => {\n // if (fs.existsSync(filePath) && fsNode.existsSync(filePath)) {\n // return callback(null, true) // File exists, finish with success\n // }\n // if (Date.now() - startTime >= timeout) {\n // return callback(new Error('Timeout exceeded while waiting for file'))\n // }\n // callback(new Error('File does not exist yet')) // Retry with this error\n // },\n // (err: Error, result: boolean) => {\n // if (err) {\n // return resolve(false) // Resolve as false if timeout or error occurs\n // }\n // resolve(result) // Resolve as true if file exists\n // },\n // )\n })\n }\n\n static async saveFile(filePath: string, content: string | Blob | ArrayBuffer): Promise<void> {\n try {\n // Get a handle to the OPFS root directory\n const root = await navigator.storage.getDirectory();\n \n // Split the file path into directory and file name\n const pathParts = filePath.split('/');\n const fileName = pathParts.pop();\n if (!fileName) throw new Error('Invalid file path');\n\n // Traverse directories and create them if they don't exist\n let currentDir = root;\n for (const part of pathParts) {\n if (part !== '') {\n currentDir = await currentDir.getDirectoryHandle(part, { create: true });\n }\n }\n\n // Get the file handle and create the file if it doesn't exist\n const fileHandle = await currentDir.getFileHandle(fileName, { create: true });\n\n // Create a writable stream and write the content\n const writable = await fileHandle.createWritable();\n \n if (typeof content === 'string') {\n await writable.write(content);\n } else if (content instanceof Blob) {\n await writable.write(content);\n } else if (content instanceof ArrayBuffer) {\n await writable.write(new Blob([content]));\n } else {\n throw new Error('Unsupported content type');\n }\n\n await writable.close();\n console.log(`File written successfully: ${filePath}`);\n } catch (error) {\n console.error(`Error writing to OPFS: ${error.message}`);\n }\n }\n}\n\nBaseFileManager.setPlatformClass(FileManager)\n\ntype AsyncTask = (stop: () => void) => Promise<void>\n\n\nclass CancelableInterval {\n private intervalId: number | null = null;\n private currentTaskAbortController: AbortController | null = null;\n\n constructor(private task: AsyncTask, private interval: number) {}\n\n start() {\n this.intervalId = window.setInterval(async () => {\n if (this.currentTaskAbortController) {\n // Cancel the previous running task\n this.currentTaskAbortController.abort();\n }\n\n // Create a new abort controller for the current task\n this.currentTaskAbortController = new AbortController();\n const signal = this.currentTaskAbortController.signal;\n\n try {\n await this.taskWithCancellation(signal);\n } catch (error) {\n if (error instanceof DOMException && error.name === 'AbortError') {\n console.log('Previous task was canceled.');\n } else {\n console.error('Task error:', error);\n }\n this.stop()\n }\n }, this.interval);\n }\n\n private async taskWithCancellation(signal: AbortSignal) {\n await this.task(() => this.stop())\n if (signal.aborted) {\n throw new DOMException('Task was aborted', 'AbortError');\n }\n }\n\n stop() {\n if (this.intervalId !== null) {\n clearInterval(this.intervalId);\n this.intervalId = null;\n }\n if (this.currentTaskAbortController) {\n this.currentTaskAbortController.abort();\n }\n }\n}\n\n\nexport { FileManager }\n","import { EventObject, fromCallback } from 'xstate'\nimport { DbServiceContext, FromCallbackInput, SqliteWasmResult } from '@/types'\nimport {\n BROWSER_FS_TOP_DIR,\n DB_MIGRATING_SUCCESS,\n} from '@/services/internal/constants'\nimport debug from 'debug'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport fs from '@zenfs/core'\nimport { FileManager } from '@/browser/helpers/FileManager'\nimport { isBrowser } from '@/helpers/environment'\n\nconst logger = debug('app:services:db:actors:migrate')\n\n\n\nexport const migrate = fromCallback<\n EventObject,\n FromCallbackInput<DbServiceContext>\n>(({ sendBack, input: { context } }) => {\n const { pathToDbDir, dbId, dbName } = context\n\n logger('[db/actors] migrate context', context)\n\n let journalExists = false\n\n\n const _checkForFiles = async (): Promise<void> => {\n const journalPath = `/${pathToDbDir}/meta/_journal.json`\n\n journalExists = await fs.promises.exists(journalPath)\n\n if (!journalExists && isBrowser()) {\n await FileManager.waitForFile(journalPath, 500, 60000)\n }\n }\n\n const _migrate = async (): Promise<void> => {\n await BaseDb.migrate(pathToDbDir, dbName, dbId)\n }\n\n _checkForFiles()\n .then(() => {\n if (!isBrowser()) {\n return _migrate()\n }\n if (journalExists) {\n return _migrate()\n }\n })\n .then(() => {\n console.log('sending db migrating success')\n sendBack({ type: DB_MIGRATING_SUCCESS, dbName })\n })\n\n return () => { }\n})\n","import { EventObject, fromCallback } from 'xstate'\nimport { DbServiceContext, FromCallbackInput } from '@/types'\nimport { DB_WAITING_FOR_FILES_RECEIVED } from '@/services/internal/constants'\nimport debug from 'debug'\nimport fs from '@zenfs/core'\nimport { isBrowser } from '@/helpers/environment'\n\nconst logger = debug('app:services:db:actors:waitForFiles')\n\nexport const waitForFiles = fromCallback<\n EventObject,\n FromCallbackInput<DbServiceContext>\n>(({ sendBack, input: { context } }) => {\n\n if (!isBrowser()) {\n sendBack({ type: DB_WAITING_FOR_FILES_RECEIVED })\n return\n }\n\n const { pathToDbDir } = context\n\n const _waitForFiles = async (): Promise<void> => {\n return new Promise((resolve) => {\n const interval = setInterval(async () => {\n const journalExists = await fs.promises.exists(\n `${pathToDbDir}/meta/_journal.json`,\n )\n if (journalExists) {\n clearInterval(interval)\n resolve()\n }\n }, 1000)\n })\n }\n\n _waitForFiles().then(() => {\n sendBack({ type: DB_WAITING_FOR_FILES_RECEIVED })\n return\n })\n})\n","import { assign, setup } from 'xstate'\nimport {\n DB_CHECK_STATUS_EXISTS,\n DB_CHECK_STATUS_UPDATE_PATHS,\n DB_CREATING_SUCCESS,\n DB_MIGRATING_SUCCESS,\n DB_MIGRATING_WAIT,\n DB_VALIDATING_SUCCESS,\n DB_VALIDATING_WAIT,\n DB_WAITING_FOR_FILES_RECEIVED,\n DbState,\n MachineIds,\n} from '../internal/constants'\nimport debug from 'debug'\nimport { DbServiceContext } from '@/types'\nimport { checkStatus } from '@/services/db/actors/checkStatus'\nimport { connectToDb } from '@/services/db/actors/connectToDb'\nimport { validate } from '@/services/db/actors/validate'\nimport { migrate } from '@/services/db/actors/migrate'\nimport { waitForFiles } from './actors/waitForFiles'\n\nconst logger = debug('app:services:db:machine')\n\nconst {\n CHECKING_STATUS,\n VALIDATING,\n WAITING_FOR_FILES,\n CONNECTING_TO_DB,\n MIGRATING,\n} = DbState\n\nconst dbMachine = setup({\n types: {\n context: {} as Partial<DbServiceContext>,\n input: {} as Partial<DbServiceContext> | undefined,\n },\n actors: {\n checkStatus,\n validate,\n connectToDb,\n migrate,\n waitForFiles,\n },\n}).createMachine({\n id: MachineIds.DB,\n initial: CHECKING_STATUS,\n context: ({ input }) => input as DbServiceContext,\n on: {\n [DB_WAITING_FOR_FILES_RECEIVED]: {\n actions: assign({\n hasFiles: ({ event }) => {\n logger('[db/machine] DB_WAITING_FOR_FILES_RECEIVED event:', event)\n return true\n },\n }),\n },\n updateHasFiles: {\n target: `.${CHECKING_STATUS}`,\n actions: assign({\n hasFiles: ({ context, event }) => {\n logger('[db/machine] updateHasFiles event:', event)\n logger('[db/machine] updateHasFiles context:', context)\n return event.hasFiles\n },\n }),\n },\n },\n // always: {\n // target: `.${CHECKING_STATUS}`,\n // guard: ({ context, event }) => context.hasFiles && event.type === 'updateHasFiles',\n // },\n states: {\n idle: {\n on: {\n start: CHECKING_STATUS,\n },\n meta: {\n displayText: 'DB starting ...',\n percentComplete: 0,\n },\n },\n [CHECKING_STATUS]: {\n on: {\n [DB_CHECK_STATUS_UPDATE_PATHS]: {\n actions: assign({\n pathToDb: ({ event }) => event.pathToDb,\n pathToDir: ({ event }) => event.pathToDir,\n pathToDbDir: ({ event }) => event.pathToDbDir,\n }),\n },\n [DB_CHECK_STATUS_EXISTS]: CONNECTING_TO_DB,\n },\n invoke: {\n src: 'checkStatus',\n input: ({ context, event }) => ({ context, event }),\n },\n meta: {\n displayText: 'Checking DB status',\n percentComplete: 60,\n },\n },\n [CONNECTING_TO_DB]: {\n on: {\n [DB_CREATING_SUCCESS]: {\n target: VALIDATING,\n actions: assign({\n dbId: ({ event }) => event.dbId,\n }),\n },\n },\n invoke: {\n src: 'connectToDb',\n input: ({ context }) => ({ context }),\n },\n meta: {\n displayText: 'Connecting to local DB',\n percentComplete: 70,\n },\n },\n [VALIDATING]: {\n on: {\n [DB_VALIDATING_SUCCESS]: {\n target: MIGRATING,\n // guard: ({ context }) => context.hasFiles,\n },\n [DB_VALIDATING_WAIT]: {\n target: WAITING_FOR_FILES,\n // guard: ({ context }) => !context.hasFiles,\n },\n },\n invoke: {\n src: 'validate',\n input: ({ context }) => ({ context }),\n },\n meta: {\n displayText: 'Validating DB',\n percentComplete: 80,\n },\n },\n // Here we're waiting for migration and schema files to be downloaded\n [WAITING_FOR_FILES]: {\n on: {\n [DB_WAITING_FOR_FILES_RECEIVED]: {\n target: MIGRATING,\n actions: assign({\n hasFiles: true,\n }),\n },\n [DB_MIGRATING_SUCCESS]: 'ready',\n },\n invoke: {\n src: 'waitForFiles',\n input: ({ context }) => ({ context }),\n },\n },\n [MIGRATING]: {\n on: {\n [DB_MIGRATING_WAIT]: WAITING_FOR_FILES,\n [DB_MIGRATING_SUCCESS]: {\n target: 'ready',\n },\n },\n invoke: {\n src: 'migrate',\n input: ({ context }) => ({ context }),\n },\n meta: {\n displayText: 'Migrating DB',\n percentComplete: 90,\n },\n },\n ready: {\n target: 'idle',\n meta: {\n displayText: 'Wrapping up the db ...',\n percentComplete: 100,\n },\n },\n },\n})\n\nexport { dbMachine }\n","import { EventObject, fromCallback } from 'xstate'\nimport { INTERNAL_VALIDATING_INPUT_SUCCESS, ARWEAVE_HOST } from '@/services/internal/constants'\nimport { FromCallbackInput, InternalMachineContext } from '@/types'\nimport { isBrowser, isNode } from '@/helpers/environment'\n\nexport const validateInput = fromCallback<\n EventObject,\n FromCallbackInput<InternalMachineContext>\n>(\n ({ sendBack, input: { context } }) => {\n\n const { endpoints, addresses, arweaveDomain } = context\n let { filesDir } = context\n\n if (!endpoints || !endpoints.filePaths || !endpoints.files) {\n throw new Error('validateInput called with invalid endpoints')\n }\n\n if (!filesDir) {\n if (isBrowser()) {\n filesDir = '/'\n }\n\n if (!isBrowser()) {\n throw new Error('validateInput called with invalid filesDir')\n }\n }\n\n const _validateInput = async (): Promise<void> => {\n sendBack({\n type: INTERNAL_VALIDATING_INPUT_SUCCESS,\n endpoints,\n addresses,\n filesDir,\n arweaveDomain: arweaveDomain || ARWEAVE_HOST,\n })\n }\n\n _validateInput().then(() => {\n return\n })\n },\n)\n","import { BaseDb } from '@/db/Db/BaseDb'\nimport { InternalMachineContext } from '@/types'\nimport { FromCallbackInput } from '@/types'\nimport { EventObject, fromCallback } from 'xstate'\n\n\nexport const prepareDb = fromCallback<\n EventObject,\n FromCallbackInput<InternalMachineContext>\n>(({ sendBack, input: { context } }) => {\n const { filesDir } = context\n\n if (!filesDir) {\n throw new Error('filesDir is required')\n }\n\n const _prepareDb = async (): Promise<void> => {\n const appDb = await BaseDb.prepareDb(filesDir)\n if (appDb) {\n sendBack({ type: 'prepareDbSuccess'})\n }\n\n }\n\n _prepareDb().then(() => {\n return\n })\n\n})\n","import fs from '@zenfs/core'\nimport path from 'path'\nimport { Endpoints } from '@/types'\nimport { BROWSER_FS_TOP_DIR } from '@/services/internal/constants'\nimport debug from 'debug'\nimport { BaseFileManager } from '@/helpers/FileManager/BaseFileManager'\n\nconst logger = debug('app:services:internal:helpers')\n\n/**\n * Recursively create directories if they don't exist.\n * @param {string} dirPath - The directory path to create.\n */\nexport const createDirectories = async (dirPath: string) => {\n const dirPathExists = await BaseFileManager.pathExists(dirPath)\n if (dirPathExists) {\n return\n }\n\n const parentDir = path.dirname(dirPath)\n let parentDirExists = await BaseFileManager.pathExists(parentDir)\n if (!parentDirExists) {\n await createDirectories(parentDir)\n }\n\n parentDirExists = await BaseFileManager.pathExists(parentDir)\n if (parentDirExists) {\n await BaseFileManager.createDirIfNotExists(dirPath)\n }\n}\n\n// export const downloadFile = async (url: string, localFilePath: string) => {\n// try {\n// const response = await fetch(url)\n// const fileData = await response.text().catch((error) => {\n// console.error(`Failed to parse text from ${url}:`, error)\n// })\n// if (!fileData) {\n// console.error(`No file data from ${url}`)\n// return\n// }\n// const localDirPath = path.dirname(localFilePath)\n\n// if (busy) {\n// return\n// }\n\n// busy = true\n\n// await createDirectories(localDirPath)\n\n// const filename = path.basename(localFilePath)\n\n// const regex = /(\\d+)[\\w_]+\\.(sql|json)$/\n\n// const match = filename.match(regex)\n\n// let migrationNumber\n\n// if (match && match.length > 1) {\n// migrationNumber = match[1]\n// }\n\n// if (migrationNumber) {\n// const filesInDir = await fs.promises.readdir(localDirPath)\n// for (const file of filesInDir) {\n// if (file === filename) {\n// continue\n// }\n// const innerMatch = file.match(regex)\n// let existingFileMigrationNumber\n// if (innerMatch && innerMatch.length > 1) {\n// existingFileMigrationNumber = innerMatch[1]\n// }\n// if (\n// migrationNumber &&\n// existingFileMigrationNumber &&\n// existingFileMigrationNumber === migrationNumber\n// ) {\n// await fs.promises.unlink(path.join(localDirPath, file))\n// }\n// }\n// }\n\n// try {\n\n// await fs.promises.writeFile(localFilePath, fileData)\n// logger(`[downloadFile] Wrote file async to ${localFilePath}`)\n// } catch (error) {\n// fs.writeFileSync(localFilePath, fileData)\n// logger(`[downloadFile] Wrote file sync to ${localFilePath}`)\n// }\n// } catch (error) {\n// logger(`[Error] Failed to download file from ${url}:`, error)\n// }\n\n// busy = false\n// }\n\ntype DownloadFunction = (fileUrl: string) => Promise<void>;\n\nclass FileDownloadManager {\n private filesToDownload: Map<string, number>;\n private maxRetries: number;\n private isDownloading: boolean = false;\n\n constructor(fileUrls: string[], maxRetries: number) {\n this.filesToDownload = new Map(fileUrls.map(url => [url, 0]));\n this.maxRetries = maxRetries;\n }\n\n async downloadFile(url: string, localFilePath: string): Promise<void> {\n const response = await fetch(url)\n const fileData = await response.text().catch((error) => {\n console.error(`Failed to parse text from ${url}:`, error)\n })\n if (!fileData) {\n console.error(`No file data from ${url}`)\n return\n }\n const localDirPath = path.dirname(localFilePath)\n \n await createDirectories(localDirPath)\n \n const filename = path.basename(localFilePath)\n \n const regex = /(\\d+)[\\w_]+\\.(sql|json)$/\n \n const match = filename.match(regex)\n \n let migrationNumber\n \n if (match && match.length > 1) {\n migrationNumber = match[1]\n }\n \n if (migrationNumber) {\n const filesInDir = await fs.promises.readdir(localDirPath)\n for (const file of filesInDir) {\n if (file === filename) {\n continue\n }\n const innerMatch = file.match(regex)\n let existingFileMigrationNumber\n if (innerMatch && innerMatch.length > 1) {\n existingFileMigrationNumber = innerMatch[1]\n }\n if (\n migrationNumber &&\n existingFileMigrationNumber &&\n existingFileMigrationNumber === migrationNumber\n ) {\n await fs.promises.unlink(path.join(localDirPath, file))\n }\n }\n }\n \n try {\n \n await fs.promises.writeFile(localFilePath, fileData)\n logger(`[downloadFile] Wrote file async to ${localFilePath}`)\n } catch (error) {\n fs.writeFileSync(localFilePath, fileData)\n logger(`[downloadFile] Wrote file sync to ${localFilePath}`)\n }\n \n }\n\n async start(): Promise<void> {\n if (this.isDownloading) {\n console.warn(\"Download process is already running.\");\n return;\n }\n\n this.isDownloading = true;\n\n for (const [fileUrl, attempts] of this.filesToDownload.entries()) {\n let success = false;\n\n while (attempts < this.maxRetries) {\n try {\n console.log(`Starting download: ${fileUrl}`);\n await this.downloadFile(fileUrl, fileUrl);\n console.log(`Download successful: ${fileUrl}`);\n this.filesToDownload.delete(fileUrl);\n success = true;\n break; // Move to next file\n } catch (error) {\n console.error(`Error downloading ${fileUrl}:`, error);\n this.filesToDownload.set(fileUrl, attempts + 1);\n }\n }\n\n if (!success) {\n console.error(`Failed to download after ${this.maxRetries} attempts: ${fileUrl}`);\n }\n }\n\n this.isDownloading = false;\n console.log(\"All downloads completed.\");\n }\n\n addFile(fileUrl: string): void {\n if (!this.filesToDownload.has(fileUrl)) {\n this.filesToDownload.set(fileUrl, 0);\n console.log(`Added file to download queue: ${fileUrl}`);\n } else {\n console.warn(`File already in queue: ${fileUrl}`);\n }\n }\n\n getPendingFiles(): string[] {\n return Array.from(this.filesToDownload.keys());\n }\n\n clear(): void {\n this.filesToDownload.clear();\n console.log(\"Cleared all files from the download queue.\");\n }\n}\n\n\nexport const fetchDirectory = async (url: string) => {\n const response = await fetch(url)\n return response.json()\n}\n\n// export const fetchFilesRecursively = async (\n// url: string,\n// localPath: string,\n// fileList: string[],\n// ) => {\n// for (const file of fileList) {\n// try {\n// const fileUrl = `${url}/${file}`\n// const fileLocalPath = path.join(localPath, file)\n\n// // logger(`[fetchFilesRecursively] fileUrl: ${fileUrl}`)\n// // logger(`[fetchFilesRecursively] fileLocalPath: ${fileLocalPath}`)\n\n// await downloadFile(fileUrl, fileLocalPath)\n// } catch (error) {\n// console.error(`Failed to fetch files from ${url}:`, error)\n// }\n// }\n// }\n\nexport const confirmFilesExist = async (filePaths: string[]) => {\n let everythingDownloaded = false\n\n for (const filePath of filePaths) {\n everythingDownloaded = await fs.promises.exists(filePath)\n }\n\n if (!everythingDownloaded) {\n setTimeout(async () => {\n await confirmFilesExist(filePaths)\n }, 500)\n }\n}\n\nconst filesToExclude = ['.DS_Store']\n\nexport const syncDbFiles = async ({ filePaths, files }: Endpoints) => {\n let fileList = await fetchDirectory(filePaths)\n fileList = fileList.filter((file: string) => !filesToExclude.includes(file))\n fileList = fileList.map((file: string) => `${files}/${file}`)\n const downloadManager = new FileDownloadManager(fileList, 5)\n await downloadManager.start()\n // await fetchFilesRecursively(files, BROWSER_FS_TOP_DIR, fileList)\n await confirmFilesExist(fileList)\n logger('[syncDbFiles] Files synced!')\n}\n","import { graphql } from '@/graphql/gql'\n\nexport const GET_FILES_METADATA = graphql(/* GraphQL */ `\n query GetFilesMetadata($where: AttestationWhereInput!) {\n filesMetadata: attestations(\n where: $where\n orderBy: [{ timeCreated: desc }]\n ) {\n ...attestationFields\n }\n }\n`)\n\nexport const GET_ARWEAVE_TRANSACTIONS = graphql(/* GraphQL */ `\n query GetArweaveTransactions(\n $owners: [String!]\n $first: Int\n $after: String\n ) {\n transactions(owners: $owners, first: $first, after: $after) {\n edges {\n cursor\n node {\n id\n anchor\n signature\n block {\n id\n height\n }\n data {\n size\n type\n }\n tags {\n name\n value\n }\n }\n }\n pageInfo {\n hasNextPage\n }\n }\n }\n`)\n","import { BaseDb } from '@/db/Db/BaseDb'\nimport { and, eq, SQL } from 'drizzle-orm'\nimport { metadata, MetadataType } from '@/seedSchema'\n\ntype GetMetadataProps =\n | {\n storageTransactionId?: string\n }\n | undefined\n\ntype GetMetadata = (\n props: GetMetadataProps,\n) => Promise<MetadataType | undefined>\n\nexport const getMetadata: GetMetadata = async (props) => {\n const appDb = BaseDb.getAppDb()\n\n let storageTransactionId: string | undefined\n if (props) {\n storageTransactionId = props.storageTransactionId\n }\n\n const whereClauses: SQL[] = []\n\n if (storageTransactionId) {\n whereClauses.push(eq(metadata.propertyName, 'storageTransactionId'))\n whereClauses.push(eq(metadata.propertyValue, storageTransactionId))\n }\n\n const metadataRows = await appDb\n .select()\n .from(metadata)\n .where(and(...whereClauses))\n\n if (!metadataRows || metadataRows.length === 0) {\n return\n }\n\n return metadataRows[0]\n}\n","import { metadata, MetadataType } from '@/seedSchema'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { eq } from 'drizzle-orm'\n\nexport const saveMetadata = async (\n metadataRecord: Partial<MetadataType>,\n metadataValues: Partial<MetadataType>,\n) => {\n const appDb = BaseDb.getAppDb()\n\n await appDb\n .update(metadata)\n .set({\n ...metadataValues,\n updatedAt: Date.now(),\n })\n .where(eq(metadata.localId, metadataRecord.localId))\n}\n","import { graphql } from '@/graphql/gql'\nimport { TypedDocumentNode } from '@graphql-typed-document-node/core'\nimport { Tag } from '@/graphql/gql/graphql'\n\nexport const GET_TRANSACTION_TAGS = graphql(/* GraphQL */ `\n query GetTransactionTags($transactionId: ID!) {\n tags: transaction(id: $transactionId) {\n id\n tags {\n name\n value\n }\n }\n }\n`) as TypedDocumentNode<{ tags: Tag[] }>\n","import { ARWEAVE_HOST } from '@/services/internal/constants'\nimport { BaseArweaveClient } from './BaseArweaveClient'\nimport Arweave from 'arweave'\nimport { isBrowser } from '../environment'\n\nlet ArweaveClient: typeof BaseArweaveClient | undefined\n\nexport const initArweaveClient = async () => {\n if (isBrowser()) {\n ArweaveClient = (await import('../../browser/helpers/ArweaveClient')).ArweaveClient\n }\n\n if (!isBrowser()) {\n ArweaveClient = (await import('../../node/helpers/ArweaveClient')).ArweaveClient\n }\n}\n\n\nlet domain = 'arweave.net'\n\nexport const getArweave = (): Arweave | undefined => {\n if (\n typeof window === 'undefined' ||\n !Arweave ||\n (!Object.keys(Arweave).includes('init') &&\n !Object.keys(Arweave).includes('default'))\n ) {\n return\n }\n\n if (process.env.NODE_ENV === 'production') {\n if (Object.keys(Arweave).includes('default')) {\n return Arweave.default.init({\n host: ARWEAVE_HOST,\n protocol: 'https',\n })\n }\n\n return Arweave.init({\n host: ARWEAVE_HOST,\n protocol: 'https',\n })\n }\n\n // return Arweave.init({\n // host : 'localhost',\n // port : 1984,\n // protocol : 'http',\n // },)\n\n if (Object.keys(Arweave).includes('default')) {\n return Arweave.default.init({\n host: domain,\n protocol: 'https',\n })\n }\n\n return Arweave.init({\n host: domain,\n protocol: 'https',\n })\n}\n\nexport const setArweaveDomain = (newDomain: string): void => {\n domain = newDomain\n}\n\nexport { ArweaveClient }","import { syncDbFiles } from '@/services/internal/helpers'\nimport { eventEmitter } from '@/eventBus'\nimport fs from '@zenfs/core'\nimport { ARWEAVE_HOST } from '@/services/internal/constants'\nimport { appState } from '@/seedSchema'\nimport { eq } from 'drizzle-orm'\nimport { getAddressesFromDb } from '@/helpers/db'\nimport {\n BaseFileManager,\n} from '@/helpers'\nimport { GET_FILES_METADATA } from '@/schema/file/queries'\nimport debug from 'debug'\nimport { getGlobalService } from '@/services'\nimport { waitFor } from 'xstate'\nimport { getMetadata } from '@/db/read/getMetadata'\nimport { saveMetadata } from '@/db/write/saveMetadata'\nimport { GET_TRANSACTION_TAGS } from '@/helpers/ArweaveClient/queries'\nimport { saveAppState } from '@/db/write/saveAppState'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { BaseEasClient, BaseQueryClient, BaseArweaveClient } from '@/helpers'\nimport { getArweave } from '@/helpers/ArweaveClient'\nimport { isBrowser } from '@/helpers/environment'\n\n\nconst logger = debug('app:files:download')\n\n\nexport const downloadAllFilesRequestHandler = async ({\n endpoints,\n eventId,\n}) => {\n\n if (!isBrowser()) {\n return\n }\n\n await syncDbFiles(endpoints)\n\n eventEmitter.emit('fs.downloadAll.success', { eventId })\n eventEmitter.emit('fs.downloadAllBinary.request', { endpoints })\n}\n\nexport const downloadAllFilesBinaryRequestHandler = async () => {\n let addresses: string[] | undefined\n\n if (BaseDb.isAppDbReady()) {\n addresses = await getAddressesFromDb()\n }\n\n if (!BaseDb.isAppDbReady()) {\n const globalService = getGlobalService()\n const internalService = globalService.getSnapshot().context.internalService\n if (internalService) {\n await waitFor(internalService, (snapshot) => {\n return snapshot.value === 'ready'\n })\n addresses = await getAddressesFromDb()\n }\n }\n\n if (!addresses || addresses.length === 0) {\n return\n }\n\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n const { filesMetadata } = await queryClient.fetchQuery({\n queryKey: ['getFilesMetadata', ...addresses],\n queryFn: async () =>\n easClient.request(GET_FILES_METADATA, {\n where: {\n attester: {\n in: addresses,\n },\n schema: {\n is: {\n id: {\n equals:\n '0x55fdefb36fcbbaebeb7d6b41dc3a1a9666e4e42154267c889de064faa7ede517',\n },\n },\n },\n },\n }),\n })\n\n await BaseFileManager.createDirIfNotExists('/files')\n await BaseFileManager.createDirIfNotExists('/files/html')\n await BaseFileManager.createDirIfNotExists('/files/json')\n await BaseFileManager.createDirIfNotExists('/files/images')\n\n const appDb = BaseDb.getAppDb()\n\n if (!appDb) {\n console.warn('[fetchAll/actors] [fetchAllBinaryData] seedDb not available')\n return []\n }\n\n const excludedTransactionsQuery = await appDb\n .select()\n .from(appState)\n .where(eq(appState.key, 'excludedTransactions'))\n\n let excludedTransactions = new Set<string>()\n\n if (excludedTransactionsQuery && excludedTransactionsQuery.length === 1) {\n const valueString = excludedTransactionsQuery[0].value\n if (valueString) {\n const excludedTransactionsArray = JSON.parse(valueString)\n excludedTransactions = new Set(excludedTransactionsArray)\n }\n }\n\n const transactionIds = []\n\n for (const fileMetadata of filesMetadata) {\n const json = JSON.parse(fileMetadata.decodedDataJson)\n const transactionId = json[0].value.value\n if (excludedTransactions.has(transactionId)) {\n continue\n }\n transactionIds.push(transactionId)\n }\n\n const arweave = getArweave()\n\n if (!arweave) {\n console.warn(\n '[fetchAll/actors] [fetchAllBinaryData] arweave not available',\n )\n return []\n }\n\n const arweaveClient = BaseArweaveClient.getArweaveClient()\n\n const transactionIdsToDownload = []\n\n for (const transactionId of transactionIds) {\n\n try {\n const res = await fetch(\n `https://${ARWEAVE_HOST}/tx/${transactionId}/status`,\n )\n\n if (res.status !== 200) {\n logger(\n `[fetchAll/actors] [fetchAllBinaryData] error fetching transaction data for ${transactionId}`,\n )\n\n excludedTransactions.add(transactionId)\n\n await saveAppState(\n 'excludedTransactions',\n JSON.stringify(Array.from(excludedTransactions)),\n )\n\n continue\n }\n \n const { tags: tagsResult } = await queryClient.fetchQuery({\n queryKey: ['getTransactionTags', transactionId],\n queryFn: async () =>\n arweaveClient.request(GET_TRANSACTION_TAGS, {\n transactionId,\n }),\n })\n\n const tags = tagsResult.tags || []\n\n if (tagsResult.tags && tagsResult.tags.length > 0) {\n for (const { name, value } of tags) {\n if (name === 'Content-SHA-256') {\n const metadataRecord = await getMetadata({\n storageTransactionId: transactionId,\n })\n\n if (metadataRecord) {\n await saveMetadata(metadataRecord, {\n contentHash: value,\n })\n }\n }\n }\n }\n\n transactionIdsToDownload.push(transactionId)\n\n \n\n } catch (error) {\n logger(error)\n }\n }\n\n console.log('[download] Calling downloadAllFiles with transactionIdsToDownload', transactionIdsToDownload)\n\n await BaseFileManager.downloadAllFiles({\n transactionIds: transactionIdsToDownload,\n arweaveHost: ARWEAVE_HOST,\n excludedTransactions,\n })\n\n await BaseFileManager.resizeAllImages({\n width: 480,\n height: 480,\n })\n}\n","import { eventEmitter } from '@/eventBus'\nimport { downloadAllFilesBinaryRequestHandler, downloadAllFilesRequestHandler } from './download'\nimport { BaseFileManager } from '@/helpers'\n\n\nlet isInitialized = false\n\n\nconst fsInitHandler = async ( _ ) => {\n if ( isInitialized ) {\n eventEmitter.emit('fs.init.response', { success: true })\n return\n }\n\n try {\n\n await BaseFileManager.initializeFileSystem()\n\n isInitialized = true\n\n eventEmitter.emit('fs.init.response', { success: true })\n } catch ( e ) {\n if ( !isInitialized ) {\n console.error('[fs.init] error initializing fs', e)\n eventEmitter.emit('fs.init.response', {\n success: false,\n error: e,\n })\n }\n // TODO: We can ignore this for now but should figure out if this is being called excessively\n }\n}\n\nlet areReady = false\n\nexport const setupFsListeners = () => {\n eventEmitter.addListener(\n 'fs.downloadAll.request',\n downloadAllFilesRequestHandler,\n )\n eventEmitter.addListener(\n 'fs.downloadAllBinary.request',\n downloadAllFilesBinaryRequestHandler,\n )\n eventEmitter.addListener('fs.init', fsInitHandler)\n areReady = true\n}\n\nexport const areFsListenersReady = () => {\n return areReady\n}\n\nexport const isFsInitialized = () => {\n return isInitialized\n}\n","import { EventObject, fromCallback } from 'xstate'\nimport { areFsListenersReady, isFsInitialized } from '@/events/files'\nimport { waitForEvent } from '@/events'\nimport {\n BROWSER_FS_TOP_DIR,\n DB_WAITING_FOR_FILES_RECEIVED,\n INTERNAL_CONFIGURING_FS_SUCCESS,\n} from '@/services/internal/constants'\nimport fs from '@zenfs/core'\nimport debug from 'debug'\nimport { FromCallbackInput, InternalMachineContext } from '@/types'\nimport { isBrowser } from '@/helpers/environment'\n\nconst logger = debug('app:internal:actors:configureFs')\n\nexport const configureFs = fromCallback<\n EventObject,\n FromCallbackInput<InternalMachineContext>\n>(({ sendBack, input: { context } }) => {\n const { endpoints, appDbService, filesDir, } = context\n\n logger('[internal/actors] [configureFs] Configuring FS')\n\n const _configureFs = async (): Promise<boolean> => {\n logger('[internal/actors] [configureFs] calling _configureFs')\n\n logger(\n '[internal/actors] [configureFs] areFsListenersReady:',\n areFsListenersReady(),\n )\n logger(\n '[internal/actors] [configureFs] isFsInitialized:',\n isFsInitialized(),\n )\n\n if (isBrowser()) {\n await waitForEvent({\n req: {\n eventLabel: 'fs.downloadAll.request',\n data: { endpoints },\n },\n res: {\n eventLabel: 'fs.downloadAll.success',\n },\n })\n }\n\n\n const journalPath = `${filesDir || BROWSER_FS_TOP_DIR}/db/meta/_journal.json`\n\n\n let journalExists = await fs.promises.exists(journalPath)\n\n if (!journalExists) {\n journalExists = fs.existsSync(journalPath)\n }\n\n if (journalExists) {\n appDbService.send({ type: DB_WAITING_FOR_FILES_RECEIVED })\n logger('[internal/actors] [configureFs] fs configured!')\n return true\n }\n\n sendBack({ type: 'shouldWaitForFiles' })\n \n\n return false\n\n // return new Promise<void>((resolve) => {\n // const interval = setInterval(() => {\n // journalExistsSync = fs.existsSync(journalPath)\n // logger(\n // '[internal/actors] [configureFs] journalExistsSync:',\n // journalExistsSync,\n // )\n // if (journalExistsSync) {\n // service.send({ type: DB_WAITING_FOR_FILES_RECEIVED })\n // clearInterval(interval)\n // resolve()\n // }\n // }, 200)\n // })\n\n }\n\n // Some of our dependencies use fs sync functions, which don't work with\n // OPFS. ZenFS creates an async cache of all files so that the sync functions\n // work, but we have to wait for it to be built. Otherwise things like\n // drizzleMigrate will fail since they can't see the migration files yet.\n _configureFs().then((fsConfigured) => {\n if (fsConfigured) {\n sendBack({ type: INTERNAL_CONFIGURING_FS_SUCCESS })\n }\n return\n })\n\n return () => { }\n})\n","import { EventObject, fromCallback } from 'xstate'\nimport { INTERNAL_SAVING_CONFIG_SUCCESS } from '@/services/internal/constants'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { FromCallbackInput, InternalMachineContext } from '@/types'\nimport { appState } from '@/seedSchema'\nimport debug from 'debug'\nimport { getTableColumns, sql } from 'drizzle-orm'\nimport { getTableConfig } from 'drizzle-orm/sqlite-core'\n\nconst logger = debug('app:services:internal:actors:saveConfig')\n\nexport const saveConfig = fromCallback<\n EventObject,\n FromCallbackInput<InternalMachineContext>\n>(({ sendBack, input: { context } }) => {\n\n const { endpoints, addresses, arweaveDomain } = context\n\n if (!endpoints) {\n throw new Error('saveConfig called with invalid endpoints')\n }\n\n const _saveConfig = async (): Promise<void> => {\n // logger('[sdk] [internal/actors] starting _saveConfig')\n const appDb = BaseDb.getAppDb()\n\n if (!appDb) {\n throw new Error('App DB not found')\n }\n const endpointsValueString = JSON.stringify(endpoints)\n const addressesValueString = JSON.stringify(addresses)\n\n const tableColumns = getTableColumns(appState)\n\n logger('tableColumns', tableColumns)\n\n const {\n columns,\n indexes,\n foreignKeys,\n checks,\n primaryKeys,\n name,\n } = getTableConfig(appState);\n\n logger('columns', columns)\n logger('indexes', indexes)\n logger('foreignKeys', foreignKeys)\n logger('checks', checks)\n logger('primaryKeys', primaryKeys)\n logger('name', name)\n\n logger('calling select on db')\n\n const queryResult = await appDb.select().from(appState)\n\n logger('queryResult', queryResult)\n\n // TODO: Figure out how to define on conflict with multiple rows added\n await appDb\n .insert(appState)\n .values({\n key: 'endpoints',\n value: endpointsValueString,\n })\n .onConflictDoUpdate({\n target: appState.key,\n set: {\n value: endpointsValueString,\n },\n })\n // logger('[sdk] [internal/actors] Saving addresses to db')\n await appDb\n .insert(appState)\n .values({\n key: 'addresses',\n value: addressesValueString,\n })\n .onConflictDoUpdate({\n target: appState.key,\n set: {\n value: addressesValueString,\n },\n })\n await appDb\n .insert(appState)\n .values({\n key: 'arweaveDomain',\n value: arweaveDomain || 'arweave.net',\n })\n .onConflictDoUpdate({\n target: appState.key,\n set: {\n value: arweaveDomain || 'arweave.net',\n },\n })\n logger('[sdk] [internal/actors] Should be done saving')\n }\n\n _saveConfig().then(() => {\n logger('[sdk] [internal/actors] Successfully saved config')\n return sendBack({ type: INTERNAL_SAVING_CONFIG_SUCCESS })\n })\n\n return () => { }\n})\n","import { EventObject, fromCallback, Subscription } from 'xstate'\nimport {\n DB_NAME_APP,\n DB_ON_SNAPSHOT,\n INTERNAL_LOADING_APP_DB_SUCCESS,\n} from '@/services/internal/constants'\nimport debug from 'debug'\nimport { FromCallbackInput, InternalMachineContext } from '@/types'\n\nconst logger = debug('app:services:internal:actors:loadAppDb')\n\nexport const loadAppDb = fromCallback<\n EventObject,\n FromCallbackInput<InternalMachineContext>\n>(({ sendBack, input: { context } }) => {\n const { appDbService } = context\n\n let subscription: Subscription | undefined\n\n const _loadAppDb = async (): Promise<void> => {\n if (appDbService.getSnapshot().value === 'ready') {\n return\n }\n return new Promise((resolve) => {\n subscription = appDbService.subscribe((snapshot) => {\n if (snapshot.value === 'ready') {\n return resolve()\n }\n\n sendBack({ type: DB_ON_SNAPSHOT, dbName: DB_NAME_APP, snapshot })\n })\n })\n }\n\n _loadAppDb().then(() => {\n sendBack({ type: INTERNAL_LOADING_APP_DB_SUCCESS })\n })\n\n return () => {\n if (subscription) {\n subscription.unsubscribe()\n }\n }\n})\n","import { EventObject, fromCallback } from 'xstate'\nimport { FromCallbackInput, InternalMachineContext } from '@/types'\nimport debug from 'debug'\nimport fs from '@zenfs/core'\nimport { isBrowser } from '@/helpers/environment'\n\nconst logger = debug('app:services:internal:actors:waitForFiles')\n\nexport const waitForFiles = fromCallback<\n EventObject,\n FromCallbackInput<InternalMachineContext>\n>(({ sendBack, input: { context } }) => {\n\n if (!isBrowser()) {\n sendBack({ type: 'filesReceived' })\n return\n }\n\n const { endpoints } = context\n\n const filesDir = endpoints.files\n\n const _waitForFiles = async (): Promise<void> => {\n return new Promise((resolve) => {\n const interval = setInterval(async () => {\n const journalExists = await fs.promises.exists(\n `${filesDir}/db/meta/_journal.json`,\n )\n if (journalExists) {\n clearInterval(interval)\n resolve()\n }\n }, 1000)\n })\n }\n\n _waitForFiles().then(() => {\n sendBack({ type: 'filesReceived' })\n return\n })\n})\n","import { assign, setup } from 'xstate'\nimport { createBrowserInspector } from '@statelyai/inspect'\nimport {\n DB_NAME_APP,\n INTERNAL_CONFIGURING_FS_SUCCESS,\n INTERNAL_LOADING_APP_DB_SUCCESS,\n INTERNAL_SAVING_CONFIG_SUCCESS,\n INTERNAL_VALIDATING_INPUT_SUCCESS,\n InternalState,\n MachineIds,\n} from './constants'\nimport { dbMachine } from '@/services/db/dbMachine'\nimport debug from 'debug'\nimport { validateInput } from '@/services/internal/actors/validateInput'\nimport { prepareDb } from '@/services/internal/actors/prepareDb'\nimport { configureFs } from '@/services/internal/actors/configureFs'\nimport { saveConfig } from '@/services/internal/actors/saveConfig'\nimport { loadAppDb } from '@/services/internal/actors/loadAppDb'\nimport { InternalMachineContext } from '@/types'\nimport { waitForFiles } from './actors/waitForFiles'\n\nconst logger = debug('app:services:internal:machine')\n\nconst { inspect } = createBrowserInspector({\n autoStart: false,\n})\n\nconst {\n IDLE,\n VALIDATING_INPUT,\n SAVING_CONFIG,\n CONFIGURING_FS,\n LOADING_APP_DB,\n} = InternalState\n\n// Create the state machine\nexport const internalMachine = setup({\n types: {\n context: {} as Partial<InternalMachineContext>,\n input: {} as Partial<InternalMachineContext> | undefined,\n },\n actors: {\n prepareDb,\n validateInput,\n waitForFiles,\n configureFs,\n loadAppDb,\n saveConfig,\n },\n}).createMachine({\n id: MachineIds.INTERNAL,\n initial: IDLE,\n context: ({ input }) => {\n return {\n ...input,\n error: undefined,\n hasFiles: false,\n }\n },\n states: {\n [IDLE]: {\n on: {\n reValidate: VALIDATING_INPUT,\n init: {\n target: VALIDATING_INPUT,\n actions: [\n assign({\n appDbService: ({context, spawn }) => {\n return spawn(dbMachine, {\n input: {\n dbName: DB_NAME_APP,\n pathToDir: context?.filesDir,\n },\n })\n },\n }),\n ],\n },\n },\n meta: {\n displayText: 'Waiting for something to happen ...',\n percentComplete: 0,\n },\n },\n [VALIDATING_INPUT]: {\n on: {\n [INTERNAL_VALIDATING_INPUT_SUCCESS]: {\n target: 'preparingDb',\n actions: assign({\n endpoints: ({ event }) => event.endpoints,\n addresses: ({ event }) => event.addresses,\n filesDir: ({ event }) => event.filesDir,\n arweaveDomain: ({ event }) => event.arweaveDomain,\n }),\n },\n },\n invoke: {\n src: 'validateInput',\n input: ({ context, event }) => ({ context, event }),\n },\n meta: {\n displayText: 'Validating input',\n percentComplete: 20,\n },\n tags: ['loading'],\n },\n preparingDb: {\n on: {\n prepareDbSuccess: {\n target: CONFIGURING_FS,\n },\n },\n invoke: {\n src: 'prepareDb',\n input: ({ context, event }) => ({ context, event }),\n },\n },\n waitingForFiles: {\n on: {\n filesReceived: {\n target: LOADING_APP_DB,\n },\n },\n invoke: {\n src: 'waitForFiles',\n input: ({ context, event }) => ({ context, event }),\n },\n },\n [CONFIGURING_FS]: {\n on: {\n [INTERNAL_CONFIGURING_FS_SUCCESS]: {\n target: LOADING_APP_DB,\n actions: assign({ hasFiles: true }),\n },\n shouldWaitForFiles: {\n target: 'waitingForFiles',\n },\n },\n invoke: {\n src: 'configureFs',\n input: ({ context, event }) => ({ context, event }),\n },\n meta: {\n displayText: 'Downloading app files',\n percentComplete: 30,\n },\n tags: ['loading'],\n },\n [LOADING_APP_DB]: {\n on: {\n [INTERNAL_LOADING_APP_DB_SUCCESS]: {\n target: SAVING_CONFIG,\n actions: () => {\n logger('[sdk] [internal/index] App DB loaded!')\n },\n },\n },\n invoke: {\n src: 'loadAppDb',\n input: ({ context, event }) => ({ context, event }),\n },\n },\n // Save developer's config to DB\n [SAVING_CONFIG]: {\n on: {\n [INTERNAL_SAVING_CONFIG_SUCCESS]: 'ready',\n },\n invoke: {\n src: 'saveConfig',\n input: ({ context, event }) => ({ context, event }),\n },\n meta: {\n displayText: 'Saving configuration',\n percentComplete: 80,\n },\n tags: ['loading'],\n },\n ready: {\n entry: () => {\n console.log('[sdk] [internal/index] Ready!')\n logger('[sdk] [internal/index] Ready!')\n },\n meta: {\n displayText: \"Crossing the t's ...\",\n percentComplete: 90,\n },\n },\n error: {\n on: {\n retry: {\n target: CONFIGURING_FS,\n actions: assign({ error: undefined }),\n },\n },\n entry: () => {\n logger('[sdk] [internal/index] Error!')\n },\n meta: {\n displayText: 'Whoops! Something went wrong.',\n percentComplete: null,\n },\n tags: ['error'],\n },\n },\n})\n\n// const internalService = createActor(internalMachine, {\n// input: {},\n// inspect: (inspEvent) => {\n// if (inspEvent.type === '@xstate.snapshot') {\n// if (\n// inspEvent.event &&\n// inspEvent.event.snapshot &&\n// inspEvent.event.snapshot.value\n// ) {\n// logger(\n// `[internalService] ${inspEvent.event.snapshot.value}`,\n// inspEvent,\n// )\n// return\n// }\n//\n// if (inspEvent.snapshot && inspEvent.snapshot.value) {\n// logger(`[internalService] ${inspEvent.snapshot.value}`, inspEvent)\n// return\n// }\n//\n// // logger(`[internalService] Uncaught event`, inspEvent)\n// }\n// },\n// })\n\n// internalService.subscribe((snapshot) => {\n// globalService.send({ type: INTERNAL_SERVICE_SNAPSHOT, snapshot })\n// })\n//\n// internalService.on(CHILD_SNAPSHOT, (emitted) => {\n// globalService.send({ ...emitted })\n// })\n\n// internalService.start()\n","import { EventObject, fromCallback } from 'xstate'\nimport { GET_SCHEMAS } from '@/Item/queries'\nimport pluralize from 'pluralize'\nimport { BaseEasClient } from '@/helpers/EasClient/BaseEasClient'\nimport { BaseQueryClient } from '@/helpers/QueryClient/BaseQueryClient'\nimport { toSnakeCase } from '@/helpers'\nimport {\n models as modelsTable,\n modelUids,\n properties,\n} from '@/seedSchema'\nimport { eq } from 'drizzle-orm'\nimport { SchemaWhereInput } from '@/graphql/gql/graphql'\nimport { INTERNAL_DATA_TYPES } from '@/helpers/constants'\nimport { getAddressesFromDb } from '@/helpers/db'\nimport { eventEmitter } from '@/eventBus'\nimport { BaseDb } from '@/db/Db/BaseDb'\n\nimport { AllItemsMachineContext, FromCallbackInput } from '@/types'\n\n\ntype Times = {\n initialize?: {\n start: number | null\n end: number | null\n }\n fetchDbData?: {\n start: number | null\n end: number | null\n }\n fetchSeeds?: {\n start: number | null\n end: number | null\n }\n fetchVersions?: {\n start: number | null\n end: number | null\n }\n fetchRelatedItems?: {\n start: number | null\n end: number | null\n }\n processItems?: {\n start: number | null\n end: number | null\n }\n}\n\ntype InternalDataType = keyof typeof INTERNAL_DATA_TYPES;\n\nexport const initialize = fromCallback<\n EventObject,\n FromCallbackInput<AllItemsMachineContext>\n>(({ sendBack, input: { context } }) => {\n const { modelName, modelAddedToDb, ModelClass, times } = context\n\n const newTimes: Times = {\n initialize: {\n start: Date.now(),\n end: null,\n },\n }\n\n let modelNameLowercase: string | undefined\n let modelNamePlural: string | undefined\n let queryVariables: Record<string, unknown> | undefined\n let appDb\n\n const _initialize = async () => {\n appDb = BaseDb.getAppDb()\n\n // const rows = await getItemsDataFromDb(modelName)\n //\n // if (rows && rows.length > 0) {\n // for (const itemData of rows) {\n // const {\n // versionLocalId,\n // versionUid,\n // createdAt,\n // seedLocalId,\n // seedUid,\n // attestationCreatedAt,\n // } = itemData\n //\n // eventEmitter.emit('item.create.request', {\n // itemData: {\n // versionLocalId,\n // versionUid,\n // createdAt,\n // seedLocalId,\n // seedUid,\n // attestationCreatedAt,\n // },\n // ModelClass,\n // })\n // }\n // }\n\n modelNameLowercase = modelName.toLowerCase()\n modelNamePlural = pluralize(modelNameLowercase!)\n\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n const modelSchemas = await queryClient.fetchQuery({\n queryKey: [`getSchemas${modelName}`],\n queryFn: async () =>\n easClient.request(GET_SCHEMAS, {\n where: {\n schema: {\n equals: `bytes32 ${toSnakeCase(modelName)}`,\n },\n },\n }),\n })\n\n if (\n !modelSchemas ||\n !modelSchemas.schemas ||\n modelSchemas.schemas.length === 0\n ) {\n throw new Error(`No schema found for ${modelName}`)\n }\n\n const modelSchema = modelSchemas.schemas[0]\n\n if (!modelSchema.id) {\n throw new Error(\n `No schema ID found for schema ${JSON.stringify(modelSchema)}`,\n )\n }\n\n const foundModels = await appDb\n .select({\n id: modelsTable.id,\n name: modelsTable.name,\n uid: modelUids.uid,\n })\n .from(modelsTable)\n .leftJoin(modelUids, eq(modelsTable.id, modelUids.modelId))\n .where(eq(modelsTable.name, modelName))\n .limit(1)\n\n const foundModel = foundModels[0]\n\n if (!foundModel) {\n sendBack({ type: 'modelNotFound', modelName })\n return\n }\n\n await appDb\n .insert(modelUids)\n .values({\n modelId: foundModel.id,\n uid: modelSchema.id,\n })\n .onConflictDoNothing()\n\n const addresses = await getAddressesFromDb()\n\n queryVariables = {\n where: {\n attester: {\n in: addresses,\n },\n schemaId: {\n equals: modelSchema.id,\n },\n decodedDataJson: {\n contains: modelSchema.id,\n },\n },\n }\n }\n\n const initializeHandler = () => {\n _initialize().then(() => {\n sendBack({\n type: 'initializeSuccess',\n modelName,\n modelNameLowercase,\n modelNamePlural,\n queryVariables,\n })\n newTimes!.initialize!.end = Date.now()\n sendBack({ type: 'updateTimes', times: newTimes })\n })\n }\n\n if (modelAddedToDb) {\n initializeHandler()\n }\n\n const dbReadyHandler = (event) => {\n initializeHandler()\n }\n\n eventEmitter.addListener('allDbsLoaded', dbReadyHandler)\n\n return () => {\n eventEmitter.removeListener('allDbsLoaded', dbReadyHandler)\n }\n})\n","import { EventObject, fromCallback } from 'xstate'\nimport { AllItemsMachineContext, FromCallbackInput } from '@/types'\n\nexport const fetchDbData = fromCallback<\n EventObject,\n FromCallbackInput<AllItemsMachineContext>\n>(\n ({ sendBack, input: { context } }) => {\n const { modelNamePlural, times } = context\n\n const _fetchDbData = async (): Promise<void> => { }\n\n _fetchDbData().then(() => {\n sendBack({ type: 'fetchDbDataSuccess' })\n })\n\n return () => { }\n },\n)\n","import { EventObject, fromCallback } from 'xstate'\nimport { GET_SEEDS } from '@/Item/queries'\nimport { AllItemsMachineContext, FromCallbackInput } from '@/types'\nimport { Attestation } from '@/graphql/gql/graphql'\nimport { BaseEasClient } from '@/helpers/EasClient/BaseEasClient'\nimport { BaseQueryClient } from '@/helpers/QueryClient/BaseQueryClient'\nimport debug from 'debug'\n\n\nconst logger = debug('app:allItemsActors:fetchSeeds')\n\nexport const fetchSeeds = fromCallback<\n EventObject,\n FromCallbackInput<AllItemsMachineContext>\n>(\n ({ sendBack, input: { context } }) => {\n const { queryVariables, modelName } = context\n\n if (!queryVariables) {\n throw new Error('No queryVariables found')\n }\n\n let itemSeeds: Attestation[] | undefined\n\n const _fetchSeeds = async () => {\n const queryKey = [`getSeeds${modelName}`]\n\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n const results = await queryClient.fetchQuery({\n queryKey,\n queryFn: async () => easClient.request(GET_SEEDS, queryVariables),\n })\n\n itemSeeds = results.itemSeeds\n }\n\n _fetchSeeds().then(() => {\n sendBack({ type: 'fetchSeedsSuccess', itemSeeds })\n })\n\n return () => { }\n },\n)\n","import { EventObject, fromCallback } from 'xstate'\nimport { GET_VERSIONS } from '@/Item/queries'\nimport { AllItemsMachineContext, FromCallbackInput } from '@/types'\nimport { Attestation } from '@/graphql/gql/graphql'\nimport { BaseEasClient } from '@/helpers/EasClient/BaseEasClient'\nimport { BaseQueryClient } from '@/helpers/QueryClient/BaseQueryClient'\n\n\nexport const fetchVersions = fromCallback<\n EventObject,\n FromCallbackInput<AllItemsMachineContext>\n>(\n ({ sendBack, input: { context } }) => {\n const { itemSeeds, modelName } = context\n\n if (!itemSeeds) {\n throw new Error('No queryVariables found')\n }\n\n let itemVersions: Attestation[] | undefined\n\n const _fetchVersions = async () => {\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n const seedIds = itemSeeds.map((seed) => seed.id)\n\n const results = await queryClient.fetchQuery({\n queryKey: [`getVersions${modelName}`],\n queryFn: async () =>\n easClient.request(GET_VERSIONS, {\n where: {\n refUID: {\n in: seedIds,\n },\n },\n }),\n })\n\n itemVersions = results.itemVersions\n }\n\n _fetchVersions().then(() => {\n sendBack({ type: 'fetchVersionsSuccess', itemVersions })\n })\n\n return () => { }\n },\n)\n","import { EventObject, fromCallback } from 'xstate'\nimport {\n GET_ALL_PROPERTIES_FOR_ALL_VERSIONS,\n GET_SEED_IDS,\n GET_VERSIONS,\n} from '@/Item/queries'\nimport {\n models as modelsTable,\n modelUids,\n PropertyType,\n} from '@/seedSchema'\nimport { Attestation } from '@/graphql/gql/graphql'\nimport {\n AllItemsMachineContext,\n FromCallbackInput,\n ModelClassType,\n} from '@/types'\nimport { getAddressesFromDb } from '@/helpers/db'\nimport { eq } from 'drizzle-orm'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { BaseEasClient } from '@/helpers/EasClient/BaseEasClient'\nimport { BaseQueryClient } from '@/helpers/QueryClient/BaseQueryClient'\n\n\nexport const fetchRelatedItems = fromCallback<\n EventObject,\n FromCallbackInput<AllItemsMachineContext>\n>(({ sendBack, input: { context } }) => {\n const { ModelClass, modelName } = context\n\n const appDb = BaseDb.getAppDb()\n\n const relatedProperties = new Map<string, PropertyType>()\n const relatedVersionsBySeedUid = new Map<string, Attestation[]>()\n const schemaUidsByModelName = new Map<string, string>()\n const mostRecentVersionsBySeedUid = new Map<string, Attestation>()\n const mostRecentPropertiesBySeedUid = new Map<string, Attestation[]>()\n const seedUidsByMostRecentVersionUid = new Map<string, string>()\n\n const _fetchRelatedItems = async () => {\n // Get related properties\n for (const [propertyName, propertyDef] of Object.entries(\n (ModelClass as ModelClassType).schema,\n )) {\n if (propertyDef && propertyDef.ref && propertyDef.refModelId) {\n relatedProperties.set(propertyName, propertyDef)\n }\n }\n\n const addresses = await getAddressesFromDb(appDb)\n\n // Get the models they point to from sdkConfigDb\n for (const [propertyName, propertyDef] of relatedProperties.entries()) {\n const relatedModelQuery = await appDb\n .select({\n id: modelsTable.id,\n name: modelsTable.name,\n uid: modelUids.uid,\n })\n .from(modelsTable)\n .leftJoin(modelUids, eq(modelsTable.id, modelUids.modelId))\n .where(eq(modelsTable.id, propertyDef.refModelId))\n .limit(1)\n\n if (relatedModelQuery && relatedModelQuery.length > 0) {\n const relatedModel = relatedModelQuery[0]\n const relatedModelUid = relatedModel.uid\n // Exclude the current model's schemaUid since we already have its versions\n if (relatedModelUid && relatedModelUid !== ModelClass.schemaUid) {\n schemaUidsByModelName.set(relatedModel.name, relatedModelUid)\n }\n }\n }\n\n const queryKey = [`getRelatedSeedIds${modelName}`]\n\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n const { itemSeedIds: relatedSeedIdAttestations } =\n await queryClient.fetchQuery({\n queryKey,\n queryFn: async () =>\n easClient.request(GET_SEED_IDS, {\n where: {\n schema: {\n is: {\n id: {\n in: Array.from(schemaUidsByModelName.values()),\n },\n },\n },\n attester: {\n in: addresses,\n },\n },\n }),\n })\n\n const relatedSeedIds = relatedSeedIdAttestations.map((seed) => seed.id)\n\n const { itemVersions: relatedVersions } = await queryClient.fetchQuery({\n queryKey: [`getRelatedVersions${modelName}`],\n queryFn: async () =>\n easClient.request(GET_VERSIONS, {\n where: {\n refUID: {\n in: relatedSeedIds,\n },\n attester: {\n in: addresses,\n },\n },\n }),\n })\n\n // Index versions by seedUid\n for (const version of relatedVersions) {\n const existingVersionsForSeedUid =\n relatedVersionsBySeedUid.get(version.refUID) || []\n existingVersionsForSeedUid.push(version)\n relatedVersionsBySeedUid.set(version.refUID, existingVersionsForSeedUid)\n }\n\n // Sort the indexed versions by timeCreated and index the most recent\n for (const [\n seedUid,\n versionsForSeed,\n ] of relatedVersionsBySeedUid.entries()) {\n const versionsForSeedSorted = versionsForSeed.sort(\n (a: Attestation, b: Attestation) => {\n return a.timeCreated - b.timeCreated\n },\n )\n relatedVersionsBySeedUid.set(seedUid, versionsForSeedSorted)\n mostRecentVersionsBySeedUid.set(seedUid, versionsForSeedSorted[0])\n seedUidsByMostRecentVersionUid.set(versionsForSeedSorted[0].id, seedUid)\n }\n\n // Extract the ids of the most recent versions\n const mostRecentVersionIds = Array.from(\n mostRecentVersionsBySeedUid.values(),\n ).map((version) => version.id)\n\n const { allProperties } = await queryClient.fetchQuery({\n queryKey: [`getAllProperties${modelName}`],\n queryFn: async () =>\n easClient.request(GET_ALL_PROPERTIES_FOR_ALL_VERSIONS, {\n where: {\n refUID: {\n in: mostRecentVersionIds,\n },\n attester: {\n in: addresses,\n },\n },\n }),\n })\n\n for (const propertyAttestation of allProperties) {\n const seedUidForProperty = seedUidsByMostRecentVersionUid.get(\n propertyAttestation.refUID,\n )\n const existingPropertiesForSeedUid =\n mostRecentPropertiesBySeedUid.get(seedUidForProperty!) || []\n existingPropertiesForSeedUid.push(propertyAttestation)\n mostRecentPropertiesBySeedUid.set(\n seedUidForProperty!,\n existingPropertiesForSeedUid,\n )\n }\n }\n\n _fetchRelatedItems().then(() => {\n sendBack({\n type: 'fetchRelatedItemsSuccess',\n mostRecentPropertiesBySeedUid,\n relatedVersionsBySeedUid,\n relatedProperties,\n schemaUidsByModelName,\n })\n return\n })\n})\n","import { EventObject, fromCallback } from 'xstate'\nimport { AllItemsMachineContext, FromCallbackInput } from '@/types'\nimport { Attestation } from '@/graphql/gql/graphql'\nimport { eventEmitter } from '@/eventBus'\n\nexport const processItems = fromCallback<\n EventObject,\n FromCallbackInput<AllItemsMachineContext>\n>(\n ({ sendBack, input: { context } }) => {\n const {\n itemVersions,\n itemSeeds,\n ModelClass,\n schemaUidsByModelName,\n mostRecentPropertiesBySeedUid,\n times,\n // relatedProperties,\n // relatedVersionsBySchemaUid,\n // relatedVersionsBySeedUid,\n } = context\n\n if (!itemVersions || !itemSeeds) {\n throw new Error('No itemVersions or itemSeeds found')\n }\n\n const _processItems = async () => {\n // For each itemSeed, find all the Versions\n for (const itemSeed of itemSeeds.slice(8, 16)) {\n const versionsForSeed = itemVersions.filter(\n (version) => version.refUID === itemSeed.id,\n )\n\n if (versionsForSeed.length === 0) {\n continue\n }\n\n // Find the most recent Version for each Seed\n const recentVersionsMap: { [seedId: string]: Attestation } = {}\n versionsForSeed.forEach((version: Attestation) => {\n const existingVersion = recentVersionsMap[version.refUID]\n if (\n !existingVersion ||\n new Date(version.timeCreated * 1000) >\n new Date(existingVersion.timeCreated * 1000)\n ) {\n recentVersionsMap[version.refUID] = version\n }\n })\n }\n }\n\n _processItems().then(() => {\n sendBack({ type: 'processItemsSuccess' })\n const modelName = ModelClass.originalConstructor.name\n eventEmitter.emit('item.requestAll', {\n modelName,\n })\n eventEmitter.emit('service.save', {\n modelName,\n })\n sendBack({\n type: 'updateTimes',\n times: {\n ...times,\n processItems: {\n start: null,\n end: Date.now(),\n },\n },\n })\n })\n },\n)\n","import { assign, setup } from 'xstate'\nimport { MachineIds } from '@/services/internal/constants'\nimport { AllItemsMachineContext } from '@/types'\nimport { eventEmitter } from '@/eventBus'\nimport { initialize } from '../allItems/actors/initialize'\nimport { fetchDbData } from '../allItems/actors/fetchDbData'\nimport { fetchSeeds } from '../allItems/actors/fetchSeeds'\nimport { fetchVersions } from '../allItems/actors/fetchVersions'\nimport { fetchRelatedItems } from '../allItems/actors/fetchRelatedItems'\nimport { processItems } from '../allItems/actors/processItems'\n\n\nexport const itemMachineAll = setup({\n types: {\n context: {} as Partial<AllItemsMachineContext>,\n input: {} as Partial<AllItemsMachineContext> | undefined,\n },\n actors: {\n initialize,\n fetchDbData,\n fetchSeeds,\n fetchVersions,\n fetchRelatedItems,\n processItems,\n },\n}).createMachine({\n id: MachineIds.ALL_ITEMS,\n initial: 'uninitialized',\n context: ({ input }) => input as AllItemsMachineContext,\n on: {\n updateTimes: {\n actions: assign({\n times: ({ event }) => event.times,\n }),\n },\n },\n states: {\n idle: {\n entry: ({ self, context }) => {\n eventEmitter.emit('service.saveState.request', {\n state: self.getPersistedSnapshot(),\n serviceId: `${MachineIds.ALL_ITEMS}_${context.modelName}`,\n })\n },\n },\n uninitialized: {\n on: {\n modelsFound: {\n target: 'initializing',\n actions: assign({\n modelAddedToDb: true,\n }),\n },\n },\n },\n initializing: {\n on: {\n initializeSuccess: {\n target: 'fetchingSeeds',\n actions: assign({\n modelName: ({ event }) => event.modelName,\n modelNameLowercase: ({ event }) => event.modelNameLowercase,\n modelNamePlural: ({ event }) => event.modelNamePlural,\n queryVariables: ({ event }) => event.queryVariables,\n }),\n },\n modelsNotFound: 'idle',\n },\n invoke: {\n src: 'initialize',\n input: ({ context }) => ({ context }),\n },\n },\n fetchingSeeds: {\n on: {\n fetchSeedsSuccess: {\n target: 'fetchingVersions',\n actions: assign({\n itemSeeds: ({ event }) => event.itemSeeds,\n }),\n },\n },\n invoke: {\n src: 'fetchSeeds',\n input: ({ context }) => ({ context }),\n },\n },\n fetchingVersions: {\n on: {\n fetchVersionsSuccess: {\n target: 'fetchingRelatedItems',\n actions: assign({\n itemVersions: ({ event }) => event.itemVersions,\n }),\n },\n },\n invoke: {\n src: 'fetchVersions',\n input: ({ context }) => ({ context }),\n },\n },\n fetchingRelatedItems: {\n on: {\n fetchRelatedItemsSuccess: {\n target: 'processingItems',\n actions: assign({\n relatedProperties: ({ event }) => event.relatedProperties,\n relatedVersionsBySeedUid: ({ event }) =>\n event.relatedVersionsBySeedUid,\n relatedVersionsBySchemaUid: ({ event }) =>\n event.relatedVersionsBySchemaUid,\n schemaUidsByModelName: ({ event }) => event.schemaUidsByModelName,\n mostRecentPropertiesBySeedUid: ({ event }) =>\n event.mostRecentPropertiesBySeedUid,\n }),\n },\n },\n invoke: {\n src: 'fetchRelatedItems',\n input: ({ context }) => ({ context }),\n },\n },\n processingItems: {\n on: {\n processItemsSuccess: 'idle',\n itemCreated: {\n actions: assign({\n items: ({ context, event }) => {\n if (context && context.items) {\n const foundItem = context.items.find((item) => {\n if (!item.versionLocalId) {\n return false\n }\n return (\n item.versionLocalId === event.item.versionLocalId ||\n item.versionUid === event.item.versionUid\n )\n })\n if (foundItem) {\n return context.items\n }\n return [...context.items, event.item]\n }\n if (context && !context.items) {\n return [event.item]\n }\n },\n }),\n },\n },\n invoke: {\n src: 'processItems',\n input: ({ context, self }) => ({ context, self }),\n },\n },\n },\n})\n","import { EventObject, fromCallback } from 'xstate'\nimport { FromCallbackInput, PublishMachineContext } from '@/types'\n\nexport const validateItemData = fromCallback<\n EventObject,\n FromCallbackInput<PublishMachineContext>\n>(({ sendBack, input: { context } }) => {\n const _validateItemData = async () => {\n if (context && context.localId) {\n return true\n }\n return false\n }\n\n _validateItemData().then((isValid) => {\n if (isValid) {\n sendBack({ type: 'validateItemDataSuccess' })\n }\n })\n})\n","import { EventObject, fromCallback } from 'xstate'\nimport { FromCallbackInput, PublishMachineContext } from '@/types'\n\nexport const createPublishAttempt = fromCallback<\n EventObject,\n FromCallbackInput<PublishMachineContext>\n>(({ sendBack, input: { context } }) => {\n const _createPublishAttempt = async () => {\n // Do some stuff\n return true\n }\n\n _createPublishAttempt().then(() => {\n sendBack({ type: 'createPublishAttemptSuccess' })\n })\n})\n","import { ActionFunction, assign } from 'xstate'\n\ntype UpdateMachineContext = {\n actions: ActionFunction<any, any, any, any, any, any, any, any, any>[] | any\n}\nexport const updateMachineContext: UpdateMachineContext = {\n actions: assign(({ context, event }) => {\n const newContext = Object.assign({}, context)\n\n for (let i = 0; i < Object.keys(event).length; i++) {\n const key = Object.keys(event)[i]\n if (key === 'type') {\n continue\n }\n newContext[key] = event[key]\n }\n return {\n ...newContext,\n }\n }),\n}\n","import { EventObject, fromCallback } from 'xstate'\nimport { FromCallbackInput, PublishMachineContext } from '@/types'\nimport { models as modelsTable, modelUids } from '@/seedSchema'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { eq } from 'drizzle-orm'\nimport { getModelSchemas } from '@/db/read/getModelSchemas'\nimport { BaseItem } from '@/Item/BaseItem'\n\nexport const preparePublishRequestData = fromCallback<\n EventObject,\n FromCallbackInput<PublishMachineContext>\n>(({ sendBack, input: { context } }) => {\n const { localId } = context\n\n const _preparePublishRequestData = async () => {\n const item = await BaseItem.find({ seedLocalId: localId })\n\n if (!item) {\n return false\n }\n\n const appDb = BaseDb.getAppDb()\n\n const modelsRows = await appDb\n .select({\n modelName: modelsTable.name,\n schemaUid: modelUids.uid,\n })\n .from(modelsTable)\n .leftJoin(modelUids, eq(modelUids.modelId, modelsTable.id))\n .where(eq(modelsTable.name, 'Version'))\n\n if (!modelsRows || modelsRows.length === 0) {\n sendBack({ type: 'preparePublishRequestDataError' })\n return false\n }\n\n const versionSchemaUid = modelsRows[0].schemaUid\n\n const editedProperties = await item.getEditedProperties()\n\n const { modelSchemas, schemaStringToModelRecord } = await getModelSchemas({\n sdkConfigDb: appDb,\n })\n\n // const dataEncoder = new SchemaEncoder(modelProperty.schemaDefinition,)\n // const encodedData = dataEncoder.encodeData(data,)\n //\n // itemData.listOfAttestations.push({\n // schema : modelProperty.schemaUid,\n // data : [\n // {\n // ...defaultAttestationData,\n // data : encodedData,\n // },\n // ],\n // },)\n\n const publishRequestData = {\n seedIsRevocable: false,\n seedSchemaUid: item.schemaUid,\n seedUid: item.seedUid,\n versionSchemaUid,\n versionUid: item.latestVersionUid,\n listOfAttestations: [],\n }\n\n sendBack({\n type: 'updateContext',\n ...publishRequestData,\n })\n\n return true\n }\n\n _preparePublishRequestData().then((success) => {\n if (success) {\n sendBack({ type: 'preparePublishRequestDataSuccess' })\n }\n })\n})\n","import { EventObject, fromCallback } from 'xstate'\nimport { FromCallbackInput, PublishMachineContext } from '@/types'\nimport { BaseItem } from '@/Item/BaseItem'\nimport debug from 'debug'\nimport { getCorrectId } from '@/helpers'\n\nconst logger = debug('app:services:publish:actors:upload')\n\ntype UploadItem = {\n sourceFilePath: string\n fileSize: number\n filename: string\n seedLocalId?: string\n metadataLocalId?: string\n}\n\nexport const upload = fromCallback<\n EventObject,\n FromCallbackInput<PublishMachineContext>\n>(({ sendBack, input: { context } }) => {\n const { localId } = context\n\n const _upload = async () => {\n const item = await BaseItem.find({ seedLocalId: localId })\n\n if (!item) {\n logger('no item with localId', localId)\n return false\n }\n\n const editedProperties = await item.getEditedProperties()\n\n for (const propertyData of editedProperties) {\n if (propertyData.refSeedType === 'image') {\n // Check sha256 of local file against sha256 of remote files\n // If different, add this file to uploadItems\n }\n }\n\n const uploadItems = []\n\n for (const editedPropertyData of editedProperties) {\n const propertyName = editedPropertyData.propertyName\n const editedProperty = item.properties[propertyName]\n\n if (!editedProperty || !editedProperty.propertyDef) {\n continue\n }\n\n if (\n editedProperty.propertyDef.refValueType &&\n editedProperty.propertyDef.refValueType === 'ImageSrc'\n ) {\n const context = editedProperty.getService().getSnapshot().context\n const imageSeedId = context.propertyValue\n const { localId, uid } = getCorrectId(imageSeedId)\n }\n\n if (\n editedProperty.propertyDef.storageType === 'ItemStorage' &&\n editedProperty.propertyDef.localStorageDir\n ) {\n }\n }\n\n if (uploadItems.length === 0) {\n return true\n }\n\n // const turbo = TurboFactory.unauthenticated()\n\n // turbo.uploadSignedDataItem()\n //\n // const { id, owner, dataCaches, fastFinalityIndexes } = await turbo.uploadFile(() => {\n // fileStreamFactory => () => fs.createReadStream(filePath),\n // fileSizeFactory => () => fileSize,\n // });\n return false\n }\n\n _upload().then((isValid) => {\n if (isValid) {\n sendBack({ type: 'uploadSuccess' })\n }\n })\n})\n","import { setup } from 'xstate'\nimport { validateItemData } from './actors/validateItemData'\nimport { PublishMachineStates } from '@/services/internal/constants'\nimport { PublishMachineContext } from '@/types'\nimport { createPublishAttempt } from './actors/createPublishAttempt'\nimport { updateMachineContext } from '@/helpers/updateMachineContext'\nimport { preparePublishRequestData } from '@/services/publish/actors/preparePublishRequestData'\nimport { upload } from '@/services/publish/actors/upload'\n\nconst {\n VALIDATING_ITEM_DATA,\n CREATING_PUBLISH_ATTEMPT,\n PREPARING_PUBLISH_REQUEST_DATA,\n UPLOADING,\n PUBLISHING,\n IDLE,\n} = PublishMachineStates\n\nexport const publishMachine = setup({\n types: {\n context: {} as PublishMachineContext,\n input: {} as PublishMachineContext,\n },\n actors: {\n validateItemData,\n createPublishAttempt,\n upload,\n preparePublishRequestData,\n },\n}).createMachine({\n id: 'publish',\n initial: VALIDATING_ITEM_DATA,\n context: ({ input }) => input,\n on: {\n updateContext: updateMachineContext,\n },\n states: {\n [VALIDATING_ITEM_DATA]: {\n on: {\n validateItemDataSuccess: [CREATING_PUBLISH_ATTEMPT],\n },\n invoke: {\n src: 'validateItemData',\n input: ({ context }) => ({ context }),\n },\n },\n [CREATING_PUBLISH_ATTEMPT]: {\n on: {\n createPublishAttemptSuccess: [UPLOADING],\n },\n invoke: {\n src: 'createPublishAttempt',\n input: ({ context }) => ({ context }),\n },\n },\n [UPLOADING]: {\n on: {\n uploadingSuccess: [PREPARING_PUBLISH_REQUEST_DATA],\n },\n invoke: {\n src: 'upload',\n input: ({ context }) => ({ context }),\n },\n },\n [PREPARING_PUBLISH_REQUEST_DATA]: {\n on: {\n preparePublishRequestDataSuccess: [UPLOADING],\n },\n invoke: {\n src: 'preparePublishRequestData',\n input: ({ context }) => ({ context }),\n },\n },\n [PUBLISHING]: {},\n [IDLE]: {},\n },\n})\n","import { EventObject, fromCallback } from 'xstate'\nimport { FromCallbackInput, GlobalMachineContext } from '@/types/machines'\nimport { saveAppState } from '@/db/write/saveAppState'\n\nexport const savePublishService = fromCallback<\n EventObject,\n FromCallbackInput<GlobalMachineContext>\n>(({ sendBack, input: { event, context } }) => {\n const { publishItemService } = context\n\n if (!publishItemService) {\n sendBack({ type: 'savePublishServiceError' })\n return\n }\n\n const _savePublishService = async (): Promise<boolean> => {\n await saveAppState(\n `snapshot__publishItemService`,\n JSON.stringify(publishItemService.getPersistedSnapshot()),\n )\n\n return true\n }\n\n _savePublishService().then((success) => {\n if (success) {\n sendBack({ type: 'savePublishServiceSuccess' })\n }\n })\n})\n","import { ActorRefFrom, assign, createActor, raise, setup } from 'xstate'\nimport { createBrowserInspector } from '@statelyai/inspect'\nimport {\n GLOBAL_ADDING_MODELS_TO_DB_SUCCESS,\n GLOBAL_INITIALIZING_CREATE_ALL_ITEMS_SERVICES,\n GLOBAL_INITIALIZING_INTERNAL_SERVICE_READY,\n GLOBAL_INITIALIZING_SEND_CONFIG,\n GlobalState,\n MachineIds,\n} from '@/services/internal/constants'\nimport { GlobalMachineContext, ModelClassType } from '@/types'\nimport { eventEmitter } from '@/eventBus'\nimport { initialize } from '@/services/global/actors/initialize'\nimport { getSchemaForModel } from '@/services/global/actors/getSchemaForModel'\nimport { addModelsToDb } from '@/services/global/actors/addModelsToDb'\nimport { internalMachine } from '@/services/internal/internalMachine'\nimport { itemMachineAll } from '../allItems/itemMachineAll'\nimport { publishMachine } from '@/services/publish/publishMachine'\nimport { savePublishService } from '@/services/global/actors/savePublishService'\n\nconst {\n UNINITIALIZED,\n INITIALIZING,\n INITIALIZED,\n PUBLISHING_ITEM,\n ADDING_MODELS_TO_DB,\n} = GlobalState\n\nconst { inspect } = createBrowserInspector({\n autoStart: false,\n})\n\nconst globalMachine = setup({\n types: {\n context: {} as GlobalMachineContext,\n input: {} as GlobalMachineContext | undefined,\n },\n actors: {\n initialize,\n addModelsToDb,\n getSchemaForModel,\n savePublishService,\n },\n}).createMachine({\n id: MachineIds.GLOBAL,\n initial: UNINITIALIZED,\n context: ({ input }) => input as GlobalMachineContext,\n on: {\n publishItemRequest: `.${PUBLISHING_ITEM}`,\n savePublishService: `.savingPublishService`,\n restorePublishService: `.${PUBLISHING_ITEM}`,\n },\n states: {\n [UNINITIALIZED]: {\n on: {\n init: {\n target: INITIALIZING,\n actions: [\n assign({\n isInitialized: false,\n addedModelRecordsToDb: false,\n models: ({ event }) => event.models,\n endpoints: ({ event }) => event.endpoints,\n filesDir: ({ event }) => event.filesDir,\n internalService: ({ spawn, event }) => {\n return spawn(internalMachine, {\n systemId: MachineIds.INTERNAL,\n input: {\n endpoints: event.endpoints,\n filesDir: event.filesDir,\n addresses: event.addresses,\n arweaveDomain: event.arweaveDomain,\n },\n })\n },\n }),\n ],\n },\n },\n meta: {\n displayText: 'Booting up',\n percentComplete: 5,\n },\n tags: ['loading', 'startup'],\n },\n [INITIALIZING]: {\n on: {\n [GLOBAL_INITIALIZING_SEND_CONFIG]: {\n actions: assign({\n endpoints: ({ event }) => event.endpoints,\n environment: ({ event }) => event.environment,\n addresses: ({ event }) => event.addresses,\n isInitialized: true,\n }),\n },\n [GLOBAL_INITIALIZING_INTERNAL_SERVICE_READY]: ADDING_MODELS_TO_DB,\n [GLOBAL_INITIALIZING_CREATE_ALL_ITEMS_SERVICES]: {\n actions: [\n assign(({ event, spawn }) => {\n const allItemsServices: Record<\n string,\n ActorRefFrom<typeof itemMachineAll>\n > = {}\n for (const [modelName, ModelClass] of Object.entries(\n event.create,\n )) {\n const service = spawn(itemMachineAll, {\n systemId: modelName,\n input: {\n modelName,\n ModelClass,\n modelSchema: (ModelClass as ModelClassType)!.schema,\n items: [],\n },\n })\n allItemsServices[`${modelName}Service`] = service\n }\n\n for (const [modelName, snapshot] of Object.entries(\n event.restore,\n )) {\n const service = createActor(itemMachineAll, {\n snapshot,\n })\n service.start()\n allItemsServices[`${modelName}Service`] = service\n }\n return allItemsServices\n }),\n raise({ type: 'allItemsServicesCreated' }),\n ],\n },\n },\n invoke: {\n src: 'initialize',\n input: ({ event, context }) => ({ event, context }),\n meta: {\n displayText: 'Initializing Seed SDK',\n percentComplete: 10,\n },\n tags: ['loading', 'startup'],\n },\n },\n [ADDING_MODELS_TO_DB]: {\n on: {\n [GLOBAL_ADDING_MODELS_TO_DB_SUCCESS]: {\n target: INITIALIZED,\n actions: assign({\n addedModelRecordsToDb: true,\n }),\n },\n },\n invoke: {\n src: 'addModelsToDb',\n input: ({ context }) => ({ context }),\n meta: {\n displayText: 'Adding models to database',\n },\n tags: ['loading', 'startup'],\n },\n },\n [INITIALIZED]: {\n // type: 'parallel',\n // on: {\n // publishItemRequest: `.${PUBLISHING_ITEM}`,\n // },\n meta: {\n displayText: 'Global service ready',\n percentComplete: 40,\n },\n tags: ['loading', 'startup'],\n // initial: PUBLISHING_ITEM,\n },\n [PUBLISHING_ITEM]: {\n target: INITIALIZED,\n entry: [\n assign({\n publishItemService: ({ spawn, event }) =>\n spawn(publishMachine, {\n id: 'publishService',\n input: {\n localId: event.seedLocalId,\n },\n }),\n }),\n ],\n meta: {\n displayText: 'Publishing item',\n },\n tags: ['publishing'],\n },\n savingPublishService: {\n target: INITIALIZED,\n on: {\n savePublishServiceSuccess: INITIALIZED,\n },\n invoke: {\n src: 'savePublishService',\n input: ({ context }) => ({ context }),\n },\n meta: {\n displayText: 'Saving publish service',\n },\n tags: ['publishing'],\n },\n },\n // on: {\n // '*': {\n // actions: emit(({ event }) => {\n // return event\n // }),\n // },\n // },\n})\n\nconst globalService = createActor(globalMachine, {\n input: {},\n // inspect,\n inspect: (inspEvent) => {\n eventEmitter.emit('inspect.globalService', inspEvent)\n // console.log('[sdk] [service/index] inspEvent', inspEvent)\n // eventEmitter.emit('globalService', inspEvent)\n // let eventType: string = inspEvent.type\n // if (inspEvent.event && inspEvent.event.type) {\n // eventType = inspEvent.event.type\n // }\n //\n // if (typeof eventType === 'object') {\n // eventType = JSON.stringify(eventType)\n // }\n //\n // let srcId = inspEvent.actorRef.id\n //\n // if (!srcId.includes('seedSdk')) {\n // srcId = inspEvent.actorRef.logic.config.id\n // }\n //\n // if (inspEvent.type === '@xstate.snapshot') {\n // if (\n // inspEvent.event.type === CHILD_SNAPSHOT &&\n // inspEvent.snapshot &&\n // inspEvent.snapshot.machine.id === MachineIds.GLOBAL\n // ) {\n // return\n // }\n // if (inspEvent.snapshot && inspEvent.snapshot.value) {\n // if (typeof window !== 'undefined') {\n // eventEmitter.emit('globalService', {\n // type: eventType,\n // src: srcId,\n // snapshot: inspEvent.snapshot,\n // })\n // }\n // }\n // } else {\n // if (typeof window !== 'undefined') {\n // let snapshot\n //\n // try {\n // snapshot = inspEvent.actorRef.getSnapshot()\n // } catch (e) {\n // // This fails if the actor hasn't initialized yet, but that's OK I think\n // // console.log('[sdk] [service/index] ERROR', e)\n // }\n //\n // eventEmitter.emit('globalService', {\n // type: eventType,\n // src: srcId,\n // snapshot,\n // })\n // }\n // }\n },\n})\n\nglobalService.start()\n\nconst getGlobalService = (): ActorRefFrom<typeof globalMachine> => globalService\n\nexport { globalMachine, getGlobalService, globalService }\n","import { getGlobalService } from '@/services/global'\n\ntype PublishItemRequestEvent = {\n seedLocalId: string\n}\n\ntype PublishItemRequestHandler = (\n event: PublishItemRequestEvent,\n) => Promise<void>\n\nexport const publishItemRequestHandler: PublishItemRequestHandler = async ({\n seedLocalId,\n}) => {\n const globalService = getGlobalService()\n globalService.subscribe((snapshot) => {\n if (\n !snapshot ||\n !snapshot.context ||\n !snapshot.context.publishItemService\n ) {\n return\n }\n })\n globalService.send({\n type: 'publishItemRequest',\n seedLocalId,\n })\n}\n","import { eventEmitter } from '@/eventBus'\nimport { syncDbWithEasHandler } from '@/events/item/syncDbWithEas'\nimport { publishItemRequestHandler } from '@/events/item/publish'\n\nlet areReady = false\n\nexport const setupAllItemsEventHandlers = () => {\n // eventEmitter.addListener('item.request', itemRequestHandler)\n // eventEmitter.addListener('item.requestAll', itemRequestAllHandler)\n // eventEmitter.addListener(\n // 'item.propertyValuesForSeedUid.request',\n // propertyValuesForSeedUid,\n // )\n // eventEmitter.addListener('item.create.request', createItemRequestHandler)\n // eventEmitter.addListener('item.delete.request', itemDeleteRequestHandler)\n // eventEmitter.addListener('item.update', itemUpdateHandler)\n eventEmitter.addListener('syncDbWithEas', syncDbWithEasHandler)\n eventEmitter.addListener('item.publish.request', publishItemRequestHandler)\n eventEmitter.addListener(\n 'item.publish.payload.request',\n publishItemRequestHandler,\n )\n //\n // eventEmitter.emit('item.events.setupAllItemsEventHandlers')\n areReady = true\n}\n\nexport const getAreItemEventHandlersReady = () => {\n return areReady\n}\n","import { eventEmitter } from '@/eventBus'\nimport { generateId } from '@/helpers'\n\nexport * from './item'\n\ntype WaitForEventConfig = {\n req: {\n eventLabel: string\n data: Record<string, unknown>\n }\n res: {\n eventLabel: string\n }\n}\n\ntype WaitForEvent = (\n config: WaitForEventConfig,\n) => Promise<Record<string, unknown>>\n\nexport const waitForEvent: WaitForEvent = async ({ req, res }) => {\n const eventId = generateId()\n\n return new Promise((resolve) => {\n const internalHandler = (event: Record<string, unknown>) => {\n if (!event) {\n return\n }\n const { eventId: _eventId } = event\n if (_eventId && _eventId === eventId) {\n eventEmitter.removeListener(res.eventLabel, internalHandler)\n resolve(event)\n }\n }\n\n eventEmitter.addListener(res.eventLabel, internalHandler)\n\n eventEmitter.emit(req.eventLabel, {\n ...req.data,\n eventId,\n })\n })\n}\n","import { EventObject, fromCallback } from 'xstate'\nimport { waitForEvent } from '@/events'\nimport {\n FromCallbackInput,\n HydrateExistingItemEvent,\n ItemMachineContext,\n} from '@/types'\n\nexport const hydrateExistingItem = fromCallback<\n EventObject,\n FromCallbackInput<ItemMachineContext<any>, HydrateExistingItemEvent>\n>(({ sendBack, input: { event, context } }) => {\n const { existingItem } = event!\n const { seedUid, seedLocalId, ModelClass } = context\n\n if (!ModelClass) {\n throw new Error('ModelClass not found')\n }\n\n const modelName = ModelClass.originalConstructor.name\n\n const _checkForItemOnAllItemsService = async (): Promise<boolean> => {\n if (!existingItem.seedLocalId && !existingItem.seedUid) {\n console.warn(\n '[singleItemActors] [hydrateExistingItem] No seedLocalId or seedUid found on existingItem',\n )\n return false\n }\n\n if (!seedUid && !seedLocalId) {\n return false\n }\n\n const results = await waitForEvent({\n req: {\n eventLabel: 'item.request',\n data: {\n modelName,\n seedUid,\n seedLocalId,\n source: 'hydrateExistingItem',\n },\n },\n res: {\n eventLabel: `item.${modelName}.${seedLocalId}.response`,\n },\n })\n\n return true\n\n // return new Promise((resolve) => {\n // const timeStart = Date.now()\n //\n // const interval = setInterval(() => {\n // const timeElapsed = Date.now() - timeStart\n // if (timeElapsed > 2000) {\n // eventEmitter.emit('item.request', {\n // modelName,\n // versionUid,\n // versionLocalId,\n // source: 'hydrateExistingItem',\n // })\n // }\n // if (timeElapsed > 30000) {\n // clearInterval(interval)\n // console.error(\n // `[singleItemActors] [hydrateExistingItem] ${timeElapsed / 1000}s elapsed for ${modelName} ${versionLocalId}`,\n // context,\n // )\n // eventEmitter.removeListener(\n // `item.${modelName}.response`,\n // handleItemRequestResponse,\n // )\n // resolve(false)\n // }\n // }, 500)\n\n // const handleItemRequestResponse = (event) => {\n // if (\n // event.item &&\n // ((event.item.versionLocalId &&\n // event.item.versionLocalId === versionLocalId) ||\n // (event.item.versionUid && event.item.versionUid === versionUid))\n // ) {\n // clearInterval(interval)\n // eventEmitter.removeListener(\n // `item.${modelName}.response`,\n // handleItemRequestResponse,\n // )\n // resolve(true)\n // }\n // }\n //\n // eventEmitter.addListener(\n // `item.${modelName}.response`,\n // handleItemRequestResponse,\n // )\n //\n // eventEmitter.emit('item.request', {\n // modelName,\n // versionUid,\n // versionLocalId,\n // source: 'hydrateExistingItem',\n // })\n // })\n\n // if (existingItem.versionLocalId && !existingItem.versionLocalId) {\n // console.log(\n // `[singleItemActors] [hydrateExistingItem] versionLocalId: ${existingItem.versionLocalId} versionUid: ${existingItem.versionUid}`,\n // )\n //\n // return true\n // }\n //\n // console.log(\n // `[singleItemActors] [hydrateExistingItem] versionLocalId: ${existingItem.versionLocalId} versionUid: ${existingItem.versionUid}`,\n // )\n // return true\n }\n\n _checkForItemOnAllItemsService().then((shouldContinue) => {\n if (!shouldContinue) {\n sendBack({ type: 'hydrateExistingItemFailure' })\n return\n }\n // for (const [key, value] of Object.entries(existingItem)) {\n // sendBack({\n // type: 'updateValue',\n // propertyName: key,\n // propertyValue: value,\n // source: 'db',\n // })\n // }\n\n sendBack({ type: 'hydrateExistingItemSuccess' })\n })\n})\n","import { GET_SCHEMAS } from '@/Item/queries'\nimport { BaseEasClient } from '@/helpers/EasClient/BaseEasClient'\nimport { BaseQueryClient } from '@/helpers/QueryClient/BaseQueryClient'\n\n\nexport const getSchemaUidForModel = async (\n modelName: string,\n): Promise<string> => {\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n const modeType = modelName.toLowerCase()\n\n const modelSchemaQuery = await queryClient.fetchQuery({\n queryKey: [`getPropertySchema${modelName}`],\n queryFn: async () =>\n easClient.request(GET_SCHEMAS, {\n where: {\n schemaNames: {\n some: {\n name: {\n equals: modeType,\n },\n },\n },\n },\n }),\n })\n\n const foundSchema = modelSchemaQuery.schemas[0]\n return foundSchema.id\n}\n","import { generateId } from '@/helpers'\nimport { seeds } from '@/seedSchema'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { getSchemaUidForModel } from '@/db/read/getSchemaUidForModel'\n\ntype CreateSeedProps = {\n type: string\n seedUid?: string\n}\n\nexport const createSeed = async ({ type, seedUid }: CreateSeedProps): Promise<string> => {\n const schemaUid = await getSchemaUidForModel(type)\n\n if (!schemaUid) {\n throw new Error(`No schema found for model type: ${type}`)\n }\n\n const appDb = BaseDb.getAppDb()\n\n const newSeedLocalId = generateId()\n\n await appDb.insert(seeds).values({\n localId: newSeedLocalId,\n type,\n uid: seedUid,\n createdAt: Date.now(),\n schemaUid,\n })\n\n return newSeedLocalId\n} ","import { generateId } from '@/helpers'\nimport { versions } from '@/seedSchema'\nimport { BaseDb } from '../Db/BaseDb'\n\ntype CreateVersionProps = {\n seedLocalId?: string\n seedUid?: string\n seedType?: string\n uid?: string\n}\ntype CreateVersion = (props: CreateVersionProps) => Promise<string>\n\nexport const createVersion: CreateVersion = async ({\n seedLocalId,\n seedUid,\n seedType,\n uid,\n}) => {\n const appDb = BaseDb.getAppDb()\n\n const newVersionLocalId = generateId()\n\n await appDb.insert(versions).values({\n localId: newVersionLocalId,\n createdAt: Date.now(),\n seedLocalId,\n seedUid: seedUid ?? 'NULL',\n seedType,\n uid: uid || 'NULL',\n })\n\n return newVersionLocalId\n}\n","import { EventObject, fromCallback } from 'xstate'\nimport { createSeed } from '@/db/write/createSeed'\nimport { FromCallbackInput, ItemMachineContext } from '@/types'\nimport { createVersion } from '@/db/write/createVersion'\n\nexport const hydrateNewItem = fromCallback<\n EventObject,\n FromCallbackInput<ItemMachineContext<any>>\n>(({ sendBack, input: { context } }) => {\n const { seedUid, versionUid, modelName } = context\n\n let newSeedLocalId: string\n\n const _hydrateNewItem = async (): Promise<void> => {\n if (!modelName) {\n throw new Error('modelName is required')\n }\n\n newSeedLocalId = await createSeed({\n type: modelName.toLowerCase(),\n seedUid: seedUid ?? 'NULL',\n })\n\n await createVersion({\n seedLocalId: newSeedLocalId,\n seedType: modelName.toLowerCase(),\n uid: versionUid ?? 'NULL',\n })\n }\n\n _hydrateNewItem().then(() => {\n sendBack({ type: 'hydrateNewItemSuccess' })\n })\n})\n","import { EventObject, fromCallback } from 'xstate'\nimport { GET_PROPERTIES } from '@/Item/queries'\nimport { itemMachineSingle } from '@/Item/service/itemMachineSingle'\nimport { PropertyType } from '@/seedSchema'\nimport { Attestation } from '@/graphql/gql/graphql'\nimport { ModelClassType } from '@/types'\nimport { BaseEasClient, BaseQueryClient } from '@/helpers'\n\n\nexport const fetchDataFromEas = fromCallback<\n EventObject,\n typeof itemMachineSingle\n>(({ sendBack, input: { context } }) => {\n const { ModelClass, modelTableName, versionUid } = context\n\n const propertiesMetadata = new Map<string, PropertyType>()\n\n // EAS is the final source of truth, so we need to see if our Item is\n // already represented there. Then we need to intelligently sync/merge\n // with whatever new data has been created on the device before the sync.\n for (const [propertyName, propertyMetadata] of Object.entries(\n (ModelClass as ModelClassType).schema,\n )) {\n if (propertyMetadata) {\n propertiesMetadata.set(propertyName, propertyMetadata)\n }\n }\n\n sendBack({ type: 'updatePropertiesMetadata', propertiesMetadata })\n\n if (!versionUid) {\n // In this case this is a local only item, so we don't need to fetch anything\n return\n }\n\n const _fetchDataFromEas = async (): Promise<void> => {\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n // Fetch Properties by versionUid\n const { itemProperties } = await queryClient.fetchQuery({\n queryKey: ['getProperties', versionUid],\n queryFn: async () =>\n easClient.request(GET_PROPERTIES, {\n where: {\n refUID: {\n in: [versionUid],\n },\n decodedDataJson: {\n not: {\n // The first of many filters to keep bad data out\n contains:\n '\"value\":\"0x0000000000000000000000000000000000000000000000000000000000000020\"',\n },\n },\n },\n }),\n })\n\n // Filter properties by schemaId\n const selectedPropertiesMap: {\n [schemaId: string]: Attestation[]\n } = {}\n itemProperties.forEach((property) => {\n const existingProperties = selectedPropertiesMap[property.schemaId] || []\n existingProperties.push(property)\n selectedPropertiesMap[property.schemaId] = existingProperties\n })\n\n // For each schemaId, sort property Attestations by timeCreated DESC\n Object.keys(selectedPropertiesMap).forEach((schemaId) => {\n const sorted = selectedPropertiesMap[schemaId].sort((a, b) => {\n return a.timeCreated - b.timeCreated\n })\n selectedPropertiesMap[schemaId] = sorted\n })\n\n Object.keys(selectedPropertiesMap).forEach((schemaId) => {\n // TODO: Finish this logic\n // console.log('[singleItemActors] [fetchDataFromEas] schemaId', schemaId)\n // sendBack({ type: 'addPropertyAttestation', schemaId })\n })\n\n // Attach processed properties to the itemService/itemMachine context\n sendBack({\n type: 'updatedPropertiesBySchemaUid',\n propertiesBySchemaUid: selectedPropertiesMap,\n })\n }\n\n _fetchDataFromEas().then(() => {\n sendBack({ type: 'fetchDataFromEasSuccess' })\n })\n})\n","import { EventObject, fromCallback } from 'xstate'\nimport { FromCallbackInput } from '@/types/machines'\nimport { ItemMachineContext } from '@/types/item'\n\nexport const reload = fromCallback<\n EventObject,\n FromCallbackInput<ItemMachineContext<any>>\n>(({ sendBack, input: { context } }) => {\n const { propertyInstances } = context\n\n const _reload = async () => {\n if (!propertyInstances) {\n return\n }\n\n for (const propertyInstance of propertyInstances.values()) {\n if (propertyInstance) {\n const propertyRecordSchema = propertyInstance.propertyDef\n if (\n propertyRecordSchema &&\n propertyRecordSchema.storageType &&\n propertyRecordSchema.storageType === 'ItemStorage'\n ) {\n propertyInstance.getService().send({ type: 'reload' })\n }\n }\n }\n }\n\n _reload().then(() => {\n sendBack({ type: 'reloadSuccess' })\n })\n})\n","import { assign, setup } from 'xstate'\nimport { MachineIds } from '@/services/internal/constants'\nimport { ItemMachineContext } from '@/types'\nimport { waitForDb } from './actors/waitForDb'\nimport { initialize } from './actors/initialize'\nimport { hydrateExistingItem } from './actors/hydrateExistingItem'\nimport { hydrateNewItem } from './actors/hydrateNewItem'\nimport { fetchDataFromEas } from './actors/fetchDataFromEas'\nimport { reload } from './actors/reload'\nimport { IItemProperty } from '@/interfaces'\n\nexport const itemMachineSingle = setup({\n types: {\n context: {} as ItemMachineContext<any>,\n input: {},\n },\n actors: {\n waitForDb,\n initialize,\n hydrateExistingItem,\n hydrateNewItem,\n fetchDataFromEas,\n reload,\n },\n}).createMachine({\n id: MachineIds.ITEM,\n initial: 'waitingForDb',\n context: ({ input }) => input as ItemMachineContext<any>,\n on: {\n updatedPropertiesBySchemaUid: {\n actions: assign({\n propertiesBySchemaUid: ({ event }) => event.propertiesBySchemaUid,\n }),\n },\n updatePropertiesMetadata: {\n actions: assign({\n propertiesMetadata: ({ event }) => event.propertiesMetadata,\n }),\n },\n updateProperties: {\n actions: assign({\n propertiesUpdatedAt: Date.now(),\n }),\n },\n updateValue: {\n actions: assign(({ event, context }) => {\n let { propertyInstances } = context\n if (!propertyInstances) {\n propertyInstances = new Map<string, IItemProperty<any>>()\n }\n const { propertyName, propertyValue } = event\n\n if (!propertyInstances.has(propertyName)) {\n return {\n [propertyName]: propertyValue,\n }\n }\n const propertyInstance = propertyInstances.get(\n propertyName,\n ) as IItemProperty<any>\n\n propertyInstance.value = propertyValue\n propertyInstances.set(propertyName, propertyInstance)\n // TODO: use immer here\n return {\n propertyInstances,\n }\n }),\n },\n addPropertyInstance: {\n actions: assign(({ context, event }) => {\n const propertyInstances =\n context.propertyInstances || new Map<string, IItemProperty<any>>()\n propertyInstances.set(event.propertyName, event.propertyInstance)\n return {\n propertyInstances,\n }\n }),\n },\n reload: '.reloading',\n },\n states: {\n idle: {},\n waitingForDb: {\n on: {\n waitForDbSuccess: 'initializing',\n },\n invoke: {\n src: 'waitForDb',\n },\n },\n initializing: {\n on: {\n hasExistingItem: {\n target: 'idle',\n actions: assign({\n modelTableName: ({ event }) => event.modelTableName,\n modelNamePlural: ({ event }) => event.modelNamePlural,\n modelName: ({ event }) => event.modelName,\n existingItem: ({ event }) => event.existingItem,\n }),\n },\n isNewItem: {\n target: 'idle',\n actions: assign({\n modelTableName: ({ event }) => event.modelTableName,\n modelNamePlural: ({ event }) => event.modelNamePlural,\n modelName: ({ event }) => event.modelName,\n }),\n },\n },\n invoke: {\n src: 'initialize',\n input: ({ context, event }) => ({ context, event }),\n },\n },\n hydratingExistingItem: {\n on: {\n hydrateExistingItemSuccess: 'idle',\n hydrateExistingItemFailure: 'destroying',\n },\n invoke: {\n src: 'hydrateExistingItem',\n input: ({ event, context }) => ({ event, context }),\n },\n },\n hydratingNewItem: {\n on: {\n hydrateNewItemSuccess: 'idle',\n },\n invoke: {\n src: 'hydrateNewItem',\n input: ({ context }) => ({ context }),\n },\n },\n fetchingRemoteData: {\n on: {\n fetchRemoteDataSuccess: 'idle',\n },\n invoke: {\n src: 'fetchRemoteData',\n input: ({ context }) => ({ context }),\n },\n },\n reloading: {\n on: {\n reloadSuccess: 'idle',\n },\n invoke: {\n src: 'reload',\n input: ({ context }) => ({ context }),\n },\n },\n destroying: {\n type: 'final',\n },\n },\n})\n","import { and, eq, getTableColumns, or, SQL, sql } from 'drizzle-orm'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { metadata } from '@/seedSchema'\n\nexport const getMetadataLatest = ({seedLocalId, seedUid}: {seedLocalId?: string, seedUid?: string}) => {\n const appDb = BaseDb.getAppDb()\n\n const whereClauses: SQL[] = []\n\n if (seedLocalId) {\n whereClauses.push(eq(metadata.seedLocalId, seedLocalId))\n }\n\n if (seedUid) {\n whereClauses.push(eq(metadata.seedUid, seedUid))\n }\n\n const metadataColumns = getTableColumns(metadata)\n\n return appDb.$with('metadataLatest').as(\n appDb\n .select({\n ...metadataColumns,\n rowNum: sql.raw(`\n ROW_NUMBER() OVER (\n PARTITION BY property_name \n ORDER BY COALESCE(created_at, attestation_created_at) DESC\n )\n `).as('rowNum')\n })\n .from(metadata)\n .where(and(...whereClauses))\n )\n}\n","import { GetItemProperties, PropertyData } from '@/types'\nimport { metadata, seeds, versions } from '@/seedSchema'\nimport { and, eq, getTableColumns, isNotNull, isNull, sql, SQL } from 'drizzle-orm'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { getMetadataLatest } from './subqueries/metadataLatest'\n\n\nexport const getItemProperties: GetItemProperties = async ({\n seedLocalId,\n seedUid,\n edited,\n}) => {\n const appDb = BaseDb.getAppDb()\n\n const whereClauses: SQL[] = [isNotNull(metadata.propertyName)]\n\n if (seedUid) {\n whereClauses.push(eq(seeds.uid, seedUid))\n }\n\n if (seedLocalId) {\n whereClauses.push(eq(seeds.localId, seedLocalId))\n }\n\n whereClauses.push(isNotNull(metadata.propertyName))\n\n if (typeof edited !== 'undefined') {\n if (edited) {\n whereClauses.push(isNull(metadata.uid))\n }\n if (!edited) {\n whereClauses.push(isNotNull(metadata.uid))\n }\n }\n\n // const metadataColumns = getTableColumns(metadata)\n\n const metadataLatest = getMetadataLatest({seedLocalId, seedUid})\n\n const propertiesData = await appDb\n .with(metadataLatest)\n .select()\n .from(metadataLatest)\n .where(eq(metadataLatest.rowNum, 1))\n\n return propertiesData.map(data => ({\n ...data,\n localId: data.localId || '',\n uid: data.uid || '',\n propertyName: data.propertyName || '',\n propertyValue: data.propertyValue || '',\n schemaUid: data.schemaUid || '',\n modelType: data.modelType || '',\n seedLocalId: data.seedLocalId || '',\n })) as PropertyData[]\n}\n","import { versions } from '@/seedSchema'\nimport { count, max } from 'drizzle-orm'\nimport { BaseDb } from '@/db/Db/BaseDb'\n\nexport const getVersionData = () => {\n const appDb = BaseDb.getAppDb()\n\n return appDb.$with('versionData').as(\n appDb\n .select({\n seedLocalId: versions.seedLocalId,\n seedUid: versions.seedUid,\n latestVersionUid: versions.uid,\n latestVersionLocalId: versions.localId,\n versionsCount: count(versions.localId).as('versionsCount'),\n lastVersionPublishedAt: max(versions.attestationCreatedAt).as(\n 'lastVersionPublishedAt',\n ),\n lastLocalUpdateAt: max(versions.createdAt).as('lastLocalUpdateAt'),\n })\n .from(versions)\n .groupBy(versions.seedLocalId),\n )\n}\n","import { BaseDb } from '@/db/Db/BaseDb'\nimport { seeds, SeedType } from '@/seedSchema'\nimport { eq } from 'drizzle-orm'\n\ntype GetSeedDataProps = {\n seedLocalId?: string\n seedUid?: string\n}\n\ntype GetSeedData = (props: GetSeedDataProps) => Promise<SeedType | undefined>\n\nexport const getSeedData: GetSeedData = async ({ seedLocalId, seedUid }) => {\n const appDb = BaseDb.getAppDb()\n\n let query\n\n const queryBase = appDb.select().from(seeds)\n\n if (seedLocalId) {\n query = queryBase.where(eq(seeds.localId, seedLocalId))\n }\n\n if (seedUid) {\n query = queryBase.where(eq(seeds.uid, seedUid))\n }\n\n const rows = await query\n\n if (!rows || !rows.length) {\n return\n }\n\n return rows[0]\n}\n","import { GetItemData, ItemData } from \"@/types\"\nimport debug from \"debug\"\nimport { BaseDb } from \"../Db/BaseDb\"\nimport { and, eq, getTableColumns, gt, SQL, sql } from \"drizzle-orm\"\nimport { getItemProperties } from \"./getItemProperties\"\nimport { getVersionData } from \"./subqueries/versionData\"\nimport { seeds } from \"@/seedSchema\"\nimport { getSeedData } from \"./getSeedData\"\n\nconst logger = debug('app:db:read:getItemData')\n\nexport const getItemData: GetItemData = async ({\n modelName,\n seedLocalId,\n seedUid,\n}) => {\n if (!seedLocalId && !seedUid) {\n throw new Error('[db/queries] [getItem] no seedLocalId or seedUid')\n }\n\n if (seedUid && !seedLocalId) {\n const seedData = await getSeedData({ seedUid })\n if (!seedData) {\n logger('[db/queries] [getItem] no seedData seedUid', seedUid)\n return\n }\n seedLocalId = seedData.localId\n }\n\n const appDb = BaseDb.getAppDb()\n\n const { localId, uid, ...rest } = getTableColumns(seeds)\n\n const whereClauses: SQL[] = []\n\n if (modelName) {\n whereClauses.push(eq(seeds.type, modelName.toLowerCase()))\n }\n\n if (seedUid) {\n whereClauses.push(eq(seeds.uid, seedUid))\n }\n\n if (seedLocalId && !seedUid) {\n whereClauses.push(eq(seeds.localId, seedLocalId))\n }\n\n const versionData = getVersionData()\n\n const itemDataRows = await appDb\n .with(versionData)\n .select({\n ...rest,\n seedLocalId: seeds.localId,\n seedUid: seeds.uid,\n versionsCount: versionData.versionsCount,\n lastVersionPublishedAt: versionData.lastVersionPublishedAt,\n latestVersionUid: versionData.latestVersionUid,\n latestVersionLocalId: versionData.latestVersionLocalId,\n })\n .from(seeds)\n .leftJoin(versionData, eq(seeds.localId, versionData.seedLocalId))\n .where(and(...whereClauses, gt(versionData.versionsCount, 0)))\n .orderBy(sql.raw('COALESCE(attestation_created_at, created_at) DESC'))\n .groupBy(seeds.localId) as ItemData[]\n\n if (!itemDataRows || itemDataRows.length === 0) {\n logger('[db/queries] [getItemDataFromDb] no itemDataRows')\n return\n }\n\n let itemData = itemDataRows[0] as ItemData & { [key: string]: any }\n\n const propertiesData = await getItemProperties({\n seedLocalId,\n seedUid: itemData.seedUid || undefined,\n })\n\n if (!propertiesData || propertiesData.length === 0) {\n return itemData\n }\n\n for (const propertyData of propertiesData) {\n const propertyName = propertyData.propertyName\n\n let propertyValue = propertyData.propertyValue\n\n if (propertyName.endsWith('Id') || propertyName.endsWith('Ids')) {\n if (propertyData.refSeedType) {\n const propertyNameVariant = propertyName.replace(/Ids?$/, '')\n itemData[propertyNameVariant] = propertyValue\n }\n }\n\n itemData[propertyName] = propertyValue\n }\n\n if (itemData) return itemData\n}","import { ItemData } from '@/types'\nimport { and, eq, gt, isNotNull, isNull, or, SQL, sql } from 'drizzle-orm'\nimport { seeds } from '@/seedSchema'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { getVersionData } from './subqueries/versionData'\n\ntype GetItemsDataProps = {\n modelName?: string\n deleted?: boolean\n}\n\ntype GetItemsData = (props: GetItemsDataProps) => Promise<ItemData[]>\n\nexport const getItemsData: GetItemsData = async ({\n modelName,\n deleted,\n}): Promise<ItemData[]> => {\n const appDb = BaseDb.getAppDb()\n\n const conditions: SQL[] = []\n\n if (modelName) {\n conditions.push(eq(seeds.type, modelName.toLowerCase()))\n }\n\n if (deleted) {\n conditions.push(\n or(\n isNotNull(seeds._markedForDeletion),\n eq(seeds._markedForDeletion, 1),\n ) as SQL,\n )\n }\n\n if (!deleted) {\n conditions.push(\n or(\n isNull(seeds._markedForDeletion),\n eq(seeds._markedForDeletion, 0),\n ) as SQL,\n )\n }\n\n const versionData = getVersionData()\n\n let query = appDb\n .with(versionData)\n .select({\n seedLocalId: seeds.localId,\n seedUid: seeds.uid,\n schemaUid: seeds.schemaUid,\n modelName: sql<string>`${modelName}`,\n attestationCreatedAt: seeds.attestationCreatedAt,\n versionsCount: versionData.versionsCount,\n lastVersionPublishedAt: versionData.lastVersionPublishedAt,\n lastLocalUpdateAt: versionData.lastLocalUpdateAt,\n latestVersionUid: versionData.latestVersionUid,\n latestVersionLocalId: versionData.latestVersionLocalId,\n createdAt: seeds.createdAt,\n })\n .from(seeds)\n .leftJoin(versionData, eq(seeds.localId, versionData.seedLocalId))\n .where(and(gt(versionData.versionsCount, 0), ...conditions))\n .orderBy(sql.raw('COALESCE(attestation_created_at, created_at) DESC'))\n .groupBy(seeds.localId)\n\n const itemsData = (await query) as ItemData[]\n\n return itemsData\n}\n","import { EventObject, fromCallback } from 'xstate'\nimport { FromCallbackInput } from '@/types/machines'\nimport { PropertyMachineContext } from '@/types/property'\nimport fs from '@zenfs/core'\n\nexport const resolveRemoteStorage = fromCallback<\n EventObject,\n FromCallbackInput<PropertyMachineContext, EventObject>\n>(({ sendBack, input: { context } }) => {\n const { propertyInstances } = context\n\n if (!propertyInstances) {\n throw new Error(`propertyInstances not found for ${context.seedLocalId}`)\n }\n\n if (!propertyInstances.has('storageTransactionId')) {\n return\n }\n\n const storageTransactionId = propertyInstances.get('storageTransactionId')\n\n const _resolveRemoteStorage = async (): Promise<void> => {\n const path = await import('path-browserify')\n\n const filesDirExists = await fs.promises.exists('/files')\n\n if (!filesDirExists) {\n await fs.promises.mkdir('/files')\n }\n\n const htmlDir = path.join('/files', 'html')\n\n const htmlExists = await fs.promises.exists(htmlDir)\n\n if (htmlExists) {\n const htmlFiles = await fs.promises.readdir(htmlDir)\n const matchingHtmlFile = htmlFiles.find(\n (file) => file === `${storageTransactionId}.html`,\n )\n if (matchingHtmlFile) {\n const htmlString = await fs.promises.readFile(\n path.join(htmlDir, matchingHtmlFile),\n 'utf8',\n )\n sendBack({\n type: 'updateValue',\n propertyName: 'html',\n propertyValue: htmlString,\n })\n }\n }\n\n if (!htmlExists) {\n await fs.promises.mkdir(htmlDir)\n }\n\n const jsonDir = path.join('/files', 'json')\n\n const jsonExists = await fs.promises.exists(jsonDir)\n\n if (jsonExists) {\n const jsonFiles = await fs.promises.readdir(jsonDir)\n const matchingJsonFile = jsonFiles.find(\n (file) => file === `${storageTransactionId}.json`,\n )\n if (matchingJsonFile) {\n const jsonString = await fs.promises.readFile(\n path.join(jsonDir, matchingJsonFile),\n 'utf8',\n )\n sendBack({\n type: 'updateValue',\n propertyName: 'json',\n propertyValue: jsonString,\n })\n }\n }\n\n if (!jsonExists) {\n await fs.promises.mkdir(jsonDir)\n }\n }\n\n _resolveRemoteStorage().then(() => {\n sendBack({ type: 'resolveRemoteStorageSuccess' })\n return\n })\n})\n","import { EventObject, fromCallback } from 'xstate'\nimport { FromCallbackInput, PropertyMachineContext } from '@/types'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport debug from 'debug'\n\nconst logger = debug('app:ItemProperty:service:actors:waitForDb')\n\nexport const waitForDb = fromCallback<\n EventObject,\n FromCallbackInput<PropertyMachineContext>\n>(({ sendBack }) => {\n const _waitForDb = new Promise<void>((resolve) => {\n const interval = setInterval(() => {\n const appDb = BaseDb.getAppDb()\n if (appDb) {\n clearInterval(interval)\n resolve()\n }\n }, 100)\n })\n\n _waitForDb.then(() => {\n sendBack({ type: 'waitForDbSuccess' })\n })\n})\n","import { EventObject, fromCallback } from 'xstate'\nimport fs from '@zenfs/core'\nimport { FromCallbackInput } from '@/types/machines'\nimport { PropertyMachineContext } from '@/types/property'\nimport { getSchemaUidForSchemaDefinition } from '@/stores/eas'\n\nexport const initialize = fromCallback<\n EventObject,\n FromCallbackInput<PropertyMachineContext, EventObject>\n>(({ sendBack, input: { context } }) => {\n const { isRelation, propertyName, storageTransactionId } = context\n let { schemaUid } = context\n\n if (!schemaUid) {\n schemaUid = getSchemaUidForSchemaDefinition(propertyName)\n if (schemaUid) {\n sendBack({ type: 'updateContext', schemaUid })\n }\n }\n\n if (isRelation) {\n sendBack({ type: 'isRelatedProperty' })\n sendBack({ type: 'initializeSuccess' })\n return\n }\n\n if (!isRelation) {\n if (\n (propertyName !== 'html' && propertyName !== 'json') ||\n !storageTransactionId\n ) {\n sendBack({ type: 'initializeSuccess' })\n return\n }\n\n const _getContentsFromFileSystem = async () => {\n if (propertyName === 'html') {\n const htmlFilePath = `/files/html/${storageTransactionId}.html`\n const exists = await fs.promises.exists(htmlFilePath)\n if (!exists) {\n return\n }\n const renderValue = await fs.promises\n .readFile(`/files/html/${storageTransactionId}.html`, 'utf8')\n .catch((error) => {\n console.warn('Error reading html file', error)\n })\n sendBack({ type: 'updateContext', renderValue })\n return\n }\n if (propertyName === 'json') {\n const jsonFilePath = `/files/json/${storageTransactionId}.json`\n const exists = await fs.promises.exists(jsonFilePath)\n if (!exists) {\n return\n }\n const renderValue = await fs.promises\n .readFile(`/files/json/${storageTransactionId}.json`, 'utf8')\n .catch((error) => {\n console.warn('Error reading json file', error)\n })\n sendBack({ type: 'updateContext', renderValue })\n return\n }\n }\n\n _getContentsFromFileSystem().then(() => {\n sendBack({ type: 'initializeSuccess' })\n })\n }\n})\n","import { metadata } from '@/seedSchema'\nimport { and, eq } from 'drizzle-orm'\nimport { BaseDb } from '@/db/Db/BaseDb'\n\nconst seedUidToStorageTransactionId = new Map<string, string>()\n\ntype GetStorageTransactionIdResults = {\n storageTransactionId: string\n}[]\n\nexport const getStorageTransactionIdForSeedUid = async (\n seedUid: string,\n): Promise<string | undefined> => {\n if (seedUidToStorageTransactionId.has(seedUid)) {\n return seedUidToStorageTransactionId.get(seedUid)\n }\n\n const appDb = BaseDb.getAppDb()\n\n const results = (await appDb\n .select({\n storageTransactionId: metadata.propertyValue,\n })\n .from(metadata)\n .where(\n and(\n eq(metadata.seedUid, seedUid),\n eq(metadata.propertyName, 'storageTransactionId'),\n ),\n )) as GetStorageTransactionIdResults\n\n if (!results || results.length === 0) {\n return\n }\n\n seedUidToStorageTransactionId.set(seedUid, results[0].storageTransactionId)\n return results[0].storageTransactionId\n} ","import { metadata, MetadataType } from '@/seedSchema'\nimport { eq, max } from 'drizzle-orm'\nimport { BaseDb } from '@/db/Db/BaseDb'\n\nexport const getRelationValueData = async (\n propertyValue: any,\n): Promise<MetadataType | undefined> => {\n const appDb = BaseDb.getAppDb()\n\n const rows = (await appDb\n .select({\n propertyValue: metadata.propertyValue,\n attestationCreatedAt: max(metadata.attestationCreatedAt),\n refResolvedDisplayValue: metadata.refResolvedDisplayValue,\n refResolvedValue: metadata.refResolvedValue,\n refSeedType: metadata.refSeedType,\n easDataType: metadata.easDataType,\n })\n .from(metadata)\n .where(eq(metadata.propertyValue, propertyValue))) as MetadataType[]\n\n if (!rows || rows.length === 0) {\n return\n }\n\n return rows[0]\n} ","import { EventObject, fromCallback } from 'xstate'\nimport { convertTxIdToImageSrc } from '@/helpers'\nimport fs from '@zenfs/core'\nimport debug from 'debug'\nimport { FromCallbackInput } from '@/types/machines'\nimport { PropertyMachineContext } from '@/types/property'\nimport { getStorageTransactionIdForSeedUid } from '@/db/read/getStorageTransactionIdForSeedUid'\nimport { getRelationValueData } from '@/db/read/getRelationValueData'\n\nconst logger = debug('app:property:actors:resolveRelatedValue')\n\nconst storageTransactionIdToContentUrl = new Map<string, string>()\nconst refResolvedValueToContentUrl = new Map<string, string>()\nconst seedUidToContentUrl = new Map<string, string>()\n\nexport const resolveRelatedValue = fromCallback<\n EventObject,\n FromCallbackInput<PropertyMachineContext, EventObject>\n>(({ sendBack, input: { context } }) => {\n const {\n isRelation,\n propertyValue,\n propertyName,\n seedUid,\n propertyRecordSchema,\n populatedFromDb,\n schemaUid,\n } = context\n\n const _resolveRelatedValue = async () => {\n if (!propertyValue || !isRelation || populatedFromDb) {\n return\n }\n\n let parsedValue\n\n try {\n parsedValue = JSON.parse(propertyValue)\n } catch (error) {\n logger(`${propertyName} value is not a JSON string.`)\n }\n\n if (!parsedValue && seedUidToContentUrl.has(propertyValue)) {\n const contentUrl = seedUidToContentUrl.get(propertyValue)\n sendBack({\n type: 'updateContext',\n renderValue: contentUrl,\n })\n sendBack({\n type: 'resolvingRelatedValueSuccess',\n refResolvedDisplayValue: contentUrl,\n })\n return true\n }\n\n if (Array.isArray(propertyValue)) {\n // TODO: Handle array of seedUids\n logger(`${propertyName} value is an array of seedUids`)\n return\n }\n\n if (Array.isArray(parsedValue)) {\n logger(`${propertyName} value is a stringified array of seedUids`)\n return\n }\n\n const storageTransactionId =\n await getStorageTransactionIdForSeedUid(propertyValue)\n\n if (storageTransactionId) {\n if (storageTransactionIdToContentUrl.has(storageTransactionId)) {\n const contentUrl =\n storageTransactionIdToContentUrl.get(storageTransactionId)\n sendBack({\n type: 'updateContext',\n renderValue: contentUrl,\n })\n sendBack({\n type: 'resolvingRelatedValueSuccess',\n refResolvedDisplayValue: contentUrl,\n refResolvedValue: storageTransactionId,\n })\n return true\n }\n\n const contentUrl = await convertTxIdToImageSrc(storageTransactionId)\n if (contentUrl) {\n seedUidToContentUrl.set(propertyValue, contentUrl)\n }\n sendBack({\n type: 'updateContext',\n renderValue: contentUrl,\n })\n sendBack({\n type: 'resolvingRelatedValueSuccess',\n refResolvedDisplayValue: contentUrl,\n refResolvedValue: storageTransactionId,\n })\n return true\n }\n\n const relationValueData = await getRelationValueData(propertyValue)\n\n if (relationValueData) {\n const { refResolvedValue } = relationValueData\n const propertyValueFromDb = relationValueData.propertyValue\n\n // This handles a local-only relation value and resolves from the filesystem\n if (\n refResolvedValue &&\n propertyRecordSchema.dataType === 'Relation' &&\n propertyValueFromDb.length === 10 &&\n propertyRecordSchema.ref\n ) {\n if (refResolvedValueToContentUrl.has(refResolvedValue)) {\n const contentUrl = refResolvedValueToContentUrl.get(refResolvedValue)\n sendBack({\n type: 'updateContext',\n renderValue: contentUrl,\n })\n sendBack({\n type: 'resolvingRelatedValueSuccess',\n refResolvedDisplayValue: contentUrl,\n })\n return true\n }\n\n const fileExists = await fs.promises.exists(\n '/files/images/' + refResolvedValue,\n )\n if (fileExists) {\n const fileContents = await fs.promises.readFile(\n '/files/images/' + refResolvedValue,\n )\n const fileHandler = new File([fileContents], refResolvedValue)\n const contentUrl = URL.createObjectURL(fileHandler)\n refResolvedValueToContentUrl.set(refResolvedValue, contentUrl)\n sendBack({\n type: 'updateContext',\n renderValue: contentUrl,\n })\n sendBack({\n type: 'resolvingRelatedValueSuccess',\n refResolvedDisplayValue: contentUrl,\n })\n return true\n }\n }\n\n if (typeof propertyValueFromDb === 'string') {\n // Check files for a filename that matches the propertyValue\n if (\n propertyRecordSchema &&\n propertyRecordSchema.refValueType === 'ImageSrc'\n ) {\n let contentUrl\n\n if (storageTransactionIdToContentUrl.has(propertyValueFromDb)) {\n contentUrl =\n storageTransactionIdToContentUrl.get(propertyValueFromDb)\n }\n\n if (!contentUrl) {\n const imageFileExists = await fs.promises.exists(\n `/images/${propertyValue}`,\n )\n if (imageFileExists) {\n const fileContents = await fs.promises.readFile(\n `/images/${propertyValue}`,\n )\n const fileHandler = new File([fileContents], propertyValue)\n contentUrl = URL.createObjectURL(fileHandler)\n storageTransactionIdToContentUrl.set(\n propertyValueFromDb,\n contentUrl,\n )\n }\n }\n\n if (contentUrl) {\n sendBack({\n type: 'updateContext',\n renderValue: contentUrl,\n })\n sendBack({\n type: 'resolvingRelatedValueSuccess',\n refResolvedDisplayValue: contentUrl,\n })\n return true\n }\n }\n }\n }\n }\n\n _resolveRelatedValue().then((success) => {\n // if (success) {\n // sendBack({\n // type: 'resolvingRelatedValueDone',\n // })\n // }\n // return\n sendBack({\n type: 'resolvingRelatedValueDone',\n })\n })\n})\n\n// const eventKey = `storage.transaction.${initialValue}.contentUrl.response`\n//\n// const contentUrlListener = async (event) => {\n// console.log('[itemProperty] [constructor] contentUrlListener', event)\n// }\n//\n// eventEmitter.once(eventKey, contentUrlListener)\n//\n// const ready = getArePropertyEventHandlersReady()\n//\n// console.log('[itemProperty] [constructor] ready', ready)\n//\n// eventEmitter.emit('storage.transaction.contentUrl.request', {\n// storageTransactionId: initialValue,\n// })\n\n// Related property values can either be seedUid or seedUid[]\n// let relatedSeedUid: string\n// let relatedSeedUids: string[]\n//\n// if (Array.isArray(propertyValue)) {\n// relatedSeedUids = propertyValue\n// } else {\n// relatedSeedUid = propertyValue\n// }\n//\n// if (relatedSeedUid) {\n// console.log(\n// `[property/actors] [resolveRelatedValue] seedUid: ${relatedSeedUid}`,\n// )\n// const latestVersionOfRelatedSeedQuery = await appDb.run(\n// sql.raw(\n// `\n// SELECT local_id, uid, MAX(attestation_created_at)\n// FROM versions\n// WHERE seed_uid = '${relatedSeedUid}';\n// `,\n// ),\n// )\n// if (\n// latestVersionOfRelatedSeedQuery &&\n// latestVersionOfRelatedSeedQuery.rows &&\n// latestVersionOfRelatedSeedQuery.rows.length > 0\n// ) {\n// const latestVersionOfRelatedSeed =\n// latestVersionOfRelatedSeedQuery.rows[0]\n// console.log(\n// '[property/actors] [resolveRelatedValue] latestVersionOfRelatedSeed',\n// latestVersionOfRelatedSeed,\n// )\n// const storageIdQuery = await appDb.run(\n// sql.raw(\n// `\n// SELECT property_value, MAX(attestation_created_at), ref_resolved_display_value, ref_resolved_value\n// FROM metadata\n// WHERE seed_uid = '${relatedSeedUid}'\n// AND property_name = 'storageTransactionId';\n// `,\n// ),\n// )\n//\n// if (\n// storageIdQuery &&\n// storageIdQuery.rows &&\n// storageIdQuery.rows.length > 0\n// ) {\n// const storageId = storageIdQuery.rows[0][0]\n//\n// if (!storageId) {\n// console.error(\n// `storageId not found for ${propertyName} with relatedSeedUid ${relatedSeedUid}`,\n// )\n// }\n//\n// const refResolvedDisplayValue = storageIdQuery.rows[0][2]\n// let resolvedValue = storageIdQuery.rows[0][3]\n//\n// if (refResolvedDisplayValue && resolvedValue) {\n// sendBack({\n// type: 'resolvingRelatedValueSuccess',\n// refResolvedDisplayValue,\n// resolvedValue,\n// })\n// return\n// }\n//\n// console.log(\n// '[property/actors] [resolveRelatedValue] storageId',\n// storageId,\n// )\n//\n// const contentUrl = await convertTxIdToImageSrc(storageId)\n//\n// if (!contentUrl) {\n// throw new Error(\n// `contentUrl not found for ${propertyName} with relatedSeedUid ${relatedSeedUid}`,\n// )\n// }\n//\n// await appDb.run(\n// sql.raw(\n// `UPDATE metadata\n// SET ref_resolved_display_value = '${contentUrl}',\n// ref_resolved_value = '${storageId}'\n// WHERE seed_uid = '${relatedSeedUid}'\n// AND property_name = 'storageTransactionId';\n// `,\n// ),\n// )\n//\n// sendBack({\n// type: 'resolvingRelatedValueSuccess',\n// refResolvedDisplayValue: contentUrl,\n// resolvedValue: storageId,\n// })\n// }\n// }\n//\n// const versionUidQuery = await appDb.run(\n// sql.raw(\n// `\n// SELECT uid\n// FROM versions\n// WHERE seed_uid = '${relatedSeedUid}';\n// `,\n// ),\n// )\n//\n// if (\n// versionUidQuery &&\n// versionUidQuery.rows &&\n// versionUidQuery.rows.length > 0\n// ) {\n// const versionUids = versionUidQuery.rows.map((row) => row[0])\n// console.log(\n// '[property/actors] [resolveRelatedValue] versionUids',\n// versionUids,\n// )\n// const { itemProperties } = await easClient.request(GET_PROPERTIES, {\n// where: {\n// refUID: {\n// in: versionUids,\n// },\n// decodedDataJson: {\n// contains: 'storage_transaction_id',\n// },\n// },\n// })\n//\n// console.log(\n// '[property/actors] [resolveRelatedValue] itemProperties',\n// itemProperties,\n// )\n//\n// if (itemProperties && itemProperties.length > 0) {\n// await savePropertiesToDb(itemProperties)\n// }\n// }\n// }","import { metadata, MetadataType } from '@/seedSchema'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { eq } from 'drizzle-orm'\nimport { PropertyType } from '@/types'\nimport { BaseQueryClient } from '@/helpers/QueryClient/BaseQueryClient'\nimport { BaseEasClient } from '@/helpers/EasClient/BaseEasClient'\nimport { INTERNAL_DATA_TYPES } from '@/helpers/constants'\nimport { toSnakeCase } from 'drizzle-orm/casing'\nimport { Schema } from '@/graphql/gql/graphql'\nimport { GET_SCHEMA_BY_NAME } from '@/Item/queries'\n\ntype UpdateMetadata = (\n metadataValues: Partial<MetadataType>,\n propertyRecordSchema?: PropertyType | undefined,\n) => Promise<MetadataType>\n\nexport const updateMetadata: UpdateMetadata = async (metadataValues, propertyRecordSchema) => {\n const appDb = BaseDb.getAppDb()\n\n const { localId, ...rest } = metadataValues\n\n if (!localId) {\n throw new Error('No localId provided to updateMetadata')\n }\n \n const isItemStorage = propertyRecordSchema && propertyRecordSchema.storageType === 'ItemStorage'\n\n if (\n !isItemStorage && \n propertyRecordSchema &&\n (!metadataValues.schemaUid || metadataValues.schemaUid === 'undefined' )\n ) {\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n const easDataType = INTERNAL_DATA_TYPES[propertyRecordSchema.dataType].eas\n\n const propertyNameSnakeCase = toSnakeCase(metadataValues.propertyName)\n \n const queryResult = await queryClient.fetchQuery({\n queryKey: [`getSchemaByName${metadataValues.propertyName}`],\n queryFn: async (): Promise<{schemas: Schema[]}> =>\n easClient.request(GET_SCHEMA_BY_NAME, {\n where: {\n schema: {\n equals: `${easDataType} ${propertyNameSnakeCase}`,\n },\n },\n }),\n })\n\n if (queryResult && queryResult.schemas.length > 0) {\n metadataValues.schemaUid = queryResult.schemas[0].id\n }\n\n }\n\n await appDb.update(metadata).set(rest).where(eq(metadata.localId, localId))\n}\n","import { EventObject, fromCallback } from 'xstate'\nimport { and, eq, or, sql } from 'drizzle-orm'\nimport debug from 'debug'\nimport fs from '@zenfs/core'\nimport { metadata } from '@/seedSchema'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { updateMetadata } from '@/db/write/updateMetadata'\nimport { FromCallbackInput } from '@/types/machines'\nimport { PropertyMachineContext } from '@/types/property'\nimport path from 'path'\n\nconst logger = debug('app:property:actors:hydrateFromDb')\n\nexport const hydrateFromDb = fromCallback<\n EventObject,\n FromCallbackInput<PropertyMachineContext, EventObject>\n>(({ sendBack, input: { context } }) => {\n const {\n seedUid,\n seedLocalId,\n propertyName: propertyNameRaw,\n propertyRecordSchema,\n modelName,\n } = context\n\n let propertyName = propertyNameRaw\n\n if (\n propertyRecordSchema &&\n propertyRecordSchema.ref &&\n propertyRecordSchema.dataType === 'Relation' &&\n !propertyNameRaw.endsWith('Id')\n ) {\n propertyName = propertyNameRaw + 'Id'\n }\n\n if (\n propertyRecordSchema &&\n propertyRecordSchema.ref &&\n propertyRecordSchema.dataType === 'List' &&\n !propertyNameRaw.endsWith('Ids')\n ) {\n propertyName = propertyNameRaw + 'Ids'\n }\n\n const _hydrateFromDb = async () => {\n const appDb = BaseDb.getAppDb()\n\n const isRelation =\n propertyRecordSchema &&\n propertyRecordSchema.ref &&\n propertyRecordSchema.dataType === 'Relation'\n\n const whereClauses = []\n\n if (isRelation) {\n let missingPropertyNameVariant\n if (propertyName.endsWith('Id')) {\n missingPropertyNameVariant = propertyName.slice(0, -2)\n }\n if (!propertyName.endsWith('Id')) {\n missingPropertyNameVariant = propertyName + 'Id'\n }\n if (missingPropertyNameVariant) {\n whereClauses.push(\n or(\n eq(metadata.propertyName, propertyName),\n eq(metadata.propertyName, missingPropertyNameVariant),\n ),\n )\n }\n if (!missingPropertyNameVariant) {\n whereClauses.push(eq(metadata.propertyName, propertyName))\n }\n } else {\n whereClauses.push(eq(metadata.propertyName, propertyName))\n }\n\n if (seedUid) {\n whereClauses.push(eq(metadata.seedUid, seedUid))\n }\n\n if (seedLocalId) {\n whereClauses.push(eq(metadata.seedLocalId, seedLocalId))\n }\n\n const rows = await appDb\n .select()\n .from(metadata)\n .where(and(...whereClauses))\n .orderBy(sql.raw('COALESCE(attestation_created_at, created_at) DESC'))\n\n if (!rows || !rows.length) {\n return\n }\n\n const firstRow = rows[0]\n\n const {\n localId,\n uid,\n propertyName: propertyNameFromDb,\n propertyValue: propertyValueFromDb,\n seedLocalId: seedLocalIdFromDb,\n seedUid: seedUidFromDb,\n schemaUid: schemaUidFromDb,\n versionLocalId: versionLocalIdFromDb,\n versionUid: versionUidFromDb,\n refValueType,\n localStorageDir,\n } = firstRow\n\n let { refResolvedDisplayValue, refResolvedValue } = firstRow\n\n let propertyValueProcessed: string | string[] | undefined | null =\n propertyValueFromDb\n\n\n if (\n propertyRecordSchema &&\n propertyRecordSchema.refValueType === 'ImageSrc'\n ) {\n let shouldReadFromFile = true\n\n if (\n refResolvedValue &&\n refResolvedDisplayValue &&\n refResolvedDisplayValue.includes('http')\n ) {\n try {\n const response = await fetch(refResolvedDisplayValue, {\n method: 'HEAD',\n })\n\n // Check if the status is in the 200-299 range\n if (response.ok) {\n shouldReadFromFile = false\n }\n } catch (error) {\n shouldReadFromFile = true\n }\n }\n\n if (shouldReadFromFile) {\n let dir = localStorageDir\n if (\n !dir &&\n propertyRecordSchema &&\n propertyRecordSchema.refValueType === 'ImageSrc'\n ) {\n dir = 'images'\n }\n\n dir = dir!.replace(/^\\//, '')\n\n if (\n !refResolvedValue &&\n propertyValueFromDb &&\n propertyValueFromDb.length === 66\n ) {\n // Here the storageTransactionId is stored on a different record and\n // we want to add it as the refResolvedValue\n const storageTransactionQuery = await appDb\n .select({\n propertyValue: metadata.propertyValue,\n })\n .from(metadata)\n .where(\n and(\n eq(metadata.seedUid, propertyValueFromDb),\n or(\n eq(metadata.propertyName, 'storageTransactionId'),\n eq(metadata.propertyName, 'transactionId'),\n ),\n ),\n )\n\n if (storageTransactionQuery && storageTransactionQuery.length > 0) {\n const row = storageTransactionQuery[0]\n refResolvedValue = row.propertyValue\n await updateMetadata({\n localId,\n refResolvedValue,\n localStorageDir: '/images',\n })\n }\n }\n\n const dirPath = `/files/${dir}`\n const files = await fs.promises.readdir(dirPath)\n const matchingFiles = files.filter((file) => {\n return path.basename(file).includes(refResolvedValue!)\n })\n let fileExists = false\n let filename\n let filePath\n if (matchingFiles && matchingFiles.length > 0) {\n fileExists = true\n filename = matchingFiles[0]\n filePath = `/files/${dir}/${filename}`\n }\n if (fileExists && filename && filePath) {\n const fileContents = await fs.promises.readFile(filePath)\n const fileHandler = new File([fileContents], filename)\n refResolvedDisplayValue = URL.createObjectURL(fileHandler)\n await updateMetadata({\n localId,\n refResolvedValue: filename,\n })\n }\n }\n }\n\n if (\n propertyRecordSchema &&\n propertyRecordSchema.dataType === 'List' &&\n propertyRecordSchema.ref &&\n typeof propertyValueFromDb === 'string'\n ) {\n propertyValueProcessed = propertyValueFromDb.split(',')\n }\n\n sendBack({\n type: 'updateContext',\n localId,\n uid,\n propertyValue: propertyValueProcessed,\n seedLocalId: seedLocalIdFromDb,\n seedUid: seedUidFromDb,\n versionLocalId: versionLocalIdFromDb,\n versionUid: versionUidFromDb,\n schemaUid: schemaUidFromDb,\n refValueType,\n localStorageDir,\n refResolvedValue,\n refResolvedDisplayValue,\n renderValue: refResolvedDisplayValue,\n populatedFromDb: true,\n })\n\n if (\n propertyRecordSchema &&\n propertyRecordSchema.storageType &&\n propertyRecordSchema.storageType === 'ItemStorage'\n ) {\n const { Item } = await import(`@/browser/Item`)\n const item = await Item.find({\n seedLocalId,\n modelName,\n })\n if (item) {\n const filePath = `/files/${localStorageDir}/${refResolvedValue}`\n const exists = await fs.promises.exists(filePath)\n\n if (!exists) {\n return\n }\n\n const renderValue = await fs.promises.readFile(filePath, 'utf8')\n const property = item.properties[propertyName]\n property.getService().send({ type: 'updateContext', renderValue })\n return\n }\n }\n }\n\n _hydrateFromDb().then(() => {\n sendBack({ type: 'hydrateFromDbSuccess' })\n })\n})\n","import { versions, VersionsType } from '@/seedSchema'\nimport { and, eq } from 'drizzle-orm'\nimport { BaseDb } from '../Db/BaseDb'\n\ntype GetVersionDataProps = {\n localId?: string | null\n uid?: string\n seedLocalId?: string\n}\n\ntype GetVersionData = (\n props: GetVersionDataProps,\n) => Promise<VersionsType | undefined>\n\nexport const getVersionData: GetVersionData = async ({\n localId,\n seedLocalId,\n uid,\n}) => {\n const appDb = BaseDb.getAppDb()\n\n const whereClauses = []\n\n if (seedLocalId) {\n whereClauses.push(eq(versions.localId, seedLocalId))\n }\n\n if (localId) {\n whereClauses.push(eq(versions.localId, localId))\n }\n\n if (uid) {\n whereClauses.push(eq(versions.uid, uid))\n }\n\n const queryRows = await appDb\n .select()\n .from(versions)\n .where(and(...whereClauses))\n\n if (!queryRows || !queryRows.length) {\n return\n }\n\n return queryRows[0]\n}\n","import { escapeSqliteString } from '@/helpers/db'\nimport { metadata, MetadataType } from '@/seedSchema'\nimport { and, eq, sql } from 'drizzle-orm'\nimport { getSeedData } from '@/db/read/getSeedData'\nimport { getVersionData } from '@/db/read/getVersionData'\nimport { generateId } from '@/helpers'\nimport debug from 'debug'\nimport { eventEmitter } from '@/eventBus'\nimport { BaseDb } from '@/db/Db/BaseDb'\nconst logger = debug('app:write:updateItemPropertyValue')\n\nconst sendItemUpdateEvent = ({ modelName, seedLocalId, seedUid }: { modelName: string, seedLocalId: string, seedUid: string }) => {\n if (!modelName || (!seedLocalId && !seedUid)) {\n return\n }\n // eventEmitter.emit(`item.${modelName}.${seedUid || seedLocalId}.update`)\n}\n\ntype UpdateItemPropertyValueResult = {\n localId: string\n schemaUid: string\n}\n\ntype UpdateItemPropertyValue = (props: Partial<MetadataType>) => Promise<UpdateItemPropertyValueResult | undefined>\n\nexport const updateItemPropertyValue: UpdateItemPropertyValue = async ({\n localId,\n propertyName,\n newValue,\n seedUid,\n seedLocalId,\n modelName,\n refSeedType,\n refResolvedValue,\n refResolvedDisplayValue,\n versionLocalId,\n versionUid,\n schemaUid,\n localStorageDir,\n}) => {\n if (!localId && !seedLocalId) {\n logger(\n `[db/write] [updateItemPropertyValue] no propertyLocalId or seedLocalId for property: ${propertyName}`,\n )\n return\n }\n\n let safeNewValue = newValue\n\n if (\n typeof newValue === 'string' &&\n !refResolvedDisplayValue &&\n !refResolvedValue\n ) {\n safeNewValue = escapeSqliteString(newValue)\n }\n\n const appDb = BaseDb.getAppDb()\n\n const rows = await appDb\n .select()\n .from(metadata)\n .where(\n and(\n eq(metadata.propertyName, propertyName!),\n eq(metadata.seedLocalId, seedLocalId!),\n ),\n )\n .orderBy(sql.raw('COALESCE(attestation_created_at, created_at) DESC'))\n\n // const mostRecentRecordStatement = `SELECT local_id,\n // uid,\n // property_name,\n // property_value,\n // model_type,\n // seed_uid,\n // seed_local_id,\n // version_local_id,\n // version_uid,\n // schema_uid,\n // eas_data_type\n // FROM metadata\n // WHERE property_name = '${propertyName}'\n // AND seed_local_id = '${seedLocalId}'\n // ORDER BY COALESCE(attestation_created_at, created_at) DESC;`\n //\n // const { rows } = await runQueryForStatement(mostRecentRecordStatement)\n\n if (rows && rows.length > 0) {\n const {\n localId,\n uid,\n propertyName: propertyNameFromDb,\n propertyValue: propertyValueFromDb,\n modelType,\n seedUid,\n seedLocalId: seedLocalIdFromDb,\n versionLocalId,\n versionUid,\n schemaUid,\n easDataType,\n localStorageDir: localStorageDirFromDb,\n refSeedType: refSeedTypeFromDb,\n refResolvedValue: refResolvedValueFromDb,\n refResolvedDisplayValue: refResolvedDisplayValueFromDb,\n } = rows[0]\n\n if (\n propertyValueFromDb === newValue &&\n modelType === modelName?.toLowerCase() &&\n refSeedTypeFromDb === refSeedType &&\n refResolvedValueFromDb === refResolvedValue\n ) {\n logger(\n `[db/write] [updateItemPropertyValue] value is the same as most recent record for property: ${propertyNameFromDb}`,\n )\n return\n }\n\n // This means we already have a local-only record so we should just update that one\n if (!uid) {\n const updatePropertyStatement = `UPDATE metadata\n SET property_value = '${safeNewValue}',\n ref_seed_type = ${refSeedType ? `'${refSeedType}'` : 'NULL'},\n ref_resolved_value = ${refResolvedValue ? `'${refResolvedValue}'` : 'NULL'},\n ref_resolved_display_value = ${refResolvedDisplayValue ? `'${refResolvedDisplayValue}'` : 'NULL'},\n updated_at = ${Date.now()}\n WHERE local_id = '${localId}';`\n\n await appDb.run(sql.raw(updatePropertyStatement))\n\n sendItemUpdateEvent({ modelName, seedLocalId, seedUid })\n\n return\n }\n\n const seedDataFromDb = await getSeedData({ seedLocalId })\n const versionDataFromDb = await getVersionData({ localId: versionLocalId })\n\n // Here we don't have a local-only record so we need to create a new one\n const newLocalId = generateId()\n\n const newPropertyStatement = `INSERT INTO metadata (local_id,\n property_name,\n property_value,\n model_type,\n seed_uid,\n seed_local_id,\n version_local_id,\n version_uid,\n schema_uid,\n eas_data_type,\n ref_seed_type,\n ref_resolved_value,\n ref_resolved_display_value,\n local_storage_dir,\n created_at)\n VALUES ('${newLocalId}',\n '${propertyNameFromDb}',\n '${safeNewValue}',\n '${modelType || modelName?.toLowerCase()}',\n ${seedDataFromDb?.uid ? `'${seedDataFromDb.uid}'` : 'NULL'},\n '${seedLocalIdFromDb}',\n '${versionLocalId}',\n ${versionDataFromDb?.uid ? `'${versionDataFromDb.uid}'` : 'NULL'},\n '${schemaUid}',\n ${easDataType ? `'${easDataType}'` : 'NULL'},\n ${refSeedType ? `'${refSeedType}'` : 'NULL'},\n ${refResolvedValue ? `'${refResolvedValue}'` : 'NULL'},\n ${refResolvedDisplayValue ? `'${refResolvedDisplayValue}'` : 'NULL'},\n ${localStorageDir ? `'${localStorageDir}'` : 'NULL'},\n ${Date.now()});`\n\n await appDb.run(sql.raw(newPropertyStatement))\n\n sendItemUpdateEvent({ modelName, seedLocalId, seedUid })\n\n return {\n localId: newLocalId,\n schemaUid,\n }\n }\n\n // Here there are no records for this property on this seed so we should create one\n\n const newLocalId = generateId()\n\n if (!seedUid) {\n const seedData = await getSeedData({ seedLocalId })\n if (seedData) {\n seedUid = seedData.uid\n }\n }\n\n if (!versionUid) {\n const versionData = await getVersionData({ localId: versionLocalId })\n if (versionData) {\n versionUid = versionData.uid\n }\n }\n\n const newPropertyStatement = `INSERT INTO metadata (local_id,\n property_name,\n property_value,\n model_type,\n seed_uid,\n seed_local_id,\n version_local_id,\n version_uid,\n schema_uid,\n ref_seed_type,\n ref_resolved_value,\n ref_resolved_display_value,\n local_storage_dir,\n created_at)\n VALUES ('${newLocalId}',\n '${propertyName}',\n '${safeNewValue}',\n '${modelName?.toLowerCase()}',\n ${seedUid ? `'${seedUid}'` : 'NULL'},\n '${seedLocalId}',\n '${versionLocalId}',\n ${versionUid ? `'${versionUid}'` : 'NULL'},\n '${schemaUid}',\n ${refSeedType ? `'${refSeedType}'` : 'NULL'},\n ${refResolvedValue ? `'${refResolvedValue}'` : 'NULL'},\n ${refResolvedDisplayValue ? `'${refResolvedDisplayValue}'` : 'NULL'},\n ${localStorageDir ? `'${localStorageDir}'` : 'NULL'},\n ${Date.now()});`\n\n await appDb.run(sql.raw(newPropertyStatement))\n\n sendItemUpdateEvent({ modelName, seedLocalId, seedUid })\n\n return {\n localId: newLocalId,\n schemaUid,\n }\n\n if (!seedLocalId && propertyName && modelName && newValue) {\n // TODO: Does this ever happen? If so, what should we do?\n }\n}\n","import { EventObject, fromCallback } from 'xstate'\nimport { FromCallbackInput } from '@/types/machines'\nimport {\n ItemPropertyValueType,\n PropertyMachineContext,\n SaveValueToDbEvent,\n} from '@/types/property'\nimport { updateItemPropertyValue } from '@/db/write/updateItemPropertyValue'\n\nimport { getSchemaForItemProperty } from '@/helpers/getSchemaForItemProperty'\nimport { INTERNAL_DATA_TYPES } from '@/helpers/constants'\nimport { TypedData } from '@ethereum-attestation-service/eas-sdk/dist/offchain/typed-data-handler'\n\nexport const analyzeInput = fromCallback<\n EventObject,\n FromCallbackInput<PropertyMachineContext, SaveValueToDbEvent>\n>(({ sendBack, input: { context, event } }) => {\n const {\n localId,\n propertyName: propertyNameRaw,\n seedLocalId,\n versionLocalId,\n versionUid,\n propertyValue: existingValue,\n propertyRecordSchema,\n modelName,\n } = context\n\n let { schemaUid } = context\n\n let newValue: ItemPropertyValueType\n\n if (event) {\n newValue = event.newValue\n }\n\n if (existingValue === newValue) {\n sendBack({ type: 'saveValueToDbSuccess' })\n return\n }\n\n if (!propertyRecordSchema) {\n throw new Error('Missing propertyRecordSchema')\n }\n\n const _analyzeInput = async (): Promise<boolean> => {\n let propertyName = propertyNameRaw\n\n if (\n propertyRecordSchema.refValueType &&\n propertyRecordSchema.refValueType !== 'ImageSrc' &&\n propertyRecordSchema.dataType === 'Relation'\n ) {\n sendBack({\n type: 'saveRelation',\n newValue,\n })\n return false\n }\n\n if (\n propertyRecordSchema.refValueType === 'ImageSrc' ||\n propertyRecordSchema.dataType === 'ImageSrc'\n ) {\n sendBack({\n type: 'saveImageSrc',\n newValue,\n })\n return false\n }\n\n if (\n propertyRecordSchema.storageType &&\n propertyRecordSchema.storageType === 'ItemStorage'\n ) {\n sendBack({\n type: 'saveItemStorage',\n newValue,\n })\n return false\n }\n\n if (!schemaUid) {\n let easDataType\n\n if (propertyRecordSchema.dataType) {\n easDataType = INTERNAL_DATA_TYPES[propertyRecordSchema.dataType]\n .eas as TypedData['type']\n }\n\n const schemaFromEas = await getSchemaForItemProperty({\n propertyName,\n easDataType,\n })\n if (schemaFromEas) {\n schemaUid = schemaFromEas.id\n }\n }\n\n const result = await updateItemPropertyValue({\n localId,\n propertyName,\n newValue,\n seedLocalId,\n versionLocalId,\n versionUid,\n modelName,\n schemaUid,\n })\n\n let updatedContext: Partial<PropertyMachineContext> = {\n propertyValue: newValue,\n }\n\n if (localId) {\n updatedContext.localId = localId\n }\n\n if (schemaUid) {\n updatedContext.schemaUid = schemaUid\n }\n\n if (!localId && result?.localId) {\n updatedContext.localId = result.localId\n }\n\n if (!schemaUid && result?.schemaUid) {\n updatedContext.schemaUid = result.schemaUid\n }\n\n sendBack({\n type: 'updateContext',\n ...updatedContext,\n })\n\n return true\n }\n\n _analyzeInput().then((isDone) => {\n if (isDone) {\n sendBack({ type: 'saveValueToDbSuccess' })\n }\n })\n})\n","import { metadata, MetadataType } from '@/seedSchema'\nimport { BaseEasClient, BaseQueryClient, generateId } from '@/helpers'\nimport { PropertyType } from '@/types'\nimport { BaseDb } from '../Db/BaseDb'\nimport { GET_SCHEMA_BY_NAME, } from '@/Item/queries'\nimport { INTERNAL_DATA_TYPES } from '@/helpers/constants'\nimport { toSnakeCase } from 'drizzle-orm/casing'\nimport { Schema } from '@/graphql/gql/graphql'\nimport path from 'path'\nimport fs from '@zenfs/core'\n\ntype CreateMetadata = (\n metadataValues: Partial<MetadataType>,\n propertyRecordSchema?: PropertyType | undefined,\n) => Promise<MetadataType>\n\nexport const createMetadata: CreateMetadata = async (\n metadataValues,\n propertyRecordSchema?,\n) => {\n const appDb = BaseDb.getAppDb()\n\n metadataValues.localId = generateId()\n\n if (!metadataValues.modelType && metadataValues.modelName) {\n metadataValues.modelType = toSnakeCase(metadataValues.modelName)\n }\n\n const isItemStorage = propertyRecordSchema && propertyRecordSchema.storageType === 'ItemStorage'\n\n // if (\n // propertyRecordSchema &&\n // propertyRecordSchema.localStorageDir &&\n // isItemStorage\n // ) {\n // const filename = `${metadataValues.seedUid || metadataValues.seedLocalId}${propertyRecordSchema.filenameSuffix}`\n // const filePath = path.join(propertyRecordSchema.localStorageDir, filename)\n // await fs.promises.writeFile(filePath, metadataValues.propertyValue)\n // metadataValues.propertyValue = filename\n // metadataValues.refValueType = 'file'\n // }\n\n if (!isItemStorage && !metadataValues.schemaUid && propertyRecordSchema) {\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n const easDataType = INTERNAL_DATA_TYPES[propertyRecordSchema.dataType].eas\n\n const propertyNameSnakeCase = toSnakeCase(metadataValues.propertyName)\n \n const queryResult = await queryClient.fetchQuery({\n queryKey: [`getSchemaByName${metadataValues.propertyName}`],\n queryFn: async (): Promise<{schemas: Schema[]}> =>\n easClient.request(GET_SCHEMA_BY_NAME, {\n where: {\n schema: {\n equals: `${easDataType} ${propertyNameSnakeCase}`,\n },\n },\n }),\n })\n\n if (queryResult && queryResult.schemas.length > 0) {\n metadataValues.schemaUid = queryResult.schemas[0].id\n }\n\n }\n\n return appDb\n .insert(metadata)\n .values({\n ...metadataValues,\n createdAt: Date.now(),\n updatedAt: Date.now(),\n })\n .returning()\n}\n","import { EventObject, fromCallback } from 'xstate'\nimport { FromCallbackInput } from '@/types/machines'\nimport {\n ItemPropertyValueType,\n PropertyMachineContext,\n SaveValueToDbEvent,\n} from '@/types/property'\nimport { createSeed } from '@/db/write/createSeed'\nimport { getDataTypeFromString, getMimeType } from '@/helpers'\nimport { createVersion } from '@/db/write/createVersion'\nimport fs from '@zenfs/core'\nimport { createMetadata } from '@/db/write/createMetadata'\nimport { updateItemPropertyValue } from '@/db/write/updateItemPropertyValue'\nimport { getSchemaUidForSchemaDefinition } from '@/stores/eas'\nimport { getSchemaUidForModel } from '@/db/read/getSchemaUidForModel'\nimport { BaseFileManager } from '@/helpers/FileManager/BaseFileManager'\nimport { eventEmitter } from '@/eventBus'\nimport { ImageSize } from '@/helpers/constants'\n\n\n\nconst readFileAsArrayBuffer = async (file: File): Promise<ArrayBuffer> => {\n return new Promise((resolve) => {\n const reader = new FileReader()\n reader.onload = async (e) => {\n const arrayBuffer = e.target.result as ArrayBuffer\n\n resolve(arrayBuffer)\n }\n\n reader.readAsArrayBuffer(file)\n })\n}\n\nconst fetchImage = async (url: string) => {\n const response = await fetch(url)\n const mimeType = response.headers.get('Content-Type')\n const imageBuffer = await response.arrayBuffer()\n const bytes = new Uint8Array(imageBuffer)\n\n const binaryString = bytes.reduce(\n (acc, byte) => acc + String.fromCharCode(byte),\n '',\n )\n\n let base64 = btoa(binaryString)\n\n if (mimeType) {\n base64 = `data:${mimeType};base64,${base64}`\n }\n\n return base64\n}\n\nlet imageSchemaUid: string | undefined\n\nexport const saveImageSrc = fromCallback<\n EventObject,\n FromCallbackInput<PropertyMachineContext, SaveValueToDbEvent>\n>(({ sendBack, input: { context, event } }) => {\n const {\n localId,\n propertyName: propertyNameRaw,\n propertyValue: existingValue,\n propertyRecordSchema,\n modelName,\n seedLocalId,\n seedUid,\n versionLocalId,\n versionUid,\n } = context\n\n let { schemaUid } = context\n\n let newValue: ItemPropertyValueType\n\n if (event) {\n newValue = event.newValue\n }\n\n if (existingValue === newValue) {\n sendBack({ type: 'saveValueToDbSuccess' })\n return\n }\n\n const _saveImageSrc = async (): Promise<void> => {\n let propertyName = propertyNameRaw\n\n if (!propertyNameRaw.endsWith('Id')) {\n propertyName = `${propertyName}Id`\n }\n\n let newValueType\n let fileData: string | ArrayBuffer | undefined\n let mimeType\n let fileName\n\n if (!imageSchemaUid) {\n imageSchemaUid = await getSchemaUidForModel('Image')\n }\n\n if (typeof newValue === 'string') {\n newValueType = getDataTypeFromString(newValue)\n }\n\n if (newValueType === 'imageBase64') {\n mimeType = getMimeType(newValue as string)\n const base64Data = (newValue as string).split(',')[1] // Strip the Base64 prefix\n const binaryString = atob(base64Data)\n\n const binaryLength = binaryString.length\n const binaryArray = new Uint8Array(binaryLength)\n for (let i = 0; i < binaryLength; i++) {\n binaryArray[i] = binaryString.charCodeAt(i)\n }\n fileData = binaryArray.buffer\n }\n\n if (newValueType === 'url') {\n fileData = await fetchImage(newValue as string)\n }\n\n if (newValue instanceof File) {\n fileName = newValue.name\n mimeType = newValue.type\n fileData = await readFileAsArrayBuffer(newValue)\n }\n\n if (!fileData) {\n throw new Error('No file data found')\n }\n\n const newImageSeedLocalId = await createSeed({\n type: 'image',\n })\n\n if (!fileName) {\n fileName = newImageSeedLocalId\n if (mimeType) {\n fileName += `.${mimeType.split('/')[1]}`\n }\n }\n\n const filePath = `/files/images/${fileName}`\n\n const imageVersionLocalId = await createVersion({\n seedLocalId: newImageSeedLocalId,\n seedType: 'image',\n })\n\n if (fileData instanceof ArrayBuffer) {\n try {\n await BaseFileManager.saveFile(filePath, new Uint8Array(fileData))\n } catch (e) {\n fs.writeFileSync(filePath, new Uint8Array(fileData))\n eventEmitter.emit('file-saved', filePath)\n }\n }\n\n if (typeof fileData === 'string') {\n try {\n await BaseFileManager.saveFile(filePath, fileData)\n } catch (e) {\n fs.writeFileSync(filePath, fileData)\n eventEmitter.emit('file-saved', filePath)\n }\n }\n\n\n await BaseFileManager.resizeImage({filePath, width: ImageSize.EXTRA_SMALL, height: ImageSize.EXTRA_SMALL})\n await BaseFileManager.resizeImage({filePath, width: ImageSize.SMALL, height: ImageSize.SMALL})\n await BaseFileManager.resizeImage({filePath, width: ImageSize.MEDIUM, height: ImageSize.MEDIUM})\n await BaseFileManager.resizeImage({filePath, width: ImageSize.LARGE, height: ImageSize.LARGE})\n await BaseFileManager.resizeImage({filePath, width: ImageSize.EXTRA_LARGE, height: ImageSize.EXTRA_LARGE})\n\n const refResolvedDisplayValue = await BaseFileManager.getContentUrlFromPath(filePath)\n\n let newLocalId\n\n if (!localId) {\n const result = await createMetadata(\n {\n propertyName,\n propertyValue: newImageSeedLocalId,\n seedLocalId,\n seedUid,\n versionLocalId,\n versionUid,\n modelName,\n schemaUid,\n refSeedType: 'image',\n refModelUid: imageSchemaUid,\n refSchemaUid: imageSchemaUid,\n refResolvedDisplayValue,\n refResolvedValue: fileName,\n localStorageDir: '/images',\n easDataType: 'bytes32',\n },\n propertyRecordSchema,\n )\n\n newLocalId = result[0].localId\n }\n\n if (localId) {\n await updateItemPropertyValue({\n localId: localId,\n propertyName: propertyNameRaw,\n newValue: newImageSeedLocalId,\n seedLocalId,\n versionLocalId,\n modelName,\n schemaUid,\n refSeedType: 'image',\n refResolvedDisplayValue,\n refResolvedValue: fileName,\n refModelUid: imageSchemaUid,\n refSchemaUid: imageSchemaUid,\n localStorageDir: '/images',\n easDataType: 'bytes32',\n })\n }\n\n sendBack({\n type: 'updateContext',\n localId: newLocalId || localId,\n propertyValue: newImageSeedLocalId,\n refSeedType: 'image',\n refSchemaUid: imageSchemaUid,\n renderValue: refResolvedDisplayValue,\n refResolvedDisplayValue,\n refResolvedValue: fileName,\n localStorageDir: '/images',\n easDataType: 'bytes32',\n schemaUid,\n })\n }\n\n _saveImageSrc().then(() => {\n sendBack({ type: 'saveImageSrcSuccess' })\n })\n})\n","import { EventObject, fromCallback } from 'xstate'\nimport { FromCallbackInput } from '@/types/machines'\nimport {\n ItemPropertyValueType,\n PropertyMachineContext,\n SaveValueToDbEvent,\n} from '@/types/property'\nimport { getDataTypeFromString } from '@/helpers'\n\nexport const saveRelation = fromCallback<\n EventObject,\n FromCallbackInput<PropertyMachineContext, SaveValueToDbEvent>\n>(({ sendBack, input: { context, event } }) => {\n const {\n localId,\n propertyName: propertyNameRaw,\n versionLocalId,\n seedUid,\n seedLocalId,\n propertyValue: existingValue,\n propertyRecordSchema,\n } = context\n\n if (!propertyRecordSchema) {\n throw new Error('Missing propertyRecordSchema')\n }\n\n let newValue: ItemPropertyValueType\n\n if (event) {\n newValue = event.newValue\n }\n\n const _saveRelation = async (): Promise<boolean> => {\n let refResolvedDisplayValue\n let refSeedType\n let propertyName = propertyNameRaw\n let versionLocalIdToSave = versionLocalId\n\n const refResolvedValue = newValue\n\n if (!propertyName.endsWith('Id')) {\n propertyName = `${propertyName}Id`\n }\n\n let newValueType\n\n if (typeof newValue === 'string') {\n newValueType = getDataTypeFromString(newValue)\n }\n\n if (newValue instanceof File) {\n newValueType = 'file'\n }\n\n if (propertyRecordSchema.dataType === 'ImageSrc') {\n sendBack({\n type: 'saveImageSrc',\n newValue,\n newValueType,\n })\n return false\n }\n\n return true\n\n // let fileType\n //\n // const dirs = await fs.promises.readdir('/files')\n //\n // for (const dir of dirs) {\n // const files = await fs.promises.readdir(`/files/${dir}`)\n // if (newValue && files.includes(newValue as string)) {\n // fileType = dir\n // break\n // }\n // }\n //\n // if (newValue && fileType === 'images') {\n // const filePath = `/files/images/${newValue}`\n // refResolvedDisplayValue = await getContentUrlFromPath(filePath)\n // refSeedType = 'image'\n // newValue = await createSeed({\n // type: refSeedType,\n // })\n // await createVersion({\n // seedLocalId,\n // seedUid,\n // seedType: refSeedType,\n // })\n // }\n //\n // await updateItemPropertyValue({\n // propertyLocalId: localId,\n // propertyName,\n // newValue,\n // seedLocalId,\n // refSeedType,\n // refResolvedValue,\n // refResolvedDisplayValue,\n // versionLocalId,\n // modelName: itemModelName,\n // schemaUid,\n // })\n }\n\n _saveRelation().then((isDone) => {\n if (isDone) {\n sendBack({ type: 'saveRelationSuccess' })\n }\n })\n})\n","import { BaseDb } from '@/db/Db/BaseDb'\nimport { metadata, MetadataType } from '@/seedSchema'\nimport { and, eq, getTableColumns } from 'drizzle-orm'\n\ntype GetItemPropertyProps = Partial<MetadataType>\n\ntype GetItemPropertyData = (\n props: GetItemPropertyProps,\n) => Promise<Partial<MetadataType>>\n\nexport const getItemPropertyData: GetItemPropertyData = async (props) => {\n const appDb = BaseDb.getAppDb()\n\n const whereClauses = []\n\n const tableColumns = getTableColumns(metadata)\n\n for (const [propertyName, propertyValue] of Object.entries(props)) {\n if (Object.keys(tableColumns).includes(propertyName)) {\n whereClauses.push(eq(tableColumns[propertyName], propertyValue))\n }\n }\n\n const queryRows = await appDb\n .select()\n .from(metadata)\n .where(and(...whereClauses))\n\n if (!queryRows || queryRows.length === 0) {\n return\n }\n\n return queryRows[0]\n}\n","import { EventObject, fromCallback } from 'xstate'\nimport { FromCallbackInput } from '@/types/machines'\nimport {\n ItemPropertyValueType,\n PropertyMachineContext,\n SaveValueToDbEvent,\n} from '@/types/property'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { getItemPropertyData } from '@/db/read/getItemProperty'\nimport { getItemData } from '@/db/read/getItemData'\nimport { and, eq } from 'drizzle-orm'\nimport { metadata } from '@/seedSchema'\nimport { createMetadata } from '@/db/write/createMetadata'\nimport fs from '@zenfs/core'\nimport { BaseFileManager } from '@/helpers/FileManager/BaseFileManager'\n\nexport const saveItemStorage = fromCallback<\n EventObject,\n FromCallbackInput<PropertyMachineContext, SaveValueToDbEvent>\n>(({ sendBack, input: { context, event } }) => {\n const {\n localId,\n seedLocalId,\n seedUid,\n propertyName,\n propertyRecordSchema,\n modelName,\n propertyValue: existingValue,\n } = context\n\n if (!propertyRecordSchema) {\n throw new Error('Missing propertyRecordSchema')\n }\n\n let newValue: ItemPropertyValueType\n\n if (event) {\n newValue = event.newValue\n }\n\n if (existingValue === newValue) {\n sendBack({ type: 'saveValueToDbSuccess' })\n return\n }\n\n const _saveItemStorage = async (): Promise<boolean> => {\n // Save value to file\n const appDb = BaseDb.getAppDb()\n let propertyData\n\n if (localId) {\n propertyData = await getItemPropertyData({\n localId,\n })\n }\n\n if (!localId && seedLocalId) {\n const itemData = await getItemData({\n seedLocalId,\n })\n if (itemData) {\n const whereClauses = [\n eq(metadata.propertyName, propertyName),\n eq(metadata.seedLocalId, seedLocalId),\n ]\n\n if (itemData.latestVersionLocalId) {\n whereClauses.push(\n eq(metadata.versionLocalId, itemData.latestVersionLocalId),\n )\n }\n\n const queryRows = await appDb\n .select()\n .from(metadata)\n .where(and(...whereClauses))\n\n if (queryRows && queryRows.length) {\n propertyData = queryRows[0]\n }\n\n if (!propertyData && newValue) {\n\n const filename = `${seedUid || seedLocalId}${propertyRecordSchema.filenameSuffix}`\n const writeToPath = `/files/${propertyRecordSchema.localStorageDir}/${filename}`\n await BaseFileManager.saveFile(writeToPath, newValue as string | Blob | ArrayBuffer)\n\n const propertyDataRows = await createMetadata(\n {\n propertyName,\n propertyValue: filename,\n modelType: modelName.toLowerCase(),\n seedLocalId,\n seedUid,\n versionLocalId: itemData.latestVersionLocalId,\n versionUid: itemData.latestVersionUid,\n localStorageDir: propertyRecordSchema.localStorageDir,\n refValueType: 'file',\n },\n propertyRecordSchema,\n )\n\n propertyData = propertyDataRows[0]\n }\n\n // propertyData = {\n // propertyName,\n // seedLocalId,\n // seedUid,\n // versionLocalId: itemData.latestVersionLocalId,\n // versionUid: itemData.latestVersionUid,\n // schemaUid: itemData.schemaUid,\n // }\n }\n }\n\n const localStorageDir =\n propertyRecordSchema.localStorageDir || propertyData.localStorageDir\n const fileName =\n propertyData.refResolvedValue ||\n `${propertyData.seedUid || propertyData.seedLocalId}${propertyRecordSchema.filenameSuffix}`\n\n if (!localStorageDir || !fileName) {\n throw new Error(\n `Missing localStorageDir: ${localStorageDir} or fileName: ${fileName}`,\n )\n }\n\n const filePath = `/files/${localStorageDir}/${fileName}`\n try {\n await BaseFileManager.saveFile(filePath, newValue as string | Blob | ArrayBuffer)\n } catch (error) {\n fs.writeFileSync(filePath, newValue)\n }\n\n await appDb\n .update(metadata)\n .set({\n refResolvedValue: fileName,\n })\n .where(eq(metadata.localId, propertyData.localId))\n\n sendBack({\n type: 'updateContext',\n renderValue: newValue,\n })\n\n return true\n }\n\n _saveItemStorage().then((success) => {\n if (success) {\n sendBack({ type: 'saveItemStorageSuccess' })\n }\n })\n})\n","import { assign, setup } from 'xstate'\nimport { PropertyMachineContext } from '@/types'\n\nimport { resolveRemoteStorage } from '@/ItemProperty/service/actors/resolveRemoteStorage'\nimport { waitForDb } from '@/ItemProperty/service/actors/waitForDb'\nimport { initialize } from '@/ItemProperty/service/actors/initialize'\nimport { resolveRelatedValue } from '@/ItemProperty/service/actors/resolveRelatedValue'\nimport { hydrateFromDb } from '@/ItemProperty/service/actors/hydrateFromDb'\nimport {\n saveImageSrc,\n saveItemStorage,\n saveRelation,\n} from '@/ItemProperty/service/actors/saveValueToDb'\nimport { analyzeInput } from '@/ItemProperty/service/actors/saveValueToDb/analyzeInput' // import { updateMachineContext } from '@/helpers'\n// import { updateMachineContext } from '@/helpers'\n\nexport const propertyMachine = setup({\n types: {\n context: {} as PropertyMachineContext,\n input: {} as PropertyMachineContext,\n },\n // actions: {\n // updateContext: updateMachineContext,\n // },\n actors: {\n waitForDb,\n hydrateFromDb,\n initialize,\n resolveRelatedValue,\n resolveRemoteStorage,\n analyzeInput,\n saveImageSrc,\n saveRelation,\n saveItemStorage,\n },\n}).createMachine({\n id: 'itemProperty',\n initial: 'waitingForDb',\n context: ({ input }) => input as PropertyMachineContext,\n on: {\n // reload: '.hydratingFromDb',\n save: {\n actions: assign({\n isSaving: true,\n }),\n target: '.saving',\n },\n updateContext: {\n actions: assign(({ context, event }) => {\n const newContext = Object.assign({}, context)\n\n for (let i = 0; i < Object.keys(event).length; i++) {\n const key = Object.keys(event)[i]\n if (key === 'type') {\n continue\n }\n newContext[key] = event[key]\n }\n return newContext\n }),\n },\n },\n states: {\n idle: {},\n waitingForDb: {\n on: {\n waitForDbSuccess: {\n target: 'hydratingFromDb',\n actions: assign({\n isDbReady: true,\n }),\n },\n },\n invoke: {\n src: 'waitForDb',\n input: ({ context }) => ({ context }),\n },\n },\n hydratingFromDb: {\n on: {\n hydrateFromDbSuccess: 'initializing',\n },\n invoke: {\n src: 'hydrateFromDb',\n input: ({ context }) => ({ context }),\n },\n },\n initializing: {\n on: {\n initializeSuccess: 'idle',\n isRelatedProperty: {\n target: 'resolvingRelatedValue',\n },\n hasRemoteBackup: {\n target: 'resolvingRemoteStorage',\n },\n },\n invoke: {\n src: 'initialize',\n input: ({ context, event }) => ({ context, event }),\n },\n },\n resolvingRelatedValue: {\n on: {\n resolvingRelatedValueSuccess: {\n target: 'idle',\n actions: assign({\n refResolvedDisplayValue: ({ event }) =>\n event.refResolvedDisplayValue,\n refResolvedValue: ({ event }) => event.refResolvedValue,\n }),\n },\n resolvingRelatedValueDone: {\n target: 'idle',\n },\n },\n invoke: {\n src: 'resolveRelatedValue',\n input: ({ context }) => ({ context }),\n },\n },\n resolvingRemoteStorage: {\n on: {\n resolveRemoteStorageSuccess: {\n target: 'idle',\n },\n },\n invoke: {\n src: 'resolveRemoteStorage',\n input: ({ context }) => ({ context }),\n },\n },\n saving: {\n initial: 'analyzingInput',\n states: {\n analyzingInput: {\n on: {\n saveValueToDbSuccess: {\n target: 'doneSaving',\n },\n saveImageSrc: 'savingImageSrc',\n saveRelation: 'savingRelation',\n saveItemStorage: 'savingItemStorage',\n },\n invoke: {\n src: 'analyzeInput',\n input: ({ context, event }) => ({ context, event }),\n },\n },\n savingImageSrc: {\n on: {\n saveImageSrcSuccess: 'doneSaving',\n },\n invoke: {\n src: 'saveImageSrc',\n input: ({ context, event }) => ({ context, event }),\n },\n },\n savingRelation: {\n on: {\n saveRelationSuccess: 'doneSaving',\n },\n invoke: {\n src: 'saveRelation',\n input: ({ context, event }) => ({ context, event }),\n },\n },\n savingItemStorage: {\n on: {\n saveItemStorageSuccess: 'doneSaving',\n },\n invoke: {\n src: 'saveItemStorage',\n input: ({ context, event }) => ({ context, event }),\n },\n },\n doneSaving: {\n type: 'final',\n },\n },\n onDone: {\n target: 'idle',\n actions: assign(({ context }) => {\n return {\n isSaving: false,\n }\n }),\n },\n },\n },\n\n // conflict: {\n // on: {\n // resolveConflict: {\n // target: 'saving',\n // actions: assign({\n // data: ({ context, event }) => event.output,\n // }),\n // },\n // },\n // },\n})\n","import { PropertyData } from \"@/types\"\nimport { BaseDb } from \"@/db/Db/BaseDb\"\nimport { metadata, MetadataType } from \"@/seedSchema\"\nimport { or, eq, and, sql } from \"drizzle-orm\"\nimport { startCase } from \"lodash-es\"\nimport { GetPropertyDataOptions } from \"@/types/db\"\n\n\nexport const getPropertyData = async ({\n propertyName,\n seedLocalId,\n seedUid,\n}: GetPropertyDataOptions): Promise<PropertyData | undefined> => {\n const appDb = BaseDb.getAppDb()\n\n const whereClauses: any[] = [\n or(\n eq(metadata.propertyName, propertyName),\n eq(metadata.propertyName, propertyName + 'Id'),\n eq(metadata.propertyName, propertyName + 'Ids'),\n ),\n ]\n\n if (seedLocalId) {\n whereClauses.push(eq(metadata.seedLocalId, seedLocalId))\n }\n\n if (seedUid) {\n whereClauses.push(eq(metadata.seedUid, seedUid))\n }\n\n const rows = (await appDb\n .select()\n .from(metadata)\n .where(and(...whereClauses))\n .orderBy(\n sql.raw(`COALESCE(attestation_created_at, created_at) DESC`),\n )) as MetadataType[]\n\n if (!rows || rows.length === 0) {\n return\n }\n\n const row = rows[0]\n\n return {\n ...row,\n modelName: startCase(row.modelType),\n }\n} ","import { ActorRefFrom, createActor, SnapshotFrom, Subscription, waitFor } from 'xstate'\nimport { BehaviorSubject, Subscriber } from 'rxjs'\nimport { Static } from '@sinclair/typebox'\nimport { IItemProperty } from '@/interfaces/IItemProperty'\nimport { immerable } from 'immer'\nimport { CreatePropertyInstanceProps, PropertyMachineContext } from '@/types'\nimport { getModel } from '@/stores/modelClass'\nimport { propertyMachine } from './service/propertyMachine'\nimport { internalPropertyNames } from '@/helpers/constants'\nimport debug from 'debug'\nimport pluralize from 'pluralize'\nimport { eventEmitter } from '@/eventBus'\nimport fs from '@zenfs/core'\nimport { getPropertyData } from '@/db/read/getPropertyData'\nimport { getCorrectId } from '@/helpers'\nimport { TProperty } from '@/schema'\n\nconst logger = debug('app:property:class')\n\ntype ItemPropertyService = ActorRefFrom<typeof propertyMachine>\ntype ItemPropertySnapshot = SnapshotFrom<typeof propertyMachine>\n\ntype ItemPropertyFindProps = {\n propertyName: string\n propertyLocalId?: string\n seedLocalId?: string\n seedUid?: string\n}\n\nexport abstract class BaseItemProperty<PropertyType> implements IItemProperty<PropertyType> {\n protected static instanceCache: Map<\n string,\n { instance: BaseItemProperty<any>; refCount: number }\n > = new Map()\n protected readonly _service: ItemPropertyService\n protected _subject: BehaviorSubject<any>\n protected readonly _isRelation: boolean = false\n protected readonly _isList: boolean = false\n protected readonly _alias: string | undefined\n protected _subscription: Subscription\n protected _dataType: string | undefined\n protected _schemaUid: string | undefined\n [immerable] = true\n\n constructor(initialValues: Partial<CreatePropertyInstanceProps>) {\n const { modelName, propertyName, propertyValue, seedLocalId, seedUid, versionLocalId, versionUid, storageTransactionId, schemaUid } = initialValues\n\n if (!modelName) {\n throw new Error('Model name is required')\n }\n\n const ModelClass = getModel(modelName)\n\n if (!ModelClass) {\n throw new Error(`Model ${modelName} not found`)\n }\n\n if (!propertyName) {\n throw new Error(`Property name not provided`)\n }\n\n const serviceInput: Partial<PropertyMachineContext> = {\n propertyValue,\n propertyName,\n seedLocalId,\n seedUid,\n versionLocalId,\n versionUid,\n modelName: modelName,\n storageTransactionId,\n propertyRecordSchema: ModelClass.schema[propertyName],\n schemaUid,\n }\n\n\n\n if (!internalPropertyNames.includes(propertyName)) {\n let propertyNameWithoutId\n\n const propertyRecordSchema =\n ModelClass.schema[propertyNameWithoutId || propertyName]\n if (propertyRecordSchema) {\n this._dataType = propertyRecordSchema.dataType\n\n serviceInput.propertyRecordSchema = propertyRecordSchema\n\n if (propertyRecordSchema.dataType === 'Relation') {\n this._isRelation = true\n }\n\n if (\n propertyRecordSchema.dataType === 'List' &&\n propertyRecordSchema.ref\n ) {\n this._isList = true\n this._isRelation = true\n\n if (propertyValue) {\n try {\n serviceInput.propertyValue = JSON.parse(propertyValue)\n } catch (e) {\n logger('List property value is not JSON', e)\n }\n }\n\n const propertyNameSingular = pluralize(propertyName!, 1)\n\n this._alias = propertyName\n\n serviceInput.propertyName = `${propertyNameSingular}${propertyRecordSchema.ref}Ids`\n }\n\n if (!this._alias && propertyNameWithoutId) {\n this._alias = propertyNameWithoutId\n }\n }\n }\n\n serviceInput.isRelation = this._isRelation\n\n this._subject = new BehaviorSubject(propertyValue)\n this._service = createActor(propertyMachine, {\n input: serviceInput,\n })\n\n this._subscription = this._service.subscribe(\n async (snapshot: ItemPropertySnapshot) => {\n if (!snapshot || !snapshot.context) {\n return\n }\n\n const { context } = snapshot\n const { propertyRecordSchema } = context\n\n if (context.seedLocalId) {\n const cacheKey = BaseItemProperty.cacheKey(\n context.seedLocalId,\n context.propertyName,\n )\n if (!BaseItemProperty.instanceCache.has(cacheKey)) {\n BaseItemProperty.instanceCache.set(cacheKey, {\n instance: this,\n refCount: 1,\n })\n }\n }\n\n let renderValue\n\n if (\n propertyRecordSchema &&\n propertyRecordSchema.storageType &&\n propertyRecordSchema.storageType === 'ItemStorage' &&\n context.refResolvedValue &&\n context.localStorageDir\n ) {\n const filePath = `/files/${context.localStorageDir}/${context.refResolvedValue}`\n try {\n const exists = await fs.promises.exists(filePath)\n if (exists) {\n renderValue = await fs.promises.readFile(filePath, 'utf-8')\n }\n if (!exists) {\n renderValue = 'No file found'\n }\n } catch (e) {\n logger(\n `[ItemProperty] [${context.seedLocalId}] [${context.propertyName}] [storageType] error`,\n e,\n )\n renderValue = 'No file found'\n }\n }\n\n if (!renderValue) {\n renderValue = context.renderValue || context.propertyValue\n }\n\n let transformedPropertyName = propertyName\n\n const skipTransform =\n internalPropertyNames.includes(propertyName) || !!this._alias\n\n if (!skipTransform && transformedPropertyName.endsWith('Id')) {\n transformedPropertyName = transformedPropertyName.slice(0, -2)\n }\n\n if (!skipTransform && transformedPropertyName.endsWith('Ids')) {\n transformedPropertyName = transformedPropertyName.slice(0, -3)\n }\n\n if (skipTransform && this._alias) {\n transformedPropertyName = this._alias\n }\n\n if (skipTransform && !this._alias) {\n }\n\n if (this._subject.value === renderValue) {\n return\n }\n\n this._subject.next(renderValue)\n // TODO: Maybe have this only update the property?\n // if (context.seedLocalId || context.seedUid) {\n // eventEmitter.emit(`property.${context.seedUid || context.seedLocalId}.${propertyName}.update`)\n // }\n // if (context.seedUid) {\n // eventEmitter.emit(`item.${modelName}.${context.seedUid}.update`)\n // }\n },\n )\n\n this._service.start()\n }\n\n static PlatformClass: typeof BaseItemProperty\n\n static setPlatformClass(platformClass: typeof BaseItemProperty) {\n this.PlatformClass = platformClass\n }\n\n static create(\n props: Partial<CreatePropertyInstanceProps>,\n ): BaseItemProperty<any> | undefined {\n const { propertyName, seedLocalId, seedUid, versionLocalId, versionUid } =\n props\n if (!propertyName || (!seedLocalId && !seedUid)) {\n return\n }\n const cacheKey = this.cacheKey(\n (seedUid || seedLocalId) as string,\n propertyName,\n )\n if (seedLocalId && propertyName) {\n if (this.instanceCache.has(cacheKey)) {\n const { instance, refCount } = this.instanceCache.get(cacheKey)!\n this.instanceCache.set(cacheKey, {\n instance,\n refCount: refCount + 1,\n })\n return instance\n }\n if (!this.instanceCache.has(cacheKey)) {\n const newInstance = new this(props)\n this.instanceCache.set(cacheKey, {\n instance: newInstance,\n refCount: 1,\n })\n return newInstance\n }\n }\n if (seedUid && propertyName) {\n if (this.instanceCache.has(cacheKey)) {\n const { instance, refCount } = this.instanceCache.get(cacheKey)!\n this.instanceCache.set(cacheKey, { instance, refCount: refCount + 1 })\n return instance\n }\n if (!this.instanceCache.has(cacheKey)) {\n const newInstance = new this(props)\n this.instanceCache.set(cacheKey, { instance: newInstance, refCount: 1 })\n return newInstance\n }\n }\n return new this(props)\n }\n\n static async find({\n propertyName,\n seedLocalId,\n seedUid,\n }: ItemPropertyFindProps): Promise<IItemProperty<any> | undefined> {\n if ((!seedLocalId && !seedUid) || !propertyName) {\n return\n }\n const cacheKeyId = seedUid || seedLocalId\n const cacheKey = BaseItemProperty.cacheKey(cacheKeyId!, propertyName)\n if (this.instanceCache.has(cacheKey)) {\n const { instance, refCount } = this.instanceCache.get(cacheKey)!\n this.instanceCache.set(cacheKey, {\n instance,\n refCount: refCount + 1,\n })\n return instance\n }\n const propertyData = await getPropertyData({\n propertyName,\n seedLocalId,\n seedUid,\n })\n if (!propertyData) {\n return\n }\n return BaseItemProperty.create(propertyData)\n }\n\n static cacheKey(seedLocalIdOrUid: string, propertyName: string): string {\n const { uid, localId } = getCorrectId(seedLocalIdOrUid)\n return `Item_${uid || localId}_${propertyName}`\n }\n\n getService() {\n return this._service\n }\n\n private _getSnapshot(): ItemPropertySnapshot {\n return this._service.getSnapshot() as ItemPropertySnapshot\n }\n\n get localId() {\n return this._getSnapshot().context.localId\n }\n\n get uid() {\n return this._getSnapshot().context.uid\n }\n\n get seedLocalId() {\n return this._getSnapshot().context.seedLocalId\n }\n\n get seedUid() {\n return this._getSnapshot().context.seedUid\n }\n\n get schemaUid() {\n return this._getSnapshot().context.schemaUid\n }\n\n get propertyName() {\n if (this._alias) {\n return this._alias\n }\n return this._getSnapshot().context.propertyName\n }\n\n get modelName() {\n return this._getSnapshot().context.modelName\n }\n\n get propertyDef(): Static<typeof TProperty> | undefined {\n return this._getSnapshot().context.propertyRecordSchema\n }\n\n get localStoragePath(): string | void {\n if (this.propertyDef && this.propertyDef.localStorageDir) {\n return `/files${this.propertyDef.localStorageDir}/${this._getSnapshot().context.refResolvedValue}`\n }\n if (this._getSnapshot().context.localStorageDir) {\n return `/files${this._getSnapshot().context.localStorageDir}/${this._getSnapshot().context.refResolvedValue}`\n }\n }\n\n get versionLocalId(): string | undefined {\n return this._getSnapshot().context.versionLocalId\n }\n\n get status() {\n return this._getSnapshot().value\n }\n\n get alias() {\n return this._alias\n }\n\n get value() {\n // logger(\n // `[XXXXXXXXXX] [value] [get] subjectValue: ${this._subject.value} serviceValue: ${this._service.getSnapshot().context.renderValue}`,\n // )\n return this._subject.value\n }\n\n set value(value: any) {\n if (this._subject.value === value) {\n return\n }\n const context = this._service.getSnapshot().context\n if (!context.propertyRecordSchema) {\n this._subject.next(value)\n }\n this._service.send({\n type: 'save',\n newValue: value,\n })\n }\n\n get published(): boolean {\n return !!this._getSnapshot().context.uid\n }\n\n subscribe(callback: Partial<Subscriber<any>>) {\n return this._subject.subscribe(callback)\n }\n\n async save(): Promise<void> {\n await waitFor(\n this._service,\n (snapshot) => !snapshot.context.isSaving && snapshot.value === 'idle',\n {\n timeout: 10_000,\n },\n )\n // return new Promise((resolve) => {\n // const saveSub = this._service.subscribe((snapshot) => {\n // if (!snapshot.context.isSaving) {\n // saveSub.unsubscribe()\n // resolve()\n // }\n // })\n // })\n }\n\n unload() {\n this._service.stop()\n }\n} ","import { UploadProperty } from '@/db/read/getPublishUploads'\nimport { IItem } from '@/interfaces'\n\nexport const getSegmentedItemProperties = (item: IItem<any>) => {\n const itemBasicProperties = []\n const itemRelationProperties = []\n const itemListProperties = []\n const itemUploadProperties: UploadProperty[] = []\n const itemStorageProperties = []\n let itemStorageTransactionProperty: UploadProperty | undefined\n\n for (const itemProperty of Object.values(item.properties)) {\n if (!itemProperty.propertyDef) {\n continue\n }\n\n const isItemStorage =\n itemProperty.propertyDef.storageType &&\n itemProperty.propertyDef.storageType === 'ItemStorage'\n\n const isImageSrc =\n itemProperty.propertyDef.dataType === 'Relation' &&\n itemProperty.propertyDef.refValueType === 'ImageSrc'\n\n const isStorageTransaction =\n itemProperty.propertyName === 'storageTransactionId'\n\n if (itemProperty.propertyDef.dataType === 'Relation') {\n itemRelationProperties.push(itemProperty)\n continue\n }\n\n if (itemProperty.propertyDef.dataType === 'List') {\n itemListProperties.push(itemProperty)\n continue\n }\n\n if (isItemStorage) {\n itemStorageProperties.push(itemProperty)\n continue\n }\n\n if (isStorageTransaction) {\n itemStorageTransactionProperty = { itemProperty, childProperties: [] }\n continue\n }\n\n itemBasicProperties.push(itemProperty)\n }\n\n if (itemStorageTransactionProperty && itemStorageProperties.length > 0) {\n itemStorageTransactionProperty.childProperties = itemStorageProperties\n }\n\n if (itemStorageTransactionProperty) {\n itemUploadProperties.push(itemStorageTransactionProperty)\n }\n\n return {\n itemBasicProperties,\n itemRelationProperties,\n itemListProperties,\n itemUploadProperties,\n }\n}\n","import Transaction from 'arweave'\nimport { CreateTransactionInterface } from 'arweave/web'\nimport { getArweave } from '@/helpers/ArweaveClient'\nimport fs from '@zenfs/core'\nimport { getCorrectId } from '@/helpers'\nimport { getSegmentedItemProperties } from '@/helpers/getSegmentedItemProperties'\nimport debug from 'debug'\nimport { IItem, IItemProperty } from '@/interfaces'\nimport { getContentHash } from '@/helpers'\nimport { BaseItem } from '@/Item/BaseItem'\n\nconst logger = debug('app:item:getPublishUploads')\n\n\nexport const prepareArweaveTransaction = async (\n data: string | Uint8Array,\n contentHash: string | undefined,\n): Promise<Transaction> => {\n const transactionData: Partial<CreateTransactionInterface> = {\n data,\n tags: [],\n }\n\n const tx = await getArweave()!.createTransaction(transactionData)\n\n if (contentHash) {\n logger('contentHash', contentHash)\n logger('adding content hash tag to tx.id:', tx.id)\n tx.addTag('Content-SHA-256', contentHash)\n }\n\n return tx\n}\nexport type UploadProperty = {\n itemProperty: IItemProperty<any>\n childProperties: IItemProperty<any>[]\n}\ntype ChildUploadData = {\n propertyName: string\n localStoragePath: string\n}\nconst processUploadProperty = async (\n uploadProperty: UploadProperty,\n uploads: PublishUpload[],\n relatedItemProperty?: IItemProperty<any>,\n): Promise<PublishUpload[]> => {\n const itemProperty = uploadProperty.itemProperty\n\n const childUploads: ChildUploadData[] = []\n\n for (const childProperty of uploadProperty.childProperties) {\n const filePath = childProperty.localStoragePath\n\n if (!filePath || filePath.endsWith('undefined')) {\n continue\n }\n\n const exists = await fs.promises.exists(filePath)\n if (!exists) {\n continue\n }\n\n childUploads.push({\n propertyName: childProperty.propertyName,\n localStoragePath: filePath,\n })\n }\n\n let fileContents\n let transaction: Transaction\n\n if (!childUploads || childUploads.length === 0) {\n if (relatedItemProperty && relatedItemProperty.localStoragePath) {\n const filePath = relatedItemProperty.localStoragePath\n\n if (!filePath || filePath.endsWith('undefined')) {\n return uploads\n }\n\n const exists = await fs.promises.exists(filePath)\n if (!exists) {\n return uploads\n\n }\n\n try {\n fileContents = await fs.promises.readFile(filePath)\n } catch (e) {\n fileContents = fs.readFileSync(filePath)\n }\n }\n if (!fileContents) {\n return uploads\n }\n }\n\n if (childUploads.length > 0) {\n const separator = '===FILE_SEPARATOR==='\n // let compositeFileContents = `${itemProperty.propertyName}${separator}${mainFileContents}`\n let compositeFileContents = ''\n\n for (const childUpload of childUploads) {\n let childUploadContents\n\n try {\n childUploadContents = await fs.promises.readFile(\n childUpload.localStoragePath,\n )\n } catch (e) {\n childUploadContents = fs.readFileSync(childUpload.localStoragePath)\n }\n\n compositeFileContents += `${separator}${childUpload.propertyName}${separator}${childUploadContents}`\n }\n\n fileContents = Buffer.from(compositeFileContents)\n }\n\n if (!fileContents) {\n throw new Error(`No file contents found for ${itemProperty.propertyName}`)\n }\n\n const uint8Array = new Uint8Array(\n fileContents.buffer,\n fileContents.byteOffset,\n fileContents.byteLength,\n )\n\n const contentHash = await getContentHash(null, uint8Array)\n\n transaction = await prepareArweaveTransaction(fileContents, contentHash)\n\n let itemPropertyLocalId = relatedItemProperty\n ? relatedItemProperty.localId\n : itemProperty.localId\n let itemPropertyName = relatedItemProperty\n ? relatedItemProperty.propertyName\n : itemProperty.propertyName\n\n uploads.push({\n itemPropertyName,\n itemPropertyLocalId,\n seedLocalId: itemProperty.seedLocalId!,\n versionLocalId: itemProperty.versionLocalId!,\n transactionToSign: transaction,\n })\n\n return uploads\n}\nexport type PublishUpload = {\n itemPropertyName: string\n itemPropertyLocalId: string\n seedLocalId: string\n versionLocalId: string\n transactionToSign: Transaction\n}\nexport const getPublishUploads = async (\n item: IItem<any>,\n uploads: PublishUpload[] = [],\n relatedItemProperty?: IItemProperty<any>,\n) => {\n // if (item.modelName === 'Post') {\n // if (!item.authors) {\n // item.authors = [\n // 'Sr0bIx9Fwj',\n // '0xc2879650e9503a303ceb46f966e55baab480b267dc20cede23ef503622eee6d7',\n // ]\n // }\n // }\n\n const { itemUploadProperties, itemRelationProperties } =\n getSegmentedItemProperties(item)\n\n for (const uploadProperty of itemUploadProperties) {\n uploads = await processUploadProperty(\n uploadProperty,\n uploads,\n relatedItemProperty,\n )\n }\n\n for (const relationProperty of itemRelationProperties) {\n const propertyValue = relationProperty.getService().getSnapshot()\n .context.propertyValue\n\n if (!propertyValue || relationProperty.uid) {\n continue\n }\n\n const { localId: seedLocalId, uid: seedUid } = getCorrectId(propertyValue)\n\n const relatedItem = await BaseItem.find({\n seedLocalId,\n seedUid,\n })\n\n if (!relatedItem) {\n throw new Error(\n `No relatedItem found for ${relationProperty.propertyName}`,\n )\n }\n\n uploads = await getPublishUploads(relatedItem, uploads, relationProperty)\n }\n\n return uploads\n}\n","import { getItemData } from './getItemData'\nimport { GetItem } from '@/types'\nimport { BaseItem } from '@/Item/BaseItem'\nimport { startCase } from 'lodash-es'\n\nexport const getItem: GetItem = async ({ modelName, seedLocalId, seedUid }) => {\n const itemInitObj = await getItemData({\n modelName,\n seedLocalId,\n seedUid,\n })\n\n if (!itemInitObj) {\n console.error(\n `[db/queries] [getItem] no itemInitObj modelName: ${modelName} seedLocalId: ${seedLocalId} seedUid: ${seedUid}`,\n )\n return\n }\n\n if (!itemInitObj.seedLocalId) {\n console.error(\n `[db/queries] [getItem] no itemInitObj.seedLocalId modelName: ${modelName} seedLocalId: ${seedLocalId} seedUid: ${seedUid}`,\n )\n return\n }\n\n if (!itemInitObj.modelName && itemInitObj.type) {\n itemInitObj.modelName = startCase(itemInitObj.type)\n }\n\n return BaseItem.create(itemInitObj)\n}\n","import { getItem } from '@/db/read/getItem'\nimport {\n defaultAttestationData,\n INTERNAL_DATA_TYPES,\n VERSION_SCHEMA_UID_OPTIMISM_SEPOLIA,\n} from '@/helpers/constants'\nimport {\n AttestationRequest,\n SchemaEncoder,\n ZERO_BYTES32,\n} from '@ethereum-attestation-service/eas-sdk'\n\nimport { getSchemaForItemProperty } from '@/helpers/getSchemaForItemProperty'\nimport { toSnakeCase } from '@/helpers'\nimport pluralize from 'pluralize'\nimport { getSchemaUidForModel } from '@/db/read/getSchemaUidForModel'\nimport { getSchemaUidForSchemaDefinition } from '@/stores/eas'\nimport { getCorrectId } from '@/helpers'\nimport { getSegmentedItemProperties } from '@/helpers/getSegmentedItemProperties'\nimport { IItemProperty } from '@/interfaces'\nimport { IItem } from '@/interfaces'\nimport { BaseItem } from '@/Item/BaseItem'\n\nconst getVersionUid = (item: IItem<any>) => {\n let versionUid\n\n if (\n item.latestVersionUid &&\n item.latestVersionUid !== 'NULL' &&\n item.latestVersionUid !== 'undefined'\n ) {\n versionUid = item.latestVersionUid\n }\n return versionUid || ZERO_BYTES32\n}\n\nconst getPropertyData = async (itemProperty: IItemProperty<any>) => {\n const easDataType =\n INTERNAL_DATA_TYPES[itemProperty.propertyDef!.dataType].eas\n\n let schemaUid: string | undefined = itemProperty.schemaUid\n\n const propertyNameForSchema = toSnakeCase(itemProperty.propertyName)\n\n const schemaDef = `${easDataType} ${propertyNameForSchema}`\n\n if (!schemaUid) {\n schemaUid = getSchemaUidForSchemaDefinition(schemaDef)\n if (!schemaUid) {\n const schema = await getSchemaForItemProperty({\n propertyName: 'version',\n easDataType: 'bytes32',\n })\n if (schema) {\n schemaUid = schema.id\n }\n }\n }\n\n return {\n schemaUid,\n easDataType,\n schemaDef,\n propertyNameForSchema,\n }\n}\n\nconst processBasicProperties = async (\n itemBasicProperties: IItemProperty<any>[],\n itemPublishData: PublishPayload,\n): Promise<PublishPayload> => {\n for (const basicProperty of itemBasicProperties) {\n const value = basicProperty.getService().getSnapshot().context.propertyValue\n\n if (!value || basicProperty.uid) {\n continue\n }\n\n const { schemaUid, easDataType, schemaDef } =\n await getPropertyData(basicProperty)\n\n const propertyNameForSchema = toSnakeCase(basicProperty.propertyName)\n\n const data = [\n {\n name: propertyNameForSchema,\n type: easDataType,\n value,\n },\n ]\n\n const dataEncoder = new SchemaEncoder(schemaDef)\n\n const encodedData = dataEncoder.encodeData(data)\n\n itemPublishData.listOfAttestations.push({\n schema: schemaUid!,\n data: [\n {\n ...defaultAttestationData,\n data: encodedData,\n },\n ],\n })\n }\n\n return itemPublishData\n}\n\nconst processRelationProperty = async (\n relationProperty: IItemProperty<any>,\n multiPublishPayload: MultiPublishPayload,\n uploadedTransactions: UploadedTransaction[],\n originalSeedLocalId: string,\n): Promise<MultiPublishPayload> => {\n const value = relationProperty.getService().getSnapshot()\n .context.propertyValue\n if (!value || relationProperty.uid) {\n return multiPublishPayload\n }\n\n const { localId: seedLocalId, uid: seedUid } = getCorrectId(value)\n\n const relatedItem = await getItem({\n seedLocalId,\n seedUid,\n })\n\n if (!relatedItem) {\n throw new Error(\n `No related item found for relation property: ${relationProperty.propertyName}`,\n )\n }\n\n const versionUid = getVersionUid(relatedItem)\n\n const seedSchemaUid = await getSchemaUidForModel(\n relationProperty.propertyDef!.ref as string,\n )\n\n let publishPayload: PublishPayload = {\n localId: relationProperty.localId,\n seedIsRevocable: true,\n versionSchemaUid: VERSION_SCHEMA_UID_OPTIMISM_SEPOLIA,\n seedUid: seedUid || ZERO_BYTES32,\n seedSchemaUid,\n versionUid,\n listOfAttestations: [],\n propertiesToUpdate: [\n {\n publishLocalId: originalSeedLocalId,\n propertySchemaUid: relationProperty.schemaUid,\n },\n ],\n }\n\n const { itemBasicProperties, itemUploadProperties } =\n getSegmentedItemProperties(relatedItem)\n\n if (itemUploadProperties.length === 1) {\n const uploadProperty = itemUploadProperties[0]\n const itemProperty = uploadProperty.itemProperty\n const transactionData = uploadedTransactions.find(\n (transaction) => transaction.seedLocalId === relatedItem.seedLocalId,\n )\n if (transactionData) {\n itemProperty.value = transactionData.txId\n await itemProperty.save()\n itemBasicProperties.push(itemProperty)\n }\n }\n\n publishPayload = await processBasicProperties(\n itemBasicProperties,\n publishPayload,\n )\n\n multiPublishPayload.push(publishPayload)\n\n return multiPublishPayload\n}\n\nconst processListProperty = async (\n listProperty: IItemProperty<any>,\n multiPublishPayload: MultiPublishPayload,\n originalSeedLocalId: string,\n): Promise<MultiPublishPayload> => {\n let value = listProperty.getService().getSnapshot().context.propertyValue\n if (!value || listProperty.uid) {\n return multiPublishPayload\n }\n\n const singularPropertyName = pluralize.singular(listProperty.propertyName)\n const propertyNameForSchema = `${singularPropertyName}${listProperty.propertyDef!.ref}Ids`\n if (typeof value === 'string' && value.length === 66) {\n value = [value]\n }\n if (typeof value === 'string' && value.length > 66) {\n try {\n value = JSON.parse(value)\n } catch (error) {\n value = value.split(',')\n }\n }\n\n for (const seedId of value) {\n const { localId: seedLocalId, uid: seedUid } = getCorrectId(seedId)\n\n const relatedItem = await getItem({\n seedLocalId,\n seedUid,\n })\n\n if (!relatedItem) {\n console.error(\n `No related item found for list property: ${listProperty.propertyName}`,\n )\n continue\n }\n\n if (relatedItem.seedUid) {\n return multiPublishPayload\n }\n\n const versionUid = getVersionUid(relatedItem)\n\n const seedSchemaUid = await getSchemaUidForModel(\n listProperty.propertyDef!.ref as string,\n )\n\n let publishPayload: PublishPayload = {\n localId: relatedItem.seedLocalId,\n seedIsRevocable: true,\n versionSchemaUid: VERSION_SCHEMA_UID_OPTIMISM_SEPOLIA,\n seedUid: seedUid || ZERO_BYTES32,\n seedSchemaUid,\n versionUid,\n listOfAttestations: [],\n propertiesToUpdate: [\n {\n publishLocalId: originalSeedLocalId,\n propertySchemaUid: listProperty.schemaUid,\n },\n ],\n }\n\n const { itemBasicProperties } = getSegmentedItemProperties(relatedItem)\n\n publishPayload = await processBasicProperties(\n itemBasicProperties,\n publishPayload,\n )\n\n multiPublishPayload.push(publishPayload)\n }\n\n return multiPublishPayload\n}\n\ntype PublishPayload = {\n localId: string\n seedIsRevocable: boolean\n seedSchemaUid: string\n seedUid: string\n versionSchemaUid: string\n versionUid: string\n listOfAttestations: AttestationRequest[]\n propertiesToUpdate: any[]\n}\n\ntype MultiPublishPayload = PublishPayload[]\n\ntype UploadedTransaction = {\n txId: string\n itemPropertyLocalId?: string\n seedLocalId?: string\n versionLocalId?: string\n itemPropertyName?: string\n}\n\nexport const getPublishPayload = async (\n item: BaseItem<any>,\n uploadedTransactions: UploadedTransaction[],\n): Promise<MultiPublishPayload> => {\n\n let multiPublishPayload: MultiPublishPayload = []\n\n // Each PublishPayload is generated from a Seed that needs publishing\n\n // First we need to determine all Seeds to publish\n\n // That means the Seed of the Item, plus any Seeds pointed to by Relations\n\n let itemPublishData: PublishPayload = {\n localId: item.seedLocalId,\n seedUid: item.seedUid || ZERO_BYTES32,\n seedIsRevocable: true,\n seedSchemaUid: item.schemaUid,\n versionSchemaUid: VERSION_SCHEMA_UID_OPTIMISM_SEPOLIA,\n versionUid: getVersionUid(item),\n listOfAttestations: [],\n propertiesToUpdate: [],\n }\n\n const {\n itemBasicProperties,\n itemRelationProperties,\n itemListProperties,\n itemUploadProperties,\n } = getSegmentedItemProperties(item)\n\n if (itemUploadProperties.length === 1) {\n const uploadProperty = itemUploadProperties[0]\n const itemProperty = uploadProperty.itemProperty\n const transactionData = uploadedTransactions.find(\n (transaction) => transaction.seedLocalId === item.seedLocalId,\n )\n if (transactionData) {\n itemProperty.value = transactionData.txId\n await itemProperty.save()\n itemBasicProperties.push(itemProperty)\n }\n }\n\n for (const relationProperty of itemRelationProperties) {\n multiPublishPayload = await processRelationProperty(\n relationProperty,\n multiPublishPayload,\n uploadedTransactions,\n item.seedLocalId,\n )\n itemBasicProperties.push(relationProperty)\n }\n\n for (const listProperty of itemListProperties) {\n multiPublishPayload = await processListProperty(\n listProperty,\n multiPublishPayload,\n item.seedLocalId,\n )\n itemBasicProperties.push(listProperty)\n }\n \n itemPublishData = await processBasicProperties(\n itemBasicProperties,\n itemPublishData,\n )\n\n multiPublishPayload.push(itemPublishData)\n\n\n \n\n return multiPublishPayload\n}\n","import { ModelValues } from '@/types'\nimport { getModel } from '@/stores/modelClass'\nimport { createSeed } from './createSeed'\nimport { createVersion } from './createVersion'\nimport { createMetadata } from './createMetadata'\nimport { toSnakeCase } from 'drizzle-orm/casing'\nimport { eventEmitter } from '@/eventBus'\n\ntype CreateNewItemProps = Partial<ModelValues<any>> & {\n modelName: string\n}\n\ntype CreateNewItemReturnType = {\n modelName: string\n seedLocalId: string\n versionLocalId: string\n}\n\nexport const createNewItem = async ({\n modelName,\n ...propertyData\n}: CreateNewItemProps): Promise<CreateNewItemReturnType> => {\n if (!modelName) {\n throw new Error('A model name is required for createNewItem')\n }\n\n const seedType = toSnakeCase(modelName)\n\n const newSeedId = await createSeed({ type: seedType })\n\n const newVersionId = await createVersion({ seedLocalId: newSeedId, seedType: toSnakeCase(modelName) })\n\n const propertySchemas = getModel(modelName)?.schema\n\n for (const [propertyName, propertyValue] of Object.entries(propertyData)) {\n let propertyRecordSchema\n\n if (propertySchemas && propertySchemas[propertyName]) {\n propertyRecordSchema = propertySchemas[propertyName]\n }\n\n await createMetadata(\n {\n seedLocalId: newSeedId,\n versionLocalId: newVersionId,\n propertyName,\n propertyValue,\n modelName,\n },\n propertyRecordSchema,\n )\n }\n\n eventEmitter.emit('item.requestAll', { modelName })\n\n return {\n modelName,\n seedLocalId: newSeedId,\n versionLocalId: newVersionId,\n }\n} ","import { IItem, IItemProperty } from '@/interfaces'\nimport { itemMachineSingle } from '@/Item/service/itemMachineSingle'\nimport { internalPropertyNames } from '@/helpers/constants'\nimport { VersionsType } from '@/seedSchema/VersionSchema'\nimport { getModel } from '@/stores/modelClass'\n\nimport {\n CreatePropertyInstanceProps,\n ItemData,\n ItemFindProps,\n ModelSchema,\n ModelValues,\n NewItemProps,\n PropertyData\n} from '@/types'\n\nimport { immerable } from 'immer'\nimport { BehaviorSubject } from 'rxjs'\nimport { ActorRefFrom, Subscription, createActor } from 'xstate'\nimport { eventEmitter } from '@/eventBus'\nimport pluralize from 'pluralize'\nimport { orderBy, startCase } from 'lodash-es'\nimport { waitForEvent } from '@/events'\nimport { getItemData } from '@/db/read/getItemData'\nimport { getItemsData } from '@/db/read/getItems'\nimport { BaseItemProperty } from '@/ItemProperty/BaseItemProperty'\nimport { getItemProperties } from '@/db/read/getItemProperties'\nimport { getPublishUploads } from '@/db/read/getPublishUploads'\nimport { getPublishPayload } from '@/db/read/getPublishPayload'\nimport { createNewItem } from '@/db/write/createNewItem'\n\n\nexport abstract class BaseItem<T extends ModelValues<ModelSchema>> implements IItem<T> {\n\n protected static instanceCache: Map<string, { instance: BaseItem<any>; refCount: number }> = new Map();\n protected _subscription: Subscription | undefined;\n protected readonly _storageTransactionId: string | undefined;\n [immerable] = true;\n protected _propertiesSubject: BehaviorSubject<Record<string, IItemProperty<any>>> = new BehaviorSubject({});\n protected readonly _service: ActorRefFrom<typeof itemMachineSingle>;\n\n constructor(initialValues: NewItemProps<T>) {\n\n const {\n modelName,\n seedUid,\n schemaUid,\n seedLocalId,\n latestVersionLocalId,\n latestVersionUid,\n } = initialValues\n\n const ModelClass = getModel(modelName)\n\n if (\n ModelClass &&\n Object.keys(ModelClass?.schema).includes('storageTransactionId') &&\n initialValues.storageTransactionId\n ) {\n this._storageTransactionId = initialValues.storageTransactionId\n }\n\n this._service = createActor(itemMachineSingle, {\n input: {\n seedLocalId,\n seedUid,\n schemaUid,\n ModelClass,\n latestVersionLocalId,\n latestVersionUid,\n storageTransactionId: this._storageTransactionId,\n },\n })\n\n this._subscription = this._service.subscribe((snapshot) => {\n const { context } = snapshot\n\n if (\n !context ||\n !context.propertyInstances ||\n context.propertyInstances.size === 0\n ) {\n return\n }\n\n const propertiesObj: Record<string, IItemProperty<any>> = {}\n\n for (const [key, propertyInstance] of context.propertyInstances) {\n if (typeof key !== 'string' || internalPropertyNames.includes(key)) {\n propertiesObj[key.toString()] = propertyInstance\n continue\n }\n\n let transformedKey: string = key as string\n\n if (propertyInstance.alias) {\n transformedKey = propertyInstance.alias\n }\n\n if (!propertyInstance.alias && key.endsWith('Ids')) {\n transformedKey = key.slice(0, -3) // Remove 'Ids'\n transformedKey = pluralize(transformedKey)\n }\n\n if (!propertyInstance.alias && key.endsWith('Id')) {\n transformedKey = key.slice(0, -2) // Remove 'Id'\n }\n\n propertiesObj[transformedKey] = propertyInstance\n }\n\n this._propertiesSubject.next(propertiesObj)\n // eventEmitter.emit(`item.${modelName}.${seedUid || seedLocalId}.update`)\n })\n\n this._service.start()\n\n const definedKeys: string[] = ['ModelClass']\n\n const itemPropertyBase: Partial<CreatePropertyInstanceProps> = {\n seedLocalId,\n seedUid,\n versionLocalId: latestVersionLocalId,\n versionUid: latestVersionUid,\n modelName: modelName,\n }\n\n if (ModelClass && ModelClass.schema) {\n const schema = ModelClass.schema\n\n for (const [propertyName, propertyRecordSchema] of Object.entries(\n schema,\n )) {\n if (!propertyRecordSchema) {\n throw new Error(`Property ${propertyName} has no definition`)\n }\n\n this._createPropertyInstance({\n ...itemPropertyBase,\n propertyName,\n propertyValue: initialValues[propertyName as keyof T],\n })\n\n definedKeys.push(propertyName)\n\n if (\n propertyRecordSchema.dataType === 'Relation' &&\n !propertyName.endsWith('Id')\n ) {\n definedKeys.push(`${propertyName}Id`)\n }\n\n if (\n propertyRecordSchema.dataType === 'List' &&\n !propertyName.endsWith('Ids')\n ) {\n const singularPropertyName = pluralize.singular(propertyName)\n const propertyNameForSchema = `${singularPropertyName}${propertyRecordSchema.ref}Ids`\n definedKeys.push(propertyNameForSchema)\n }\n }\n }\n\n ; (Object.keys(initialValues) as Array<string & keyof Partial<T>>).forEach(\n (key) => {\n // If we already defined it, that means it was in the schema\n if (definedKeys.includes(key)) {\n return\n }\n\n this._createPropertyInstance({\n ...itemPropertyBase,\n propertyName: key,\n propertyValue: initialValues[key],\n })\n },\n )\n }\n\n static PlatformClass: typeof BaseItem\n\n static setPlatformClass(platformClass: typeof BaseItem) {\n this.PlatformClass = platformClass\n }\n\n static async create<T extends ModelValues<ModelSchema>>(\n props: Partial<ItemData>,\n ): Promise<BaseItem<any>> {\n if (!props.modelName && props.type) {\n props.modelName = startCase(props.type)\n }\n if (props.seedUid || props.seedLocalId) {\n const seedId = (props.seedUid || props.seedLocalId) as string\n if (this.instanceCache.has(seedId)) {\n const { instance, refCount } = this.instanceCache.get(seedId)!\n this.instanceCache.set(seedId, {\n instance,\n refCount: refCount + 1,\n })\n for (const [propertyName, propertyValue] of Object.entries(props)) {\n const propertyInstances = instance.getService().getSnapshot()\n .context.propertyInstances\n if (!propertyInstances || !propertyInstances.has(propertyName)) {\n continue\n }\n const propertyInstance = propertyInstances.get(propertyName)\n if (!propertyInstance) {\n continue\n }\n propertyInstance.getService().send({\n type: 'updateContext',\n propertyValue,\n })\n }\n return instance\n }\n if (!this.instanceCache.has(seedId)) {\n const newInstance = new this(props)\n this.instanceCache.set(seedId, {\n instance: newInstance,\n refCount: 1,\n })\n return newInstance\n }\n }\n if (!props.modelName) {\n throw new Error('Model name is required to create an item')\n }\n const { seedLocalId, versionLocalId, } = await createNewItem({\n modelName: props.modelName,\n ...props,\n })\n props.seedLocalId = seedLocalId\n props.latestVersionLocalId = versionLocalId\n const newInstance = new this(props)\n this.instanceCache.set(newInstance.seedUid || newInstance.seedLocalId, {\n instance: newInstance,\n refCount: 1,\n })\n return newInstance\n }\n\n static async find({\n modelName,\n seedLocalId,\n seedUid,\n }: ItemFindProps): Promise<IItem<any> | undefined> {\n if (!seedLocalId && !seedUid) {\n return\n }\n const itemData = await getItemData({\n modelName,\n seedLocalId,\n seedUid,\n })\n\n if (!itemData) {\n console.error('No item data found', { modelName, seedLocalId, seedUid })\n return\n }\n\n return BaseItem.create({\n ...itemData,\n modelName,\n })\n }\n\n static async all(\n modelName?: string,\n deleted?: boolean,\n ): Promise<BaseItem<any>[]> {\n const itemsData = await getItemsData({ modelName, deleted })\n const itemInstances: BaseItem<any>[] = []\n for (const itemData of itemsData) {\n itemInstances.push(\n await BaseItem.create({\n ...itemData,\n modelName,\n }),\n )\n }\n\n return orderBy(itemInstances, ['createdAt'], ['desc'])\n }\n\n protected _createPropertyInstance(props: Partial<CreatePropertyInstanceProps>) {\n if (this._storageTransactionId) {\n props.storageTransactionId = this._storageTransactionId\n }\n\n const propertyInstance = BaseItemProperty.create(props)\n\n if (!propertyInstance || !props.propertyName) {\n return\n }\n\n this._service.send({\n type: 'addPropertyInstance',\n propertyName: props.propertyName,\n propertyInstance,\n })\n\n Object.defineProperty(this, props.propertyName, {\n get: () => propertyInstance.value,\n set: (value) => (propertyInstance.value = value),\n enumerable: true,\n })\n }\n\n\n static async publish(item: IItem<any>): Promise<void> {\n await waitForEvent({\n req: {\n eventLabel: `item.${item.seedLocalId}.publish.request`,\n data: {\n seedLocalId: item.seedLocalId,\n },\n },\n res: {\n eventLabel: `item.${item.seedLocalId}.publish.success`,\n },\n })\n }\n\n subscribe = (callback: (itemProps: any) => void): Subscription => {\n return this._service.subscribe((snapshot) => {\n callback(snapshot.context)\n })\n }\n\n getService = (): ActorRefFrom<typeof itemMachineSingle> => {\n return this._service\n }\n\n getEditedProperties = async (): Promise<PropertyData[]> => {\n return await getItemProperties({\n seedLocalId: this.seedLocalId,\n edited: true,\n })\n }\n\n publish = async (): Promise<void> => {\n await waitForEvent({\n req: {\n eventLabel: `item.publish.request`,\n data: {\n seedLocalId: this.seedLocalId,\n },\n },\n res: {\n eventLabel: `item.${this.seedLocalId}.publish.success`,\n },\n })\n }\n\n getPublishUploads = async () => {\n return await getPublishUploads(this)\n }\n\n getPublishPayload = async (uploadedTransactions: any[]) => {\n return await getPublishPayload(this, uploadedTransactions)\n }\n\n get serviceContext() {\n const snapshot = this._service.getSnapshot()\n return (snapshot as any).context || {}\n }\n\n get seedLocalId(): string {\n return this.serviceContext.seedLocalId as string\n }\n\n get seedUid(): string | undefined {\n return this.serviceContext.seedUid\n }\n\n get schemaUid(): string {\n return this.serviceContext.schemaUid as string\n }\n\n get latestVersionUid(): VersionsType {\n return this.serviceContext.latestVersionUid as VersionsType\n }\n\n get latestVersionLocalId(): string {\n return this.serviceContext.latestVersionLocalId as string\n }\n\n get modelName(): string {\n return this.serviceContext.modelName as string\n }\n\n get properties(): Record<string, IItemProperty<any>> {\n return this._propertiesSubject.value\n }\n\n get attestationCreatedAt(): number {\n return this.serviceContext.attestationCreatedAt as number\n }\n\n get versionsCount(): number {\n return this.serviceContext.versionsCount as number\n }\n\n get lastVersionPublishedAt(): number {\n return this.serviceContext.lastVersionPublishedAt as number\n }\n\n unload(): void {\n this._subscription?.unsubscribe()\n this._service.stop()\n }\n}\n","import { PropertyMetadataKey, TProperty } from '../property'\nimport { TSchema, Type } from '@sinclair/typebox'\nimport { ModelConstructor, ModelValues } from '@/types'\nimport { BaseItem } from '@/Item/BaseItem'\n\nexport const TModelValues = Type.Record(Type.String(), Type.Any())\n\nexport const TModelSchema = Type.Record(Type.String(), TProperty)\nexport const TModelClass = Type.Object({\n schema: TModelSchema,\n create: Type.Function(\n [TModelValues],\n Type.Promise(Type.Record(Type.String(), Type.Any())),\n ),\n})\n\nexport const TModelConstructor = Type.Function([TModelSchema], TModelClass)\n\nexport abstract class IModelClass {\n static originalConstructor: new () => any\n\n static async create(values: ModelValues<any>): Promise<BaseItem<any>> {\n const item = await BaseItem.create(values)\n return item\n }\n\n static getOriginalClass(): new () => any {\n return this.originalConstructor\n }\n}\n\nexport const Model: ModelConstructor = <\n T extends { new(...args: any[]): IModelClass },\n>(\n constructor: T,\n) => {\n class ModelClass extends constructor {\n private static _schema: Record<string, TSchema> = {}\n static originalConstructor = constructor\n\n static _initializeSchema() {\n const properties =\n Reflect.getMetadata(PropertyMetadataKey, this.prototype) || []\n\n properties.forEach(\n ({\n propertyKey,\n propertyType,\n }: {\n propertyKey: string\n propertyType: TSchema\n }) => {\n // console.log(\n // `setting ${propertyKey} to ${JSON.stringify(propertyType)}`,\n // )\n this._schema[propertyKey] = propertyType\n },\n )\n }\n\n static async create(values: ModelValues<any>): Promise<BaseItem<any>> {\n const item = await BaseItem.create(values)\n return item\n }\n\n static getOriginalClass(): T {\n return this.originalConstructor\n }\n\n static get schema() {\n return this._schema\n }\n\n get schema() {\n return this.constructor.prototype._schema\n }\n }\n\n ModelClass._initializeSchema()\n\n return ModelClass as T & IModelClass\n}\n","import { isBrowser } from '@/helpers/environment'\nimport { BaseItem } from '@/Item/BaseItem'\n\nlet Item: typeof BaseItem | undefined\n\n\nexport const initItem = async () => {\n if (isBrowser()) {\n Item = (await import('../browser/Item/Item')).Item\n }\n\n if (!isBrowser()) {\n Item = (await import('../node/Item/Item')).Item\n }\n}\n\nexport { Item }\n","import { isBrowser } from '@/helpers/environment'\nimport { BaseItemProperty } from '@/ItemProperty/BaseItemProperty'\n\nlet ItemProperty: typeof BaseItemProperty | undefined\n\nexport const initItemProperty = async () => {\n\n if (isBrowser()) {\n ItemProperty = (await import('../browser/ItemProperty/ItemProperty')).ItemProperty\n }\n\n if (!isBrowser()) {\n ItemProperty = (await import('../node/ItemProperty/ItemProperty')).ItemProperty\n }\n}\n\nexport { ItemProperty }","import { isBrowser } from '@/helpers/environment'\nimport { BaseDb } from './BaseDb'\n\nlet Db: typeof BaseDb | undefined\n\nexport const initDb = async () => {\n if (isBrowser()) {\n Db = (await import('../../browser/db/Db')).Db\n }\n\n if (!isBrowser()) {\n Db = (await import('../../node/db/Db')).Db\n }\n\n // TODO: Add config for React Native\n}\n\nexport { Db }\n","import {\n ModelSchema,\n ModelValues,\n NewItemProps,\n} from '@/types'\nimport { BaseItem } from '@/Item/BaseItem'\nimport { IItem } from '@/interfaces'\n\nexport class Item<T extends ModelValues<ModelSchema>> extends BaseItem<T> implements IItem<T> {\n\n constructor(initialValues: NewItemProps<T>,) {\n super(initialValues,)\n }\n\n}\n\nBaseItem.setPlatformClass(Item)","import { useCallback, useEffect, useState } from 'react'\nimport { ActorRef } from 'xstate'\nimport { orderBy } from 'lodash-es'\nimport { produce } from 'immer'\nimport { eventEmitter } from '@/eventBus'\nimport pluralize from 'pluralize'\nimport { getGlobalService } from '@/services/global'\nimport { useSelector } from '@xstate/react'\nimport debug from 'debug'\nimport { appState } from '@/seedSchema'\nimport { like } from 'drizzle-orm'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { MachineIds } from '@/services/internal/constants'\n\nconst logger = debug('app:react:services')\n\nconst finalStrings = ['idle', 'ready', 'done', 'success', 'initialized']\n\nexport const getServiceName = (service: ActorRef<any, any>) => {\n let name = 'actor'\n if (service && service.uniqueKey) {\n name = service.uniqueKey\n }\n if (service && !service.uniqueKey && service.logic && service.logic.config) {\n name = getServiceUniqueKey(service)\n }\n return name\n}\n\nexport const getServiceValue = (\n service: ActorRef<any, any>,\n): string | undefined => {\n let value\n if (service && service.getSnapshot() && service.getSnapshot().value) {\n value = service.getSnapshot().value\n }\n if (getServiceName(service) === 'global') {\n if (\n value &&\n typeof value === 'object' &&\n Object.keys(value).length > 0 &&\n Object.keys(value)[0] === 'initialized'\n ) {\n value = 'ready'\n }\n }\n if (value && typeof value === 'object') {\n value = JSON.stringify(value)\n }\n return value\n}\n\nexport const getServiceUniqueKey = (service: ActorRef<any, any>) => {\n if (!service || !service.logic || !service.logic.config) {\n return\n }\n const config = service.logic.config\n if (!config.id) {\n return\n }\n let uniqueKey = config.id\n if (config.id.includes('@seedSdk/')) {\n uniqueKey = config.id.match(/^.*@seedSdk\\/(\\w+)[\\.\\w]*/)[1]\n }\n let snapshot\n try {\n snapshot = service.getSnapshot()\n } catch (error) {\n logger('Error:', error)\n return uniqueKey\n }\n if (snapshot) {\n const context = snapshot.context\n if (context && context.dbName) {\n uniqueKey = context.dbName\n }\n if (context && context.modelNamePlural) {\n uniqueKey = context.modelNamePlural\n }\n if (context && context.modelName) {\n uniqueKey = pluralize(context.modelName.toLowerCase())\n }\n }\n return uniqueKey\n}\n\nexport const useService = (service: ActorRef<any, any>) => {\n const [timeElapsed, setTimeElapsed] = useState(0)\n\n const getPercentComplete = (service: ActorRef<any, any>) => {\n let percentComplete = 0\n if (service.logic.states) {\n const stateNames = []\n const startupStates = []\n\n for (const [stateName, state] of Object.entries(service.logic.states)) {\n if (state.tags.includes('loading')) {\n stateNames.push(stateName)\n startupStates.push(state)\n }\n }\n\n const totalStates = startupStates.length\n const value = getServiceValue(service)\n if (finalStrings.includes(value)) {\n return 0\n }\n const stateIndex = stateNames.indexOf(value)\n percentComplete = (stateIndex / totalStates) * 100\n }\n return percentComplete\n }\n\n const updateTime = useCallback(\n (interval) => {\n const context = service.getSnapshot().context\n const status = service.getSnapshot().value\n if (\n status === 'done' ||\n status === 'success' ||\n status === 'idle' ||\n status === 'ready'\n ) {\n clearInterval(interval)\n return\n }\n setTimeElapsed((timeElapsed) => timeElapsed + 1)\n },\n [service],\n )\n\n const startInterval = useCallback(() => {\n const interval = setInterval(() => {\n updateTime(interval)\n }, 1000)\n return interval\n }, [updateTime, service])\n\n useEffect(() => {\n const interval = startInterval()\n return () => clearInterval(interval)\n }, [])\n\n return {\n name: getServiceName(service),\n timeElapsed,\n value: getServiceValue(service),\n percentComplete: getPercentComplete(service),\n uniqueKey: getServiceUniqueKey(service),\n }\n}\n\nexport const useIsDbReady = () => {\n const [isDbReady, setIsDbReady] = useState(false)\n\n const { internalStatus } = useGlobalServiceStatus()\n\n useEffect(() => {\n if (internalStatus === 'ready') {\n setIsDbReady(true)\n }\n }, [internalStatus])\n\n return isDbReady\n}\n\nexport const usePersistedSnapshots = () => {\n const [initialized, setInitialized] = useState(false)\n\n const hasSavedSnapshots = useHasSavedSnapshots()\n\n const { services, percentComplete } = useServices()\n\n // Helper function to save all actor snapshots to the database\n const save = useCallback(async () => {\n for (const actor of services) {\n const uniqueKey = getServiceUniqueKey(actor)\n console.log(\n `would save to db with snapshot__${uniqueKey}:`,\n JSON.stringify(actor.getPersistedSnapshot()),\n )\n // await writeAppState(\n // `snapshot__${uniqueKey}`,\n // JSON.stringify(actor.getPersistedSnapshot()),\n // )\n }\n }, [services])\n\n // Helper function to load persisted snapshots from the database\n const load = useCallback(async () => {\n const appDb = BaseDb.getAppDb()\n\n if (!appDb) {\n return []\n }\n\n const persistedSnapshots = await appDb\n .select()\n .from(appState)\n .where(like(appState.key, 'snapshot__%'))\n return persistedSnapshots\n }, [])\n\n useEffect(() => {\n if (!hasSavedSnapshots || initialized) {\n return\n }\n const initialize = async () => {\n const persistedSnapshots = await load()\n console.log('persistedSnapshots:', persistedSnapshots)\n setInitialized(true)\n }\n\n initialize()\n\n return () => {\n save() // Save snapshots on unmount\n }\n }, [hasSavedSnapshots, initialized])\n}\n\nexport const useHasSavedSnapshots = () => {\n const [hasSavedSnapshots, setHasSavedSnapshots] = useState(false)\n\n const isDbReady = useIsDbReady()\n\n useEffect(() => {\n if (isDbReady) {\n const _checkForSnapshots = async (): Promise<void> => {\n const appDb = BaseDb.getAppDb()\n\n const rows = await appDb\n .select()\n .from(appState)\n .where(like(appState.key, 'snapshot__%'))\n\n if (rows && rows.length > 0) {\n setHasSavedSnapshots(true)\n }\n }\n\n _checkForSnapshots()\n }\n }, [isDbReady])\n\n return hasSavedSnapshots\n}\n\nexport const useServices = () => {\n const [actors, setActors] = useState<ActorRef<any, any>[]>([])\n const [percentComplete, setPercentComplete] = useState(5)\n\n const actorsMap = new Map<string, ActorRef<any, any>>()\n\n useEffect(() => {\n const globalServiceListener = (event) => {\n if (event && event.type === 'init') {\n return\n }\n if (\n event.actorRef &&\n event.actorRef.logic &&\n event.actorRef.logic.config\n ) {\n const service = event.actorRef\n const services = [service]\n\n if (service.logic.config.id === MachineIds.GLOBAL) {\n const context = service.getSnapshot().context\n const keys = Object.keys(context)\n for (const key of keys) {\n if (!key.startsWith('internal') && key.endsWith('Service')) {\n const allItemsService = context[key]\n services.push(allItemsService)\n }\n }\n }\n\n services.forEach((innerService) => {\n const uniqueKey = getServiceUniqueKey(innerService)\n if (!uniqueKey) {\n return\n }\n innerService.uniqueKey = uniqueKey\n actorsMap.set(uniqueKey, innerService)\n })\n\n let actorsArray = Array.from(actorsMap.values())\n actorsArray = orderBy(actorsArray, (a) => a.logic.config.id, ['asc'])\n\n setActors(\n produce(actors, (draft) => {\n return actorsArray\n }),\n )\n }\n }\n\n eventEmitter.addListener('inspect.globalService', globalServiceListener)\n\n return () => {\n eventEmitter.removeListener(\n 'inspect.globalService',\n globalServiceListener,\n )\n }\n }, [])\n\n useEffect(() => {\n const globalService = actors.find(\n (actor) => getServiceName(actor) === 'global',\n )\n const internalService = actors.find(\n (actor) => getServiceName(actor) === 'internal',\n )\n if (!globalService || !internalService) {\n return\n }\n if (\n getServiceValue(globalService) === 'initialized' &&\n getServiceValue(internalService) === 'ready'\n ) {\n const denominator = actors.length\n const finishedActors = actors.filter((actor) => {\n const value = getServiceValue(actor)\n return finalStrings.includes(value)\n })\n const numerator = finishedActors.length\n const percentComplete = (numerator / denominator) * 100\n setPercentComplete(percentComplete)\n }\n }, [actors])\n\n return {\n services: actors,\n percentComplete,\n }\n}\n\nexport const useGlobalServiceStatus = () => {\n const globalService = getGlobalService()\n\n const status = useSelector(globalService, (snapshot) => {\n return snapshot.value\n })\n\n const internalStatus = useSelector(\n globalService.getSnapshot().context.internalService,\n (snapshot) => {\n if (!snapshot) {\n return\n }\n return snapshot.value\n },\n )\n\n const internalService = useSelector(globalService, (snapshot) => {\n return snapshot.context.internalService\n })\n\n return {\n status,\n internalStatus,\n }\n}\n","import { useCallback, useEffect, useRef, useState } from 'react'\nimport { createNewItem } from '@/db/write/createNewItem'\nimport { Item } from '@/browser/Item'\nimport { eventEmitter } from '@/eventBus'\nimport { useImmer } from 'use-immer'\nimport { orderBy } from 'lodash-es'\nimport { getAreItemEventHandlersReady } from '@/events'\nimport debug from 'debug'\nimport { useGlobalServiceStatus } from '@/browser/react/services'\nimport { ModelValues } from '@/types'\nimport { Subscription } from 'xstate'\nimport { useSelector } from '@xstate/react'\nimport { BaseItem } from '@/Item/BaseItem'\n\nconst logger = debug('app:react:item')\n\ntype UseItemProps = {\n modelName: string\n seedLocalId?: string\n seedUid?: string\n}\n\ntype UseItemReturn<T extends ModelValues<T>> = {\n item: Item<T> | undefined\n itemData: ItemData<T>\n itemStatus: string | Record<string, unknown> | undefined\n}\n\ntype UseItem<T> = (props: UseItemProps) => UseItemReturn<T>\n\ntype ItemData<T> = Record<string, Partial<T>>\n\nexport const useItem: UseItem<any> = ({ modelName, seedLocalId, seedUid }) => {\n // const [itemSubscription, setItemSubscription] = useState<\n // Subscription | undefined\n // >()\n //\n // const queryClient = useQueryClient()\n //\n // const { data: item } = useQuery({\n // queryKey: ['item', modelName, seedLocalId, seedUid],\n // queryFn: async () =>\n // Item.find({\n // modelName,\n // seedLocalId,\n // seedUid,\n // }),\n // networkMode: 'offlineFirst',\n // })\n //\n // const updateItem = async (newItem: Item<any>) => {\n // queryClient.setQueryData(['item', modelName, seedLocalId, seedUid], newItem)\n // }\n //\n // useEffect(() => {\n // if (item && item.subscribe && !itemSubscription) {\n // const subscription = item.subscribe(async (_) => {\n // const newItem = await Item.find({ modelName, seedLocalId, seedUid })\n // if (!newItem) {\n // logger(\n // '[useItem] [itemSubscription] no item found',\n // modelName,\n // seedLocalId,\n // )\n // return\n // }\n // updateItem(newItem)\n // })\n // setItemSubscription(subscription)\n // }\n //\n // return () => {\n // itemSubscription?.unsubscribe()\n // }\n // }, [item, itemSubscription])\n //\n // return {\n // item,\n // itemData: {},\n // itemStatus: undefined,\n // }\n\n const [itemData, setItemData] = useImmer<ItemData<any>>({})\n const [item, setItem] = useState<Item<any> | undefined>()\n const [itemSubscription, setItemSubscription] = useState<\n Subscription | undefined\n >()\n\n const { status, internalStatus } = useGlobalServiceStatus()\n\n const isReadingDb = useRef(false)\n\n const itemStatus = useSelector(\n item?.getService(),\n (snapshot) => snapshot?.value,\n )\n\n const updateItem = useCallback(\n (newItem: Item<any>) => {\n setItemData((draft) => {\n Object.keys(newItem.properties).forEach((propertyName) => {\n const value = newItem[propertyName]\n draft[propertyName] = value\n })\n })\n },\n [setItemData],\n )\n\n const readFromDb = useCallback(async () => {\n if (\n isReadingDb.current ||\n internalStatus !== 'ready' ||\n (!seedUid && !seedLocalId)\n ) {\n return\n }\n isReadingDb.current = true\n const foundItem = await Item.find({\n modelName,\n seedLocalId,\n seedUid,\n })\n if (!foundItem) {\n logger('[useItem] [getItemFromDb] no item found', modelName, seedLocalId)\n isReadingDb.current = false\n return\n }\n setItem(() => foundItem)\n updateItem(foundItem)\n isReadingDb.current = false\n }, [internalStatus])\n\n const listenerRef = useRef(readFromDb)\n\n useEffect(() => {\n listenerRef.current = readFromDb\n }, [readFromDb])\n\n useEffect(() => {\n if (internalStatus === 'ready') {\n listenerRef.current()\n }\n }, [internalStatus, status])\n\n useEffect(() => {\n if (item && !itemSubscription) {\n const subscription = item.subscribe(async (_) => {\n const newItem = await Item.find({ modelName, seedLocalId, seedUid })\n if (!newItem) {\n logger(\n '[useItem] [itemSubscription] no item found',\n modelName,\n seedLocalId,\n )\n return\n }\n updateItem(newItem)\n setItem(() => newItem)\n })\n setItemSubscription(subscription)\n }\n\n return () => {\n itemSubscription?.unsubscribe()\n }\n }, [item, itemSubscription])\n\n useEffect(() => {\n const seedId = seedUid || seedLocalId\n\n eventEmitter.addListener(`item.${modelName}.${seedId}.update`, () => {\n listenerRef.current()\n })\n\n return () => {\n eventEmitter.removeListener(`item.${modelName}.${seedId}.update`)\n }\n }, [])\n\n return {\n item,\n itemData,\n itemStatus,\n }\n}\ntype UseItemsReturn = {\n items: BaseItem<any>[]\n isReadingDb: boolean\n}\ntype UseItemsProps = {\n modelName?: string\n deleted?: boolean\n}\ntype UseItems = (props: UseItemsProps) => UseItemsReturn\nexport const useItems: UseItems = ({ modelName, deleted=false }) => {\n const [items, setItems] = useImmer<BaseItem<any>[]>([])\n\n const { status, internalStatus } = useGlobalServiceStatus()\n\n const modelNameRef = useRef<string | undefined>(modelName)\n\n const isReadingDb = useRef(false)\n\n const readFromDb = useCallback(async () => {\n if (isReadingDb.current || internalStatus !== 'ready') {\n return\n }\n isReadingDb.current = true\n const allItems = await Item.all(modelNameRef.current, deleted)\n setItems(() => [])\n setItems(() => allItems)\n isReadingDb.current = false\n }, [internalStatus])\n\n const listenerRef = useRef(readFromDb)\n\n useEffect(() => {\n listenerRef.current = readFromDb\n }, [readFromDb])\n\n useEffect(() => {\n if (internalStatus === 'ready') {\n listenerRef.current()\n }\n }, [internalStatus, status])\n\n useEffect(() => {\n eventEmitter.addListener('item.requestAll', (event) => {\n if (\n !event ||\n !event.modelName ||\n event.modelName !== modelNameRef.current\n ) {\n return\n }\n listenerRef.current()\n })\n\n readFromDb()\n\n return () => {\n eventEmitter.removeListener('item.requestAll', readFromDb)\n }\n }, [])\n\n return {\n items: orderBy(\n items,\n [\n (item) =>\n item.lastVersionPublishedAt ||\n item.attestationCreatedAt ||\n item.createdAt,\n ],\n ['desc'],\n ),\n isReadingDb: isReadingDb.current,\n }\n}\n\nexport const useItemIsReady = () => {\n const [itemListenersReady, setItemListenersReady] = useState(false)\n\n const itemEventListenersHandler = useCallback((_) => {\n setItemListenersReady(true)\n }, [])\n\n useEffect(() => {\n const areReady = getAreItemEventHandlersReady()\n\n if (areReady) {\n itemEventListenersHandler(true)\n }\n\n eventEmitter.addListener(\n 'item.events.setupAllItemsEventHandlers',\n itemEventListenersHandler,\n )\n\n return () => {\n eventEmitter.removeListener('item.events.setupAllItemsEventHandlers')\n }\n }, [])\n\n return {\n isReady: itemListenersReady,\n }\n}\nexport const useCreateItem = <T>(modelName: string) => {\n const [isCreatingItem, setIsCreatingItem] = useState(false)\n\n const { isReady } = useItemIsReady()\n\n const createItem = useCallback(\n async (itemData) => {\n if (!isReady) {\n console.error(\n `[useCreateItem] [createItem] called before listeners are ready`,\n itemData,\n )\n return\n }\n if (isCreatingItem) {\n // TODO: should we setup a queue for this?\n console.error(\n `[useCreateItem] [createItem] already creating item`,\n itemData,\n )\n return\n }\n\n setIsCreatingItem(true)\n\n const { seedLocalId } = await createNewItem({ modelName, ...itemData })\n\n const newItem = await Item.find({ modelName, seedLocalId })\n\n eventEmitter.emit('item.requestAll', { modelName })\n\n setIsCreatingItem(false)\n },\n [isCreatingItem, isReady],\n )\n\n return {\n createItem,\n isCreatingItem,\n }\n}\n\ntype PublishItemResult = Error | undefined | void\n\ntype UsePublishItemReturn = {\n publishItem: (\n item: Item<any> | undefined,\n callback?: (result: PublishItemResult) => any,\n ) => void\n isPublishing: boolean\n}\n\ntype PublishItemProps =\n | [Item<any> | undefined]\n | [Item<any> | undefined, (result: PublishItemResult) => any | undefined]\n\ntype PublishItem = (...props: PublishItemProps) => Promise<any>\n\nexport const usePublishItem = (): UsePublishItemReturn => {\n const [isPublishing, setIsPublishing] = useState(false)\n\n const isLocked = useRef(false)\n\n const publishItem: PublishItem = useCallback(async (item, callback?) => {\n if (!item || isLocked.current) {\n return\n }\n isLocked.current = true\n setIsPublishing(true)\n try {\n const uploads = await item.getPublishUploads()\n const payload = await item.getPublishPayload(uploads)\n if (callback) {\n callback()\n }\n } catch (e) {\n if (callback) {\n callback(e as Error)\n }\n }\n setIsPublishing(false)\n isLocked.current = false\n }, [])\n\n return {\n publishItem,\n isPublishing,\n }\n}\n","import { CreatePropertyInstanceProps, PropertyType } from '@/types'\nimport { IItemProperty } from '@/interfaces/IItemProperty'\nimport { BaseItemProperty } from '@/ItemProperty/BaseItemProperty'\n\n\nclass ItemProperty extends BaseItemProperty<PropertyType> implements IItemProperty<PropertyType> {\n\n\n constructor(initialValues: Partial<CreatePropertyInstanceProps>) {\n super(initialValues)\n }\n\n}\n\nBaseItemProperty.setPlatformClass(ItemProperty)\n\nexport { ItemProperty }","import { useImmer } from 'use-immer'\nimport { Item } from '@/browser/Item'\nimport { useCallback, useEffect, useRef, useState } from 'react'\nimport { useSelector } from '@xstate/react'\nimport debug from 'debug'\nimport { eventEmitter } from '@/eventBus'\nimport { ItemProperty } from '@/browser/ItemProperty/ItemProperty'\nimport { useGlobalServiceStatus } from '@/browser/react/services'\nimport { IItemProperty } from '@/interfaces'\n\nconst logger = debug('app:react:property')\n\ntype UseItemPropertyProps = {\n propertyName: string\n seedLocalId?: string\n seedUid?: string\n}\n\ntype UseItemPropertyReturn = {\n property: IItemProperty<any> | undefined\n isInitialized: boolean\n value: any\n status: string\n}\n\ntype UseItemProperty = (props: UseItemPropertyProps | undefined) => UseItemPropertyReturn\n\nexport const useItemProperty: UseItemProperty = (props = {\n propertyName: '',\n seedLocalId: '',\n seedUid: '',\n}) => {\n\n const { propertyName, seedLocalId, seedUid } = props\n\n const [property, setProperty] = useState<IItemProperty<any> | undefined>()\n const [isInitialized, setIsInitialized] = useState(false)\n\n const { internalStatus } = useGlobalServiceStatus()\n\n const isReadingDb = useRef(false)\n\n const value = useSelector(property?.getService(), (snapshot) => {\n if (!snapshot || !snapshot.context) {\n return\n }\n return snapshot.context.renderValue || snapshot.context.propertyValue\n })\n\n const status = useSelector(\n property?.getService(),\n (snapshot) => snapshot?.value as string,\n )\n\n const readFromDb = useCallback(async () => {\n if (\n internalStatus !== 'ready' ||\n isReadingDb.current ||\n (!seedLocalId && !seedUid)\n ) {\n return\n }\n isReadingDb.current = true\n const foundProperty = await ItemProperty.find({\n propertyName,\n seedLocalId,\n seedUid,\n })\n if (!foundProperty) {\n logger(\n `[useItemPropertyTest] [readFromDb] no property found for Item.${seedLocalId}.${propertyName}`,\n )\n isReadingDb.current = false\n return\n }\n if (foundProperty.status === 'waitingForDb') {\n foundProperty.getService().send({ type: 'waitForDbSuccess' })\n }\n setProperty(foundProperty)\n setIsInitialized(true)\n isReadingDb.current = false\n }, [internalStatus, props])\n\n const listenerRef = useRef(readFromDb)\n\n useEffect(() => {\n listenerRef.current = readFromDb\n }, [readFromDb, props])\n\n useEffect(() => {\n if (internalStatus === 'ready') {\n readFromDb()\n }\n }, [internalStatus])\n\n useEffect(() => {\n eventEmitter.addListener(\n `property.${seedUid || seedLocalId}.${propertyName}.update`,\n () => {\n listenerRef.current()\n },\n )\n\n return () => {\n eventEmitter.removeListener(\n `property.${seedUid || seedLocalId}.${propertyName}.update`,\n )\n }\n }, [])\n\n return {\n property,\n isInitialized,\n value,\n status,\n }\n}\nexport const useItemProperties = (item?: Item<any>) => {\n const [propertyObj, setPropertyObj] = useImmer({})\n const [isListening, setIsListening] = useState(false)\n\n const updatePropertyObj = useCallback(\n (event) => {\n if (!item) {\n console.error('[XXXXXX] [updatePropertyObj] no item when expected')\n return\n }\n const { propertyName, propertyValue } = event\n if (!propertyName) {\n return\n }\n setPropertyObj((draft) => {\n draft[propertyName] = propertyValue\n })\n },\n [item],\n )\n\n useEffect(() => {\n if (!item) {\n return\n }\n\n const eventKey = `item.${item.seedLocalId}.property.update`\n\n eventEmitter.addListener(eventKey, updatePropertyObj)\n\n return () => {\n eventEmitter.removeListener(eventKey, updatePropertyObj)\n }\n }, [item])\n\n return {\n properties: propertyObj,\n }\n}\n","import { useCallback, useEffect, useState } from 'react'\nimport { Subscription } from 'xstate'\nimport { getGlobalService } from '@/services/global'\nimport debug from 'debug'\n\nconst logger = debug('app:react:db')\n\nexport const useDbsAreReady = () => {\n const [dbsAreReady, setDbsAreReady] = useState(false)\n\n const update = useCallback(() => {\n if (dbsAreReady) {\n return\n }\n setDbsAreReady(true)\n }, [])\n\n useEffect(() => {\n let globalSubscription: Subscription | undefined\n let internalSubscription: Subscription | undefined\n\n const _waitForDbs = async (): Promise<void> => {\n const globalService = getGlobalService()\n const internalService =\n globalService.getSnapshot().context.internalService\n if (!internalService) {\n logger('[useDbsAreReady] [useEffect] no internalService')\n\n globalSubscription = globalService.subscribe(({ context }) => {\n if (!internalSubscription && context && context.internalService) {\n globalSubscription?.unsubscribe()\n internalSubscription = context.internalService.subscribe(\n (snapshot) => {\n if (snapshot.value === 'ready') {\n update()\n internalSubscription?.unsubscribe()\n }\n },\n )\n }\n })\n\n return\n }\n const currentState = internalService.getSnapshot().value\n if (currentState === 'ready') {\n update()\n return\n }\n internalSubscription = internalService.subscribe((snapshot) => {\n if (snapshot.value === 'ready') {\n update()\n internalSubscription?.unsubscribe()\n }\n })\n }\n\n _waitForDbs()\n\n return () => {\n if (globalSubscription) {\n globalSubscription.unsubscribe()\n }\n\n if (internalSubscription) {\n internalSubscription.unsubscribe()\n }\n }\n }, [])\n\n return {\n dbsAreReady,\n }\n}\n","import { BaseDb } from '@/db/Db/BaseDb'\nimport { seeds } from '@/seedSchema'\nimport { eq, or } from 'drizzle-orm'\n\ntype DeleteItemProps = {\n seedLocalId?: string\n seedUid?: string\n}\ntype DeleteItem = (props: DeleteItemProps) => Promise<void>\nexport const deleteItem: DeleteItem = async ({ seedLocalId, seedUid }) => {\n const appDb = BaseDb.getAppDb()\n\n await appDb\n .update(seeds)\n .set({\n _markedForDeletion: 1,\n })\n .where(or(eq(seeds.localId, seedLocalId), eq(seeds.uid, seedUid)))\n}\n","import { useCallback, useEffect, useState } from 'react'\nimport { Item } from '@/browser/Item/Item'\nimport { eventEmitter } from '@/eventBus'\nimport { deleteItem } from '@/db/write/deleteItem'\n\nexport const useDeleteItem = () => {\n const [isDeletingItem, setIsDeletingItem] = useState(false)\n\n const destroy = useCallback(\n async (item: Item<any>) => {\n if (!item) {\n return\n }\n setIsDeletingItem(true)\n const { modelName } = item.getService().getSnapshot().context\n await deleteItem({ seedLocalId: item.seedLocalId })\n eventEmitter.emit('item.requestAll', { modelName })\n setIsDeletingItem(false)\n },\n [isDeletingItem],\n )\n\n useEffect(() => { }, [])\n\n return {\n deleteItem: destroy,\n isDeletingItem,\n }\n}\n","import { eventEmitter } from '@/eventBus'\n\nexport * from './db'\nexport * from './react'\nexport * from './Item'\nexport * from './ItemProperty'\n\n\neventEmitter.on('file-saved', (filePath) => {\n const worker = new Worker('./workers/image-resize.ts?worker')\n\n console.log('file-saved', filePath)\n worker.postMessage({\n type: 'resize',\n filePath,\n })\n})\n","export const withSeed = (config: any, webpack: any, isServer: boolean) => {\n // If you need to include directories outside of the project root\n // config.module.rules.push({\n // test: /\\.ts$/,\n // include: [path.resolve(process.cwd(), 'schema.ts')],\n // use: 'ts-loader',\n // })\n\n config.plugins.push(\n // new webpack.DefinePlugin({\n // __dirname: JSON.stringify(__dirname),\n // }),\n new webpack.NormalModuleReplacementPlugin(/node:/, (resource) => {\n resource.request = resource.request.replace(/^node:/, '')\n }),\n )\n\n // config.externals.push({\n // 'fsevents': 'commonjs2 fsevents',\n // })\n\n // console.log('__dirname:', __dirname)\n // console.log('process.cwd():', process.cwd())\n\n // console.log('crypto-browserify exists:', fs.existsSync(path.resolve(process.cwd(), './node_modules/crypto-browserify')))\n // console.log('path-browserify exists:', fs.existsSync(path.resolve(process.cwd(), './node_modules/path-browserify')))\n\n if (!isServer) {\n config.resolve.alias['fs'] = '@zenfs/core'\n config.resolve.alias['node:fs'] = '@zenfs/core'\n config.resolve.alias['node:path'] = 'path-browserify'\n config.resolve.alias['path'] = 'path-browserify'\n\n // config.resolve.alias['fs'] = path.resolve(\n // process.cwd(),\n // './node_modules/@zenfs/core',\n // )\n // config.resolve.alias['node:fs'] = path.resolve(\n // process.cwd(),\n // './node_modules/@zenfs/core',\n // )\n // config.resolve.alias['@schema'] = path.resolve(process.cwd(), 'schema.ts')\n // // config.resolve.alias['crypto'] = path.resolve(process.cwd(), './node_modules/crypto-browserify')\n // // config.resolve.alias['node:crypto'] = path.resolve(process.cwd(), './node_modules/crypto-browserify')\n // config.resolve.alias['node:path'] = path.resolve(\n // process.cwd(),\n // './node_modules/path-browserify',\n // )\n // config.resolve.alias['path'] = path.resolve(\n // process.cwd(),\n // './node_modules/path-browserify',\n // )\n }\n\n if (isServer) {\n config.externals.push('@sqlite.org/sqlite-wasm')\n config.externals.push('nunjucks')\n config.externals.push('chokidar')\n config.externals.push('arweave')\n }\n\n // config.module.rules.push({\n // test: /seed\\.config\\.mjs$/,\n // use: [\n // {\n // loader: 'babel-loader',\n // options: {\n // plugins: ['@babel/plugin-syntax-dynamic-import'],\n // },\n // },\n // ],\n // })\n\n return config\n}\n","import { isBrowser } from '../environment'\nimport { BaseEasClient } from './BaseEasClient'\n\nlet EasClient: typeof BaseEasClient | undefined\n\nexport const initEasClient = async () => {\n if (isBrowser()) {\n EasClient = (await import('../../browser/helpers/EasClient')).EasClient\n }\n\n if (!isBrowser()) {\n EasClient = (await import('../../node/helpers/EasClient')).EasClient\n }\n}\n\nexport { EasClient }\n","import { isBrowser } from '../environment'\nimport { BaseFileManager } from './BaseFileManager'\n\nlet FileManager: typeof BaseFileManager | undefined\n\nexport const initFileManager = async () => {\n if (isBrowser()) {\n FileManager = (await import('../../browser/helpers/FileManager')).FileManager\n }\n\n if (!isBrowser()) {\n FileManager = (await import('../../node/helpers/FileManager')).FileManager\n }\n}\n\nexport { FileManager }","import { isBrowser } from '../environment'\nimport { BaseQueryClient } from './BaseQueryClient'\n\nlet QueryClient: typeof BaseQueryClient | undefined\n\nexport const initQueryClient = async () => {\n if (isBrowser()) {\n QueryClient = (await import('../../browser/helpers/QueryClient')).QueryClient\n }\n\n if (!isBrowser()) {\n QueryClient = (await import('../../node/helpers/QueryClient')).QueryClient\n }\n}\n\nexport { QueryClient }","import { eventEmitter } from '@/eventBus'\nimport debug from 'debug'\n\nconst logger = debug('app:services:events')\n\nconst handleServiceSaveState = (event: any) => {\n const { state, serviceId } = event\n logger(`[browser] [service.saveState.request] serviceId: ${serviceId}`)\n localStorage.setItem(`seed_sdk_service_${serviceId}`, JSON.stringify(state))\n}\n\nexport const setupServicesEventHandlers = () => {\n eventEmitter.addListener('service.saveState.request', handleServiceSaveState)\n}\n","import { getGlobalService } from '@/services/global'\n\nimport { saveAppState } from '@/db/write/saveAppState'\n\ntype SaveServiceEvent = {\n modelName: string\n}\n\nexport const saveServiceHandler = async (event: SaveServiceEvent) => {\n const globalService = getGlobalService()\n\n if (!globalService || !globalService.getSnapshot().context) {\n return\n }\n\n const { modelName } = event\n\n const nameOfService: string = `${modelName}Service`\n\n const service = globalService.getSnapshot().context[nameOfService]\n\n if (!service) {\n console.log(`[saveServiceHandler] service not found: ${nameOfService}`)\n return\n }\n\n await saveAppState(\n `snapshot__${modelName}`,\n JSON.stringify(service.getPersistedSnapshot()),\n )\n}\n","import { eventEmitter } from '@/eventBus'\nimport { saveServiceHandler } from './allItems'\n\nlet areReady = false\n\nexport const setupServiceHandlers = () => {\n eventEmitter.addListener('service.save', saveServiceHandler)\n areReady = true\n}\n\nexport const getAreServiceHandlersReady = () => {\n return areReady\n}\n","import { initDb } from \"@/db/Db\";\nimport { initArweaveClient, setArweaveDomain } from \"@/helpers/ArweaveClient\";\nimport { initEasClient } from \"@/helpers/EasClient\";\nimport { initFileManager } from \"@/helpers/FileManager\";\nimport { initQueryClient } from \"@/helpers/QueryClient\";\nimport { initItem } from \"@/Item\";\nimport { initItemProperty } from \"@/ItemProperty\";\nimport { ClientManagerContext, FromCallbackInput } from \"@/types\";\nimport { fromCallback, EventObject, waitFor } from \"xstate\";\nimport debug from 'debug'\nimport { areFsListenersReady } from \"@/events/files\";\nimport { setModel } from \"@/stores/modelClass\";\nimport { setupFsListeners } from \"@/events/files\";\nimport { setupServicesEventHandlers } from \"@/services/events\";\nimport { setupAllItemsEventHandlers } from \"@/events/item\";\nimport { setupServiceHandlers } from \"@/events/services\";\nimport { eventEmitter } from \"@/eventBus\";\nimport { getGlobalService, } from \"@/services\";\nimport { GlobalState } from '@/services/internal/constants'\n\nconst logger = debug('app:ClientManager:initialize')\n\nexport const initialize = fromCallback<\nEventObject, \nFromCallbackInput<ClientManagerContext>\n>(({sendBack, input: {context, event}}) => {\n logger('initialize from ClientManager')\n const { isInitialized } = context\n const { options, } = event\n\n if (isInitialized) {\n sendBack({type: 'initialized'})\n return\n }\n\n const _initialize = async () => {\n const { config, addresses } = options\n\n await initItem()\n await initItemProperty()\n await initEasClient()\n await initArweaveClient()\n await initQueryClient()\n await initFileManager()\n await initDb()\n\n const { models, endpoints, arweaveDomain, } = config\n\n const {files} = endpoints\n\n if (arweaveDomain) {\n setArweaveDomain(arweaveDomain)\n }\n\n for (const [key, value] of Object.entries(models)) {\n setModel(key, value)\n }\n setupFsListeners()\n setupAllItemsEventHandlers()\n setupServicesEventHandlers()\n setupServiceHandlers()\n if (areFsListenersReady()) {\n eventEmitter.emit('fs.init')\n }\n if (!areFsListenersReady()) {\n console.error('fs listeners not ready during init')\n }\n\n const globalService = getGlobalService()\n\n globalService.send({\n type: 'init',\n endpoints,\n models,\n addresses,\n arweaveDomain,\n filesDir: files,\n })\n\n const { models: internalModels } = await import('@/db/configs/seed.schema.config')\n for (const [key, value] of Object.entries(internalModels)) {\n setModel(key, value)\n }\n\n await waitFor(globalService, (snapshot) => {\n logger('snapshot.value', snapshot.value)\n return snapshot.value === GlobalState.INITIALIZED\n })\n logger('globalService initialized')\n }\n\n _initialize().then(() => {\n sendBack({type: 'initialized'})\n })\n})\n","import { FromCallbackInput } from \"@/types\";\nimport { fromCallback } from \"xstate\";\nimport { ClientManagerContext } from \"@/types\";\nimport { EventObject } from \"xstate\";\nimport debug from \"debug\";\nimport { appState } from \"@/seedSchema\";\n\nconst logger = debug('app:client:writeToDb')\n\nexport const saveAppState = fromCallback<\nEventObject, \nFromCallbackInput<ClientManagerContext>\n>(\n ({sendBack, input: {key, value}}) => {\n\n const _saveAppState = async () => {\n const { BaseDb } = await import('@/db/Db/BaseDb')\n if (!BaseDb) {\n throw new Error('BaseDb not found')\n }\n const appDb = BaseDb.getAppDb()\n if (!appDb) {\n throw new Error('App DB not found')\n }\n\n console.log(`key: ${key} value: ${value}`)\n\n appDb.insert(appState)\n .values({\n key: key,\n value: JSON.stringify(value),\n })\n .onConflictDoUpdate({\n target: appState.key,\n set: {\n value: JSON.stringify(value),\n },\n })\n \n }\n\n _saveAppState().then(() => {\n sendBack({\n type: 'saveAppStateSuccess',\n key,\n value,\n })\n })\n \n })\n","import { assign } from \"xstate\";\nimport { saveAppState } from \"../actors/saveAppState\";\n\nexport const setAddresses = assign(({event, spawn}) => {\n const { addresses } = event\n spawn(saveAppState, {\n input: {\n key: 'addresses',\n value: addresses,\n },\n })\n return {\n addresses,\n isSaving: true,\n }\n})\n","import { ClientManagerContext } from \"@/types\"\nimport { assign, setup } from \"xstate\"\nimport { initialize } from \"./actors/initialize\"\nimport { setAddresses } from \"./actions/setAddresses\"\n\nexport const clientManagerMachine = setup({\n types: {\n context: {} as ClientManagerContext,\n input: {} as ClientManagerContext | undefined,\n },\n actions: {\n setAddresses,\n },\n actors: {\n initialize,\n },\n}).createMachine({\n id: 'clientManager',\n initial: 'uninitialized',\n context: ({ input }) => input as ClientManagerContext,\n states: {\n uninitialized: {\n on: {\n init: {\n target: 'initializing',\n },\n },\n },\n initializing: {\n on: {\n initialized: {\n target: 'idle',\n },\n },\n invoke: {\n src: 'initialize',\n input: ({ event, context }) => ({ event, context }),\n },\n },\n idle: {\n entry: assign({\n isInitialized: true,\n }),\n on: {\n saveAppStateSuccess: {\n actions: assign(({ event }) => {\n const { key, value } = event\n return {\n isSaving: false\n }\n }),\n },\n setAddresses: {\n actions: ['setAddresses'],\n },\n },\n },\n },\n})\n","import debug from 'debug'\nimport { createActor, waitFor } from 'xstate'\nimport { clientManagerMachine } from '@/client/clientManagerMachine'\nimport { SeedConstructorOptions } from '@/types/index'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { appState } from '@/seedSchema'\nimport { eq } from 'drizzle-orm'\nimport { CLIENT_NOT_INITIALIZED } from '@/helpers/constants'\n\nconst logger = debug('app:client')\n\nexport const clientManager = createActor(clientManagerMachine, {\n input: {\n isInitialized: false,\n }\n})\n\nconst subscription = clientManager.subscribe(( snapshot ) => {\n logger('ClientManager snapshot.value:', snapshot.value)\n logger('ClientManager snapshot.context.isInitialized:', snapshot.context.isInitialized)\n})\n\nclientManager.start()\n\nconst ensureInitialized = () => {\n if (!clientManager.getSnapshot().context.isInitialized) {\n throw new Error(CLIENT_NOT_INITIALIZED);\n }\n}\n\nexport const ClientManager = {\n isInitialized: () => clientManager.getSnapshot().context.isInitialized,\n getService: () => {\n ensureInitialized();\n return clientManager;\n },\n init: async (options: SeedConstructorOptions) => {\n clientManager.send({ type: 'init', options });\n await waitFor(clientManager, (snapshot) => snapshot.context.isInitialized);\n },\n setAddresses: async (addresses: string[]) => {\n ensureInitialized();\n logger('setAddresses', addresses);\n clientManager.send({ type: 'setAddresses', addresses });\n await waitFor(clientManager, (snapshot) => !snapshot.context.isSaving);\n logger('setAddresses success', addresses);\n },\n getAddresses: async () => {\n ensureInitialized();\n const db = await BaseDb.getAppDb();\n const results = await db.select().from(appState).where(eq(appState.key, 'addresses'));\n return JSON.parse(results[0]?.value);\n },\n stop: () => {\n ensureInitialized();\n clientManager.stop();\n },\n unload: () => {\n ensureInitialized();\n clientManager.stop();\n subscription.unsubscribe();\n },\n}\n","import { enableMapSet } from 'immer'\n\nexport {\n Model,\n Property,\n ImageSrc,\n List,\n Text,\n Json,\n Relation,\n} from './schema'\n\nexport { type IItem, type IItemProperty } from './interfaces'\nexport { Item } from './Item'\nexport { ItemProperty } from './ItemProperty'\nexport { Db } from './db/Db'\n\nexport {\n useItems,\n useItem,\n useItemProperties,\n useCreateItem,\n useItemProperty,\n useDeleteItem,\n useGlobalServiceStatus,\n usePublishItem,\n usePersistedSnapshots,\n useServices,\n useService,\n} from './browser'\n\nexport { getCorrectId, BaseArweaveClient, BaseEasClient, BaseFileManager, BaseQueryClient, } from './helpers'\n\nexport { getGlobalService } from './services'\n\nexport {\n eventEmitter,\n} from './eventBus'\n\nenableMapSet()\n\nexport { withSeed } from './node/webpack'\n\n\nexport { client } from './client'\n"],"names":["waitForDb","initialize","logger","types.AttestationFieldsFragmentDoc","types.SchemaFieldsFragmentDoc","types.GetTransactionTagsDocument","types.GetSchemasDocument","types.GetSchemaByNameDocument","types.GetSeedsDocument","types.GetSeedIdsDocument","types.GetStorageTransactionIdDocument","types.GetVersionsDocument","types.GetPropertiesDocument","types.GetAllPropertiesForAllVersionsDocument","types.GetFilesMetadataDocument","types.GetArweaveTransactionsDocument","types.GetImageSeedsDocument","types.GetImageVersionsDocument","types.GetSchemaUidsDocument","models","modelsTable","saveAppState","waitForFiles","areReady","inspect","IDLE","getVersionData","toSnakeCase","getPropertyData","_a","Item","ItemProperty"],"mappings":"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C,EAAC,EAAC,MAAM,EAAC,OAAO,EAAC,MAAM,EAAC,EAAC,MAAM,EAAC,MAAM,EAAC,OAAO,EAAC,QAAQ,EAAC,EAAC,EAAC,EAAC,MAAM,EAAC,OAAO,EAAC,MAAM,EAAC,EAAC,MAAM,EAAC,MAAM,EAAC,OAAO,EAAC,WAAW,EAAC,EAAC,EAAC,EAAC,MAAM,EAAC,OAAO,EAAC,MAAM,EAAC,EAAC,MAAM,EAAC,MAAM,EAAC,OAAO,EAAC,OAAO,EAAC,EAAC,cAAc,EAAC,EAAC,MAAM,EAAC,cAAc,EAAC,YAAY,EAAC,CAAC,EAAC,MAAM,EAAC,OAAO,EAAC,MAAM,EAAC,EAAC,MAAM,EAAC,MAAM,EAAC,OAAO,EAAC,IAAI,EAAC,EAAC,EAAC,EAAC,MAAM,EAAC,OAAO,EAAC,MAAM,EAAC,EAAC,MAAM,EAAC,MAAM,EAAC,OAAO,EAAC,QAAQ,EAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,MAAM,EAAC,OAAO,EAAC,MAAM,EAAC,EAAC,MAAM,EAAC,MAAM,EAAC,OAAO,EAAC,MAAM,EAAC,EAAC,cAAc,EAAC,EAAC,MAAM,EAAC,cAAc,EAAC,YAAY,EAAC,CAAC,EAAC,MAAM,EAAC,OAAO,EAAC,MAAM,EAAC,EAAC,MAAM,EAAC,MAAM,EAAC,OAAO,EAAC,MAAM,EAAC,EAAC,EAAC,EAAC,MAAM,EAAC,OAAO,EAAC,MAAM,EAAC,EAAC,MAAM,EAAC,MAAM,EAAC,OAAO,EAAC,MAAM,EAAC,EAAC,CAAC,EAAC,EAAC,EAAC,EAAC,MAAM,EAAC,OAAO,EAAC,MAAM,EAAC,EAAC,MAAM,EAAC,MAAM,EAAC,OAAO,EAAC,MAAM,EAAC,EAAC,cAAc,EAAC,EAAC,MAAM,EAAC,cAAc,EAAC,YAAY,EAAC,CAAC,EAAC,MAAM,EAAC,OAAO,EAAC,MAAM,EAAC,EAAC,MAAM,EAAC,MAAM,EAAC,OAAO,EAAC,MAAM,EAAC,EAAC,EAAC,EAAC,MAAM,EAAC,OAAO,EAAC,MAAM,EAAC,EAAC,MAAM,EAAC,MAAM,EAAC,OAAO,EAAC,OAAO,EAAC,EAAC,CAAC,EAAC,EAAC,CAAC,EAAC,EAAC,CAAC,EAAC,EAA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ACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9VO,MAAM,cAAc,GAAmB,OAAO,cAAc,EAAE,oBAAoB,KAAI;AAC3F,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE;IAE/B,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,cAAc;IAE3C,IAAI,CAAC,OAAO,EAAE;AACZ,QAAA,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC;;IAmC1D,MAAM,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC7E,CAAC;;AC/Cc,KAAK,CAAC,mCAAmC;AAEjD,MAAM,aAAa,GAAG,YAAY,CAGvC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,KAAI;AACrC,IAAA,MAAM,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"}