{"_id":"@polotno/schema","_rev":"17-1a01d134513174ef9bc7e624901f27d5","name":"@polotno/schema","dist-tags":{"probe":"0.6.1","latest":"0.8.0"},"versions":{"0.1.0":{"name":"@polotno/schema","version":"0.1.0","keywords":["polotno","design","schema","json-schema","normalize","validate","zod","standard-schema"],"author":{"name":"Anton Lavrenov"},"license":"SEE LICENSE IN LICENSE.md","_id":"@polotno/schema@0.1.0","maintainers":[{"name":"lavrton","email":"lavrton@gmail.com"},{"name":"nikigan","email":"gankin.n24@gmail.com"}],"homepage":"https://polotno.com","bugs":{"url":"https://github.com/polotno-project/polotno/issues"},"dist":{"shasum":"c4f69d786dbd07db94bffce024f16b337d0c5bc2","tarball":"https://registry.npmjs.org/@polotno/schema/-/schema-0.1.0.tgz","fileCount":48,"integrity":"sha512-A+dlj/Dk8ZVBCYSnGO+2LHzzCUNul4q5+CLcn5ck16uJhu7jLSLJTso01xj2oa5xGeJpbnDy9KnNpNuEoFU6Gg==","signatures":[{"sig":"MEYCIQDRPRvKcpjee0IBcvGisgypqDCYta5XDEID6t1CdBwLjwIhAOdjUwUxo8z/pl6FtOxC/UC0yfiQWOSImZq3inRknS+j","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":280061},"main":"./lib/index.js","type":"module","_from":"file:polotno-schema-0.1.0.tgz","types":"./lib/index.d.ts","exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./json":{"import":"./lib/design.schema.json"},"./design.schema.json":"./lib/design.schema.json"},"scripts":{"test":"vitest run","build":"tsc && node scripts/generate-schema.mjs","typecheck":"tsc --noEmit","build:schema":"node scripts/generate-schema.mjs"},"_npmUser":{"name":"lavrton","email":"lavrton@gmail.com"},"_resolved":"/private/var/folders/c3/kp3_vs3x46z4qfz16x4cst600000gn/T/a2a22411dfb51c0a8268d9a183cef0ae/polotno-schema-0.1.0.tgz","_integrity":"sha512-A+dlj/Dk8ZVBCYSnGO+2LHzzCUNul4q5+CLcn5ck16uJhu7jLSLJTso01xj2oa5xGeJpbnDy9KnNpNuEoFU6Gg==","repository":{"url":"git+https://github.com/polotno-project/polotno.git","type":"git","directory":"packages/schema"},"_npmVersion":"11.9.0","description":"Canonical Polotno design format: types, normalize, validate, JSON Schema. Authored in zod, DOM-free.","directories":{},"_nodeVersion":"25.6.1","dependencies":{"zod":"^4.4.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.9","typescript":"~6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/schema_0.1.0_1781931955571_0.7700546562601536","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@polotno/schema","version":"0.1.1","keywords":["polotno","design","schema","json-schema","normalize","validate","zod","standard-schema"],"author":{"name":"Anton Lavrenov"},"license":"SEE LICENSE IN LICENSE.md","_id":"@polotno/schema@0.1.1","maintainers":[{"name":"lavrton","email":"lavrton@gmail.com"},{"name":"nikigan","email":"gankin.n24@gmail.com"}],"homepage":"https://polotno.com","bugs":{"url":"https://github.com/polotno-project/polotno/issues"},"dist":{"shasum":"5fed181d35088e9c1b97a5880fd4c115d698fc2e","tarball":"https://registry.npmjs.org/@polotno/schema/-/schema-0.1.1.tgz","fileCount":48,"integrity":"sha512-9FEC8lA8i4HvlsfxQp+vCqFeKwI9rlxZeVwvuGloj2W7UFxnUz7ud/mZ+fupCeMAtJRBtS3lEOKOS/aWr4whhA==","signatures":[{"sig":"MEYCIQCHoVFgc52xo+lfM14K9DSKu4xwNJVxVoiBSM8E71J7CwIhAJCWle6LTB/Fzj7TUvaILmSRXxkFFjThQoRvdEnWr2JG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":290237},"main":"./lib/index.js","type":"module","_from":"file:polotno-schema-0.1.1.tgz","types":"./lib/index.d.ts","exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./json":{"import":"./lib/design.schema.json"},"./design.schema.json":"./lib/design.schema.json"},"scripts":{"test":"vitest run","build":"tsc && node scripts/generate-schema.mjs","typecheck":"tsc --noEmit","build:schema":"node scripts/generate-schema.mjs"},"_npmUser":{"name":"lavrton","email":"lavrton@gmail.com"},"_resolved":"/private/var/folders/c3/kp3_vs3x46z4qfz16x4cst600000gn/T/f328089803ecf8f4e46852a55510ba65/polotno-schema-0.1.1.tgz","_integrity":"sha512-9FEC8lA8i4HvlsfxQp+vCqFeKwI9rlxZeVwvuGloj2W7UFxnUz7ud/mZ+fupCeMAtJRBtS3lEOKOS/aWr4whhA==","repository":{"url":"git+https://github.com/polotno-project/polotno.git","type":"git","directory":"packages/schema"},"_npmVersion":"11.9.0","description":"Canonical Polotno design format: types, normalize, validate, JSON Schema. Authored in zod, DOM-free.","directories":{},"_nodeVersion":"25.6.1","dependencies":{"zod":"^4.4.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.9","typescript":"~6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/schema_0.1.1_1781941163199_0.6953394782104656","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@polotno/schema","version":"0.1.2","keywords":["polotno","design","schema","json-schema","normalize","validate","zod","standard-schema"],"author":{"name":"Anton Lavrenov"},"license":"SEE LICENSE IN LICENSE.md","_id":"@polotno/schema@0.1.2","maintainers":[{"name":"lavrton","email":"lavrton@gmail.com"},{"name":"nikigan","email":"gankin.n24@gmail.com"}],"homepage":"https://polotno.com","bugs":{"url":"https://github.com/polotno-project/polotno/issues"},"dist":{"shasum":"991e4b1778ca201b526a8879fa83d54bd37077f0","tarball":"https://registry.npmjs.org/@polotno/schema/-/schema-0.1.2.tgz","fileCount":48,"integrity":"sha512-QTxE1GDIBZFDeKPDO/vvnRhgiOURUw5JcYzIIAn4UNzDlqBmCPxWQhGES+SOa81X0jyjX5ah+Ilous2X8F3TAg==","signatures":[{"sig":"MEUCIDEFBfEiq7JonSW23ehDA1f4P2O0n5G5wFr5XCOsOP+sAiEA5JBoqgG7s7G0BJ/+qN4gz3Of7xs8CraSHYhJYkPVU+k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":295079},"main":"./lib/index.js","type":"module","_from":"file:polotno-schema-0.1.2.tgz","types":"./lib/index.d.ts","exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./json":{"import":"./lib/design.schema.json"},"./design.schema.json":"./lib/design.schema.json"},"scripts":{"test":"vitest run","build":"tsc && node scripts/generate-schema.mjs","typecheck":"tsc --noEmit","build:schema":"node scripts/generate-schema.mjs"},"_npmUser":{"name":"lavrton","email":"lavrton@gmail.com"},"_resolved":"/private/var/folders/c3/kp3_vs3x46z4qfz16x4cst600000gn/T/2459b5bca002308ced2fc8a0381c33e5/polotno-schema-0.1.2.tgz","_integrity":"sha512-QTxE1GDIBZFDeKPDO/vvnRhgiOURUw5JcYzIIAn4UNzDlqBmCPxWQhGES+SOa81X0jyjX5ah+Ilous2X8F3TAg==","repository":{"url":"git+https://github.com/polotno-project/polotno.git","type":"git","directory":"packages/schema"},"_npmVersion":"11.9.0","description":"Canonical Polotno design format: types, normalize, validate, JSON Schema. Authored in zod, DOM-free.","directories":{},"_nodeVersion":"25.6.1","dependencies":{"zod":"^4.4.3","nanoid":"^5.1.11"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.9","typescript":"~6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/schema_0.1.2_1781958139842_0.04680298461744936","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@polotno/schema","version":"0.1.3","keywords":["polotno","design","schema","json-schema","normalize","validate","zod","standard-schema"],"author":{"name":"Anton Lavrenov"},"license":"SEE LICENSE IN LICENSE.md","_id":"@polotno/schema@0.1.3","maintainers":[{"name":"lavrton","email":"lavrton@gmail.com"},{"name":"nikigan","email":"gankin.n24@gmail.com"}],"homepage":"https://polotno.com","bugs":{"url":"https://github.com/polotno-project/polotno/issues"},"dist":{"shasum":"4f0d26296f0db9bde63730764659ac234ad70138","tarball":"https://registry.npmjs.org/@polotno/schema/-/schema-0.1.3.tgz","fileCount":48,"integrity":"sha512-F9u/99hxHP7JxfuKiUZEalAEvvnw/li9YbNQ8XU9m91l4NrqTDI/06dKNpVP1ZpUF/5c7BAJ8iK72CsHmbxHTw==","signatures":[{"sig":"MEUCIBx0CGX7y+l/45TTc9Yzd/0LYJ5lUExYz9XDXUq7brdZAiEAwt8Zxwv3hvSJovowGDsVordaepPTtrL5h0yk6uK9zgY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":296363},"main":"./lib/index.js","type":"module","_from":"file:polotno-schema-0.1.3.tgz","types":"./lib/index.d.ts","exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./json":{"import":"./lib/design.schema.json"},"./design.schema.json":"./lib/design.schema.json"},"scripts":{"test":"vitest run","build":"tsc && node scripts/generate-schema.mjs","typecheck":"tsc --noEmit","build:schema":"node scripts/generate-schema.mjs"},"_npmUser":{"name":"lavrton","email":"lavrton@gmail.com"},"_resolved":"/private/var/folders/c3/kp3_vs3x46z4qfz16x4cst600000gn/T/2cd6358bb6af51ef521aa459b1c65b9c/polotno-schema-0.1.3.tgz","_integrity":"sha512-F9u/99hxHP7JxfuKiUZEalAEvvnw/li9YbNQ8XU9m91l4NrqTDI/06dKNpVP1ZpUF/5c7BAJ8iK72CsHmbxHTw==","repository":{"url":"git+https://github.com/polotno-project/polotno.git","type":"git","directory":"packages/schema"},"_npmVersion":"11.9.0","description":"Canonical Polotno design format: types, normalize, validate, JSON Schema. Authored in zod, DOM-free.","directories":{},"_nodeVersion":"25.6.1","dependencies":{"zod":"^4.4.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.9","typescript":"~6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/schema_0.1.3_1781960653283_0.7671344538679874","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@polotno/schema","version":"0.1.4","keywords":["polotno","design","schema","json-schema","normalize","validate","zod","standard-schema"],"author":{"name":"Anton Lavrenov"},"license":"SEE LICENSE IN LICENSE.md","_id":"@polotno/schema@0.1.4","maintainers":[{"name":"lavrton","email":"lavrton@gmail.com"},{"name":"nikigan","email":"gankin.n24@gmail.com"}],"homepage":"https://polotno.com","bugs":{"url":"https://github.com/polotno-project/polotno/issues"},"dist":{"shasum":"48c5f864ecf4abb8db05cfb58b772239b65ef5fb","tarball":"https://registry.npmjs.org/@polotno/schema/-/schema-0.1.4.tgz","fileCount":48,"integrity":"sha512-GBoVU3j0SmiDcPzRbVMWWIbKCb1YYL39HS31BthEMBUGYJ3EXjgA2Z+i2xB8Mvj9510TCPBs3jfRyepkTwwN5Q==","signatures":[{"sig":"MEYCIQCRN7NnNRUBgDgob9ZtuSL7aYlLu3GuhiHXD2N8wOR0QQIhANqHAs5JhlMce/dTfblhW0L2wGZl17SJKxSxaD/thZUh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":296663},"main":"./lib/index.js","type":"module","_from":"file:polotno-schema-0.1.4.tgz","types":"./lib/index.d.ts","exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./json":{"import":"./lib/design.schema.json"},"./design.schema.json":"./lib/design.schema.json"},"scripts":{"test":"vitest run","build":"tsc && node scripts/generate-schema.mjs","typecheck":"tsc --noEmit","build:schema":"node scripts/generate-schema.mjs"},"_npmUser":{"name":"lavrton","email":"lavrton@gmail.com"},"_resolved":"/private/var/folders/c3/kp3_vs3x46z4qfz16x4cst600000gn/T/6936caa3c595eedd993828f0de3a88c2/polotno-schema-0.1.4.tgz","_integrity":"sha512-GBoVU3j0SmiDcPzRbVMWWIbKCb1YYL39HS31BthEMBUGYJ3EXjgA2Z+i2xB8Mvj9510TCPBs3jfRyepkTwwN5Q==","repository":{"url":"git+https://github.com/polotno-project/polotno.git","type":"git","directory":"packages/schema"},"_npmVersion":"11.9.0","description":"Canonical Polotno design format: types, normalize, validate, JSON Schema. Authored in zod, DOM-free.","directories":{},"_nodeVersion":"25.6.1","dependencies":{"zod":"^4.4.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.9","typescript":"~6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/schema_0.1.4_1781970832227_0.1366553212087216","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@polotno/schema","version":"0.1.5","keywords":["polotno","design","schema","json-schema","normalize","validate","zod","standard-schema"],"author":{"name":"Anton Lavrenov"},"license":"SEE LICENSE IN LICENSE.md","_id":"@polotno/schema@0.1.5","maintainers":[{"name":"lavrton","email":"lavrton@gmail.com"},{"name":"nikigan","email":"gankin.n24@gmail.com"}],"homepage":"https://polotno.com","bugs":{"url":"https://github.com/polotno-project/polotno/issues"},"dist":{"shasum":"b86d04894dd241656f2618fa019462cefd7c3568","tarball":"https://registry.npmjs.org/@polotno/schema/-/schema-0.1.5.tgz","fileCount":52,"integrity":"sha512-oC3+TSC+CwCLrfEZRNoaS7jZLezuaFOY8fGcRbpwBiP1nWfDSI8Ow6Qxxq7hpDroTuqKnQhlpXe4X34IFV3DmQ==","signatures":[{"sig":"MEMCH2yjah8xhrY92FvZuZ2hgNhfMmSaKf/+ngs1UJGW+KgCICk7JskXszzVWTXBeSbESa6PgxiiZDW/0YbDAuE0/dlK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":302263},"main":"./lib/index.js","type":"module","_from":"file:polotno-schema-0.1.5.tgz","types":"./lib/index.d.ts","exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./json":{"import":"./lib/design.schema.json"},"./design.schema.json":"./lib/design.schema.json"},"scripts":{"test":"vitest run","build":"tsc && node scripts/generate-schema.mjs","typecheck":"tsc --noEmit","build:schema":"node scripts/generate-schema.mjs"},"_npmUser":{"name":"lavrton","email":"lavrton@gmail.com"},"_resolved":"/private/var/folders/c3/kp3_vs3x46z4qfz16x4cst600000gn/T/b64ebe3f1513dc084c63a31574395576/polotno-schema-0.1.5.tgz","_integrity":"sha512-oC3+TSC+CwCLrfEZRNoaS7jZLezuaFOY8fGcRbpwBiP1nWfDSI8Ow6Qxxq7hpDroTuqKnQhlpXe4X34IFV3DmQ==","repository":{"url":"git+https://github.com/polotno-project/polotno.git","type":"git","directory":"packages/schema"},"_npmVersion":"11.9.0","description":"Canonical Polotno design format: types, normalize, validate, JSON Schema. Authored in zod, DOM-free.","directories":{},"_nodeVersion":"25.6.1","dependencies":{"zod":"^4.4.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.9","typescript":"~6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/schema_0.1.5_1783011734459_0.026880979077222422","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@polotno/schema","version":"0.1.6","keywords":["polotno","design","schema","json-schema","normalize","validate","zod","standard-schema"],"author":{"name":"Anton Lavrenov"},"license":"SEE LICENSE IN LICENSE.md","_id":"@polotno/schema@0.1.6","maintainers":[{"name":"lavrton","email":"lavrton@gmail.com"},{"name":"nikigan","email":"gankin.n24@gmail.com"}],"homepage":"https://polotno.com","bugs":{"url":"https://github.com/polotno-project/polotno/issues"},"dist":{"shasum":"d7a45e5619a3b960490f81cdea57ecc32f70f49b","tarball":"https://registry.npmjs.org/@polotno/schema/-/schema-0.1.6.tgz","fileCount":52,"integrity":"sha512-Jj+Z7ZlpypPgAt5vgsKlD+f7yuZEa53Cd7/Y6CN3RH3KFmY6bg+GVxXAZQKksKLYNO8qvWS6Oui+AISI2svEfg==","signatures":[{"sig":"MEQCIF2WMnl8xNbi3jnor1zC2wLh9QU+dwBUPS4FS1mgyNnEAiBD2NzupsYSZtH1StOE7sBzYULgWInEZa9tLL4m+I+RKg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":303045},"main":"./lib/index.js","type":"module","_from":"file:polotno-schema-0.1.6.tgz","types":"./lib/index.d.ts","exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./json":{"import":"./lib/design.schema.json"},"./design.schema.json":"./lib/design.schema.json"},"scripts":{"test":"vitest run","build":"tsc && node scripts/generate-schema.mjs","typecheck":"tsc --noEmit","build:schema":"node scripts/generate-schema.mjs"},"_npmUser":{"name":"lavrton","email":"lavrton@gmail.com"},"_resolved":"/private/var/folders/c3/kp3_vs3x46z4qfz16x4cst600000gn/T/feaebf5ff08ac1231aad8903fc832cc9/polotno-schema-0.1.6.tgz","_integrity":"sha512-Jj+Z7ZlpypPgAt5vgsKlD+f7yuZEa53Cd7/Y6CN3RH3KFmY6bg+GVxXAZQKksKLYNO8qvWS6Oui+AISI2svEfg==","repository":{"url":"git+https://github.com/polotno-project/polotno.git","type":"git","directory":"packages/schema"},"_npmVersion":"11.9.0","description":"Canonical Polotno design format: types, normalize, validate, JSON Schema. Authored in zod, DOM-free.","directories":{},"_nodeVersion":"25.6.1","dependencies":{"zod":"^4.4.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.9","typescript":"~6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/schema_0.1.6_1783038350658_0.03856451287870133","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@polotno/schema","version":"0.2.0","keywords":["polotno","design","schema","json-schema","normalize","validate","zod","standard-schema"],"author":{"name":"Anton Lavrenov"},"license":"SEE LICENSE IN LICENSE.md","_id":"@polotno/schema@0.2.0","maintainers":[{"name":"lavrton","email":"lavrton@gmail.com"},{"name":"nikigan","email":"gankin.n24@gmail.com"}],"homepage":"https://polotno.com","bugs":{"url":"https://github.com/polotno-project/polotno/issues"},"dist":{"shasum":"6cee4560607342c300d4b81867de3183d5690f51","tarball":"https://registry.npmjs.org/@polotno/schema/-/schema-0.2.0.tgz","fileCount":56,"integrity":"sha512-iYPSB+CRdyUSRuF4y13ks0whgsaxD7FpPAOQrsbXMh1u5zEEhQgwPb+ZvGacBG6SXx8ZBcGcWJHPUwdNJs6guA==","signatures":[{"sig":"MEUCIDnEVvO2A9E+xO61BuYQyh+uFr6JgGixMm3z6rz/q6UXAiEA6KwsMdb/vop3SvuJWDUOFEn4JJsIp4NZscsIQKxb+1k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":306725},"main":"./lib/index.js","type":"module","_from":"file:polotno-schema-0.2.0.tgz","types":"./lib/index.d.ts","exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./json":{"import":"./lib/design.schema.json"},"./design.schema.json":"./lib/design.schema.json"},"scripts":{"test":"vitest run","build":"tsc && node scripts/generate-schema.mjs","typecheck":"tsc --noEmit","build:schema":"node scripts/generate-schema.mjs"},"_npmUser":{"name":"lavrton","email":"lavrton@gmail.com"},"_resolved":"/private/var/folders/c3/kp3_vs3x46z4qfz16x4cst600000gn/T/365bf7e4e69ab720c8ada80350dc7baa/polotno-schema-0.2.0.tgz","_integrity":"sha512-iYPSB+CRdyUSRuF4y13ks0whgsaxD7FpPAOQrsbXMh1u5zEEhQgwPb+ZvGacBG6SXx8ZBcGcWJHPUwdNJs6guA==","repository":{"url":"git+https://github.com/polotno-project/polotno.git","type":"git","directory":"packages/schema"},"_npmVersion":"11.9.0","description":"Canonical Polotno design format: types, normalize, validate, JSON Schema. Authored in zod, DOM-free.","directories":{},"_nodeVersion":"25.6.1","dependencies":{"zod":"^4.4.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.9","typescript":"~6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/schema_0.2.0_1783453542818_0.8183177572311133","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@polotno/schema","version":"0.3.0","keywords":["polotno","design","schema","json-schema","normalize","validate","zod","standard-schema"],"author":{"name":"Anton Lavrenov"},"license":"SEE LICENSE IN LICENSE.md","_id":"@polotno/schema@0.3.0","maintainers":[{"name":"lavrton","email":"lavrton@gmail.com"},{"name":"nikigan","email":"gankin.n24@gmail.com"}],"homepage":"https://polotno.com","dist":{"shasum":"38626e3664fe8ebf305b2f1d1676d8403cc2d6e0","tarball":"https://registry.npmjs.org/@polotno/schema/-/schema-0.3.0.tgz","fileCount":20,"integrity":"sha512-s2YnNUuSnD3Nyn97hmtG0TSq2tfGWpmDzPiFZXf4wy0/RkZoFq9W90TzwHb9tb8kYlIvlbCLy+2d+dtsnO/cUQ==","signatures":[{"sig":"MEUCIB/lnupcmuGLn30xFGujE0BLVp2Qv/T8Ib+UHfR4HDvDAiEAzIWLo5tXdsbyhaPN6tS6lBuQsztT0I8dBHuD0E9lkwI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":193445},"main":"./lib/index.js","type":"module","_from":"file:polotno-schema-0.3.0.tgz","types":"./lib/index.d.ts","exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./json":{"import":"./lib/design.schema.json"},"./defaults":{"types":"./lib/defaults.d.ts","import":"./lib/defaults.js"},"./design.schema.json":"./lib/design.schema.json"},"scripts":{"test":"vitest run","build":"rm -rf lib && tsc && node scripts/generate-schema.mjs && node ../../scripts/check-pack.mjs","typecheck":"tsc --noEmit","build:schema":"node scripts/generate-schema.mjs"},"_npmUser":{"name":"lavrton","email":"lavrton@gmail.com"},"_resolved":"/private/var/folders/c3/kp3_vs3x46z4qfz16x4cst600000gn/T/c82da600ca7cd76c7cd975021884f1af/polotno-schema-0.3.0.tgz","_integrity":"sha512-s2YnNUuSnD3Nyn97hmtG0TSq2tfGWpmDzPiFZXf4wy0/RkZoFq9W90TzwHb9tb8kYlIvlbCLy+2d+dtsnO/cUQ==","_npmVersion":"11.9.0","description":"Canonical Polotno design format: types, normalize, validate, JSON Schema. Authored in zod, DOM-free.","directories":{},"sideEffects":false,"_nodeVersion":"25.6.1","dependencies":{"zod":"^4.4.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","typescript":"~6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/schema_0.3.0_1784049170924_0.35808092278623693","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@polotno/schema","version":"0.4.0","keywords":["polotno","design","schema","json-schema","normalize","validate","zod","standard-schema"],"author":{"name":"Anton Lavrenov"},"license":"SEE LICENSE IN LICENSE.md","_id":"@polotno/schema@0.4.0","maintainers":[{"name":"lavrton","email":"lavrton@gmail.com"},{"name":"nikigan","email":"gankin.n24@gmail.com"}],"homepage":"https://polotno.com","dist":{"shasum":"eb8a3f7090ef6c8f4918062820ebfd2df9c89a30","tarball":"https://registry.npmjs.org/@polotno/schema/-/schema-0.4.0.tgz","fileCount":22,"integrity":"sha512-m9hmf8pOznA0GP9bf27qMelYAELV8L684s23ULdz0Yus2BCYkTx+Peu21/hVTbvLsqNs2w49Eh9LjbZz2UnOqg==","signatures":[{"sig":"MEYCIQCZrtheZr96hggJ3+G6cnzpjcUvyQ38ra0pMo7PCNGhbAIhALT2OlY6YoCc1j0+AJ0ATqksBRPdKHW3+Gr7ktnr+nUr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":208940},"main":"./lib/index.js","type":"module","_from":"file:polotno-schema-0.4.0.tgz","types":"./lib/index.d.ts","exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./json":{"import":"./lib/design.schema.json"},"./defaults":{"types":"./lib/defaults.d.ts","import":"./lib/defaults.js"},"./design.schema.json":"./lib/design.schema.json"},"scripts":{"test":"vitest run","build":"rm -rf lib && tsc && node scripts/generate-schema.mjs && node ../../scripts/check-pack.mjs","typecheck":"tsc --noEmit","build:schema":"node scripts/generate-schema.mjs"},"_npmUser":{"name":"lavrton","email":"lavrton@gmail.com"},"_resolved":"/private/var/folders/c3/kp3_vs3x46z4qfz16x4cst600000gn/T/9651203543f5d893775dd616e1c7216f/polotno-schema-0.4.0.tgz","_integrity":"sha512-m9hmf8pOznA0GP9bf27qMelYAELV8L684s23ULdz0Yus2BCYkTx+Peu21/hVTbvLsqNs2w49Eh9LjbZz2UnOqg==","_npmVersion":"11.9.0","description":"Canonical Polotno design format: types, normalize, validate, JSON Schema. Authored in zod, DOM-free.","directories":{},"sideEffects":false,"_nodeVersion":"25.6.1","dependencies":{"zod":"^4.4.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","typescript":"~6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/schema_0.4.0_1785789992931_0.6090456910121065","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@polotno/schema","version":"0.5.0","keywords":["polotno","design","schema","json-schema","normalize","validate","zod","standard-schema"],"author":"Anton Lavrenov","license":"SEE LICENSE IN LICENSE.md","_id":"@polotno/schema@0.5.0","maintainers":[{"name":"lavrton","email":"lavrton@gmail.com"},{"name":"nikigan","email":"gankin.n24@gmail.com"}],"homepage":"https://polotno.com","dist":{"shasum":"7da8c8c42e12a27314f5c0648c9d7c4d999d8329","tarball":"https://registry.npmjs.org/@polotno/schema/-/schema-0.5.0.tgz","fileCount":22,"integrity":"sha512-ItVbsrP9XCGTrY8TaBY5JhkEP7utwvPiqYCefUjir2ls6eviLQUQ2j0uLIwAwfqhGA58cjagebU0zDIxYGsFXQ==","signatures":[{"sig":"MEUCIQCPafle6XU3M3+ta11rY9J6mfrIdfaon29HuzY74K9YwAIgDc7dbiZKf22tI9ifAWHwHv90WsXbQW3Ri19knm2pHPg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":212805},"main":"./lib/index.js","type":"module","types":"./lib/index.d.ts","exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./json":{"import":"./lib/design.schema.json"},"./defaults":{"types":"./lib/defaults.d.ts","import":"./lib/defaults.js"},"./design.schema.json":"./lib/design.schema.json"},"scripts":{"test":"vitest run","build":"rm -rf lib && tsc && node scripts/generate-schema.mjs && node ../../scripts/check-pack.mjs","typecheck":"tsc --noEmit","build:schema":"node scripts/generate-schema.mjs"},"_npmUser":{"name":"lavrton","email":"lavrton@gmail.com"},"description":"Canonical Polotno design format: types, normalize, validate, JSON Schema. Authored in zod, DOM-free.","directories":{},"sideEffects":false,"_nodeVersion":"25.6.1","dependencies":{"zod":"^4.4.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","typescript":"~6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/schema_0.5.0_1786118416439_0.06002350750342367","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@polotno/schema","version":"0.6.0","keywords":["polotno","design","schema","json-schema","normalize","validate","zod","standard-schema"],"author":"Anton Lavrenov","license":"SEE LICENSE IN LICENSE.md","_id":"@polotno/schema@0.6.0","maintainers":[{"name":"lavrton","email":"lavrton@gmail.com"},{"name":"nikigan","email":"gankin.n24@gmail.com"}],"homepage":"https://polotno.com","dist":{"shasum":"a2ebb81b466d7a6dd69241fa48de3567832bbd25","tarball":"https://registry.npmjs.org/@polotno/schema/-/schema-0.6.0.tgz","fileCount":22,"integrity":"sha512-M1my66LHTTdy7Dm0/ObqM0wa8WWQgAMUqpP8f+c9fcRPI/3qC1RCGOBhTRm0gS7M5XREK4Ge76okOB+siUbv9g==","signatures":[{"sig":"MEQCIB9k/ZMNlQGJYuXDIjPNsg9AYxHqiwRQgCxL5QhIl41TAiBkQ0p+j67eBh44yqrzL2dbVUTIAY8APT47vzcgoFgxtw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":216979},"main":"./lib/index.js","type":"module","types":"./lib/index.d.ts","exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./json":{"import":"./lib/design.schema.json"},"./defaults":{"types":"./lib/defaults.d.ts","import":"./lib/defaults.js"},"./design.schema.json":"./lib/design.schema.json"},"scripts":{"test":"vitest run","build":"rm -rf lib && tsc && node scripts/generate-schema.mjs && node ../../scripts/check-pack.mjs","typecheck":"tsc --noEmit","build:schema":"node scripts/generate-schema.mjs"},"_npmUser":{"name":"lavrton","email":"lavrton@gmail.com"},"description":"Canonical Polotno design format: types, normalize, validate, JSON Schema. Authored in zod, DOM-free.","directories":{},"sideEffects":false,"_nodeVersion":"25.6.1","dependencies":{"zod":"^4.4.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","typescript":"~6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/schema_0.6.0_1786651706162_0.6050808046611651","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@polotno/schema","version":"0.6.1","keywords":["polotno","design","schema","json-schema","normalize","validate","zod","standard-schema"],"author":"Anton Lavrenov","license":"SEE LICENSE IN LICENSE.md","_id":"@polotno/schema@0.6.1","maintainers":[{"name":"lavrton","email":"lavrton@gmail.com"},{"name":"nikigan","email":"gankin.n24@gmail.com"}],"homepage":"https://polotno.com","dist":{"shasum":"c186b0d77af73278d7b35e883c63dae70ea65182","tarball":"https://registry.npmjs.org/@polotno/schema/-/schema-0.6.1.tgz","fileCount":22,"integrity":"sha512-Gwry6IEegkwfINDwVEHigD72/VsyWIV8gQK/6OtYRv9VevgqYEQFMLV03/Q2oHiU7opE31Q+O7pGWfskLHrmvA==","signatures":[{"sig":"MEYCIQCQpZy4PoOO233jzxGb1i7QmcyA8Wj/c8dOz2zg2cXfJAIhAJW3zCAXzIqMEAtFpyWltDWJOUzR402pyeLDUvS99+Ik","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":218355},"main":"./lib/index.js","type":"module","types":"./lib/index.d.ts","exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./json":{"import":"./lib/design.schema.json"},"./defaults":{"types":"./lib/defaults.d.ts","import":"./lib/defaults.js"},"./design.schema.json":"./lib/design.schema.json"},"scripts":{"test":"vitest run","build":"rm -rf lib && tsc && node scripts/generate-schema.mjs && node ../../scripts/check-pack.mjs","typecheck":"tsc --noEmit","build:schema":"node scripts/generate-schema.mjs"},"_npmUser":{"name":"lavrton","email":"lavrton@gmail.com"},"description":"Canonical Polotno design format: types, normalize, validate, JSON Schema. Authored in zod, DOM-free.","directories":{},"sideEffects":false,"_nodeVersion":"25.6.1","dependencies":{"zod":"^4.4.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","typescript":"~6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/schema_0.6.1_1787696148548_0.9284751193341463","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"@polotno/schema","version":"0.6.2","keywords":["polotno","design","schema","json-schema","normalize","validate","zod","standard-schema"],"author":"Anton Lavrenov","license":"SEE LICENSE IN LICENSE.md","_id":"@polotno/schema@0.6.2","maintainers":[{"name":"lavrton","email":"lavrton@gmail.com"},{"name":"nikigan","email":"gankin.n24@gmail.com"}],"homepage":"https://polotno.com","dist":{"shasum":"f3844b51fcdd3526e286079c2989235e51dd73b7","tarball":"https://registry.npmjs.org/@polotno/schema/-/schema-0.6.2.tgz","fileCount":22,"integrity":"sha512-sK2XLja36twIE+qJs3PciZobFtfD5tgK3r8hbTW/D6uOXDA3ozY9g3ghg2uiVxxeGI4Icj7iurG06ESQ1+EbPw==","signatures":[{"sig":"MEQCIErhf7+dwdmiLvtGBjLenOKxgERmW4u8q1ji3qyqpoCeAiA4RjeanH6T6jARYTIxTWxAjiDwCd45wdDqofQ4Ky3kmA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCnBAyO7K80+rtjG6aeqQnTaxJFEM0Chuy+VSAhpU/XZQIhAN6AthhO6d9tYrvVg3P0fH4UipAeVxFMh8vTP34xzJx9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":218051},"main":"./lib/index.js","type":"module","types":"./lib/index.d.ts","exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./json":{"import":"./lib/design.schema.json"},"./defaults":{"types":"./lib/defaults.d.ts","import":"./lib/defaults.js"},"./design.schema.json":"./lib/design.schema.json"},"scripts":{"test":"vitest run","build":"rm -rf lib && tsc && node scripts/generate-schema.mjs && node ../../scripts/check-pack.mjs","typecheck":"tsc --noEmit","build:schema":"node scripts/generate-schema.mjs"},"_npmUser":{"name":"lavrton","email":"lavrton@gmail.com"},"description":"Canonical Polotno design format: types, normalize, validate, JSON Schema. Authored in zod, DOM-free.","directories":{},"sideEffects":false,"dependencies":{"zod":"^4.6.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^5.0.1","typescript":"~6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/schema_0.6.2_1789653503326_0.33546731292779164","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@polotno/schema","version":"0.7.0","keywords":["polotno","design","schema","json-schema","normalize","validate","zod","standard-schema"],"author":"Anton Lavrenov","license":"SEE LICENSE IN LICENSE.md","_id":"@polotno/schema@0.7.0","maintainers":[{"name":"lavrton","email":"lavrton@gmail.com"},{"name":"nikigan","email":"gankin.n24@gmail.com"}],"homepage":"https://polotno.com","dist":{"shasum":"effa78706a839b164b24e6a69fc33da28503b78a","tarball":"https://registry.npmjs.org/@polotno/schema/-/schema-0.7.0.tgz","fileCount":24,"integrity":"sha512-gS7DziqdBQgKsnVXINrU9w0lE0eLaBTtbNobuUB/nyoxR0P5+JDbd3+a8bNK28WgJnN/dGdkFdhbx7sJQPjPKw==","signatures":[{"sig":"MEUCIQDYFz7140MxnNiIRf/JrBMYcSGola/YsqU4Bta/yJqS0gIgGlTWMttKSUX4PBTfgcxbhCPKx4Rk3Zz0q2VZuHsAWGc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDptEAyX4nkG2pCGSSPe9E4dqWnyiuzeJnUk/bPF9/kYwIhANCMSkf3Ugu8wOBQSpxrGQv1WznQVTKVx64bxCZ4sFI8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":235329},"main":"./lib/index.js","type":"module","types":"./lib/index.d.ts","exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./json":{"import":"./lib/design.schema.json"},"./defaults":{"types":"./lib/defaults.d.ts","import":"./lib/defaults.js"},"./asset-urls":{"types":"./lib/asset-urls.d.ts","import":"./lib/asset-urls.js"},"./design.schema.json":"./lib/design.schema.json"},"scripts":{"test":"vitest run","build":"rm -rf lib && tsc && node scripts/generate-schema.mjs && node ../../scripts/check-pack.mjs","typecheck":"tsc --noEmit","build:schema":"node scripts/generate-schema.mjs"},"_npmUser":{"name":"lavrton","email":"lavrton@gmail.com"},"description":"Canonical Polotno design format: types, normalize, validate, JSON Schema. Authored in zod, DOM-free.","directories":{},"sideEffects":false,"dependencies":{"zod":"^4.6.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^5.0.1","typescript":"~6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/schema_0.7.0_1790348879636_0.27566266840124576","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"_id":"@polotno/schema@0.8.0","dist":{"shasum":"44b950e6abb15d190e860e4849cbaebb025d9d22","tarball":"https://registry.npmjs.org/@polotno/schema/-/schema-0.8.0.tgz","fileCount":24,"integrity":"sha512-mHCNs/8h32vVruOw73Z7+S+ZJWnrPjGNF8IrwfmEHWUGHM2raI+gVKLI8H0mCZ2QbqlkMbZc0zrViIlJa6EO+Q==","signatures":[{"sig":"MEYCIQD2bJ4M7bHtMxdshDebuX6Eo0fHlAEy28eDXRt2IpowJQIhANb7XLdISsoc4PcqAJXGAKUhCOeFOeAoKLhjEwskhaT+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDCRAWdb7novd+80kyqZ6QjOJuD0MpaoixBd2CSOqx1DAiEAnE9y6wwDBV0JhGU+u/2ADIRwY1GL0IV7vP2fbQXAZCw="}],"unpackedSize":236016},"main":"./lib/index.js","name":"@polotno/schema","type":"module","types":"./lib/index.d.ts","author":"Anton Lavrenov","exports":{".":{"types":"./lib/index.d.ts","import":"./lib/index.js"},"./json":{"import":"./lib/design.schema.json"},"./defaults":{"types":"./lib/defaults.d.ts","import":"./lib/defaults.js"},"./asset-urls":{"types":"./lib/asset-urls.d.ts","import":"./lib/asset-urls.js"},"./design.schema.json":"./lib/design.schema.json"},"license":"SEE LICENSE IN LICENSE.md","scripts":{"test":"vitest run","build":"rm -rf lib && tsc && node scripts/generate-schema.mjs && node ../../scripts/check-pack.mjs","typecheck":"tsc --noEmit","build:schema":"node scripts/generate-schema.mjs"},"version":"0.8.0","_npmUser":{"name":"lavrton","email":"lavrton@gmail.com"},"homepage":"https://polotno.com","keywords":["polotno","design","schema","json-schema","normalize","validate","zod","standard-schema"],"description":"Canonical Polotno design format: types, normalize, validate, JSON Schema. Authored in zod, DOM-free.","directories":{},"maintainers":[{"name":"lavrton","email":"lavrton@gmail.com"},{"name":"nikigan","email":"gankin.n24@gmail.com"}],"sideEffects":false,"dependencies":{"zod":"^4.6.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^5.0.2","typescript":"~6.0.3"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/schema_0.8.0_1790784142792_0.37001761468919003"}}},"time":{"created":"2026-06-20T05:05:55.334Z","modified":"2026-09-30T16:02:23.055Z","0.1.0":"2026-06-20T05:05:55.730Z","0.1.1":"2026-06-20T07:39:23.346Z","0.1.2":"2026-06-20T12:22:19.992Z","0.1.3":"2026-06-20T13:04:13.423Z","0.1.4":"2026-06-20T15:53:52.380Z","0.1.5":"2026-07-02T17:02:14.640Z","0.1.6":"2026-07-03T00:25:50.821Z","0.2.0":"2026-07-07T19:45:42.957Z","0.3.0":"2026-07-14T17:12:51.079Z","0.4.0":"2026-08-03T20:46:33.056Z","0.5.0":"2026-08-07T16:00:16.609Z","0.6.0":"2026-08-13T20:08:26.306Z","0.6.1":"2026-08-25T22:15:48.712Z","0.6.2":"2026-09-17T13:58:23.460Z","0.7.0":"2026-09-25T15:07:59.781Z","0.8.0":"2026-09-30T16:02:22.880Z"},"author":"Anton Lavrenov","license":"SEE LICENSE IN LICENSE.md","homepage":"https://polotno.com","keywords":["polotno","design","schema","json-schema","normalize","validate","zod","standard-schema"],"description":"Canonical Polotno design format: types, normalize, validate, JSON Schema. Authored in zod, DOM-free.","maintainers":[{"name":"lavrton","email":"lavrton@gmail.com"},{"name":"nikigan","email":"gankin.n24@gmail.com"}],"readme":"# @polotno/schema\n\nTypeScript types, default values, validation, and a JSON Schema for the **Polotno\ndesign JSON** format — the document shape used across\n[Polotno](https://polotno.com) and its import/export packages.\n\nUse it to **validate** and **normalize** design JSON anywhere, without running the\neditor.\n\n```bash\nnpm install @polotno/schema\n```\n\n## What it's for\n\n- **Validate** a design — before saving it, or when accepting it over the wire.\n- **Fill in defaults** so partial JSON becomes a complete, canonical document.\n- **Check converter output.** The import packages emit design JSON with defaults\n  omitted; this validates and completes it. See\n  [`@polotno/pdf-import`](https://www.npmjs.com/package/@polotno/pdf-import),\n  [`@polotno/svg-import`](https://www.npmjs.com/package/@polotno/svg-import),\n  [`@polotno/psd-import`](https://www.npmjs.com/package/@polotno/psd-import).\n\n## Validate\n\n```ts\nimport { validateDesign, assertValidDesign } from '@polotno/schema';\n\nvalidateDesign(json, { mode: 'partial' }); // lenient — defaults may be missing\nvalidateDesign(json, { mode: 'canonical' }); // strict — rejects unknown keys\n// → { valid: boolean, errors: { path: string, message: string }[] }\n\nassertValidDesign(json); // throws on invalid\n```\n\nThe exported `designSchemaLenient` / `designSchemaCanonical` implement the\n[Standard Schema](https://standardschema.dev) interface, so they interoperate with\nzod, Effect Schema, Valibot, and other Standard-Schema tools.\n\n## Normalize (fill defaults)\n\n```ts\nimport { normalizeDesign } from '@polotno/schema';\n\nconst complete = normalizeDesign(partial);\n// every default filled in, unknown keys stripped\n```\n\nIdempotent and exact for current-format input. It migrates older\n`schemaVersion` documents up first (see below), and it leaves render-derived\nvalues (e.g. text auto-height) for the editor to compute.\n\n## Schema versions\n\nEvery design carries a `schemaVersion`. `normalizeDesign` / `parseDesign` migrate\nan older document up to the current version before validating, so a consumer\nnever has to handle an old shape. A **missing** `schemaVersion` means 0 — the\noldest format, not the newest.\n\n| Version | What changed                                                                                                            |\n| ------- | ----------------------------------------------------------------------------------------------------------------------- |\n| 1       | `letterSpacing` is a ratio of the element's own `fontSize`, no longer of a 16px root.                                   |\n| 2       | Filter `intensity` moved from `-100..100` to `-1..1`.                                                                   |\n| 3       | Text backgrounds render as per-line polygons; pre-v3 rich text is stamped `legacyBackground` to keep the old full rect. |\n| 4       | Video time anchoring changed. Marker only — no document transform.                                                      |\n\nSteps 1 and 3 apply only to the modern text renderers, which every converter\nuses.\n\n## JSON Schema\n\nA language-neutral JSON Schema (draft 2020-12) ships at\n`@polotno/schema/design.schema.json` — validate from any language or tooling.\n\n```ts\nimport schema from '@polotno/schema/design.schema.json' with { type: 'json' };\n```\n\n## Types\n\n```ts\nimport type { Design, Page, Element, TextElement } from '@polotno/schema';\n```\n\n## Related\n\n- [Polotno](https://polotno.com) — the design editor SDK these documents come from.\n- Import/export packages that produce or consume this JSON:\n  [pdf-import](https://www.npmjs.com/package/@polotno/pdf-import),\n  [svg-import](https://www.npmjs.com/package/@polotno/svg-import),\n  [psd-import](https://www.npmjs.com/package/@polotno/psd-import),\n  [pdf-export](https://www.npmjs.com/package/@polotno/pdf-export).\n\n## License\n\nSee [LICENSE.md](./LICENSE.md).\n","readmeFilename":""}