@seedprotocol/sdk 0.4.10 → 0.4.11

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 (88) hide show
  1. package/dist/{ArweaveClient-sN5h2FvY.js → ArweaveClient-CwXE3NCK.js} +3 -3
  2. package/dist/{ArweaveClient-sN5h2FvY.js.map → ArweaveClient-CwXE3NCK.js.map} +1 -1
  3. package/dist/{ArweaveClient-DFqnm5Kj.js → ArweaveClient-DyhvHiIT.js} +3 -3
  4. package/dist/{ArweaveClient-DFqnm5Kj.js.map → ArweaveClient-DyhvHiIT.js.map} +1 -1
  5. package/dist/{Db-DIythELU.js → Db-Dr6gWq8d.js} +3 -3
  6. package/dist/{Db-DIythELU.js.map → Db-Dr6gWq8d.js.map} +1 -1
  7. package/dist/{Db-Dz17KxVs.js → Db-mH9nSDfI.js} +3 -3
  8. package/dist/{Db-Dz17KxVs.js.map → Db-mH9nSDfI.js.map} +1 -1
  9. package/dist/{EasClient-BadfcFDk.js → EasClient-Yh-t7zEA.js} +2 -2
  10. package/dist/{EasClient-DosbWaZN.js.map → EasClient-Yh-t7zEA.js.map} +1 -1
  11. package/dist/{EasClient-DosbWaZN.js → EasClient-aggdMFrc.js} +2 -2
  12. package/dist/{EasClient-BadfcFDk.js.map → EasClient-aggdMFrc.js.map} +1 -1
  13. package/dist/{FileManager-Wthr5yHO.js → FileManager-ClU_rIR0.js} +2 -2
  14. package/dist/{FileManager-Wthr5yHO.js.map → FileManager-ClU_rIR0.js.map} +1 -1
  15. package/dist/{FileManager-BHuVNWT3.js → FileManager-Dl2DD4Uc.js} +2 -2
  16. package/dist/{FileManager-BHuVNWT3.js.map → FileManager-Dl2DD4Uc.js.map} +1 -1
  17. package/dist/{ModelProperty-B9Z2DRxI.js → ModelProperty-gBmew8gY.js} +94 -18
  18. package/dist/ModelProperty-gBmew8gY.js.map +1 -0
  19. package/dist/{PathResolver-NEpTSgQK.js → PathResolver-CILJPhz1.js} +2 -2
  20. package/dist/{PathResolver-NEpTSgQK.js.map → PathResolver-CILJPhz1.js.map} +1 -1
  21. package/dist/{PathResolver-Cd1PZDLG.js → PathResolver-CfA_D3wa.js} +2 -2
  22. package/dist/{PathResolver-Cd1PZDLG.js.map → PathResolver-CfA_D3wa.js.map} +1 -1
  23. package/dist/{QueryClient-C9U8oZUe.js → QueryClient-BdpWYoxo.js} +2 -2
  24. package/dist/{QueryClient-C9U8oZUe.js.map → QueryClient-BdpWYoxo.js.map} +1 -1
  25. package/dist/{QueryClient-ndmA8MYL.js → QueryClient-Dl_P8u5s.js} +2 -2
  26. package/dist/{QueryClient-ndmA8MYL.js.map → QueryClient-Dl_P8u5s.js.map} +1 -1
  27. package/dist/{Schema-D1-HjT8z.js → Schema-B-vCLIuU.js} +21 -21
  28. package/dist/{Schema-D1-HjT8z.js.map → Schema-B-vCLIuU.js.map} +1 -1
  29. package/dist/{SchemaValidationService-CIXKzSpb.js → SchemaValidationService-C_iTQIjR.js} +2 -2
  30. package/dist/{SchemaValidationService-CIXKzSpb.js.map → SchemaValidationService-C_iTQIjR.js.map} +1 -1
  31. package/dist/cjs/{ModelProperty-09hNvSBl.js → ModelProperty-DcAM5M8T.js} +94 -18
  32. package/dist/cjs/ModelProperty-DcAM5M8T.js.map +1 -0
  33. package/dist/cjs/{Schema-BcwvUABB.js → Schema-B6ifYEhD.js} +20 -20
  34. package/dist/cjs/{Schema-BcwvUABB.js.map → Schema-B6ifYEhD.js.map} +1 -1
  35. package/dist/cjs/{SchemaValidationService-zty4nfCu.js → SchemaValidationService-OFyzZIUX.js} +2 -2
  36. package/dist/cjs/{SchemaValidationService-zty4nfCu.js.map → SchemaValidationService-OFyzZIUX.js.map} +1 -1
  37. package/dist/cjs/{getItem-Dlb5YSQn.js → getItem-CAYQYTpg.js} +2 -2
  38. package/dist/cjs/{getItem-Dlb5YSQn.js.map → getItem-CAYQYTpg.js.map} +1 -1
  39. package/dist/cjs/{getPublishPayload-BqL06sEI.js → getPublishPayload-CBuGIazw.js} +5 -5
  40. package/dist/cjs/{getPublishPayload-BqL06sEI.js.map → getPublishPayload-CBuGIazw.js.map} +1 -1
  41. package/dist/cjs/{getPublishUploads-oukGI2N6.js → getPublishUploads-B7bB1OGg.js} +3 -3
  42. package/dist/cjs/{getPublishUploads-oukGI2N6.js.map → getPublishUploads-B7bB1OGg.js.map} +1 -1
  43. package/dist/cjs/{getSegmentedItemProperties-JT984OOp.js → getSegmentedItemProperties-MVZ-0mQG.js} +2 -2
  44. package/dist/cjs/{getSegmentedItemProperties-JT984OOp.js.map → getSegmentedItemProperties-MVZ-0mQG.js.map} +1 -1
  45. package/dist/cjs/{index-jubgGeM2.js → index-6P4MEsbO.js} +2 -2
  46. package/dist/cjs/index-6P4MEsbO.js.map +1 -0
  47. package/dist/cjs/{index-BLETlVgA.js → index-CA4i5TA7.js} +105 -46
  48. package/dist/cjs/index-CA4i5TA7.js.map +1 -0
  49. package/dist/cjs/{ownership-vfvyz3KJ.js → ownership-5TQ-v2CF.js} +2 -2
  50. package/dist/cjs/{ownership-vfvyz3KJ.js.map → ownership-5TQ-v2CF.js.map} +1 -1
  51. package/dist/{getItem-f9rNUz7I.js → getItem-xpxRXqHI.js} +2 -2
  52. package/dist/{getItem-f9rNUz7I.js.map → getItem-xpxRXqHI.js.map} +1 -1
  53. package/dist/{getPublishPayload-BBI_j9I2.js → getPublishPayload-CBeCMSeQ.js} +5 -5
  54. package/dist/{getPublishPayload-BBI_j9I2.js.map → getPublishPayload-CBeCMSeQ.js.map} +1 -1
  55. package/dist/{getPublishUploads-BFM94w5S.js → getPublishUploads-NITxWWDD.js} +3 -3
  56. package/dist/{getPublishUploads-BFM94w5S.js.map → getPublishUploads-NITxWWDD.js.map} +1 -1
  57. package/dist/{getSegmentedItemProperties-Di9vevKz.js → getSegmentedItemProperties-CYzNtJxH.js} +2 -2
  58. package/dist/{getSegmentedItemProperties-Di9vevKz.js.map → getSegmentedItemProperties-CYzNtJxH.js.map} +1 -1
  59. package/dist/{index-CSAVWKeA.js → index-BC0xKxkf.js} +3 -3
  60. package/dist/index-BC0xKxkf.js.map +1 -0
  61. package/dist/{index-j8WN8W6V.js → index-B_apqB1Q.js} +120 -61
  62. package/dist/index-B_apqB1Q.js.map +1 -0
  63. package/dist/{index-ajj6SHkh.js → index-CcXvJ2H7.js} +2 -2
  64. package/dist/index-CcXvJ2H7.js.map +1 -0
  65. package/dist/main.cjs +1 -1
  66. package/dist/main.js +11 -11
  67. package/dist/node.js +10 -10
  68. package/dist/{ownership-DLNI17NE.js → ownership-C7Afj3yr.js} +2 -2
  69. package/dist/{ownership-DLNI17NE.js.map → ownership-C7Afj3yr.js.map} +1 -1
  70. package/dist/{property-C6qoOzLG.js → property-C2gviIFJ.js} +4 -4
  71. package/dist/{property-C6qoOzLG.js.map → property-C2gviIFJ.js.map} +1 -1
  72. package/dist/{queries-jMaUn86w.js → queries-BFzkFn4Y.js} +2 -2
  73. package/dist/{queries-jMaUn86w.js.map → queries-BFzkFn4Y.js.map} +1 -1
  74. package/dist/src/ModelProperty/ModelProperty.d.ts +5 -0
  75. package/dist/src/ModelProperty/ModelProperty.d.ts.map +1 -1
  76. package/dist/src/ModelProperty/service/actors/compareAndMarkDraft.d.ts.map +1 -1
  77. package/dist/src/ModelProperty/service/actors/validateProperty.d.ts.map +1 -1
  78. package/dist/src/ModelProperty/service/modelPropertyMachine.d.ts.map +1 -1
  79. package/dist/src/helpers/db.d.ts.map +1 -1
  80. package/dist/src/services/write/actors/writeToDatabase.d.ts.map +1 -1
  81. package/package.json +1 -1
  82. package/dist/ModelProperty-B9Z2DRxI.js.map +0 -1
  83. package/dist/cjs/ModelProperty-09hNvSBl.js.map +0 -1
  84. package/dist/cjs/index-BLETlVgA.js.map +0 -1
  85. package/dist/cjs/index-jubgGeM2.js.map +0 -1
  86. package/dist/index-CSAVWKeA.js.map +0 -1
  87. package/dist/index-ajj6SHkh.js.map +0 -1
  88. package/dist/index-j8WN8W6V.js.map +0 -1
@@ -2,7 +2,7 @@
2
2
 
3
3
  var value = require('@sinclair/typebox/value');
4
4
  require('reflect-metadata');
5
- var main_cjs = require('./index-BLETlVgA.js');
5
+ var main_cjs = require('./index-CA4i5TA7.js');
6
6
  require('pluralize');
7
7
  require('drizzle-orm');
8
8
  var typebox = require('@sinclair/typebox');
@@ -667,4 +667,4 @@ class SchemaValidationService {
667
667
  }
668
668
 
669
669
  exports.SchemaValidationService = SchemaValidationService;
670
- //# sourceMappingURL=SchemaValidationService-zty4nfCu.js.map
670
+ //# sourceMappingURL=SchemaValidationService-OFyzZIUX.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaValidationService-zty4nfCu.js","sources":["../../../src/Schema/service/validation/SchemaValidationService.ts"],"sourcesContent":["import { Value } from '@sinclair/typebox/value'\nimport { TProperty } from '@/Schema'\nimport { ModelPropertyDataTypes, TPropertyDataType } from '@/helpers/property'\nimport { ValidationResult, ValidationError, ValidationRules } from '@/Schema/validation'\nimport { SchemaMachineContext } from '../schemaMachine'\nimport { ModelPropertyMachineContext } from '@/ModelProperty/service/modelPropertyMachine'\nimport { ModelMachineContext } from '@/Model/service/modelMachine'\nimport { Type, TSchema, TUnion, TLiteral } from '@sinclair/typebox'\nimport debug from 'debug'\n\nconst logger = debug('seedSdk:schema:validation')\n\n/**\n * Service for validating schemas, models, and properties using TypeBox\n */\nexport class SchemaValidationService {\n /**\n * Enhance TypeBox error message with expected values for union/literal types\n */\n private enhanceErrorMessage(\n error: any,\n schema: TSchema,\n fieldPath: string\n ): string {\n const originalMessage = error.message || 'Validation failed'\n \n // Handle Union type errors (like TPropertyDataType)\n if (error.type === 'Union' || originalMessage.includes('union')) {\n const expectedValues = this.extractExpectedValues(schema, fieldPath)\n if (expectedValues.length > 0) {\n return `Expected one of: ${expectedValues.join(', ')}. Received: ${JSON.stringify(error.value)}`\n }\n }\n \n // Handle Literal type errors\n if (error.type === 'Literal') {\n const expectedValue = this.extractLiteralValue(schema, fieldPath)\n if (expectedValue !== undefined) {\n return `Expected: ${JSON.stringify(expectedValue)}. Received: ${JSON.stringify(error.value)}`\n }\n }\n \n // Return enhanced message with value info if available\n if (error.value !== undefined) {\n return `${originalMessage}. Received: ${JSON.stringify(error.value)}`\n }\n \n return originalMessage\n }\n\n /**\n * Extract expected values from a schema for a given field path\n */\n private extractExpectedValues(schema: TSchema | null, fieldPath: string): string[] {\n try {\n // Handle TProperty schema - check if this is the dataType field\n if (fieldPath === '/dataType' || fieldPath.endsWith('/dataType')) {\n // Return all ModelPropertyDataTypes enum values\n return Object.values(ModelPropertyDataTypes) as string[]\n }\n \n // Handle TStorageType\n if (fieldPath === '/storageType' || fieldPath.endsWith('/storageType')) {\n return ['ItemStorage', 'PropertyStorage']\n }\n \n // If we have a schema, try to extract from it\n if (!schema) {\n return []\n }\n \n // Try to extract from TypeBox Union type using the schema directly\n const schemaObj = schema as any\n const kind = schemaObj[Symbol.for('TypeBox.Kind')]\n \n if (kind === 'Union') {\n const union = schemaObj as TUnion<any>\n const anyOf = union.anyOf || []\n const values: string[] = []\n \n for (const item of anyOf) {\n const itemKind = item?.[Symbol.for('TypeBox.Kind')]\n if (itemKind === 'Literal') {\n const literal = item as TLiteral<any>\n if (literal.const !== undefined) {\n values.push(String(literal.const))\n }\n }\n }\n \n if (values.length > 0) {\n return values\n }\n }\n \n // Fallback: try to extract from JSON schema format\n if (typeof schema === 'object' && 'anyOf' in schema) {\n const union = schema as any\n if (Array.isArray(union.anyOf)) {\n return union.anyOf\n .map((item: any) => {\n if (item.const !== undefined) return String(item.const)\n if (item.enum && Array.isArray(item.enum)) return item.enum.map(String)\n return null\n })\n .filter((val: any) => val !== null)\n .flat()\n .map(String)\n }\n }\n } catch (error) {\n logger('Error extracting expected values:', error)\n }\n \n return []\n }\n\n /**\n * Extract literal value from a schema\n */\n private extractLiteralValue(schema: TSchema, fieldPath: string): any {\n try {\n if (schema && typeof schema === 'object') {\n const schemaObj = schema as any\n if (schemaObj[Symbol.for('TypeBox.Kind')] === 'Literal') {\n return (schemaObj as TLiteral<any>).const\n }\n if (schemaObj.const !== undefined) {\n return schemaObj.const\n }\n }\n } catch (error) {\n logger('Error extracting literal value:', error)\n }\n \n return undefined\n }\n\n /**\n * Get the schema for a specific field path\n */\n private getSchemaForField(schema: TSchema, fieldPath: string): TSchema | null {\n try {\n if (!schema || typeof schema !== 'object') return null\n \n // Remove leading slash\n const path = fieldPath.replace(/^\\//, '')\n if (!path) return schema\n \n const schemaObj = schema as any\n const kind = schemaObj[Symbol.for('TypeBox.Kind')]\n \n // For TProperty (Object type), check properties\n if (kind === 'Object') {\n const properties = schemaObj.properties\n if (properties && properties[path]) {\n return properties[path]\n }\n }\n \n // Special handling for known fields - return the actual schema\n if (path === 'dataType') {\n return TPropertyDataType as TSchema\n }\n \n // Fallback: check if schema has the property\n if (path in schemaObj) {\n return schemaObj[path]\n }\n } catch (error) {\n logger('Error getting schema for field:', error)\n }\n \n return null\n }\n\n /**\n * Validate a property structure against TProperty schema\n */\n validatePropertyStructure(\n property: ModelPropertyMachineContext\n ): ValidationResult {\n try {\n const isValid = Value.Check(TProperty, property)\n \n const errors: ValidationError[] = []\n \n if (!isValid) {\n const typeBoxErrors = [...Value.Errors(TProperty, property)]\n errors.push(...typeBoxErrors.map(err => {\n const fieldPath = err.path || 'unknown'\n const fieldSchema = this.getSchemaForField(TProperty, fieldPath)\n const enhancedMessage = this.enhanceErrorMessage(err, fieldSchema || TProperty, fieldPath)\n \n return {\n field: fieldPath,\n message: enhancedMessage,\n code: String(err.type || 'validation_error'),\n severity: 'error' as const,\n }\n }))\n }\n \n // Non-List types: refValueType is only valid for Relation+Image (related entity type). Reject otherwise.\n const nonListTypes = [\n ModelPropertyDataTypes.Text,\n ModelPropertyDataTypes.Number,\n ModelPropertyDataTypes.Boolean,\n ModelPropertyDataTypes.Date,\n ModelPropertyDataTypes.Json,\n ModelPropertyDataTypes.Image,\n ModelPropertyDataTypes.File,\n ModelPropertyDataTypes.Html,\n ModelPropertyDataTypes.Relation,\n ]\n if (nonListTypes.includes(property.dataType as ModelPropertyDataTypes)) {\n const hasRefValueType = property.refValueType != null && String(property.refValueType).trim() !== ''\n if (hasRefValueType) {\n // Relation may keep refValueType only for Image (relation to Image entity)\n if (property.dataType === ModelPropertyDataTypes.Relation && property.refValueType === ModelPropertyDataTypes.Image) {\n // Allowed: Relation to Image\n } else {\n errors.push({\n field: 'refValueType',\n message: `refValueType is only valid for List properties. Use dataType 'List' with refValueType '${property.refValueType}' for lists of ${property.refValueType}.`,\n code: 'invalid_ref_value_type',\n severity: 'error' as const,\n })\n }\n }\n }\n\n // List: refValueType is required\n if (property.dataType === ModelPropertyDataTypes.List) {\n const hasRefValueType = property.refValueType != null && String(property.refValueType).trim() !== ''\n if (!hasRefValueType) {\n errors.push({\n field: 'refValueType',\n message: `List properties require refValueType (e.g. 'Text', 'Number', 'Relation') to specify the element type.`,\n code: 'missing_ref_value_type',\n severity: 'error' as const,\n })\n }\n // List of relations: ref is required\n if (hasRefValueType && property.refValueType === ModelPropertyDataTypes.Relation) {\n const hasRef = property.ref && property.ref.trim() !== ''\n const hasRefModelName = property.refModelName && property.refModelName.trim() !== ''\n const hasRefModelId = property.refModelId !== undefined && property.refModelId !== null\n if (!hasRef && !hasRefModelName && !hasRefModelId) {\n errors.push({\n field: 'ref',\n message: `List properties with refValueType 'Relation' require either a \"ref\", \"refModelName\", or \"refModelId\" field to be defined`,\n code: 'missing_ref',\n severity: 'error' as const,\n })\n }\n }\n }\n\n // Relation (single): ref is required\n if (property.dataType === ModelPropertyDataTypes.Relation) {\n const hasRef = property.ref && property.ref.trim() !== ''\n const hasRefModelName = property.refModelName && property.refModelName.trim() !== ''\n const hasRefModelId = property.refModelId !== undefined && property.refModelId !== null\n if (!hasRef && !hasRefModelName && !hasRefModelId) {\n errors.push({\n field: 'ref',\n message: `Property with dataType \"Relation\" requires either a \"ref\", \"refModelName\", or \"refModelId\" field to be defined`,\n code: 'missing_ref',\n severity: 'error' as const,\n })\n }\n if ((hasRef || hasRefModelName) && !hasRefModelId) {\n logger(`Property \"${property.name}\" has ref/refModelName but no refModelId - will be resolved asynchronously`)\n }\n }\n \n return {\n isValid: errors.length === 0,\n errors,\n }\n } catch (error) {\n logger('Error validating property structure:', error)\n return {\n isValid: false,\n errors: [{\n field: 'property',\n message: error instanceof Error ? error.message : 'Unknown validation error',\n code: 'validation_exception',\n severity: 'error' as const,\n }],\n }\n }\n }\n\n /**\n * Validate a property value against its validation rules\n */\n validatePropertyValue(\n value: any,\n dataType: ModelPropertyDataTypes,\n validationRules?: ValidationRules\n ): ValidationResult {\n const errors: ValidationError[] = []\n const warnings: ValidationError[] = []\n\n try {\n // Array values are only allowed for List properties\n if (dataType !== ModelPropertyDataTypes.List && Array.isArray(value)) {\n errors.push({\n field: 'value',\n message: 'Array values are only allowed for List properties. Use dataType \"List\" with refValueType to store multiple values.',\n code: 'array_not_allowed',\n severity: 'error' as const,\n })\n }\n\n // Build base TypeBox schema from dataType\n let schema: TSchema = this.getBaseSchemaForDataType(dataType)\n\n // Apply validation rules\n if (validationRules) {\n schema = this.applyValidationRules(schema, dataType, validationRules)\n }\n\n // Validate using TypeBox\n const isValid = Value.Check(schema, value)\n \n if (!isValid) {\n const typeBoxErrors = [...Value.Errors(schema, value)]\n errors.push(...typeBoxErrors.map(err => {\n const fieldPath = err.path || 'value'\n const enhancedMessage = this.enhanceErrorMessage(err, schema, fieldPath)\n \n return {\n field: fieldPath,\n message: enhancedMessage,\n code: String(err.type || 'value_validation_error'),\n severity: 'error' as const,\n }\n }))\n }\n\n // Additional custom validations\n if (validationRules) {\n const customErrors = this.validateCustomRules(value, validationRules)\n errors.push(...customErrors)\n }\n\n return {\n isValid: errors.length === 0,\n errors,\n warnings: warnings.length > 0 ? warnings : undefined,\n }\n } catch (error) {\n logger('Error validating property value:', error)\n return {\n isValid: false,\n errors: [{\n field: 'value',\n message: error instanceof Error ? error.message : 'Unknown validation error',\n code: 'validation_exception',\n severity: 'error' as const,\n }],\n }\n }\n }\n\n /**\n * Validate a specific property within a schema\n */\n validateProperty(\n schema: SchemaMachineContext,\n modelName: string,\n propertyName: string,\n propertyData?: ModelPropertyMachineContext\n ): ValidationResult {\n const errors: ValidationError[] = []\n\n // Check if model exists\n if (!schema.models || !schema.models[modelName]) {\n errors.push({\n field: 'model',\n message: `Model \"${modelName}\" not found in schema`,\n code: 'model_not_found',\n severity: 'error' as const,\n })\n return { isValid: false, errors }\n }\n\n const model = schema.models[modelName]\n\n // Check if property exists in model\n // If the property name has changed (renamed), check if the original name exists\n let propertyDefinition = model.properties?.[propertyName]\n let actualPropertyName = propertyName\n \n if (!propertyDefinition && propertyData?._originalValues?.name) {\n const originalName = propertyData._originalValues.name\n // If the current name differs from the original, check if original exists\n if (originalName !== propertyName && model.properties?.[originalName]) {\n propertyDefinition = model.properties[originalName]\n actualPropertyName = originalName\n // Property is being renamed, which is allowed - continue validation\n }\n }\n \n if (!propertyDefinition) {\n errors.push({\n field: 'property',\n message: `Property \"${propertyName}\" not found in model \"${modelName}\"`,\n code: 'property_not_found',\n severity: 'error' as const,\n })\n return { isValid: false, errors }\n }\n\n // If propertyData is provided, validate its structure\n if (propertyData) {\n const structureResult = this.validatePropertyStructure(propertyData)\n errors.push(...structureResult.errors)\n }\n\n // Validate property definition structure\n if (!propertyDefinition.type) {\n errors.push({\n field: 'property.type',\n message: 'Property type is required',\n code: 'missing_type',\n severity: 'error' as const,\n })\n }\n\n // Validate Relation: requires model\n if (propertyDefinition.type === 'Relation') {\n if (!propertyDefinition.model || propertyDefinition.model.trim() === '') {\n errors.push({\n field: 'property.model',\n message: `Property with type \"Relation\" requires a \"model\" field to be defined`,\n code: 'missing_ref',\n severity: 'error' as const,\n })\n } else if (!schema.models[propertyDefinition.model]) {\n errors.push({\n field: 'property.model',\n message: `Referenced model \"${propertyDefinition.model}\" not found in schema`,\n code: 'invalid_reference',\n severity: 'error' as const,\n })\n }\n }\n\n // Validate List: requires items with type; model required only when items.type === 'Relation'\n if (propertyDefinition.type === 'List') {\n const items = (propertyDefinition as any).items\n if (!items || !items.type) {\n errors.push({\n field: 'property.items',\n message: 'List properties require \"items\" with \"type\" (e.g. items: { type: \"Text\" } or items: { type: \"Relation\", model: \"Tag\" })',\n code: 'missing_items',\n severity: 'error' as const,\n })\n } else if (items.type === 'Relation' || items.type === 'RelationProperty') {\n const model = items.model || propertyDefinition.model\n if (!model || String(model).trim() === '') {\n errors.push({\n field: 'property.items.model',\n message: 'List of relations requires \"items.model\" to specify the related model',\n code: 'missing_ref',\n severity: 'error' as const,\n })\n } else if (schema.models && !schema.models[model]) {\n errors.push({\n field: 'property.items.model',\n message: `Referenced model \"${model}\" not found in schema`,\n code: 'invalid_reference',\n severity: 'error' as const,\n })\n }\n }\n }\n\n return {\n isValid: errors.length === 0,\n errors,\n }\n }\n\n /**\n * Validate model structure (basic structure checks)\n */\n validateModelStructure(\n model: ModelMachineContext & { properties?: { [key: string]: any } }\n ): ValidationResult {\n const errors: ValidationError[] = []\n\n // Validate model name\n if (!model.modelName || model.modelName.trim() === '') {\n errors.push({\n field: 'modelName',\n message: 'Model name is required',\n code: 'missing_model_name',\n severity: 'error' as const,\n })\n }\n\n // Validate schema name\n if (!model.schemaName || model.schemaName.trim() === '') {\n errors.push({\n field: 'schemaName',\n message: 'Schema name is required',\n code: 'missing_schema_name',\n severity: 'error' as const,\n })\n }\n\n // Validate properties is an object\n if (model.properties && typeof model.properties !== 'object') {\n errors.push({\n field: 'properties',\n message: 'Properties must be an object',\n code: 'invalid_properties',\n severity: 'error' as const,\n })\n }\n\n return {\n isValid: errors.length === 0,\n errors,\n }\n }\n\n /**\n * Validate a model against a schema WITHOUT requiring it to be in the schema's context\n * This allows validation before registration, preventing update loops\n */\n validateModelAgainstSchema(\n schema: SchemaMachineContext,\n modelName: string,\n modelData: ModelMachineContext & { properties?: { [key: string]: any } }\n ): ValidationResult {\n const errors: ValidationError[] = []\n\n // Create a temporary schema context that includes this model for validation purposes\n // This allows validateProperty to work without actually adding the model to the real schema\n const tempSchemaContext: SchemaMachineContext = {\n ...schema,\n models: {\n ...schema.models,\n [modelName]: {\n properties: modelData.properties || {},\n },\n },\n }\n\n // Use validateModel which now works because the model is in the temp context\n return this.validateModel(tempSchemaContext, modelName, modelData)\n }\n\n /**\n * Validate a model within a schema (requires model to already be in schema context)\n */\n validateModel(\n schema: SchemaMachineContext,\n modelName: string,\n modelData?: ModelMachineContext\n ): ValidationResult {\n const errors: ValidationError[] = []\n\n if (!schema.models || !schema.models[modelName]) {\n errors.push({\n field: 'model',\n message: `Model \"${modelName}\" not found in schema`,\n code: 'model_not_found',\n severity: 'error' as const,\n })\n return { isValid: false, errors }\n }\n\n const model = schema.models[modelName]\n\n // Validate all properties in the model\n if (model.properties) {\n for (const [propertyName, propertyDef] of Object.entries(model.properties)) {\n const propertyResult = this.validateProperty(schema, modelName, propertyName)\n if (!propertyResult.isValid) {\n errors.push(...propertyResult.errors.map(err => ({\n ...err,\n field: `${modelName}.${propertyName}.${err.field}`,\n })))\n }\n }\n }\n\n return {\n isValid: errors.length === 0,\n errors,\n }\n }\n\n /**\n * Validate entire schema\n */\n validateSchema(schema: SchemaMachineContext): ValidationResult {\n const errors: ValidationError[] = []\n\n // Validate schema name\n if (!schema.schemaName || schema.schemaName.trim() === '') {\n errors.push({\n field: 'schemaName',\n message: 'Schema name is required',\n code: 'missing_schema_name',\n severity: 'error' as const,\n })\n }\n\n // Validate metadata\n if (!schema.metadata) {\n errors.push({\n field: 'metadata',\n message: 'Schema metadata is required',\n code: 'missing_metadata',\n severity: 'error' as const,\n })\n } else {\n if (!schema.metadata.name || schema.metadata.name.trim() === '') {\n errors.push({\n field: 'metadata.name',\n message: 'Schema metadata name is required',\n code: 'missing_metadata_name',\n severity: 'error' as const,\n })\n }\n }\n\n // Validate models if they exist\n if (schema.models && Object.keys(schema.models).length > 0) {\n // Validate each model\n for (const modelName of Object.keys(schema.models)) {\n const modelResult = this.validateModel(schema, modelName)\n if (!modelResult.isValid) {\n errors.push(...modelResult.errors)\n }\n }\n }\n\n return {\n isValid: errors.length === 0,\n errors,\n }\n }\n\n /**\n * Get base TypeBox schema for a data type\n */\n private getBaseSchemaForDataType(dataType: ModelPropertyDataTypes): TSchema {\n switch (dataType) {\n case ModelPropertyDataTypes.Text:\n case ModelPropertyDataTypes.Html:\n return Type.String()\n case ModelPropertyDataTypes.Number:\n return Type.Number()\n case ModelPropertyDataTypes.Boolean:\n return Type.Boolean()\n case ModelPropertyDataTypes.Date:\n return Type.String({ format: 'date-time' })\n case ModelPropertyDataTypes.Json:\n return Type.Any()\n case ModelPropertyDataTypes.List:\n return Type.Array(Type.Any())\n case ModelPropertyDataTypes.Relation:\n case ModelPropertyDataTypes.Image:\n case ModelPropertyDataTypes.File:\n return Type.Union([Type.String(), Type.Null()])\n default:\n return Type.Any()\n }\n }\n\n /**\n * Apply validation rules to a TypeBox schema\n */\n private applyValidationRules(\n schema: TSchema,\n dataType: ModelPropertyDataTypes,\n rules: ValidationRules\n ): TSchema {\n let result = schema\n\n // Apply pattern (regex) for strings\n if (rules.pattern && (dataType === ModelPropertyDataTypes.Text || dataType === ModelPropertyDataTypes.Html)) {\n try {\n const regex = new RegExp(rules.pattern)\n result = Type.RegExp(regex)\n } catch (error) {\n logger('Invalid regex pattern:', rules.pattern, error)\n }\n }\n\n // Apply minLength/maxLength for strings\n if (dataType === ModelPropertyDataTypes.Text || dataType === ModelPropertyDataTypes.Html) {\n const stringSchema = Type.String()\n if (rules.minLength !== undefined) {\n result = Type.String({ minLength: rules.minLength })\n }\n if (rules.maxLength !== undefined) {\n if (rules.minLength !== undefined) {\n result = Type.String({ minLength: rules.minLength, maxLength: rules.maxLength })\n } else {\n result = Type.String({ maxLength: rules.maxLength })\n }\n }\n }\n\n // Apply enum\n if (rules.enum && Array.isArray(rules.enum) && rules.enum.length > 0) {\n result = Type.Union(rules.enum.map(val => Type.Literal(val)))\n }\n\n return result\n }\n\n /**\n * Validate custom validation rules\n */\n private validateCustomRules(\n value: any,\n rules: ValidationRules\n ): ValidationError[] {\n const errors: ValidationError[] = []\n\n // Custom validator reference (would need to be implemented based on your needs)\n if (rules.custom) {\n // TODO: Implement custom validator lookup and execution\n logger('Custom validator not yet implemented:', rules.custom)\n }\n\n return errors\n }\n}\n\n"],"names":["ModelPropertyDataTypes","TPropertyDataType","Value","TProperty","value","Type"],"mappings":"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"}
1
+ {"version":3,"file":"SchemaValidationService-OFyzZIUX.js","sources":["../../../src/Schema/service/validation/SchemaValidationService.ts"],"sourcesContent":["import { Value } from '@sinclair/typebox/value'\nimport { TProperty } from '@/Schema'\nimport { ModelPropertyDataTypes, TPropertyDataType } from '@/helpers/property'\nimport { ValidationResult, ValidationError, ValidationRules } from '@/Schema/validation'\nimport { SchemaMachineContext } from '../schemaMachine'\nimport { ModelPropertyMachineContext } from '@/ModelProperty/service/modelPropertyMachine'\nimport { ModelMachineContext } from '@/Model/service/modelMachine'\nimport { Type, TSchema, TUnion, TLiteral } from '@sinclair/typebox'\nimport debug from 'debug'\n\nconst logger = debug('seedSdk:schema:validation')\n\n/**\n * Service for validating schemas, models, and properties using TypeBox\n */\nexport class SchemaValidationService {\n /**\n * Enhance TypeBox error message with expected values for union/literal types\n */\n private enhanceErrorMessage(\n error: any,\n schema: TSchema,\n fieldPath: string\n ): string {\n const originalMessage = error.message || 'Validation failed'\n \n // Handle Union type errors (like TPropertyDataType)\n if (error.type === 'Union' || originalMessage.includes('union')) {\n const expectedValues = this.extractExpectedValues(schema, fieldPath)\n if (expectedValues.length > 0) {\n return `Expected one of: ${expectedValues.join(', ')}. Received: ${JSON.stringify(error.value)}`\n }\n }\n \n // Handle Literal type errors\n if (error.type === 'Literal') {\n const expectedValue = this.extractLiteralValue(schema, fieldPath)\n if (expectedValue !== undefined) {\n return `Expected: ${JSON.stringify(expectedValue)}. Received: ${JSON.stringify(error.value)}`\n }\n }\n \n // Return enhanced message with value info if available\n if (error.value !== undefined) {\n return `${originalMessage}. Received: ${JSON.stringify(error.value)}`\n }\n \n return originalMessage\n }\n\n /**\n * Extract expected values from a schema for a given field path\n */\n private extractExpectedValues(schema: TSchema | null, fieldPath: string): string[] {\n try {\n // Handle TProperty schema - check if this is the dataType field\n if (fieldPath === '/dataType' || fieldPath.endsWith('/dataType')) {\n // Return all ModelPropertyDataTypes enum values\n return Object.values(ModelPropertyDataTypes) as string[]\n }\n \n // Handle TStorageType\n if (fieldPath === '/storageType' || fieldPath.endsWith('/storageType')) {\n return ['ItemStorage', 'PropertyStorage']\n }\n \n // If we have a schema, try to extract from it\n if (!schema) {\n return []\n }\n \n // Try to extract from TypeBox Union type using the schema directly\n const schemaObj = schema as any\n const kind = schemaObj[Symbol.for('TypeBox.Kind')]\n \n if (kind === 'Union') {\n const union = schemaObj as TUnion<any>\n const anyOf = union.anyOf || []\n const values: string[] = []\n \n for (const item of anyOf) {\n const itemKind = item?.[Symbol.for('TypeBox.Kind')]\n if (itemKind === 'Literal') {\n const literal = item as TLiteral<any>\n if (literal.const !== undefined) {\n values.push(String(literal.const))\n }\n }\n }\n \n if (values.length > 0) {\n return values\n }\n }\n \n // Fallback: try to extract from JSON schema format\n if (typeof schema === 'object' && 'anyOf' in schema) {\n const union = schema as any\n if (Array.isArray(union.anyOf)) {\n return union.anyOf\n .map((item: any) => {\n if (item.const !== undefined) return String(item.const)\n if (item.enum && Array.isArray(item.enum)) return item.enum.map(String)\n return null\n })\n .filter((val: any) => val !== null)\n .flat()\n .map(String)\n }\n }\n } catch (error) {\n logger('Error extracting expected values:', error)\n }\n \n return []\n }\n\n /**\n * Extract literal value from a schema\n */\n private extractLiteralValue(schema: TSchema, fieldPath: string): any {\n try {\n if (schema && typeof schema === 'object') {\n const schemaObj = schema as any\n if (schemaObj[Symbol.for('TypeBox.Kind')] === 'Literal') {\n return (schemaObj as TLiteral<any>).const\n }\n if (schemaObj.const !== undefined) {\n return schemaObj.const\n }\n }\n } catch (error) {\n logger('Error extracting literal value:', error)\n }\n \n return undefined\n }\n\n /**\n * Get the schema for a specific field path\n */\n private getSchemaForField(schema: TSchema, fieldPath: string): TSchema | null {\n try {\n if (!schema || typeof schema !== 'object') return null\n \n // Remove leading slash\n const path = fieldPath.replace(/^\\//, '')\n if (!path) return schema\n \n const schemaObj = schema as any\n const kind = schemaObj[Symbol.for('TypeBox.Kind')]\n \n // For TProperty (Object type), check properties\n if (kind === 'Object') {\n const properties = schemaObj.properties\n if (properties && properties[path]) {\n return properties[path]\n }\n }\n \n // Special handling for known fields - return the actual schema\n if (path === 'dataType') {\n return TPropertyDataType as TSchema\n }\n \n // Fallback: check if schema has the property\n if (path in schemaObj) {\n return schemaObj[path]\n }\n } catch (error) {\n logger('Error getting schema for field:', error)\n }\n \n return null\n }\n\n /**\n * Validate a property structure against TProperty schema\n */\n validatePropertyStructure(\n property: ModelPropertyMachineContext\n ): ValidationResult {\n try {\n const isValid = Value.Check(TProperty, property)\n \n const errors: ValidationError[] = []\n \n if (!isValid) {\n const typeBoxErrors = [...Value.Errors(TProperty, property)]\n errors.push(...typeBoxErrors.map(err => {\n const fieldPath = err.path || 'unknown'\n const fieldSchema = this.getSchemaForField(TProperty, fieldPath)\n const enhancedMessage = this.enhanceErrorMessage(err, fieldSchema || TProperty, fieldPath)\n \n return {\n field: fieldPath,\n message: enhancedMessage,\n code: String(err.type || 'validation_error'),\n severity: 'error' as const,\n }\n }))\n }\n \n // Non-List types: refValueType is only valid for Relation+Image (related entity type). Reject otherwise.\n const nonListTypes = [\n ModelPropertyDataTypes.Text,\n ModelPropertyDataTypes.Number,\n ModelPropertyDataTypes.Boolean,\n ModelPropertyDataTypes.Date,\n ModelPropertyDataTypes.Json,\n ModelPropertyDataTypes.Image,\n ModelPropertyDataTypes.File,\n ModelPropertyDataTypes.Html,\n ModelPropertyDataTypes.Relation,\n ]\n if (nonListTypes.includes(property.dataType as ModelPropertyDataTypes)) {\n const hasRefValueType = property.refValueType != null && String(property.refValueType).trim() !== ''\n if (hasRefValueType) {\n // Relation may keep refValueType only for Image (relation to Image entity)\n if (property.dataType === ModelPropertyDataTypes.Relation && property.refValueType === ModelPropertyDataTypes.Image) {\n // Allowed: Relation to Image\n } else {\n errors.push({\n field: 'refValueType',\n message: `refValueType is only valid for List properties. Use dataType 'List' with refValueType '${property.refValueType}' for lists of ${property.refValueType}.`,\n code: 'invalid_ref_value_type',\n severity: 'error' as const,\n })\n }\n }\n }\n\n // List: refValueType is required\n if (property.dataType === ModelPropertyDataTypes.List) {\n const hasRefValueType = property.refValueType != null && String(property.refValueType).trim() !== ''\n if (!hasRefValueType) {\n errors.push({\n field: 'refValueType',\n message: `List properties require refValueType (e.g. 'Text', 'Number', 'Relation') to specify the element type.`,\n code: 'missing_ref_value_type',\n severity: 'error' as const,\n })\n }\n // List of relations: ref is required\n if (hasRefValueType && property.refValueType === ModelPropertyDataTypes.Relation) {\n const hasRef = property.ref && property.ref.trim() !== ''\n const hasRefModelName = property.refModelName && property.refModelName.trim() !== ''\n const hasRefModelId = property.refModelId !== undefined && property.refModelId !== null\n if (!hasRef && !hasRefModelName && !hasRefModelId) {\n errors.push({\n field: 'ref',\n message: `List properties with refValueType 'Relation' require either a \"ref\", \"refModelName\", or \"refModelId\" field to be defined`,\n code: 'missing_ref',\n severity: 'error' as const,\n })\n }\n }\n }\n\n // Relation (single): ref is required\n if (property.dataType === ModelPropertyDataTypes.Relation) {\n const hasRef = property.ref && property.ref.trim() !== ''\n const hasRefModelName = property.refModelName && property.refModelName.trim() !== ''\n const hasRefModelId = property.refModelId !== undefined && property.refModelId !== null\n if (!hasRef && !hasRefModelName && !hasRefModelId) {\n errors.push({\n field: 'ref',\n message: `Property with dataType \"Relation\" requires either a \"ref\", \"refModelName\", or \"refModelId\" field to be defined`,\n code: 'missing_ref',\n severity: 'error' as const,\n })\n }\n if ((hasRef || hasRefModelName) && !hasRefModelId) {\n logger(`Property \"${property.name}\" has ref/refModelName but no refModelId - will be resolved asynchronously`)\n }\n }\n \n return {\n isValid: errors.length === 0,\n errors,\n }\n } catch (error) {\n logger('Error validating property structure:', error)\n return {\n isValid: false,\n errors: [{\n field: 'property',\n message: error instanceof Error ? error.message : 'Unknown validation error',\n code: 'validation_exception',\n severity: 'error' as const,\n }],\n }\n }\n }\n\n /**\n * Validate a property value against its validation rules\n */\n validatePropertyValue(\n value: any,\n dataType: ModelPropertyDataTypes,\n validationRules?: ValidationRules\n ): ValidationResult {\n const errors: ValidationError[] = []\n const warnings: ValidationError[] = []\n\n try {\n // Array values are only allowed for List properties\n if (dataType !== ModelPropertyDataTypes.List && Array.isArray(value)) {\n errors.push({\n field: 'value',\n message: 'Array values are only allowed for List properties. Use dataType \"List\" with refValueType to store multiple values.',\n code: 'array_not_allowed',\n severity: 'error' as const,\n })\n }\n\n // Build base TypeBox schema from dataType\n let schema: TSchema = this.getBaseSchemaForDataType(dataType)\n\n // Apply validation rules\n if (validationRules) {\n schema = this.applyValidationRules(schema, dataType, validationRules)\n }\n\n // Validate using TypeBox\n const isValid = Value.Check(schema, value)\n \n if (!isValid) {\n const typeBoxErrors = [...Value.Errors(schema, value)]\n errors.push(...typeBoxErrors.map(err => {\n const fieldPath = err.path || 'value'\n const enhancedMessage = this.enhanceErrorMessage(err, schema, fieldPath)\n \n return {\n field: fieldPath,\n message: enhancedMessage,\n code: String(err.type || 'value_validation_error'),\n severity: 'error' as const,\n }\n }))\n }\n\n // Additional custom validations\n if (validationRules) {\n const customErrors = this.validateCustomRules(value, validationRules)\n errors.push(...customErrors)\n }\n\n return {\n isValid: errors.length === 0,\n errors,\n warnings: warnings.length > 0 ? warnings : undefined,\n }\n } catch (error) {\n logger('Error validating property value:', error)\n return {\n isValid: false,\n errors: [{\n field: 'value',\n message: error instanceof Error ? error.message : 'Unknown validation error',\n code: 'validation_exception',\n severity: 'error' as const,\n }],\n }\n }\n }\n\n /**\n * Validate a specific property within a schema\n */\n validateProperty(\n schema: SchemaMachineContext,\n modelName: string,\n propertyName: string,\n propertyData?: ModelPropertyMachineContext\n ): ValidationResult {\n const errors: ValidationError[] = []\n\n // Check if model exists\n if (!schema.models || !schema.models[modelName]) {\n errors.push({\n field: 'model',\n message: `Model \"${modelName}\" not found in schema`,\n code: 'model_not_found',\n severity: 'error' as const,\n })\n return { isValid: false, errors }\n }\n\n const model = schema.models[modelName]\n\n // Check if property exists in model\n // If the property name has changed (renamed), check if the original name exists\n let propertyDefinition = model.properties?.[propertyName]\n let actualPropertyName = propertyName\n \n if (!propertyDefinition && propertyData?._originalValues?.name) {\n const originalName = propertyData._originalValues.name\n // If the current name differs from the original, check if original exists\n if (originalName !== propertyName && model.properties?.[originalName]) {\n propertyDefinition = model.properties[originalName]\n actualPropertyName = originalName\n // Property is being renamed, which is allowed - continue validation\n }\n }\n \n if (!propertyDefinition) {\n errors.push({\n field: 'property',\n message: `Property \"${propertyName}\" not found in model \"${modelName}\"`,\n code: 'property_not_found',\n severity: 'error' as const,\n })\n return { isValid: false, errors }\n }\n\n // If propertyData is provided, validate its structure\n if (propertyData) {\n const structureResult = this.validatePropertyStructure(propertyData)\n errors.push(...structureResult.errors)\n }\n\n // Validate property definition structure\n if (!propertyDefinition.type) {\n errors.push({\n field: 'property.type',\n message: 'Property type is required',\n code: 'missing_type',\n severity: 'error' as const,\n })\n }\n\n // Validate Relation: requires model\n if (propertyDefinition.type === 'Relation') {\n if (!propertyDefinition.model || propertyDefinition.model.trim() === '') {\n errors.push({\n field: 'property.model',\n message: `Property with type \"Relation\" requires a \"model\" field to be defined`,\n code: 'missing_ref',\n severity: 'error' as const,\n })\n } else if (!schema.models[propertyDefinition.model]) {\n errors.push({\n field: 'property.model',\n message: `Referenced model \"${propertyDefinition.model}\" not found in schema`,\n code: 'invalid_reference',\n severity: 'error' as const,\n })\n }\n }\n\n // Validate List: requires items with type; model required only when items.type === 'Relation'\n if (propertyDefinition.type === 'List') {\n const items = (propertyDefinition as any).items\n if (!items || !items.type) {\n errors.push({\n field: 'property.items',\n message: 'List properties require \"items\" with \"type\" (e.g. items: { type: \"Text\" } or items: { type: \"Relation\", model: \"Tag\" })',\n code: 'missing_items',\n severity: 'error' as const,\n })\n } else if (items.type === 'Relation' || items.type === 'RelationProperty') {\n const model = items.model || propertyDefinition.model\n if (!model || String(model).trim() === '') {\n errors.push({\n field: 'property.items.model',\n message: 'List of relations requires \"items.model\" to specify the related model',\n code: 'missing_ref',\n severity: 'error' as const,\n })\n } else if (schema.models && !schema.models[model]) {\n errors.push({\n field: 'property.items.model',\n message: `Referenced model \"${model}\" not found in schema`,\n code: 'invalid_reference',\n severity: 'error' as const,\n })\n }\n }\n }\n\n return {\n isValid: errors.length === 0,\n errors,\n }\n }\n\n /**\n * Validate model structure (basic structure checks)\n */\n validateModelStructure(\n model: ModelMachineContext & { properties?: { [key: string]: any } }\n ): ValidationResult {\n const errors: ValidationError[] = []\n\n // Validate model name\n if (!model.modelName || model.modelName.trim() === '') {\n errors.push({\n field: 'modelName',\n message: 'Model name is required',\n code: 'missing_model_name',\n severity: 'error' as const,\n })\n }\n\n // Validate schema name\n if (!model.schemaName || model.schemaName.trim() === '') {\n errors.push({\n field: 'schemaName',\n message: 'Schema name is required',\n code: 'missing_schema_name',\n severity: 'error' as const,\n })\n }\n\n // Validate properties is an object\n if (model.properties && typeof model.properties !== 'object') {\n errors.push({\n field: 'properties',\n message: 'Properties must be an object',\n code: 'invalid_properties',\n severity: 'error' as const,\n })\n }\n\n return {\n isValid: errors.length === 0,\n errors,\n }\n }\n\n /**\n * Validate a model against a schema WITHOUT requiring it to be in the schema's context\n * This allows validation before registration, preventing update loops\n */\n validateModelAgainstSchema(\n schema: SchemaMachineContext,\n modelName: string,\n modelData: ModelMachineContext & { properties?: { [key: string]: any } }\n ): ValidationResult {\n const errors: ValidationError[] = []\n\n // Create a temporary schema context that includes this model for validation purposes\n // This allows validateProperty to work without actually adding the model to the real schema\n const tempSchemaContext: SchemaMachineContext = {\n ...schema,\n models: {\n ...schema.models,\n [modelName]: {\n properties: modelData.properties || {},\n },\n },\n }\n\n // Use validateModel which now works because the model is in the temp context\n return this.validateModel(tempSchemaContext, modelName, modelData)\n }\n\n /**\n * Validate a model within a schema (requires model to already be in schema context)\n */\n validateModel(\n schema: SchemaMachineContext,\n modelName: string,\n modelData?: ModelMachineContext\n ): ValidationResult {\n const errors: ValidationError[] = []\n\n if (!schema.models || !schema.models[modelName]) {\n errors.push({\n field: 'model',\n message: `Model \"${modelName}\" not found in schema`,\n code: 'model_not_found',\n severity: 'error' as const,\n })\n return { isValid: false, errors }\n }\n\n const model = schema.models[modelName]\n\n // Validate all properties in the model\n if (model.properties) {\n for (const [propertyName, propertyDef] of Object.entries(model.properties)) {\n const propertyResult = this.validateProperty(schema, modelName, propertyName)\n if (!propertyResult.isValid) {\n errors.push(...propertyResult.errors.map(err => ({\n ...err,\n field: `${modelName}.${propertyName}.${err.field}`,\n })))\n }\n }\n }\n\n return {\n isValid: errors.length === 0,\n errors,\n }\n }\n\n /**\n * Validate entire schema\n */\n validateSchema(schema: SchemaMachineContext): ValidationResult {\n const errors: ValidationError[] = []\n\n // Validate schema name\n if (!schema.schemaName || schema.schemaName.trim() === '') {\n errors.push({\n field: 'schemaName',\n message: 'Schema name is required',\n code: 'missing_schema_name',\n severity: 'error' as const,\n })\n }\n\n // Validate metadata\n if (!schema.metadata) {\n errors.push({\n field: 'metadata',\n message: 'Schema metadata is required',\n code: 'missing_metadata',\n severity: 'error' as const,\n })\n } else {\n if (!schema.metadata.name || schema.metadata.name.trim() === '') {\n errors.push({\n field: 'metadata.name',\n message: 'Schema metadata name is required',\n code: 'missing_metadata_name',\n severity: 'error' as const,\n })\n }\n }\n\n // Validate models if they exist\n if (schema.models && Object.keys(schema.models).length > 0) {\n // Validate each model\n for (const modelName of Object.keys(schema.models)) {\n const modelResult = this.validateModel(schema, modelName)\n if (!modelResult.isValid) {\n errors.push(...modelResult.errors)\n }\n }\n }\n\n return {\n isValid: errors.length === 0,\n errors,\n }\n }\n\n /**\n * Get base TypeBox schema for a data type\n */\n private getBaseSchemaForDataType(dataType: ModelPropertyDataTypes): TSchema {\n switch (dataType) {\n case ModelPropertyDataTypes.Text:\n case ModelPropertyDataTypes.Html:\n return Type.String()\n case ModelPropertyDataTypes.Number:\n return Type.Number()\n case ModelPropertyDataTypes.Boolean:\n return Type.Boolean()\n case ModelPropertyDataTypes.Date:\n return Type.String({ format: 'date-time' })\n case ModelPropertyDataTypes.Json:\n return Type.Any()\n case ModelPropertyDataTypes.List:\n return Type.Array(Type.Any())\n case ModelPropertyDataTypes.Relation:\n case ModelPropertyDataTypes.Image:\n case ModelPropertyDataTypes.File:\n return Type.Union([Type.String(), Type.Null()])\n default:\n return Type.Any()\n }\n }\n\n /**\n * Apply validation rules to a TypeBox schema\n */\n private applyValidationRules(\n schema: TSchema,\n dataType: ModelPropertyDataTypes,\n rules: ValidationRules\n ): TSchema {\n let result = schema\n\n // Apply pattern (regex) for strings\n if (rules.pattern && (dataType === ModelPropertyDataTypes.Text || dataType === ModelPropertyDataTypes.Html)) {\n try {\n const regex = new RegExp(rules.pattern)\n result = Type.RegExp(regex)\n } catch (error) {\n logger('Invalid regex pattern:', rules.pattern, error)\n }\n }\n\n // Apply minLength/maxLength for strings\n if (dataType === ModelPropertyDataTypes.Text || dataType === ModelPropertyDataTypes.Html) {\n const stringSchema = Type.String()\n if (rules.minLength !== undefined) {\n result = Type.String({ minLength: rules.minLength })\n }\n if (rules.maxLength !== undefined) {\n if (rules.minLength !== undefined) {\n result = Type.String({ minLength: rules.minLength, maxLength: rules.maxLength })\n } else {\n result = Type.String({ maxLength: rules.maxLength })\n }\n }\n }\n\n // Apply enum\n if (rules.enum && Array.isArray(rules.enum) && rules.enum.length > 0) {\n result = Type.Union(rules.enum.map(val => Type.Literal(val)))\n }\n\n return result\n }\n\n /**\n * Validate custom validation rules\n */\n private validateCustomRules(\n value: any,\n rules: ValidationRules\n ): ValidationError[] {\n const errors: ValidationError[] = []\n\n // Custom validator reference (would need to be implemented based on your needs)\n if (rules.custom) {\n // TODO: Implement custom validator lookup and execution\n logger('Custom validator not yet implemented:', rules.custom)\n }\n\n return errors\n }\n}\n\n"],"names":["ModelPropertyDataTypes","TPropertyDataType","Value","TProperty","value","Type"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var main_cjs = require('./index-BLETlVgA.js');
3
+ var main_cjs = require('./index-CA4i5TA7.js');
4
4
  var lodashEs = require('lodash-es');
5
5
  require('immer');
6
6
  require('reflect-metadata');
@@ -52,4 +52,4 @@ const getItem = async ({ modelName, seedLocalId, seedUid }) => {
52
52
  };
53
53
 
54
54
  exports.getItem = getItem;
55
- //# sourceMappingURL=getItem-Dlb5YSQn.js.map
55
+ //# sourceMappingURL=getItem-CAYQYTpg.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getItem-Dlb5YSQn.js","sources":["../../../src/db/read/getItem.ts"],"sourcesContent":["import { getItemData } from './getItemData'\nimport { GetItem } from '@/types'\nimport { Item } from '@/Item/Item'\nimport { startCase } from 'lodash-es'\n\nexport const getItem: GetItem = async ({ modelName, seedLocalId, seedUid }) => {\n const itemInitObj = await getItemData({\n modelName,\n seedLocalId,\n seedUid,\n })\n\n if (!itemInitObj) {\n console.error(\n `[db/queries] [getItem] no itemInitObj modelName: ${modelName} seedLocalId: ${seedLocalId} seedUid: ${seedUid}`,\n )\n return\n }\n\n if (!itemInitObj.seedLocalId) {\n console.error(\n `[db/queries] [getItem] no itemInitObj.seedLocalId modelName: ${modelName} seedLocalId: ${seedLocalId} seedUid: ${seedUid}`,\n )\n return\n }\n\n if (!itemInitObj.modelName && itemInitObj.type) {\n itemInitObj.modelName = startCase(itemInitObj.type)\n }\n\n return Item.create(itemInitObj)\n}\n"],"names":["getItemData","startCase","Item"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKO,MAAM,OAAO,GAAY,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,KAAI;AAC5E,IAAA,MAAM,WAAW,GAAG,MAAMA,oBAAW,CAAC;QACpC,SAAS;QACT,WAAW;QACX,OAAO;AACR,KAAA,CAAC;IAEF,IAAI,CAAC,WAAW,EAAE;QAChB,OAAO,CAAC,KAAK,CACX,CAAA,iDAAA,EAAoD,SAAS,CAAA,cAAA,EAAiB,WAAW,CAAA,UAAA,EAAa,OAAO,CAAA,CAAE,CAChH;QACD;IACF;AAEA,IAAA,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE;QAC5B,OAAO,CAAC,KAAK,CACX,CAAA,6DAAA,EAAgE,SAAS,CAAA,cAAA,EAAiB,WAAW,CAAA,UAAA,EAAa,OAAO,CAAA,CAAE,CAC5H;QACD;IACF;IAEA,IAAI,CAAC,WAAW,CAAC,SAAS,IAAI,WAAW,CAAC,IAAI,EAAE;QAC9C,WAAW,CAAC,SAAS,GAAGC,kBAAS,CAAC,WAAW,CAAC,IAAI,CAAC;IACrD;AAEA,IAAA,OAAOC,aAAI,CAAC,MAAM,CAAC,WAAW,CAAC;AACjC;;;;"}
1
+ {"version":3,"file":"getItem-CAYQYTpg.js","sources":["../../../src/db/read/getItem.ts"],"sourcesContent":["import { getItemData } from './getItemData'\nimport { GetItem } from '@/types'\nimport { Item } from '@/Item/Item'\nimport { startCase } from 'lodash-es'\n\nexport const getItem: GetItem = async ({ modelName, seedLocalId, seedUid }) => {\n const itemInitObj = await getItemData({\n modelName,\n seedLocalId,\n seedUid,\n })\n\n if (!itemInitObj) {\n console.error(\n `[db/queries] [getItem] no itemInitObj modelName: ${modelName} seedLocalId: ${seedLocalId} seedUid: ${seedUid}`,\n )\n return\n }\n\n if (!itemInitObj.seedLocalId) {\n console.error(\n `[db/queries] [getItem] no itemInitObj.seedLocalId modelName: ${modelName} seedLocalId: ${seedLocalId} seedUid: ${seedUid}`,\n )\n return\n }\n\n if (!itemInitObj.modelName && itemInitObj.type) {\n itemInitObj.modelName = startCase(itemInitObj.type)\n }\n\n return Item.create(itemInitObj)\n}\n"],"names":["getItemData","startCase","Item"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKO,MAAM,OAAO,GAAY,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,KAAI;AAC5E,IAAA,MAAM,WAAW,GAAG,MAAMA,oBAAW,CAAC;QACpC,SAAS;QACT,WAAW;QACX,OAAO;AACR,KAAA,CAAC;IAEF,IAAI,CAAC,WAAW,EAAE;QAChB,OAAO,CAAC,KAAK,CACX,CAAA,iDAAA,EAAoD,SAAS,CAAA,cAAA,EAAiB,WAAW,CAAA,UAAA,EAAa,OAAO,CAAA,CAAE,CAChH;QACD;IACF;AAEA,IAAA,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE;QAC5B,OAAO,CAAC,KAAK,CACX,CAAA,6DAAA,EAAgE,SAAS,CAAA,cAAA,EAAiB,WAAW,CAAA,UAAA,EAAa,OAAO,CAAA,CAAE,CAC5H;QACD;IACF;IAEA,IAAI,CAAC,WAAW,CAAC,SAAS,IAAI,WAAW,CAAC,IAAI,EAAE;QAC9C,WAAW,CAAC,SAAS,GAAGC,kBAAS,CAAC,WAAW,CAAC,IAAI,CAAC;IACrD;AAEA,IAAA,OAAOC,aAAI,CAAC,MAAM,CAAC,WAAW,CAAC;AACjC;;;;"}
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var main_cjs = require('./index-BLETlVgA.js');
3
+ var main_cjs = require('./index-CA4i5TA7.js');
4
4
  var pluralize = require('pluralize');
5
- var getSegmentedItemProperties = require('./getSegmentedItemProperties-JT984OOp.js');
5
+ var getSegmentedItemProperties = require('./getSegmentedItemProperties-MVZ-0mQG.js');
6
6
  var debug = require('debug');
7
7
  var ethers = require('ethers');
8
8
  require('reflect-metadata');
@@ -171,7 +171,7 @@ const processRelationOrImageProperty = async (relationOrImageProperty, multiPubl
171
171
  return multiPublishPayload;
172
172
  }
173
173
  // Use dynamic import to break circular dependency
174
- const getItemMod = await Promise.resolve().then(function () { return require('./getItem-Dlb5YSQn.js'); });
174
+ const getItemMod = await Promise.resolve().then(function () { return require('./getItem-CAYQYTpg.js'); });
175
175
  const { getItem } = getItemMod;
176
176
  const relatedItem = await getItem({
177
177
  seedLocalId,
@@ -274,7 +274,7 @@ const processListProperty = async (listProperty, multiPublishPayload, originalSe
274
274
  for (const seedId of value) {
275
275
  const { localId: seedLocalId, uid: seedUid } = main_cjs.getCorrectId(seedId);
276
276
  // Use dynamic import to break circular dependency
277
- const getItemMod = await Promise.resolve().then(function () { return require('./getItem-Dlb5YSQn.js'); });
277
+ const getItemMod = await Promise.resolve().then(function () { return require('./getItem-CAYQYTpg.js'); });
278
278
  const { getItem } = getItemMod;
279
279
  const relatedItem = await getItem({
280
280
  seedLocalId,
@@ -517,4 +517,4 @@ const resolvePublishPayloadValues = async (multiPayload, resolvedUids) => {
517
517
 
518
518
  exports.getPublishPayload = getPublishPayload;
519
519
  exports.resolvePublishPayloadValues = resolvePublishPayloadValues;
520
- //# sourceMappingURL=getPublishPayload-BqL06sEI.js.map
520
+ //# sourceMappingURL=getPublishPayload-CBuGIazw.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getPublishPayload-BqL06sEI.js","sources":["../../../src/db/read/getPublishPayload.ts"],"sourcesContent":["// Dynamic import to break circular dependency with getItem -> BaseItem\n// import { getItem } from '@/db/read/getItem'\nimport {\n defaultAttestationData,\n INTERNAL_DATA_TYPES,\n VERSION_SCHEMA_UID_OPTIMISM_SEPOLIA,\n ZERO_BYTES32,\n} from '@/helpers/constants'\nimport {\n AttestationRequest,\n AttestationRequestData,\n} from '@ethereum-attestation-service/eas-sdk'\n\nimport { getEasSchemaForItemProperty } from '@/helpers/getSchemaForItemProperty'\nimport { toSnakeCase } from '@/helpers'\nimport pluralize from 'pluralize'\nimport { getEasSchemaUidForModel } from './getSchemaUidForModel'\nimport { getEasSchemaUidForSchemaDefinition } from '@/stores/eas'\nimport { getCorrectId } from '@/helpers'\nimport { getSegmentedItemProperties } from '@/helpers/getSegmentedItemProperties'\nimport { IItemProperty } from '@/interfaces'\nimport { IItem } from '@/interfaces'\nimport { Item } from '@/Item/Item'\nimport debug from 'debug'\nimport {ethers} from 'ethers'\nimport { ModelPropertyDataTypes } from '@/Schema'\nconst logger = debug('seedSdk:db:getPublishPayload')\n\nconst getVersionUid = (item: IItem<any>): string => {\n const latestVersion = item.latestVersionUid\n if (latestVersion && typeof latestVersion === 'object' && latestVersion.uid) {\n return latestVersion.uid\n }\n if (latestVersion && typeof latestVersion === 'string') {\n return latestVersion\n }\n return ZERO_BYTES32\n}\n\nconst getPropertyData = async (itemProperty: IItemProperty<any>) => {\n const easDataType =\n INTERNAL_DATA_TYPES[itemProperty.propertyDef!.dataType].eas\n\n let schemaUid: string | undefined = itemProperty.schemaUid\n\n const propertyNameForSchema = toSnakeCase(itemProperty.propertyName)\n\n const schemaDef = `${easDataType} ${propertyNameForSchema}`\n\n if (!schemaUid) {\n schemaUid = await getEasSchemaUidForSchemaDefinition({ schemaText: schemaDef })\n if (!schemaUid) {\n const schema = await getEasSchemaForItemProperty({\n propertyName: 'version',\n easDataType: 'bytes32',\n })\n if (schema) {\n schemaUid = schema.id\n }\n }\n }\n\n return {\n schemaUid,\n easDataType,\n schemaDef,\n propertyNameForSchema,\n }\n}\n\n// Lazy import SchemaEncoder to avoid module resolution issues with ts-import\nlet SchemaEncoderClass: typeof import('@ethereum-attestation-service/eas-sdk').SchemaEncoder | null = null\nconst getSchemaEncoder = async () => {\n if (!SchemaEncoderClass) {\n const easSdk = await import('@ethereum-attestation-service/eas-sdk')\n SchemaEncoderClass = easSdk.SchemaEncoder\n }\n return SchemaEncoderClass\n}\n\nconst processBasicProperties = async (\n itemBasicProperties: IItemProperty<any>[],\n itemPublishData: PublishPayload,\n): Promise<PublishPayload> => {\n for (const basicProperty of itemBasicProperties) {\n const snapshot = basicProperty.getService().getSnapshot()\n const context = 'context' in snapshot ? snapshot.context : null\n if (!context) {\n continue\n }\n let value = (context as any).propertyValue\n\n if (!value || basicProperty.uid) {\n continue\n }\n\n const { schemaUid, easDataType, schemaDef } =\n await getPropertyData(basicProperty)\n\n const propertyNameForSchema = toSnakeCase(basicProperty.propertyName)\n\n if (schemaDef.startsWith('bytes32[]') && !Array.isArray(value)) {\n throw new Error(`Invalid value for property: ${basicProperty.propertyName}. Expected an array of bytes32, got ${value}.`)\n }\n\n if (schemaDef.startsWith('bytes32[]')) {\n const newValues = []\n for (const seedId of value) {\n if (seedId.length !== 66 && !seedId.startsWith('0x')) {\n newValues.push(ethers.encodeBytes32String(seedId))\n continue\n }\n newValues.push(seedId)\n }\n value = newValues\n }\n\n // uint256 (Date) must be numeric/BigInt; normalize ISO strings to Unix seconds\n if (easDataType === 'uint256' && (typeof value === 'string' || value instanceof Date)) {\n const ms = value instanceof Date ? value.getTime() : new Date(value).getTime()\n value = BigInt(Math.floor(ms / 1000))\n }\n\n let data = [\n {\n name: propertyNameForSchema,\n type: easDataType,\n value,\n },\n ]\n\n const SchemaEncoder = await getSchemaEncoder()\n const dataEncoder = new SchemaEncoder(schemaDef)\n\n const encodedData = dataEncoder.encodeData(data)\n\n // For storageTransactionId, set refUID to versionUid so it references the Version attestation (contract may use when supported)\n const refUid =\n basicProperty.propertyName === 'storageTransactionId'\n ? itemPublishData.versionUid\n : defaultAttestationData.refUID\n\n const attestationEntry: Omit<AttestationRequest, 'data'> & {\n data: AttestationRequestData[]\n _propertyName?: string\n _schemaDef?: string\n _unresolvedValue?: string\n _easDataType?: string\n } = {\n schema: schemaUid!,\n data: [\n {\n ...defaultAttestationData,\n refUID: refUid,\n data: encodedData,\n } as AttestationRequestData,\n ],\n }\n\n // For relation/image properties with seedLocalId, store resolution hints for resolvePublishPayloadValues\n if (\n typeof value === 'string' &&\n value.length === 10 &&\n (easDataType === 'bytes32' || easDataType === 'string')\n ) {\n attestationEntry._propertyName = basicProperty.propertyName\n attestationEntry._schemaDef = schemaDef\n attestationEntry._unresolvedValue = value\n attestationEntry._easDataType = easDataType\n }\n\n itemPublishData.listOfAttestations.push(attestationEntry)\n }\n\n return itemPublishData\n}\n\n\nconst processRelationOrImageProperty = async (\n relationOrImageProperty: IItemProperty<any>,\n multiPublishPayload: MultiPublishPayload,\n uploadedTransactions: UploadedTransaction[],\n originalSeedLocalId: string,\n): Promise<MultiPublishPayload> => {\n let relationOrImageSchemaUid = relationOrImageProperty.schemaUid\n if (!relationOrImageSchemaUid && relationOrImageProperty.propertyDef) {\n const propertyData = await getPropertyData(relationOrImageProperty)\n relationOrImageSchemaUid = propertyData.schemaUid\n }\n if (!relationOrImageSchemaUid) {\n throw new Error(\n `Schema uid not found for relation or image property: ${relationOrImageProperty.propertyName}`,\n )\n }\n\n const snapshot = relationOrImageProperty.getService().getSnapshot()\n const context = 'context' in snapshot ? snapshot.context : null\n if (!context) {\n return multiPublishPayload\n }\n const value = (context as any).propertyValue\n if (!value || relationOrImageProperty.uid) {\n return multiPublishPayload\n }\n\n const { localId: seedLocalId, uid: seedUid } = getCorrectId(value)\n\n // Value is not a valid seed reference (10-char localId or 66-char uid); skip (e.g. Html with inline content)\n if (!seedLocalId && !seedUid) {\n return multiPublishPayload\n }\n\n // Use dynamic import to break circular dependency\n const getItemMod = await import('../../db/read/getItem')\n const { getItem } = getItemMod\n const relatedItem = await getItem({\n seedLocalId,\n seedUid,\n })\n\n if (!relatedItem) {\n throw new Error(\n `No related item found for relation or image property: ${relationOrImageProperty.propertyName}`,\n )\n }\n\n // When Image/Relation already has seedUid (published), skip creating its payload—only add the property to parent\n if (relatedItem.seedUid) {\n return multiPublishPayload\n }\n\n const versionUid = getVersionUid(relatedItem)\n\n let modelName: string | undefined\n\n if (relationOrImageProperty.propertyDef?.dataType === ModelPropertyDataTypes.Image) {\n modelName = 'Image'\n }\n\n if (relationOrImageProperty.propertyDef?.dataType === ModelPropertyDataTypes.File) {\n modelName = 'File'\n }\n\n if (relationOrImageProperty.propertyDef?.dataType === ModelPropertyDataTypes.Html) {\n modelName = 'Html'\n }\n\n if (relationOrImageProperty.propertyDef?.dataType === ModelPropertyDataTypes.Relation) {\n const def = relationOrImageProperty.propertyDef as { ref?: string; refModelName?: string }\n modelName = def.ref ?? def.refModelName\n }\n\n if (!modelName) {\n throw new Error(`Model name not found for relation or image property: ${relationOrImageProperty.propertyName}`)\n }\n\n const seedSchemaUid = await getEasSchemaUidForModel(modelName)\n \n if (!seedSchemaUid) {\n throw new Error(`Schema UID not found for model: ${modelName}`)\n }\n\n let publishPayload: PublishPayload = {\n localId: relatedItem.seedLocalId,\n seedIsRevocable: true,\n versionSchemaUid: VERSION_SCHEMA_UID_OPTIMISM_SEPOLIA,\n seedUid: seedUid || ZERO_BYTES32,\n seedSchemaUid,\n versionUid,\n listOfAttestations: [],\n propertiesToUpdate: [\n {\n publishLocalId: originalSeedLocalId,\n propertySchemaUid: relationOrImageSchemaUid,\n },\n ],\n }\n\n const { itemBasicProperties, itemUploadProperties } =\n getSegmentedItemProperties(relatedItem)\n\n if (itemUploadProperties.length === 1) {\n const uploadProperty = itemUploadProperties[0]\n const itemProperty = uploadProperty.itemProperty\n const transactionData = uploadedTransactions.find(\n (transaction) => transaction.seedLocalId === relatedItem.seedLocalId,\n )\n if (transactionData) {\n itemProperty.value = transactionData.txId\n await itemProperty.save()\n itemBasicProperties.push(itemProperty)\n }\n }\n\n publishPayload = await processBasicProperties(\n itemBasicProperties,\n publishPayload,\n )\n\n multiPublishPayload.push(publishPayload)\n\n return multiPublishPayload\n}\n\nconst processListProperty = async (\n listProperty: IItemProperty<any>,\n multiPublishPayload: MultiPublishPayload,\n originalSeedLocalId: string,\n): Promise<MultiPublishPayload> => {\n // processListProperty only handles list-of-relations; list-of-primitives go to itemBasicProperties\n if (!listProperty.propertyDef?.ref) {\n throw new Error(\n `processListProperty requires ref (list of relations). List property \"${listProperty.propertyName}\" has no ref. List-of-primitives should be in itemBasicProperties.`,\n )\n }\n let listPropertySchemaUid = listProperty.schemaUid\n if (!listPropertySchemaUid && listProperty.propertyDef) {\n const propertyData = await getPropertyData(listProperty)\n listPropertySchemaUid = propertyData.schemaUid\n }\n if (!listPropertySchemaUid) {\n throw new Error(\n `Schema uid not found for list property: ${listProperty.propertyName}`,\n )\n }\n\n const snapshot = listProperty.getService().getSnapshot()\n const context = 'context' in snapshot ? snapshot.context : null\n if (!context) {\n return multiPublishPayload\n }\n let value = (context as any).propertyValue\n if (!value || listProperty.uid) {\n return multiPublishPayload\n }\n\n const singularPropertyName = pluralize.singular(listProperty.propertyName)\n const propertyNameForSchema = `${singularPropertyName}${listProperty.propertyDef!.ref}Ids`\n if (typeof value === 'string' && value.length === 66) {\n value = [value]\n }\n if (typeof value === 'string' && value.length > 66) {\n try {\n value = JSON.parse(value)\n } catch (error) {\n value = value.split(',')\n }\n }\n\n for (const seedId of value) {\n const { localId: seedLocalId, uid: seedUid } = getCorrectId(seedId)\n\n // Use dynamic import to break circular dependency\n const getItemMod = await import('../../db/read/getItem')\n const { getItem } = getItemMod\n const relatedItem = await getItem({\n seedLocalId,\n seedUid,\n })\n\n if (!relatedItem) {\n console.error(\n `No related item found for list property: ${listProperty.propertyName}`,\n )\n continue\n }\n\n if (relatedItem.seedUid) {\n return multiPublishPayload\n }\n\n const versionUid = getVersionUid(relatedItem)\n\n let modelName: string | undefined\n\n if (listProperty.propertyDef?.ref || (listProperty.propertyDef as { refModelName?: string }).refModelName) {\n const def = listProperty.propertyDef as { ref?: string; refModelName?: string }\n modelName = def.ref ?? def.refModelName\n }\n\n if (listProperty.propertyDef?.dataType === ModelPropertyDataTypes.Image) {\n modelName = 'Image'\n }\n\n if (listProperty.propertyDef?.dataType === ModelPropertyDataTypes.File) {\n modelName = 'File'\n }\n\n if (listProperty.propertyDef?.dataType === ModelPropertyDataTypes.Html) {\n modelName = 'Html'\n }\n\n if (!modelName) {\n throw new Error(`Model name not found for list property: ${listProperty.propertyName}`)\n }\n\n const seedSchemaUid = await getEasSchemaUidForModel(modelName)\n \n if (!seedSchemaUid) {\n throw new Error(`Schema UID not found for model: ${modelName}`)\n }\n\n let publishPayload: PublishPayload = {\n localId: relatedItem.seedLocalId,\n seedIsRevocable: true,\n versionSchemaUid: VERSION_SCHEMA_UID_OPTIMISM_SEPOLIA,\n seedUid: seedUid || ZERO_BYTES32,\n seedSchemaUid,\n versionUid,\n listOfAttestations: [],\n propertiesToUpdate: [\n {\n publishLocalId: originalSeedLocalId,\n propertySchemaUid: listPropertySchemaUid,\n },\n ],\n }\n\n const { itemBasicProperties } = getSegmentedItemProperties(relatedItem)\n\n publishPayload = await processBasicProperties(\n itemBasicProperties,\n publishPayload,\n )\n\n multiPublishPayload.push(publishPayload)\n }\n\n return multiPublishPayload\n}\n\ntype PublishPayload = {\n localId: string\n seedIsRevocable: boolean\n seedSchemaUid: string\n seedUid: string\n versionSchemaUid: string\n versionUid: string\n listOfAttestations: (Omit<AttestationRequest, 'data'> & {\n data: AttestationRequestData[]\n _propertyName?: string\n _schemaDef?: string\n _unresolvedValue?: string\n })[]\n propertiesToUpdate: any[]\n}\n\ntype MultiPublishPayload = PublishPayload[]\n\n/** Map of seed localId -> attestation uid for resolving relation/image property values after dependent seeds are published */\nexport type ResolvedSeedUids = Record<string, string>\n\ntype UploadedTransaction = {\n txId: string\n itemPropertyLocalId?: string\n seedLocalId?: string\n versionLocalId?: string\n itemPropertyName?: string\n}\n\nexport const getPublishPayload = async (\n item: Item<any>,\n uploadedTransactions: UploadedTransaction[],\n): Promise<MultiPublishPayload> => {\n\n let multiPublishPayload: MultiPublishPayload = []\n\n // Each PublishPayload is generated from a Seed that needs publishing\n\n // First we need to determine all Seeds to publish\n\n // That means the Seed of the Item, plus any Seeds pointed to by Relations\n\n // Check if the item has a schema UID\n let itemSchemaUid = item.schemaUid\n if (!itemSchemaUid) {\n const schemaUid = await getEasSchemaUidForModel(item.modelName)\n if (!schemaUid) {\n throw new Error(`Schema UID not found for model: ${item.modelName}`)\n }\n itemSchemaUid = schemaUid\n }\n\n let itemPublishData: PublishPayload = {\n localId: item.seedLocalId,\n seedUid: item.seedUid || ZERO_BYTES32,\n seedIsRevocable: true,\n seedSchemaUid: itemSchemaUid,\n versionSchemaUid: VERSION_SCHEMA_UID_OPTIMISM_SEPOLIA,\n versionUid: getVersionUid(item),\n listOfAttestations: [],\n propertiesToUpdate: [],\n }\n\n const {\n itemBasicProperties,\n itemListProperties,\n itemUploadProperties,\n itemImageProperties,\n itemRelationProperties,\n } = getSegmentedItemProperties(item)\n\n const relationAndImageProperties = [...itemRelationProperties, ...itemImageProperties]\n\n if (itemUploadProperties.length === 1) {\n const uploadProperty = itemUploadProperties[0]\n const itemProperty = uploadProperty.itemProperty\n const transactionData = uploadedTransactions.find(\n (transaction) => transaction.seedLocalId === item.seedLocalId,\n )\n if (transactionData) {\n itemProperty.value = transactionData.txId\n await itemProperty.save()\n itemBasicProperties.push(itemProperty)\n }\n }\n\n for (const relationProperty of relationAndImageProperties) {\n multiPublishPayload = await processRelationOrImageProperty(\n relationProperty,\n multiPublishPayload,\n uploadedTransactions,\n item.seedLocalId,\n )\n itemBasicProperties.push(relationProperty)\n }\n\n for (const listProperty of itemListProperties) {\n multiPublishPayload = await processListProperty(\n listProperty,\n multiPublishPayload,\n item.seedLocalId,\n )\n itemBasicProperties.push(listProperty)\n }\n \n itemPublishData = await processBasicProperties(\n itemBasicProperties,\n itemPublishData,\n )\n\n multiPublishPayload.push(itemPublishData)\n\n // Ensure requests are ordered so that when A has propertiesToUpdate pointing to B (publishLocalId),\n // A (the updater) is published before B (the updatee). The contract injects A's seedUid into B's\n // attestation before B is sent to EAS.\n multiPublishPayload = orderPayloadByDependencies(multiPublishPayload)\n\n // Ensure attestations referenced in propertiesToUpdate have at least one data element.\n // The contract writes the seed UID into data[0].data; empty data causes Panic 50.\n multiPublishPayload = ensurePropertiesToUpdateAttestationsHaveData(multiPublishPayload)\n\n return multiPublishPayload\n}\n\n/**\n * Normalize a schema UID to 0x-prefixed 64-char hex for comparison.\n */\nfunction normalizeSchemaUid(v: string | undefined): string {\n if (v == null || v === '') return ''\n const raw = v.startsWith('0x') ? v.slice(2) : v\n const hex = raw.replace(/[^0-9a-fA-F]/g, '0').padStart(64, '0').slice(-64)\n return ('0x' + hex).toLowerCase()\n}\n\n/**\n * Ensure that when request A has propertiesToUpdate with (publishLocalId: B, propertySchemaUid: X),\n * request B has an attestation for schema X with at least one data element. The contract writes\n * the seed UID into data[0].data; empty data causes Panic 50.\n */\nfunction ensurePropertiesToUpdateAttestationsHaveData(\n payload: MultiPublishPayload,\n): MultiPublishPayload {\n const byLocalId = new Map<string, PublishPayload>()\n for (const p of payload) {\n byLocalId.set(p.localId, p)\n }\n\n const placeholderData: AttestationRequestData = {\n ...defaultAttestationData,\n data: ZERO_BYTES32,\n }\n\n for (const req of payload) {\n for (const pu of req.propertiesToUpdate ?? []) {\n const targetId = (pu as { publishLocalId?: string }).publishLocalId\n const schemaUid = (pu as { propertySchemaUid?: string }).propertySchemaUid\n if (!targetId || !schemaUid) continue\n\n const targetReq = byLocalId.get(targetId)\n if (!targetReq?.listOfAttestations) continue\n\n const wantSchema = normalizeSchemaUid(schemaUid)\n const att = targetReq.listOfAttestations.find(\n (a) => normalizeSchemaUid(a?.schema) === wantSchema,\n )\n if (!att) continue\n\n if (!Array.isArray(att.data) || att.data.length === 0) {\n att.data = [placeholderData]\n }\n }\n }\n\n return payload\n}\n\n/**\n * Topological sort: when request A has propertiesToUpdate with publishLocalId B,\n * A (the updater) must appear before B (the updatee). The contract injects A's seedUid\n * into B's attestation before B is sent to EAS; if B is processed first, B's attestation\n * goes out with wrong data (string instead of bytes32).\n */\nfunction orderPayloadByDependencies(payload: MultiPublishPayload): MultiPublishPayload {\n const byLocalId = new Map<string, PublishPayload>()\n for (const p of payload) {\n byLocalId.set(p.localId, p)\n }\n const visited = new Set<string>()\n const result: PublishPayload[] = []\n\n const visit = (localId: string) => {\n if (visited.has(localId)) return\n visited.add(localId)\n const p = byLocalId.get(localId)\n if (!p) return\n result.push(p)\n for (const u of p.propertiesToUpdate ?? []) {\n const targetId = (u as { publishLocalId?: string }).publishLocalId\n if (targetId && targetId !== localId) visit(targetId)\n }\n }\n\n for (const p of payload) {\n visit(p.localId)\n }\n return result\n}\n\n/**\n * Resolves relation/image property values (seedLocalId) to attestation uids after dependent seeds are published.\n * Call after each payload is published, passing the returned attestation uid for that seed's localId.\n * Returns an updated multiPayload with re-encoded attestations where resolution was applied.\n */\nexport const resolvePublishPayloadValues = async (\n multiPayload: MultiPublishPayload,\n resolvedUids: ResolvedSeedUids,\n): Promise<MultiPublishPayload> => {\n if (Object.keys(resolvedUids).length === 0) {\n return multiPayload\n }\n\n const SchemaEncoder = await getSchemaEncoder()\n const result: MultiPublishPayload = []\n\n for (const payload of multiPayload) {\n const updatedAttestations: PublishPayload['listOfAttestations'] = []\n\n for (const attestation of payload.listOfAttestations) {\n const entry = attestation as PublishPayload['listOfAttestations'][0] & {\n _easDataType?: string\n data?: AttestationRequestData[] | AttestationRequestData\n }\n\n const resolvedUid = entry._unresolvedValue && resolvedUids[entry._unresolvedValue]\n if (resolvedUid && entry._schemaDef && entry._propertyName) {\n const propertyNameForSchema = toSnakeCase(entry._propertyName)\n const dataEncoder = new SchemaEncoder(entry._schemaDef)\n const encodedData = dataEncoder.encodeData([\n {\n name: propertyNameForSchema,\n type: (entry._easDataType as 'bytes32' | 'string') || 'bytes32',\n value: resolvedUid,\n },\n ])\n const baseData = Array.isArray(entry.data) ? entry.data[0] : (entry.data as AttestationRequestData)\n updatedAttestations.push({\n ...entry,\n data: [\n {\n ...baseData,\n data: encodedData,\n } as AttestationRequestData,\n ],\n _unresolvedValue: undefined,\n })\n } else {\n const normalizedEntry: PublishPayload['listOfAttestations'][0] = {\n ...entry,\n data: Array.isArray(entry.data) ? entry.data : [entry.data as AttestationRequestData],\n }\n updatedAttestations.push(normalizedEntry)\n }\n }\n\n result.push({\n ...payload,\n listOfAttestations: updatedAttestations,\n })\n }\n\n return result\n}\n"],"names":["ZERO_BYTES32","INTERNAL_DATA_TYPES","toSnakeCase","getEasSchemaUidForSchemaDefinition","getEasSchemaForItemProperty","ethers","defaultAttestationData","getCorrectId","ModelPropertyDataTypes","getEasSchemaUidForModel","VERSION_SCHEMA_UID_OPTIMISM_SEPOLIA","getSegmentedItemProperties"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AAyBe,KAAK,CAAC,8BAA8B;AAEnD,MAAM,aAAa,GAAG,CAAC,IAAgB,KAAY;AACjD,IAAA,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB;IAC3C,IAAI,aAAa,IAAI,OAAO,aAAa,KAAK,QAAQ,IAAI,aAAa,CAAC,GAAG,EAAE;QAC3E,OAAO,aAAa,CAAC,GAAG;IAC1B;AACA,IAAA,IAAI,aAAa,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE;AACtD,QAAA,OAAO,aAAa;IACtB;AACA,IAAA,OAAOA,qBAAY;AACrB,CAAC;AAED,MAAM,eAAe,GAAG,OAAO,YAAgC,KAAI;AACjE,IAAA,MAAM,WAAW,GACfC,4BAAmB,CAAC,YAAY,CAAC,WAAY,CAAC,QAAQ,CAAC,CAAC,GAAG;AAE7D,IAAA,IAAI,SAAS,GAAuB,YAAY,CAAC,SAAS;IAE1D,MAAM,qBAAqB,GAAGC,oBAAW,CAAC,YAAY,CAAC,YAAY,CAAC;AAEpE,IAAA,MAAM,SAAS,GAAG,CAAA,EAAG,WAAW,CAAA,CAAA,EAAI,qBAAqB,EAAE;IAE3D,IAAI,CAAC,SAAS,EAAE;QACd,SAAS,GAAG,MAAMC,2CAAkC,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;QAC/E,IAAI,CAAC,SAAS,EAAE;AACd,YAAA,MAAM,MAAM,GAAG,MAAMC,oCAA2B,CAAC;AAC/C,gBAAA,YAAY,EAAE,SAAS;AACvB,gBAAA,WAAW,EAAE,SAAS;AACvB,aAAA,CAAC;YACF,IAAI,MAAM,EAAE;AACV,gBAAA,SAAS,GAAG,MAAM,CAAC,EAAE;YACvB;QACF;IACF;IAEA,OAAO;QACL,SAAS;QACT,WAAW;QACX,SAAS;QACT,qBAAqB;KACtB;AACH,CAAC;AAED;AACA,IAAI,kBAAkB,GAAgF,IAAI;AAC1G,MAAM,gBAAgB,GAAG,YAAW;IAClC,IAAI,CAAC,kBAAkB,EAAE;AACvB,QAAA,MAAM,MAAM,GAAG,MAAM,OAAO,uCAAuC,CAAC;AACpE,QAAA,kBAAkB,GAAG,MAAM,CAAC,aAAa;IAC3C;AACA,IAAA,OAAO,kBAAkB;AAC3B,CAAC;AAED,MAAM,sBAAsB,GAAG,OAC7B,mBAAyC,EACzC,eAA+B,KACJ;AAC3B,IAAA,KAAK,MAAM,aAAa,IAAI,mBAAmB,EAAE;QAC/C,MAAM,QAAQ,GAAG,aAAa,CAAC,UAAU,EAAE,CAAC,WAAW,EAAE;AACzD,QAAA,MAAM,OAAO,GAAG,SAAS,IAAI,QAAQ,GAAG,QAAQ,CAAC,OAAO,GAAG,IAAI;QAC/D,IAAI,CAAC,OAAO,EAAE;YACZ;QACF;AACA,QAAA,IAAI,KAAK,GAAI,OAAe,CAAC,aAAa;AAE1C,QAAA,IAAI,CAAC,KAAK,IAAI,aAAa,CAAC,GAAG,EAAE;YAC/B;QACF;AAEA,QAAA,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,GACzC,MAAM,eAAe,CAAC,aAAa,CAAC;QAEtC,MAAM,qBAAqB,GAAGF,oBAAW,CAAC,aAAa,CAAC,YAAY,CAAC;AAErE,QAAA,IAAI,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC9D,MAAM,IAAI,KAAK,CAAC,CAAA,4BAAA,EAA+B,aAAa,CAAC,YAAY,CAAA,oCAAA,EAAuC,KAAK,CAAA,CAAA,CAAG,CAAC;QAC3H;AAEA,QAAA,IAAI,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;YACrC,MAAM,SAAS,GAAG,EAAE;AACpB,YAAA,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE;AAC1B,gBAAA,IAAI,MAAM,CAAC,MAAM,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;oBACpD,SAAS,CAAC,IAAI,CAACG,aAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;oBAClD;gBACF;AACA,gBAAA,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;YACxB;YACA,KAAK,GAAG,SAAS;QACnB;;AAGA,QAAA,IAAI,WAAW,KAAK,SAAS,KAAK,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,IAAI,CAAC,EAAE;YACrF,MAAM,EAAE,GAAG,KAAK,YAAY,IAAI,GAAG,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE;AAC9E,YAAA,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;QACvC;AAEA,QAAA,IAAI,IAAI,GAAG;AACT,YAAA;AACE,gBAAA,IAAI,EAAE,qBAAqB;AAC3B,gBAAA,IAAI,EAAE,WAAW;gBACjB,KAAK;AACN,aAAA;SACF;AAED,QAAA,MAAM,aAAa,GAAG,MAAM,gBAAgB,EAAE;AAC9C,QAAA,MAAM,WAAW,GAAG,IAAI,aAAa,CAAC,SAAS,CAAC;QAEhD,MAAM,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC;;AAGhD,QAAA,MAAM,MAAM,GACV,aAAa,CAAC,YAAY,KAAK;cAC3B,eAAe,CAAC;AAClB,cAAEC,+BAAsB,CAAC,MAAM;AAEnC,QAAA,MAAM,gBAAgB,GAMlB;AACF,YAAA,MAAM,EAAE,SAAU;AAClB,YAAA,IAAI,EAAE;AACJ,gBAAA;AACE,oBAAA,GAAGA,+BAAsB;AACzB,oBAAA,MAAM,EAAE,MAAM;AACd,oBAAA,IAAI,EAAE,WAAW;AACQ,iBAAA;AAC5B,aAAA;SACF;;QAGD,IACE,OAAO,KAAK,KAAK,QAAQ;YACzB,KAAK,CAAC,MAAM,KAAK,EAAE;aAClB,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,QAAQ,CAAC,EACvD;AACA,YAAA,gBAAgB,CAAC,aAAa,GAAG,aAAa,CAAC,YAAY;AAC3D,YAAA,gBAAgB,CAAC,UAAU,GAAG,SAAS;AACvC,YAAA,gBAAgB,CAAC,gBAAgB,GAAG,KAAK;AACzC,YAAA,gBAAgB,CAAC,YAAY,GAAG,WAAW;QAC7C;AAEA,QAAA,eAAe,CAAC,kBAAkB,CAAC,IAAI,CAAC,gBAAgB,CAAC;IAC3D;AAEA,IAAA,OAAO,eAAe;AACxB,CAAC;AAGD,MAAM,8BAA8B,GAAG,OACrC,uBAA2C,EAC3C,mBAAwC,EACxC,oBAA2C,EAC3C,mBAA2B,KACK;AAChC,IAAA,IAAI,wBAAwB,GAAG,uBAAuB,CAAC,SAAS;AAChE,IAAA,IAAI,CAAC,wBAAwB,IAAI,uBAAuB,CAAC,WAAW,EAAE;AACpE,QAAA,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,uBAAuB,CAAC;AACnE,QAAA,wBAAwB,GAAG,YAAY,CAAC,SAAS;IACnD;IACA,IAAI,CAAC,wBAAwB,EAAE;QAC7B,MAAM,IAAI,KAAK,CACb,CAAA,qDAAA,EAAwD,uBAAuB,CAAC,YAAY,CAAA,CAAE,CAC/F;IACH;IAEA,MAAM,QAAQ,GAAG,uBAAuB,CAAC,UAAU,EAAE,CAAC,WAAW,EAAE;AACnE,IAAA,MAAM,OAAO,GAAG,SAAS,IAAI,QAAQ,GAAG,QAAQ,CAAC,OAAO,GAAG,IAAI;IAC/D,IAAI,CAAC,OAAO,EAAE;AACZ,QAAA,OAAO,mBAAmB;IAC5B;AACA,IAAA,MAAM,KAAK,GAAI,OAAe,CAAC,aAAa;AAC5C,IAAA,IAAI,CAAC,KAAK,IAAI,uBAAuB,CAAC,GAAG,EAAE;AACzC,QAAA,OAAO,mBAAmB;IAC5B;AAEA,IAAA,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,EAAE,GAAGC,qBAAY,CAAC,KAAK,CAAC;;AAGlE,IAAA,IAAI,CAAC,WAAW,IAAI,CAAC,OAAO,EAAE;AAC5B,QAAA,OAAO,mBAAmB;IAC5B;;AAGA,IAAA,MAAM,UAAU,GAAG,MAAM,oDAAO,uBAAuB,KAAC;AACxD,IAAA,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU;AAC9B,IAAA,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC;QAChC,WAAW;QACX,OAAO;AACR,KAAA,CAAC;IAEF,IAAI,CAAC,WAAW,EAAE;QAChB,MAAM,IAAI,KAAK,CACb,CAAA,sDAAA,EAAyD,uBAAuB,CAAC,YAAY,CAAA,CAAE,CAChG;IACH;;AAGA,IAAA,IAAI,WAAW,CAAC,OAAO,EAAE;AACvB,QAAA,OAAO,mBAAmB;IAC5B;AAEA,IAAA,MAAM,UAAU,GAAG,aAAa,CAAC,WAAW,CAAC;AAE7C,IAAA,IAAI,SAA6B;IAEjC,IAAI,uBAAuB,CAAC,WAAW,EAAE,QAAQ,KAAKC,+BAAsB,CAAC,KAAK,EAAE;QAClF,SAAS,GAAG,OAAO;IACrB;IAEA,IAAI,uBAAuB,CAAC,WAAW,EAAE,QAAQ,KAAKA,+BAAsB,CAAC,IAAI,EAAE;QACjF,SAAS,GAAG,MAAM;IACpB;IAEA,IAAI,uBAAuB,CAAC,WAAW,EAAE,QAAQ,KAAKA,+BAAsB,CAAC,IAAI,EAAE;QACjF,SAAS,GAAG,MAAM;IACpB;IAEA,IAAI,uBAAuB,CAAC,WAAW,EAAE,QAAQ,KAAKA,+BAAsB,CAAC,QAAQ,EAAE;AACrF,QAAA,MAAM,GAAG,GAAG,uBAAuB,CAAC,WAAsD;QAC1F,SAAS,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,YAAY;IACzC;IAEA,IAAI,CAAC,SAAS,EAAE;QACd,MAAM,IAAI,KAAK,CAAC,CAAA,qDAAA,EAAwD,uBAAuB,CAAC,YAAY,CAAA,CAAE,CAAC;IACjH;AAEA,IAAA,MAAM,aAAa,GAAG,MAAMC,gCAAuB,CAAC,SAAS,CAAC;IAE9D,IAAI,CAAC,aAAa,EAAE;AAClB,QAAA,MAAM,IAAI,KAAK,CAAC,mCAAmC,SAAS,CAAA,CAAE,CAAC;IACjE;AAEA,IAAA,IAAI,cAAc,GAAmB;QACnC,OAAO,EAAE,WAAW,CAAC,WAAW;AAChC,QAAA,eAAe,EAAE,IAAI;AACrB,QAAA,gBAAgB,EAAEC,4CAAmC;QACrD,OAAO,EAAE,OAAO,IAAIV,qBAAY;QAChC,aAAa;QACb,UAAU;AACV,QAAA,kBAAkB,EAAE,EAAE;AACtB,QAAA,kBAAkB,EAAE;AAClB,YAAA;AACE,gBAAA,cAAc,EAAE,mBAAmB;AACnC,gBAAA,iBAAiB,EAAE,wBAAwB;AAC5C,aAAA;AACF,SAAA;KACF;IAED,MAAM,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,GACjDW,qDAA0B,CAAC,WAAW,CAAC;AAEzC,IAAA,IAAI,oBAAoB,CAAC,MAAM,KAAK,CAAC,EAAE;AACrC,QAAA,MAAM,cAAc,GAAG,oBAAoB,CAAC,CAAC,CAAC;AAC9C,QAAA,MAAM,YAAY,GAAG,cAAc,CAAC,YAAY;AAChD,QAAA,MAAM,eAAe,GAAG,oBAAoB,CAAC,IAAI,CAC/C,CAAC,WAAW,KAAK,WAAW,CAAC,WAAW,KAAK,WAAW,CAAC,WAAW,CACrE;QACD,IAAI,eAAe,EAAE;AACnB,YAAA,YAAY,CAAC,KAAK,GAAG,eAAe,CAAC,IAAI;AACzC,YAAA,MAAM,YAAY,CAAC,IAAI,EAAE;AACzB,YAAA,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC;QACxC;IACF;IAEA,cAAc,GAAG,MAAM,sBAAsB,CAC3C,mBAAmB,EACnB,cAAc,CACf;AAED,IAAA,mBAAmB,CAAC,IAAI,CAAC,cAAc,CAAC;AAExC,IAAA,OAAO,mBAAmB;AAC5B,CAAC;AAED,MAAM,mBAAmB,GAAG,OAC1B,YAAgC,EAChC,mBAAwC,EACxC,mBAA2B,KACK;;AAEhC,IAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,GAAG,EAAE;QAClC,MAAM,IAAI,KAAK,CACb,CAAA,qEAAA,EAAwE,YAAY,CAAC,YAAY,CAAA,kEAAA,CAAoE,CACtK;IACH;AACA,IAAA,IAAI,qBAAqB,GAAG,YAAY,CAAC,SAAS;AAClD,IAAA,IAAI,CAAC,qBAAqB,IAAI,YAAY,CAAC,WAAW,EAAE;AACtD,QAAA,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,YAAY,CAAC;AACxD,QAAA,qBAAqB,GAAG,YAAY,CAAC,SAAS;IAChD;IACA,IAAI,CAAC,qBAAqB,EAAE;QAC1B,MAAM,IAAI,KAAK,CACb,CAAA,wCAAA,EAA2C,YAAY,CAAC,YAAY,CAAA,CAAE,CACvE;IACH;IAEA,MAAM,QAAQ,GAAG,YAAY,CAAC,UAAU,EAAE,CAAC,WAAW,EAAE;AACxD,IAAA,MAAM,OAAO,GAAG,SAAS,IAAI,QAAQ,GAAG,QAAQ,CAAC,OAAO,GAAG,IAAI;IAC/D,IAAI,CAAC,OAAO,EAAE;AACZ,QAAA,OAAO,mBAAmB;IAC5B;AACA,IAAA,IAAI,KAAK,GAAI,OAAe,CAAC,aAAa;AAC1C,IAAA,IAAI,CAAC,KAAK,IAAI,YAAY,CAAC,GAAG,EAAE;AAC9B,QAAA,OAAO,mBAAmB;IAC5B;IAEA,MAAM,oBAAoB,GAAG,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC;IAC5C,CAAA,EAAG,oBAAoB,CAAA,EAAG,YAAY,CAAC,WAAY,CAAC,GAAG,CAAA,GAAA;IACrF,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE;AACpD,QAAA,KAAK,GAAG,CAAC,KAAK,CAAC;IACjB;IACA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,EAAE;AAClD,QAAA,IAAI;AACF,YAAA,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC3B;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;QAC1B;IACF;AAEA,IAAA,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE;AAC1B,QAAA,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,EAAE,GAAGJ,qBAAY,CAAC,MAAM,CAAC;;AAGnE,QAAA,MAAM,UAAU,GAAG,MAAM,oDAAO,uBAAuB,KAAC;AACxD,QAAA,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU;AAC9B,QAAA,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC;YAChC,WAAW;YACX,OAAO;AACR,SAAA,CAAC;QAEF,IAAI,CAAC,WAAW,EAAE;YAChB,OAAO,CAAC,KAAK,CACX,CAAA,yCAAA,EAA4C,YAAY,CAAC,YAAY,CAAA,CAAE,CACxE;YACD;QACF;AAEA,QAAA,IAAI,WAAW,CAAC,OAAO,EAAE;AACvB,YAAA,OAAO,mBAAmB;QAC5B;AAEA,QAAA,MAAM,UAAU,GAAG,aAAa,CAAC,WAAW,CAAC;AAE7C,QAAA,IAAI,SAA6B;AAEjC,QAAA,IAAI,YAAY,CAAC,WAAW,EAAE,GAAG,IAAK,YAAY,CAAC,WAAyC,CAAC,YAAY,EAAE;AACzG,YAAA,MAAM,GAAG,GAAG,YAAY,CAAC,WAAsD;YAC/E,SAAS,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,YAAY;QACzC;QAEA,IAAI,YAAY,CAAC,WAAW,EAAE,QAAQ,KAAKC,+BAAsB,CAAC,KAAK,EAAE;YACvE,SAAS,GAAG,OAAO;QACrB;QAEA,IAAI,YAAY,CAAC,WAAW,EAAE,QAAQ,KAAKA,+BAAsB,CAAC,IAAI,EAAE;YACtE,SAAS,GAAG,MAAM;QACpB;QAEA,IAAI,YAAY,CAAC,WAAW,EAAE,QAAQ,KAAKA,+BAAsB,CAAC,IAAI,EAAE;YACtE,SAAS,GAAG,MAAM;QACpB;QAEA,IAAI,CAAC,SAAS,EAAE;YACd,MAAM,IAAI,KAAK,CAAC,CAAA,wCAAA,EAA2C,YAAY,CAAC,YAAY,CAAA,CAAE,CAAC;QACzF;AAEA,QAAA,MAAM,aAAa,GAAG,MAAMC,gCAAuB,CAAC,SAAS,CAAC;QAE9D,IAAI,CAAC,aAAa,EAAE;AAClB,YAAA,MAAM,IAAI,KAAK,CAAC,mCAAmC,SAAS,CAAA,CAAE,CAAC;QACjE;AAEA,QAAA,IAAI,cAAc,GAAmB;YACnC,OAAO,EAAE,WAAW,CAAC,WAAW;AAChC,YAAA,eAAe,EAAE,IAAI;AACrB,YAAA,gBAAgB,EAAEC,4CAAmC;YACrD,OAAO,EAAE,OAAO,IAAIV,qBAAY;YAChC,aAAa;YACb,UAAU;AACV,YAAA,kBAAkB,EAAE,EAAE;AACtB,YAAA,kBAAkB,EAAE;AAClB,gBAAA;AACE,oBAAA,cAAc,EAAE,mBAAmB;AACnC,oBAAA,iBAAiB,EAAE,qBAAqB;AACzC,iBAAA;AACF,aAAA;SACF;QAED,MAAM,EAAE,mBAAmB,EAAE,GAAGW,qDAA0B,CAAC,WAAW,CAAC;QAEvE,cAAc,GAAG,MAAM,sBAAsB,CAC3C,mBAAmB,EACnB,cAAc,CACf;AAED,QAAA,mBAAmB,CAAC,IAAI,CAAC,cAAc,CAAC;IAC1C;AAEA,IAAA,OAAO,mBAAmB;AAC5B,CAAC;AA+BM,MAAM,iBAAiB,GAAG,OAC/B,IAAe,EACf,oBAA2C,KACX;IAEhC,IAAI,mBAAmB,GAAwB,EAAE;;;;;AASjD,IAAA,IAAI,aAAa,GAAG,IAAI,CAAC,SAAS;IAClC,IAAI,CAAC,aAAa,EAAE;QAClB,MAAM,SAAS,GAAG,MAAMF,gCAAuB,CAAC,IAAI,CAAC,SAAS,CAAC;QAC/D,IAAI,CAAC,SAAS,EAAE;YACd,MAAM,IAAI,KAAK,CAAC,CAAA,gCAAA,EAAmC,IAAI,CAAC,SAAS,CAAA,CAAE,CAAC;QACtE;QACA,aAAa,GAAG,SAAS;IAC3B;AAEA,IAAA,IAAI,eAAe,GAAmB;QACpC,OAAO,EAAE,IAAI,CAAC,WAAW;AACzB,QAAA,OAAO,EAAE,IAAI,CAAC,OAAO,IAAIT,qBAAY;AACrC,QAAA,eAAe,EAAE,IAAI;AACrB,QAAA,aAAa,EAAE,aAAa;AAC5B,QAAA,gBAAgB,EAAEU,4CAAmC;AACrD,QAAA,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC;AAC/B,QAAA,kBAAkB,EAAE,EAAE;AACtB,QAAA,kBAAkB,EAAE,EAAE;KACvB;AAED,IAAA,MAAM,EACJ,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,GACvB,GAAGC,qDAA0B,CAAC,IAAI,CAAC;IAEpC,MAAM,0BAA0B,GAAG,CAAC,GAAG,sBAAsB,EAAE,GAAG,mBAAmB,CAAC;AAEtF,IAAA,IAAI,oBAAoB,CAAC,MAAM,KAAK,CAAC,EAAE;AACrC,QAAA,MAAM,cAAc,GAAG,oBAAoB,CAAC,CAAC,CAAC;AAC9C,QAAA,MAAM,YAAY,GAAG,cAAc,CAAC,YAAY;AAChD,QAAA,MAAM,eAAe,GAAG,oBAAoB,CAAC,IAAI,CAC/C,CAAC,WAAW,KAAK,WAAW,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW,CAC9D;QACD,IAAI,eAAe,EAAE;AACnB,YAAA,YAAY,CAAC,KAAK,GAAG,eAAe,CAAC,IAAI;AACzC,YAAA,MAAM,YAAY,CAAC,IAAI,EAAE;AACzB,YAAA,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC;QACxC;IACF;AAEA,IAAA,KAAK,MAAM,gBAAgB,IAAI,0BAA0B,EAAE;AACzD,QAAA,mBAAmB,GAAG,MAAM,8BAA8B,CACxD,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,IAAI,CAAC,WAAW,CACjB;AACD,QAAA,mBAAmB,CAAC,IAAI,CAAC,gBAAgB,CAAC;IAC5C;AAEA,IAAA,KAAK,MAAM,YAAY,IAAI,kBAAkB,EAAE;AAC7C,QAAA,mBAAmB,GAAG,MAAM,mBAAmB,CAC7C,YAAY,EACZ,mBAAmB,EACnB,IAAI,CAAC,WAAW,CACjB;AACD,QAAA,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC;IACxC;IAEA,eAAe,GAAG,MAAM,sBAAsB,CAC5C,mBAAmB,EACnB,eAAe,CAChB;AAED,IAAA,mBAAmB,CAAC,IAAI,CAAC,eAAe,CAAC;;;;AAKzC,IAAA,mBAAmB,GAAG,0BAA0B,CAAC,mBAAmB,CAAC;;;AAIrE,IAAA,mBAAmB,GAAG,4CAA4C,CAAC,mBAAmB,CAAC;AAEvF,IAAA,OAAO,mBAAmB;AAC5B;AAEA;;AAEG;AACH,SAAS,kBAAkB,CAAC,CAAqB,EAAA;AAC/C,IAAA,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AAAE,QAAA,OAAO,EAAE;IACpC,MAAM,GAAG,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;IAC/C,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;IAC1E,OAAO,CAAC,IAAI,GAAG,GAAG,EAAE,WAAW,EAAE;AACnC;AAEA;;;;AAIG;AACH,SAAS,4CAA4C,CACnD,OAA4B,EAAA;AAE5B,IAAA,MAAM,SAAS,GAAG,IAAI,GAAG,EAA0B;AACnD,IAAA,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE;QACvB,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7B;AAEA,IAAA,MAAM,eAAe,GAA2B;AAC9C,QAAA,GAAGL,+BAAsB;AACzB,QAAA,IAAI,EAAEN,qBAAY;KACnB;AAED,IAAA,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;QACzB,KAAK,MAAM,EAAE,IAAI,GAAG,CAAC,kBAAkB,IAAI,EAAE,EAAE;AAC7C,YAAA,MAAM,QAAQ,GAAI,EAAkC,CAAC,cAAc;AACnE,YAAA,MAAM,SAAS,GAAI,EAAqC,CAAC,iBAAiB;AAC1E,YAAA,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS;gBAAE;YAE7B,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;YACzC,IAAI,CAAC,SAAS,EAAE,kBAAkB;gBAAE;AAEpC,YAAA,MAAM,UAAU,GAAG,kBAAkB,CAAC,SAAS,CAAC;YAChD,MAAM,GAAG,GAAG,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAC3C,CAAC,CAAC,KAAK,kBAAkB,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,UAAU,CACpD;AACD,YAAA,IAAI,CAAC,GAAG;gBAAE;AAEV,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACrD,gBAAA,GAAG,CAAC,IAAI,GAAG,CAAC,eAAe,CAAC;YAC9B;QACF;IACF;AAEA,IAAA,OAAO,OAAO;AAChB;AAEA;;;;;AAKG;AACH,SAAS,0BAA0B,CAAC,OAA4B,EAAA;AAC9D,IAAA,MAAM,SAAS,GAAG,IAAI,GAAG,EAA0B;AACnD,IAAA,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE;QACvB,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7B;AACA,IAAA,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU;IACjC,MAAM,MAAM,GAAqB,EAAE;AAEnC,IAAA,MAAM,KAAK,GAAG,CAAC,OAAe,KAAI;AAChC,QAAA,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE;AAC1B,QAAA,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;QACpB,MAAM,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;AAChC,QAAA,IAAI,CAAC,CAAC;YAAE;AACR,QAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACd,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,kBAAkB,IAAI,EAAE,EAAE;AAC1C,YAAA,MAAM,QAAQ,GAAI,CAAiC,CAAC,cAAc;AAClE,YAAA,IAAI,QAAQ,IAAI,QAAQ,KAAK,OAAO;gBAAE,KAAK,CAAC,QAAQ,CAAC;QACvD;AACF,IAAA,CAAC;AAED,IAAA,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE;AACvB,QAAA,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;IAClB;AACA,IAAA,OAAO,MAAM;AACf;AAEA;;;;AAIG;AACI,MAAM,2BAA2B,GAAG,OACzC,YAAiC,EACjC,YAA8B,KACE;IAChC,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AAC1C,QAAA,OAAO,YAAY;IACrB;AAEA,IAAA,MAAM,aAAa,GAAG,MAAM,gBAAgB,EAAE;IAC9C,MAAM,MAAM,GAAwB,EAAE;AAEtC,IAAA,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE;QAClC,MAAM,mBAAmB,GAAyC,EAAE;AAEpE,QAAA,KAAK,MAAM,WAAW,IAAI,OAAO,CAAC,kBAAkB,EAAE;YACpD,MAAM,KAAK,GAAG,WAGb;AAED,YAAA,MAAM,WAAW,GAAG,KAAK,CAAC,gBAAgB,IAAI,YAAY,CAAC,KAAK,CAAC,gBAAgB,CAAC;YAClF,IAAI,WAAW,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,aAAa,EAAE;gBAC1D,MAAM,qBAAqB,GAAGE,oBAAW,CAAC,KAAK,CAAC,aAAa,CAAC;gBAC9D,MAAM,WAAW,GAAG,IAAI,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC;AACvD,gBAAA,MAAM,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC;AACzC,oBAAA;AACE,wBAAA,IAAI,EAAE,qBAAqB;AAC3B,wBAAA,IAAI,EAAG,KAAK,CAAC,YAAqC,IAAI,SAAS;AAC/D,wBAAA,KAAK,EAAE,WAAW;AACnB,qBAAA;AACF,iBAAA,CAAC;gBACF,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAI,KAAK,CAAC,IAA+B;gBACnG,mBAAmB,CAAC,IAAI,CAAC;AACvB,oBAAA,GAAG,KAAK;AACR,oBAAA,IAAI,EAAE;AACJ,wBAAA;AACE,4BAAA,GAAG,QAAQ;AACX,4BAAA,IAAI,EAAE,WAAW;AACQ,yBAAA;AAC5B,qBAAA;AACD,oBAAA,gBAAgB,EAAE,SAAS;AAC5B,iBAAA,CAAC;YACJ;iBAAO;AACL,gBAAA,MAAM,eAAe,GAA4C;AAC/D,oBAAA,GAAG,KAAK;oBACR,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,IAA8B,CAAC;iBACtF;AACD,gBAAA,mBAAmB,CAAC,IAAI,CAAC,eAAe,CAAC;YAC3C;QACF;QAEA,MAAM,CAAC,IAAI,CAAC;AACV,YAAA,GAAG,OAAO;AACV,YAAA,kBAAkB,EAAE,mBAAmB;AACxC,SAAA,CAAC;IACJ;AAEA,IAAA,OAAO,MAAM;AACf;;;;;"}
1
+ {"version":3,"file":"getPublishPayload-CBuGIazw.js","sources":["../../../src/db/read/getPublishPayload.ts"],"sourcesContent":["// Dynamic import to break circular dependency with getItem -> BaseItem\n// import { getItem } from '@/db/read/getItem'\nimport {\n defaultAttestationData,\n INTERNAL_DATA_TYPES,\n VERSION_SCHEMA_UID_OPTIMISM_SEPOLIA,\n ZERO_BYTES32,\n} from '@/helpers/constants'\nimport {\n AttestationRequest,\n AttestationRequestData,\n} from '@ethereum-attestation-service/eas-sdk'\n\nimport { getEasSchemaForItemProperty } from '@/helpers/getSchemaForItemProperty'\nimport { toSnakeCase } from '@/helpers'\nimport pluralize from 'pluralize'\nimport { getEasSchemaUidForModel } from './getSchemaUidForModel'\nimport { getEasSchemaUidForSchemaDefinition } from '@/stores/eas'\nimport { getCorrectId } from '@/helpers'\nimport { getSegmentedItemProperties } from '@/helpers/getSegmentedItemProperties'\nimport { IItemProperty } from '@/interfaces'\nimport { IItem } from '@/interfaces'\nimport { Item } from '@/Item/Item'\nimport debug from 'debug'\nimport {ethers} from 'ethers'\nimport { ModelPropertyDataTypes } from '@/Schema'\nconst logger = debug('seedSdk:db:getPublishPayload')\n\nconst getVersionUid = (item: IItem<any>): string => {\n const latestVersion = item.latestVersionUid\n if (latestVersion && typeof latestVersion === 'object' && latestVersion.uid) {\n return latestVersion.uid\n }\n if (latestVersion && typeof latestVersion === 'string') {\n return latestVersion\n }\n return ZERO_BYTES32\n}\n\nconst getPropertyData = async (itemProperty: IItemProperty<any>) => {\n const easDataType =\n INTERNAL_DATA_TYPES[itemProperty.propertyDef!.dataType].eas\n\n let schemaUid: string | undefined = itemProperty.schemaUid\n\n const propertyNameForSchema = toSnakeCase(itemProperty.propertyName)\n\n const schemaDef = `${easDataType} ${propertyNameForSchema}`\n\n if (!schemaUid) {\n schemaUid = await getEasSchemaUidForSchemaDefinition({ schemaText: schemaDef })\n if (!schemaUid) {\n const schema = await getEasSchemaForItemProperty({\n propertyName: 'version',\n easDataType: 'bytes32',\n })\n if (schema) {\n schemaUid = schema.id\n }\n }\n }\n\n return {\n schemaUid,\n easDataType,\n schemaDef,\n propertyNameForSchema,\n }\n}\n\n// Lazy import SchemaEncoder to avoid module resolution issues with ts-import\nlet SchemaEncoderClass: typeof import('@ethereum-attestation-service/eas-sdk').SchemaEncoder | null = null\nconst getSchemaEncoder = async () => {\n if (!SchemaEncoderClass) {\n const easSdk = await import('@ethereum-attestation-service/eas-sdk')\n SchemaEncoderClass = easSdk.SchemaEncoder\n }\n return SchemaEncoderClass\n}\n\nconst processBasicProperties = async (\n itemBasicProperties: IItemProperty<any>[],\n itemPublishData: PublishPayload,\n): Promise<PublishPayload> => {\n for (const basicProperty of itemBasicProperties) {\n const snapshot = basicProperty.getService().getSnapshot()\n const context = 'context' in snapshot ? snapshot.context : null\n if (!context) {\n continue\n }\n let value = (context as any).propertyValue\n\n if (!value || basicProperty.uid) {\n continue\n }\n\n const { schemaUid, easDataType, schemaDef } =\n await getPropertyData(basicProperty)\n\n const propertyNameForSchema = toSnakeCase(basicProperty.propertyName)\n\n if (schemaDef.startsWith('bytes32[]') && !Array.isArray(value)) {\n throw new Error(`Invalid value for property: ${basicProperty.propertyName}. Expected an array of bytes32, got ${value}.`)\n }\n\n if (schemaDef.startsWith('bytes32[]')) {\n const newValues = []\n for (const seedId of value) {\n if (seedId.length !== 66 && !seedId.startsWith('0x')) {\n newValues.push(ethers.encodeBytes32String(seedId))\n continue\n }\n newValues.push(seedId)\n }\n value = newValues\n }\n\n // uint256 (Date) must be numeric/BigInt; normalize ISO strings to Unix seconds\n if (easDataType === 'uint256' && (typeof value === 'string' || value instanceof Date)) {\n const ms = value instanceof Date ? value.getTime() : new Date(value).getTime()\n value = BigInt(Math.floor(ms / 1000))\n }\n\n let data = [\n {\n name: propertyNameForSchema,\n type: easDataType,\n value,\n },\n ]\n\n const SchemaEncoder = await getSchemaEncoder()\n const dataEncoder = new SchemaEncoder(schemaDef)\n\n const encodedData = dataEncoder.encodeData(data)\n\n // For storageTransactionId, set refUID to versionUid so it references the Version attestation (contract may use when supported)\n const refUid =\n basicProperty.propertyName === 'storageTransactionId'\n ? itemPublishData.versionUid\n : defaultAttestationData.refUID\n\n const attestationEntry: Omit<AttestationRequest, 'data'> & {\n data: AttestationRequestData[]\n _propertyName?: string\n _schemaDef?: string\n _unresolvedValue?: string\n _easDataType?: string\n } = {\n schema: schemaUid!,\n data: [\n {\n ...defaultAttestationData,\n refUID: refUid,\n data: encodedData,\n } as AttestationRequestData,\n ],\n }\n\n // For relation/image properties with seedLocalId, store resolution hints for resolvePublishPayloadValues\n if (\n typeof value === 'string' &&\n value.length === 10 &&\n (easDataType === 'bytes32' || easDataType === 'string')\n ) {\n attestationEntry._propertyName = basicProperty.propertyName\n attestationEntry._schemaDef = schemaDef\n attestationEntry._unresolvedValue = value\n attestationEntry._easDataType = easDataType\n }\n\n itemPublishData.listOfAttestations.push(attestationEntry)\n }\n\n return itemPublishData\n}\n\n\nconst processRelationOrImageProperty = async (\n relationOrImageProperty: IItemProperty<any>,\n multiPublishPayload: MultiPublishPayload,\n uploadedTransactions: UploadedTransaction[],\n originalSeedLocalId: string,\n): Promise<MultiPublishPayload> => {\n let relationOrImageSchemaUid = relationOrImageProperty.schemaUid\n if (!relationOrImageSchemaUid && relationOrImageProperty.propertyDef) {\n const propertyData = await getPropertyData(relationOrImageProperty)\n relationOrImageSchemaUid = propertyData.schemaUid\n }\n if (!relationOrImageSchemaUid) {\n throw new Error(\n `Schema uid not found for relation or image property: ${relationOrImageProperty.propertyName}`,\n )\n }\n\n const snapshot = relationOrImageProperty.getService().getSnapshot()\n const context = 'context' in snapshot ? snapshot.context : null\n if (!context) {\n return multiPublishPayload\n }\n const value = (context as any).propertyValue\n if (!value || relationOrImageProperty.uid) {\n return multiPublishPayload\n }\n\n const { localId: seedLocalId, uid: seedUid } = getCorrectId(value)\n\n // Value is not a valid seed reference (10-char localId or 66-char uid); skip (e.g. Html with inline content)\n if (!seedLocalId && !seedUid) {\n return multiPublishPayload\n }\n\n // Use dynamic import to break circular dependency\n const getItemMod = await import('../../db/read/getItem')\n const { getItem } = getItemMod\n const relatedItem = await getItem({\n seedLocalId,\n seedUid,\n })\n\n if (!relatedItem) {\n throw new Error(\n `No related item found for relation or image property: ${relationOrImageProperty.propertyName}`,\n )\n }\n\n // When Image/Relation already has seedUid (published), skip creating its payload—only add the property to parent\n if (relatedItem.seedUid) {\n return multiPublishPayload\n }\n\n const versionUid = getVersionUid(relatedItem)\n\n let modelName: string | undefined\n\n if (relationOrImageProperty.propertyDef?.dataType === ModelPropertyDataTypes.Image) {\n modelName = 'Image'\n }\n\n if (relationOrImageProperty.propertyDef?.dataType === ModelPropertyDataTypes.File) {\n modelName = 'File'\n }\n\n if (relationOrImageProperty.propertyDef?.dataType === ModelPropertyDataTypes.Html) {\n modelName = 'Html'\n }\n\n if (relationOrImageProperty.propertyDef?.dataType === ModelPropertyDataTypes.Relation) {\n const def = relationOrImageProperty.propertyDef as { ref?: string; refModelName?: string }\n modelName = def.ref ?? def.refModelName\n }\n\n if (!modelName) {\n throw new Error(`Model name not found for relation or image property: ${relationOrImageProperty.propertyName}`)\n }\n\n const seedSchemaUid = await getEasSchemaUidForModel(modelName)\n \n if (!seedSchemaUid) {\n throw new Error(`Schema UID not found for model: ${modelName}`)\n }\n\n let publishPayload: PublishPayload = {\n localId: relatedItem.seedLocalId,\n seedIsRevocable: true,\n versionSchemaUid: VERSION_SCHEMA_UID_OPTIMISM_SEPOLIA,\n seedUid: seedUid || ZERO_BYTES32,\n seedSchemaUid,\n versionUid,\n listOfAttestations: [],\n propertiesToUpdate: [\n {\n publishLocalId: originalSeedLocalId,\n propertySchemaUid: relationOrImageSchemaUid,\n },\n ],\n }\n\n const { itemBasicProperties, itemUploadProperties } =\n getSegmentedItemProperties(relatedItem)\n\n if (itemUploadProperties.length === 1) {\n const uploadProperty = itemUploadProperties[0]\n const itemProperty = uploadProperty.itemProperty\n const transactionData = uploadedTransactions.find(\n (transaction) => transaction.seedLocalId === relatedItem.seedLocalId,\n )\n if (transactionData) {\n itemProperty.value = transactionData.txId\n await itemProperty.save()\n itemBasicProperties.push(itemProperty)\n }\n }\n\n publishPayload = await processBasicProperties(\n itemBasicProperties,\n publishPayload,\n )\n\n multiPublishPayload.push(publishPayload)\n\n return multiPublishPayload\n}\n\nconst processListProperty = async (\n listProperty: IItemProperty<any>,\n multiPublishPayload: MultiPublishPayload,\n originalSeedLocalId: string,\n): Promise<MultiPublishPayload> => {\n // processListProperty only handles list-of-relations; list-of-primitives go to itemBasicProperties\n if (!listProperty.propertyDef?.ref) {\n throw new Error(\n `processListProperty requires ref (list of relations). List property \"${listProperty.propertyName}\" has no ref. List-of-primitives should be in itemBasicProperties.`,\n )\n }\n let listPropertySchemaUid = listProperty.schemaUid\n if (!listPropertySchemaUid && listProperty.propertyDef) {\n const propertyData = await getPropertyData(listProperty)\n listPropertySchemaUid = propertyData.schemaUid\n }\n if (!listPropertySchemaUid) {\n throw new Error(\n `Schema uid not found for list property: ${listProperty.propertyName}`,\n )\n }\n\n const snapshot = listProperty.getService().getSnapshot()\n const context = 'context' in snapshot ? snapshot.context : null\n if (!context) {\n return multiPublishPayload\n }\n let value = (context as any).propertyValue\n if (!value || listProperty.uid) {\n return multiPublishPayload\n }\n\n const singularPropertyName = pluralize.singular(listProperty.propertyName)\n const propertyNameForSchema = `${singularPropertyName}${listProperty.propertyDef!.ref}Ids`\n if (typeof value === 'string' && value.length === 66) {\n value = [value]\n }\n if (typeof value === 'string' && value.length > 66) {\n try {\n value = JSON.parse(value)\n } catch (error) {\n value = value.split(',')\n }\n }\n\n for (const seedId of value) {\n const { localId: seedLocalId, uid: seedUid } = getCorrectId(seedId)\n\n // Use dynamic import to break circular dependency\n const getItemMod = await import('../../db/read/getItem')\n const { getItem } = getItemMod\n const relatedItem = await getItem({\n seedLocalId,\n seedUid,\n })\n\n if (!relatedItem) {\n console.error(\n `No related item found for list property: ${listProperty.propertyName}`,\n )\n continue\n }\n\n if (relatedItem.seedUid) {\n return multiPublishPayload\n }\n\n const versionUid = getVersionUid(relatedItem)\n\n let modelName: string | undefined\n\n if (listProperty.propertyDef?.ref || (listProperty.propertyDef as { refModelName?: string }).refModelName) {\n const def = listProperty.propertyDef as { ref?: string; refModelName?: string }\n modelName = def.ref ?? def.refModelName\n }\n\n if (listProperty.propertyDef?.dataType === ModelPropertyDataTypes.Image) {\n modelName = 'Image'\n }\n\n if (listProperty.propertyDef?.dataType === ModelPropertyDataTypes.File) {\n modelName = 'File'\n }\n\n if (listProperty.propertyDef?.dataType === ModelPropertyDataTypes.Html) {\n modelName = 'Html'\n }\n\n if (!modelName) {\n throw new Error(`Model name not found for list property: ${listProperty.propertyName}`)\n }\n\n const seedSchemaUid = await getEasSchemaUidForModel(modelName)\n \n if (!seedSchemaUid) {\n throw new Error(`Schema UID not found for model: ${modelName}`)\n }\n\n let publishPayload: PublishPayload = {\n localId: relatedItem.seedLocalId,\n seedIsRevocable: true,\n versionSchemaUid: VERSION_SCHEMA_UID_OPTIMISM_SEPOLIA,\n seedUid: seedUid || ZERO_BYTES32,\n seedSchemaUid,\n versionUid,\n listOfAttestations: [],\n propertiesToUpdate: [\n {\n publishLocalId: originalSeedLocalId,\n propertySchemaUid: listPropertySchemaUid,\n },\n ],\n }\n\n const { itemBasicProperties } = getSegmentedItemProperties(relatedItem)\n\n publishPayload = await processBasicProperties(\n itemBasicProperties,\n publishPayload,\n )\n\n multiPublishPayload.push(publishPayload)\n }\n\n return multiPublishPayload\n}\n\ntype PublishPayload = {\n localId: string\n seedIsRevocable: boolean\n seedSchemaUid: string\n seedUid: string\n versionSchemaUid: string\n versionUid: string\n listOfAttestations: (Omit<AttestationRequest, 'data'> & {\n data: AttestationRequestData[]\n _propertyName?: string\n _schemaDef?: string\n _unresolvedValue?: string\n })[]\n propertiesToUpdate: any[]\n}\n\ntype MultiPublishPayload = PublishPayload[]\n\n/** Map of seed localId -> attestation uid for resolving relation/image property values after dependent seeds are published */\nexport type ResolvedSeedUids = Record<string, string>\n\ntype UploadedTransaction = {\n txId: string\n itemPropertyLocalId?: string\n seedLocalId?: string\n versionLocalId?: string\n itemPropertyName?: string\n}\n\nexport const getPublishPayload = async (\n item: Item<any>,\n uploadedTransactions: UploadedTransaction[],\n): Promise<MultiPublishPayload> => {\n\n let multiPublishPayload: MultiPublishPayload = []\n\n // Each PublishPayload is generated from a Seed that needs publishing\n\n // First we need to determine all Seeds to publish\n\n // That means the Seed of the Item, plus any Seeds pointed to by Relations\n\n // Check if the item has a schema UID\n let itemSchemaUid = item.schemaUid\n if (!itemSchemaUid) {\n const schemaUid = await getEasSchemaUidForModel(item.modelName)\n if (!schemaUid) {\n throw new Error(`Schema UID not found for model: ${item.modelName}`)\n }\n itemSchemaUid = schemaUid\n }\n\n let itemPublishData: PublishPayload = {\n localId: item.seedLocalId,\n seedUid: item.seedUid || ZERO_BYTES32,\n seedIsRevocable: true,\n seedSchemaUid: itemSchemaUid,\n versionSchemaUid: VERSION_SCHEMA_UID_OPTIMISM_SEPOLIA,\n versionUid: getVersionUid(item),\n listOfAttestations: [],\n propertiesToUpdate: [],\n }\n\n const {\n itemBasicProperties,\n itemListProperties,\n itemUploadProperties,\n itemImageProperties,\n itemRelationProperties,\n } = getSegmentedItemProperties(item)\n\n const relationAndImageProperties = [...itemRelationProperties, ...itemImageProperties]\n\n if (itemUploadProperties.length === 1) {\n const uploadProperty = itemUploadProperties[0]\n const itemProperty = uploadProperty.itemProperty\n const transactionData = uploadedTransactions.find(\n (transaction) => transaction.seedLocalId === item.seedLocalId,\n )\n if (transactionData) {\n itemProperty.value = transactionData.txId\n await itemProperty.save()\n itemBasicProperties.push(itemProperty)\n }\n }\n\n for (const relationProperty of relationAndImageProperties) {\n multiPublishPayload = await processRelationOrImageProperty(\n relationProperty,\n multiPublishPayload,\n uploadedTransactions,\n item.seedLocalId,\n )\n itemBasicProperties.push(relationProperty)\n }\n\n for (const listProperty of itemListProperties) {\n multiPublishPayload = await processListProperty(\n listProperty,\n multiPublishPayload,\n item.seedLocalId,\n )\n itemBasicProperties.push(listProperty)\n }\n \n itemPublishData = await processBasicProperties(\n itemBasicProperties,\n itemPublishData,\n )\n\n multiPublishPayload.push(itemPublishData)\n\n // Ensure requests are ordered so that when A has propertiesToUpdate pointing to B (publishLocalId),\n // A (the updater) is published before B (the updatee). The contract injects A's seedUid into B's\n // attestation before B is sent to EAS.\n multiPublishPayload = orderPayloadByDependencies(multiPublishPayload)\n\n // Ensure attestations referenced in propertiesToUpdate have at least one data element.\n // The contract writes the seed UID into data[0].data; empty data causes Panic 50.\n multiPublishPayload = ensurePropertiesToUpdateAttestationsHaveData(multiPublishPayload)\n\n return multiPublishPayload\n}\n\n/**\n * Normalize a schema UID to 0x-prefixed 64-char hex for comparison.\n */\nfunction normalizeSchemaUid(v: string | undefined): string {\n if (v == null || v === '') return ''\n const raw = v.startsWith('0x') ? v.slice(2) : v\n const hex = raw.replace(/[^0-9a-fA-F]/g, '0').padStart(64, '0').slice(-64)\n return ('0x' + hex).toLowerCase()\n}\n\n/**\n * Ensure that when request A has propertiesToUpdate with (publishLocalId: B, propertySchemaUid: X),\n * request B has an attestation for schema X with at least one data element. The contract writes\n * the seed UID into data[0].data; empty data causes Panic 50.\n */\nfunction ensurePropertiesToUpdateAttestationsHaveData(\n payload: MultiPublishPayload,\n): MultiPublishPayload {\n const byLocalId = new Map<string, PublishPayload>()\n for (const p of payload) {\n byLocalId.set(p.localId, p)\n }\n\n const placeholderData: AttestationRequestData = {\n ...defaultAttestationData,\n data: ZERO_BYTES32,\n }\n\n for (const req of payload) {\n for (const pu of req.propertiesToUpdate ?? []) {\n const targetId = (pu as { publishLocalId?: string }).publishLocalId\n const schemaUid = (pu as { propertySchemaUid?: string }).propertySchemaUid\n if (!targetId || !schemaUid) continue\n\n const targetReq = byLocalId.get(targetId)\n if (!targetReq?.listOfAttestations) continue\n\n const wantSchema = normalizeSchemaUid(schemaUid)\n const att = targetReq.listOfAttestations.find(\n (a) => normalizeSchemaUid(a?.schema) === wantSchema,\n )\n if (!att) continue\n\n if (!Array.isArray(att.data) || att.data.length === 0) {\n att.data = [placeholderData]\n }\n }\n }\n\n return payload\n}\n\n/**\n * Topological sort: when request A has propertiesToUpdate with publishLocalId B,\n * A (the updater) must appear before B (the updatee). The contract injects A's seedUid\n * into B's attestation before B is sent to EAS; if B is processed first, B's attestation\n * goes out with wrong data (string instead of bytes32).\n */\nfunction orderPayloadByDependencies(payload: MultiPublishPayload): MultiPublishPayload {\n const byLocalId = new Map<string, PublishPayload>()\n for (const p of payload) {\n byLocalId.set(p.localId, p)\n }\n const visited = new Set<string>()\n const result: PublishPayload[] = []\n\n const visit = (localId: string) => {\n if (visited.has(localId)) return\n visited.add(localId)\n const p = byLocalId.get(localId)\n if (!p) return\n result.push(p)\n for (const u of p.propertiesToUpdate ?? []) {\n const targetId = (u as { publishLocalId?: string }).publishLocalId\n if (targetId && targetId !== localId) visit(targetId)\n }\n }\n\n for (const p of payload) {\n visit(p.localId)\n }\n return result\n}\n\n/**\n * Resolves relation/image property values (seedLocalId) to attestation uids after dependent seeds are published.\n * Call after each payload is published, passing the returned attestation uid for that seed's localId.\n * Returns an updated multiPayload with re-encoded attestations where resolution was applied.\n */\nexport const resolvePublishPayloadValues = async (\n multiPayload: MultiPublishPayload,\n resolvedUids: ResolvedSeedUids,\n): Promise<MultiPublishPayload> => {\n if (Object.keys(resolvedUids).length === 0) {\n return multiPayload\n }\n\n const SchemaEncoder = await getSchemaEncoder()\n const result: MultiPublishPayload = []\n\n for (const payload of multiPayload) {\n const updatedAttestations: PublishPayload['listOfAttestations'] = []\n\n for (const attestation of payload.listOfAttestations) {\n const entry = attestation as PublishPayload['listOfAttestations'][0] & {\n _easDataType?: string\n data?: AttestationRequestData[] | AttestationRequestData\n }\n\n const resolvedUid = entry._unresolvedValue && resolvedUids[entry._unresolvedValue]\n if (resolvedUid && entry._schemaDef && entry._propertyName) {\n const propertyNameForSchema = toSnakeCase(entry._propertyName)\n const dataEncoder = new SchemaEncoder(entry._schemaDef)\n const encodedData = dataEncoder.encodeData([\n {\n name: propertyNameForSchema,\n type: (entry._easDataType as 'bytes32' | 'string') || 'bytes32',\n value: resolvedUid,\n },\n ])\n const baseData = Array.isArray(entry.data) ? entry.data[0] : (entry.data as AttestationRequestData)\n updatedAttestations.push({\n ...entry,\n data: [\n {\n ...baseData,\n data: encodedData,\n } as AttestationRequestData,\n ],\n _unresolvedValue: undefined,\n })\n } else {\n const normalizedEntry: PublishPayload['listOfAttestations'][0] = {\n ...entry,\n data: Array.isArray(entry.data) ? entry.data : [entry.data as AttestationRequestData],\n }\n updatedAttestations.push(normalizedEntry)\n }\n }\n\n result.push({\n ...payload,\n listOfAttestations: updatedAttestations,\n })\n }\n\n return result\n}\n"],"names":["ZERO_BYTES32","INTERNAL_DATA_TYPES","toSnakeCase","getEasSchemaUidForSchemaDefinition","getEasSchemaForItemProperty","ethers","defaultAttestationData","getCorrectId","ModelPropertyDataTypes","getEasSchemaUidForModel","VERSION_SCHEMA_UID_OPTIMISM_SEPOLIA","getSegmentedItemProperties"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var main_cjs = require('./index-BLETlVgA.js');
4
- var getSegmentedItemProperties = require('./getSegmentedItemProperties-JT984OOp.js');
3
+ var main_cjs = require('./index-CA4i5TA7.js');
4
+ var getSegmentedItemProperties = require('./getSegmentedItemProperties-MVZ-0mQG.js');
5
5
  var debug = require('debug');
6
6
  var sha3 = require('js-sha3');
7
7
  require('immer');
@@ -279,4 +279,4 @@ const getPublishUploads = async (item, uploads = [], relatedItemProperty) => {
279
279
 
280
280
  exports.getPublishUploads = getPublishUploads;
281
281
  exports.prepareArweaveTransaction = prepareArweaveTransaction;
282
- //# sourceMappingURL=getPublishUploads-oukGI2N6.js.map
282
+ //# sourceMappingURL=getPublishUploads-B7bB1OGg.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getPublishUploads-oukGI2N6.js","sources":["../../../src/helpers/crypto.ts","../../../src/db/read/getPublishUploads.ts"],"sourcesContent":["import * as sha3 from 'js-sha3'\n\nconst { sha3_256, } = sha3\n\n\nexport const getContentHash = async (\n data: sha3.Message\n): Promise<string> => {\n return sha3_256(data)\n}","import { BaseFileManager, getCorrectId } from '@/helpers'\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 } from '@/types/arweave'\nimport { PublishUpload } from '@/types/publish'\n\nconst logger = debug('seedSdk:item:getPublishUploads')\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): Promise<ArweaveTransaction> => {\n const tags: { name: string; value: string }[] = []\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\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 (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 default:\n return BaseFileManager.getFilesPath('images')\n }\n}\n\nconst getStorageSeedUploads = async (\n itemStorageSeedProperties: IItemProperty<any>[],\n) => {\n const uploads: PublishUpload[] = []\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 { localId: seedLocalId } = getCorrectId(propertyValue)\n if (!seedLocalId) {\n continue\n }\n\n const dataType = itemProperty.propertyDef?.dataType ?? 'Image'\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 )\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\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: 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 )\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) => {\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 storageSeedUploads = await getStorageSeedUploads(itemImageProperties)\n uploads.push(...storageSeedUploads)\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 { localId: seedLocalId, uid: seedUid } = getCorrectId(propertyValue)\n\n const relatedItem = await Item.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":["sha3","BaseArweaveClient","BaseFileManager","getCorrectId","getSegmentedItemProperties","Item"],"mappings":"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"}
1
+ {"version":3,"file":"getPublishUploads-B7bB1OGg.js","sources":["../../../src/helpers/crypto.ts","../../../src/db/read/getPublishUploads.ts"],"sourcesContent":["import * as sha3 from 'js-sha3'\n\nconst { sha3_256, } = sha3\n\n\nexport const getContentHash = async (\n data: sha3.Message\n): Promise<string> => {\n return sha3_256(data)\n}","import { BaseFileManager, getCorrectId } from '@/helpers'\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 } from '@/types/arweave'\nimport { PublishUpload } from '@/types/publish'\n\nconst logger = debug('seedSdk:item:getPublishUploads')\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): Promise<ArweaveTransaction> => {\n const tags: { name: string; value: string }[] = []\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\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 (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 default:\n return BaseFileManager.getFilesPath('images')\n }\n}\n\nconst getStorageSeedUploads = async (\n itemStorageSeedProperties: IItemProperty<any>[],\n) => {\n const uploads: PublishUpload[] = []\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 { localId: seedLocalId } = getCorrectId(propertyValue)\n if (!seedLocalId) {\n continue\n }\n\n const dataType = itemProperty.propertyDef?.dataType ?? 'Image'\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 )\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\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: 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 )\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) => {\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 storageSeedUploads = await getStorageSeedUploads(itemImageProperties)\n uploads.push(...storageSeedUploads)\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 { localId: seedLocalId, uid: seedUid } = getCorrectId(propertyValue)\n\n const relatedItem = await Item.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":["sha3","BaseArweaveClient","BaseFileManager","getCorrectId","getSegmentedItemProperties","Item"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  require('reflect-metadata');
4
- var main_cjs = require('./index-BLETlVgA.js');
4
+ var main_cjs = require('./index-CA4i5TA7.js');
5
5
  require('pluralize');
6
6
  require('drizzle-orm');
7
7
 
@@ -68,4 +68,4 @@ const getSegmentedItemProperties = (item) => {
68
68
  };
69
69
 
70
70
  exports.getSegmentedItemProperties = getSegmentedItemProperties;
71
- //# sourceMappingURL=getSegmentedItemProperties-JT984OOp.js.map
71
+ //# sourceMappingURL=getSegmentedItemProperties-MVZ-0mQG.js.map