@seedprotocol/sdk 0.2.50 → 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.
- package/dist/{ArweaveClient-Dcqcpsq4.js → ArweaveClient-D5iJisYr.js} +2 -2
- package/dist/{ArweaveClient-Dcqcpsq4.js.map → ArweaveClient-D5iJisYr.js.map} +1 -1
- package/dist/{ArweaveClient-Dh7LRIqD.js → ArweaveClient-HEIIuOfB.js} +2 -2
- package/dist/{ArweaveClient-Dh7LRIqD.js.map → ArweaveClient-HEIIuOfB.js.map} +1 -1
- package/dist/{Db-jJH2s0gO.js → Db-D-BsZYlN.js} +3 -3
- package/dist/{Db-jJH2s0gO.js.map → Db-D-BsZYlN.js.map} +1 -1
- package/dist/{Db-BwkMqaQe.js → Db-Dpsbk_T7.js} +3 -3
- package/dist/{Db-BwkMqaQe.js.map → Db-Dpsbk_T7.js.map} +1 -1
- package/dist/{EasClient-A1xC7Gm-.js → EasClient-D3wKgt0o.js} +2 -2
- package/dist/{EasClient-m2mXad59.js.map → EasClient-D3wKgt0o.js.map} +1 -1
- package/dist/{EasClient-m2mXad59.js → EasClient-jqkT2ZBt.js} +2 -2
- package/dist/{EasClient-A1xC7Gm-.js.map → EasClient-jqkT2ZBt.js.map} +1 -1
- package/dist/{FileManager-Dv2zn1RW.js → FileManager-4mWYO3Mt.js} +3 -5
- package/dist/FileManager-4mWYO3Mt.js.map +1 -0
- package/dist/{Item-DI3FxVPV.js → Item-CqWdJsyg.js} +3 -3
- package/dist/{Item-DI3FxVPV.js.map → Item-CqWdJsyg.js.map} +1 -1
- package/dist/{ItemProperty-CxNUwVnR.js → ItemProperty-BpBW3IWx.js} +3 -3
- package/dist/{ItemProperty-CxNUwVnR.js.map → ItemProperty-BpBW3IWx.js.map} +1 -1
- package/dist/{QueryClient-C-hFMF2j.js → QueryClient-CBOP3OoU.js} +2 -2
- package/dist/{QueryClient-C-hFMF2j.js.map → QueryClient-CBOP3OoU.js.map} +1 -1
- package/dist/{QueryClient-C02sPZ-K.js → QueryClient-bKb3SB0W.js} +2 -2
- package/dist/{QueryClient-C02sPZ-K.js.map → QueryClient-bKb3SB0W.js.map} +1 -1
- package/dist/bin.js +5 -5
- package/dist/{constants-C03RQQht.js → constants-CIDbABDz.js} +5 -2
- package/dist/constants-CIDbABDz.js.map +1 -0
- package/dist/{index-CKrLHw3B.js → index-BRxO1tLl.js} +300 -149
- package/dist/index-BRxO1tLl.js.map +1 -0
- package/dist/{index-Dv8GeuSw.js → index-d8Qsot6w.js} +3 -3
- package/dist/index-d8Qsot6w.js.map +1 -0
- package/dist/main.js +2 -2
- package/dist/package.json +189 -0
- package/dist/{seed.schema.config-1s-iWHq_.js → seed.schema.config-CPRn6KVL.js} +3 -3
- package/dist/{seed.schema.config-1s-iWHq_.js.map → seed.schema.config-CPRn6KVL.js.map} +1 -1
- package/dist/types/src/ItemProperty/service/actors/saveValueToDb/saveItemStorage.d.ts.map +1 -1
- package/dist/types/src/browser/helpers/FileManager.d.ts +1 -0
- package/dist/types/src/browser/helpers/FileManager.d.ts.map +1 -1
- package/dist/types/src/client/BaseClientManager.d.ts +7 -0
- package/dist/types/src/client/BaseClientManager.d.ts.map +1 -0
- package/dist/types/src/client/actions/setAddresses.d.ts +2 -0
- package/dist/types/src/client/actions/setAddresses.d.ts.map +1 -0
- package/dist/types/src/client/actors/initialize.d.ts +4 -0
- package/dist/types/src/client/actors/initialize.d.ts.map +1 -0
- package/dist/types/src/client/actors/saveAppState.d.ts +5 -0
- package/dist/types/src/client/actors/saveAppState.d.ts.map +1 -0
- package/dist/types/src/client/clientManagerMachine.d.ts +19 -0
- package/dist/types/src/client/clientManagerMachine.d.ts.map +1 -0
- package/dist/types/src/client/index.d.ts +41 -0
- package/dist/types/src/client/index.d.ts.map +1 -0
- package/dist/types/src/client.d.ts.map +1 -1
- package/dist/types/src/helpers/FileManager/BaseFileManager.d.ts +1 -0
- package/dist/types/src/helpers/FileManager/BaseFileManager.d.ts.map +1 -1
- package/dist/types/src/node/helpers/FileManager.d.ts.map +1 -1
- package/dist/types/src/services/internal/actors/validateInput.d.ts.map +1 -1
- package/dist/types/src/types/machines.d.ts +5 -0
- package/dist/types/src/types/machines.d.ts.map +1 -1
- package/package.json +2 -2
- package/dist/FileManager-Dv2zn1RW.js.map +0 -1
- package/dist/constants-C03RQQht.js.map +0 -1
- package/dist/index-CKrLHw3B.js.map +0 -1
- package/dist/index-Dv8GeuSw.js.map +0 -1
- package/dist/src/AppStateSchema.ts +0 -10
- package/dist/src/ArweaveClient.ts +0 -13
- package/dist/src/Attestation.ts +0 -21
- package/dist/src/BaseArweaveClient.ts +0 -13
- package/dist/src/BaseDb.ts +0 -35
- package/dist/src/BaseEasClient.ts +0 -13
- package/dist/src/BaseFileManager.ts +0 -52
- package/dist/src/BaseItem.ts +0 -413
- package/dist/src/BaseItemProperty.ts +0 -416
- package/dist/src/BaseQueryClient.ts +0 -13
- package/dist/src/ConfigSchema.ts +0 -15
- package/dist/src/Db.ts +0 -78
- package/dist/src/EasClient.ts +0 -13
- package/dist/src/FileDownloader.ts +0 -63
- package/dist/src/FileManager.ts +0 -57
- package/dist/src/IDb.ts +0 -7
- package/dist/src/IEasClient.ts +0 -2
- package/dist/src/IItem.ts +0 -26
- package/dist/src/IItemProperty.ts +0 -28
- package/dist/src/IQueryClient.ts +0 -4
- package/dist/src/ImageResizer.ts +0 -81
- package/dist/src/Item.ts +0 -12
- package/dist/src/ItemProperty.ts +0 -9
- package/dist/src/MetadataSchema.ts +0 -28
- package/dist/src/ModelSchema.ts +0 -46
- package/dist/src/ModelUidSchema.ts +0 -16
- package/dist/src/PropertyUidSchema.ts +0 -16
- package/dist/src/QueryClient.ts +0 -22
- package/dist/src/Schema.ts +0 -17
- package/dist/src/SeedProtocolSdk.d.ts +0 -19
- package/dist/src/SeedSchema.ts +0 -29
- package/dist/src/VersionSchema.ts +0 -16
- package/dist/src/actors.ts +0 -295
- package/dist/src/addModelsToDb.ts +0 -152
- package/dist/src/allItems.ts +0 -31
- package/dist/src/analyzeInput.ts +0 -144
- package/dist/src/browser.app.db.config.ts +0 -27
- package/dist/src/browser.ts +0 -30
- package/dist/src/checkStatus.ts +0 -50
- package/dist/src/client.ts +0 -148
- package/dist/src/configureFs.ts +0 -94
- package/dist/src/connectToDb.ts +0 -41
- package/dist/src/connectionManager.ts +0 -67
- package/dist/src/constants.ts +0 -125
- package/dist/src/content-hash.ts +0 -30
- package/dist/src/create.ts +0 -39
- package/dist/src/createMetadata.ts +0 -77
- package/dist/src/createNewItem.ts +0 -61
- package/dist/src/createPublishAttempt.ts +0 -16
- package/dist/src/createSeed.ts +0 -31
- package/dist/src/createSeeds.ts +0 -24
- package/dist/src/createVersion.ts +0 -33
- package/dist/src/dbMachine.ts +0 -182
- package/dist/src/deleteItem.ts +0 -19
- package/dist/src/download.ts +0 -202
- package/dist/src/drizzle.ts +0 -78
- package/dist/src/eas.ts +0 -40
- package/dist/src/environment.ts +0 -35
- package/dist/src/eventBus.ts +0 -5
- package/dist/src/events.ts +0 -14
- package/dist/src/fetchDataFromEas.ts +0 -94
- package/dist/src/fetchDbData.ts +0 -19
- package/dist/src/fetchRelatedItems.ts +0 -184
- package/dist/src/fetchSeeds.ts +0 -52
- package/dist/src/fetchVersions.ts +0 -49
- package/dist/src/files.ts +0 -81
- package/dist/src/filesDownload.ts +0 -326
- package/dist/src/fragment-masking.ts +0 -87
- package/dist/src/getExistingItem.ts +0 -60
- package/dist/src/getItem.ts +0 -32
- package/dist/src/getItemData.ts +0 -99
- package/dist/src/getItemProperties.ts +0 -56
- package/dist/src/getItemProperty.ts +0 -34
- package/dist/src/getItems.ts +0 -70
- package/dist/src/getMetadata.ts +0 -40
- package/dist/src/getModelSchemas.ts +0 -89
- package/dist/src/getPropertyData.ts +0 -50
- package/dist/src/getPublishPayload.ts +0 -355
- package/dist/src/getPublishUploads.ts +0 -207
- package/dist/src/getRelationValueData.ts +0 -27
- package/dist/src/getSchemaForItemProperty.ts +0 -68
- package/dist/src/getSchemaForModel.ts +0 -42
- package/dist/src/getSchemaUidForModel.ts +0 -32
- package/dist/src/getSeedData.ts +0 -34
- package/dist/src/getSegmentedItemProperties.ts +0 -65
- package/dist/src/getStorageTransactionIdForSeedUid.ts +0 -38
- package/dist/src/getVersionData.ts +0 -46
- package/dist/src/getVersionsForVersionUids.ts +0 -39
- package/dist/src/globalMachine.ts +0 -280
- package/dist/src/gql.ts +0 -118
- package/dist/src/graphql.ts +0 -3209
- package/dist/src/helpers.ts +0 -273
- package/dist/src/hydrateExistingItem.ts +0 -137
- package/dist/src/hydrateFromDb.ts +0 -270
- package/dist/src/hydrateNewItem.ts +0 -34
- package/dist/src/imageResize.ts +0 -507
- package/dist/src/index.d.ts +0 -5
- package/dist/src/index.ts +0 -4
- package/dist/src/initialize.ts +0 -124
- package/dist/src/internalMachine.ts +0 -238
- package/dist/src/itemMachineAll.ts +0 -157
- package/dist/src/itemMachineSingle.ts +0 -158
- package/dist/src/loadAppDb.ts +0 -47
- package/dist/src/machines.ts +0 -60
- package/dist/src/metadataLatest.ts +0 -34
- package/dist/src/migrate.ts +0 -53
- package/dist/src/model.ts +0 -72
- package/dist/src/modelClass.ts +0 -19
- package/dist/src/node.app.db.config.ts +0 -41
- package/dist/src/prepareDb.ts +0 -29
- package/dist/src/preparePublishRequestData.ts +0 -81
- package/dist/src/processItems.ts +0 -74
- package/dist/src/property.ts +0 -156
- package/dist/src/propertyMachine.ts +0 -202
- package/dist/src/publish.ts +0 -28
- package/dist/src/publishMachine.ts +0 -77
- package/dist/src/queries.ts +0 -13
- package/dist/src/recoverDeletedItem.ts +0 -14
- package/dist/src/reload.ts +0 -33
- package/dist/src/request.ts +0 -45
- package/dist/src/requestAll.ts +0 -157
- package/dist/src/resolveRelatedValue.ts +0 -367
- package/dist/src/resolveRemoteStorage.ts +0 -88
- package/dist/src/saveAppState.ts +0 -19
- package/dist/src/saveConfig.ts +0 -88
- package/dist/src/saveDataToDb.ts +0 -145
- package/dist/src/saveImageSrc.ts +0 -242
- package/dist/src/saveItemStorage.ts +0 -155
- package/dist/src/saveMetadata.ts +0 -18
- package/dist/src/savePublishService.ts +0 -30
- package/dist/src/saveRelation.ts +0 -112
- package/dist/src/seed.schema.config.ts +0 -25
- package/dist/src/seed.ts +0 -10
- package/dist/src/seedProtocol.ts +0 -17
- package/dist/src/services.ts +0 -365
- package/dist/src/sqlWasmClient.ts +0 -88
- package/dist/src/syncDbWithEas.ts +0 -628
- package/dist/src/trash.ts +0 -29
- package/dist/src/ts-to-proto.ts +0 -101
- package/dist/src/types.ts +0 -12
- package/dist/src/updateItemPropertyValue.ts +0 -243
- package/dist/src/updateMachineContext.ts +0 -21
- package/dist/src/updateMetadata.ts +0 -59
- package/dist/src/upload.ts +0 -86
- package/dist/src/validate.ts +0 -45
- package/dist/src/validateInput.ts +0 -47
- package/dist/src/validateItemData.ts +0 -20
- package/dist/src/versionData.ts +0 -24
- package/dist/src/waitForDb.ts +0 -25
- package/dist/src/waitForFiles.ts +0 -34
- 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
|
-
}
|