@seedprotocol/sdk 0.3.9 → 0.3.10
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/bin.js +182 -111
- package/dist/bin.js.map +1 -1
- package/dist/main.js +3 -2
- package/dist/main.js.map +1 -1
- package/dist/node/db/node.app.db.config.ts +7 -26
- package/dist/scripts/bin.d.ts +4 -4
- package/dist/scripts/bin.d.ts.map +1 -1
- package/dist/seedData.json +23 -0
- package/dist/src/Item/BaseItem.js +3 -3
- package/dist/src/Item/BaseItem.js.map +1 -1
- package/dist/src/ItemProperty/BaseItemProperty.d.ts +4 -1
- package/dist/src/ItemProperty/BaseItemProperty.d.ts.map +1 -1
- package/dist/src/ItemProperty/BaseItemProperty.js +65 -21
- package/dist/src/ItemProperty/BaseItemProperty.js.map +1 -1
- package/dist/src/ItemProperty/service/actors/hydrateFromDb.d.ts.map +1 -1
- package/dist/src/ItemProperty/service/actors/hydrateFromDb.js +27 -17
- package/dist/src/ItemProperty/service/actors/hydrateFromDb.js.map +1 -1
- package/dist/src/ItemProperty/service/actors/initialize.d.ts.map +1 -1
- package/dist/src/ItemProperty/service/actors/initialize.js +25 -20
- package/dist/src/ItemProperty/service/actors/initialize.js.map +1 -1
- package/dist/src/ItemProperty/service/actors/resolveRemoteStorage.d.ts.map +1 -1
- package/dist/src/ItemProperty/service/actors/resolveRemoteStorage.js +1 -1
- package/dist/src/ItemProperty/service/actors/resolveRemoteStorage.js.map +1 -1
- package/dist/src/ItemProperty/service/propertyMachine.d.ts +11 -11
- package/dist/src/browser/Item/Item.js +0 -1
- package/dist/src/browser/Item/Item.js.map +1 -1
- package/dist/src/browser/ItemProperty/ItemProperty.d.ts.map +1 -1
- package/dist/src/browser/ItemProperty/ItemProperty.js +0 -1
- package/dist/src/browser/ItemProperty/ItemProperty.js.map +1 -1
- package/dist/src/browser/db/Db.d.ts.map +1 -1
- package/dist/src/browser/db/Db.js +0 -2
- package/dist/src/browser/db/Db.js.map +1 -1
- package/dist/src/browser/helpers/FileManager.d.ts +1 -1
- package/dist/src/browser/helpers/FileManager.d.ts.map +1 -1
- package/dist/src/browser/helpers/FileManager.js +4 -4
- package/dist/src/browser/helpers/FileManager.js.map +1 -1
- package/dist/src/browser/helpers/eas.d.ts +20 -0
- package/dist/src/browser/helpers/eas.d.ts.map +1 -0
- package/dist/src/browser/helpers/eas.js +89 -0
- package/dist/src/browser/helpers/eas.js.map +1 -0
- package/dist/src/browser/react/SeedImage.d.ts +11 -0
- package/dist/src/browser/react/SeedImage.d.ts.map +1 -0
- package/dist/src/browser/react/SeedImage.js +105 -0
- package/dist/src/browser/react/SeedImage.js.map +1 -0
- package/dist/src/browser/react/item.d.ts +8 -8
- package/dist/src/browser/react/item.d.ts.map +1 -1
- package/dist/src/browser/react/item.js +9 -53
- package/dist/src/browser/react/item.js.map +1 -1
- package/dist/src/browser/react/property.d.ts +3 -3
- package/dist/src/browser/react/property.d.ts.map +1 -1
- package/dist/src/browser/react/property.js.map +1 -1
- package/dist/src/browser/react/services.d.ts.map +1 -1
- package/dist/src/browser/react/services.js +5 -0
- package/dist/src/browser/react/services.js.map +1 -1
- package/dist/src/browser/workers/FileDownloader.d.ts.map +1 -1
- package/dist/src/browser/workers/FileDownloader.js +1 -0
- package/dist/src/browser/workers/FileDownloader.js.map +1 -1
- package/dist/src/browser/workers/ImageResizer.d.ts.map +1 -1
- package/dist/src/browser/workers/ImageResizer.js +1 -0
- package/dist/src/browser/workers/ImageResizer.js.map +1 -1
- package/dist/src/browser/workers/filesDownload.d.ts.map +1 -1
- package/dist/src/browser/workers/filesDownload.js +4 -0
- package/dist/src/browser/workers/filesDownload.js.map +1 -1
- package/dist/src/browser/workers/imageResize.d.ts.map +1 -1
- package/dist/src/browser/workers/imageResize.js +4 -1
- package/dist/src/browser/workers/imageResize.js.map +1 -1
- package/dist/src/client/BaseClientManager.d.ts.map +1 -1
- package/dist/src/client/ClientManager.d.ts +173 -20
- package/dist/src/client/ClientManager.d.ts.map +1 -1
- package/dist/src/client/ClientManager.js +8 -0
- package/dist/src/client/ClientManager.js.map +1 -1
- package/dist/src/client/actors/initialize.d.ts +2 -2
- package/dist/src/client/actors/initialize.d.ts.map +1 -1
- package/dist/src/client/actors/initialize.js +9 -0
- package/dist/src/client/actors/initialize.js.map +1 -1
- package/dist/src/client/actors/saveAppState.d.ts.map +1 -1
- package/dist/src/client/actors/saveAppState.js +3 -2
- package/dist/src/client/actors/saveAppState.js.map +1 -1
- package/dist/src/client/clientManagerMachine.d.ts +86 -10
- package/dist/src/client/clientManagerMachine.d.ts.map +1 -1
- package/dist/src/client/clientManagerMachine.js +3 -1
- package/dist/src/client/clientManagerMachine.js.map +1 -1
- package/dist/src/db/read/getModelSchemas.d.ts +1 -2
- package/dist/src/db/read/getModelSchemas.d.ts.map +1 -1
- package/dist/src/db/read/getModelSchemas.js +1 -21
- package/dist/src/db/read/getModelSchemas.js.map +1 -1
- package/dist/src/db/read/getModels.d.ts +4 -1
- package/dist/src/db/read/getModels.d.ts.map +1 -1
- package/dist/src/db/read/getModels.js +16 -0
- package/dist/src/db/read/getModels.js.map +1 -0
- package/dist/src/db/read/getPublishPayload.d.ts.map +1 -1
- package/dist/src/db/read/getPublishPayload.js +52 -14
- package/dist/src/db/read/getPublishPayload.js.map +1 -1
- package/dist/src/db/read/getPublishUploads.d.ts.map +1 -1
- package/dist/src/db/read/getPublishUploads.js +34 -3
- package/dist/src/db/read/getPublishUploads.js.map +1 -1
- package/dist/src/events/item/syncDbWithEas.d.ts.map +1 -1
- package/dist/src/events/item/syncDbWithEas.js +9 -28
- package/dist/src/events/item/syncDbWithEas.js.map +1 -1
- package/dist/src/helpers/constants.d.ts +2 -2
- package/dist/src/helpers/constants.d.ts.map +1 -1
- package/dist/src/helpers/constants.js +14 -6
- package/dist/src/helpers/constants.js.map +1 -1
- package/dist/src/helpers/getSegmentedItemProperties.d.ts +1 -0
- package/dist/src/helpers/getSegmentedItemProperties.d.ts.map +1 -1
- package/dist/src/helpers/getSegmentedItemProperties.js +6 -2
- package/dist/src/helpers/getSegmentedItemProperties.js.map +1 -1
- package/dist/src/helpers/index.d.ts +2 -1
- package/dist/src/helpers/index.d.ts.map +1 -1
- package/dist/src/helpers/index.js +3 -10
- package/dist/src/helpers/index.js.map +1 -1
- package/dist/src/helpers/scripts.d.ts +2 -0
- package/dist/src/helpers/scripts.d.ts.map +1 -0
- package/dist/src/helpers/scripts.js +14 -0
- package/dist/src/helpers/scripts.js.map +1 -0
- package/dist/src/index.d.ts +4 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/interfaces/IItemProperty.d.ts +7 -0
- package/dist/src/interfaces/IItemProperty.d.ts.map +1 -1
- package/dist/src/node/PathResolver.d.ts +39 -0
- package/dist/src/node/PathResolver.d.ts.map +1 -0
- package/dist/src/node/PathResolver.js +150 -0
- package/dist/src/node/PathResolver.js.map +1 -0
- package/dist/src/node/codegen/drizzle.d.ts.map +1 -1
- package/dist/src/node/codegen/drizzle.js +25 -4
- package/dist/src/node/codegen/drizzle.js.map +1 -1
- package/dist/src/node/constants.d.ts +0 -11
- package/dist/src/node/constants.d.ts.map +1 -1
- package/dist/src/node/constants.js +1 -32
- package/dist/src/node/constants.js.map +1 -1
- package/dist/src/node/db/node.app.db.config.d.ts.map +1 -1
- package/dist/src/schema/image/model.d.ts +8 -0
- package/dist/src/schema/image/model.d.ts.map +1 -0
- package/dist/src/schema/image/model.js +29 -0
- package/dist/src/schema/image/model.js.map +1 -0
- package/dist/src/schema/model/index.d.ts +8 -8
- package/dist/src/schema/property/index.d.ts +33 -45
- package/dist/src/schema/property/index.d.ts.map +1 -1
- package/dist/src/schema/property/index.js +0 -1
- package/dist/src/schema/property/index.js.map +1 -1
- package/dist/src/seedSchema/ConfigSchema.js +18 -0
- package/dist/src/seedSchema/ConfigSchema.js.map +1 -0
- package/dist/src/services/db/actors/migrate.js +1 -1
- package/dist/src/services/db/actors/migrate.js.map +1 -1
- package/dist/src/services/global/globalMachine.d.ts +90 -90
- package/dist/src/stores/eas.d.ts +12 -5
- package/dist/src/stores/eas.d.ts.map +1 -1
- package/dist/src/stores/eas.js +13 -8
- package/dist/src/stores/eas.js.map +1 -1
- package/dist/src/stores/modelClass.d.ts.map +1 -1
- package/dist/src/stores/modelClass.js.map +1 -1
- package/package.json +2 -1
- package/dist/src/Item/index.d.ts +0 -5
- package/dist/src/Item/index.d.ts.map +0 -1
- package/dist/src/Item/index.js +0 -4
- package/dist/src/Item/index.js.map +0 -1
- package/dist/src/ItemProperty/index.d.ts +0 -5
- package/dist/src/ItemProperty/index.d.ts.map +0 -1
- package/dist/src/ItemProperty/index.js +0 -4
- package/dist/src/ItemProperty/index.js.map +0 -1
- package/dist/src/ItemProperty/service/actors/index.d.ts +0 -4
- package/dist/src/ItemProperty/service/actors/index.d.ts.map +0 -1
- package/dist/src/browser/Item/index.d.ts +0 -2
- package/dist/src/browser/Item/index.d.ts.map +0 -1
- package/dist/src/browser/Item/index.js +0 -2
- package/dist/src/browser/Item/index.js.map +0 -1
- package/dist/src/browser/ItemProperty/index.d.ts +0 -2
- package/dist/src/browser/ItemProperty/index.d.ts.map +0 -1
|
@@ -19,6 +19,30 @@ const prepareArweaveTransaction = async (data, contentHash) => {
|
|
|
19
19
|
}
|
|
20
20
|
return tx;
|
|
21
21
|
};
|
|
22
|
+
const getImageUploads = async (itemImageProperties) => {
|
|
23
|
+
const uploads = [];
|
|
24
|
+
for (const itemImageProperty of itemImageProperties) {
|
|
25
|
+
const filePath = `/files/images/${itemImageProperty.refResolvedValue}`;
|
|
26
|
+
if (!filePath) {
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
const exists = await BaseFileManager.pathExists(filePath);
|
|
30
|
+
if (!exists) {
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
const fileContents = await BaseFileManager.readFileAsString(filePath);
|
|
34
|
+
const contentHash = await getContentHash(fileContents);
|
|
35
|
+
const transaction = await prepareArweaveTransaction(fileContents, contentHash);
|
|
36
|
+
uploads.push({
|
|
37
|
+
itemPropertyName: itemImageProperty.propertyName,
|
|
38
|
+
itemPropertyLocalId: itemImageProperty.localId,
|
|
39
|
+
seedLocalId: itemImageProperty.seedLocalId,
|
|
40
|
+
versionLocalId: itemImageProperty.versionLocalId,
|
|
41
|
+
transactionToSign: transaction,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
return uploads;
|
|
45
|
+
};
|
|
22
46
|
const processUploadProperty = async (uploadProperty, uploads, relatedItemProperty) => {
|
|
23
47
|
const itemProperty = uploadProperty.itemProperty;
|
|
24
48
|
const childUploads = [];
|
|
@@ -75,13 +99,18 @@ const processUploadProperty = async (uploadProperty, uploads, relatedItemPropert
|
|
|
75
99
|
}
|
|
76
100
|
compositeFileContents += `${separator}${childUpload.propertyName}${separator}${childUploadContents}`;
|
|
77
101
|
}
|
|
78
|
-
|
|
102
|
+
if (typeof document !== 'undefined') {
|
|
103
|
+
fileContents = new TextEncoder().encode(compositeFileContents);
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
fileContents = Buffer.from(compositeFileContents);
|
|
107
|
+
}
|
|
79
108
|
}
|
|
80
109
|
if (!fileContents) {
|
|
81
110
|
throw new Error(`No file contents found for ${itemProperty.propertyName}`);
|
|
82
111
|
}
|
|
83
112
|
const uint8Array = new Uint8Array(fileContents.buffer, fileContents.byteOffset, fileContents.byteLength);
|
|
84
|
-
const contentHash = await getContentHash(
|
|
113
|
+
const contentHash = await getContentHash(uint8Array);
|
|
85
114
|
transaction = await prepareArweaveTransaction(fileContents, contentHash);
|
|
86
115
|
let itemPropertyLocalId = relatedItemProperty
|
|
87
116
|
? relatedItemProperty.localId
|
|
@@ -107,10 +136,12 @@ const getPublishUploads = async (item, uploads = [], relatedItemProperty) => {
|
|
|
107
136
|
// ]
|
|
108
137
|
// }
|
|
109
138
|
// }
|
|
110
|
-
const { itemUploadProperties, itemRelationProperties } = getSegmentedItemProperties(item);
|
|
139
|
+
const { itemUploadProperties, itemRelationProperties, itemImageProperties } = getSegmentedItemProperties(item);
|
|
111
140
|
for (const uploadProperty of itemUploadProperties) {
|
|
112
141
|
uploads = await processUploadProperty(uploadProperty, uploads, relatedItemProperty);
|
|
113
142
|
}
|
|
143
|
+
const imageUploads = await getImageUploads(itemImageProperties);
|
|
144
|
+
uploads.push(...imageUploads);
|
|
114
145
|
for (const relationProperty of itemRelationProperties) {
|
|
115
146
|
const propertyValue = relationProperty.getService().getSnapshot()
|
|
116
147
|
.context.propertyValue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getPublishUploads.js","sources":["../../../../../src/db/read/getPublishUploads.ts"],"sourcesContent":["import Transaction from 'arweave'\nimport { CreateTransactionInterface } from 'arweave/web'\nimport { getArweave } from '@/helpers/ArweaveClient'\nimport { BaseFileManager, getCorrectId } from '@/helpers'\nimport { getSegmentedItemProperties } from '@/helpers/getSegmentedItemProperties'\nimport debug from 'debug'\nimport { IItem, IItemProperty } from '@/interfaces'\nimport { getContentHash } from '@/helpers'\nimport { BaseItem } from '@/Item/BaseItem'\nconst logger = debug('seedSdk:item:getPublishUploads')\n\n\nexport const prepareArweaveTransaction = async (\n data: string | Uint8Array,\n contentHash: string | undefined,\n): Promise<Transaction> => {\n const transactionData: Partial<CreateTransactionInterface> = {\n data,\n tags: [],\n }\n\n const tx = await getArweave()!.createTransaction(transactionData)\n\n if (contentHash) {\n logger('contentHash', contentHash)\n logger('adding content hash tag to tx.id:', tx.id)\n tx.addTag('Content-SHA-256', contentHash)\n }\n\n return tx\n}\nexport type UploadProperty = {\n itemProperty: IItemProperty<any>\n childProperties: IItemProperty<any>[]\n}\ntype ChildUploadData = {\n propertyName: string\n localStoragePath: string\n}\nconst processUploadProperty = async (\n uploadProperty: UploadProperty,\n uploads: PublishUpload[],\n relatedItemProperty?: IItemProperty<any>,\n): Promise<PublishUpload[]> => {\n const itemProperty = uploadProperty.itemProperty\n\n const childUploads: ChildUploadData[] = []\n\n for (const childProperty of uploadProperty.childProperties) {\n const filePath = childProperty.localStoragePath\n\n if (!filePath || filePath.endsWith('undefined')) {\n continue\n }\n\n const exists = await BaseFileManager.pathExists(filePath)\n if (!exists) {\n continue\n }\n\n childUploads.push({\n propertyName: childProperty.propertyName,\n localStoragePath: filePath,\n })\n }\n\n let fileContents\n let transaction: Transaction\n\n if (!childUploads || childUploads.length === 0) {\n if (relatedItemProperty && relatedItemProperty.localStoragePath) {\n const filePath = relatedItemProperty.localStoragePath\n\n if (!filePath || filePath.endsWith('undefined')) {\n return uploads\n }\n\n const exists = await BaseFileManager.pathExists(filePath)\n if (!exists) {\n return uploads\n\n }\n\n try {\n fileContents = await BaseFileManager.readFileAsString(filePath)\n } catch (e) {\n const fs = await BaseFileManager.getFs()\n fileContents = fs.readFileSync(filePath)\n }\n }\n if (!fileContents) {\n return uploads\n }\n }\n\n if (childUploads.length > 0) {\n const separator = '===FILE_SEPARATOR==='\n // let compositeFileContents = `${itemProperty.propertyName}${separator}${mainFileContents}`\n let compositeFileContents = ''\n\n for (const childUpload of childUploads) {\n let childUploadContents\n\n const fs = await BaseFileManager.getFs()\n\n try {\n childUploadContents = await fs.promises.readFile(\n childUpload.localStoragePath,\n )\n } catch (e) {\n childUploadContents = fs.readFileSync(childUpload.localStoragePath)\n }\n\n compositeFileContents += `${separator}${childUpload.propertyName}${separator}${childUploadContents}`\n }\n\n fileContents = Buffer.from(compositeFileContents)\n }\n\n if (!fileContents) {\n throw new Error(`No file contents found for ${itemProperty.propertyName}`)\n }\n\n const uint8Array = new Uint8Array(\n fileContents.buffer,\n fileContents.byteOffset,\n fileContents.byteLength,\n )\n\n const contentHash = await getContentHash(null, uint8Array)\n\n transaction = await prepareArweaveTransaction(fileContents, contentHash)\n\n let itemPropertyLocalId = relatedItemProperty\n ? relatedItemProperty.localId\n : itemProperty.localId\n let itemPropertyName = relatedItemProperty\n ? relatedItemProperty.propertyName\n : itemProperty.propertyName\n\n uploads.push({\n itemPropertyName,\n itemPropertyLocalId,\n seedLocalId: itemProperty.seedLocalId!,\n versionLocalId: itemProperty.versionLocalId!,\n transactionToSign: transaction,\n })\n\n return uploads\n}\nexport type PublishUpload = {\n itemPropertyName: string\n itemPropertyLocalId: string\n seedLocalId: string\n versionLocalId: string\n transactionToSign: Transaction\n}\nexport const getPublishUploads = async (\n item: IItem<any>,\n uploads: PublishUpload[] = [],\n relatedItemProperty?: IItemProperty<any>,\n) => {\n // if (item.modelName === 'Post') {\n // if (!item.authors) {\n // item.authors = [\n // 'Sr0bIx9Fwj',\n // '0xc2879650e9503a303ceb46f966e55baab480b267dc20cede23ef503622eee6d7',\n // ]\n // }\n // }\n\n const { itemUploadProperties, itemRelationProperties } =\n getSegmentedItemProperties(item)\n\n for (const uploadProperty of itemUploadProperties) {\n uploads = await processUploadProperty(\n uploadProperty,\n uploads,\n relatedItemProperty,\n )\n }\n\n for (const relationProperty of itemRelationProperties) {\n const propertyValue = relationProperty.getService().getSnapshot()\n .context.propertyValue\n\n if (!propertyValue || relationProperty.uid) {\n continue\n }\n\n const { localId: seedLocalId, uid: seedUid } = getCorrectId(propertyValue)\n\n const relatedItem = await BaseItem.find({\n seedLocalId,\n seedUid,\n })\n\n if (!relatedItem) {\n throw new Error(\n `No relatedItem found for ${relationProperty.propertyName}`,\n )\n }\n\n uploads = await getPublishUploads(relatedItem, uploads, relationProperty)\n }\n\n return uploads\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"getPublishUploads.js","sources":["../../../../../src/db/read/getPublishUploads.ts"],"sourcesContent":["import Transaction from 'arweave'\nimport { CreateTransactionInterface } from 'arweave/web'\nimport { getArweave } from '@/helpers/ArweaveClient'\nimport { BaseFileManager, getCorrectId } from '@/helpers'\nimport { getSegmentedItemProperties } from '@/helpers/getSegmentedItemProperties'\nimport debug from 'debug'\nimport { IItem, IItemProperty } from '@/interfaces'\nimport { getContentHash } from '@/helpers'\nimport { BaseItem } from '@/Item/BaseItem'\nconst logger = debug('seedSdk:item:getPublishUploads')\n\n\nexport const prepareArweaveTransaction = async (\n data: string | Uint8Array,\n contentHash: string | undefined,\n): Promise<Transaction> => {\n const transactionData: Partial<CreateTransactionInterface> = {\n data,\n tags: [],\n }\n\n const tx = await getArweave()!.createTransaction(transactionData)\n\n if (contentHash) {\n logger('contentHash', contentHash)\n logger('adding content hash tag to tx.id:', tx.id)\n tx.addTag('Content-SHA-256', contentHash)\n }\n\n return tx\n}\n\n\nconst getImageUploads = async (itemImageProperties: IItemProperty<any>[]) => {\n const uploads: PublishUpload[] = []\n\n for (const itemImageProperty of itemImageProperties) {\n\n const filePath = `/files/images/${itemImageProperty.refResolvedValue}`\n\n if (!filePath) {\n continue\n }\n\n const exists = await BaseFileManager.pathExists(filePath)\n if (!exists) {\n continue\n }\n\n const fileContents = await BaseFileManager.readFileAsString(filePath)\n\n const contentHash = await getContentHash(fileContents)\n\n const transaction = await prepareArweaveTransaction(fileContents, contentHash)\n\n uploads.push({\n itemPropertyName: itemImageProperty.propertyName,\n itemPropertyLocalId: itemImageProperty.localId,\n seedLocalId: itemImageProperty.seedLocalId!,\n versionLocalId: itemImageProperty.versionLocalId!,\n transactionToSign: transaction,\n })\n }\n\n return uploads\n}\n\n\nexport type UploadProperty = {\n itemProperty: IItemProperty<any>\n childProperties: IItemProperty<any>[]\n}\ntype ChildUploadData = {\n propertyName: string\n localStoragePath: string\n}\nconst processUploadProperty = async (\n uploadProperty: UploadProperty,\n uploads: PublishUpload[],\n relatedItemProperty?: IItemProperty<any>,\n): Promise<PublishUpload[]> => {\n const itemProperty = uploadProperty.itemProperty\n\n const childUploads: ChildUploadData[] = []\n\n for (const childProperty of uploadProperty.childProperties) {\n const filePath = childProperty.localStoragePath\n\n if (!filePath || filePath.endsWith('undefined')) {\n continue\n }\n\n const exists = await BaseFileManager.pathExists(filePath)\n if (!exists) {\n continue\n }\n\n childUploads.push({\n propertyName: childProperty.propertyName,\n localStoragePath: filePath,\n })\n }\n\n let fileContents\n let transaction: Transaction\n\n if (!childUploads || childUploads.length === 0) {\n if (relatedItemProperty && relatedItemProperty.localStoragePath) {\n const filePath = relatedItemProperty.localStoragePath\n\n if (!filePath || filePath.endsWith('undefined')) {\n return uploads\n }\n\n const exists = await BaseFileManager.pathExists(filePath)\n if (!exists) {\n return uploads\n\n }\n\n try {\n fileContents = await BaseFileManager.readFileAsString(filePath)\n } catch (e) {\n const fs = await BaseFileManager.getFs()\n fileContents = fs.readFileSync(filePath)\n }\n }\n if (!fileContents) {\n return uploads\n }\n }\n\n if (childUploads.length > 0) {\n const separator = '===FILE_SEPARATOR==='\n // let compositeFileContents = `${itemProperty.propertyName}${separator}${mainFileContents}`\n let compositeFileContents = ''\n\n for (const childUpload of childUploads) {\n let childUploadContents\n\n const fs = await BaseFileManager.getFs()\n\n try {\n childUploadContents = await fs.promises.readFile(\n childUpload.localStoragePath,\n )\n } catch (e) {\n childUploadContents = fs.readFileSync(childUpload.localStoragePath)\n }\n\n compositeFileContents += `${separator}${childUpload.propertyName}${separator}${childUploadContents}`\n }\n\n if (typeof document !== 'undefined') {\n fileContents = new TextEncoder().encode(compositeFileContents)\n } else {\n fileContents = Buffer.from(compositeFileContents)\n }\n }\n\n if (!fileContents) {\n throw new Error(`No file contents found for ${itemProperty.propertyName}`)\n }\n\n const uint8Array = new Uint8Array(\n fileContents.buffer,\n fileContents.byteOffset,\n fileContents.byteLength,\n )\n\n const contentHash = await getContentHash(uint8Array)\n\n transaction = await prepareArweaveTransaction(fileContents, contentHash)\n\n let itemPropertyLocalId = relatedItemProperty\n ? relatedItemProperty.localId\n : itemProperty.localId\n let itemPropertyName = relatedItemProperty\n ? relatedItemProperty.propertyName\n : itemProperty.propertyName\n\n uploads.push({\n itemPropertyName,\n itemPropertyLocalId,\n seedLocalId: itemProperty.seedLocalId!,\n versionLocalId: itemProperty.versionLocalId!,\n transactionToSign: transaction,\n })\n\n return uploads\n}\n\n\nexport type PublishUpload = {\n itemPropertyName: string\n itemPropertyLocalId: string\n seedLocalId: string\n versionLocalId: string\n transactionToSign: Transaction\n}\nexport const getPublishUploads = async (\n item: IItem<any>,\n uploads: PublishUpload[] = [],\n relatedItemProperty?: IItemProperty<any>,\n) => {\n // if (item.modelName === 'Post') {\n // if (!item.authors) {\n // item.authors = [\n // 'Sr0bIx9Fwj',\n // '0xc2879650e9503a303ceb46f966e55baab480b267dc20cede23ef503622eee6d7',\n // ]\n // }\n // }\n\n const { itemUploadProperties, itemRelationProperties, itemImageProperties } =\n getSegmentedItemProperties(item)\n\n for (const uploadProperty of itemUploadProperties) {\n uploads = await processUploadProperty(\n uploadProperty,\n uploads,\n relatedItemProperty,\n )\n }\n\n const imageUploads = await getImageUploads(itemImageProperties)\n uploads.push(...imageUploads)\n\n for (const relationProperty of itemRelationProperties) {\n const propertyValue = relationProperty.getService().getSnapshot()\n .context.propertyValue\n\n if (!propertyValue || relationProperty.uid) {\n continue\n }\n\n const { localId: seedLocalId, uid: seedUid } = getCorrectId(propertyValue)\n\n const relatedItem = await BaseItem.find({\n seedLocalId,\n seedUid,\n })\n\n if (!relatedItem) {\n throw new Error(\n `No relatedItem found for ${relationProperty.propertyName}`,\n )\n }\n\n uploads = await getPublishUploads(relatedItem, uploads, relationProperty)\n }\n\n return uploads\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncDbWithEas.d.ts","sourceRoot":"","sources":["../../../../src/events/item/syncDbWithEas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,aAAa,EAAuB,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"syncDbWithEas.d.ts","sourceRoot":"","sources":["../../../../src/events/item/syncDbWithEas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,aAAa,EAAuB,MAAM,WAAW,CAAA;AAihBzE,QAAA,MAAM,oBAAoB,EAAE,aAAa,CAAC,GAAG,CAsE5C,CAAA;AAED,OAAO,EAAE,oBAAoB,EAAE,CAAA"}
|
|
@@ -7,7 +7,7 @@ import '../../seedSchema/ModelSchema.js';
|
|
|
7
7
|
import { modelUids } from '../../seedSchema/ModelUidSchema.js';
|
|
8
8
|
import { inArray, sql, and, eq } from 'drizzle-orm';
|
|
9
9
|
import { generateId, parseEasRelationPropertyName } from '../../helpers/index.js';
|
|
10
|
-
import { GET_VERSIONS, GET_PROPERTIES
|
|
10
|
+
import { GET_SEEDS, GET_VERSIONS, GET_PROPERTIES } from '../../Item/queries.js';
|
|
11
11
|
import { getAddressesFromDb, escapeSqliteString } from '../../helpers/db.js';
|
|
12
12
|
import { eventEmitter } from '../../eventBus.js';
|
|
13
13
|
import { getModelNames, getModels } from '../../stores/modelClass.js';
|
|
@@ -17,6 +17,7 @@ import { createSeeds } from '../../db/write/createSeeds.js';
|
|
|
17
17
|
import { setSchemaUidForSchemaDefinition } from '../../stores/eas.js';
|
|
18
18
|
import { BaseEasClient } from '../../helpers/EasClient/BaseEasClient.js';
|
|
19
19
|
import { BaseQueryClient } from '../../helpers/QueryClient/BaseQueryClient.js';
|
|
20
|
+
import { getModelSchemasFromEas, getItemVersionsFromEas, getItemPropertiesFromEas } from '../../browser/helpers/eas.js';
|
|
20
21
|
|
|
21
22
|
const relationValuesToExclude = [
|
|
22
23
|
'0x0000000000000000000000000000000000000000000000000000000000000020',
|
|
@@ -356,14 +357,10 @@ const getRelatedSeedsAndVersions = async () => {
|
|
|
356
357
|
};
|
|
357
358
|
const syncDbWithEasHandler = throttle(async (_) => {
|
|
358
359
|
const appDb = BaseDb.getAppDb();
|
|
359
|
-
const {
|
|
360
|
-
|
|
361
|
-
!modelSchemas.schemas ||
|
|
362
|
-
modelSchemas.schemas.length === 0) {
|
|
363
|
-
throw new Error(`No schemas found for models`);
|
|
364
|
-
}
|
|
360
|
+
const { schemaStringToModelRecord } = await getModelSchemas();
|
|
361
|
+
const modelSchemas = await getModelSchemasFromEas();
|
|
365
362
|
const schemaUids = [];
|
|
366
|
-
for (const modelSchema of modelSchemas
|
|
363
|
+
for (const modelSchema of modelSchemas) {
|
|
367
364
|
const foundModel = schemaStringToModelRecord.get(modelSchema.schema);
|
|
368
365
|
if (!foundModel) {
|
|
369
366
|
throw new Error(`Model not found for schema ${modelSchema.schema}`);
|
|
@@ -386,30 +383,14 @@ const syncDbWithEasHandler = throttle(async (_) => {
|
|
|
386
383
|
const { seedUids } = await saveEasSeedsToDb({
|
|
387
384
|
itemSeeds,
|
|
388
385
|
});
|
|
389
|
-
const
|
|
390
|
-
|
|
391
|
-
const { itemVersions } = await queryClient.fetchQuery({
|
|
392
|
-
queryKey: [`getVersionsForAllModels`],
|
|
393
|
-
queryFn: async () => easClient.request(GET_VERSIONS, {
|
|
394
|
-
where: {
|
|
395
|
-
refUID: {
|
|
396
|
-
in: seedUids,
|
|
397
|
-
},
|
|
398
|
-
},
|
|
399
|
-
}),
|
|
386
|
+
const itemVersions = await getItemVersionsFromEas({
|
|
387
|
+
seedUids
|
|
400
388
|
});
|
|
401
389
|
const { versionUids } = await saveEasVersionsToDb({
|
|
402
390
|
itemVersions,
|
|
403
391
|
});
|
|
404
|
-
const
|
|
405
|
-
|
|
406
|
-
queryFn: async () => easClient.request(GET_PROPERTIES, {
|
|
407
|
-
where: {
|
|
408
|
-
refUID: {
|
|
409
|
-
in: versionUids,
|
|
410
|
-
},
|
|
411
|
-
},
|
|
412
|
-
}),
|
|
392
|
+
const itemProperties = await getItemPropertiesFromEas({
|
|
393
|
+
versionUids,
|
|
413
394
|
});
|
|
414
395
|
const { propertyUids } = saveEasPropertiesToDb({
|
|
415
396
|
itemProperties,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncDbWithEas.js","sources":["../../../../../src/events/item/syncDbWithEas.ts"],"sourcesContent":["import { camelCase, DebouncedFunc, startCase, throttle } from 'lodash-es'\nimport { Attestation, SchemaWhereInput } from '@/graphql/gql/graphql'\nimport {\n metadata,\n MetadataType,\n modelUids,\n properties,\n seeds,\n SeedType,\n versions,\n} from '@/seedSchema'\nimport { and, eq, inArray, sql } from 'drizzle-orm'\nimport {\n generateId,\n parseEasRelationPropertyName,\n toSnakeCase,\n} from '@/helpers'\nimport {\n GET_PROPERTIES,\n GET_SCHEMAS,\n GET_SEEDS,\n GET_VERSIONS,\n} from '@/Item/queries'\nimport { INTERNAL_DATA_TYPES } from '@/helpers/constants'\nimport { escapeSqliteString, getAddressesFromDb } from '@/helpers/db'\nimport { eventEmitter } from '@/eventBus'\nimport { getModelNames, getModels } from '@/stores/modelClass'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { getModelSchemas } from '@/db/read/getModelSchemas'\nimport { ModelSchema, PropertyType } from '@/types'\nimport { createSeeds } from '@/db/write/createSeeds'\nimport { setSchemaUidForSchemaDefinition } from '@/stores/eas'\nimport { BaseEasClient } from '@/helpers/EasClient/BaseEasClient'\nimport { BaseQueryClient } from '@/helpers/QueryClient/BaseQueryClient'\n\n\n\n\nconst relationValuesToExclude = [\n '0x0000000000000000000000000000000000000000000000000000000000000020',\n]\n\n\nconst getSeedsFromSchemaUids = async ({ schemaUids, addresses }) => {\n const AND = [\n {\n OR: [] as Record<string, unknown>[],\n },\n ]\n\n for (const schemaUid of schemaUids) {\n AND[0].OR.push({\n decodedDataJson: {\n contains: schemaUid,\n },\n })\n }\n\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n const { itemSeeds } = await queryClient.fetchQuery({\n queryKey: [`getSeedsForAllModels`],\n queryFn: async () =>\n easClient.request(GET_SEEDS, {\n where: {\n attester: {\n in: addresses,\n },\n schemaId: {\n in: schemaUids,\n },\n AND,\n },\n }),\n })\n\n return itemSeeds\n}\n\nconst seedUidToLocalId = new Map<string, string>()\nconst seedUidToModelType = new Map<string, string>()\nconst relatedSeedUids = new Set<string>()\n\nconst versionUidToLocalId = new Map<string, string>()\nconst versionUidToSeedUid = new Map<string, string>()\n\nconst propertyUidToLocalId = new Map<string, string>()\n\ntype SaveEasSeedsToDbProps = {\n itemSeeds: Attestation[]\n}\n\ntype SaveEasSeedsToDbReturn = {\n seedUids: string[]\n}\n\ntype SaveEasSeedsToDb = (\n props: SaveEasSeedsToDbProps,\n) => Promise<SaveEasSeedsToDbReturn>\n\nconst saveEasSeedsToDb: SaveEasSeedsToDb = async ({ itemSeeds }) => {\n const appDb = BaseDb.getAppDb()\n\n const seedUids = itemSeeds.map((seed) => seed.id)\n\n const existingSeedRecordsRows: SeedType[] = await appDb\n .select()\n .from(seeds)\n .where(inArray(seeds.uid, seedUids))\n\n const existingSeedUids = new Set<string>()\n\n if (existingSeedRecordsRows && existingSeedRecordsRows.length > 0) {\n for (const row of existingSeedRecordsRows) {\n existingSeedUids.add(row.uid)\n seedUidToLocalId.set(row.uid, row.localId)\n seedUidToModelType.set(row.uid, row.type)\n }\n }\n\n const newSeeds = itemSeeds.filter((seed) => !existingSeedUids.has(seed.id))\n\n if (newSeeds.length === 0) {\n return { seedUidToLocalId, seedUids }\n }\n\n const newSeedsData: Partial<SeedType>[] = []\n\n for (let i = 0; i < newSeeds.length; i++) {\n const seed = newSeeds[i]\n seedUidToModelType.set(seed.id, seed.schema.schemaNames[0].name)\n const seedLocalId = generateId()\n seedUidToLocalId.set(seed.id, seedLocalId)\n\n const attestationRaw = escapeSqliteString(JSON.stringify(seed))\n\n newSeedsData.push({\n localId: seedLocalId,\n uid: seed.id,\n schemaUid: seed.schemaId,\n type: seed.schema.schemaNames[0].name,\n createdAt: Date.now(),\n attestationCreatedAt: seed.timeCreated * 1000,\n attestationRaw,\n })\n\n seedUidToLocalId.set(seed.id, seedLocalId)\n }\n\n const newSeedUids = await createSeeds(newSeedsData)\n\n return { seedUids: newSeedUids }\n}\n\ntype SaveEasVersionsToDbParams = {\n itemVersions: Attestation[]\n}\n\ntype SaveEasVersionsToDb = (\n props: SaveEasVersionsToDbParams,\n) => Promise<Record<string, unknown>>\n\nconst saveEasVersionsToDb: SaveEasVersionsToDb = async ({ itemVersions }) => {\n const versionUids = itemVersions.map((version) => version.id)\n\n const appDb = BaseDb.getAppDb()\n\n const existingVersionRecordsRows: MetadataType[] = await appDb\n .select()\n .from(versions)\n .where(inArray(versions.uid, versionUids))\n\n const existingVersionUids = new Set<string>()\n\n if (existingVersionRecordsRows && existingVersionRecordsRows.length > 0) {\n for (const row of existingVersionRecordsRows) {\n existingVersionUids.add(row.uid)\n versionUidToLocalId.set(row.uid, row.localId)\n versionUidToSeedUid.set(row.uid, row.seedUid)\n }\n }\n\n const newVersions = itemVersions.filter(\n (version) => !existingVersionUids.has(version.id),\n )\n\n if (newVersions.length === 0) {\n return { versionUidToLocalId, versionUids }\n }\n\n let insertVersionsQuery = `INSERT INTO versions (local_id, uid, seed_uid, seed_local_id, seed_type, created_at,\n attestation_created_at,\n attestation_raw)\n VALUES `\n\n for (let i = 0; i < newVersions.length; i++) {\n const version = newVersions[i]\n versionUidToSeedUid.set(version.id, version.refUID)\n const versionLocalId = generateId()\n versionUidToLocalId.set(version.id, versionLocalId)\n\n const seedUid = versionUidToSeedUid.get(version.id)\n const seedLocalId = seedUidToLocalId.get(seedUid!)\n const seedType = seedUidToModelType.get(seedUid!)\n const attestationRaw = escapeSqliteString(JSON.stringify(version))\n\n const valuesString = `('${versionLocalId}', '${version.id}', '${seedUid}', '${seedLocalId}', '${seedType}', ${Date.now()}, ${version.timeCreated * 1000}, '${attestationRaw}')`\n\n if (i < newVersions.length - 1) {\n insertVersionsQuery += valuesString + ', '\n }\n\n if (i === newVersions.length - 1) {\n insertVersionsQuery += valuesString + ';'\n }\n\n versionUidToLocalId.set(version.id, versionLocalId)\n }\n\n await appDb.run(sql.raw(insertVersionsQuery))\n\n return { versionUids }\n}\n\nconst createMetadataRecordsForStorageTransactionId = async (\n storageTransactionIdProperty: Attestation,\n modelSchema: ModelSchema,\n) => {\n const attestationData = JSON.parse(\n storageTransactionIdProperty.decodedDataJson,\n )[0].value\n const propertyName = camelCase(attestationData.name)\n const propertyValue = attestationData.value\n\n const itemStorageProperties = new Map<string, PropertyType>()\n\n for (const [_propertyName, propertyDef] of Object.entries(modelSchema)) {\n if (propertyDef?.storageType && propertyDef.storageType === 'ItemStorage') {\n itemStorageProperties.set(_propertyName, propertyDef)\n }\n }\n\n if (itemStorageProperties.size === 0) {\n return\n }\n\n const appDb = BaseDb.getAppDb()\n\n for (const [_propertyName, propertyDef] of itemStorageProperties.entries()) {\n const existingMetadataRecordRows = await appDb\n .select()\n .from(metadata)\n .where(\n and(\n eq(metadata.propertyName, _propertyName),\n eq(metadata.propertyValue, propertyValue),\n eq(metadata.versionUid, storageTransactionIdProperty.refUID),\n ),\n )\n\n if (existingMetadataRecordRows && existingMetadataRecordRows.length > 0) {\n continue\n }\n\n const seedUid = versionUidToSeedUid.get(\n storageTransactionIdProperty.refUID,\n ) as string\n const seedLocalId = seedUidToLocalId.get(seedUid)\n const versionUid = storageTransactionIdProperty.refUID\n const versionLocalId = versionUidToLocalId.get(versionUid)\n\n const propertyLocalId = generateId()\n await appDb.insert(metadata).values({\n localId: propertyLocalId,\n propertyName: _propertyName,\n propertyValue,\n localStorageDir: propertyDef.localStorageDir,\n seedLocalId,\n seedUid,\n versionLocalId,\n versionUid,\n refValueType: 'file',\n refResolvedValue: `${propertyValue}${propertyDef.filenameSuffix}`,\n modelType: seedUidToModelType.get(seedUid),\n createdAt: Date.now(),\n updatedAt: Date.now(),\n })\n }\n}\n\ntype SaveEasPropertiesToDbParams = {\n itemProperties: Attestation[]\n itemSeeds: Attestation[]\n}\n\ntype SaveEasPropertiesToDb = (\n props: SaveEasPropertiesToDbParams,\n) => Promise<Record<string, unknown>>\n\nlet isSavingToDb = false\n\nconst saveEasPropertiesToDb: SaveEasPropertiesToDb = async ({\n itemProperties,\n itemSeeds,\n}) => {\n if (isSavingToDb) {\n return\n }\n isSavingToDb = true\n\n const propertyUids = itemProperties.map((property) => property.id)\n\n const models = getModels()\n\n const appDb = BaseDb.getAppDb()\n\n const existingMetadataRecordsRows: MetadataType[] = await appDb\n .select()\n .from(metadata)\n .where(inArray(metadata.uid, propertyUids))\n\n const existingPropertyRecordsUids = new Set<string>()\n\n if (existingMetadataRecordsRows && existingMetadataRecordsRows.length > 0) {\n for (const row of existingMetadataRecordsRows) {\n existingPropertyRecordsUids.add(row.uid)\n propertyUidToLocalId.set(row.uid, row.localId)\n }\n }\n\n const newProperties = itemProperties.filter(\n (property) => !existingPropertyRecordsUids.has(property.id),\n )\n\n if (newProperties.length === 0) {\n return { propertyUidToLocalId, propertyUids }\n }\n\n let insertPropertiesQuery = `INSERT INTO metadata (local_id, uid, schema_uid, property_name, property_value,\n eas_data_type, version_uid, version_local_id, seed_uid,\n seed_local_id, model_type, ref_value_type, ref_seed_type,\n ref_schema_uid,\n created_at, attestation_created_at, attestation_raw,\n local_storage_dir, ref_resolved_value)\n VALUES `\n\n for (let i = 0; i < newProperties.length; i++) {\n const property = newProperties[i]\n const propertyLocalId = generateId()\n const metadata = JSON.parse(property.decodedDataJson)[0].value\n\n let propertyNameSnake = metadata.name\n\n if (!propertyNameSnake) {\n console.warn(\n '[item/events] [syncDbWithEas] no propertyName found for property: ',\n property,\n )\n continue\n }\n\n let isRelation = false\n let refValueType\n let refSeedType\n let refSchemaUid\n let refResolvedValue\n let isList = false\n const schemaUid = property.schemaId\n\n setSchemaUidForSchemaDefinition({\n text: propertyNameSnake,\n schemaUid,\n })\n\n if (\n (propertyNameSnake.endsWith('_id') ||\n propertyNameSnake.endsWith('_ids')) &&\n propertyNameSnake !== 'storage_transaction_id' &&\n propertyNameSnake !== 'storage_provider_transaction_id'\n ) {\n isRelation = true\n\n if (Array.isArray(metadata.value)) {\n isList = true\n refValueType = 'list'\n\n const result = parseEasRelationPropertyName(propertyNameSnake)\n\n if (result) {\n propertyNameSnake = result.propertyName\n refSeedType = result.modelName\n }\n\n metadata.value.forEach((value) => {\n relatedSeedUids.add(value)\n })\n }\n\n if (!isList) {\n if (relationValuesToExclude.includes(metadata.value)) {\n continue\n }\n relatedSeedUids.add(metadata.value)\n }\n }\n\n let propertyValue = metadata.value\n\n if (typeof propertyValue !== 'string') {\n propertyValue = JSON.stringify(propertyValue)\n }\n\n if (isRelation && !isList) {\n const relatedSeed = itemSeeds.find(\n (seed: Attestation) => seed.id === metadata.value,\n )\n if (relatedSeed && relatedSeed.schema && relatedSeed.schema.schemaNames) {\n refSeedType = relatedSeed.schema.schemaNames[0].name\n refSchemaUid = relatedSeed.schemaId\n }\n }\n\n if (isRelation && isList) {\n const relatedSeeds = itemSeeds.filter((seed: Attestation) =>\n metadata.value.includes(seed.id),\n )\n if (relatedSeeds && relatedSeeds.length > 0) {\n refSeedType = relatedSeeds[0].schema.schemaNames[0].name\n refSchemaUid = relatedSeeds[0].schemaId\n }\n }\n\n const propertyName = camelCase(propertyNameSnake)\n propertyValue = escapeSqliteString(propertyValue)\n const easDataType = metadata.type\n const versionUid = property.refUID\n const versionLocalId = versionUidToLocalId.get(versionUid)\n const attestationCreatedAt = property.timeCreated * 1000\n const attestationRaw = escapeSqliteString(JSON.stringify(property))\n const seedUid = versionUidToSeedUid.get(versionUid)\n const seedLocalId = seedUidToLocalId.get(seedUid!)\n const modelType = seedUidToModelType.get(seedUid!)\n\n let localStorageDir\n const modelName = startCase(modelType)\n const ModelClass = models[modelName]\n const modelSchema = ModelClass.schema\n\n if (propertyNameSnake === 'storage_transaction_id') {\n await createMetadataRecordsForStorageTransactionId(property, modelSchema)\n }\n\n const valuesString = `('${propertyLocalId}', '${property.id}', \n '${property.schemaId}', '${propertyName}', \n '${propertyValue}', '${easDataType}', '${versionUid}', \n '${versionLocalId}', '${seedUid}', '${seedLocalId}', \n '${modelType}', ${refValueType ? `'${refValueType}'` : 'NULL'}, \n ${refSeedType ? `'${refSeedType}'` : 'NULL'},\n ${refSchemaUid ? `'${refSchemaUid}'` : 'NULL'},\n ${Date.now()}, ${attestationCreatedAt}, '${attestationRaw}',\n ${localStorageDir ? `'${localStorageDir}'` : 'NULL'},\n ${refResolvedValue ? `'${refResolvedValue}'` : 'NULL'})`\n\n if (i < newProperties.length - 1) {\n insertPropertiesQuery += valuesString + ', '\n }\n\n if (i === newProperties.length - 1) {\n insertPropertiesQuery += valuesString + ';'\n }\n\n propertyUidToLocalId.set(property.id, propertyLocalId)\n }\n\n if (insertPropertiesQuery.endsWith('VALUES ')) {\n return { propertyUids }\n }\n\n if (insertPropertiesQuery.endsWith(', ')) {\n insertPropertiesQuery = insertPropertiesQuery.slice(0, -2) + ';'\n }\n\n await appDb.run(sql.raw(insertPropertiesQuery))\n\n isSavingToDb = false\n\n return { propertyUids }\n}\n\nconst getRelatedSeedsAndVersions = async () => {\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n const { itemSeeds } = await easClient.request(GET_SEEDS, {\n where: {\n id: {\n in: Array.from(relatedSeedUids),\n },\n },\n })\n\n await saveEasSeedsToDb({ itemSeeds })\n\n const { itemVersions } = await easClient.request(GET_VERSIONS, {\n where: {\n refUID: {\n in: Array.from(relatedSeedUids),\n },\n },\n })\n\n await saveEasVersionsToDb({ itemVersions })\n\n const relatedVersionUids = itemVersions.map((v) => v.id)\n\n const { itemProperties } = await easClient.request(GET_PROPERTIES, {\n where: {\n refUID: {\n in: relatedVersionUids,\n },\n },\n })\n\n await saveEasPropertiesToDb({\n itemProperties,\n itemSeeds,\n })\n}\n\nconst syncDbWithEasHandler: DebouncedFunc<any> = throttle(\n async (_) => {\n const appDb = BaseDb.getAppDb()\n\n const { modelSchemas, schemaStringToModelRecord } = await getModelSchemas()\n\n if (\n !modelSchemas ||\n !modelSchemas.schemas ||\n modelSchemas.schemas.length === 0\n ) {\n throw new Error(`No schemas found for models`)\n }\n\n const schemaUids: string[] = []\n\n for (const modelSchema of modelSchemas.schemas) {\n const foundModel = schemaStringToModelRecord.get(modelSchema.schema)\n\n if (!foundModel) {\n throw new Error(`Model not found for schema ${modelSchema.schema}`)\n }\n\n schemaUids.push(modelSchema.id)\n\n await appDb\n .insert(modelUids)\n .values({\n modelId: foundModel.id,\n uid: modelSchema.id,\n })\n .onConflictDoNothing()\n\n }\n\n const addresses = await getAddressesFromDb()\n\n const itemSeeds = await getSeedsFromSchemaUids({\n schemaUids: schemaUids,\n addresses,\n })\n\n // const seedDbRecords = new Map<string, Record<string, unknown>>()\n\n const { seedUids } = await saveEasSeedsToDb({\n itemSeeds,\n })\n\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n const { itemVersions } = await queryClient.fetchQuery({\n queryKey: [`getVersionsForAllModels`],\n queryFn: async () =>\n easClient.request(GET_VERSIONS, {\n where: {\n refUID: {\n in: seedUids,\n },\n },\n }),\n })\n\n const { versionUids } = await saveEasVersionsToDb({\n itemVersions,\n })\n\n const { itemProperties } = await queryClient.fetchQuery({\n queryKey: [`getPropertiesForAllModels`],\n queryFn: async () =>\n easClient.request(GET_PROPERTIES, {\n where: {\n refUID: {\n in: versionUids,\n },\n },\n }),\n })\n\n const { propertyUids } = saveEasPropertiesToDb({\n itemProperties,\n itemSeeds,\n })\n\n await getRelatedSeedsAndVersions()\n\n for (const modelName of getModelNames()) {\n eventEmitter.emit('item.requestAll', { modelName })\n }\n },\n 30000,\n {\n leading: true,\n trailing: false,\n },\n)\n\nexport { syncDbWithEasHandler }\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"syncDbWithEas.js","sources":["../../../../../src/events/item/syncDbWithEas.ts"],"sourcesContent":["import { camelCase, DebouncedFunc, startCase, throttle } from 'lodash-es'\nimport { Attestation, SchemaWhereInput } from '@/graphql/gql/graphql'\nimport {\n metadata,\n MetadataType,\n modelUids,\n seeds,\n SeedType,\n versions,\n} from '@/seedSchema'\nimport { and, eq, inArray, sql } from 'drizzle-orm'\nimport {\n generateId,\n parseEasRelationPropertyName,\n} from '@/helpers'\nimport {\n GET_PROPERTIES,\n GET_SEEDS,\n GET_VERSIONS,\n} from '@/Item/queries'\nimport { escapeSqliteString, getAddressesFromDb } from '@/helpers/db'\nimport { eventEmitter } from '@/eventBus'\nimport { getModelNames, getModels } from '@/stores/modelClass'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { getModelSchemas } from '@/db/read/getModelSchemas'\nimport { ModelSchema, PropertyType } from '@/types'\nimport { createSeeds } from '@/db/write/createSeeds'\nimport { setSchemaUidForSchemaDefinition } from '@/stores/eas'\nimport { BaseEasClient } from '@/helpers/EasClient/BaseEasClient'\nimport { BaseQueryClient } from '@/helpers/QueryClient/BaseQueryClient'\nimport { getItemPropertiesFromEas, getItemVersionsFromEas, getModelSchemasFromEas } from '@/browser/helpers/eas'\n\n\nconst relationValuesToExclude = [\n '0x0000000000000000000000000000000000000000000000000000000000000020',\n]\n\n\nconst getSeedsFromSchemaUids = async ({ schemaUids, addresses }) => {\n const AND = [\n {\n OR: [] as Record<string, unknown>[],\n },\n ]\n\n for (const schemaUid of schemaUids) {\n AND[0].OR.push({\n decodedDataJson: {\n contains: schemaUid,\n },\n })\n }\n\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n const { itemSeeds } = await queryClient.fetchQuery({\n queryKey: [`getSeedsForAllModels`],\n queryFn: async () =>\n easClient.request(GET_SEEDS, {\n where: {\n attester: {\n in: addresses,\n },\n schemaId: {\n in: schemaUids,\n },\n AND,\n },\n }),\n })\n\n return itemSeeds\n}\n\nconst seedUidToLocalId = new Map<string, string>()\nconst seedUidToModelType = new Map<string, string>()\nconst relatedSeedUids = new Set<string>()\n\nconst versionUidToLocalId = new Map<string, string>()\nconst versionUidToSeedUid = new Map<string, string>()\n\nconst propertyUidToLocalId = new Map<string, string>()\n\ntype SaveEasSeedsToDbProps = {\n itemSeeds: Attestation[]\n}\n\ntype SaveEasSeedsToDbReturn = {\n seedUids: string[]\n}\n\ntype SaveEasSeedsToDb = (\n props: SaveEasSeedsToDbProps,\n) => Promise<SaveEasSeedsToDbReturn>\n\nconst saveEasSeedsToDb: SaveEasSeedsToDb = async ({ itemSeeds }) => {\n const appDb = BaseDb.getAppDb()\n\n const seedUids = itemSeeds.map((seed) => seed.id)\n\n const existingSeedRecordsRows: SeedType[] = await appDb\n .select()\n .from(seeds)\n .where(inArray(seeds.uid, seedUids))\n\n const existingSeedUids = new Set<string>()\n\n if (existingSeedRecordsRows && existingSeedRecordsRows.length > 0) {\n for (const row of existingSeedRecordsRows) {\n existingSeedUids.add(row.uid)\n seedUidToLocalId.set(row.uid, row.localId)\n seedUidToModelType.set(row.uid, row.type)\n }\n }\n\n const newSeeds = itemSeeds.filter((seed) => !existingSeedUids.has(seed.id))\n\n if (newSeeds.length === 0) {\n return { seedUidToLocalId, seedUids }\n }\n\n const newSeedsData: Partial<SeedType>[] = []\n\n for (let i = 0; i < newSeeds.length; i++) {\n const seed = newSeeds[i]\n seedUidToModelType.set(seed.id, seed.schema.schemaNames[0].name)\n const seedLocalId = generateId()\n seedUidToLocalId.set(seed.id, seedLocalId)\n\n const attestationRaw = escapeSqliteString(JSON.stringify(seed))\n\n newSeedsData.push({\n localId: seedLocalId,\n uid: seed.id,\n schemaUid: seed.schemaId,\n type: seed.schema.schemaNames[0].name,\n createdAt: Date.now(),\n attestationCreatedAt: seed.timeCreated * 1000,\n attestationRaw,\n })\n\n seedUidToLocalId.set(seed.id, seedLocalId)\n }\n\n const newSeedUids = await createSeeds(newSeedsData)\n\n return { seedUids: newSeedUids }\n}\n\ntype SaveEasVersionsToDbParams = {\n itemVersions: Attestation[]\n}\n\ntype SaveEasVersionsToDb = (\n props: SaveEasVersionsToDbParams,\n) => Promise<SaveEasVersionsToDbReturn>\n\ntype SaveEasVersionsToDbReturn = {\n versionUids: string[]\n}\n\nconst saveEasVersionsToDb: SaveEasVersionsToDb = async ({ itemVersions }) => {\n const versionUids = itemVersions.map((version) => version.id)\n\n const appDb = BaseDb.getAppDb()\n\n const existingVersionRecordsRows: MetadataType[] = await appDb\n .select()\n .from(versions)\n .where(inArray(versions.uid, versionUids))\n\n const existingVersionUids = new Set<string>()\n\n if (existingVersionRecordsRows && existingVersionRecordsRows.length > 0) {\n for (const row of existingVersionRecordsRows) {\n existingVersionUids.add(row.uid)\n versionUidToLocalId.set(row.uid, row.localId)\n versionUidToSeedUid.set(row.uid, row.seedUid)\n }\n }\n\n const newVersions = itemVersions.filter(\n (version) => !existingVersionUids.has(version.id),\n )\n\n if (newVersions.length === 0) {\n return { versionUidToLocalId, versionUids }\n }\n\n let insertVersionsQuery = `INSERT INTO versions (local_id, uid, seed_uid, seed_local_id, seed_type, created_at,\n attestation_created_at,\n attestation_raw)\n VALUES `\n\n for (let i = 0; i < newVersions.length; i++) {\n const version = newVersions[i]\n versionUidToSeedUid.set(version.id, version.refUID)\n const versionLocalId = generateId()\n versionUidToLocalId.set(version.id, versionLocalId)\n\n const seedUid = versionUidToSeedUid.get(version.id)\n const seedLocalId = seedUidToLocalId.get(seedUid!)\n const seedType = seedUidToModelType.get(seedUid!)\n const attestationRaw = escapeSqliteString(JSON.stringify(version))\n\n const valuesString = `('${versionLocalId}', '${version.id}', '${seedUid}', '${seedLocalId}', '${seedType}', ${Date.now()}, ${version.timeCreated * 1000}, '${attestationRaw}')`\n\n if (i < newVersions.length - 1) {\n insertVersionsQuery += valuesString + ', '\n }\n\n if (i === newVersions.length - 1) {\n insertVersionsQuery += valuesString + ';'\n }\n\n versionUidToLocalId.set(version.id, versionLocalId)\n }\n\n await appDb.run(sql.raw(insertVersionsQuery))\n\n return { versionUids }\n}\n\nconst createMetadataRecordsForStorageTransactionId = async (\n storageTransactionIdProperty: Attestation,\n modelSchema: ModelSchema,\n) => {\n const attestationData = JSON.parse(\n storageTransactionIdProperty.decodedDataJson,\n )[0].value\n const propertyName = camelCase(attestationData.name)\n const propertyValue = attestationData.value\n\n const itemStorageProperties = new Map<string, PropertyType>()\n\n for (const [_propertyName, propertyDef] of Object.entries(modelSchema)) {\n if (propertyDef?.storageType && propertyDef.storageType === 'ItemStorage') {\n itemStorageProperties.set(_propertyName, propertyDef)\n }\n }\n\n if (itemStorageProperties.size === 0) {\n return\n }\n\n const appDb = BaseDb.getAppDb()\n\n for (const [_propertyName, propertyDef] of itemStorageProperties.entries()) {\n const existingMetadataRecordRows = await appDb\n .select()\n .from(metadata)\n .where(\n and(\n eq(metadata.propertyName, _propertyName),\n eq(metadata.propertyValue, propertyValue),\n eq(metadata.versionUid, storageTransactionIdProperty.refUID),\n ),\n )\n\n if (existingMetadataRecordRows && existingMetadataRecordRows.length > 0) {\n continue\n }\n\n const seedUid = versionUidToSeedUid.get(\n storageTransactionIdProperty.refUID,\n ) as string\n const seedLocalId = seedUidToLocalId.get(seedUid)\n const versionUid = storageTransactionIdProperty.refUID\n const versionLocalId = versionUidToLocalId.get(versionUid)\n\n const propertyLocalId = generateId()\n await appDb.insert(metadata).values({\n localId: propertyLocalId,\n propertyName: _propertyName,\n propertyValue,\n localStorageDir: propertyDef.localStorageDir,\n seedLocalId,\n seedUid,\n versionLocalId,\n versionUid,\n refValueType: 'file',\n refResolvedValue: `${propertyValue}${propertyDef.filenameSuffix}`,\n modelType: seedUidToModelType.get(seedUid),\n createdAt: Date.now(),\n updatedAt: Date.now(),\n })\n }\n}\n\ntype SaveEasPropertiesToDbParams = {\n itemProperties: Attestation[]\n itemSeeds: Attestation[]\n}\n\ntype SaveEasPropertiesToDb = (\n props: SaveEasPropertiesToDbParams,\n) => Promise<Record<string, unknown>>\n\nlet isSavingToDb = false\n\nconst saveEasPropertiesToDb: SaveEasPropertiesToDb = async ({\n itemProperties,\n itemSeeds,\n}) => {\n if (isSavingToDb) {\n return\n }\n isSavingToDb = true\n\n const propertyUids = itemProperties.map((property) => property.id)\n\n const models = getModels()\n\n const appDb = BaseDb.getAppDb()\n\n const existingMetadataRecordsRows: MetadataType[] = await appDb\n .select()\n .from(metadata)\n .where(inArray(metadata.uid, propertyUids))\n\n const existingPropertyRecordsUids = new Set<string>()\n\n if (existingMetadataRecordsRows && existingMetadataRecordsRows.length > 0) {\n for (const row of existingMetadataRecordsRows) {\n existingPropertyRecordsUids.add(row.uid)\n propertyUidToLocalId.set(row.uid, row.localId)\n }\n }\n\n const newProperties = itemProperties.filter(\n (property) => !existingPropertyRecordsUids.has(property.id),\n )\n\n if (newProperties.length === 0) {\n return { propertyUidToLocalId, propertyUids }\n }\n\n let insertPropertiesQuery = `INSERT INTO metadata (local_id, uid, schema_uid, property_name, property_value,\n eas_data_type, version_uid, version_local_id, seed_uid,\n seed_local_id, model_type, ref_value_type, ref_seed_type,\n ref_schema_uid,\n created_at, attestation_created_at, attestation_raw,\n local_storage_dir, ref_resolved_value)\n VALUES `\n\n for (let i = 0; i < newProperties.length; i++) {\n const property = newProperties[i]\n const propertyLocalId = generateId()\n const metadata = JSON.parse(property.decodedDataJson)[0].value\n\n let propertyNameSnake = metadata.name\n\n if (!propertyNameSnake) {\n console.warn(\n '[item/events] [syncDbWithEas] no propertyName found for property: ',\n property,\n )\n continue\n }\n\n let isRelation = false\n let refValueType\n let refSeedType\n let refSchemaUid\n let refResolvedValue\n let isList = false\n const schemaUid = property.schemaId\n\n setSchemaUidForSchemaDefinition({\n text: propertyNameSnake,\n schemaUid,\n })\n\n if (\n (propertyNameSnake.endsWith('_id') ||\n propertyNameSnake.endsWith('_ids')) &&\n propertyNameSnake !== 'storage_transaction_id' &&\n propertyNameSnake !== 'storage_provider_transaction_id'\n ) {\n isRelation = true\n\n if (Array.isArray(metadata.value)) {\n isList = true\n refValueType = 'list'\n\n const result = parseEasRelationPropertyName(propertyNameSnake)\n\n if (result) {\n propertyNameSnake = result.propertyName\n refSeedType = result.modelName\n }\n\n metadata.value.forEach((value) => {\n relatedSeedUids.add(value)\n })\n }\n\n if (!isList) {\n if (relationValuesToExclude.includes(metadata.value)) {\n continue\n }\n relatedSeedUids.add(metadata.value)\n }\n }\n\n let propertyValue = metadata.value\n\n if (typeof propertyValue !== 'string') {\n propertyValue = JSON.stringify(propertyValue)\n }\n\n if (isRelation && !isList) {\n const relatedSeed = itemSeeds.find(\n (seed: Attestation) => seed.id === metadata.value,\n )\n if (relatedSeed && relatedSeed.schema && relatedSeed.schema.schemaNames) {\n refSeedType = relatedSeed.schema.schemaNames[0].name\n refSchemaUid = relatedSeed.schemaId\n }\n }\n\n if (isRelation && isList) {\n const relatedSeeds = itemSeeds.filter((seed: Attestation) =>\n metadata.value.includes(seed.id),\n )\n if (relatedSeeds && relatedSeeds.length > 0) {\n refSeedType = relatedSeeds[0].schema.schemaNames[0].name\n refSchemaUid = relatedSeeds[0].schemaId\n }\n }\n\n const propertyName = camelCase(propertyNameSnake)\n propertyValue = escapeSqliteString(propertyValue)\n const easDataType = metadata.type\n const versionUid = property.refUID\n const versionLocalId = versionUidToLocalId.get(versionUid)\n const attestationCreatedAt = property.timeCreated * 1000\n const attestationRaw = escapeSqliteString(JSON.stringify(property))\n const seedUid = versionUidToSeedUid.get(versionUid)\n const seedLocalId = seedUidToLocalId.get(seedUid!)\n const modelType = seedUidToModelType.get(seedUid!)\n\n let localStorageDir\n const modelName = startCase(modelType)\n const ModelClass = models[modelName]\n const modelSchema = ModelClass.schema\n\n if (propertyNameSnake === 'storage_transaction_id') {\n await createMetadataRecordsForStorageTransactionId(property, modelSchema)\n }\n\n const valuesString = `('${propertyLocalId}', '${property.id}', \n '${property.schemaId}', '${propertyName}', \n '${propertyValue}', '${easDataType}', '${versionUid}', \n '${versionLocalId}', '${seedUid}', '${seedLocalId}', \n '${modelType}', ${refValueType ? `'${refValueType}'` : 'NULL'}, \n ${refSeedType ? `'${refSeedType}'` : 'NULL'},\n ${refSchemaUid ? `'${refSchemaUid}'` : 'NULL'},\n ${Date.now()}, ${attestationCreatedAt}, '${attestationRaw}',\n ${localStorageDir ? `'${localStorageDir}'` : 'NULL'},\n ${refResolvedValue ? `'${refResolvedValue}'` : 'NULL'})`\n\n if (i < newProperties.length - 1) {\n insertPropertiesQuery += valuesString + ', '\n }\n\n if (i === newProperties.length - 1) {\n insertPropertiesQuery += valuesString + ';'\n }\n\n propertyUidToLocalId.set(property.id, propertyLocalId)\n }\n\n if (insertPropertiesQuery.endsWith('VALUES ')) {\n return { propertyUids }\n }\n\n if (insertPropertiesQuery.endsWith(', ')) {\n insertPropertiesQuery = insertPropertiesQuery.slice(0, -2) + ';'\n }\n\n await appDb.run(sql.raw(insertPropertiesQuery))\n\n isSavingToDb = false\n\n return { propertyUids }\n}\n\nconst getRelatedSeedsAndVersions = async () => {\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n const { itemSeeds } = await easClient.request(GET_SEEDS, {\n where: {\n id: {\n in: Array.from(relatedSeedUids),\n },\n },\n })\n\n await saveEasSeedsToDb({ itemSeeds })\n\n const { itemVersions } = await easClient.request(GET_VERSIONS, {\n where: {\n refUID: {\n in: Array.from(relatedSeedUids),\n },\n },\n })\n\n await saveEasVersionsToDb({ itemVersions })\n\n const relatedVersionUids = itemVersions.map((v) => v.id)\n\n const { itemProperties } = await easClient.request(GET_PROPERTIES, {\n where: {\n refUID: {\n in: relatedVersionUids,\n },\n },\n })\n\n await saveEasPropertiesToDb({\n itemProperties,\n itemSeeds,\n })\n}\n\nconst syncDbWithEasHandler: DebouncedFunc<any> = throttle(\n async (_) => {\n const appDb = BaseDb.getAppDb()\n\n const { schemaStringToModelRecord } = await getModelSchemas()\n\n const modelSchemas = await getModelSchemasFromEas()\n\n const schemaUids: string[] = []\n\n for (const modelSchema of modelSchemas) {\n const foundModel = schemaStringToModelRecord.get(modelSchema.schema)\n\n if (!foundModel) {\n throw new Error(`Model not found for schema ${modelSchema.schema}`)\n }\n\n schemaUids.push(modelSchema.id)\n\n await appDb\n .insert(modelUids)\n .values({\n modelId: foundModel.id,\n uid: modelSchema.id,\n })\n .onConflictDoNothing()\n\n }\n\n const addresses = await getAddressesFromDb()\n\n const itemSeeds = await getSeedsFromSchemaUids({\n schemaUids: schemaUids,\n addresses,\n })\n\n // const seedDbRecords = new Map<string, Record<string, unknown>>()\n\n const { seedUids } = await saveEasSeedsToDb({\n itemSeeds,\n })\n\n const itemVersions = await getItemVersionsFromEas({\n seedUids\n })\n\n const { versionUids } = await saveEasVersionsToDb({\n itemVersions,\n })\n\n const itemProperties = await getItemPropertiesFromEas({\n versionUids,\n })\n\n const { propertyUids } = saveEasPropertiesToDb({\n itemProperties,\n itemSeeds,\n })\n\n await getRelatedSeedsAndVersions()\n\n for (const modelName of getModelNames()) {\n eventEmitter.emit('item.requestAll', { modelName })\n }\n },\n 30000,\n {\n leading: true,\n trailing: false,\n },\n)\n\nexport { syncDbWithEasHandler }\n"],"names":[],"mappings":"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"}
|
|
@@ -17,7 +17,7 @@ export declare const INTERNAL_DATA_TYPES: {
|
|
|
17
17
|
List: {
|
|
18
18
|
eas: string;
|
|
19
19
|
};
|
|
20
|
-
|
|
20
|
+
File: {
|
|
21
21
|
eas: string;
|
|
22
22
|
};
|
|
23
23
|
Json: {
|
|
@@ -27,7 +27,7 @@ export declare const INTERNAL_DATA_TYPES: {
|
|
|
27
27
|
eas: string;
|
|
28
28
|
};
|
|
29
29
|
};
|
|
30
|
-
export declare const
|
|
30
|
+
export declare const INTERNAL_PROPERTY_NAMES: string[];
|
|
31
31
|
export declare const VERSION_SCHEMA_UID_OPTIMISM_SEPOLIA = "0x13c0fd59d69dbce40501a41f8b37768d26dd2e2bb0cad64615334d84f7b9bdf6";
|
|
32
32
|
export declare const defaultAttestationData: AttestationRequestData;
|
|
33
33
|
export declare enum ImageSize {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/helpers/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EAIvB,MAAM,uCAAuC,CAAA;AAG9C,eAAO,MAAM,UAAU,eAAe,CAAA;AACtC,eAAO,MAAM,SAAS,cAAc,CAAA;AAEpC,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;CAyB/B,CAAA;AAED,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/helpers/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EAIvB,MAAM,uCAAuC,CAAA;AAG9C,eAAO,MAAM,UAAU,eAAe,CAAA;AACtC,eAAO,MAAM,SAAS,cAAc,CAAA;AAEpC,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;CAyB/B,CAAA;AAED,eAAO,MAAM,uBAAuB,UA6BnC,CAAA;AAED,eAAO,MAAM,mCAAmC,uEACsB,CAAA;AAEtE,eAAO,MAAM,sBAAsB,EAAE,sBAOpC,CAAA;AAED,oBAAY,SAAS;IACnB,WAAW,MAAM;IACjB,KAAK,MAAM;IACX,MAAM,OAAO;IACb,KAAK,OAAO;IACZ,WAAW,OAAO;CACnB;AAED,eAAO,MAAM,sBAAsB,gEAAgE,CAAA;AAEnG,eAAO,MAAM,2BAA2B,iDAAiD,CAAA"}
|
|
@@ -18,7 +18,7 @@ const INTERNAL_DATA_TYPES = {
|
|
|
18
18
|
List: {
|
|
19
19
|
eas: 'bytes32[]',
|
|
20
20
|
},
|
|
21
|
-
|
|
21
|
+
File: {
|
|
22
22
|
eas: 'string',
|
|
23
23
|
},
|
|
24
24
|
Json: {
|
|
@@ -28,27 +28,35 @@ const INTERNAL_DATA_TYPES = {
|
|
|
28
28
|
eas: 'bytes32',
|
|
29
29
|
},
|
|
30
30
|
};
|
|
31
|
-
const
|
|
31
|
+
const INTERNAL_PROPERTY_NAMES = [
|
|
32
32
|
'localId',
|
|
33
33
|
'uid',
|
|
34
34
|
'seedLocalId',
|
|
35
35
|
'seedUid',
|
|
36
36
|
'schemaUid',
|
|
37
37
|
'attestationCreatedAt',
|
|
38
|
+
'attestationRaw',
|
|
38
39
|
'createdAt',
|
|
39
40
|
'updatedAt',
|
|
40
|
-
'versionsCount',
|
|
41
41
|
'lastVersionPublishedAt',
|
|
42
42
|
'latestVersionLocalId',
|
|
43
|
-
'
|
|
43
|
+
'latestVersionUid',
|
|
44
44
|
'lastLocalUpdateAt',
|
|
45
|
+
'modelName',
|
|
45
46
|
'storageTransactionId',
|
|
46
|
-
'versionUid',
|
|
47
47
|
'refSeedType',
|
|
48
48
|
'refValueType',
|
|
49
49
|
'refResolvedValue',
|
|
50
50
|
'refResolvedDisplayValue',
|
|
51
51
|
'type',
|
|
52
|
+
// Image
|
|
53
|
+
'src',
|
|
54
|
+
'alt',
|
|
55
|
+
//
|
|
56
|
+
'versionLocalId',
|
|
57
|
+
'versionsCount',
|
|
58
|
+
'versionUid',
|
|
59
|
+
'_markedForDeletion',
|
|
52
60
|
];
|
|
53
61
|
const VERSION_SCHEMA_UID_OPTIMISM_SEPOLIA = '0x13c0fd59d69dbce40501a41f8b37768d26dd2e2bb0cad64615334d84f7b9bdf6';
|
|
54
62
|
const defaultAttestationData = {
|
|
@@ -70,5 +78,5 @@ var ImageSize;
|
|
|
70
78
|
const CLIENT_NOT_INITIALIZED = 'ClientManager is not initialized. Please call init() first.';
|
|
71
79
|
const INIT_SCRIPT_SUCCESS_MESSAGE = '[Seed Protocol] Finished running init script';
|
|
72
80
|
|
|
73
|
-
export { CLIENT_NOT_INITIALIZED, INIT_SCRIPT_SUCCESS_MESSAGE, INTERNAL_DATA_TYPES, ImageSize, SCHEMA_NJK, SCHEMA_TS, VERSION_SCHEMA_UID_OPTIMISM_SEPOLIA, defaultAttestationData
|
|
81
|
+
export { CLIENT_NOT_INITIALIZED, INIT_SCRIPT_SUCCESS_MESSAGE, INTERNAL_DATA_TYPES, INTERNAL_PROPERTY_NAMES, ImageSize, SCHEMA_NJK, SCHEMA_TS, VERSION_SCHEMA_UID_OPTIMISM_SEPOLIA, defaultAttestationData };
|
|
74
82
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sources":["../../../../src/helpers/constants.ts"],"sourcesContent":["import {\n AttestationRequestData,\n ZERO_BYTES,\n ZERO_BYTES32,\n ZERO_ADDRESS,\n} from '@ethereum-attestation-service/eas-sdk'\n\n\nexport const SCHEMA_NJK = 'schema.njk'\nexport const SCHEMA_TS = 'schema.ts'\n\nexport const INTERNAL_DATA_TYPES = {\n Text: {\n eas: 'string',\n },\n Number: {\n eas: 'uint8',\n },\n Image: {\n eas: 'string',\n },\n Relation: {\n eas: 'bytes32',\n },\n List: {\n eas: 'bytes32[]',\n },\n
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../../../../src/helpers/constants.ts"],"sourcesContent":["import {\n AttestationRequestData,\n ZERO_BYTES,\n ZERO_BYTES32,\n ZERO_ADDRESS,\n} from '@ethereum-attestation-service/eas-sdk'\n\n\nexport const SCHEMA_NJK = 'schema.njk'\nexport const SCHEMA_TS = 'schema.ts'\n\nexport const INTERNAL_DATA_TYPES = {\n Text: {\n eas: 'string',\n },\n Number: {\n eas: 'uint8',\n },\n Image: {\n eas: 'string',\n },\n Relation: {\n eas: 'bytes32',\n },\n List: {\n eas: 'bytes32[]',\n },\n File: {\n eas: 'string',\n },\n Json: {\n eas: 'string',\n },\n Blob: {\n eas: 'bytes32',\n },\n}\n\nexport const INTERNAL_PROPERTY_NAMES = [\n 'localId',\n 'uid',\n 'seedLocalId',\n 'seedUid',\n 'schemaUid',\n 'attestationCreatedAt',\n 'attestationRaw',\n 'createdAt',\n 'updatedAt',\n 'lastVersionPublishedAt',\n 'latestVersionLocalId',\n 'latestVersionUid',\n 'lastLocalUpdateAt',\n 'modelName',\n 'storageTransactionId',\n 'refSeedType',\n 'refValueType',\n 'refResolvedValue',\n 'refResolvedDisplayValue',\n 'type',\n // Image\n 'src',\n 'alt',\n //\n 'versionLocalId',\n 'versionsCount',\n 'versionUid',\n '_markedForDeletion',\n]\n\nexport const VERSION_SCHEMA_UID_OPTIMISM_SEPOLIA =\n '0x13c0fd59d69dbce40501a41f8b37768d26dd2e2bb0cad64615334d84f7b9bdf6'\n\nexport const defaultAttestationData: AttestationRequestData = {\n recipient: ZERO_ADDRESS,\n revocable: true,\n value: BigInt(0),\n refUID: ZERO_BYTES32,\n expirationTime: BigInt(0),\n data: ZERO_BYTES,\n}\n\nexport enum ImageSize {\n EXTRA_SMALL = 480,\n SMALL = 760,\n MEDIUM = 1024,\n LARGE = 1440,\n EXTRA_LARGE = 1920,\n}\n\nexport const CLIENT_NOT_INITIALIZED = 'ClientManager is not initialized. Please call init() first.'\n\nexport const INIT_SCRIPT_SUCCESS_MESSAGE = '[Seed Protocol] Finished running init script'\n"],"names":[],"mappings":";;AAQO,MAAM,UAAU,GAAG;AACnB,MAAM,SAAS,GAAG;AAEZ,MAAA,mBAAmB,GAAG;AACjC,IAAA,IAAI,EAAE;AACJ,QAAA,GAAG,EAAE,QAAQ;AACd,KAAA;AACD,IAAA,MAAM,EAAE;AACN,QAAA,GAAG,EAAE,OAAO;AACb,KAAA;AACD,IAAA,KAAK,EAAE;AACL,QAAA,GAAG,EAAE,QAAQ;AACd,KAAA;AACD,IAAA,QAAQ,EAAE;AACR,QAAA,GAAG,EAAE,SAAS;AACf,KAAA;AACD,IAAA,IAAI,EAAE;AACJ,QAAA,GAAG,EAAE,WAAW;AACjB,KAAA;AACD,IAAA,IAAI,EAAE;AACJ,QAAA,GAAG,EAAE,QAAQ;AACd,KAAA;AACD,IAAA,IAAI,EAAE;AACJ,QAAA,GAAG,EAAE,QAAQ;AACd,KAAA;AACD,IAAA,IAAI,EAAE;AACJ,QAAA,GAAG,EAAE,SAAS;AACf,KAAA;;AAGU,MAAA,uBAAuB,GAAG;IACrC,SAAS;IACT,KAAK;IACL,aAAa;IACb,SAAS;IACT,WAAW;IACX,sBAAsB;IACtB,gBAAgB;IAChB,WAAW;IACX,WAAW;IACX,wBAAwB;IACxB,sBAAsB;IACtB,kBAAkB;IAClB,mBAAmB;IACnB,WAAW;IACX,sBAAsB;IACtB,aAAa;IACb,cAAc;IACd,kBAAkB;IAClB,yBAAyB;IACzB,MAAM;;IAEN,KAAK;IACL,KAAK;;IAEL,gBAAgB;IAChB,eAAe;IACf,YAAY;IACZ,oBAAoB;;AAGf,MAAM,mCAAmC,GAC9C;AAEW,MAAA,sBAAsB,GAA2B;AAC5D,IAAA,SAAS,EAAE,YAAY;AACvB,IAAA,SAAS,EAAE,IAAI;AACf,IAAA,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AAChB,IAAA,MAAM,EAAE,YAAY;AACpB,IAAA,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;AACzB,IAAA,IAAI,EAAE,UAAU;;IAGN;AAAZ,CAAA,UAAY,SAAS,EAAA;AACnB,IAAA,SAAA,CAAA,SAAA,CAAA,aAAA,CAAA,GAAA,GAAA,CAAA,GAAA,aAAiB;AACjB,IAAA,SAAA,CAAA,SAAA,CAAA,OAAA,CAAA,GAAA,GAAA,CAAA,GAAA,OAAW;AACX,IAAA,SAAA,CAAA,SAAA,CAAA,QAAA,CAAA,GAAA,IAAA,CAAA,GAAA,QAAa;AACb,IAAA,SAAA,CAAA,SAAA,CAAA,OAAA,CAAA,GAAA,IAAA,CAAA,GAAA,OAAY;AACZ,IAAA,SAAA,CAAA,SAAA,CAAA,aAAA,CAAA,GAAA,IAAA,CAAA,GAAA,aAAkB;AACpB,CAAC,EANW,SAAS,KAAT,SAAS,GAMpB,EAAA,CAAA,CAAA;AAEM,MAAM,sBAAsB,GAAG;AAE/B,MAAM,2BAA2B,GAAG;;;;"}
|
|
@@ -5,5 +5,6 @@ export declare const getSegmentedItemProperties: (item: IItem<any>) => {
|
|
|
5
5
|
itemRelationProperties: import("@/interfaces").IItemProperty<any>[];
|
|
6
6
|
itemListProperties: import("@/interfaces").IItemProperty<any>[];
|
|
7
7
|
itemUploadProperties: UploadProperty[];
|
|
8
|
+
itemImageProperties: import("@/interfaces").IItemProperty<any>[];
|
|
8
9
|
};
|
|
9
10
|
//# sourceMappingURL=getSegmentedItemProperties.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getSegmentedItemProperties.d.ts","sourceRoot":"","sources":["../../../src/helpers/getSegmentedItemProperties.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAEpC,eAAO,MAAM,0BAA0B,SAAU,KAAK,CAAC,GAAG,CAAC
|
|
1
|
+
{"version":3,"file":"getSegmentedItemProperties.d.ts","sourceRoot":"","sources":["../../../src/helpers/getSegmentedItemProperties.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAEpC,eAAO,MAAM,0BAA0B,SAAU,KAAK,CAAC,GAAG,CAAC;;;;;;CAiE1D,CAAA"}
|
|
@@ -3,6 +3,7 @@ const getSegmentedItemProperties = (item) => {
|
|
|
3
3
|
const itemRelationProperties = [];
|
|
4
4
|
const itemListProperties = [];
|
|
5
5
|
const itemUploadProperties = [];
|
|
6
|
+
const itemImageProperties = [];
|
|
6
7
|
const itemStorageProperties = [];
|
|
7
8
|
let itemStorageTransactionProperty;
|
|
8
9
|
for (const itemProperty of Object.values(item.properties)) {
|
|
@@ -11,9 +12,11 @@ const getSegmentedItemProperties = (item) => {
|
|
|
11
12
|
}
|
|
12
13
|
const isItemStorage = itemProperty.propertyDef.storageType &&
|
|
13
14
|
itemProperty.propertyDef.storageType === 'ItemStorage';
|
|
14
|
-
itemProperty.propertyDef.dataType === 'Relation' &&
|
|
15
|
-
itemProperty.propertyDef.refValueType === 'Image';
|
|
16
15
|
const isStorageTransaction = itemProperty.propertyName === 'storageTransactionId';
|
|
16
|
+
if (itemProperty.propertyDef.dataType === 'Image') {
|
|
17
|
+
itemImageProperties.push(itemProperty);
|
|
18
|
+
continue;
|
|
19
|
+
}
|
|
17
20
|
if (itemProperty.propertyDef.dataType === 'Relation') {
|
|
18
21
|
itemRelationProperties.push(itemProperty);
|
|
19
22
|
continue;
|
|
@@ -43,6 +46,7 @@ const getSegmentedItemProperties = (item) => {
|
|
|
43
46
|
itemRelationProperties,
|
|
44
47
|
itemListProperties,
|
|
45
48
|
itemUploadProperties,
|
|
49
|
+
itemImageProperties,
|
|
46
50
|
};
|
|
47
51
|
};
|
|
48
52
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getSegmentedItemProperties.js","sources":["../../../../src/helpers/getSegmentedItemProperties.ts"],"sourcesContent":["import { UploadProperty } from '@/db/read/getPublishUploads'\nimport { IItem } from '@/interfaces'\n\nexport const getSegmentedItemProperties = (item: IItem<any>) => {\n const itemBasicProperties = []\n const itemRelationProperties = []\n const itemListProperties = []\n const itemUploadProperties: UploadProperty[] = []\n const itemStorageProperties = []\n let itemStorageTransactionProperty: UploadProperty | undefined\n\n for (const itemProperty of Object.values(item.properties)) {\n if (!itemProperty.propertyDef) {\n continue\n }\n\n const isItemStorage =\n itemProperty.propertyDef.storageType &&\n itemProperty.propertyDef.storageType === 'ItemStorage'\n\n const
|
|
1
|
+
{"version":3,"file":"getSegmentedItemProperties.js","sources":["../../../../src/helpers/getSegmentedItemProperties.ts"],"sourcesContent":["import { UploadProperty } from '@/db/read/getPublishUploads'\nimport { IItem } from '@/interfaces'\n\nexport const getSegmentedItemProperties = (item: IItem<any>) => {\n const itemBasicProperties = []\n const itemRelationProperties = []\n const itemListProperties = []\n const itemUploadProperties: UploadProperty[] = []\n const itemImageProperties = []\n const itemStorageProperties = []\n let itemStorageTransactionProperty: UploadProperty | undefined\n\n for (const itemProperty of Object.values(item.properties)) {\n if (!itemProperty.propertyDef) {\n continue\n }\n\n const isItemStorage =\n itemProperty.propertyDef.storageType &&\n itemProperty.propertyDef.storageType === 'ItemStorage'\n\n\n const isStorageTransaction =\n itemProperty.propertyName === 'storageTransactionId'\n\n if (itemProperty.propertyDef.dataType === 'Image') {\n itemImageProperties.push(itemProperty)\n continue\n }\n\n if (itemProperty.propertyDef.dataType === 'Relation') {\n itemRelationProperties.push(itemProperty)\n continue\n }\n\n if (itemProperty.propertyDef.dataType === 'List') {\n itemListProperties.push(itemProperty)\n continue\n }\n\n if (isItemStorage) {\n itemStorageProperties.push(itemProperty)\n continue\n }\n\n if (isStorageTransaction) {\n itemStorageTransactionProperty = { itemProperty, childProperties: [] }\n continue\n }\n\n itemBasicProperties.push(itemProperty)\n }\n\n if (itemStorageTransactionProperty && itemStorageProperties.length > 0) {\n itemStorageTransactionProperty.childProperties = itemStorageProperties\n }\n\n if (itemStorageTransactionProperty) {\n itemUploadProperties.push(itemStorageTransactionProperty)\n }\n\n return {\n itemBasicProperties,\n itemRelationProperties,\n itemListProperties,\n itemUploadProperties,\n itemImageProperties,\n }\n}\n"],"names":[],"mappings":"AAGa,MAAA,0BAA0B,GAAG,CAAC,IAAgB,KAAI;IAC7D,MAAM,mBAAmB,GAAG,EAAE;IAC9B,MAAM,sBAAsB,GAAG,EAAE;IACjC,MAAM,kBAAkB,GAAG,EAAE;IAC7B,MAAM,oBAAoB,GAAqB,EAAE;IACjD,MAAM,mBAAmB,GAAG,EAAE;IAC9B,MAAM,qBAAqB,GAAG,EAAE;AAChC,IAAA,IAAI,8BAA0D;AAE9D,IAAA,KAAK,MAAM,YAAY,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACzD,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;YAC7B;;AAGF,QAAA,MAAM,aAAa,GACjB,YAAY,CAAC,WAAW,CAAC,WAAW;AACpC,YAAA,YAAY,CAAC,WAAW,CAAC,WAAW,KAAK,aAAa;AAGxD,QAAA,MAAM,oBAAoB,GACxB,YAAY,CAAC,YAAY,KAAK,sBAAsB;QAEtD,IAAI,YAAY,CAAC,WAAW,CAAC,QAAQ,KAAK,OAAO,EAAE;AACjD,YAAA,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC;YACtC;;QAGF,IAAI,YAAY,CAAC,WAAW,CAAC,QAAQ,KAAK,UAAU,EAAE;AACpD,YAAA,sBAAsB,CAAC,IAAI,CAAC,YAAY,CAAC;YACzC;;QAGF,IAAI,YAAY,CAAC,WAAW,CAAC,QAAQ,KAAK,MAAM,EAAE;AAChD,YAAA,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC;YACrC;;QAGF,IAAI,aAAa,EAAE;AACjB,YAAA,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC;YACxC;;QAGF,IAAI,oBAAoB,EAAE;YACxB,8BAA8B,GAAG,EAAE,YAAY,EAAE,eAAe,EAAE,EAAE,EAAE;YACtE;;AAGF,QAAA,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC;;IAGxC,IAAI,8BAA8B,IAAI,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE;AACtE,QAAA,8BAA8B,CAAC,eAAe,GAAG,qBAAqB;;IAGxE,IAAI,8BAA8B,EAAE;AAClC,QAAA,oBAAoB,CAAC,IAAI,CAAC,8BAA8B,CAAC;;IAG3D,OAAO;QACL,mBAAmB;QACnB,sBAAsB;QACtB,kBAAkB;QAClB,oBAAoB;QACpB,mBAAmB;KACpB;AACH;;;;"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Message } from 'js-sha3';
|
|
1
2
|
import { GetCorrectId } from '@/types/helpers';
|
|
2
3
|
export * from './ArweaveClient/BaseArweaveClient';
|
|
3
4
|
export * from './EasClient/BaseEasClient';
|
|
@@ -17,6 +18,6 @@ export declare const parseEasRelationPropertyName: (easPropertyName: string) =>
|
|
|
17
18
|
modelName: string;
|
|
18
19
|
isList: boolean;
|
|
19
20
|
};
|
|
20
|
-
export declare const getContentHash: (
|
|
21
|
+
export declare const getContentHash: (data: Message) => Promise<string>;
|
|
21
22
|
export declare const isBinary: (arrayBuffer: ArrayBuffer) => boolean;
|
|
22
23
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/helpers/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/helpers/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAa,MAAkB,SAAS,CAAA;AAGxD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAG9C,cAAc,mCAAmC,CAAA;AACjD,cAAc,2BAA2B,CAAA;AACzC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,+BAA+B,CAAA;AAM7C,eAAO,MAAM,UAAU,QAAO,MAE7B,CAAA;AAED,eAAO,MAAM,WAAW,QAAS,MAAM,WAEtC,CAAA;AAED,eAAO,MAAM,cAAc,QAAS,MAAM,iEA2BzC,CAAA;AAED,eAAO,MAAM,WAAW,WAAY,MAAM,kBAWzC,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,YAe1B,CAAA;AAED,eAAO,MAAM,qBAAqB,SAC1B,MAAM,KACX,aAAa,GAAG,QAAQ,GAAG,KAAK,GAAG,IAwBrC,CAAA;AAED,eAAO,MAAM,kBAAkB,SACvB,MAAM,KACX,OAAO,CAAC,MAAM,GAAG,SAAS,CAc5B,CAAA;AAED,eAAO,MAAM,gBAAgB,2CAI5B,CAAA;AAED,eAAO,MAAM,qBAAqB,WAAY,MAAM,WACF,CAAA;AAElD,eAAO,MAAM,4BAA4B,oBAAqB,MAAM;;;;CAiBnE,CAAA;AAED,eAAO,MAAM,cAAc,SACnB,OAAO,KACZ,OAAO,CAAC,MAAM,CAEhB,CAAA;AAyBD,eAAO,MAAM,QAAQ,gBAAiB,WAAW,KAAG,OAwBnD,CAAA"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { customAlphabet } from 'nanoid';
|
|
2
|
+
import { sha3_256 } from 'js-sha3';
|
|
2
3
|
import * as nanoIdDictionary from 'nanoid-dictionary';
|
|
3
4
|
import debug from 'debug';
|
|
4
5
|
import { BaseFileManager } from './FileManager/BaseFileManager.js';
|
|
@@ -85,16 +86,8 @@ const parseEasRelationPropertyName = (easPropertyName) => {
|
|
|
85
86
|
isList, // True if the property is a list (e.g., 'ids' is present)
|
|
86
87
|
};
|
|
87
88
|
};
|
|
88
|
-
const getContentHash = async (
|
|
89
|
-
|
|
90
|
-
if (uint) {
|
|
91
|
-
data = uint;
|
|
92
|
-
}
|
|
93
|
-
// Hash the data with SHA-256
|
|
94
|
-
const hashBuffer = await crypto.subtle.digest('SHA-256', data);
|
|
95
|
-
// Convert the ArrayBuffer to a hex string
|
|
96
|
-
const hashArray = Array.from(new Uint8Array(hashBuffer));
|
|
97
|
-
return hashArray.map((b) => b.toString(16).padStart(2, '0')).join('');
|
|
89
|
+
const getContentHash = async (data) => {
|
|
90
|
+
return sha3_256(data);
|
|
98
91
|
};
|
|
99
92
|
|
|
100
93
|
export { BaseFileManager, convertTxIdToImage, generateId, getContentHash, getCorrectId, getDataTypeFromString, getMimeType, parseEasRelationPropertyName, toSnakeCase };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/helpers/index.ts"],"sourcesContent":["import { customAlphabet } from 'nanoid'\nimport * as nanoIdDictionary from 'nanoid-dictionary'\nimport debug from 'debug'\nimport { GetCorrectId } from '@/types/helpers'\nimport { GetCorrectIdReturn } from '@/types/helpers'\nimport { BaseFileManager } from './FileManager/BaseFileManager'\nexport * from './ArweaveClient/BaseArweaveClient'\nexport * from './EasClient/BaseEasClient'\nexport * from './QueryClient/BaseQueryClient'\nexport * from './FileManager/BaseFileManager'\nconst logger = debug('seedSdk:shared:helpers')\n\n\nconst { alphanumeric } = nanoIdDictionary\n\nexport const generateId = (): string => {\n return customAlphabet(alphanumeric, 10)()\n}\n\nexport const toSnakeCase = (str: string) => {\n return str.replace(/([a-z])([A-Z])/g, '$1_$2').toLowerCase()\n}\n\nexport const identifyString = (str: string) => {\n try {\n JSON.parse(str)\n return 'json'\n } catch (e) {\n // Not JSON\n }\n\n if (!str) {\n return\n }\n\n if (str.trim().startsWith('<') && str.trim().endsWith('>')) {\n return 'html'\n }\n\n // Simple markdown checks (very naive)\n if (/^#{1,6}\\s|^-{3,}|\\*{3,}|^-{1,2}\\s|\\*\\s/.test(str)) {\n return 'markdown'\n }\n\n if (/^data:image\\/[a-zA-Z]+;base64,[A-Za-z0-9+/]+={0,2}$/.test(str)) {\n return 'base64'\n }\n\n // Default to plain text if unsure\n return 'text'\n}\n\nexport const getMimeType = (base64: string) => {\n if (!base64) {\n return null\n }\n const result = base64.match(/^data:([a-zA-Z0-9]+\\/[a-zA-Z0-9-.+]+).*,/)\n\n if (result && result.length > 1) {\n return result[1]\n } else {\n return null // MIME type could not be determined\n }\n}\n\nexport const getCorrectId: GetCorrectId = (localIdOrUid: string) => {\n const id: GetCorrectIdReturn = {\n localId: undefined,\n uid: undefined,\n }\n if (!localIdOrUid) {\n return id\n }\n if (localIdOrUid.length === 10) {\n id.localId = localIdOrUid\n }\n if (localIdOrUid.startsWith('0x') && localIdOrUid.length === 66) {\n id.uid = localIdOrUid\n }\n return id\n}\n\nexport const getDataTypeFromString = (\n data: string,\n): 'imageBase64' | 'base64' | 'url' | null => {\n const nonImageBase64Regex =\n /^(?!data:image\\/(?:jpeg|png|gif|bmp|webp);base64,)[A-Za-z0-9+/=]+$/\n\n if (nonImageBase64Regex.test(data)) {\n return 'base64'\n }\n\n // Regular expression for base64 (simple version, checking for base64 format)\n const imageBase64Regex = /^data:image\\/[a-zA-Z]+;base64,[A-Za-z0-9+/]+={0,2}$/\n\n if (imageBase64Regex.test(data)) {\n return 'imageBase64'\n }\n\n // Regular expression for URL (simple version, checking for common URL format)\n const urlRegex =\n /^(http:\\/\\/www\\.|https:\\/\\/www\\.|http:\\/\\/|https:\\/\\/)?[a-z0-9]+([\\-\\.]{1}[a-z0-9]+)*\\.[a-z]{2,5}(:[0-9]{1,5})?(\\/.*)?$/\n\n if (urlRegex.test(data)) {\n return 'url'\n }\n\n return null\n}\n\nexport const convertTxIdToImage = async (\n txId: string,\n): Promise<string | undefined> => {\n const imageFilePath = `/files/images/${txId}`\n const fileExists = await BaseFileManager.pathExists(imageFilePath)\n if (!fileExists) {\n logger(`[ItemView] [updateImage] ${imageFilePath} does not exist`)\n return\n }\n const buffer = await BaseFileManager.readFileAsBuffer(imageFilePath)\n\n const uint = new Uint8Array(buffer)\n\n const imageBlob = new Blob([uint])\n\n return URL.createObjectURL(imageBlob)\n}\n\nexport const getExecutionTime = async (task, args) => {\n const start = Date.now()\n await task(...args)\n return Date.now() - start\n}\n\nexport const capitalizeFirstLetter = (string: string) =>\n string.charAt(0).toUpperCase() + string.slice(1)\n\nexport const parseEasRelationPropertyName = (easPropertyName: string) => {\n // Split the input string on the first underscore\n const [singularProperty, modelName, idSegment] = easPropertyName.split('_')\n\n // If there are any other parts, assume it is a list (e.g., has 'ids' or other suffix)\n const isList = idSegment === 'ids'\n\n // Create the final property name by pluralizing the singular part\n const propertyName = singularProperty.endsWith('s')\n ? singularProperty\n : singularProperty + 's'\n\n return {\n propertyName, // Plural form of the property name\n modelName, // Model name extracted from the second part\n isList, // True if the property is a list (e.g., 'ids' is present)\n }\n}\n\nexport const getContentHash = async (\n base64: string | null | undefined,\n
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/helpers/index.ts"],"sourcesContent":["import { customAlphabet } from 'nanoid'\nimport { Message, sha3_256, } from 'js-sha3'\nimport * as nanoIdDictionary from 'nanoid-dictionary'\nimport debug from 'debug'\nimport { GetCorrectId } from '@/types/helpers'\nimport { GetCorrectIdReturn } from '@/types/helpers'\nimport { BaseFileManager } from './FileManager/BaseFileManager'\nexport * from './ArweaveClient/BaseArweaveClient'\nexport * from './EasClient/BaseEasClient'\nexport * from './QueryClient/BaseQueryClient'\nexport * from './FileManager/BaseFileManager'\nconst logger = debug('seedSdk:shared:helpers')\n\n\nconst { alphanumeric } = nanoIdDictionary\n\nexport const generateId = (): string => {\n return customAlphabet(alphanumeric, 10)()\n}\n\nexport const toSnakeCase = (str: string) => {\n return str.replace(/([a-z])([A-Z])/g, '$1_$2').toLowerCase()\n}\n\nexport const identifyString = (str: string) => {\n try {\n JSON.parse(str)\n return 'json'\n } catch (e) {\n // Not JSON\n }\n\n if (!str) {\n return\n }\n\n if (str.trim().startsWith('<') && str.trim().endsWith('>')) {\n return 'html'\n }\n\n // Simple markdown checks (very naive)\n if (/^#{1,6}\\s|^-{3,}|\\*{3,}|^-{1,2}\\s|\\*\\s/.test(str)) {\n return 'markdown'\n }\n\n if (/^data:image\\/[a-zA-Z]+;base64,[A-Za-z0-9+/]+={0,2}$/.test(str)) {\n return 'base64'\n }\n\n // Default to plain text if unsure\n return 'text'\n}\n\nexport const getMimeType = (base64: string) => {\n if (!base64) {\n return null\n }\n const result = base64.match(/^data:([a-zA-Z0-9]+\\/[a-zA-Z0-9-.+]+).*,/)\n\n if (result && result.length > 1) {\n return result[1]\n } else {\n return null // MIME type could not be determined\n }\n}\n\nexport const getCorrectId: GetCorrectId = (localIdOrUid: string) => {\n const id: GetCorrectIdReturn = {\n localId: undefined,\n uid: undefined,\n }\n if (!localIdOrUid) {\n return id\n }\n if (localIdOrUid.length === 10) {\n id.localId = localIdOrUid\n }\n if (localIdOrUid.startsWith('0x') && localIdOrUid.length === 66) {\n id.uid = localIdOrUid\n }\n return id\n}\n\nexport const getDataTypeFromString = (\n data: string,\n): 'imageBase64' | 'base64' | 'url' | null => {\n const nonImageBase64Regex =\n /^(?!data:image\\/(?:jpeg|png|gif|bmp|webp);base64,)[A-Za-z0-9+/=]+$/\n\n if (nonImageBase64Regex.test(data)) {\n return 'base64'\n }\n\n // Regular expression for base64 (simple version, checking for base64 format)\n const imageBase64Regex = /^data:image\\/[a-zA-Z]+;base64,[A-Za-z0-9+/]+={0,2}$/\n\n if (imageBase64Regex.test(data)) {\n return 'imageBase64'\n }\n\n // Regular expression for URL (simple version, checking for common URL format)\n const urlRegex =\n /^(http:\\/\\/www\\.|https:\\/\\/www\\.|http:\\/\\/|https:\\/\\/)?[a-z0-9]+([\\-\\.]{1}[a-z0-9]+)*\\.[a-z]{2,5}(:[0-9]{1,5})?(\\/.*)?$/\n\n if (urlRegex.test(data)) {\n return 'url'\n }\n\n return null\n}\n\nexport const convertTxIdToImage = async (\n txId: string,\n): Promise<string | undefined> => {\n const imageFilePath = `/files/images/${txId}`\n const fileExists = await BaseFileManager.pathExists(imageFilePath)\n if (!fileExists) {\n logger(`[ItemView] [updateImage] ${imageFilePath} does not exist`)\n return\n }\n const buffer = await BaseFileManager.readFileAsBuffer(imageFilePath)\n\n const uint = new Uint8Array(buffer)\n\n const imageBlob = new Blob([uint])\n\n return URL.createObjectURL(imageBlob)\n}\n\nexport const getExecutionTime = async (task, args) => {\n const start = Date.now()\n await task(...args)\n return Date.now() - start\n}\n\nexport const capitalizeFirstLetter = (string: string) =>\n string.charAt(0).toUpperCase() + string.slice(1)\n\nexport const parseEasRelationPropertyName = (easPropertyName: string) => {\n // Split the input string on the first underscore\n const [singularProperty, modelName, idSegment] = easPropertyName.split('_')\n\n // If there are any other parts, assume it is a list (e.g., has 'ids' or other suffix)\n const isList = idSegment === 'ids'\n\n // Create the final property name by pluralizing the singular part\n const propertyName = singularProperty.endsWith('s')\n ? singularProperty\n : singularProperty + 's'\n\n return {\n propertyName, // Plural form of the property name\n modelName, // Model name extracted from the second part\n isList, // True if the property is a list (e.g., 'ids' is present)\n }\n}\n\nexport const getContentHash = async (\n data: Message\n): Promise<string> => {\n return sha3_256(data)\n}\n\n// export const getContentHash = async (\n// base64: string | null | undefined,\n// uint: Uint8Array | undefined,\n// ): Promise<string> => {\n// let data\n\n// if (base64 && !uint) {\n// const encoder = new TextEncoder()\n// data = encoder.encode(base64)\n// }\n\n// if (uint) {\n// data = uint\n// }\n\n// // Hash the data with SHA-256\n// const hashBuffer = await crypto.subtle.digest('SHA-256', data as Uint8Array)\n\n// // Convert the ArrayBuffer to a hex string\n// const hashArray = Array.from(new Uint8Array(hashBuffer))\n// return hashArray.map((b) => b.toString(16).padStart(2, '0')).join('')\n// }\n\nexport const isBinary = (arrayBuffer: ArrayBuffer): boolean => {\n const view = new Uint8Array(arrayBuffer);\n\n let nonTextCount = 0;\n const threshold = 0.2; // Adjust as needed (e.g., 20% non-text implies binary)\n\n for (let i = 0; i < view.length; i++) {\n const byte = view[i];\n\n // ASCII printable characters (32-126) and common whitespace (9, 10, 13)\n if (\n (byte >= 32 && byte <= 126) || // Printable ASCII\n byte === 9 || byte === 10 || byte === 13 // Tab, LF, CR\n ) {\n continue;\n }\n\n nonTextCount++;\n if (nonTextCount / view.length > threshold) {\n return true; // More than threshold are non-text bytes\n }\n }\n\n return false; // Fewer than threshold are non-text bytes\n}\n"],"names":[],"mappings":";;;;;;;;AAWA,MAAM,MAAM,GAAG,KAAK,CAAC,wBAAwB,CAAC;AAG9C,MAAM,EAAE,YAAY,EAAE,GAAG,gBAAgB;AAElC,MAAM,UAAU,GAAG,MAAa;AACrC,IAAA,OAAO,cAAc,CAAC,YAAY,EAAE,EAAE,CAAC,EAAE;AAC3C;AAEa,MAAA,WAAW,GAAG,CAAC,GAAW,KAAI;IACzC,OAAO,GAAG,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC,WAAW,EAAE;AAC9D;AA+Ba,MAAA,WAAW,GAAG,CAAC,MAAc,KAAI;IAC5C,IAAI,CAAC,MAAM,EAAE;AACX,QAAA,OAAO,IAAI;;IAEb,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,0CAA0C,CAAC;IAEvE,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,QAAA,OAAO,MAAM,CAAC,CAAC,CAAC;;SACX;QACL,OAAO,IAAI,CAAA;;AAEf;AAEa,MAAA,YAAY,GAAiB,CAAC,YAAoB,KAAI;AACjE,IAAA,MAAM,EAAE,GAAuB;AAC7B,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,GAAG,EAAE,SAAS;KACf;IACD,IAAI,CAAC,YAAY,EAAE;AACjB,QAAA,OAAO,EAAE;;AAEX,IAAA,IAAI,YAAY,CAAC,MAAM,KAAK,EAAE,EAAE;AAC9B,QAAA,EAAE,CAAC,OAAO,GAAG,YAAY;;AAE3B,IAAA,IAAI,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,MAAM,KAAK,EAAE,EAAE;AAC/D,QAAA,EAAE,CAAC,GAAG,GAAG,YAAY;;AAEvB,IAAA,OAAO,EAAE;AACX;AAEa,MAAA,qBAAqB,GAAG,CACnC,IAAY,KAC+B;IAC3C,MAAM,mBAAmB,GACvB,oEAAoE;AAEtE,IAAA,IAAI,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAClC,QAAA,OAAO,QAAQ;;;IAIjB,MAAM,gBAAgB,GAAG,qDAAqD;AAE9E,IAAA,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC/B,QAAA,OAAO,aAAa;;;IAItB,MAAM,QAAQ,GACZ,yHAAyH;AAE3H,IAAA,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACvB,QAAA,OAAO,KAAK;;AAGd,IAAA,OAAO,IAAI;AACb;MAEa,kBAAkB,GAAG,OAChC,IAAY,KACmB;AAC/B,IAAA,MAAM,aAAa,GAAG,CAAiB,cAAA,EAAA,IAAI,EAAE;IAC7C,MAAM,UAAU,GAAG,MAAM,eAAe,CAAC,UAAU,CAAC,aAAa,CAAC;IAClE,IAAI,CAAC,UAAU,EAAE;AACf,QAAA,MAAM,CAAC,CAAA,yBAAA,EAA4B,aAAa,CAAA,eAAA,CAAiB,CAAC;QAClE;;IAEF,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,gBAAgB,CAAC,aAAa,CAAC;AAEpE,IAAA,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC;IAEnC,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AAElC,IAAA,OAAO,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC;AACvC;AAWa,MAAA,4BAA4B,GAAG,CAAC,eAAuB,KAAI;;AAEtE,IAAA,MAAM,CAAC,gBAAgB,EAAE,SAAS,EAAE,SAAS,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC;;AAG3E,IAAA,MAAM,MAAM,GAAG,SAAS,KAAK,KAAK;;AAGlC,IAAA,MAAM,YAAY,GAAG,gBAAgB,CAAC,QAAQ,CAAC,GAAG;AAChD,UAAE;AACF,UAAE,gBAAgB,GAAG,GAAG;IAE1B,OAAO;AACL,QAAA,YAAY;AACZ,QAAA,SAAS;AACT,QAAA,MAAM;KACP;AACH;MAEa,cAAc,GAAG,OAC5B,IAAa,KACM;AACnB,IAAA,OAAO,QAAQ,CAAC,IAAI,CAAC;AACvB;;;;"}
|