{"_id":"@apot-platforms/iot-metadata","_rev":"9-fac7c9598e1c382ca553a6f46fb0aa36","name":"@apot-platforms/iot-metadata","dist-tags":{"latest":"0.3.2"},"versions":{"0.2.0":{"name":"@apot-platforms/iot-metadata","version":"0.2.0","keywords":["metadata","nft","validator","zod"],"author":{"name":"Dante Chun"},"license":"ISC","_id":"@apot-platforms/iot-metadata@0.2.0","maintainers":[{"name":"dantechun","email":"dev.1000ship@gmail.com"}],"dist":{"shasum":"df7b6b2166e5815bcf69deead4670edb0ea7c722","tarball":"https://registry.npmjs.org/@apot-platforms/iot-metadata/-/iot-metadata-0.2.0.tgz","fileCount":32,"integrity":"sha512-hjJqP9kexoVbrnsRoizjqW7tEwc6KySyVpL3DRTxBae6MbsdRp3lrnjQzmhVYn1NKsRJczG0JEMZ3MdpFWLpug==","signatures":[{"sig":"MEUCIQD6w5/SUZeuc5dL6gLVGunToOSxYlXMsUNwFvkX/aLNbgIgKuJIemBnck6kTfGxnKPZO3XAq5i8CzFzlWcBQVA2geg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":65664},"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"jest","build":"tsc","clean":"rm -rf dist","prebuild":"yarn clean","pack-test":"yarn pack --filename iot-metadata-test.tgz && tar -tvf iot-metadata-test.tgz | grep -v node_modules","prepublishOnly":"yarn test && yarn build"},"_npmUser":{"name":"dantechun","email":"dev.1000ship@gmail.com"},"description":"NFT 메타데이터 검증 및 마이그레이션 라이브러리","directories":{},"dependencies":{"zod":"^3.24.4","libphonenumber-js":"^1.12.8"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.3.4","typescript":"^5.8.3","@types/jest":"^29.5.14"},"_npmOperationalInternal":{"tmp":"tmp/iot-metadata_0.2.0_1747667369340_0.3001482736183907","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@apot-platforms/iot-metadata","version":"0.2.1","keywords":["metadata","nft","validator","zod"],"author":{"name":"Dante Chun"},"license":"ISC","_id":"@apot-platforms/iot-metadata@0.2.1","maintainers":[{"name":"dantechun","email":"dev.1000ship@gmail.com"}],"dist":{"shasum":"22b1e6b248576bce700ae4eedcf0cbbf3cf835c5","tarball":"https://registry.npmjs.org/@apot-platforms/iot-metadata/-/iot-metadata-0.2.1.tgz","fileCount":32,"integrity":"sha512-hAtDDzdcufMUDT4kgrzszet3+7ekLWGdkJkNXLhiroXRYOZrf/v31XExu30s84Xpugs81dJtD0SMkcCVymenAw==","signatures":[{"sig":"MEQCIHefPIvb+NNn+Hj7xCvE5g/RTxfwwdoccar+SnpuzktlAiBMUEytfxxMKe6f57bcz4xx1gap0HULPz0wozqSxpEhrQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66959},"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"jest","build":"tsc","clean":"rm -rf dist","prebuild":"yarn clean","pack-test":"yarn pack --filename iot-metadata-test.tgz && tar -tvf iot-metadata-test.tgz | grep -v node_modules","prepublishOnly":"yarn test && yarn build"},"_npmUser":{"name":"dantechun","email":"dev.1000ship@gmail.com"},"description":"NFT 메타데이터 검증 및 마이그레이션 라이브러리","directories":{},"dependencies":{"zod":"^3.24.4","libphonenumber-js":"^1.12.8"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.3.4","typescript":"^5.8.3","@types/jest":"^29.5.14"},"_npmOperationalInternal":{"tmp":"tmp/iot-metadata_0.2.1_1747667905523_0.8428374978426172","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@apot-platforms/iot-metadata","version":"0.2.2","keywords":["metadata","nft","validator","zod"],"author":{"name":"Dante Chun"},"license":"ISC","_id":"@apot-platforms/iot-metadata@0.2.2","maintainers":[{"name":"dantechun","email":"dev.1000ship@gmail.com"}],"dist":{"shasum":"1bd4746b3eda472bbd6302d3797c777c5bca22c1","tarball":"https://registry.npmjs.org/@apot-platforms/iot-metadata/-/iot-metadata-0.2.2.tgz","fileCount":44,"integrity":"sha512-fcltjzFsA+vzXFredlEzaVKfaLgcyDPgs7kcVyqhZpkhKxCk2uV8O7JxTfKC6Ro6PCa8Cr3KILk4gndpVimkNw==","signatures":[{"sig":"MEUCICosfEoBE5OVs/oeixzOa8R7sWeVVtfFtDsRa2i1RteVAiEA//60ZsecLKNg0pz6OoK0OA0e9vHyQsDyeaPj7KtXdv8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":82952},"main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"test":"jest","build":"tsc","clean":"rm -rf dist","prebuild":"yarn clean","pack-test":"yarn pack --filename iot-metadata-test.tgz && tar -tvf iot-metadata-test.tgz | grep -v node_modules","prepublishOnly":"yarn test && yarn build"},"_npmUser":{"name":"dantechun","email":"dev.1000ship@gmail.com"},"description":"NFT 메타데이터 검증 및 마이그레이션 라이브러리","directories":{},"dependencies":{"zod":"^3.24.4","libphonenumber-js":"^1.12.8"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.3.4","typescript":"^5.8.3","@types/jest":"^29.5.14"},"_npmOperationalInternal":{"tmp":"tmp/iot-metadata_0.2.2_1747735165551_0.749848213666146","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@apot-platforms/iot-metadata","version":"0.2.3","keywords":["metadata","nft","validator","zod"],"author":{"name":"Dante Chun"},"license":"ISC","_id":"@apot-platforms/iot-metadata@0.2.3","maintainers":[{"name":"dantechun","email":"dev.1000ship@gmail.com"}],"dist":{"shasum":"ee8a6e7b7f05221639d3288ec2c166badfa97b9a","tarball":"https://registry.npmjs.org/@apot-platforms/iot-metadata/-/iot-metadata-0.2.3.tgz","fileCount":44,"integrity":"sha512-3T7HpMLPET/nLJmHAs/GwtOEqtoX8LK761m4kable2u99hwKY8K6sOuPFZOBtrKoiBCBnq4+HDGvGaHDKJWxtw==","signatures":[{"sig":"MEUCIFZTLbrWJsdPIYuCrfAVcQ5vAVkO1VFwNH9amv4WslcTAiEA/BgdZPxtfE7sR/9vz26vTLYkax+q4ph1v1Ft3bQhOFc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":82452},"main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"test":"jest","build":"tsc","clean":"rm -rf dist","prebuild":"yarn clean","pack-test":"yarn pack --filename iot-metadata-test.tgz && tar -tvf iot-metadata-test.tgz | grep -v node_modules","prepublishOnly":"yarn test && yarn build"},"_npmUser":{"name":"dantechun","email":"dev.1000ship@gmail.com"},"description":"NFT 메타데이터 검증 및 마이그레이션 라이브러리","directories":{},"dependencies":{"zod":"^3.24.4","libphonenumber-js":"^1.12.8"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.3.4","typescript":"^5.8.3","@types/jest":"^29.5.14"},"_npmOperationalInternal":{"tmp":"tmp/iot-metadata_0.2.3_1747747071399_0.2846490377151838","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@apot-platforms/iot-metadata","version":"0.2.4","keywords":["metadata","nft","validator","zod"],"author":{"name":"Dante Chun"},"license":"ISC","_id":"@apot-platforms/iot-metadata@0.2.4","maintainers":[{"name":"dantechun","email":"dev.1000ship@gmail.com"}],"dist":{"shasum":"55a2e116318fdd7463f650fdd74ab5bb42850f21","tarball":"https://registry.npmjs.org/@apot-platforms/iot-metadata/-/iot-metadata-0.2.4.tgz","fileCount":44,"integrity":"sha512-qnGOXez+aJILGYTcKYOlPOyNiOc8Uz8x7/uoJpGkI35yykVFMKfIcfeFaOBpMhZzqR4lbzmkTcGbNfeQRAC/og==","signatures":[{"sig":"MEUCIQDTFzHVOhuEkX5DOc5PN0xdoe8Wko/8lw18e33CbGpODgIgGPZf01PwenhHdzMOfzmP7sphFxL4fJ6F1lXxz570e+g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":82452},"main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"test":"jest","build":"tsc","clean":"rm -rf dist","prebuild":"yarn clean","pack-test":"yarn pack --filename iot-metadata-test.tgz && tar -tvf iot-metadata-test.tgz | grep -v node_modules","prepublishOnly":"yarn test && yarn build"},"_npmUser":{"name":"dantechun","email":"dev.1000ship@gmail.com"},"description":"NFT 메타데이터 검증 및 마이그레이션 라이브러리","directories":{},"dependencies":{"zod":"^3.24.4","libphonenumber-js":"^1.12.8"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.3.4","typescript":"^5.8.3","@types/jest":"^29.5.14"},"_npmOperationalInternal":{"tmp":"tmp/iot-metadata_0.2.4_1747751475107_0.09094557451975782","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"@apot-platforms/iot-metadata","version":"0.2.6","keywords":["metadata","nft","validator","zod"],"author":{"name":"Dante Chun"},"license":"ISC","_id":"@apot-platforms/iot-metadata@0.2.6","maintainers":[{"name":"dantechun","email":"dev.1000ship@gmail.com"}],"dist":{"shasum":"dbf1a487fcc0b3282ee078a9749eecd7b1a37727","tarball":"https://registry.npmjs.org/@apot-platforms/iot-metadata/-/iot-metadata-0.2.6.tgz","fileCount":47,"integrity":"sha512-MQccAwCV9UAVovstdUmMtQ/ptwYIPtYsd765zud3vY91mPO2G6BXmCoPjZm8wkQTd1HkypGKv4B05Gwcwa2wKA==","signatures":[{"sig":"MEUCIQCTOHQluJzd/+HOQbqHquec6eFXk0e1pq2zaSbqSz0bqwIgQbykz68uIXzGy4HCvqCAbdIFkyQJ098/f7yIOus9iro=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":86622},"main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"test":"jest","build":"tsc","clean":"rm -rf dist","prebuild":"yarn clean","pack-test":"yarn pack --filename iot-metadata-test.tgz && tar -tvf iot-metadata-test.tgz | grep -v node_modules","prepublishOnly":"yarn test && yarn build"},"_npmUser":{"name":"dantechun","email":"dev.1000ship@gmail.com"},"description":"NFT 메타데이터 검증 및 마이그레이션 라이브러리","directories":{},"dependencies":{"zod":"^3.24.4","libphonenumber-js":"^1.12.8"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.3.4","typescript":"^5.8.3","@types/jest":"^29.5.14"},"_npmOperationalInternal":{"tmp":"tmp/iot-metadata_0.2.6_1747977765823_0.2955747433544742","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@apot-platforms/iot-metadata","version":"0.3.0","keywords":["metadata","nft","validator","zod"],"author":{"name":"Dante Chun"},"license":"ISC","_id":"@apot-platforms/iot-metadata@0.3.0","maintainers":[{"name":"dantechun","email":"dev.1000ship@gmail.com"}],"dist":{"shasum":"2e1cb51bd46d4c85c6fe83bb65f557dce6b40c08","tarball":"https://registry.npmjs.org/@apot-platforms/iot-metadata/-/iot-metadata-0.3.0.tgz","fileCount":59,"integrity":"sha512-ABIZzRyxuBkfDSA0Vf5oUx2MnVtX9GA27cd4AGl6nAXTWpc0Zyg1xjRwAC+CAZoL/Q9CLJGbrNwQadQ3MAVdQA==","signatures":[{"sig":"MEYCIQDgRG/DUINrefm+s6yIq9jCtNydDQh6u4r8t0O1zsJWQQIhAOKHpG8iSNaRkLM3eWFWiu2eXgVsV5Rgavh/8n7JLGrT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":120562},"main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"57b9555c139095380f6a08775cc8188f7da3d629","scripts":{"test":"jest","build":"tsc","clean":"rm -rf dist","prebuild":"yarn clean","pack-test":"yarn pack --filename iot-metadata-test.tgz && tar -tvf iot-metadata-test.tgz | grep -v node_modules","prepublishOnly":"yarn test && yarn build"},"_npmUser":{"name":"dantechun","email":"dev.1000ship@gmail.com"},"_npmVersion":"10.8.2","description":"NFT 메타데이터 검증 및 마이그레이션 라이브러리","directories":{},"_nodeVersion":"20.18.3","dependencies":{"zod":"^3.24.4","libphonenumber-js":"^1.12.8"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.3.4","typescript":"^5.8.3","@types/jest":"^29.5.14"},"_npmOperationalInternal":{"tmp":"tmp/iot-metadata_0.3.0_1749113899729_0.9862281638023613","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@apot-platforms/iot-metadata","version":"0.3.1","keywords":["metadata","nft","validator","zod"],"author":{"name":"Dante Chun"},"license":"ISC","_id":"@apot-platforms/iot-metadata@0.3.1","maintainers":[{"name":"dantechun","email":"dev.1000ship@gmail.com"}],"dist":{"shasum":"7fef6a339de545b77c1bbcabad87bbb220f1bfa4","tarball":"https://registry.npmjs.org/@apot-platforms/iot-metadata/-/iot-metadata-0.3.1.tgz","fileCount":59,"integrity":"sha512-Dy/VF8H5Bs1FnZcwbIinvehRHoR+uLuykYNTpuc9r9w8M54DsvsWn5ysSbfS7n20pE2rKrdjaJgEHwo+Yeidxw==","signatures":[{"sig":"MEUCIQDI7XKLCoQzxQkQ+LKzYWtAXXzIlVd2Em2kT3gMsP8iFAIgXLf/egGqt4WK6buFqACVuQ1B+ii/j0/LHmBO6HhJKy8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":126756},"main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"a1433fe8808ba4cca5c04774a87420b28ee30abc","scripts":{"test":"jest","build":"tsc","clean":"rm -rf dist","prebuild":"yarn clean","pack-test":"yarn pack --filename iot-metadata-test.tgz && tar -tvf iot-metadata-test.tgz | grep -v node_modules","prepublishOnly":"yarn test && yarn build"},"_npmUser":{"name":"dantechun","email":"dev.1000ship@gmail.com"},"_npmVersion":"10.8.2","description":"NFT 메타데이터 검증 및 마이그레이션 라이브러리","directories":{},"_nodeVersion":"20.18.3","dependencies":{"zod":"^3.24.4","libphonenumber-js":"^1.12.8"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.3.4","typescript":"^5.8.3","@types/jest":"^29.5.14"},"_npmOperationalInternal":{"tmp":"tmp/iot-metadata_0.3.1_1749178837892_0.8969467662612045","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@apot-platforms/iot-metadata","version":"0.3.2","description":"NFT 메타데이터 검증 및 마이그레이션 라이브러리","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"test":"jest","build":"tsc","clean":"rm -rf dist","prebuild":"yarn clean","prepublishOnly":"yarn test && yarn build","pack-test":"yarn pack --filename iot-metadata-test.tgz && tar -tvf iot-metadata-test.tgz | grep -v node_modules"},"keywords":["metadata","nft","validator","zod"],"author":{"name":"Dante Chun"},"license":"ISC","dependencies":{"libphonenumber-js":"^1.12.8","zod":"^3.24.4"},"devDependencies":{"@types/jest":"^29.5.14","jest":"^29.7.0","ts-jest":"^29.3.4","typescript":"^5.8.3"},"packageManager":"yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e","_id":"@apot-platforms/iot-metadata@0.3.2","gitHead":"8fb3813fa1e2369302fd9c55bb655a306b699bca","_nodeVersion":"22.16.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-hEhMz1lOcH3L6WRqs+3ZQ3dazoNxWu+Y2NXqRODPE3BSy6QL6onzwpBBwlRMASYOYt2/eXsGgU/gi8YinDUbAQ==","shasum":"0b3ca8c1fdbdf629b923f7ab40092972c7751005","tarball":"https://registry.npmjs.org/@apot-platforms/iot-metadata/-/iot-metadata-0.3.2.tgz","fileCount":59,"unpackedSize":127098,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHpDS8ugWt9ZuGkKXqc9+PU61DoCD7pcRHL7+IEqtLpyAiB/37yr9NFNOmjdNS8+9/I3b4A3wLlr2m/cJyTEFFdOhQ=="}]},"_npmUser":{"name":"dantechun","email":"dev.1000ship@gmail.com"},"directories":{},"maintainers":[{"name":"dantechun","email":"dev.1000ship@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/iot-metadata_0.3.2_1761927676559_0.1353342092010974"},"_hasShrinkwrap":false}},"time":{"created":"2025-05-19T15:09:29.246Z","modified":"2025-10-31T16:21:16.973Z","0.2.0":"2025-05-19T15:09:29.540Z","0.2.1":"2025-05-19T15:18:25.720Z","0.2.2":"2025-05-20T09:59:25.727Z","0.2.3":"2025-05-20T13:17:51.572Z","0.2.4":"2025-05-20T14:31:15.303Z","0.2.6":"2025-05-23T05:22:46.028Z","0.3.0":"2025-06-05T08:58:19.912Z","0.3.1":"2025-06-06T03:00:38.059Z","0.3.2":"2025-10-31T16:21:16.751Z"},"author":{"name":"Dante Chun"},"license":"ISC","keywords":["metadata","nft","validator","zod"],"description":"NFT 메타데이터 검증 및 마이그레이션 라이브러리","maintainers":[{"name":"dantechun","email":"dev.1000ship@gmail.com"}],"readme":"# iot-metadata\n\nNFT 메타데이터 검증 및 마이그레이션 라이브러리입니다.\n\n## 설치\n\n```bash\nyarn add @apot-platforms/iot-metadata\n# 또는\nnpm install @apot-platforms/iot-metadata\n```\n\n## 사용 방법\n\n### 메타데이터 검증\n\n```typescript\nimport { validateMetadata } from '@apot-platforms/iot-metadata';\n\nconst metadata = {\n  name: \"테스트 NFT\",\n  image: \"https://example.com/image.jpg\",\n  description: \"테스트 설명\",\n  version: \"0.2\",\n  isAllowCollectChecked: false,\n  artworkInformation: {\n    collectionId: 1,\n    salesDisplayStatus: \"SALES_AND_DISPLAY\",\n    tags: [\"테스트\"],\n    createDate: new Date(\"2023-01-01\"),\n    willContinuousPublication: true,\n    willAnnouncement: true,\n  }\n};\n\nconst result = validateMetadata(metadata);\nif (result.success) {\n  console.log('메타데이터가 유효합니다:', result.data);\n} else {\n  console.error('메타데이터가 유효하지 않습니다:', result.error);\n}\n```\n\n### 메타데이터 파싱 및 버전 변환\n\n```typescript\nimport { parseMetadata } from '@apot-platforms/iot-metadata';\n\n// V1 메타데이터\nconst v1Metadata = {\n  name: \"테스트 NFT\",\n  image: \"https://example.com/image.jpg\",\n  description: \"테스트 설명\",\n  version: \"0.1\",\n  isAllowCollectChecked: false,\n  copyright: {\n    email: \"test@example.com\",\n    phone: \"+821012345678\",\n    phoneCountryCode: \"KR\",\n    willContinuousPublication: true,\n    nationality: \"KR\",\n    willAnnouncement: true,\n    postcode: \"12345\",\n    address: \"서울시 강남구\",\n    detailAddress: \"테스트 빌딩\",\n    createDate: new Date(\"2023-01-01\"),\n  }\n};\n\ntry {\n  // V1 메타데이터를 V2로 변환\n  const v2Metadata = parseMetadata(v1Metadata);\n  console.log('변환된 메타데이터:', v2Metadata);\n} catch (error) {\n  console.error('메타데이터 변환 중 오류 발생:', error);\n}\n```\n\n### 스키마 사용\n\n라이브러리는 기본적으로 최신 버전(V2)의 스키마와 타입을 직접 export합니다.\n\n```typescript\n// 기본 스키마는 모두 최신 버전(V2)입니다\nimport { \n  metadataSchema,\n  artworkInformationSchema,\n  baseSchema,\n  ccScopeSchema,\n  copyrightSchema,\n  aiUsedSchema\n} from '@apot-platforms/iot-metadata';\n```\n\n이전 버전(V1)이나 특정 버전의 스키마가 필요한 경우, 네임스페이스를 통해 접근합니다:\n\n```typescript\n// V1 버전 스키마에 접근하기\nimport { V1 } from '@apot-platforms/iot-metadata';\n\n// V1 스키마 사용\nconst v1MetadataResult = V1.metadataSchema.safeParse(data);\n```\n\n### 버전 관리 유틸리티 함수\n\n```typescript\nimport { \n  getSchemaByVersion, \n  validateMetadata, \n  parseMetadata \n} from '@apot-platforms/iot-metadata';\n\n// 버전별 스키마 가져오기\nconst v1Schema = getSchemaByVersion(\"0.1\");\nconst v2Schema = getSchemaByVersion(\"0.2\");\n\n// 자동 버전 감지하여 검증\nconst result = validateMetadata(metadata);\n\n// 버전 변환 및 검증\nconst latestMetadata = parseMetadata(anyVersionMetadata);\n```\n\n## 타입 정의\n\n기본적으로 최신 버전(V3)의 타입을 직접 export합니다:\n\n```typescript\nimport type { \n  NFTMetadata, \n  ArtworkInformation, \n  CCScope, \n  Copyright, \n  AITool,\n  AIUsed,\n  FileInformation \n} from '@apot-platforms/iot-metadata';\n\n// NFTMetadata는 최신 버전(V3)의 타입입니다\nconst metadata: NFTMetadata = {\n  // ...\n};\n```\n\n### V3 타입 추론 문제 해결\n\nV3에서는 복잡한 zod 스키마로 인한 타입 추론 문제를 해결하기 위해 별도의 interface를 제공합니다:\n\n```typescript\n// ✅ 권장: interface 사용 (타입 추론 문제 없음)\nimport type { AIUsed, AITool } from '@apot-platforms/iot-metadata';\n\n// ❌ 피하기: zod 스키마 직접 사용 (빌드 시 타입 추론 오류 가능)\nimport { aiUsedSchema } from '@apot-platforms/iot-metadata';\ntype AIUsed = z.infer<typeof aiUsedSchema>; // 타입 추론 오류 발생 가능\n```\n\n이전 버전의 타입이 필요한 경우:\n\n```typescript\n// 버전별 타입에 접근하기\nimport type { \n  NFTMetadataV1,\n  NFTMetadataV2,\n  NFTMetadataV3\n} from '@apot-platforms/iot-metadata';\n\n// V1 타입 사용\nconst v1Metadata: NFTMetadataV1 = {\n  // ...\n};\n```\n\n## 중요: 내부 경로 직접 참조 금지\n\n아래와 같은 방식으로 직접 내부 폴더 구조를 참조하지 마세요:\n\n```typescript\n// ❌ 잘못된 사용법 - 내부 경로를 직접 참조\nimport { aiUsedSchema } from '@apot-platforms/iot-metadata/dist/validators/v1';\n```\n\n대신 네임스페이스 또는 직접 export된 항목을 사용하세요:\n\n```typescript\n// ✅ 올바른 사용법 - V1 네임스페이스 사용\nimport { V1 } from '@apot-platforms/iot-metadata';\nconst { aiUsedSchema } = V1;\n```\n\n## 라이선스\n\nISC ","readmeFilename":"README.md"}