@seedprotocol/sdk 0.2.51 → 0.2.52

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 (205) hide show
  1. package/dist/{ArweaveClient-D1TsTBoj.js → ArweaveClient-D5iJisYr.js} +2 -2
  2. package/dist/{ArweaveClient-DpdXUcVJ.js.map → ArweaveClient-D5iJisYr.js.map} +1 -1
  3. package/dist/{ArweaveClient-DpdXUcVJ.js → ArweaveClient-HEIIuOfB.js} +2 -2
  4. package/dist/{ArweaveClient-D1TsTBoj.js.map → ArweaveClient-HEIIuOfB.js.map} +1 -1
  5. package/dist/{Db-quJxmvHH.js → Db-D-BsZYlN.js} +3 -3
  6. package/dist/{Db-quJxmvHH.js.map → Db-D-BsZYlN.js.map} +1 -1
  7. package/dist/{Db-DMJ0v3gO.js → Db-Dpsbk_T7.js} +3 -3
  8. package/dist/{Db-DMJ0v3gO.js.map → Db-Dpsbk_T7.js.map} +1 -1
  9. package/dist/{EasClient-ClZDuT3o.js → EasClient-D3wKgt0o.js} +2 -2
  10. package/dist/{EasClient-DfnGY_2X.js.map → EasClient-D3wKgt0o.js.map} +1 -1
  11. package/dist/{EasClient-DfnGY_2X.js → EasClient-jqkT2ZBt.js} +2 -2
  12. package/dist/{EasClient-ClZDuT3o.js.map → EasClient-jqkT2ZBt.js.map} +1 -1
  13. package/dist/{FileManager-texI7UwL.js → FileManager-4mWYO3Mt.js} +3 -5
  14. package/dist/FileManager-4mWYO3Mt.js.map +1 -0
  15. package/dist/{Item-D4n439Ei.js → Item-CqWdJsyg.js} +3 -3
  16. package/dist/{Item-D4n439Ei.js.map → Item-CqWdJsyg.js.map} +1 -1
  17. package/dist/{ItemProperty-Be5ymRVT.js → ItemProperty-BpBW3IWx.js} +3 -3
  18. package/dist/{ItemProperty-Be5ymRVT.js.map → ItemProperty-BpBW3IWx.js.map} +1 -1
  19. package/dist/{QueryClient-B1HkAaJo.js → QueryClient-CBOP3OoU.js} +2 -2
  20. package/dist/{QueryClient-B1HkAaJo.js.map → QueryClient-CBOP3OoU.js.map} +1 -1
  21. package/dist/{QueryClient-BPoc9eBn.js → QueryClient-bKb3SB0W.js} +2 -2
  22. package/dist/{QueryClient-BPoc9eBn.js.map → QueryClient-bKb3SB0W.js.map} +1 -1
  23. package/dist/bin.js +5 -5
  24. package/dist/{constants-5PxfAeqj.js → constants-CIDbABDz.js} +2 -2
  25. package/dist/{constants-5PxfAeqj.js.map → constants-CIDbABDz.js.map} +1 -1
  26. package/dist/{index-BeKRizLf.js → index-BRxO1tLl.js} +257 -145
  27. package/dist/index-BRxO1tLl.js.map +1 -0
  28. package/dist/{index-BLla2o05.js → index-d8Qsot6w.js} +3 -3
  29. package/dist/index-d8Qsot6w.js.map +1 -0
  30. package/dist/main.js +2 -2
  31. package/dist/package.json +189 -0
  32. package/dist/{seed.schema.config-CMpV_hyS.js → seed.schema.config-CPRn6KVL.js} +3 -3
  33. package/dist/{seed.schema.config-CMpV_hyS.js.map → seed.schema.config-CPRn6KVL.js.map} +1 -1
  34. package/dist/types/src/client/BaseClientManager.d.ts +7 -0
  35. package/dist/types/src/client/BaseClientManager.d.ts.map +1 -0
  36. package/dist/types/src/client/actions/setAddresses.d.ts +2 -0
  37. package/dist/types/src/client/actions/setAddresses.d.ts.map +1 -0
  38. package/dist/types/src/client/actors/initialize.d.ts +4 -0
  39. package/dist/types/src/client/actors/initialize.d.ts.map +1 -0
  40. package/dist/types/src/client/actors/saveAppState.d.ts +5 -0
  41. package/dist/types/src/client/actors/saveAppState.d.ts.map +1 -0
  42. package/dist/types/src/client/clientManagerMachine.d.ts +19 -0
  43. package/dist/types/src/client/clientManagerMachine.d.ts.map +1 -0
  44. package/dist/types/src/client/index.d.ts +41 -0
  45. package/dist/types/src/client/index.d.ts.map +1 -0
  46. package/dist/types/src/client.d.ts.map +1 -1
  47. package/dist/types/src/node/helpers/FileManager.d.ts.map +1 -1
  48. package/dist/types/src/services/internal/actors/validateInput.d.ts.map +1 -1
  49. package/dist/types/src/types/machines.d.ts +5 -0
  50. package/dist/types/src/types/machines.d.ts.map +1 -1
  51. package/package.json +2 -2
  52. package/dist/FileManager-texI7UwL.js.map +0 -1
  53. package/dist/index-BLla2o05.js.map +0 -1
  54. package/dist/index-BeKRizLf.js.map +0 -1
  55. package/dist/src/AppStateSchema.ts +0 -10
  56. package/dist/src/ArweaveClient.ts +0 -13
  57. package/dist/src/Attestation.ts +0 -21
  58. package/dist/src/BaseArweaveClient.ts +0 -13
  59. package/dist/src/BaseDb.ts +0 -35
  60. package/dist/src/BaseEasClient.ts +0 -13
  61. package/dist/src/BaseFileManager.ts +0 -56
  62. package/dist/src/BaseItem.ts +0 -413
  63. package/dist/src/BaseItemProperty.ts +0 -416
  64. package/dist/src/BaseQueryClient.ts +0 -13
  65. package/dist/src/ConfigSchema.ts +0 -15
  66. package/dist/src/Db.ts +0 -78
  67. package/dist/src/EasClient.ts +0 -13
  68. package/dist/src/FileDownloader.ts +0 -63
  69. package/dist/src/FileManager.ts +0 -57
  70. package/dist/src/IDb.ts +0 -7
  71. package/dist/src/IEasClient.ts +0 -2
  72. package/dist/src/IItem.ts +0 -26
  73. package/dist/src/IItemProperty.ts +0 -28
  74. package/dist/src/IQueryClient.ts +0 -4
  75. package/dist/src/ImageResizer.ts +0 -81
  76. package/dist/src/Item.ts +0 -12
  77. package/dist/src/ItemProperty.ts +0 -9
  78. package/dist/src/MetadataSchema.ts +0 -28
  79. package/dist/src/ModelSchema.ts +0 -46
  80. package/dist/src/ModelUidSchema.ts +0 -16
  81. package/dist/src/PropertyUidSchema.ts +0 -16
  82. package/dist/src/QueryClient.ts +0 -22
  83. package/dist/src/Schema.ts +0 -17
  84. package/dist/src/SeedProtocolSdk.d.ts +0 -19
  85. package/dist/src/SeedSchema.ts +0 -29
  86. package/dist/src/VersionSchema.ts +0 -16
  87. package/dist/src/actors.ts +0 -295
  88. package/dist/src/addModelsToDb.ts +0 -152
  89. package/dist/src/allItems.ts +0 -31
  90. package/dist/src/analyzeInput.ts +0 -144
  91. package/dist/src/browser.app.db.config.ts +0 -27
  92. package/dist/src/browser.ts +0 -30
  93. package/dist/src/checkStatus.ts +0 -50
  94. package/dist/src/client.ts +0 -148
  95. package/dist/src/configureFs.ts +0 -94
  96. package/dist/src/connectToDb.ts +0 -41
  97. package/dist/src/connectionManager.ts +0 -67
  98. package/dist/src/constants.ts +0 -125
  99. package/dist/src/content-hash.ts +0 -30
  100. package/dist/src/create.ts +0 -39
  101. package/dist/src/createMetadata.ts +0 -77
  102. package/dist/src/createNewItem.ts +0 -61
  103. package/dist/src/createPublishAttempt.ts +0 -16
  104. package/dist/src/createSeed.ts +0 -31
  105. package/dist/src/createSeeds.ts +0 -24
  106. package/dist/src/createVersion.ts +0 -33
  107. package/dist/src/dbMachine.ts +0 -182
  108. package/dist/src/deleteItem.ts +0 -19
  109. package/dist/src/download.ts +0 -202
  110. package/dist/src/drizzle.ts +0 -78
  111. package/dist/src/eas.ts +0 -40
  112. package/dist/src/environment.ts +0 -35
  113. package/dist/src/eventBus.ts +0 -5
  114. package/dist/src/events.ts +0 -14
  115. package/dist/src/fetchDataFromEas.ts +0 -94
  116. package/dist/src/fetchDbData.ts +0 -19
  117. package/dist/src/fetchRelatedItems.ts +0 -184
  118. package/dist/src/fetchSeeds.ts +0 -52
  119. package/dist/src/fetchVersions.ts +0 -49
  120. package/dist/src/files.ts +0 -81
  121. package/dist/src/filesDownload.ts +0 -326
  122. package/dist/src/fragment-masking.ts +0 -87
  123. package/dist/src/getExistingItem.ts +0 -60
  124. package/dist/src/getItem.ts +0 -32
  125. package/dist/src/getItemData.ts +0 -99
  126. package/dist/src/getItemProperties.ts +0 -56
  127. package/dist/src/getItemProperty.ts +0 -34
  128. package/dist/src/getItems.ts +0 -70
  129. package/dist/src/getMetadata.ts +0 -40
  130. package/dist/src/getModelSchemas.ts +0 -89
  131. package/dist/src/getPropertyData.ts +0 -50
  132. package/dist/src/getPublishPayload.ts +0 -355
  133. package/dist/src/getPublishUploads.ts +0 -207
  134. package/dist/src/getRelationValueData.ts +0 -27
  135. package/dist/src/getSchemaForItemProperty.ts +0 -68
  136. package/dist/src/getSchemaForModel.ts +0 -42
  137. package/dist/src/getSchemaUidForModel.ts +0 -32
  138. package/dist/src/getSeedData.ts +0 -34
  139. package/dist/src/getSegmentedItemProperties.ts +0 -65
  140. package/dist/src/getStorageTransactionIdForSeedUid.ts +0 -38
  141. package/dist/src/getVersionData.ts +0 -46
  142. package/dist/src/getVersionsForVersionUids.ts +0 -39
  143. package/dist/src/globalMachine.ts +0 -280
  144. package/dist/src/gql.ts +0 -118
  145. package/dist/src/graphql.ts +0 -3209
  146. package/dist/src/helpers.ts +0 -273
  147. package/dist/src/hydrateExistingItem.ts +0 -137
  148. package/dist/src/hydrateFromDb.ts +0 -270
  149. package/dist/src/hydrateNewItem.ts +0 -34
  150. package/dist/src/imageResize.ts +0 -507
  151. package/dist/src/index.d.ts +0 -5
  152. package/dist/src/index.ts +0 -4
  153. package/dist/src/initialize.ts +0 -124
  154. package/dist/src/internalMachine.ts +0 -238
  155. package/dist/src/itemMachineAll.ts +0 -157
  156. package/dist/src/itemMachineSingle.ts +0 -158
  157. package/dist/src/loadAppDb.ts +0 -47
  158. package/dist/src/machines.ts +0 -60
  159. package/dist/src/metadataLatest.ts +0 -34
  160. package/dist/src/migrate.ts +0 -53
  161. package/dist/src/model.ts +0 -72
  162. package/dist/src/modelClass.ts +0 -19
  163. package/dist/src/node.app.db.config.ts +0 -41
  164. package/dist/src/prepareDb.ts +0 -29
  165. package/dist/src/preparePublishRequestData.ts +0 -81
  166. package/dist/src/processItems.ts +0 -74
  167. package/dist/src/property.ts +0 -156
  168. package/dist/src/propertyMachine.ts +0 -202
  169. package/dist/src/publish.ts +0 -28
  170. package/dist/src/publishMachine.ts +0 -77
  171. package/dist/src/queries.ts +0 -13
  172. package/dist/src/recoverDeletedItem.ts +0 -14
  173. package/dist/src/reload.ts +0 -33
  174. package/dist/src/request.ts +0 -45
  175. package/dist/src/requestAll.ts +0 -157
  176. package/dist/src/resolveRelatedValue.ts +0 -367
  177. package/dist/src/resolveRemoteStorage.ts +0 -88
  178. package/dist/src/saveAppState.ts +0 -19
  179. package/dist/src/saveConfig.ts +0 -88
  180. package/dist/src/saveDataToDb.ts +0 -145
  181. package/dist/src/saveImageSrc.ts +0 -242
  182. package/dist/src/saveItemStorage.ts +0 -156
  183. package/dist/src/saveMetadata.ts +0 -18
  184. package/dist/src/savePublishService.ts +0 -30
  185. package/dist/src/saveRelation.ts +0 -112
  186. package/dist/src/seed.schema.config.ts +0 -25
  187. package/dist/src/seed.ts +0 -10
  188. package/dist/src/seedProtocol.ts +0 -17
  189. package/dist/src/services.ts +0 -365
  190. package/dist/src/sqlWasmClient.ts +0 -88
  191. package/dist/src/syncDbWithEas.ts +0 -628
  192. package/dist/src/trash.ts +0 -29
  193. package/dist/src/ts-to-proto.ts +0 -101
  194. package/dist/src/types.ts +0 -12
  195. package/dist/src/updateItemPropertyValue.ts +0 -243
  196. package/dist/src/updateMachineContext.ts +0 -21
  197. package/dist/src/updateMetadata.ts +0 -59
  198. package/dist/src/upload.ts +0 -86
  199. package/dist/src/validate.ts +0 -45
  200. package/dist/src/validateInput.ts +0 -47
  201. package/dist/src/validateItemData.ts +0 -20
  202. package/dist/src/versionData.ts +0 -24
  203. package/dist/src/waitForDb.ts +0 -25
  204. package/dist/src/waitForFiles.ts +0 -34
  205. package/dist/src/wasm.d.ts +0 -8300
@@ -1,628 +0,0 @@
1
- import { camelCase, DebouncedFunc, startCase, throttle } from 'lodash-es'
2
- import { Attestation, SchemaWhereInput } from '@/graphql/gql/graphql'
3
- import {
4
- metadata,
5
- MetadataType,
6
- modelUids,
7
- properties,
8
- seeds,
9
- SeedType,
10
- versions,
11
- } from '@/seedSchema'
12
- import { and, eq, inArray, sql } from 'drizzle-orm'
13
- import {
14
- generateId,
15
- parseEasRelationPropertyName,
16
- toSnakeCase,
17
- } from '@/helpers'
18
- import {
19
- GET_PROPERTIES,
20
- GET_SCHEMAS,
21
- GET_SEEDS,
22
- GET_VERSIONS,
23
- } from '@/Item/queries'
24
- import { INTERNAL_DATA_TYPES } from '@/helpers/constants'
25
- import { escapeSqliteString, getAddressesFromDb } from '@/helpers/db'
26
- import { eventEmitter } from '@/eventBus'
27
- import { getModelNames, getModels } from '@/stores/modelClass'
28
- import { BaseDb } from '@/db/Db/BaseDb'
29
- import { getModelSchemas } from '@/db/read/getModelSchemas'
30
- import { ModelSchema, PropertyType } from '@/types'
31
- import { createSeeds } from '@/db/write/createSeeds'
32
- import { setSchemaUidForSchemaDefinition } from '@/stores/eas'
33
- import { BaseEasClient } from '@/helpers/EasClient/BaseEasClient'
34
- import { BaseQueryClient } from '@/helpers/QueryClient/BaseQueryClient'
35
-
36
-
37
-
38
-
39
- const relationValuesToExclude = [
40
- '0x0000000000000000000000000000000000000000000000000000000000000020',
41
- ]
42
-
43
-
44
- const getSeedsFromSchemaUids = async ({ schemaUids, addresses }) => {
45
- const AND = [
46
- {
47
- OR: [] as Record<string, unknown>[],
48
- },
49
- ]
50
-
51
- for (const schemaUid of schemaUids) {
52
- AND[0].OR.push({
53
- decodedDataJson: {
54
- contains: schemaUid,
55
- },
56
- })
57
- }
58
-
59
- const queryClient = BaseQueryClient.getQueryClient()
60
- const easClient = BaseEasClient.getEasClient()
61
-
62
- const { itemSeeds } = await queryClient.fetchQuery({
63
- queryKey: [`getSeedsForAllModels`],
64
- queryFn: async () =>
65
- easClient.request(GET_SEEDS, {
66
- where: {
67
- attester: {
68
- in: addresses,
69
- },
70
- schemaId: {
71
- in: schemaUids,
72
- },
73
- AND,
74
- },
75
- }),
76
- })
77
-
78
- return itemSeeds
79
- }
80
-
81
- const seedUidToLocalId = new Map<string, string>()
82
- const seedUidToModelType = new Map<string, string>()
83
- const relatedSeedUids = new Set<string>()
84
-
85
- const versionUidToLocalId = new Map<string, string>()
86
- const versionUidToSeedUid = new Map<string, string>()
87
-
88
- const propertyUidToLocalId = new Map<string, string>()
89
-
90
- type SaveEasSeedsToDbProps = {
91
- itemSeeds: Attestation[]
92
- }
93
-
94
- type SaveEasSeedsToDbReturn = {
95
- seedUids: string[]
96
- }
97
-
98
- type SaveEasSeedsToDb = (
99
- props: SaveEasSeedsToDbProps,
100
- ) => Promise<SaveEasSeedsToDbReturn>
101
-
102
- const saveEasSeedsToDb: SaveEasSeedsToDb = async ({ itemSeeds }) => {
103
- const appDb = BaseDb.getAppDb()
104
-
105
- const seedUids = itemSeeds.map((seed) => seed.id)
106
-
107
- const existingSeedRecordsRows: SeedType[] = await appDb
108
- .select()
109
- .from(seeds)
110
- .where(inArray(seeds.uid, seedUids))
111
-
112
- const existingSeedUids = new Set<string>()
113
-
114
- if (existingSeedRecordsRows && existingSeedRecordsRows.length > 0) {
115
- for (const row of existingSeedRecordsRows) {
116
- existingSeedUids.add(row.uid)
117
- seedUidToLocalId.set(row.uid, row.localId)
118
- seedUidToModelType.set(row.uid, row.type)
119
- }
120
- }
121
-
122
- const newSeeds = itemSeeds.filter((seed) => !existingSeedUids.has(seed.id))
123
-
124
- if (newSeeds.length === 0) {
125
- return { seedUidToLocalId, seedUids }
126
- }
127
-
128
- const newSeedsData: Partial<SeedType>[] = []
129
-
130
- for (let i = 0; i < newSeeds.length; i++) {
131
- const seed = newSeeds[i]
132
- seedUidToModelType.set(seed.id, seed.schema.schemaNames[0].name)
133
- const seedLocalId = generateId()
134
- seedUidToLocalId.set(seed.id, seedLocalId)
135
-
136
- const attestationRaw = escapeSqliteString(JSON.stringify(seed))
137
-
138
- newSeedsData.push({
139
- localId: seedLocalId,
140
- uid: seed.id,
141
- schemaUid: seed.schemaId,
142
- type: seed.schema.schemaNames[0].name,
143
- createdAt: Date.now(),
144
- attestationCreatedAt: seed.timeCreated * 1000,
145
- attestationRaw,
146
- })
147
-
148
- seedUidToLocalId.set(seed.id, seedLocalId)
149
- }
150
-
151
- const newSeedUids = await createSeeds(newSeedsData)
152
-
153
- return { seedUids: newSeedUids }
154
- }
155
-
156
- type SaveEasVersionsToDbParams = {
157
- itemVersions: Attestation[]
158
- }
159
-
160
- type SaveEasVersionsToDb = (
161
- props: SaveEasVersionsToDbParams,
162
- ) => Promise<Record<string, unknown>>
163
-
164
- const saveEasVersionsToDb: SaveEasVersionsToDb = async ({ itemVersions }) => {
165
- const versionUids = itemVersions.map((version) => version.id)
166
-
167
- const appDb = BaseDb.getAppDb()
168
-
169
- const existingVersionRecordsRows: MetadataType[] = await appDb
170
- .select()
171
- .from(versions)
172
- .where(inArray(versions.uid, versionUids))
173
-
174
- const existingVersionUids = new Set<string>()
175
-
176
- if (existingVersionRecordsRows && existingVersionRecordsRows.length > 0) {
177
- for (const row of existingVersionRecordsRows) {
178
- existingVersionUids.add(row.uid)
179
- versionUidToLocalId.set(row.uid, row.localId)
180
- versionUidToSeedUid.set(row.uid, row.seedUid)
181
- }
182
- }
183
-
184
- const newVersions = itemVersions.filter(
185
- (version) => !existingVersionUids.has(version.id),
186
- )
187
-
188
- if (newVersions.length === 0) {
189
- return { versionUidToLocalId, versionUids }
190
- }
191
-
192
- let insertVersionsQuery = `INSERT INTO versions (local_id, uid, seed_uid, seed_local_id, seed_type, created_at,
193
- attestation_created_at,
194
- attestation_raw)
195
- VALUES `
196
-
197
- for (let i = 0; i < newVersions.length; i++) {
198
- const version = newVersions[i]
199
- versionUidToSeedUid.set(version.id, version.refUID)
200
- const versionLocalId = generateId()
201
- versionUidToLocalId.set(version.id, versionLocalId)
202
-
203
- const seedUid = versionUidToSeedUid.get(version.id)
204
- const seedLocalId = seedUidToLocalId.get(seedUid!)
205
- const seedType = seedUidToModelType.get(seedUid!)
206
- const attestationRaw = escapeSqliteString(JSON.stringify(version))
207
-
208
- const valuesString = `('${versionLocalId}', '${version.id}', '${seedUid}', '${seedLocalId}', '${seedType}', ${Date.now()}, ${version.timeCreated * 1000}, '${attestationRaw}')`
209
-
210
- if (i < newVersions.length - 1) {
211
- insertVersionsQuery += valuesString + ', '
212
- }
213
-
214
- if (i === newVersions.length - 1) {
215
- insertVersionsQuery += valuesString + ';'
216
- }
217
-
218
- versionUidToLocalId.set(version.id, versionLocalId)
219
- }
220
-
221
- await appDb.run(sql.raw(insertVersionsQuery))
222
-
223
- return { versionUids }
224
- }
225
-
226
- const createMetadataRecordsForStorageTransactionId = async (
227
- storageTransactionIdProperty: Attestation,
228
- modelSchema: ModelSchema,
229
- ) => {
230
- const attestationData = JSON.parse(
231
- storageTransactionIdProperty.decodedDataJson,
232
- )[0].value
233
- const propertyName = camelCase(attestationData.name)
234
- const propertyValue = attestationData.value
235
-
236
- const itemStorageProperties = new Map<string, PropertyType>()
237
-
238
- for (const [_propertyName, propertyDef] of Object.entries(modelSchema)) {
239
- if (propertyDef?.storageType && propertyDef.storageType === 'ItemStorage') {
240
- itemStorageProperties.set(_propertyName, propertyDef)
241
- }
242
- }
243
-
244
- if (itemStorageProperties.size === 0) {
245
- return
246
- }
247
-
248
- const appDb = BaseDb.getAppDb()
249
-
250
- for (const [_propertyName, propertyDef] of itemStorageProperties.entries()) {
251
- const existingMetadataRecordRows = await appDb
252
- .select()
253
- .from(metadata)
254
- .where(
255
- and(
256
- eq(metadata.propertyName, _propertyName),
257
- eq(metadata.propertyValue, propertyValue),
258
- eq(metadata.versionUid, storageTransactionIdProperty.refUID),
259
- ),
260
- )
261
-
262
- if (existingMetadataRecordRows && existingMetadataRecordRows.length > 0) {
263
- continue
264
- }
265
-
266
- const seedUid = versionUidToSeedUid.get(
267
- storageTransactionIdProperty.refUID,
268
- ) as string
269
- const seedLocalId = seedUidToLocalId.get(seedUid)
270
- const versionUid = storageTransactionIdProperty.refUID
271
- const versionLocalId = versionUidToLocalId.get(versionUid)
272
-
273
- const propertyLocalId = generateId()
274
- await appDb.insert(metadata).values({
275
- localId: propertyLocalId,
276
- propertyName: _propertyName,
277
- propertyValue,
278
- localStorageDir: propertyDef.localStorageDir,
279
- seedLocalId,
280
- seedUid,
281
- versionLocalId,
282
- versionUid,
283
- refValueType: 'file',
284
- refResolvedValue: `${propertyValue}${propertyDef.filenameSuffix}`,
285
- modelType: seedUidToModelType.get(seedUid),
286
- createdAt: Date.now(),
287
- updatedAt: Date.now(),
288
- })
289
- }
290
- }
291
-
292
- type SaveEasPropertiesToDbParams = {
293
- itemProperties: Attestation[]
294
- itemSeeds: Attestation[]
295
- }
296
-
297
- type SaveEasPropertiesToDb = (
298
- props: SaveEasPropertiesToDbParams,
299
- ) => Promise<Record<string, unknown>>
300
-
301
- let isSavingToDb = false
302
-
303
- const saveEasPropertiesToDb: SaveEasPropertiesToDb = async ({
304
- itemProperties,
305
- itemSeeds,
306
- }) => {
307
- if (isSavingToDb) {
308
- return
309
- }
310
- isSavingToDb = true
311
-
312
- const propertyUids = itemProperties.map((property) => property.id)
313
-
314
- const models = getModels()
315
-
316
- const appDb = BaseDb.getAppDb()
317
-
318
- const existingMetadataRecordsRows: MetadataType[] = await appDb
319
- .select()
320
- .from(metadata)
321
- .where(inArray(metadata.uid, propertyUids))
322
-
323
- const existingPropertyRecordsUids = new Set<string>()
324
-
325
- if (existingMetadataRecordsRows && existingMetadataRecordsRows.length > 0) {
326
- for (const row of existingMetadataRecordsRows) {
327
- existingPropertyRecordsUids.add(row.uid)
328
- propertyUidToLocalId.set(row.uid, row.localId)
329
- }
330
- }
331
-
332
- const newProperties = itemProperties.filter(
333
- (property) => !existingPropertyRecordsUids.has(property.id),
334
- )
335
-
336
- if (newProperties.length === 0) {
337
- return { propertyUidToLocalId, propertyUids }
338
- }
339
-
340
- let insertPropertiesQuery = `INSERT INTO metadata (local_id, uid, schema_uid, property_name, property_value,
341
- eas_data_type, version_uid, version_local_id, seed_uid,
342
- seed_local_id, model_type, ref_value_type, ref_seed_type,
343
- ref_schema_uid,
344
- created_at, attestation_created_at, attestation_raw,
345
- local_storage_dir, ref_resolved_value)
346
- VALUES `
347
-
348
- for (let i = 0; i < newProperties.length; i++) {
349
- const property = newProperties[i]
350
- const propertyLocalId = generateId()
351
- const metadata = JSON.parse(property.decodedDataJson)[0].value
352
-
353
- let propertyNameSnake = metadata.name
354
-
355
- if (!propertyNameSnake) {
356
- console.warn(
357
- '[item/events] [syncDbWithEas] no propertyName found for property: ',
358
- property,
359
- )
360
- continue
361
- }
362
-
363
- let isRelation = false
364
- let refValueType
365
- let refSeedType
366
- let refSchemaUid
367
- let refResolvedValue
368
- let isList = false
369
- const schemaUid = property.schemaId
370
-
371
- setSchemaUidForSchemaDefinition({
372
- text: propertyNameSnake,
373
- schemaUid,
374
- })
375
-
376
- if (
377
- (propertyNameSnake.endsWith('_id') ||
378
- propertyNameSnake.endsWith('_ids')) &&
379
- propertyNameSnake !== 'storage_transaction_id' &&
380
- propertyNameSnake !== 'storage_provider_transaction_id'
381
- ) {
382
- isRelation = true
383
-
384
- if (Array.isArray(metadata.value)) {
385
- isList = true
386
- refValueType = 'list'
387
-
388
- const result = parseEasRelationPropertyName(propertyNameSnake)
389
-
390
- if (result) {
391
- propertyNameSnake = result.propertyName
392
- refSeedType = result.modelName
393
- }
394
-
395
- metadata.value.forEach((value) => {
396
- relatedSeedUids.add(value)
397
- })
398
- }
399
-
400
- if (!isList) {
401
- if (relationValuesToExclude.includes(metadata.value)) {
402
- continue
403
- }
404
- relatedSeedUids.add(metadata.value)
405
- }
406
- }
407
-
408
- let propertyValue = metadata.value
409
-
410
- if (typeof propertyValue !== 'string') {
411
- propertyValue = JSON.stringify(propertyValue)
412
- }
413
-
414
- if (isRelation && !isList) {
415
- const relatedSeed = itemSeeds.find(
416
- (seed: Attestation) => seed.id === metadata.value,
417
- )
418
- if (relatedSeed && relatedSeed.schema && relatedSeed.schema.schemaNames) {
419
- refSeedType = relatedSeed.schema.schemaNames[0].name
420
- refSchemaUid = relatedSeed.schemaId
421
- }
422
- }
423
-
424
- if (isRelation && isList) {
425
- const relatedSeeds = itemSeeds.filter((seed: Attestation) =>
426
- metadata.value.includes(seed.id),
427
- )
428
- if (relatedSeeds && relatedSeeds.length > 0) {
429
- refSeedType = relatedSeeds[0].schema.schemaNames[0].name
430
- refSchemaUid = relatedSeeds[0].schemaId
431
- }
432
- }
433
-
434
- const propertyName = camelCase(propertyNameSnake)
435
- propertyValue = escapeSqliteString(propertyValue)
436
- const easDataType = metadata.type
437
- const versionUid = property.refUID
438
- const versionLocalId = versionUidToLocalId.get(versionUid)
439
- const attestationCreatedAt = property.timeCreated * 1000
440
- const attestationRaw = escapeSqliteString(JSON.stringify(property))
441
- const seedUid = versionUidToSeedUid.get(versionUid)
442
- const seedLocalId = seedUidToLocalId.get(seedUid!)
443
- const modelType = seedUidToModelType.get(seedUid!)
444
-
445
- let localStorageDir
446
- const modelName = startCase(modelType)
447
- const ModelClass = models[modelName]
448
- const modelSchema = ModelClass.schema
449
-
450
- if (propertyNameSnake === 'storage_transaction_id') {
451
- await createMetadataRecordsForStorageTransactionId(property, modelSchema)
452
- }
453
-
454
- const valuesString = `('${propertyLocalId}', '${property.id}',
455
- '${property.schemaId}', '${propertyName}',
456
- '${propertyValue}', '${easDataType}', '${versionUid}',
457
- '${versionLocalId}', '${seedUid}', '${seedLocalId}',
458
- '${modelType}', ${refValueType ? `'${refValueType}'` : 'NULL'},
459
- ${refSeedType ? `'${refSeedType}'` : 'NULL'},
460
- ${refSchemaUid ? `'${refSchemaUid}'` : 'NULL'},
461
- ${Date.now()}, ${attestationCreatedAt}, '${attestationRaw}',
462
- ${localStorageDir ? `'${localStorageDir}'` : 'NULL'},
463
- ${refResolvedValue ? `'${refResolvedValue}'` : 'NULL'})`
464
-
465
- if (i < newProperties.length - 1) {
466
- insertPropertiesQuery += valuesString + ', '
467
- }
468
-
469
- if (i === newProperties.length - 1) {
470
- insertPropertiesQuery += valuesString + ';'
471
- }
472
-
473
- propertyUidToLocalId.set(property.id, propertyLocalId)
474
- }
475
-
476
- if (insertPropertiesQuery.endsWith('VALUES ')) {
477
- return { propertyUids }
478
- }
479
-
480
- if (insertPropertiesQuery.endsWith(', ')) {
481
- insertPropertiesQuery = insertPropertiesQuery.slice(0, -2) + ';'
482
- }
483
-
484
- await appDb.run(sql.raw(insertPropertiesQuery))
485
-
486
- isSavingToDb = false
487
-
488
- return { propertyUids }
489
- }
490
-
491
- const getRelatedSeedsAndVersions = async () => {
492
- const queryClient = BaseQueryClient.getQueryClient()
493
- const easClient = BaseEasClient.getEasClient()
494
-
495
- const { itemSeeds } = await easClient.request(GET_SEEDS, {
496
- where: {
497
- id: {
498
- in: Array.from(relatedSeedUids),
499
- },
500
- },
501
- })
502
-
503
- await saveEasSeedsToDb({ itemSeeds })
504
-
505
- const { itemVersions } = await easClient.request(GET_VERSIONS, {
506
- where: {
507
- refUID: {
508
- in: Array.from(relatedSeedUids),
509
- },
510
- },
511
- })
512
-
513
- await saveEasVersionsToDb({ itemVersions })
514
-
515
- const relatedVersionUids = itemVersions.map((v) => v.id)
516
-
517
- const { itemProperties } = await easClient.request(GET_PROPERTIES, {
518
- where: {
519
- refUID: {
520
- in: relatedVersionUids,
521
- },
522
- },
523
- })
524
-
525
- await saveEasPropertiesToDb({
526
- itemProperties,
527
- itemSeeds,
528
- })
529
- }
530
-
531
- const syncDbWithEasHandler: DebouncedFunc<any> = throttle(
532
- async (_) => {
533
- const appDb = BaseDb.getAppDb()
534
-
535
- const { modelSchemas, schemaStringToModelRecord } = await getModelSchemas()
536
-
537
- if (
538
- !modelSchemas ||
539
- !modelSchemas.schemas ||
540
- modelSchemas.schemas.length === 0
541
- ) {
542
- throw new Error(`No schemas found for models`)
543
- }
544
-
545
- const schemaUids: string[] = []
546
-
547
- for (const modelSchema of modelSchemas.schemas) {
548
- const foundModel = schemaStringToModelRecord.get(modelSchema.schema)
549
-
550
- if (!foundModel) {
551
- throw new Error(`Model not found for schema ${modelSchema.schema}`)
552
- }
553
-
554
- schemaUids.push(modelSchema.id)
555
-
556
- await appDb
557
- .insert(modelUids)
558
- .values({
559
- modelId: foundModel.id,
560
- uid: modelSchema.id,
561
- })
562
- .onConflictDoNothing()
563
-
564
- }
565
-
566
- const addresses = await getAddressesFromDb()
567
-
568
- const itemSeeds = await getSeedsFromSchemaUids({
569
- schemaUids: schemaUids,
570
- addresses,
571
- })
572
-
573
- // const seedDbRecords = new Map<string, Record<string, unknown>>()
574
-
575
- const { seedUids } = await saveEasSeedsToDb({
576
- itemSeeds,
577
- })
578
-
579
- const queryClient = BaseQueryClient.getQueryClient()
580
- const easClient = BaseEasClient.getEasClient()
581
-
582
- const { itemVersions } = await queryClient.fetchQuery({
583
- queryKey: [`getVersionsForAllModels`],
584
- queryFn: async () =>
585
- easClient.request(GET_VERSIONS, {
586
- where: {
587
- refUID: {
588
- in: seedUids,
589
- },
590
- },
591
- }),
592
- })
593
-
594
- const { versionUids } = await saveEasVersionsToDb({
595
- itemVersions,
596
- })
597
-
598
- const { itemProperties } = await queryClient.fetchQuery({
599
- queryKey: [`getPropertiesForAllModels`],
600
- queryFn: async () =>
601
- easClient.request(GET_PROPERTIES, {
602
- where: {
603
- refUID: {
604
- in: versionUids,
605
- },
606
- },
607
- }),
608
- })
609
-
610
- const { propertyUids } = saveEasPropertiesToDb({
611
- itemProperties,
612
- itemSeeds,
613
- })
614
-
615
- await getRelatedSeedsAndVersions()
616
-
617
- for (const modelName of getModelNames()) {
618
- eventEmitter.emit('item.requestAll', { modelName })
619
- }
620
- },
621
- 30000,
622
- {
623
- leading: true,
624
- trailing: false,
625
- },
626
- )
627
-
628
- export { syncDbWithEasHandler }
package/dist/src/trash.ts DELETED
@@ -1,29 +0,0 @@
1
- import { useCallback, useEffect, useState } from 'react'
2
- import { Item } from '@/browser/Item/Item'
3
- import { eventEmitter } from '@/eventBus'
4
- import { deleteItem } from '@/db/write/deleteItem'
5
-
6
- export const useDeleteItem = () => {
7
- const [isDeletingItem, setIsDeletingItem] = useState(false)
8
-
9
- const destroy = useCallback(
10
- async (item: Item<any>) => {
11
- if (!item) {
12
- return
13
- }
14
- setIsDeletingItem(true)
15
- const { modelName } = item.getService().getSnapshot().context
16
- await deleteItem({ seedLocalId: item.seedLocalId })
17
- eventEmitter.emit('item.requestAll', { modelName })
18
- setIsDeletingItem(false)
19
- },
20
- [isDeletingItem],
21
- )
22
-
23
- useEffect(() => { }, [])
24
-
25
- return {
26
- deleteItem: destroy,
27
- isDeletingItem,
28
- }
29
- }