{"_id":"@128technology/ply-json","_rev":"5-2c098f6cd0e5fdb2a68a52b8e48179c5","name":"@128technology/ply-json","dist-tags":{"latest":"2.1.0-alpha.0"},"versions":{"2.0.0-alpha.0":{"name":"@128technology/ply-json","version":"2.0.0-alpha.0","description":"Manage model files that describe the GUI presentation of a Yinz data model.","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"mocha --require ts-node/register 'src/**/__tests__/*.ts'","lint":"tslint --project . src/**/*.ts src/**/*-test.ts","validate":"npm run lint && npm run test","clean":"rm -rf dist","init":"mkdir dist","prebuild":"npm run clean && npm run init","build":"tsc -d","example":"npm run build && node examples/index.js","prepublishOnly":"npm run build","format":"prettier --write \"src/**/*.ts\""},"repository":{"type":"git","url":"git+ssh://git@github.com/128technology/ply.git"},"author":{"name":"128 Technology"},"license":"MIT","dependencies":{"@128technology/yinz-json":"^6.0.0-alpha.0","@types/lodash":"^4.14.121","lodash":"^4.17.15"},"devDependencies":{"@types/chai":"^4.0.1","@types/mocha":"^2.2.41","@types/node":"^12.7.8","chai":"^3.5.0","mocha":"^6.2.0","prettier":"^2.0.5","ts-node":"^8.4.1","tslint":"^5.20.0","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.3.0","typescript":"^3.8.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"gitHead":"2d7a6572c81b695439cd3d4ba9dca4aa6f82bdee","bugs":{"url":"https://github.com/128technology/ply/issues"},"homepage":"https://github.com/128technology/ply#readme","_id":"@128technology/ply-json@2.0.0-alpha.0","_nodeVersion":"14.16.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-HZmByojthiXCFVL4mD2YYwHOP6fagL2F3dBWoc6kzuW4UH3fAg/I3kA0C7+DI4Airbk3yyWaZTgy4uw5xB5zBw==","shasum":"e1a28fb3d791e2a9269c21e0d9dbf02b7e6f9d8f","tarball":"https://registry.npmjs.org/@128technology/ply-json/-/ply-json-2.0.0-alpha.0.tgz","fileCount":153,"unpackedSize":173205,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgoqxZCRA9TVsSAnZWagAAHjwP/i88GYJfojo0ZHaSfOZ4\nw4H7Ks/IJmUV5cYh8EI8PZ/snE+LURKWSGdAnKUIVMJMPgG27KKlA4gsCqTU\njr0ZCW1LJSvXmUZb7SgRoMVPykGAJYnU0+hu7T4o6Oa2TdiWqk9fMxMlix83\nGyJB/JuoF0nbWe5ky5HcPcDcC/+4wz4dzKdsgTQW2jWUi+slsReGwDps3Mb3\nqnbK2n82/HbsGQjtCEhS0nf9tPFnXo2JPcOBbYTp0D/LjaqZHA73jhtulA++\nuxsJJPMkhdGGRBFCTgjIeOpyGzxQBE5gTHByaGuLBMCUzZV+1uUaz5qlEunv\nLGKdWm0D4ONKqQPMYJ9+C0W7gDaga8xJwU2Mz0RDjXocThGo2aIVbTrFKkvi\nPEr5K4NhWwTD3xOIHfawYRCFr+3MQ28/ayGjYg3KbCdyzf/Obx4ISewmPYel\nu5bc2ockFpzE7FZ2LZXyIzA3HDxuO4cQRqMmC9bc6ERQKqkiC3V0Or5KpTSW\ntAn2/GZ979CQJqCJ07NeGc2YLVTJiaCWfvBRL6O7sqB6J2mX9IP4aLP+JpXg\nwoHYCX6iScnNy9zYqDW1OP5wgLF5bPJ4SOXQEHm/NHCJO4R7jSlIrloxvHuK\n+EO6KyV2WOZZX+F+G7mHIeldqN1+LquUw7z9qzB2pdKUJOW9yA8ruDW4XcoG\nK5r3\r\n=oX5K\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDh8gwo9glPIm7pcUE4Mhl8rY3oFcQgHT/+3NpFoFF5NgIgBlrDAqWIhwIQqCn3nAcirYu6oK+vr+Ccqfv69YH4Sy0="}]},"_npmUser":{"name":"128techadmin","email":"opensource@128technology.com"},"directories":{},"maintainers":[{"name":"thedillonb","email":"thedillonb@gmail.com"},{"name":"cmain","email":"cmain@128technology.com"},{"name":"128dbuchanan","email":"dbuchanan@128technology.com"},{"name":"128techadmin","email":"opensource@128technology.com"},{"name":"benbeshel","email":"benbeshel@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ply-json_2.0.0-alpha.0_1621273689256_0.709931517599667"},"_hasShrinkwrap":false},"2.0.0-alpha.1":{"name":"@128technology/ply-json","version":"2.0.0-alpha.1","description":"Manage model files that describe the GUI presentation of a Yinz data model.","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"mocha --require ts-node/register 'src/**/__tests__/*.ts'","lint":"tslint --project . src/**/*.ts src/**/*-test.ts","validate":"npm run lint && npm run test","clean":"rm -rf dist","init":"mkdir dist","prebuild":"npm run clean && npm run init","build":"tsc -d","example":"npm run build && node examples/index.js","prepublishOnly":"npm run build","format":"prettier --write \"src/**/*.ts\""},"repository":{"type":"git","url":"git+ssh://git@github.com/128technology/ply.git"},"author":{"name":"128 Technology"},"license":"MIT","dependencies":{"@128technology/yinz-json":"^6.0.0-alpha.1","@types/lodash":"^4.14.121","lodash":"^4.17.15"},"devDependencies":{"@types/chai":"^4.0.1","@types/mocha":"^2.2.41","@types/node":"^12.7.8","chai":"^3.5.0","mocha":"^6.2.0","prettier":"^2.0.5","ts-node":"^8.4.1","tslint":"^5.20.0","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.3.0","typescript":"^3.8.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"gitHead":"7f91dd5ba8b717ea430c5d1b38f63d848ba047a2","bugs":{"url":"https://github.com/128technology/ply/issues"},"homepage":"https://github.com/128technology/ply#readme","_id":"@128technology/ply-json@2.0.0-alpha.1","_nodeVersion":"14.17.0","_npmVersion":"6.14.13","dist":{"integrity":"sha512-vfjsym1OVBjFrnLvdGCagLwrphfGECc+3fffjl5x167nhyEq4UPOV0oo8QFhfkaaY2AicG/om+QQhOfIXPe8Hg==","shasum":"a76eca42ca68fae77a2432f0eef9ad7443dde4b7","tarball":"https://registry.npmjs.org/@128technology/ply-json/-/ply-json-2.0.0-alpha.1.tgz","fileCount":153,"unpackedSize":173411,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgwM5aCRA9TVsSAnZWagAAxC8P/0uBMaFK8m8jFwaGLV1h\ns5pOrEQ1vlfKBYzIIkMVA1VylkslCUicuY0Fg3nkOuVQAPJqyilMAn1nCZDA\nfd8BVY2y97stQgLFkO1IO2LyEFzBB2MuT5kxRCN4w2T4+xhntb2xqhhoRsss\nBmhXRuORTLEVyghrUSWTIh9o32NACXkufZHtmvreuhxepGB/oPF6sFgwneae\nZgpBJyuPzztJHSpkW+IS8wzIXDLJtPkY1mL3lxSoZT8qTmIapjhWziSH0bsk\nr3NyhDu6gyDzxaycFE/2Fnq7KnMbQ/WWU2INR1L5iltW6Z3ZWny4XOaTxGXH\nXmMQDateIRe6XDgd9hNFbojCsuuvoi8pOcJ9R7WZ6fK7omvdCnlvSdbzlkDS\nly9cCpmjQEbSvCLAFSi11j7xS9m0qFTvFhdPM8jRZsel8hquQJJV0hlGM/iT\n+iww8RkNeSDgbD8pNyp8jCPlnwBHKDGZS4kYDzzullwcZK2IezC/FvXlukSc\npk1cddOOqKFpSiK3xj+mOSmamcyOLnvZgtEma274hhGogaD7KuUgTaBxiTv4\ntrt8xC7IkKpi4MUMr2TPmD+ywaTSzb2Q29RHXfHZ41sTptrQMZUZ3IRepYi3\nMQyruHN7DxJfRo6et2UfGWp2EoFBiZ77UHwIqG8L/vzSc7Q32EZwHZ5iLfUs\nC9j2\r\n=djvu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHhyUxWBwHtgTww67zZK/OlqmBNh1inl5Tl3R89HM8IfAiBHli28VdTJayM2/MZAYIYW4FyWIjfvbIFC+6j3NwheAg=="}]},"_npmUser":{"name":"128techadmin","email":"opensource@128technology.com"},"directories":{},"maintainers":[{"name":"thedillonb","email":"thedillonb@gmail.com"},{"name":"cmain","email":"cmain@128technology.com"},{"name":"128dbuchanan","email":"dbuchanan@128technology.com"},{"name":"128techadmin","email":"opensource@128technology.com"},{"name":"benbeshel","email":"benbeshel@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ply-json_2.0.0-alpha.1_1623248473964_0.26723561713291355"},"_hasShrinkwrap":false},"2.0.0-alpha.2":{"name":"@128technology/ply-json","version":"2.0.0-alpha.2","description":"Manage model files that describe the GUI presentation of a Yinz data model.","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"mocha --require ts-node/register 'src/**/__tests__/*.ts'","lint":"tslint --project . src/**/*.ts src/**/*-test.ts","validate":"npm run lint && npm run test","clean":"rm -rf dist","init":"mkdir dist","prebuild":"npm run clean && npm run init","build":"tsc -d","example":"npm run build && node examples/index.js","prepublishOnly":"npm run build","format":"prettier --write \"src/**/*.ts\""},"repository":{"type":"git","url":"git+ssh://git@github.com/128technology/ply.git"},"author":{"name":"128 Technology"},"license":"MIT","dependencies":{"@128technology/yinz-json":"^6.0.0-alpha.5","@types/lodash":"^4.14.121","lodash":"^4.17.15"},"devDependencies":{"@types/chai":"^4.0.1","@types/mocha":"^2.2.41","@types/node":"^12.7.8","chai":"^3.5.0","mocha":"^6.2.0","prettier":"^2.0.5","ts-node":"^8.4.1","tslint":"^5.20.0","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.3.0","typescript":"^3.8.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"gitHead":"eae9927f93997baba927c8982a7f6b39aec4087b","bugs":{"url":"https://github.com/128technology/ply/issues"},"homepage":"https://github.com/128technology/ply#readme","_id":"@128technology/ply-json@2.0.0-alpha.2","_nodeVersion":"14.17.0","_npmVersion":"6.14.13","dist":{"integrity":"sha512-2wPOu7CwfTBJt/TrihTDevZ5GT57xu8q0ObMDWsgZI1+0n+tAiBDnpG9SDbvVJOos6lizuawaVPpflIWDw2Udw==","shasum":"894b9a9796ad4b356afc3896811f56475ba58522","tarball":"https://registry.npmjs.org/@128technology/ply-json/-/ply-json-2.0.0-alpha.2.tgz","fileCount":153,"unpackedSize":173971,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgy1/lCRA9TVsSAnZWagAADw0P/0+hLEgW1PvY8+Kt/MBv\nRQsb1LGGPm8SPwEX8q4Gwx7oY22Nh18GAPODsAV/XnrTp9CXpV+qLOQfS7Th\nozmhsq0lNloHt+JV8ASW35G/+ywTBzwem5pdvdCQr7fwodYSJDFjdhQgCAnL\nzZl8eJqzPSBciirN69q+Qsfwlmepq27OkvaLbvNE6/fT6kbxMNOyaM9WxdrN\nAg9TbYJq5vZGQm/W3eICrwF2kkAWj/9pvvDWrHwRnbOB01jxYzkeqi4xNp1I\nsb+Wa+T283NGaPHnSlEnvLP3bwDX87NcjZmq7RynPVe4RSytVPKGE+wEBo9m\nEGqtgJ9i9Z6GGvvUCfBnIZ0zPKee0jqzr6Enh/XgEX0+SqQkIpvj6IAxHWj/\nrbfb0X3UFpT4j0ZIi0YQbZ+iE0vcDT9hsSoUjxnlsTXOkELldFz1rmeZKwP5\nq0XLLuNBX3VqMTJ78uvFWARKjX3ADsA4/k8NH/VBJtNkwP0v0wTtPrCbIJeH\ndAObQEBQ6BN/ywu92mCHLEe0BIsA+Fq+sqoc/bA1GNtgT02ZmBj6QfnRpTTY\nRAnitbwYPk9WcEZMQeL7ZchEiEvJFfCPJNnXeoaBiYMELQdhEDDHNG2Y8syn\n7WtLL5Mn6dDirKyHjyblhsXdLj729VlCAwejcDITsmyNeWgbAOHKX000Kxoj\ndc7I\r\n=DYGC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCJpVcRPZ5ThkKqXlUloKX1ILUk2bMqoH27Ow9nVH8AEwIhAMjWdDvC8cGvjC920vdTNMwSgW2NkeFLmoVRT2QInXwF"}]},"_npmUser":{"name":"128techadmin","email":"opensource@128technology.com"},"directories":{},"maintainers":[{"name":"thedillonb","email":"thedillonb@gmail.com"},{"name":"cmain","email":"cmain@128technology.com"},{"name":"128dbuchanan","email":"dbuchanan@128technology.com"},{"name":"128techadmin","email":"opensource@128technology.com"},{"name":"benbeshel","email":"benbeshel@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ply-json_2.0.0-alpha.2_1623941093172_0.4902574099981889"},"_hasShrinkwrap":false},"2.0.0-alpha.3":{"name":"@128technology/ply-json","version":"2.0.0-alpha.3","description":"Manage model files that describe the GUI presentation of a Yinz data model.","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"mocha --require ts-node/register 'src/**/__tests__/*.ts'","lint":"tslint --project . src/**/*.ts src/**/*-test.ts","validate":"npm run lint && npm run test","clean":"rm -rf dist","init":"mkdir dist","prebuild":"npm run clean && npm run init","build":"tsc -d","example":"npm run build && node examples/index.js","prepublishOnly":"npm run build","format":"prettier --write \"src/**/*.ts\""},"repository":{"type":"git","url":"git+ssh://git@github.com/128technology/ply.git"},"author":{"name":"128 Technology"},"license":"MIT","dependencies":{"@128technology/yinz-json":"^6.0.0-alpha.5","@types/lodash":"^4.14.121","lodash":"^4.17.15"},"devDependencies":{"@types/chai":"^4.0.1","@types/mocha":"^2.2.41","@types/node":"^12.7.8","chai":"^3.5.0","mocha":"^6.2.0","prettier":"^2.0.5","ts-node":"^8.4.1","tslint":"^5.20.0","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.3.0","typescript":"^3.8.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"gitHead":"fe1f62fd03d681fe33421b34679b09c94c6f8728","bugs":{"url":"https://github.com/128technology/ply/issues"},"homepage":"https://github.com/128technology/ply#readme","_id":"@128technology/ply-json@2.0.0-alpha.3","_nodeVersion":"14.17.1","_npmVersion":"6.14.13","dist":{"integrity":"sha512-hA0wQeDzR3ua21BN7ssdn1Q7YkCP3u3x14u80q/LzmSukG6muRkPpCPhf4AzpyMdkKKL6LD24Dk8F5YVfRDEVA==","shasum":"fdc782d41a8ededfcdc76e4eeac9ec552a2ccd20","tarball":"https://registry.npmjs.org/@128technology/ply-json/-/ply-json-2.0.0-alpha.3.tgz","fileCount":153,"unpackedSize":173956,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg3cIGCRA9TVsSAnZWagAAzm8P/2kqwXgM985jC3iLdsCK\nTWzkuWXxctZwkepDk0fFnyiXh0hoLoYCXro8b0KJLLhYGoM0Q/SQa5SxJu6V\nN5awxceikmB5k/JxrnsJkXPF7Xn++pi764kZKcDItxzj8Maoyj2AbNFBrMnE\nLQgrZ9ilUvXUaTUCr8uv8SAOKojoMuhsycPugNEezPvtEb90BGIkF3GdPxvp\nHohQ7+2jZBwQQBg1wyECxXBpjIZpcVCcLhsSQ38Ry1qs5BbuysmhycqMS0Ey\njvWlw/cVX79dnVla1IG3cGcZZqPAj2PGrpRDNoZrh2JrL7qNgDBR1VjoX6rY\nzHBB+BRsIa2IOoa58pwAuUJ5l6WJoVcHSfZ0DUp95Ig0H44ujRpzsQ7mp2ZA\nAybHYo1OM8Rzos2eCM4pylZLriCVo2s1oizwLbeoYoPn2fDphtjnRfxmGUuF\nSET4XuDxg6QNJX6RFprtn4zG/5z8D1L2iluxbZstT/O2UAoBN6km8jqxJYJR\n9Z1xyIdUDu7S+TdsvViZnP9oJgXmT/afVob4zfYbk2Y9hTnS0jdvx6m+fOgk\ntuktOO6Wb+BalYW1cH3Pq9g8XNmUivB2BbHWgK+ZSZK9n4imvAxLKX75D5o5\nzzPeaHhKlV6G5aVr5mN9vDBfMNeBQ6qM2VW1u1eqSvR0lLdqiiEKBlKkqoNo\ntLZF\r\n=r/Xh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFyABxaocXJNzhUqWKPjO+iM9M8k9HP69qw5lOSVpN7oAiEA8SXXtoaqgknwZe8f37OsM05NYNDow9i26xxfDRiVqAQ="}]},"_npmUser":{"name":"128techadmin","email":"opensource@128technology.com"},"directories":{},"maintainers":[{"name":"thedillonb","email":"thedillonb@gmail.com"},{"name":"cmain","email":"cmain@128technology.com"},{"name":"128dbuchanan","email":"dbuchanan@128technology.com"},{"name":"128techadmin","email":"opensource@128technology.com"},{"name":"benbeshel","email":"benbeshel@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ply-json_2.0.0-alpha.3_1625145861588_0.9924749665449699"},"_hasShrinkwrap":false},"2.1.0-alpha.0":{"name":"@128technology/ply-json","version":"2.1.0-alpha.0","description":"Manage model files that describe the GUI presentation of a Yinz data model.","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"mocha --require ts-node/register 'src/**/__tests__/*.ts'","lint":"tslint --project . src/**/*.ts src/**/*-test.ts","validate":"npm run lint && npm run test","clean":"rm -rf dist","init":"mkdir dist","prebuild":"npm run clean && npm run init","build":"tsc -d","example":"npm run build && node examples/index.js","prepublishOnly":"npm run build","format":"prettier --write \"src/**/*.ts\""},"repository":{"type":"git","url":"git+ssh://git@github.com/128technology/ply.git"},"author":{"name":"128 Technology"},"license":"MIT","dependencies":{"@128technology/yinz-json":"^6.0.0-alpha.5","@types/lodash":"^4.14.121","lodash":"^4.17.15"},"devDependencies":{"@types/chai":"^4.0.1","@types/mocha":"^2.2.41","@types/node":"^12.7.8","chai":"^3.5.0","mocha":"^6.2.0","prettier":"^2.0.5","ts-node":"^8.4.1","tslint":"^5.20.0","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.3.0","typescript":"^3.8.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"gitHead":"8569569306e892aa11ea06bb6e0b162f603cd289","bugs":{"url":"https://github.com/128technology/ply/issues"},"homepage":"https://github.com/128technology/ply#readme","_id":"@128technology/ply-json@2.1.0-alpha.0","_nodeVersion":"14.17.1","_npmVersion":"6.14.13","dist":{"integrity":"sha512-JFdy9qki7INpgXjYI5Buskk4DX5DA+In5VBwqhJ1wQqtfQ15M65wQE8LudZBJjqX54JVkftntn1RfSrfp4TApg==","shasum":"cd5631a39747fbc15ff9aa04d1c6c78a4f470135","tarball":"https://registry.npmjs.org/@128technology/ply-json/-/ply-json-2.1.0-alpha.0.tgz","fileCount":162,"unpackedSize":184334,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg7f0SCRA9TVsSAnZWagAAFTsP/RUv0CXHzEi6Y2HKe+Pl\n6Q2M+m4iWE6S5X4Dag0sPvPGqmOnTiD4a36xHss5Z4GU/tRt+NYmkHR7XJJR\nt62JuOBDak4yedeDEEhf/ldrjk6h9bTBick6bUk7bTs06mzQba5kCvz/eEg3\nFZ5PtudKRviqU+zBBV+drIWtl18bVQANX61jE2gN+YKBXGis5SgaSSueB4ZN\nFtk2xmTYHdfBoA4Opp2+HX9pP0B2byRtn1t93ltNLeNvh7qc7IGuokQywquc\nZ+xwJtKPJlJdJemFc3IotVud552l/BsMxcxuiduAV3vPx7SL/0iw6AbOFNWA\nfNHcsKMUo0A7xx9XjSN9I7KapEZfC5eStypGlAG5OF9iVG2PmmS9bTbzgS9x\nh7VDTGg4l9iNdoQd/lbGAWgPpkIiepBNcv+cmnYoEdHtawU3XJIKcW/lFWMq\n3Wzml1wXN+3zSolOYb+NyyQOz/xGT/I0MRuNxarGFEwSRnCp8zOQJpmZNFW/\nO8qCiWCqjWqZpXs3ffQt8ngDE3YXw3UNRvIhigWC9Y1RSD6vru3gkFtZ8J7c\nvCfhUVQe0SEhk12tWxzqtI345E0QchNfLqi+pO2mVH0rABtWIxUPADSmWRTa\nwdPaQlf7Doe225fTZ5Ka9ucCHySvgliOIT0vw33xdKRfqs8C3rjEsS/ebIrN\nFJ9p\r\n=Ce9+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHS3qZFoaGiU0JmrBhggCO0oFB9aU5mIpeWVrIeuKFjQAiEA1FQ+Sk3pMOz5eiHJS6J6qSrE7E1nBEHKEuYBU1XPQiA="}]},"_npmUser":{"name":"128techadmin","email":"opensource@128technology.com"},"directories":{},"maintainers":[{"name":"thedillonb","email":"thedillonb@gmail.com"},{"name":"cmain","email":"cmain@128technology.com"},{"name":"128dbuchanan","email":"dbuchanan@128technology.com"},{"name":"128techadmin","email":"opensource@128technology.com"},{"name":"benbeshel","email":"benbeshel@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ply-json_2.1.0-alpha.0_1626209554345_0.555531531562468"},"_hasShrinkwrap":false}},"time":{"created":"2021-05-17T17:48:09.075Z","2.0.0-alpha.0":"2021-05-17T17:48:09.394Z","modified":"2022-04-04T10:31:12.618Z","2.0.0-alpha.1":"2021-06-09T14:21:14.077Z","2.0.0-alpha.2":"2021-06-17T14:44:53.336Z","2.0.0-alpha.3":"2021-07-01T13:24:21.704Z","2.1.0-alpha.0":"2021-07-13T20:52:34.558Z"},"maintainers":[{"name":"thedillonb","email":"thedillonb@gmail.com"},{"name":"cmain","email":"cmain@128technology.com"},{"name":"128dbuchanan","email":"dbuchanan@128technology.com"},{"name":"128techadmin","email":"opensource@128technology.com"},{"name":"benbeshel","email":"benbeshel@gmail.com"}],"description":"Manage model files that describe the GUI presentation of a Yinz data model.","homepage":"https://github.com/128technology/ply#readme","repository":{"type":"git","url":"git+ssh://git@github.com/128technology/ply.git"},"author":{"name":"128 Technology"},"bugs":{"url":"https://github.com/128technology/ply/issues"},"license":"MIT","readme":"# PLY JSON ![Node.js CI](https://github.com/128technology/ply-json/workflows/Node.js%20CI/badge.svg)\n\nPLY (**P**resentation **L**anguage for **Y**inz) is a library to manage JSON files that model a GUI for configuring a YANG (RFC 6020) datastore. It directly integrates with the [Yinz](https://github.com/128technology/yinz-json) library which manages both the datamodel and instance data associated with that datamodel.\n\nPLY intends to provide the following functionality:\n* Ingest a presentation model described by one or more JSON files.\n* Ingest a datamodel and associate it with the presentation model. The datamodel will be used to look up information from fields.\n* Injest an instance of the model and associate the values from the instance with presentation fields.\n* Serialize this *presentation instance* to JSON that can be sent to a client to draw a GUI.\n* Validate that a presentation model is both syntactically and semantically valid.\n* Given a datamodel, ensure that all aspects of the datamodel have a corresponding entry in the presentation model.\n\n# Model Format\n\n## Pages\nA page is typically broken out into it's own JSON file. Pages generally represent containers and instances of list items.  For example, if the model has a list of routers, there would probably be a page named `router.json` which describes what an instance of a router would look like.  The schema of a page is pretty simple, it contains a `title`, an `id`, and an array of `sections`.  The most basic page would like like the following:\n```json\n{\n  \"id\": \"my-new-page\",\n  \"title\": \"My New Page\",\n  \"sections\": []\n}\n```\n\nGenerally it is a good idea for the page `id` to match the name of the file.  For example, `router.json` would have an `id` of `router`.\n\n## Sections\n\n### `leaf-section`\nIf you have a section of basic fields (e.g. no containers, lists, or leaf-lists), then this is the section type you would want to use. This section type has an `id`, a `title`, and an array of `fields`. Generally the `id` for the section has the format `page-id.section-id`, so if it was on the `router` page it might look something like `router.settings`. **If you do not specify a type for a section it will default to this type.**  A basic `leaf-section` looks like the following:\n```json\n{\n  \"id\": \"my-new-page.my-new-section\",\n  \"title\": \"My New Section\",\n  \"fields\": []\n}\n```\n\nIf you chose to specify the type explicitly it would look like:\n```json\n{\n  \"id\": \"my-new-page.my-leaf-section\",\n  \"title\": \"My Leaf Section\",\n  \"type\": \"leaf-section\",\n  \"fields\": []\n}\n```\n\n### `list-section`\nAll lists need to be contained in their own `list-section`. A `list-section` will have exactly one field which references the list itself.  A `list-section`'s `title` field is explicitly set to `null` and the `label` of the list field inside the section is used instead. The specifics of the single list field are outlined in the Fields section, including descriptions of the `link` and `columns` properties.  A basic `list-section` looks like the following:\n```json\n{\n  \"id\": \"my-new-page.my-list-section\",\n  \"title\": null,\n  \"type\": \"list-section\",\n  \"fields\": [{\n    \"link\": \"dog\",\n    \"id\": \"id.to.a.list\",\n    \"label\": \"Dogs\"\n  }]\n}\n```\n\n### `list-table`\nAll leaf-lists need to be contained in their own `list-table` section.  Similarly to the `list-section` a `list-table` section has exactly one field describing the leaf-list.  It also has a `title` explicitly set to `null`.  An example `list-table` section looks like the following:\n```json\n{\n  \"id\": \"my-new-page.my-list-table-section\",\n  \"title\": null,\n  \"type\": \"list-table\",\n  \"fields\": [{\n    \"id\": \"id.to.a.leaf-list\",\n    \"label\": \"Cats\",\n    \"columnLabels\": [{\n      \"id\": \"name\",\n      \"label\": \"Cat\"\n    }]\n  }]\n}\n```\n\n### `container-list-section`\nIf you want links that dive into one or more containers/pages in a section, you will want to use the `container-list-section`.  An example looks like the following:\n```json\n{\n  \"id\": \"my-new-page.my-link-section\",\n  \"title\": \"Example Container Links\",\n  \"type\": \"container-list-section\",\n  \"fields\": [{\n    \"id\": \"id.to.a.container\",\n    \"link\": \"container-1\",\n    \"label\": \"Container 1\"\n  }]\n}\n```\n\n## Fields\n\n### `leaf`\n```json\n{\n  \"id\": \"id.to.a.leaf\",\n  \"label\": \"My Leaf Field\"\n}\n```\n\n### `choice`\nWhile a choice field technically has no value in the `running` config, it will be populated with the cases in the model and the selected case is inferred at runtime.\n```json\n{\n  \"id\": \"id.to.a.choice\",\n  \"label\": \"My Choice Field\"\n}\n```\n\n### `container`\nContainers do not have to be represented in the presentation model.  They should be used in cases where a link to a page representing the container is desired. The `link` **MUST** correspond to an `id` of another page.\n```json\n{\n  \"id\": \"id.to.a.container\",\n  \"label\": \"My Container Field\",\n  \"link\": \"page-for-container\"\n}\n```\n\n### `leaf-list`\nThe `columnLabels` property is used to describe a label for the columns of a table displaying the `leaf-list`.  In this case since a `leaf-list` only has one column, this array should only contain one item. **A `leaf-list` field can only by contained in a `list-table` section.** \n```json\n{\n  \"id\": \"id.to.a.leaf-list\",\n  \"label\": \"My Leaf List Field\",\n  \"columnLabels\": [{\n    \"id\": \"thing\",\n    \"label\": \"thing\"\n  }]\n}\n```\n\n### `list`\nThe `columns` property of a list field is optional.  It is intended to denote which columns (leafs) should be displayed if the list if presented in a table.  Otherwise typically only the key fields would be presented in a table.  The `link` **MUST** correspond to an `id` of the page for the list instance.  For example if the list field describes the list of all routers, then the link must correspond to the `router` page describing an individual router.  **A `list` field can only by contained in a `list-section`.** \n ```json\n{\n  \"id\": \"id.to.a.leaf-list\",\n  \"label\": \"My List Field\",\n  \"link\": \"my-list-instance\",\n  \"columns\": [\"name\", \"description\"]\n}\n```\n","readmeFilename":"README.md"}