@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.
Files changed (211) hide show
  1. package/dist/{ArweaveClient-Dcqcpsq4.js → ArweaveClient-D5iJisYr.js} +2 -2
  2. package/dist/{ArweaveClient-Dcqcpsq4.js.map → ArweaveClient-D5iJisYr.js.map} +1 -1
  3. package/dist/{ArweaveClient-Dh7LRIqD.js → ArweaveClient-HEIIuOfB.js} +2 -2
  4. package/dist/{ArweaveClient-Dh7LRIqD.js.map → ArweaveClient-HEIIuOfB.js.map} +1 -1
  5. package/dist/{Db-jJH2s0gO.js → Db-D-BsZYlN.js} +3 -3
  6. package/dist/{Db-jJH2s0gO.js.map → Db-D-BsZYlN.js.map} +1 -1
  7. package/dist/{Db-BwkMqaQe.js → Db-Dpsbk_T7.js} +3 -3
  8. package/dist/{Db-BwkMqaQe.js.map → Db-Dpsbk_T7.js.map} +1 -1
  9. package/dist/{EasClient-A1xC7Gm-.js → EasClient-D3wKgt0o.js} +2 -2
  10. package/dist/{EasClient-m2mXad59.js.map → EasClient-D3wKgt0o.js.map} +1 -1
  11. package/dist/{EasClient-m2mXad59.js → EasClient-jqkT2ZBt.js} +2 -2
  12. package/dist/{EasClient-A1xC7Gm-.js.map → EasClient-jqkT2ZBt.js.map} +1 -1
  13. package/dist/{FileManager-Dv2zn1RW.js → FileManager-4mWYO3Mt.js} +3 -5
  14. package/dist/FileManager-4mWYO3Mt.js.map +1 -0
  15. package/dist/{Item-DI3FxVPV.js → Item-CqWdJsyg.js} +3 -3
  16. package/dist/{Item-DI3FxVPV.js.map → Item-CqWdJsyg.js.map} +1 -1
  17. package/dist/{ItemProperty-CxNUwVnR.js → ItemProperty-BpBW3IWx.js} +3 -3
  18. package/dist/{ItemProperty-CxNUwVnR.js.map → ItemProperty-BpBW3IWx.js.map} +1 -1
  19. package/dist/{QueryClient-C-hFMF2j.js → QueryClient-CBOP3OoU.js} +2 -2
  20. package/dist/{QueryClient-C-hFMF2j.js.map → QueryClient-CBOP3OoU.js.map} +1 -1
  21. package/dist/{QueryClient-C02sPZ-K.js → QueryClient-bKb3SB0W.js} +2 -2
  22. package/dist/{QueryClient-C02sPZ-K.js.map → QueryClient-bKb3SB0W.js.map} +1 -1
  23. package/dist/bin.js +5 -5
  24. package/dist/{constants-C03RQQht.js → constants-CIDbABDz.js} +5 -2
  25. package/dist/constants-CIDbABDz.js.map +1 -0
  26. package/dist/{index-CKrLHw3B.js → index-BRxO1tLl.js} +300 -149
  27. package/dist/index-BRxO1tLl.js.map +1 -0
  28. package/dist/{index-Dv8GeuSw.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-1s-iWHq_.js → seed.schema.config-CPRn6KVL.js} +3 -3
  33. package/dist/{seed.schema.config-1s-iWHq_.js.map → seed.schema.config-CPRn6KVL.js.map} +1 -1
  34. package/dist/types/src/ItemProperty/service/actors/saveValueToDb/saveItemStorage.d.ts.map +1 -1
  35. package/dist/types/src/browser/helpers/FileManager.d.ts +1 -0
  36. package/dist/types/src/browser/helpers/FileManager.d.ts.map +1 -1
  37. package/dist/types/src/client/BaseClientManager.d.ts +7 -0
  38. package/dist/types/src/client/BaseClientManager.d.ts.map +1 -0
  39. package/dist/types/src/client/actions/setAddresses.d.ts +2 -0
  40. package/dist/types/src/client/actions/setAddresses.d.ts.map +1 -0
  41. package/dist/types/src/client/actors/initialize.d.ts +4 -0
  42. package/dist/types/src/client/actors/initialize.d.ts.map +1 -0
  43. package/dist/types/src/client/actors/saveAppState.d.ts +5 -0
  44. package/dist/types/src/client/actors/saveAppState.d.ts.map +1 -0
  45. package/dist/types/src/client/clientManagerMachine.d.ts +19 -0
  46. package/dist/types/src/client/clientManagerMachine.d.ts.map +1 -0
  47. package/dist/types/src/client/index.d.ts +41 -0
  48. package/dist/types/src/client/index.d.ts.map +1 -0
  49. package/dist/types/src/client.d.ts.map +1 -1
  50. package/dist/types/src/helpers/FileManager/BaseFileManager.d.ts +1 -0
  51. package/dist/types/src/helpers/FileManager/BaseFileManager.d.ts.map +1 -1
  52. package/dist/types/src/node/helpers/FileManager.d.ts.map +1 -1
  53. package/dist/types/src/services/internal/actors/validateInput.d.ts.map +1 -1
  54. package/dist/types/src/types/machines.d.ts +5 -0
  55. package/dist/types/src/types/machines.d.ts.map +1 -1
  56. package/package.json +2 -2
  57. package/dist/FileManager-Dv2zn1RW.js.map +0 -1
  58. package/dist/constants-C03RQQht.js.map +0 -1
  59. package/dist/index-CKrLHw3B.js.map +0 -1
  60. package/dist/index-Dv8GeuSw.js.map +0 -1
  61. package/dist/src/AppStateSchema.ts +0 -10
  62. package/dist/src/ArweaveClient.ts +0 -13
  63. package/dist/src/Attestation.ts +0 -21
  64. package/dist/src/BaseArweaveClient.ts +0 -13
  65. package/dist/src/BaseDb.ts +0 -35
  66. package/dist/src/BaseEasClient.ts +0 -13
  67. package/dist/src/BaseFileManager.ts +0 -52
  68. package/dist/src/BaseItem.ts +0 -413
  69. package/dist/src/BaseItemProperty.ts +0 -416
  70. package/dist/src/BaseQueryClient.ts +0 -13
  71. package/dist/src/ConfigSchema.ts +0 -15
  72. package/dist/src/Db.ts +0 -78
  73. package/dist/src/EasClient.ts +0 -13
  74. package/dist/src/FileDownloader.ts +0 -63
  75. package/dist/src/FileManager.ts +0 -57
  76. package/dist/src/IDb.ts +0 -7
  77. package/dist/src/IEasClient.ts +0 -2
  78. package/dist/src/IItem.ts +0 -26
  79. package/dist/src/IItemProperty.ts +0 -28
  80. package/dist/src/IQueryClient.ts +0 -4
  81. package/dist/src/ImageResizer.ts +0 -81
  82. package/dist/src/Item.ts +0 -12
  83. package/dist/src/ItemProperty.ts +0 -9
  84. package/dist/src/MetadataSchema.ts +0 -28
  85. package/dist/src/ModelSchema.ts +0 -46
  86. package/dist/src/ModelUidSchema.ts +0 -16
  87. package/dist/src/PropertyUidSchema.ts +0 -16
  88. package/dist/src/QueryClient.ts +0 -22
  89. package/dist/src/Schema.ts +0 -17
  90. package/dist/src/SeedProtocolSdk.d.ts +0 -19
  91. package/dist/src/SeedSchema.ts +0 -29
  92. package/dist/src/VersionSchema.ts +0 -16
  93. package/dist/src/actors.ts +0 -295
  94. package/dist/src/addModelsToDb.ts +0 -152
  95. package/dist/src/allItems.ts +0 -31
  96. package/dist/src/analyzeInput.ts +0 -144
  97. package/dist/src/browser.app.db.config.ts +0 -27
  98. package/dist/src/browser.ts +0 -30
  99. package/dist/src/checkStatus.ts +0 -50
  100. package/dist/src/client.ts +0 -148
  101. package/dist/src/configureFs.ts +0 -94
  102. package/dist/src/connectToDb.ts +0 -41
  103. package/dist/src/connectionManager.ts +0 -67
  104. package/dist/src/constants.ts +0 -125
  105. package/dist/src/content-hash.ts +0 -30
  106. package/dist/src/create.ts +0 -39
  107. package/dist/src/createMetadata.ts +0 -77
  108. package/dist/src/createNewItem.ts +0 -61
  109. package/dist/src/createPublishAttempt.ts +0 -16
  110. package/dist/src/createSeed.ts +0 -31
  111. package/dist/src/createSeeds.ts +0 -24
  112. package/dist/src/createVersion.ts +0 -33
  113. package/dist/src/dbMachine.ts +0 -182
  114. package/dist/src/deleteItem.ts +0 -19
  115. package/dist/src/download.ts +0 -202
  116. package/dist/src/drizzle.ts +0 -78
  117. package/dist/src/eas.ts +0 -40
  118. package/dist/src/environment.ts +0 -35
  119. package/dist/src/eventBus.ts +0 -5
  120. package/dist/src/events.ts +0 -14
  121. package/dist/src/fetchDataFromEas.ts +0 -94
  122. package/dist/src/fetchDbData.ts +0 -19
  123. package/dist/src/fetchRelatedItems.ts +0 -184
  124. package/dist/src/fetchSeeds.ts +0 -52
  125. package/dist/src/fetchVersions.ts +0 -49
  126. package/dist/src/files.ts +0 -81
  127. package/dist/src/filesDownload.ts +0 -326
  128. package/dist/src/fragment-masking.ts +0 -87
  129. package/dist/src/getExistingItem.ts +0 -60
  130. package/dist/src/getItem.ts +0 -32
  131. package/dist/src/getItemData.ts +0 -99
  132. package/dist/src/getItemProperties.ts +0 -56
  133. package/dist/src/getItemProperty.ts +0 -34
  134. package/dist/src/getItems.ts +0 -70
  135. package/dist/src/getMetadata.ts +0 -40
  136. package/dist/src/getModelSchemas.ts +0 -89
  137. package/dist/src/getPropertyData.ts +0 -50
  138. package/dist/src/getPublishPayload.ts +0 -355
  139. package/dist/src/getPublishUploads.ts +0 -207
  140. package/dist/src/getRelationValueData.ts +0 -27
  141. package/dist/src/getSchemaForItemProperty.ts +0 -68
  142. package/dist/src/getSchemaForModel.ts +0 -42
  143. package/dist/src/getSchemaUidForModel.ts +0 -32
  144. package/dist/src/getSeedData.ts +0 -34
  145. package/dist/src/getSegmentedItemProperties.ts +0 -65
  146. package/dist/src/getStorageTransactionIdForSeedUid.ts +0 -38
  147. package/dist/src/getVersionData.ts +0 -46
  148. package/dist/src/getVersionsForVersionUids.ts +0 -39
  149. package/dist/src/globalMachine.ts +0 -280
  150. package/dist/src/gql.ts +0 -118
  151. package/dist/src/graphql.ts +0 -3209
  152. package/dist/src/helpers.ts +0 -273
  153. package/dist/src/hydrateExistingItem.ts +0 -137
  154. package/dist/src/hydrateFromDb.ts +0 -270
  155. package/dist/src/hydrateNewItem.ts +0 -34
  156. package/dist/src/imageResize.ts +0 -507
  157. package/dist/src/index.d.ts +0 -5
  158. package/dist/src/index.ts +0 -4
  159. package/dist/src/initialize.ts +0 -124
  160. package/dist/src/internalMachine.ts +0 -238
  161. package/dist/src/itemMachineAll.ts +0 -157
  162. package/dist/src/itemMachineSingle.ts +0 -158
  163. package/dist/src/loadAppDb.ts +0 -47
  164. package/dist/src/machines.ts +0 -60
  165. package/dist/src/metadataLatest.ts +0 -34
  166. package/dist/src/migrate.ts +0 -53
  167. package/dist/src/model.ts +0 -72
  168. package/dist/src/modelClass.ts +0 -19
  169. package/dist/src/node.app.db.config.ts +0 -41
  170. package/dist/src/prepareDb.ts +0 -29
  171. package/dist/src/preparePublishRequestData.ts +0 -81
  172. package/dist/src/processItems.ts +0 -74
  173. package/dist/src/property.ts +0 -156
  174. package/dist/src/propertyMachine.ts +0 -202
  175. package/dist/src/publish.ts +0 -28
  176. package/dist/src/publishMachine.ts +0 -77
  177. package/dist/src/queries.ts +0 -13
  178. package/dist/src/recoverDeletedItem.ts +0 -14
  179. package/dist/src/reload.ts +0 -33
  180. package/dist/src/request.ts +0 -45
  181. package/dist/src/requestAll.ts +0 -157
  182. package/dist/src/resolveRelatedValue.ts +0 -367
  183. package/dist/src/resolveRemoteStorage.ts +0 -88
  184. package/dist/src/saveAppState.ts +0 -19
  185. package/dist/src/saveConfig.ts +0 -88
  186. package/dist/src/saveDataToDb.ts +0 -145
  187. package/dist/src/saveImageSrc.ts +0 -242
  188. package/dist/src/saveItemStorage.ts +0 -155
  189. package/dist/src/saveMetadata.ts +0 -18
  190. package/dist/src/savePublishService.ts +0 -30
  191. package/dist/src/saveRelation.ts +0 -112
  192. package/dist/src/seed.schema.config.ts +0 -25
  193. package/dist/src/seed.ts +0 -10
  194. package/dist/src/seedProtocol.ts +0 -17
  195. package/dist/src/services.ts +0 -365
  196. package/dist/src/sqlWasmClient.ts +0 -88
  197. package/dist/src/syncDbWithEas.ts +0 -628
  198. package/dist/src/trash.ts +0 -29
  199. package/dist/src/ts-to-proto.ts +0 -101
  200. package/dist/src/types.ts +0 -12
  201. package/dist/src/updateItemPropertyValue.ts +0 -243
  202. package/dist/src/updateMachineContext.ts +0 -21
  203. package/dist/src/updateMetadata.ts +0 -59
  204. package/dist/src/upload.ts +0 -86
  205. package/dist/src/validate.ts +0 -45
  206. package/dist/src/validateInput.ts +0 -47
  207. package/dist/src/validateItemData.ts +0 -20
  208. package/dist/src/versionData.ts +0 -24
  209. package/dist/src/waitForDb.ts +0 -25
  210. package/dist/src/waitForFiles.ts +0 -34
  211. package/dist/src/wasm.d.ts +0 -8300
@@ -1,101 +0,0 @@
1
- import { Decorator, Project } from 'ts-morph'
2
- import { Field, Type } from 'protobufjs'
3
- import fs from 'fs'
4
-
5
- type TsToProtoOptions = {
6
- tsFilePath: string
7
- tsConfigPath: string
8
- outputFilePath: string
9
- }
10
-
11
- type TsToProto = (options: TsToProtoOptions) => void
12
-
13
- export const tsToProto: TsToProto = ({
14
- tsFilePath,
15
- tsConfigPath,
16
- outputFilePath,
17
- }) => {
18
- // Initialize the TypeScript project
19
- const project = new Project({
20
- tsConfigFilePath: tsConfigPath,
21
- })
22
-
23
- // Add the source file
24
- const sourceFile = project.addSourceFileAtPath(tsFilePath)
25
-
26
- // Helper function to extract decorator arguments
27
- const getDecoratorArgument = (decorator: Decorator): string => {
28
- const callExpression = decorator.getCallExpression()
29
- if (callExpression) {
30
- const args = callExpression.getArguments()
31
- if (args.length > 0) {
32
- return args[0].getText().replace(/['"]/g, '')
33
- }
34
- }
35
- return ''
36
- }
37
-
38
- // Process each class
39
- const classes = sourceFile.getClasses()
40
- const protoClasses: { [key: string]: Type } = {}
41
-
42
- classes.forEach((cls) => {
43
- const className = cls.getName()
44
- if (!className) {
45
- throw new Error('Class name not found')
46
- }
47
- const type = new Type(className)
48
-
49
- // Process each property
50
- cls.getProperties().forEach((prop, index) => {
51
- const propName = prop.getName()
52
- const decorators = prop.getDecorators()
53
-
54
- decorators.forEach((decorator) => {
55
- const decoratorName = decorator.getName()
56
- switch (decoratorName) {
57
- case 'Text':
58
- type.add(new Field(propName, type.fieldsArray.length + 1, 'string'))
59
- break
60
- case 'ImageSrc':
61
- type.add(new Field(propName, type.fieldsArray.length + 1, 'string'))
62
- break
63
- case 'Relation':
64
- const relatedType = getDecoratorArgument(decorator)
65
- type.add(
66
- new Field(propName, type.fieldsArray.length + 1, relatedType),
67
- )
68
- break
69
- case 'List':
70
- const listType = getDecoratorArgument(decorator)
71
- type.add(
72
- new Field(
73
- propName,
74
- type.fieldsArray.length + 1,
75
- listType,
76
- 'repeated',
77
- ),
78
- )
79
- break
80
- default:
81
- break
82
- }
83
- })
84
- })
85
-
86
- protoClasses[className] = type
87
- })
88
-
89
- // Generate .proto content
90
- let protoContent = 'syntax = "proto3";\n\n'
91
- Object.values(protoClasses).forEach((type) => {
92
- protoContent += `message ${type.name} {\n`
93
- for (const field of type.fieldsArray) {
94
- protoContent += ` ${field.repeated ? 'repeated' : ''} ${field.type} ${field.name} = ${field.id};\n`
95
- }
96
- protoContent += '}\n'
97
- })
98
-
99
- // Write to .proto file
100
- fs.writeFileSync(outputFilePath, protoContent)
101
- }
package/dist/src/types.ts DELETED
@@ -1,12 +0,0 @@
1
- type SqliteWasmResult = {
2
- type: string | null
3
- row: string[] | null
4
- rowNumber: number | null
5
- columnNames: string[]
6
- }
7
- type SqliteWasmCallback = (result: SqliteWasmResult) => void
8
-
9
- type ReturnObj = {
10
- database: string
11
- [key: string]: string | number | null | undefined | string[]
12
- }
@@ -1,243 +0,0 @@
1
- import { escapeSqliteString } from '@/helpers/db'
2
- import { metadata, MetadataType } from '@/seedSchema'
3
- import { and, eq, sql } from 'drizzle-orm'
4
- import { getSeedData } from '@/db/read/getSeedData'
5
- import { getVersionData } from '@/db/read/getVersionData'
6
- import { generateId } from '@/helpers'
7
- import debug from 'debug'
8
- import { eventEmitter } from '@/eventBus'
9
- import { BaseDb } from '@/db/Db/BaseDb'
10
- const logger = debug('app:write:updateItemPropertyValue')
11
-
12
- const sendItemUpdateEvent = ({ modelName, seedLocalId, seedUid }: { modelName: string, seedLocalId: string, seedUid: string }) => {
13
- if (!modelName || (!seedLocalId && !seedUid)) {
14
- return
15
- }
16
- // eventEmitter.emit(`item.${modelName}.${seedUid || seedLocalId}.update`)
17
- }
18
-
19
- type UpdateItemPropertyValueResult = {
20
- localId: string
21
- schemaUid: string
22
- }
23
-
24
- type UpdateItemPropertyValue = (props: Partial<MetadataType>) => Promise<UpdateItemPropertyValueResult | undefined>
25
-
26
- export const updateItemPropertyValue: UpdateItemPropertyValue = async ({
27
- localId,
28
- propertyName,
29
- newValue,
30
- seedUid,
31
- seedLocalId,
32
- modelName,
33
- refSeedType,
34
- refResolvedValue,
35
- refResolvedDisplayValue,
36
- versionLocalId,
37
- versionUid,
38
- schemaUid,
39
- localStorageDir,
40
- }) => {
41
- if (!localId && !seedLocalId) {
42
- logger(
43
- `[db/write] [updateItemPropertyValue] no propertyLocalId or seedLocalId for property: ${propertyName}`,
44
- )
45
- return
46
- }
47
-
48
- let safeNewValue = newValue
49
-
50
- if (
51
- typeof newValue === 'string' &&
52
- !refResolvedDisplayValue &&
53
- !refResolvedValue
54
- ) {
55
- safeNewValue = escapeSqliteString(newValue)
56
- }
57
-
58
- const appDb = BaseDb.getAppDb()
59
-
60
- const rows = await appDb
61
- .select()
62
- .from(metadata)
63
- .where(
64
- and(
65
- eq(metadata.propertyName, propertyName!),
66
- eq(metadata.seedLocalId, seedLocalId!),
67
- ),
68
- )
69
- .orderBy(sql.raw('COALESCE(attestation_created_at, created_at) DESC'))
70
-
71
- // const mostRecentRecordStatement = `SELECT local_id,
72
- // uid,
73
- // property_name,
74
- // property_value,
75
- // model_type,
76
- // seed_uid,
77
- // seed_local_id,
78
- // version_local_id,
79
- // version_uid,
80
- // schema_uid,
81
- // eas_data_type
82
- // FROM metadata
83
- // WHERE property_name = '${propertyName}'
84
- // AND seed_local_id = '${seedLocalId}'
85
- // ORDER BY COALESCE(attestation_created_at, created_at) DESC;`
86
- //
87
- // const { rows } = await runQueryForStatement(mostRecentRecordStatement)
88
-
89
- if (rows && rows.length > 0) {
90
- const {
91
- localId,
92
- uid,
93
- propertyName: propertyNameFromDb,
94
- propertyValue: propertyValueFromDb,
95
- modelType,
96
- seedUid,
97
- seedLocalId: seedLocalIdFromDb,
98
- versionLocalId,
99
- versionUid,
100
- schemaUid,
101
- easDataType,
102
- localStorageDir: localStorageDirFromDb,
103
- refSeedType: refSeedTypeFromDb,
104
- refResolvedValue: refResolvedValueFromDb,
105
- refResolvedDisplayValue: refResolvedDisplayValueFromDb,
106
- } = rows[0]
107
-
108
- if (
109
- propertyValueFromDb === newValue &&
110
- modelType === modelName?.toLowerCase() &&
111
- refSeedTypeFromDb === refSeedType &&
112
- refResolvedValueFromDb === refResolvedValue
113
- ) {
114
- logger(
115
- `[db/write] [updateItemPropertyValue] value is the same as most recent record for property: ${propertyNameFromDb}`,
116
- )
117
- return
118
- }
119
-
120
- // This means we already have a local-only record so we should just update that one
121
- if (!uid) {
122
- const updatePropertyStatement = `UPDATE metadata
123
- SET property_value = '${safeNewValue}',
124
- ref_seed_type = ${refSeedType ? `'${refSeedType}'` : 'NULL'},
125
- ref_resolved_value = ${refResolvedValue ? `'${refResolvedValue}'` : 'NULL'},
126
- ref_resolved_display_value = ${refResolvedDisplayValue ? `'${refResolvedDisplayValue}'` : 'NULL'},
127
- updated_at = ${Date.now()}
128
- WHERE local_id = '${localId}';`
129
-
130
- await appDb.run(sql.raw(updatePropertyStatement))
131
-
132
- sendItemUpdateEvent({ modelName, seedLocalId, seedUid })
133
-
134
- return
135
- }
136
-
137
- const seedDataFromDb = await getSeedData({ seedLocalId })
138
- const versionDataFromDb = await getVersionData({ localId: versionLocalId })
139
-
140
- // Here we don't have a local-only record so we need to create a new one
141
- const newLocalId = generateId()
142
-
143
- const newPropertyStatement = `INSERT INTO metadata (local_id,
144
- property_name,
145
- property_value,
146
- model_type,
147
- seed_uid,
148
- seed_local_id,
149
- version_local_id,
150
- version_uid,
151
- schema_uid,
152
- eas_data_type,
153
- ref_seed_type,
154
- ref_resolved_value,
155
- ref_resolved_display_value,
156
- local_storage_dir,
157
- created_at)
158
- VALUES ('${newLocalId}',
159
- '${propertyNameFromDb}',
160
- '${safeNewValue}',
161
- '${modelType || modelName?.toLowerCase()}',
162
- ${seedDataFromDb?.uid ? `'${seedDataFromDb.uid}'` : 'NULL'},
163
- '${seedLocalIdFromDb}',
164
- '${versionLocalId}',
165
- ${versionDataFromDb?.uid ? `'${versionDataFromDb.uid}'` : 'NULL'},
166
- '${schemaUid}',
167
- ${easDataType ? `'${easDataType}'` : 'NULL'},
168
- ${refSeedType ? `'${refSeedType}'` : 'NULL'},
169
- ${refResolvedValue ? `'${refResolvedValue}'` : 'NULL'},
170
- ${refResolvedDisplayValue ? `'${refResolvedDisplayValue}'` : 'NULL'},
171
- ${localStorageDir ? `'${localStorageDir}'` : 'NULL'},
172
- ${Date.now()});`
173
-
174
- await appDb.run(sql.raw(newPropertyStatement))
175
-
176
- sendItemUpdateEvent({ modelName, seedLocalId, seedUid })
177
-
178
- return {
179
- localId: newLocalId,
180
- schemaUid,
181
- }
182
- }
183
-
184
- // Here there are no records for this property on this seed so we should create one
185
-
186
- const newLocalId = generateId()
187
-
188
- if (!seedUid) {
189
- const seedData = await getSeedData({ seedLocalId })
190
- if (seedData) {
191
- seedUid = seedData.uid
192
- }
193
- }
194
-
195
- if (!versionUid) {
196
- const versionData = await getVersionData({ localId: versionLocalId })
197
- if (versionData) {
198
- versionUid = versionData.uid
199
- }
200
- }
201
-
202
- const newPropertyStatement = `INSERT INTO metadata (local_id,
203
- property_name,
204
- property_value,
205
- model_type,
206
- seed_uid,
207
- seed_local_id,
208
- version_local_id,
209
- version_uid,
210
- schema_uid,
211
- ref_seed_type,
212
- ref_resolved_value,
213
- ref_resolved_display_value,
214
- local_storage_dir,
215
- created_at)
216
- VALUES ('${newLocalId}',
217
- '${propertyName}',
218
- '${safeNewValue}',
219
- '${modelName?.toLowerCase()}',
220
- ${seedUid ? `'${seedUid}'` : 'NULL'},
221
- '${seedLocalId}',
222
- '${versionLocalId}',
223
- ${versionUid ? `'${versionUid}'` : 'NULL'},
224
- '${schemaUid}',
225
- ${refSeedType ? `'${refSeedType}'` : 'NULL'},
226
- ${refResolvedValue ? `'${refResolvedValue}'` : 'NULL'},
227
- ${refResolvedDisplayValue ? `'${refResolvedDisplayValue}'` : 'NULL'},
228
- ${localStorageDir ? `'${localStorageDir}'` : 'NULL'},
229
- ${Date.now()});`
230
-
231
- await appDb.run(sql.raw(newPropertyStatement))
232
-
233
- sendItemUpdateEvent({ modelName, seedLocalId, seedUid })
234
-
235
- return {
236
- localId: newLocalId,
237
- schemaUid,
238
- }
239
-
240
- if (!seedLocalId && propertyName && modelName && newValue) {
241
- // TODO: Does this ever happen? If so, what should we do?
242
- }
243
- }
@@ -1,21 +0,0 @@
1
- import { ActionFunction, assign } from 'xstate'
2
-
3
- type UpdateMachineContext = {
4
- actions: ActionFunction<any, any, any, any, any, any, any, any, any>[] | any
5
- }
6
- export const updateMachineContext: UpdateMachineContext = {
7
- actions: assign(({ context, event }) => {
8
- const newContext = Object.assign({}, context)
9
-
10
- for (let i = 0; i < Object.keys(event).length; i++) {
11
- const key = Object.keys(event)[i]
12
- if (key === 'type') {
13
- continue
14
- }
15
- newContext[key] = event[key]
16
- }
17
- return {
18
- ...newContext,
19
- }
20
- }),
21
- }
@@ -1,59 +0,0 @@
1
- import { metadata, MetadataType } from '@/seedSchema'
2
- import { BaseDb } from '@/db/Db/BaseDb'
3
- import { eq } from 'drizzle-orm'
4
- import { PropertyType } from '@/types'
5
- import { BaseQueryClient } from '@/helpers/QueryClient/BaseQueryClient'
6
- import { BaseEasClient } from '@/helpers/EasClient/BaseEasClient'
7
- import { INTERNAL_DATA_TYPES } from '@/helpers/constants'
8
- import { toSnakeCase } from 'drizzle-orm/casing'
9
- import { Schema } from '@/graphql/gql/graphql'
10
- import { GET_SCHEMA_BY_NAME } from '@/Item/queries'
11
-
12
- type UpdateMetadata = (
13
- metadataValues: Partial<MetadataType>,
14
- propertyRecordSchema?: PropertyType | undefined,
15
- ) => Promise<MetadataType>
16
-
17
- export const updateMetadata: UpdateMetadata = async (metadataValues, propertyRecordSchema) => {
18
- const appDb = BaseDb.getAppDb()
19
-
20
- const { localId, ...rest } = metadataValues
21
-
22
- if (!localId) {
23
- throw new Error('No localId provided to updateMetadata')
24
- }
25
-
26
- const isItemStorage = propertyRecordSchema && propertyRecordSchema.storageType === 'ItemStorage'
27
-
28
- if (
29
- !isItemStorage &&
30
- propertyRecordSchema &&
31
- (!metadataValues.schemaUid || metadataValues.schemaUid === 'undefined' )
32
- ) {
33
- const queryClient = BaseQueryClient.getQueryClient()
34
- const easClient = BaseEasClient.getEasClient()
35
-
36
- const easDataType = INTERNAL_DATA_TYPES[propertyRecordSchema.dataType].eas
37
-
38
- const propertyNameSnakeCase = toSnakeCase(metadataValues.propertyName)
39
-
40
- const queryResult = await queryClient.fetchQuery({
41
- queryKey: [`getSchemaByName${metadataValues.propertyName}`],
42
- queryFn: async (): Promise<{schemas: Schema[]}> =>
43
- easClient.request(GET_SCHEMA_BY_NAME, {
44
- where: {
45
- schema: {
46
- equals: `${easDataType} ${propertyNameSnakeCase}`,
47
- },
48
- },
49
- }),
50
- })
51
-
52
- if (queryResult && queryResult.schemas.length > 0) {
53
- metadataValues.schemaUid = queryResult.schemas[0].id
54
- }
55
-
56
- }
57
-
58
- await appDb.update(metadata).set(rest).where(eq(metadata.localId, localId))
59
- }
@@ -1,86 +0,0 @@
1
- import { EventObject, fromCallback } from 'xstate'
2
- import { FromCallbackInput, PublishMachineContext } from '@/types'
3
- import { BaseItem } from '@/Item/BaseItem'
4
- import debug from 'debug'
5
- import { getCorrectId } from '@/helpers'
6
-
7
- const logger = debug('app:services:publish:actors:upload')
8
-
9
- type UploadItem = {
10
- sourceFilePath: string
11
- fileSize: number
12
- filename: string
13
- seedLocalId?: string
14
- metadataLocalId?: string
15
- }
16
-
17
- export const upload = fromCallback<
18
- EventObject,
19
- FromCallbackInput<PublishMachineContext>
20
- >(({ sendBack, input: { context } }) => {
21
- const { localId } = context
22
-
23
- const _upload = async () => {
24
- const item = await BaseItem.find({ seedLocalId: localId })
25
-
26
- if (!item) {
27
- logger('no item with localId', localId)
28
- return false
29
- }
30
-
31
- const editedProperties = await item.getEditedProperties()
32
-
33
- for (const propertyData of editedProperties) {
34
- if (propertyData.refSeedType === 'image') {
35
- // Check sha256 of local file against sha256 of remote files
36
- // If different, add this file to uploadItems
37
- }
38
- }
39
-
40
- const uploadItems = []
41
-
42
- for (const editedPropertyData of editedProperties) {
43
- const propertyName = editedPropertyData.propertyName
44
- const editedProperty = item.properties[propertyName]
45
-
46
- if (!editedProperty || !editedProperty.propertyDef) {
47
- continue
48
- }
49
-
50
- if (
51
- editedProperty.propertyDef.refValueType &&
52
- editedProperty.propertyDef.refValueType === 'ImageSrc'
53
- ) {
54
- const context = editedProperty.getService().getSnapshot().context
55
- const imageSeedId = context.propertyValue
56
- const { localId, uid } = getCorrectId(imageSeedId)
57
- }
58
-
59
- if (
60
- editedProperty.propertyDef.storageType === 'ItemStorage' &&
61
- editedProperty.propertyDef.localStorageDir
62
- ) {
63
- }
64
- }
65
-
66
- if (uploadItems.length === 0) {
67
- return true
68
- }
69
-
70
- // const turbo = TurboFactory.unauthenticated()
71
-
72
- // turbo.uploadSignedDataItem()
73
- //
74
- // const { id, owner, dataCaches, fastFinalityIndexes } = await turbo.uploadFile(() => {
75
- // fileStreamFactory => () => fs.createReadStream(filePath),
76
- // fileSizeFactory => () => fileSize,
77
- // });
78
- return false
79
- }
80
-
81
- _upload().then((isValid) => {
82
- if (isValid) {
83
- sendBack({ type: 'uploadSuccess' })
84
- }
85
- })
86
- })
@@ -1,45 +0,0 @@
1
- import { EventObject, fromCallback } from 'xstate'
2
- import { DbServiceContext, FromCallbackInput } from '@/types/machines'
3
- import fs from '@zenfs/core'
4
- import {
5
- DB_VALIDATING_SUCCESS,
6
- DB_VALIDATING_WAIT,
7
- } from '@/services/internal/constants'
8
-
9
- export const validate = fromCallback<
10
- EventObject,
11
- FromCallbackInput<DbServiceContext>
12
- >(({ sendBack, input: { context } }) => {
13
- const { pathToDir, pathToDb } = context
14
-
15
- const pathsToCheck = [
16
- pathToDir,
17
- `${pathToDir}/db`,
18
- `${pathToDir}/db/meta`,
19
- `${pathToDir}/db/meta/_journal.json`,
20
- ]
21
-
22
- const _validate = async (): Promise<boolean> => {
23
- // If any of the necessary files don't exist, we wipe them all and recreate
24
- let exists = false
25
-
26
- for (const path of pathsToCheck) {
27
- exists = await fs.promises.exists(path)
28
- if (!exists) {
29
- sendBack({
30
- type: DB_VALIDATING_WAIT,
31
- })
32
- return false
33
- }
34
- }
35
- return exists
36
- }
37
-
38
- _validate().then((allFilesExist) => {
39
- if (allFilesExist) {
40
- sendBack({ type: DB_VALIDATING_SUCCESS, pathToDb, pathToDir })
41
- return
42
- }
43
- sendBack({ type: DB_VALIDATING_WAIT })
44
- })
45
- })
@@ -1,47 +0,0 @@
1
- import { EventObject, fromCallback } from 'xstate'
2
- import { INTERNAL_VALIDATING_INPUT_SUCCESS, ARWEAVE_HOST } from '@/services/internal/constants'
3
- import { FromCallbackInput, InternalMachineContext } from '@/types'
4
- import { isBrowser, isNode } from '@/helpers/environment'
5
-
6
- export const validateInput = fromCallback<
7
- EventObject,
8
- FromCallbackInput<InternalMachineContext>
9
- >(
10
- ({ sendBack, input: { context } }) => {
11
-
12
- const { endpoints, addresses, arweaveDomain } = context
13
- let { filesDir } = context
14
-
15
- if (!endpoints || !endpoints.filePaths || !endpoints.files) {
16
- throw new Error('validateInput called with invalid endpoints')
17
- }
18
-
19
- if (!addresses || !addresses.length) {
20
- throw new Error('validateInput called with invalid addresses')
21
- }
22
-
23
- if (!filesDir) {
24
- if (isBrowser()) {
25
- filesDir = '/'
26
- }
27
-
28
- if (!isBrowser()) {
29
- throw new Error('validateInput called with invalid filesDir')
30
- }
31
- }
32
-
33
- const _validateInput = async (): Promise<void> => {
34
- sendBack({
35
- type: INTERNAL_VALIDATING_INPUT_SUCCESS,
36
- endpoints,
37
- addresses,
38
- filesDir,
39
- arweaveDomain: arweaveDomain || ARWEAVE_HOST,
40
- })
41
- }
42
-
43
- _validateInput().then(() => {
44
- return
45
- })
46
- },
47
- )
@@ -1,20 +0,0 @@
1
- import { EventObject, fromCallback } from 'xstate'
2
- import { FromCallbackInput, PublishMachineContext } from '@/types'
3
-
4
- export const validateItemData = fromCallback<
5
- EventObject,
6
- FromCallbackInput<PublishMachineContext>
7
- >(({ sendBack, input: { context } }) => {
8
- const _validateItemData = async () => {
9
- if (context && context.localId) {
10
- return true
11
- }
12
- return false
13
- }
14
-
15
- _validateItemData().then((isValid) => {
16
- if (isValid) {
17
- sendBack({ type: 'validateItemDataSuccess' })
18
- }
19
- })
20
- })
@@ -1,24 +0,0 @@
1
- import { versions } from '@/seedSchema'
2
- import { count, max } from 'drizzle-orm'
3
- import { BaseDb } from '@/db/Db/BaseDb'
4
-
5
- export const getVersionData = () => {
6
- const appDb = BaseDb.getAppDb()
7
-
8
- return appDb.$with('versionData').as(
9
- appDb
10
- .select({
11
- seedLocalId: versions.seedLocalId,
12
- seedUid: versions.seedUid,
13
- latestVersionUid: versions.uid,
14
- latestVersionLocalId: versions.localId,
15
- versionsCount: count(versions.localId).as('versionsCount'),
16
- lastVersionPublishedAt: max(versions.attestationCreatedAt).as(
17
- 'lastVersionPublishedAt',
18
- ),
19
- lastLocalUpdateAt: max(versions.createdAt).as('lastLocalUpdateAt'),
20
- })
21
- .from(versions)
22
- .groupBy(versions.seedLocalId),
23
- )
24
- }
@@ -1,25 +0,0 @@
1
- import { EventObject, fromCallback } from 'xstate'
2
- import { FromCallbackInput, PropertyMachineContext } from '@/types'
3
- import { BaseDb } from '@/db/Db/BaseDb'
4
- import debug from 'debug'
5
-
6
- const logger = debug('app:ItemProperty:service:actors:waitForDb')
7
-
8
- export const waitForDb = fromCallback<
9
- EventObject,
10
- FromCallbackInput<PropertyMachineContext>
11
- >(({ sendBack }) => {
12
- const _waitForDb = new Promise<void>((resolve) => {
13
- const interval = setInterval(() => {
14
- const appDb = BaseDb.getAppDb()
15
- if (appDb) {
16
- clearInterval(interval)
17
- resolve()
18
- }
19
- }, 100)
20
- })
21
-
22
- _waitForDb.then(() => {
23
- sendBack({ type: 'waitForDbSuccess' })
24
- })
25
- })