@seedprotocol/sdk 0.2.51 → 0.2.53

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 (207) 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-Bh_lvrAN.js} +6 -3
  6. package/dist/Db-Bh_lvrAN.js.map +1 -0
  7. package/dist/{Db-DMJ0v3gO.js → Db-DqBP6XK2.js} +3 -3
  8. package/dist/{Db-DMJ0v3gO.js.map → Db-DqBP6XK2.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-COP3FuaU.js} +3 -3
  16. package/dist/{Item-D4n439Ei.js.map → Item-COP3FuaU.js.map} +1 -1
  17. package/dist/{ItemProperty-Be5ymRVT.js → ItemProperty-BFn9wM65.js} +3 -3
  18. package/dist/{ItemProperty-Be5ymRVT.js.map → ItemProperty-BFn9wM65.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-BLla2o05.js → index-C4xqqsLw.js} +3 -3
  27. package/dist/index-C4xqqsLw.js.map +1 -0
  28. package/dist/{index-BeKRizLf.js → index-CLvyWg5f.js} +257 -145
  29. package/dist/index-CLvyWg5f.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-Bao3o6wu.js} +3 -3
  33. package/dist/{seed.schema.config-CMpV_hyS.js.map → seed.schema.config-Bao3o6wu.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/db/Db.d.ts.map +1 -1
  48. package/dist/types/src/node/helpers/FileManager.d.ts.map +1 -1
  49. package/dist/types/src/services/internal/actors/validateInput.d.ts.map +1 -1
  50. package/dist/types/src/types/machines.d.ts +5 -0
  51. package/dist/types/src/types/machines.d.ts.map +1 -1
  52. package/package.json +2 -2
  53. package/dist/Db-quJxmvHH.js.map +0 -1
  54. package/dist/FileManager-texI7UwL.js.map +0 -1
  55. package/dist/index-BLla2o05.js.map +0 -1
  56. package/dist/index-BeKRizLf.js.map +0 -1
  57. package/dist/src/AppStateSchema.ts +0 -10
  58. package/dist/src/ArweaveClient.ts +0 -13
  59. package/dist/src/Attestation.ts +0 -21
  60. package/dist/src/BaseArweaveClient.ts +0 -13
  61. package/dist/src/BaseDb.ts +0 -35
  62. package/dist/src/BaseEasClient.ts +0 -13
  63. package/dist/src/BaseFileManager.ts +0 -56
  64. package/dist/src/BaseItem.ts +0 -413
  65. package/dist/src/BaseItemProperty.ts +0 -416
  66. package/dist/src/BaseQueryClient.ts +0 -13
  67. package/dist/src/ConfigSchema.ts +0 -15
  68. package/dist/src/Db.ts +0 -78
  69. package/dist/src/EasClient.ts +0 -13
  70. package/dist/src/FileDownloader.ts +0 -63
  71. package/dist/src/FileManager.ts +0 -57
  72. package/dist/src/IDb.ts +0 -7
  73. package/dist/src/IEasClient.ts +0 -2
  74. package/dist/src/IItem.ts +0 -26
  75. package/dist/src/IItemProperty.ts +0 -28
  76. package/dist/src/IQueryClient.ts +0 -4
  77. package/dist/src/ImageResizer.ts +0 -81
  78. package/dist/src/Item.ts +0 -12
  79. package/dist/src/ItemProperty.ts +0 -9
  80. package/dist/src/MetadataSchema.ts +0 -28
  81. package/dist/src/ModelSchema.ts +0 -46
  82. package/dist/src/ModelUidSchema.ts +0 -16
  83. package/dist/src/PropertyUidSchema.ts +0 -16
  84. package/dist/src/QueryClient.ts +0 -22
  85. package/dist/src/Schema.ts +0 -17
  86. package/dist/src/SeedProtocolSdk.d.ts +0 -19
  87. package/dist/src/SeedSchema.ts +0 -29
  88. package/dist/src/VersionSchema.ts +0 -16
  89. package/dist/src/actors.ts +0 -295
  90. package/dist/src/addModelsToDb.ts +0 -152
  91. package/dist/src/allItems.ts +0 -31
  92. package/dist/src/analyzeInput.ts +0 -144
  93. package/dist/src/browser.app.db.config.ts +0 -27
  94. package/dist/src/browser.ts +0 -30
  95. package/dist/src/checkStatus.ts +0 -50
  96. package/dist/src/client.ts +0 -148
  97. package/dist/src/configureFs.ts +0 -94
  98. package/dist/src/connectToDb.ts +0 -41
  99. package/dist/src/connectionManager.ts +0 -67
  100. package/dist/src/constants.ts +0 -125
  101. package/dist/src/content-hash.ts +0 -30
  102. package/dist/src/create.ts +0 -39
  103. package/dist/src/createMetadata.ts +0 -77
  104. package/dist/src/createNewItem.ts +0 -61
  105. package/dist/src/createPublishAttempt.ts +0 -16
  106. package/dist/src/createSeed.ts +0 -31
  107. package/dist/src/createSeeds.ts +0 -24
  108. package/dist/src/createVersion.ts +0 -33
  109. package/dist/src/dbMachine.ts +0 -182
  110. package/dist/src/deleteItem.ts +0 -19
  111. package/dist/src/download.ts +0 -202
  112. package/dist/src/drizzle.ts +0 -78
  113. package/dist/src/eas.ts +0 -40
  114. package/dist/src/environment.ts +0 -35
  115. package/dist/src/eventBus.ts +0 -5
  116. package/dist/src/events.ts +0 -14
  117. package/dist/src/fetchDataFromEas.ts +0 -94
  118. package/dist/src/fetchDbData.ts +0 -19
  119. package/dist/src/fetchRelatedItems.ts +0 -184
  120. package/dist/src/fetchSeeds.ts +0 -52
  121. package/dist/src/fetchVersions.ts +0 -49
  122. package/dist/src/files.ts +0 -81
  123. package/dist/src/filesDownload.ts +0 -326
  124. package/dist/src/fragment-masking.ts +0 -87
  125. package/dist/src/getExistingItem.ts +0 -60
  126. package/dist/src/getItem.ts +0 -32
  127. package/dist/src/getItemData.ts +0 -99
  128. package/dist/src/getItemProperties.ts +0 -56
  129. package/dist/src/getItemProperty.ts +0 -34
  130. package/dist/src/getItems.ts +0 -70
  131. package/dist/src/getMetadata.ts +0 -40
  132. package/dist/src/getModelSchemas.ts +0 -89
  133. package/dist/src/getPropertyData.ts +0 -50
  134. package/dist/src/getPublishPayload.ts +0 -355
  135. package/dist/src/getPublishUploads.ts +0 -207
  136. package/dist/src/getRelationValueData.ts +0 -27
  137. package/dist/src/getSchemaForItemProperty.ts +0 -68
  138. package/dist/src/getSchemaForModel.ts +0 -42
  139. package/dist/src/getSchemaUidForModel.ts +0 -32
  140. package/dist/src/getSeedData.ts +0 -34
  141. package/dist/src/getSegmentedItemProperties.ts +0 -65
  142. package/dist/src/getStorageTransactionIdForSeedUid.ts +0 -38
  143. package/dist/src/getVersionData.ts +0 -46
  144. package/dist/src/getVersionsForVersionUids.ts +0 -39
  145. package/dist/src/globalMachine.ts +0 -280
  146. package/dist/src/gql.ts +0 -118
  147. package/dist/src/graphql.ts +0 -3209
  148. package/dist/src/helpers.ts +0 -273
  149. package/dist/src/hydrateExistingItem.ts +0 -137
  150. package/dist/src/hydrateFromDb.ts +0 -270
  151. package/dist/src/hydrateNewItem.ts +0 -34
  152. package/dist/src/imageResize.ts +0 -507
  153. package/dist/src/index.d.ts +0 -5
  154. package/dist/src/index.ts +0 -4
  155. package/dist/src/initialize.ts +0 -124
  156. package/dist/src/internalMachine.ts +0 -238
  157. package/dist/src/itemMachineAll.ts +0 -157
  158. package/dist/src/itemMachineSingle.ts +0 -158
  159. package/dist/src/loadAppDb.ts +0 -47
  160. package/dist/src/machines.ts +0 -60
  161. package/dist/src/metadataLatest.ts +0 -34
  162. package/dist/src/migrate.ts +0 -53
  163. package/dist/src/model.ts +0 -72
  164. package/dist/src/modelClass.ts +0 -19
  165. package/dist/src/node.app.db.config.ts +0 -41
  166. package/dist/src/prepareDb.ts +0 -29
  167. package/dist/src/preparePublishRequestData.ts +0 -81
  168. package/dist/src/processItems.ts +0 -74
  169. package/dist/src/property.ts +0 -156
  170. package/dist/src/propertyMachine.ts +0 -202
  171. package/dist/src/publish.ts +0 -28
  172. package/dist/src/publishMachine.ts +0 -77
  173. package/dist/src/queries.ts +0 -13
  174. package/dist/src/recoverDeletedItem.ts +0 -14
  175. package/dist/src/reload.ts +0 -33
  176. package/dist/src/request.ts +0 -45
  177. package/dist/src/requestAll.ts +0 -157
  178. package/dist/src/resolveRelatedValue.ts +0 -367
  179. package/dist/src/resolveRemoteStorage.ts +0 -88
  180. package/dist/src/saveAppState.ts +0 -19
  181. package/dist/src/saveConfig.ts +0 -88
  182. package/dist/src/saveDataToDb.ts +0 -145
  183. package/dist/src/saveImageSrc.ts +0 -242
  184. package/dist/src/saveItemStorage.ts +0 -156
  185. package/dist/src/saveMetadata.ts +0 -18
  186. package/dist/src/savePublishService.ts +0 -30
  187. package/dist/src/saveRelation.ts +0 -112
  188. package/dist/src/seed.schema.config.ts +0 -25
  189. package/dist/src/seed.ts +0 -10
  190. package/dist/src/seedProtocol.ts +0 -17
  191. package/dist/src/services.ts +0 -365
  192. package/dist/src/sqlWasmClient.ts +0 -88
  193. package/dist/src/syncDbWithEas.ts +0 -628
  194. package/dist/src/trash.ts +0 -29
  195. package/dist/src/ts-to-proto.ts +0 -101
  196. package/dist/src/types.ts +0 -12
  197. package/dist/src/updateItemPropertyValue.ts +0 -243
  198. package/dist/src/updateMachineContext.ts +0 -21
  199. package/dist/src/updateMetadata.ts +0 -59
  200. package/dist/src/upload.ts +0 -86
  201. package/dist/src/validate.ts +0 -45
  202. package/dist/src/validateInput.ts +0 -47
  203. package/dist/src/validateItemData.ts +0 -20
  204. package/dist/src/versionData.ts +0 -24
  205. package/dist/src/waitForDb.ts +0 -25
  206. package/dist/src/waitForFiles.ts +0 -34
  207. 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
- }