Open Cap Table Protocol Canton SDK - v0.2.287
    Preparing search index...

    Function normalizeOcfData

    • Normalize OCF data for consistent comparison.

      This function applies normalizations to ensure semantically equivalent data compares as equal:

      1. Converts PlanSecurity object_type to EquityCompensation equivalent
      2. Normalizes quantity_source based on quantity presence (see normalizeQuantitySource)
      3. Strips Document fields that the DAML contract does not model (e.g. date)
      4. Canonicalizes deprecated issuance aliases (plan_security_type/option_grant_type)
      5. Canonicalizes Stakeholder relationships (current_relationship -> current_relationships)
      6. Canonicalizes StockPlan class IDs (stock_class_id -> stock_class_ids)
      7. Canonicalizes StockConversion quantity (quantity -> quantity_converted)
      8. Canonicalizes StockClassSplit legacy ratio fields
      9. Canonicalizes StockClassConversionRatioAdjustment legacy ratio fields
      10. Normalizes capitalization_definition_rules booleans for convertible issuances
      11. Normalizes numeric string formatting (strips trailing zeros from decimals)

      Type Parameters

      • T extends Record<string, unknown>

      Parameters

      • data: T

        The OCF data object that may contain an object_type field

      Returns T

      The data with normalized fields (shallow copy if modified)

      normalizeOcfData({ object_type: 'TX_PLAN_SECURITY_ISSUANCE', id: '123' })
      // => { object_type: 'TX_EQUITY_COMPENSATION_ISSUANCE', id: '123' }

      normalizeOcfData({ quantity: '1000' })
      // => { quantity: '1000', quantity_source: 'UNSPECIFIED' }

      normalizeOcfData({ object_type: 'DOCUMENT', id: 'doc-1', date: '2024-01-15' })
      // => { object_type: 'DOCUMENT', id: 'doc-1' }

      normalizeOcfData({ object_type: 'STOCK_PLAN', stock_class_id: 'sc-1', id: 'sp-1', plan_name: 'Plan', initial_shares_reserved: '1000' })
      // => { object_type: 'STOCK_PLAN', stock_class_ids: ['sc-1'], id: 'sp-1', plan_name: 'Plan', initial_shares_reserved: '1000' }