@seedprotocol/sdk 0.6.6 → 0.6.8

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 (231) hide show
  1. package/dist/{BasePathResolver-BGxb4Qod.js → BasePathResolver-B6CKqoKw.js} +137 -4
  2. package/dist/BasePathResolver-B6CKqoKw.js.map +1 -0
  3. package/dist/{index-CJNKYI37.js → ClientManager-ChcmUL47.js} +1928 -5543
  4. package/dist/ClientManager-ChcmUL47.js.map +1 -0
  5. package/dist/{ModelProperty-Bvg9cJcd.js → ModelProperty-D79uV42p.js} +42 -36
  6. package/dist/ModelProperty-D79uV42p.js.map +1 -0
  7. package/dist/{Schema-BNJBY80k.js → Schema-a8uO-hIZ.js} +48 -47
  8. package/dist/Schema-a8uO-hIZ.js.map +1 -0
  9. package/dist/{SchemaValidationService-aqXkwXTr.js → SchemaValidationService-Y49vqast.js} +16 -12
  10. package/dist/SchemaValidationService-Y49vqast.js.map +1 -0
  11. package/dist/{backfillMetadataPropertyIds-DYkvoOMz.js → backfillMetadataPropertyIds-CBsf7LnU.js} +6 -3
  12. package/dist/{backfillMetadataPropertyIds-DYkvoOMz.js.map → backfillMetadataPropertyIds-CBsf7LnU.js.map} +1 -1
  13. package/dist/cjs/{ModelProperty-alntkSnH.js → ModelProperty-D9FGaGuE.js} +25 -20
  14. package/dist/cjs/ModelProperty-D9FGaGuE.js.map +1 -0
  15. package/dist/cjs/{Schema-ByFv6fcb.js → Schema-BiJIPLEL.js} +29 -27
  16. package/dist/cjs/Schema-BiJIPLEL.js.map +1 -0
  17. package/dist/cjs/{SchemaValidationService-D55MWsxv.js → SchemaValidationService-DtYs_CNY.js} +9 -6
  18. package/dist/cjs/SchemaValidationService-DtYs_CNY.js.map +1 -0
  19. package/dist/cjs/{backfillMetadataPropertyIds-DrrL5RqD.js → backfillMetadataPropertyIds-2XaN3b9S.js} +7 -5
  20. package/dist/cjs/{backfillMetadataPropertyIds-DrrL5RqD.js.map → backfillMetadataPropertyIds-2XaN3b9S.js.map} +1 -1
  21. package/dist/cjs/{eas-D2E3_i_c.js → eas-CMNppmGE.js} +32 -6
  22. package/dist/cjs/eas-CMNppmGE.js.map +1 -0
  23. package/dist/cjs/{getItem-B2zLVB_l.js → getItem-B6jEINjW.js} +6 -4
  24. package/dist/cjs/{getItem-B2zLVB_l.js.map → getItem-B6jEINjW.js.map} +1 -1
  25. package/dist/cjs/{getPublishPayload-Bv94k4ak.js → getPublishPayload-D5DhLGvN.js} +66 -60
  26. package/dist/cjs/getPublishPayload-D5DhLGvN.js.map +1 -0
  27. package/dist/cjs/{getPublishUploads-CSbHUxYk.js → getPublishUploads-DMhCCKYF.js} +21 -13
  28. package/dist/cjs/getPublishUploads-DMhCCKYF.js.map +1 -0
  29. package/dist/cjs/{getSegmentedItemProperties-CMhXKQHz.js → getSegmentedItemProperties-CU8rtBAo.js} +3 -51
  30. package/dist/cjs/getSegmentedItemProperties-CU8rtBAo.js.map +1 -0
  31. package/dist/cjs/{index-D-9WglxG.js → index-CSNtEnbF.js} +5986 -5389
  32. package/dist/cjs/index-CSNtEnbF.js.map +1 -0
  33. package/dist/cjs/{index-pSLjO-ch.js → index-DPp9rdRL.js} +10 -6
  34. package/dist/cjs/index-DPp9rdRL.js.map +1 -0
  35. package/dist/cjs/{property-gUK2PijH.js → property-DlKiAWt4.js} +11 -7
  36. package/dist/cjs/{property-gUK2PijH.js.map → property-DlKiAWt4.js.map} +1 -1
  37. package/dist/cjs/{syncDbWithEas-CYtl7VTD.js → syncDbWithEas-C6n34o_Q.js} +14 -8
  38. package/dist/cjs/syncDbWithEas-C6n34o_Q.js.map +1 -0
  39. package/dist/{configurePlatform-bGvKBBQy.js → configurePlatform-CE0Vew17.js} +6 -3
  40. package/dist/{configurePlatform-bGvKBBQy.js.map → configurePlatform-CE0Vew17.js.map} +1 -1
  41. package/dist/db/drizzle/0014_add_error_code_to_publish_processes.sql +1 -0
  42. package/dist/db/drizzle/meta/0014_snapshot.json +1269 -0
  43. package/dist/db/drizzle/meta/_journal.json +7 -0
  44. package/dist/{db-YiH_kIpE.js → db-WbrzEf7c.js} +266 -53
  45. package/dist/db-WbrzEf7c.js.map +1 -0
  46. package/dist/{eas-1nUCcmeh.js → eas-CfYCu4IX.js} +9 -6
  47. package/dist/eas-CfYCu4IX.js.map +1 -0
  48. package/dist/generateId-BopUwD8F.js +9 -0
  49. package/dist/generateId-BopUwD8F.js.map +1 -0
  50. package/dist/{getItem-Bb8bTYzY.js → getItem-Br-bGNFO.js} +12 -10
  51. package/dist/{getItem-Bb8bTYzY.js.map → getItem-Br-bGNFO.js.map} +1 -1
  52. package/dist/{getPublishPayload-BHw8mPSb.js → getPublishPayload-BIrTVUxb.js} +72 -65
  53. package/dist/getPublishPayload-BIrTVUxb.js.map +1 -0
  54. package/dist/{getPublishUploads-BYhckxFl.js → getPublishUploads-C6cDeZdz.js} +22 -13
  55. package/dist/getPublishUploads-C6cDeZdz.js.map +1 -0
  56. package/dist/{getSegmentedItemProperties-B73nMPBv.js → getSegmentedItemProperties-BmKE71vU.js} +5 -5
  57. package/dist/{getSegmentedItemProperties-B73nMPBv.js.map → getSegmentedItemProperties-BmKE71vU.js.map} +1 -1
  58. package/dist/index-280bL-n4.js +1122 -0
  59. package/dist/index-280bL-n4.js.map +1 -0
  60. package/dist/{index-DzgMt8ba.js → index-ClSv5pTA.js} +17 -14
  61. package/dist/index-ClSv5pTA.js.map +1 -0
  62. package/dist/{index-C_5xwOPQ.js → index-Djd3667v.js} +2 -2
  63. package/dist/index-Djd3667v.js.map +1 -0
  64. package/dist/index-HRHkbVQd.js +3492 -0
  65. package/dist/index-HRHkbVQd.js.map +1 -0
  66. package/dist/{index.node-ZLiBj9Cu.js → index.node-DBtQkEfz.js} +8 -7
  67. package/dist/index.node-DBtQkEfz.js.map +1 -0
  68. package/dist/main.cjs +10 -4
  69. package/dist/main.cjs.map +1 -1
  70. package/dist/main.js +43 -43
  71. package/dist/main.js.map +1 -1
  72. package/dist/model-DGMe-TTm.js +25 -0
  73. package/dist/model-DGMe-TTm.js.map +1 -0
  74. package/dist/node.js +21 -17
  75. package/dist/node.js.map +1 -1
  76. package/dist/platform.browser.js +162 -63
  77. package/dist/platform.browser.js.map +1 -1
  78. package/dist/platform.node.js +5 -5
  79. package/dist/{property-Dcb50seV.js → property-CQjuZ4JW.js} +20 -17
  80. package/dist/property-CQjuZ4JW.js.map +1 -0
  81. package/dist/seedSchema/PublishProcessSchema.ts +1 -0
  82. package/dist/src/Item/Item.d.ts +6 -0
  83. package/dist/src/Item/Item.d.ts.map +1 -1
  84. package/dist/src/Item/service/actors/loadOrCreateItem.d.ts.map +1 -1
  85. package/dist/src/ItemProperty/ItemProperty.d.ts +10 -1
  86. package/dist/src/ItemProperty/ItemProperty.d.ts.map +1 -1
  87. package/dist/src/ItemProperty/service/actors/hydrateFromDb.d.ts.map +1 -1
  88. package/dist/src/ItemProperty/service/actors/loadOrCreateProperty.d.ts.map +1 -1
  89. package/dist/src/ItemProperty/service/actors/resolveRelatedValue.d.ts.map +1 -1
  90. package/dist/src/ItemProperty/service/actors/saveValueToDb/saveRelation.d.ts.map +1 -1
  91. package/dist/src/ItemProperty/service/propertyMachine.d.ts.map +1 -1
  92. package/dist/src/Model/service/actors/loadOrCreateModel.d.ts.map +1 -1
  93. package/dist/src/ModelProperty/ModelProperty.d.ts.map +1 -1
  94. package/dist/src/Schema/service/actors/loadOrCreateSchema.d.ts.map +1 -1
  95. package/dist/src/Schema/service/actors/writeModelsToDb.d.ts.map +1 -1
  96. package/dist/src/Schema/service/addModelsMachine.d.ts.map +1 -1
  97. package/dist/src/Schema/service/validation/SchemaValidationService.d.ts.map +1 -1
  98. package/dist/src/browser/db/Db.d.ts.map +1 -1
  99. package/dist/src/browser/db/drizzleFiles.d.ts +3 -2
  100. package/dist/src/browser/db/drizzleFiles.d.ts.map +1 -1
  101. package/dist/src/browser/db/embeddedMigrations.d.ts +17 -0
  102. package/dist/src/browser/db/embeddedMigrations.d.ts.map +1 -0
  103. package/dist/src/browser/helpers/ArweaveClient.d.ts.map +1 -1
  104. package/dist/src/browser/helpers/EasClient.d.ts +2 -1
  105. package/dist/src/browser/helpers/EasClient.d.ts.map +1 -1
  106. package/dist/src/browser/helpers/FileManager.d.ts +1 -1
  107. package/dist/src/browser/helpers/FileManager.d.ts.map +1 -1
  108. package/dist/src/browser/workers/FileDownloader.d.ts +1 -1
  109. package/dist/src/browser/workers/FileDownloader.d.ts.map +1 -1
  110. package/dist/src/browser/workers/filesDownload.d.ts.map +1 -1
  111. package/dist/src/client/ClientManager.d.ts +18 -3
  112. package/dist/src/client/ClientManager.d.ts.map +1 -1
  113. package/dist/src/client/actors/platformClassesInit.d.ts.map +1 -1
  114. package/dist/src/client/actors/saveConfig.d.ts.map +1 -1
  115. package/dist/src/client/clientManagerMachine.d.ts +6 -1
  116. package/dist/src/client/clientManagerMachine.d.ts.map +1 -1
  117. package/dist/src/client/constants.d.ts +4 -0
  118. package/dist/src/client/constants.d.ts.map +1 -1
  119. package/dist/src/client/nodeEndpointDefaults.d.ts +8 -0
  120. package/dist/src/client/nodeEndpointDefaults.d.ts.map +1 -0
  121. package/dist/src/db/read/getPublishPayload.d.ts.map +1 -1
  122. package/dist/src/db/read/getPublishUploads.d.ts.map +1 -1
  123. package/dist/src/db/read/getRelatedItemsForPublish.d.ts.map +1 -1
  124. package/dist/src/db/write/createMetadata.d.ts.map +1 -1
  125. package/dist/src/eas.d.ts +2 -2
  126. package/dist/src/eas.d.ts.map +1 -1
  127. package/dist/src/events/files/download.d.ts.map +1 -1
  128. package/dist/src/events/item/syncDbWithEas.d.ts.map +1 -1
  129. package/dist/src/helpers/ArweaveClient/index.d.ts.map +1 -1
  130. package/dist/src/helpers/ArweaveClient/selectReadGateway.d.ts +1 -1
  131. package/dist/src/helpers/ArweaveClient/selectReadGateway.d.ts.map +1 -1
  132. package/dist/src/helpers/FileManager/BaseFileManager.d.ts +2 -2
  133. package/dist/src/helpers/FileManager/BaseFileManager.d.ts.map +1 -1
  134. package/dist/src/helpers/FileManager/IFileManager.d.ts +4 -0
  135. package/dist/src/helpers/FileManager/IFileManager.d.ts.map +1 -1
  136. package/dist/src/helpers/constants.d.ts +9 -2
  137. package/dist/src/helpers/constants.d.ts.map +1 -1
  138. package/dist/src/helpers/crypto.d.ts +3 -2
  139. package/dist/src/helpers/crypto.d.ts.map +1 -1
  140. package/dist/src/helpers/db.d.ts +6 -0
  141. package/dist/src/helpers/db.d.ts.map +1 -1
  142. package/dist/src/helpers/ensureImageLocal.d.ts +24 -0
  143. package/dist/src/helpers/ensureImageLocal.d.ts.map +1 -0
  144. package/dist/src/helpers/ethereumUtils.d.ts.map +1 -1
  145. package/dist/src/helpers/gateway/gatewayState.d.ts +1 -1
  146. package/dist/src/helpers/gateway/gatewayState.d.ts.map +1 -1
  147. package/dist/src/helpers/index.d.ts +10 -2
  148. package/dist/src/helpers/index.d.ts.map +1 -1
  149. package/dist/src/helpers/localDbChain.d.ts +22 -0
  150. package/dist/src/helpers/localDbChain.d.ts.map +1 -0
  151. package/dist/src/helpers/metadataPropertyNames.d.ts +9 -0
  152. package/dist/src/helpers/metadataPropertyNames.d.ts.map +1 -1
  153. package/dist/src/helpers/property/index.d.ts +12 -0
  154. package/dist/src/helpers/property/index.d.ts.map +1 -1
  155. package/dist/src/helpers/readHtmlBodyForStorageSeed.d.ts.map +1 -1
  156. package/dist/src/helpers/relationSeedRef.d.ts +8 -0
  157. package/dist/src/helpers/relationSeedRef.d.ts.map +1 -1
  158. package/dist/src/imports/json.d.ts.map +1 -1
  159. package/dist/src/index.d.ts +11 -5
  160. package/dist/src/index.d.ts.map +1 -1
  161. package/dist/src/node/easLodashHook.d.ts +2 -0
  162. package/dist/src/node/easLodashHook.d.ts.map +1 -0
  163. package/dist/src/node/easLodashRegister.d.ts +2 -0
  164. package/dist/src/node/easLodashRegister.d.ts.map +1 -0
  165. package/dist/src/node/helpers/FileManager.d.ts +2 -1
  166. package/dist/src/node/helpers/FileManager.d.ts.map +1 -1
  167. package/dist/src/node/index.d.ts +2 -1
  168. package/dist/src/node/index.d.ts.map +1 -1
  169. package/dist/src/seedSchema/PublishProcessSchema.d.ts +19 -0
  170. package/dist/src/seedSchema/PublishProcessSchema.d.ts.map +1 -1
  171. package/dist/src/types/fileManager.d.ts +4 -0
  172. package/dist/src/types/fileManager.d.ts.map +1 -1
  173. package/dist/src/types/index.d.ts +15 -1
  174. package/dist/src/types/index.d.ts.map +1 -1
  175. package/dist/{syncDbWithEas-B0RUeDuj.js → syncDbWithEas-CuARXfyN.js} +24 -18
  176. package/dist/syncDbWithEas-CuARXfyN.js.map +1 -0
  177. package/dist/{updateSeedRevokedAt-D5ZbBehZ.js → updateSeedRevokedAt-CBcLfHWs.js} +2 -2
  178. package/dist/{updateSeedRevokedAt-D5ZbBehZ.js.map → updateSeedRevokedAt-CBcLfHWs.js.map} +1 -1
  179. package/package.json +12 -8
  180. package/src/node/easLodashHook.js +22 -0
  181. package/src/node/easLodashRegister.js +13 -0
  182. package/dist/BasePathResolver-BGxb4Qod.js.map +0 -1
  183. package/dist/ModelProperty-Bvg9cJcd.js.map +0 -1
  184. package/dist/Schema-BNJBY80k.js.map +0 -1
  185. package/dist/SchemaValidationService-aqXkwXTr.js.map +0 -1
  186. package/dist/cjs/ModelProperty-alntkSnH.js.map +0 -1
  187. package/dist/cjs/Schema-ByFv6fcb.js.map +0 -1
  188. package/dist/cjs/SchemaValidationService-D55MWsxv.js.map +0 -1
  189. package/dist/cjs/eas-D2E3_i_c.js.map +0 -1
  190. package/dist/cjs/getPublishPayload-Bv94k4ak.js.map +0 -1
  191. package/dist/cjs/getPublishUploads-CSbHUxYk.js.map +0 -1
  192. package/dist/cjs/getSegmentedItemProperties-CMhXKQHz.js.map +0 -1
  193. package/dist/cjs/index-D-9WglxG.js.map +0 -1
  194. package/dist/cjs/index-pSLjO-ch.js.map +0 -1
  195. package/dist/cjs/syncDbWithEas-CYtl7VTD.js.map +0 -1
  196. package/dist/constants-Bre6dTJR.js +0 -122
  197. package/dist/constants-Bre6dTJR.js.map +0 -1
  198. package/dist/constants-CTs2RUrM.js +0 -657
  199. package/dist/constants-CTs2RUrM.js.map +0 -1
  200. package/dist/db-YiH_kIpE.js.map +0 -1
  201. package/dist/eas-1nUCcmeh.js.map +0 -1
  202. package/dist/getPublishPayload-BHw8mPSb.js.map +0 -1
  203. package/dist/getPublishUploads-BYhckxFl.js.map +0 -1
  204. package/dist/index-CJNKYI37.js.map +0 -1
  205. package/dist/index-C_5xwOPQ.js.map +0 -1
  206. package/dist/index-DzgMt8ba.js.map +0 -1
  207. package/dist/index.node-ZLiBj9Cu.js.map +0 -1
  208. package/dist/property-Dcb50seV.js.map +0 -1
  209. package/dist/seedSchema/AppStateSchema.d.ts +0 -82
  210. package/dist/seedSchema/AppStateSchema.d.ts.map +0 -1
  211. package/dist/seedSchema/ConfigSchema.d.ts +0 -101
  212. package/dist/seedSchema/ConfigSchema.d.ts.map +0 -1
  213. package/dist/seedSchema/MetadataSchema.d.ts +0 -422
  214. package/dist/seedSchema/MetadataSchema.d.ts.map +0 -1
  215. package/dist/seedSchema/ModelSchema.d.ts +0 -243
  216. package/dist/seedSchema/ModelSchema.d.ts.map +0 -1
  217. package/dist/seedSchema/ModelSchemaSchema.d.ts +0 -61
  218. package/dist/seedSchema/ModelSchemaSchema.d.ts.map +0 -1
  219. package/dist/seedSchema/ModelUidSchema.d.ts +0 -64
  220. package/dist/seedSchema/ModelUidSchema.d.ts.map +0 -1
  221. package/dist/seedSchema/PropertyUidSchema.d.ts +0 -64
  222. package/dist/seedSchema/PropertyUidSchema.d.ts.map +0 -1
  223. package/dist/seedSchema/SchemaSchema.d.ts +0 -169
  224. package/dist/seedSchema/SchemaSchema.d.ts.map +0 -1
  225. package/dist/seedSchema/SeedSchema.d.ts +0 -192
  226. package/dist/seedSchema/SeedSchema.d.ts.map +0 -1
  227. package/dist/seedSchema/VersionSchema.d.ts +0 -194
  228. package/dist/seedSchema/VersionSchema.d.ts.map +0 -1
  229. package/dist/seedSchema/index.d.ts +0 -14
  230. package/dist/seedSchema/index.d.ts.map +0 -1
  231. package/dist/syncDbWithEas-B0RUeDuj.js.map +0 -1
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var main_cjs = require('./index-D-9WglxG.js');
4
- var getSegmentedItemProperties = require('./getSegmentedItemProperties-CMhXKQHz.js');
3
+ var main_cjs = require('./index-CSNtEnbF.js');
5
4
  var arweave = require('@seedprotocol/arweave');
5
+ var getSegmentedItemProperties = require('./getSegmentedItemProperties-CU8rtBAo.js');
6
6
  var debug = require('debug');
7
7
  var drizzleOrm = require('drizzle-orm');
8
8
  require('pluralize');
@@ -12,16 +12,18 @@ require('xstate');
12
12
  require('drizzle-orm/sqlite-core');
13
13
  require('@seedprotocol/eas');
14
14
  require('@sinclair/typebox');
15
+ require('drizzle-orm/casing');
16
+ require('lodash-es');
15
17
  require('nanoid');
16
18
  require('nanoid-dictionary');
17
19
  require('@seedprotocol/query');
18
- require('drizzle-orm/casing');
19
- require('lodash-es');
20
20
  require('rxjs');
21
- require('js-sha3');
21
+ require('@noble/hashes/sha3');
22
+ require('@noble/hashes/utils');
22
23
  require('fs/promises');
23
24
  require('fs');
24
25
  require('path');
26
+ require('url');
25
27
  require('node:url');
26
28
  require('@libsql/client');
27
29
  require('drizzle-orm/libsql');
@@ -30,7 +32,7 @@ require('js-yaml');
30
32
  require('child_process');
31
33
  require('@seedprotocol/arweave/node');
32
34
  require('@seedprotocol/eas/node');
33
- require('./property-gUK2PijH.js');
35
+ require('./property-DlKiAWt4.js');
34
36
 
35
37
  const logger = debug('seedSdk:item:getPublishUploads');
36
38
  const EXTENSION_TO_MIME = {
@@ -74,7 +76,7 @@ const prepareArweaveTransaction = async (data, contentHash, contentType, additio
74
76
  return tx;
75
77
  };
76
78
  const getStorageDirForDataType = (dataType) => {
77
- switch (dataType) {
79
+ switch (main_cjs.normalizeDataType(dataType)) {
78
80
  case 'Image':
79
81
  return main_cjs.BaseFileManager.getFilesPath('images');
80
82
  case 'File':
@@ -117,14 +119,14 @@ const getStorageSeedUploads = async (itemStorageSeedProperties, options) => {
117
119
  continue;
118
120
  }
119
121
  // propertyValue is the storage seed's seedLocalId; use it for the upload so processRelationOrImageProperty can match
120
- const { seedLocalId } = getSegmentedItemProperties.resolveSeedIdsFromRefString(getSegmentedItemProperties.normalizeRelationPropertyValue(propertyValue) ?? '');
122
+ const { seedLocalId } = main_cjs.resolveSeedIdsFromRefString(main_cjs.normalizeRelationPropertyValue(propertyValue) ?? '');
121
123
  if (!seedLocalId) {
122
124
  continue;
123
125
  }
124
126
  const dataType = itemProperty.propertyDef?.refValueType ??
125
127
  itemProperty.propertyDef?.dataType ??
126
128
  'Image';
127
- if (dataType === main_cjs.ModelPropertyDataTypes.Html) {
129
+ if (main_cjs.isDataType(dataType, main_cjs.ModelPropertyDataTypes.Html)) {
128
130
  if (options?.deferHtmlStorageSeedLocalIds?.includes(seedLocalId)) {
129
131
  continue;
130
132
  }
@@ -218,7 +220,7 @@ async function storageSeedHasUploadCandidates(itemStorageSeedProperties) {
218
220
  if (!refResolvedValue) {
219
221
  continue;
220
222
  }
221
- const { seedLocalId } = getSegmentedItemProperties.resolveSeedIdsFromRefString(getSegmentedItemProperties.normalizeRelationPropertyValue(propertyValue) ?? '');
223
+ const { seedLocalId } = main_cjs.resolveSeedIdsFromRefString(main_cjs.normalizeRelationPropertyValue(propertyValue) ?? '');
222
224
  if (!seedLocalId) {
223
225
  continue;
224
226
  }
@@ -281,7 +283,7 @@ async function itemHasPublishUploadCandidates(item, relatedItemProperty) {
281
283
  if (!propertyValue || relationProperty.uid) {
282
284
  continue;
283
285
  }
284
- const { seedLocalId, seedUid } = getSegmentedItemProperties.resolveSeedIdsFromRefString(getSegmentedItemProperties.normalizeRelationPropertyValue(propertyValue) ?? '');
286
+ const { seedLocalId, seedUid } = main_cjs.resolveSeedIdsFromRefString(main_cjs.normalizeRelationPropertyValue(propertyValue) ?? '');
285
287
  if (!seedLocalId && !seedUid) {
286
288
  throw new Error(`Invalid relation value for ${relationProperty.propertyName}: expected local seed id or 0x uid`);
287
289
  }
@@ -290,6 +292,9 @@ async function itemHasPublishUploadCandidates(item, relatedItemProperty) {
290
292
  seedUid,
291
293
  });
292
294
  if (!relatedItem) {
295
+ // Related seed referenced by attested uid with no local copy: already published, nothing to upload.
296
+ if (main_cjs.isPublishedSeedRef(propertyValue))
297
+ continue;
293
298
  throw new Error(`No relatedItem found for ${relationProperty.propertyName}`);
294
299
  }
295
300
  if (await itemHasPublishUploadCandidates(relatedItem, relationProperty)) {
@@ -419,7 +424,7 @@ const getPublishUploads = async (item, uploads = [], relatedItemProperty, option
419
424
  if (!propertyValue || relationProperty.uid) {
420
425
  continue;
421
426
  }
422
- const { seedLocalId, seedUid } = getSegmentedItemProperties.resolveSeedIdsFromRefString(getSegmentedItemProperties.normalizeRelationPropertyValue(propertyValue) ?? '');
427
+ const { seedLocalId, seedUid } = main_cjs.resolveSeedIdsFromRefString(main_cjs.normalizeRelationPropertyValue(propertyValue) ?? '');
423
428
  if (!seedLocalId && !seedUid) {
424
429
  throw new Error(`Invalid relation value for ${relationProperty.propertyName}: expected local seed id or 0x uid`);
425
430
  }
@@ -428,6 +433,9 @@ const getPublishUploads = async (item, uploads = [], relatedItemProperty, option
428
433
  seedUid,
429
434
  });
430
435
  if (!relatedItem) {
436
+ // Related seed referenced by attested uid with no local copy: already published, nothing to upload.
437
+ if (main_cjs.isPublishedSeedRef(propertyValue))
438
+ continue;
431
439
  throw new Error(`No relatedItem found for ${relationProperty.propertyName}`);
432
440
  }
433
441
  uploads = await getPublishUploads(relatedItem, uploads, relationProperty, options);
@@ -438,4 +446,4 @@ const getPublishUploads = async (item, uploads = [], relatedItemProperty, option
438
446
  exports.getPublishUploads = getPublishUploads;
439
447
  exports.itemHasPublishUploadCandidates = itemHasPublishUploadCandidates;
440
448
  exports.prepareArweaveTransaction = prepareArweaveTransaction;
441
- //# sourceMappingURL=getPublishUploads-CSbHUxYk.js.map
449
+ //# sourceMappingURL=getPublishUploads-DMhCCKYF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getPublishUploads-DMhCCKYF.js","sources":["../../../src/db/read/getPublishUploads.ts"],"sourcesContent":["import { BaseFileManager } from '@/helpers'\nimport {\n isPublishedSeedRef,\n normalizeRelationPropertyValue,\n resolveSeedIdsFromRefString,\n} from '@/helpers/relationSeedRef'\nimport { BaseArweaveClient } from '@/helpers/ArweaveClient/BaseArweaveClient'\nimport { getSegmentedItemProperties } from '@/helpers/getSegmentedItemProperties'\nimport debug from 'debug'\nimport { IItem, IItemProperty } from '@/interfaces'\nimport { getContentHash } from '@/helpers/crypto'\nimport { Item } from '@/Item/Item'\nimport type { ArweaveTransaction, TransactionTag } from '@/types/arweave'\nimport { PublishUpload } from '@/types/publish'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { htmlEmbeddedImageCoPublish } from '@/seedSchema/HtmlEmbeddedImageCoPublishSchema'\nimport { eq } from 'drizzle-orm'\nimport { ModelPropertyDataTypes, isDataType, normalizeDataType } from '@/helpers/property'\n\nconst logger = debug('seedSdk:item:getPublishUploads')\n\n/** Optional tags merged into each Arweave tx after Content-SHA-256 / Content-Type. */\nexport type GetPublishUploadsOptions = {\n arweaveUploadTags?: TransactionTag[]\n /**\n * Html storage seed local ids to skip (phase 1 of two-phase embedded-image publish).\n */\n deferHtmlStorageSeedLocalIds?: string[]\n /**\n * When set, only Html storage seeds in this list are included (phase 2). Non-Html storage uploads are omitted.\n */\n onlyHtmlStorageSeedLocalIds?: string[]\n /** When true, do not recurse into relation properties (phase 2 must not re-upload related items). */\n skipRelationRecursion?: boolean\n}\n\nconst EXTENSION_TO_MIME: Record<string, string> = {\n png: 'image/png',\n jpg: 'image/jpeg',\n jpeg: 'image/jpeg',\n gif: 'image/gif',\n webp: 'image/webp',\n svg: 'image/svg+xml',\n html: 'text/html',\n htm: 'text/html',\n json: 'application/json',\n txt: 'text/plain',\n}\n\nconst getMimeTypeFromPath = (filePathOrName: string): string | undefined => {\n const ext = filePathOrName.split('.').pop()?.toLowerCase()\n return ext ? EXTENSION_TO_MIME[ext] : undefined\n}\n\nconst toUint8Array = async (data: Buffer | Blob): Promise<Uint8Array> => {\n if (typeof Blob !== 'undefined' && data instanceof Blob) {\n return new Uint8Array(await data.arrayBuffer())\n }\n return new Uint8Array(data as Buffer)\n}\n\nexport const prepareArweaveTransaction = async (\n data: string | Uint8Array,\n contentHash: string | undefined,\n contentType?: string,\n additionalTags?: TransactionTag[],\n): Promise<ArweaveTransaction> => {\n const tags: TransactionTag[] = []\n if (contentHash) {\n tags.push({ name: 'Content-SHA-256', value: contentHash })\n logger('contentHash', contentHash)\n logger('adding content hash tag')\n }\n if (contentType) {\n tags.push({ name: 'Content-Type', value: contentType })\n }\n if (additionalTags?.length) {\n tags.push(...additionalTags)\n }\n\n const tx = await BaseArweaveClient.createTransaction(data, {\n tags: tags.length ? tags : undefined,\n })\n\n return tx\n}\n\n\nconst getStorageDirForDataType = (dataType: string): string => {\n switch (normalizeDataType(dataType)) {\n case 'Image':\n return BaseFileManager.getFilesPath('images')\n case 'File':\n return BaseFileManager.getFilesPath('files')\n case 'Html':\n return BaseFileManager.getFilesPath('html')\n case 'Json':\n return BaseFileManager.getFilesPath('json')\n default:\n return BaseFileManager.getFilesPath('images')\n }\n}\n\nconst DATA_URI_IMAGE = /^data:(image\\/[a-zA-Z0-9.+-]+);base64,([\\s\\S]*)$/i\n\nfunction decodeDataUriImage(dataUri: string): { mimeType: string; bytes: Uint8Array } | null {\n const m = DATA_URI_IMAGE.exec((dataUri ?? '').trim())\n if (!m) return null\n try {\n const mimeType = m[1]!.toLowerCase().trim()\n const base64 = m[2]!.replace(/\\s/g, '')\n const binary = Uint8Array.from(atob(base64), (c) => c.charCodeAt(0))\n return { mimeType, bytes: binary }\n } catch {\n return null\n }\n}\n\nconst getStorageSeedUploads = async (\n itemStorageSeedProperties: IItemProperty<any>[],\n options?: GetPublishUploadsOptions,\n) => {\n const uploads: PublishUpload[] = []\n const extra = options?.arweaveUploadTags\n\n for (const itemProperty of itemStorageSeedProperties) {\n const snapshot = itemProperty.getService().getSnapshot()\n const context = 'context' in snapshot ? snapshot.context : null\n if (!context) {\n continue\n }\n const propertyValue = (context as any).propertyValue\n const refResolvedValue = (context as any).refResolvedValue\n if (!refResolvedValue) {\n continue\n }\n\n // propertyValue is the storage seed's seedLocalId; use it for the upload so processRelationOrImageProperty can match\n const { seedLocalId } = resolveSeedIdsFromRefString(\n normalizeRelationPropertyValue(propertyValue) ?? '',\n )\n if (!seedLocalId) {\n continue\n }\n\n const dataType =\n itemProperty.propertyDef?.refValueType ??\n itemProperty.propertyDef?.dataType ??\n 'Image'\n\n if (isDataType(dataType, ModelPropertyDataTypes.Html)) {\n if (options?.deferHtmlStorageSeedLocalIds?.includes(seedLocalId)) {\n continue\n }\n if (\n options?.onlyHtmlStorageSeedLocalIds?.length &&\n !options.onlyHtmlStorageSeedLocalIds.includes(seedLocalId)\n ) {\n continue\n }\n } else if (options?.onlyHtmlStorageSeedLocalIds?.length) {\n continue\n }\n\n const baseDir = getStorageDirForDataType(dataType)\n const filePath = `${baseDir}/${refResolvedValue}`\n\n const exists = await BaseFileManager.pathExists(filePath)\n if (!exists) {\n continue\n }\n\n const fileBuffer = await BaseFileManager.readFileAsBuffer(filePath)\n const fileContents = await toUint8Array(fileBuffer)\n\n const contentHash = await getContentHash(fileContents)\n const contentType = getMimeTypeFromPath(refResolvedValue)\n\n const transaction = await prepareArweaveTransaction(\n fileContents,\n contentHash,\n contentType,\n extra,\n )\n\n uploads.push({\n itemPropertyName: itemProperty.propertyName,\n itemPropertyLocalId: itemProperty.localId,\n seedLocalId,\n versionLocalId: itemProperty.versionLocalId!,\n transactionToSign: transaction,\n })\n }\n\n return uploads\n}\n\nasync function appendCoPublishedImageUploads(\n item: IItem<any>,\n uploads: PublishUpload[],\n options?: GetPublishUploadsOptions,\n): Promise<PublishUpload[]> {\n const appDb = BaseDb.getAppDb()\n if (!appDb || options?.onlyHtmlStorageSeedLocalIds?.length) return uploads\n\n const rows = await appDb\n .select()\n .from(htmlEmbeddedImageCoPublish)\n .where(eq(htmlEmbeddedImageCoPublish.parentSeedLocalId, item.seedLocalId))\n\n const seen = new Set(uploads.map((u) => u.seedLocalId))\n\n for (const row of rows) {\n if (seen.has(row.imageSeedLocalId)) continue\n const imageItem = await Item.find({ seedLocalId: row.imageSeedLocalId, modelName: 'Image' })\n if (!imageItem) continue\n const st =\n imageItem.internalProperties['storageTransactionId'] ??\n imageItem.allProperties['storageTransactionId']\n const stSnap = st?.getService().getSnapshot()\n const stCtx = stSnap && 'context' in stSnap ? stSnap.context : undefined\n const stValue = typeof (stCtx as { propertyValue?: unknown } | undefined)?.propertyValue === 'string'\n ? ((stCtx as { propertyValue?: string }).propertyValue ?? '')\n : ''\n const decoded = decodeDataUriImage(stValue)\n\n const more: PublishUpload[] = []\n if (decoded && st && st.localId && st.versionLocalId) {\n const contentHash = await getContentHash(decoded.bytes)\n const transaction = await prepareArweaveTransaction(\n decoded.bytes,\n contentHash,\n decoded.mimeType,\n options?.arweaveUploadTags,\n )\n more.push({\n itemPropertyName: st.propertyName,\n itemPropertyLocalId: st.localId,\n seedLocalId: imageItem.seedLocalId,\n versionLocalId: st.versionLocalId,\n transactionToSign: transaction,\n })\n }\n for (const u of more) {\n if (!seen.has(u.seedLocalId)) {\n uploads.push(u)\n seen.add(u.seedLocalId)\n }\n }\n }\n return uploads\n}\n\nexport type UploadProperty = {\n itemProperty: IItemProperty<any>\n childProperties: IItemProperty<any>[]\n}\ntype ChildUploadData = {\n propertyName: string\n localStoragePath: string\n}\n\n/**\n * True if publish would include at least one Arweave upload (local file / storage seed present).\n * Does not create Arweave transactions or hit the network — use for routing (e.g. skip EAS-only)\n * when {@link getPublishUploads} would fail early (e.g. gateway unreachable during tx creation).\n */\nasync function storageSeedHasUploadCandidates(\n itemStorageSeedProperties: IItemProperty<any>[],\n): Promise<boolean> {\n for (const itemProperty of itemStorageSeedProperties) {\n const snapshot = itemProperty.getService().getSnapshot()\n const context = 'context' in snapshot ? snapshot.context : null\n if (!context) {\n continue\n }\n const propertyValue = (context as any).propertyValue\n const refResolvedValue = (context as any).refResolvedValue\n if (!refResolvedValue) {\n continue\n }\n\n const { seedLocalId } = resolveSeedIdsFromRefString(\n normalizeRelationPropertyValue(propertyValue) ?? '',\n )\n if (!seedLocalId) {\n continue\n }\n\n const dataType =\n itemProperty.propertyDef?.refValueType ??\n itemProperty.propertyDef?.dataType ??\n 'Image'\n const baseDir = getStorageDirForDataType(dataType)\n const filePath = `${baseDir}/${refResolvedValue}`\n\n if (await BaseFileManager.pathExists(filePath)) {\n return true\n }\n }\n\n return false\n}\n\nasync function uploadPropertyWouldUpload(\n uploadProperty: UploadProperty,\n relatedItemProperty?: IItemProperty<any>,\n): Promise<boolean> {\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 if (childUploads.length > 0) {\n return true\n }\n\n if (relatedItemProperty && relatedItemProperty.localStoragePath) {\n const filePath = relatedItemProperty.localStoragePath\n\n if (!filePath || filePath.endsWith('undefined')) {\n return false\n }\n\n return await BaseFileManager.pathExists(filePath)\n }\n\n return false\n}\n\nexport async function itemHasPublishUploadCandidates(\n item: IItem<any>,\n relatedItemProperty?: IItemProperty<any>,\n): Promise<boolean> {\n const { itemUploadProperties, itemRelationProperties, itemImageProperties } =\n await getSegmentedItemProperties(item)\n\n for (const uploadProperty of itemUploadProperties) {\n if (await uploadPropertyWouldUpload(uploadProperty, relatedItemProperty)) {\n return true\n }\n }\n\n if (await storageSeedHasUploadCandidates(itemImageProperties)) {\n return true\n }\n\n for (const relationProperty of itemRelationProperties) {\n const snapshot = relationProperty.getService().getSnapshot()\n const context = 'context' in snapshot ? snapshot.context : null\n if (!context) {\n continue\n }\n const propertyValue = (context as any).propertyValue\n\n if (!propertyValue || relationProperty.uid) {\n continue\n }\n\n const { seedLocalId, seedUid } = resolveSeedIdsFromRefString(\n normalizeRelationPropertyValue(propertyValue) ?? '',\n )\n if (!seedLocalId && !seedUid) {\n throw new Error(\n `Invalid relation value for ${relationProperty.propertyName}: expected local seed id or 0x uid`,\n )\n }\n\n const relatedItem = await Item.find({\n seedLocalId,\n seedUid,\n })\n\n if (!relatedItem) {\n // Related seed referenced by attested uid with no local copy: already published, nothing to upload.\n if (isPublishedSeedRef(propertyValue)) continue\n throw new Error(\n `No relatedItem found for ${relationProperty.propertyName}`,\n )\n }\n\n if (await itemHasPublishUploadCandidates(relatedItem, relationProperty)) {\n return true\n }\n }\n\n return false\n}\n\nconst processUploadProperty = async (\n uploadProperty: UploadProperty,\n uploads: PublishUpload[],\n relatedItemProperty?: IItemProperty<any>,\n options?: GetPublishUploadsOptions,\n): Promise<PublishUpload[]> => {\n const extra = options?.arweaveUploadTags\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: ArweaveTransaction\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 try {\n const fileBuffer = await BaseFileManager.readFileAsBuffer(filePath)\n fileContents = await toUint8Array(fileBuffer)\n } catch (e) {\n const fs = await BaseFileManager.getFs()\n fileContents = await toUint8Array(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(fileContents)\n\n const contentHash = await getContentHash(uint8Array)\n\n let contentType: string | undefined\n if (childUploads.length === 0 && relatedItemProperty?.localStoragePath) {\n contentType = getMimeTypeFromPath(relatedItemProperty.localStoragePath)\n } else if (childUploads.length > 0) {\n contentType = 'application/octet-stream'\n }\n\n transaction = await prepareArweaveTransaction(\n uint8Array,\n contentHash,\n contentType,\n extra,\n )\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\nexport const getPublishUploads = async (\n item: IItem<any>,\n uploads: PublishUpload[] = [],\n relatedItemProperty?: IItemProperty<any>,\n options?: GetPublishUploadsOptions,\n) => {\n const { itemUploadProperties, itemRelationProperties, itemImageProperties } =\n await getSegmentedItemProperties(item)\n\n if (!relatedItemProperty && options?.onlyHtmlStorageSeedLocalIds?.length) {\n const storageSeedUploads = await getStorageSeedUploads(itemImageProperties, options)\n uploads.push(...storageSeedUploads)\n return uploads\n }\n\n for (const uploadProperty of itemUploadProperties) {\n uploads = await processUploadProperty(\n uploadProperty,\n uploads,\n relatedItemProperty,\n options,\n )\n }\n\n const storageSeedUploads = await getStorageSeedUploads(itemImageProperties, options)\n uploads.push(...storageSeedUploads)\n\n if (!relatedItemProperty && !options?.onlyHtmlStorageSeedLocalIds?.length) {\n uploads = await appendCoPublishedImageUploads(item, uploads, options)\n }\n\n if (options?.skipRelationRecursion) {\n return uploads\n }\n\n for (const relationProperty of itemRelationProperties) {\n const snapshot = relationProperty.getService().getSnapshot()\n const context = 'context' in snapshot ? snapshot.context : null\n if (!context) {\n continue\n }\n const propertyValue = (context as any).propertyValue\n\n if (!propertyValue || relationProperty.uid) {\n continue\n }\n\n const { seedLocalId, seedUid } = resolveSeedIdsFromRefString(\n normalizeRelationPropertyValue(propertyValue) ?? '',\n )\n if (!seedLocalId && !seedUid) {\n throw new Error(\n `Invalid relation value for ${relationProperty.propertyName}: expected local seed id or 0x uid`,\n )\n }\n\n const relatedItem = await Item.find({\n seedLocalId,\n seedUid,\n })\n\n if (!relatedItem) {\n // Related seed referenced by attested uid with no local copy: already published, nothing to upload.\n if (isPublishedSeedRef(propertyValue)) continue\n throw new Error(\n `No relatedItem found for ${relationProperty.propertyName}`,\n )\n }\n\n uploads = await getPublishUploads(relatedItem, uploads, relationProperty, options)\n }\n\n return uploads\n}\n"],"names":["BaseArweaveClient","normalizeDataType","BaseFileManager","resolveSeedIdsFromRefString","normalizeRelationPropertyValue","isDataType","ModelPropertyDataTypes","getContentHash","BaseDb","htmlEmbeddedImageCoPublish","eq","Item","getSegmentedItemProperties","isPublishedSeedRef"],"mappings":"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"}
@@ -1,57 +1,11 @@
1
1
  'use strict';
2
2
 
3
3
  require('reflect-metadata');
4
- var main_cjs = require('./index-D-9WglxG.js');
5
- var property = require('./property-gUK2PijH.js');
4
+ var main_cjs = require('./index-CSNtEnbF.js');
5
+ var property = require('./property-DlKiAWt4.js');
6
6
  var drizzleOrm = require('drizzle-orm');
7
7
  var lodashEs = require('lodash-es');
8
8
 
9
- /** Same rules as getCorrectId in helpers/index (avoid barrel circular import). */
10
- function parseLocalIdOrUid(localIdOrUid) {
11
- const id = { localId: undefined, uid: undefined };
12
- if (!localIdOrUid)
13
- return id;
14
- if (localIdOrUid.length === 10) {
15
- id.localId = localIdOrUid;
16
- }
17
- if (localIdOrUid.startsWith('0x') && localIdOrUid.length === 66) {
18
- id.uid = localIdOrUid;
19
- }
20
- return id;
21
- }
22
- /** Relation/image refs may be string ids or `{ seedLocalId?, seedUid? }`. */
23
- function normalizeRelationPropertyValue(value) {
24
- if (value == null)
25
- return undefined;
26
- if (typeof value === 'string') {
27
- const t = value.trim();
28
- return t !== '' ? t : undefined;
29
- }
30
- if (typeof value === 'object' && value !== null) {
31
- const o = value;
32
- if (typeof o.seedLocalId === 'string' && o.seedLocalId.trim() !== '') {
33
- return o.seedLocalId.trim();
34
- }
35
- if (typeof o.seedUid === 'string' && o.seedUid.trim() !== '') {
36
- return o.seedUid.trim();
37
- }
38
- }
39
- return undefined;
40
- }
41
- /** getCorrectId only accepts 10-char local ids and 0x66 uids; local seed refs can be up to 21 chars. */
42
- const LOCAL_SEED_REF = /^[a-zA-Z0-9_-]{10,21}$/;
43
- /** Resolve seed ids from a single string (context propertyValue or DB row). */
44
- function resolveSeedIdsFromRefString(s) {
45
- const fromCorrect = parseLocalIdOrUid(s);
46
- if (fromCorrect.localId || fromCorrect.uid) {
47
- return { seedLocalId: fromCorrect.localId, seedUid: fromCorrect.uid };
48
- }
49
- if (LOCAL_SEED_REF.test(s) && !s.startsWith('0x')) {
50
- return { seedLocalId: s };
51
- }
52
- return {};
53
- }
54
-
55
9
  const matchesDataType = (actual, expected) => main_cjs.normalizeDataType(actual) === expected;
56
10
  async function resolvePropertyDef(modelName, propertyName) {
57
11
  let schema = await property.getPropertySchema(modelName, propertyName);
@@ -191,6 +145,4 @@ const getSegmentedItemProperties = async (item) => {
191
145
  };
192
146
 
193
147
  exports.getSegmentedItemProperties = getSegmentedItemProperties;
194
- exports.normalizeRelationPropertyValue = normalizeRelationPropertyValue;
195
- exports.resolveSeedIdsFromRefString = resolveSeedIdsFromRefString;
196
- //# sourceMappingURL=getSegmentedItemProperties-CMhXKQHz.js.map
148
+ //# sourceMappingURL=getSegmentedItemProperties-CU8rtBAo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getSegmentedItemProperties-CU8rtBAo.js","sources":["../../../src/helpers/getSegmentedItemProperties.ts"],"sourcesContent":["import { UploadProperty } from '@/db/read/getPublishUploads'\nimport { IItem } from '@/interfaces'\nimport { ModelPropertyDataTypes, normalizeDataType } from '@/Schema'\nimport { getPropertySchema, TProperty } from '@/helpers/property'\nimport type { Static } from '@sinclair/typebox'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { models, properties } from '@/seedSchema'\nimport { eq, and } from 'drizzle-orm'\nimport { camelCase, upperFirst } from 'lodash-es'\n\nconst matchesDataType = (\n actual: string | undefined,\n expected: ModelPropertyDataTypes | string,\n): boolean => normalizeDataType(actual) === expected\nasync function resolvePropertyDef(\n modelName: string,\n propertyName: string,\n): Promise<{ dataType?: string; ref?: string; refValueType?: string; storageType?: string; localStorageDir?: string; filenameSuffix?: string; required?: boolean } | undefined> {\n let schema = await getPropertySchema(modelName, propertyName)\n if (schema) return schema\n const db = BaseDb.getAppDb()\n if (!db) return undefined\n try {\n const normalizedModelName = upperFirst(camelCase(modelName))\n const modelRecords = await db\n .select({ id: models.id })\n .from(models)\n .where(eq(models.name, normalizedModelName))\n .limit(1)\n if (modelRecords.length === 0 || !modelRecords[0].id) return undefined\n const propertyRecords = await db\n .select()\n .from(properties)\n .where(\n and(\n eq(properties.modelId, modelRecords[0].id),\n eq(properties.name, propertyName),\n ),\n )\n .limit(1)\n if (propertyRecords.length === 0) return undefined\n const propRecord = propertyRecords[0]\n let refModelName: string | undefined\n if (propRecord.refModelId != null) {\n const refModelRows = await db\n .select({ name: models.name })\n .from(models)\n .where(eq(models.id, propRecord.refModelId))\n .limit(1)\n refModelName = refModelRows[0]?.name ?? undefined\n }\n return {\n dataType: propRecord.dataType,\n ref: refModelName ?? undefined,\n refValueType: propRecord.refValueType || undefined,\n storageType: propRecord.storageType || undefined,\n localStorageDir: propRecord.localStorageDir || undefined,\n filenameSuffix: propRecord.filenameSuffix || undefined,\n required: propRecord.required ?? undefined,\n }\n } catch {\n return undefined\n }\n}\n\nexport const getSegmentedItemProperties = async (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 item.properties) {\n let propertyDef = itemProperty.propertyDef\n // When propertyDef is missing (e.g. external app, Model not registered), resolve inline\n // so properties are not skipped and metadata attestations can be created\n if (!propertyDef && item.modelName) {\n const resolved = await resolvePropertyDef(item.modelName, itemProperty.propertyName)\n if (resolved) {\n itemProperty.getService().send({ type: 'updateContext', propertyRecordSchema: resolved })\n propertyDef = resolved as Static<typeof TProperty>\n } else {\n // Last resort: Model and DB don't have schema. Use Text so property routes to\n // itemBasicProperties and can be attested (covers title, description, etc.)\n const fallbackDef = { dataType: 'Text' as const }\n itemProperty.getService().send({ type: 'updateContext', propertyRecordSchema: fallbackDef })\n propertyDef = fallbackDef as Static<typeof TProperty>\n }\n }\n if (!propertyDef) {\n continue\n }\n\n const isItemStorage =\n propertyDef.storageType &&\n propertyDef.storageType === 'ItemStorage'\n\n\n const isStorageTransaction =\n itemProperty.propertyName === 'storageTransactionId' ||\n itemProperty.propertyName === 'storage_transaction_id'\n\n const isStorageSeedType =\n matchesDataType(propertyDef.dataType, ModelPropertyDataTypes.Image) ||\n matchesDataType(propertyDef.dataType, ModelPropertyDataTypes.File) ||\n matchesDataType(propertyDef.dataType, ModelPropertyDataTypes.Html) ||\n matchesDataType(propertyDef.dataType, ModelPropertyDataTypes.Json) ||\n (matchesDataType(propertyDef.dataType, ModelPropertyDataTypes.Relation) &&\n (matchesDataType(propertyDef.refValueType, ModelPropertyDataTypes.Image) ||\n matchesDataType(propertyDef.refValueType, ModelPropertyDataTypes.File) ||\n matchesDataType(propertyDef.refValueType, ModelPropertyDataTypes.Html) ||\n matchesDataType(propertyDef.refValueType, ModelPropertyDataTypes.Json)))\n\n if (isStorageSeedType) {\n itemImageProperties.push(itemProperty)\n if (matchesDataType(propertyDef.dataType, ModelPropertyDataTypes.Relation)) {\n itemRelationProperties.push(itemProperty)\n }\n continue\n }\n\n if (matchesDataType(propertyDef.dataType, ModelPropertyDataTypes.Relation)) {\n itemRelationProperties.push(itemProperty)\n continue\n }\n\n if (matchesDataType(propertyDef.dataType, ModelPropertyDataTypes.List)) {\n // List-of-relations: ref present, goes to processListProperty\n // List-of-primitives: ref absent, treat as basic property\n const listRef =\n propertyDef.ref || (propertyDef as { refModelName?: string }).refModelName\n if (listRef) {\n itemListProperties.push(itemProperty)\n } else {\n itemBasicProperties.push(itemProperty)\n }\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":["normalizeDataType","getPropertySchema","BaseDb","upperFirst","camelCase","models","eq","properties","and","ModelPropertyDataTypes"],"mappings":"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"}