{"id":49629,"library":"v4-migration-lib-test","title":"Ocean Protocol v4 Migration Library","description":"A JavaScript/TypeScript library for migrating data from Ocean Protocol v3 to v4. Current stable version is 0.0.2, with no regular release cadence yet. It provides functions to fetch and transform metadata, pricing, and datatoken information from Ocean Protocol's v3 contracts and Aquarius metadata cache. Key differentiators: it specifically handles the breaking changes between Ocean Protocol v3 and v4, including the switch from DDO v3 to DDO v4 schemas. The library is ESM-only and ships TypeScript types. It is intended to be used in Node.js environments and requires a connection to an Aquarius instance.","status":"active","version":"0.0.2","language":"javascript","source_language":"en","source_url":"https://github.com/oceanprotocol/v4-migration-lib","tags":["javascript","typescript"],"install":[{"cmd":"npm install v4-migration-lib-test","lang":"bash","label":"npm"},{"cmd":"yarn add v4-migration-lib-test","lang":"bash","label":"yarn"},{"cmd":"pnpm add v4-migration-lib-test","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Provides v3 contract ABIs for reading on-chain data","package":"@oceanprotocol/contracts","optional":false},{"reason":"Ethereum interaction library for contract calls","package":"web3","optional":false}],"imports":[{"note":"ESM-only package; require() will error. TypeScript: import { convertDDO } from 'v4-migration-lib'","wrong":"const convertDDO = require('v4-migration-lib').convertDDO","symbol":"convertDDO","correct":"import { convertDDO } from 'v4-migration-lib'"},{"note":"Named export, not default. Must use destructuring.","wrong":"import migrateAsset from 'v4-migration-lib'","symbol":"migrateAsset","correct":"import { migrateAsset } from 'v4-migration-lib'"},{"note":"Subpath imports are not supported; import from the package root.","wrong":"import { getV3Data } from 'v4-migration-lib/getV3Data'","symbol":"getV3Data","correct":"import { getV3Data } from 'v4-migration-lib'"}],"quickstart":{"code":"import { convertDDO, migrateAsset } from 'v4-migration-lib';\n\nconst v3DDO = {\n  '@context': 'https://w3id.org/did/v1',\n  id: 'did:op:0x1234567890abcdef1234567890abcdef12345678',\n  authentication: [],\n  service: [],\n  proof: {},\n  created: '2020-01-01T00:00:00Z',\n  checksum: '0xabc',\n  dataToken: '0xabcdefabcdefabcdefabcdefabcdefabcdefabcd',\n  publicKey: []\n};\n\nconst v4DDO = convertDDO(v3DDO);\nconsole.log('Converted DDO:', v4DDO);\n\nasync function runMigration() {\n  const web3 = new (require('web3'))(process.env.WEB3_PROVIDER_URL ?? 'http://localhost:8545');\n  const migrated = await migrateAsset(v3DDO, web3, process.env.METADATACACHE_URI ?? 'https://aquarius.oceanprotocol.com');\n  console.log('Migration result:', migrated);\n}\n\nrunMigration().catch(err => console.error(err));","lang":"typescript","description":"Demonstrates converting a v3 DDO to v4 format and performing full asset migration using Web3 and Aquarius."},"warnings":[{"fix":"Use import syntax or set { type: 'module' } in package.json.","message":"Library is ESM-only; cannot be required with require() in Node.js without ESM support.","severity":"breaking","affected_versions":">=0.0.0"},{"fix":"Use getV3Data only with Aquarius v3 endpoints; migrate to v4 endpoints.","message":"Function getV3Data uses Aquarius API v3 which is deprecated; v4 Aquarius may not support it.","severity":"deprecated","affected_versions":"<=0.0.2"},{"fix":"Always use await or .then() when calling library functions.","message":"All functions are async and return Promises; forgetting await leads to unresolved Promises.","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"Set METADATACACHE_URI environment variable or pass a fallback URL.","message":"METADATACACHE_URI environment variable must be set or passed explicitly; otherwise defaults may not work.","severity":"gotcha","affected_versions":">=0.0.0"}],"env_vars":null,"search_vec":"'0.0.2':22 'aquarius':48,100 'break':57 'cach':50 'cadenc':27 'chang':58 'connect':97 'contract':46 'current':18 'data':11 'datatoken':39 'ddo':69,72 'differenti':52 'environ':93 'esm':79 'esm-on':78 'fetch':33 'function':31 'handl':55 'includ':65 'inform':40 'instanc':101 'intend':87 'javascript':102 'javascript/typescript':7 'key':51 'librari':5,8,76 'metadata':36,49 'migrat':4,10 'node.js':92 'ocean':1,13,42,60 'price':37 'protocol':2,14,43,61 'provid':30 'regular':25 'releas':26 'requir':95 'schema':74 'ship':82 'specif':54 'stabl':19 'switch':67 'transform':35 'type':84 'typescript':83,103 'use':90 'v3':15,45,62,70 'v4':3,17,64,73 'version':20 'yet':28","created_at":"2026-06-07T17:02:45.950710+00:00","updated_at":"2026-06-07T17:02:45.950710+00:00","problems":[{"fix":"Use import syntax or set { type: 'module' } in package.json and rename file to .mjs.","cause":"Using require() to import an ESM-only this package.","error":"ERR_REQUIRE_ESM"},{"fix":"Use import { convertDDO } from 'v4-migration-lib'.","cause":"Incorrect import (default import instead of named import).","error":"TypeError: convertDDO is not a function"},{"fix":"Install web3: npm install web3","cause":"Missing peer dependency web3.","error":"Error: Cannot find module 'web3'"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":"https://github.com/oceanprotocol/v4-migration-lib#readme","github":"https://github.com/oceanprotocol/v4-migration-lib","docs":null,"changelog":null,"pypi":null,"npm":"v4-migration-lib-test","openapi_spec":null,"status_page":null,"smithery":null,"categories":["database"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-07","next_check":"2026-09-05","install_tag":null}}